From 4d91c3aaa91ae3572cd4ce6012893c6bdf4ab144 Mon Sep 17 00:00:00 2001 From: zzzxl1993 Date: Thu, 17 Apr 2025 19:50:06 +0800 Subject: [PATCH 1/8] [feture](inverted index) Add multi inverted index support for single column --- be/src/olap/compaction.cpp | 302 +-- be/src/olap/comparison_predicate.h | 3 +- be/src/olap/delta_writer.cpp | 6 +- be/src/olap/in_list_predicate.h | 3 +- be/src/olap/match_predicate.cpp | 10 +- be/src/olap/rowset/beta_rowset.cpp | 67 +- be/src/olap/rowset/beta_rowset_writer.cpp | 4 +- be/src/olap/rowset/segcompaction.cpp | 3 +- .../olap/rowset/segment_v2/column_reader.cpp | 31 +- be/src/olap/rowset/segment_v2/column_reader.h | 2 +- .../olap/rowset/segment_v2/column_writer.cpp | 115 +- be/src/olap/rowset/segment_v2/column_writer.h | 9 +- .../segment_v2/inverted_index_query_type.h | 4 + .../segment_v2/inverted_index_reader.cpp | 130 +- .../rowset/segment_v2/inverted_index_reader.h | 36 +- .../rowset/segment_v2/segment_iterator.cpp | 47 +- .../olap/rowset/segment_v2/segment_writer.cpp | 17 +- .../segment_v2/vertical_segment_writer.cpp | 13 + be/src/olap/tablet_schema.cpp | 113 +- be/src/olap/tablet_schema.h | 28 +- be/src/olap/task/index_builder.cpp | 113 +- be/src/vec/common/schema_util.cpp | 40 +- .../functions/array/function_array_index.h | 5 +- .../functions/array/function_arrays_overlap.h | 5 +- be/src/vec/functions/function_ip.h | 6 +- be/src/vec/functions/function_multi_match.cpp | 17 +- be/src/vec/functions/functions_comparison.h | 11 +- be/src/vec/functions/in.h | 8 +- be/src/vec/functions/match.cpp | 7 +- be/test/common/schema_util_test.cpp | 121 + .../compaction/index_compaction_test.cpp | 82 +- .../util/index_compaction_utils.cpp | 4 +- .../segment_v2/inverted_index_reader_test.cpp | 1990 +++++++++++++++++ be/test/olap/tablet_index_test.cpp | 10 +- be/test/olap/tablet_schema_index_test.cpp | 177 ++ .../olap/tablet_schema_multi_index_test.cpp | 373 +++ .../plans/commands/info/CreateTableInfo.java | 21 +- .../plans/commands/info/IndexDefinition.java | 45 + .../test_single_column_multi_index.out | 7 + .../test_single_column_multi_index.groovy | 111 + 40 files changed, 3611 insertions(+), 485 deletions(-) create mode 100644 be/test/common/schema_util_test.cpp create mode 100644 be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp create mode 100644 be/test/olap/tablet_schema_index_test.cpp create mode 100644 be/test/olap/tablet_schema_multi_index_test.cpp create mode 100644 regression-test/data/inverted_index_p0/test_single_column_multi_index.out create mode 100644 regression-test/suites/inverted_index_p0/test_single_column_multi_index.groovy diff --git a/be/src/olap/compaction.cpp b/be/src/olap/compaction.cpp index 0088228be4c2c9..15a05a62689bc0 100644 --- a/be/src/olap/compaction.cpp +++ b/be/src/olap/compaction.cpp @@ -737,10 +737,10 @@ Status Compaction::do_inverted_index_compaction() { Status status = Status::OK(); for (auto&& column_uniq_id : ctx.columns_to_do_index_compaction) { auto col = _cur_tablet_schema->column_by_uid(column_uniq_id); - const auto* index_meta = _cur_tablet_schema->inverted_index(col); + auto index_metas = _cur_tablet_schema->inverted_indexs(col); DBUG_EXECUTE_IF("Compaction::do_inverted_index_compaction_can_not_find_index_meta", - { index_meta = nullptr; }) - if (index_meta == nullptr) { + { index_metas.clear(); }) + if (index_metas.empty()) { status = Status::Error( fmt::format("Can not find index_meta for col {}", col.name())); LOG(WARNING) << "failed to do index compaction, can not find index_meta for column" @@ -749,56 +749,60 @@ Status Compaction::do_inverted_index_compaction() { error_handler(-1, column_uniq_id); break; } - - std::vector dest_index_dirs(dest_segment_num); - try { - std::vector> src_idx_dirs(src_segment_num); - for (int src_segment_id = 0; src_segment_id < src_segment_num; src_segment_id++) { - auto res = inverted_index_file_readers[src_segment_id]->open(index_meta); - DBUG_EXECUTE_IF("Compaction::open_inverted_index_file_reader", { - res = ResultError(Status::Error( - "debug point: Compaction::open_index_file_reader error")); - }) - if (!res.has_value()) { - LOG(WARNING) << "failed to do index compaction, open inverted index file " - "reader failed" - << ". tablet=" << _tablet->tablet_id() - << ", column uniq id=" << column_uniq_id - << ", src_segment_id=" << src_segment_id; - throw Exception(ErrorCode::INVERTED_INDEX_COMPACTION_ERROR, res.error().msg()); + for (const auto& index_meta : index_metas) { + std::vector dest_index_dirs(dest_segment_num); + try { + std::vector> src_idx_dirs(src_segment_num); + for (int src_segment_id = 0; src_segment_id < src_segment_num; src_segment_id++) { + auto res = inverted_index_file_readers[src_segment_id]->open(index_meta); + DBUG_EXECUTE_IF("Compaction::open_inverted_index_file_reader", { + res = ResultError(Status::Error( + "debug point: Compaction::open_index_file_reader error")); + }) + if (!res.has_value()) { + LOG(WARNING) << "failed to do index compaction, open inverted index file " + "reader failed" + << ". tablet=" << _tablet->tablet_id() + << ", column uniq id=" << column_uniq_id + << ", src_segment_id=" << src_segment_id; + throw Exception(ErrorCode::INVERTED_INDEX_COMPACTION_ERROR, + res.error().msg()); + } + src_idx_dirs[src_segment_id] = std::move(res.value()); } - src_idx_dirs[src_segment_id] = std::move(res.value()); - } - for (int dest_segment_id = 0; dest_segment_id < dest_segment_num; dest_segment_id++) { - auto res = inverted_index_file_writers[dest_segment_id]->open(index_meta); - DBUG_EXECUTE_IF("Compaction::open_inverted_index_file_writer", { - res = ResultError(Status::Error( - "debug point: Compaction::open_inverted_index_file_writer error")); - }) - if (!res.has_value()) { - LOG(WARNING) << "failed to do index compaction, open inverted index file " - "writer failed" - << ". tablet=" << _tablet->tablet_id() - << ", column uniq id=" << column_uniq_id - << ", dest_segment_id=" << dest_segment_id; - throw Exception(ErrorCode::INVERTED_INDEX_COMPACTION_ERROR, res.error().msg()); + for (int dest_segment_id = 0; dest_segment_id < dest_segment_num; + dest_segment_id++) { + auto res = inverted_index_file_writers[dest_segment_id]->open(index_meta); + DBUG_EXECUTE_IF("Compaction::open_inverted_index_file_writer", { + res = ResultError(Status::Error( + "debug point: Compaction::open_inverted_index_file_writer error")); + }) + if (!res.has_value()) { + LOG(WARNING) << "failed to do index compaction, open inverted index file " + "writer failed" + << ". tablet=" << _tablet->tablet_id() + << ", column uniq id=" << column_uniq_id + << ", dest_segment_id=" << dest_segment_id; + throw Exception(ErrorCode::INVERTED_INDEX_COMPACTION_ERROR, + res.error().msg()); + } + // Destination directories in dest_index_dirs do not need to be deconstructed, + // but their lifecycle must be managed by inverted_index_file_writers. + dest_index_dirs[dest_segment_id] = res.value().get(); } - // Destination directories in dest_index_dirs do not need to be deconstructed, - // but their lifecycle must be managed by inverted_index_file_writers. - dest_index_dirs[dest_segment_id] = res.value().get(); - } - auto st = compact_column(index_meta->index_id(), src_idx_dirs, dest_index_dirs, - index_tmp_path.native(), trans_vec, dest_segment_num_rows); - if (!st.ok()) { + auto st = compact_column(index_meta->index_id(), src_idx_dirs, dest_index_dirs, + index_tmp_path.native(), trans_vec, dest_segment_num_rows); + if (!st.ok()) { + error_handler(index_meta->index_id(), column_uniq_id); + status = Status::Error(st.msg()); + } + } catch (CLuceneError& e) { + error_handler(index_meta->index_id(), column_uniq_id); + status = Status::Error(e.what()); + } catch (const Exception& e) { error_handler(index_meta->index_id(), column_uniq_id); - status = Status::Error(st.msg()); + status = Status::Error(e.what()); } - } catch (CLuceneError& e) { - error_handler(index_meta->index_id(), column_uniq_id); - status = Status::Error(e.what()); - } catch (const Exception& e) { - error_handler(index_meta->index_id(), column_uniq_id); - status = Status::Error(e.what()); } } @@ -818,17 +822,19 @@ void Compaction::mark_skip_index_compaction( const std::function& error_handler) { for (auto&& column_uniq_id : context.columns_to_do_index_compaction) { auto col = _cur_tablet_schema->column_by_uid(column_uniq_id); - const auto* index_meta = _cur_tablet_schema->inverted_index(col); + auto index_metas = _cur_tablet_schema->inverted_indexs(col); DBUG_EXECUTE_IF("Compaction::mark_skip_index_compaction_can_not_find_index_meta", - { index_meta = nullptr; }) - if (index_meta == nullptr) { + { index_metas.clear(); }) + if (index_metas.empty()) { LOG(WARNING) << "mark skip index compaction, can not find index_meta for column" << ". tablet=" << _tablet->tablet_id() << ", column uniq id=" << column_uniq_id; error_handler(-1, column_uniq_id); continue; } - error_handler(index_meta->index_id(), column_uniq_id); + for (const auto& index_meta : index_metas) { + error_handler(index_meta->index_id(), column_uniq_id); + } } } @@ -857,24 +863,30 @@ void Compaction::construct_index_compaction_columns(RowsetWriterContext& ctx) { bool is_continue = false; std::optional> first_properties; for (const auto& rowset : _input_rowsets) { - const auto* tablet_index = rowset->tablet_schema()->inverted_index(col_unique_id); + auto tablet_indexs = rowset->tablet_schema()->inverted_indexs(col_unique_id); // no inverted index or index id is different from current index id - if (tablet_index == nullptr || tablet_index->index_id() != index->index_id()) { + auto it = std::find_if(tablet_indexs.begin(), tablet_indexs.end(), + [&index](const auto& tablet_index) { + return tablet_index->index_id() == index->index_id(); + }); + if (it != tablet_indexs.end()) { + const auto* tablet_index = *it; + auto properties = tablet_index->properties(); + if (!first_properties.has_value()) { + first_properties = properties; + } else { + DBUG_EXECUTE_IF( + "Compaction::do_inverted_index_compaction_index_properties_different", + { properties.emplace("dummy_key", "dummy_value"); }) + if (properties != first_properties.value()) { + is_continue = true; + break; + } + } + } else { is_continue = true; break; } - auto properties = tablet_index->properties(); - if (!first_properties.has_value()) { - first_properties = properties; - } else { - DBUG_EXECUTE_IF( - "Compaction::do_inverted_index_compaction_index_properties_different", - { properties.emplace("dummy_key", "dummy_value"); }) - if (properties != first_properties.value()) { - is_continue = true; - break; - } - } } if (is_continue) { continue; @@ -899,94 +911,100 @@ void Compaction::construct_index_compaction_columns(RowsetWriterContext& ctx) { return false; } - const auto* index_meta = rowset->tablet_schema()->inverted_index(col_unique_id); + auto index_metas = rowset->tablet_schema()->inverted_indexs(col_unique_id); DBUG_EXECUTE_IF("Compaction::construct_skip_inverted_index_index_meta_nullptr", - { index_meta = nullptr; }) - if (index_meta == nullptr) { + { index_metas.clear(); }) + if (index_metas.empty()) { LOG(WARNING) << "tablet[" << _tablet->tablet_id() << "] column_unique_id[" << col_unique_id << "] index meta is null, will skip index compaction"; return false; } - - for (auto i = 0; i < rowset->num_segments(); i++) { - // TODO: inverted_index_path - auto seg_path = rowset->segment_path(i); - DBUG_EXECUTE_IF("Compaction::construct_skip_inverted_index_seg_path_nullptr", { - seg_path = ResultError(Status::Error( - "construct_skip_inverted_index_seg_path_nullptr")); - }) - if (!seg_path) { - LOG(WARNING) << seg_path.error(); - return false; - } - - std::string index_file_path; - try { - auto inverted_index_file_reader = std::make_unique( - fs, - std::string {InvertedIndexDescriptor::get_index_file_path_prefix( - seg_path.value())}, - _cur_tablet_schema->get_inverted_index_storage_format(), - rowset->rowset_meta()->inverted_index_file_info(i)); - auto st = inverted_index_file_reader->init( - config::inverted_index_read_buffer_size); - index_file_path = inverted_index_file_reader->get_index_file_path(index_meta); - DBUG_EXECUTE_IF( - "Compaction::construct_skip_inverted_index_index_file_reader_init_" - "status_not_ok", - { - st = Status::Error( - "debug point: " - "construct_skip_inverted_index_index_file_reader_init_" - "status_" - "not_ok"); - }) - if (!st.ok()) { - LOG(WARNING) << "init index " << index_file_path << " error:" << st; + for (const auto& index_meta : index_metas) { + for (auto i = 0; i < rowset->num_segments(); i++) { + // TODO: inverted_index_path + auto seg_path = rowset->segment_path(i); + DBUG_EXECUTE_IF("Compaction::construct_skip_inverted_index_seg_path_nullptr", { + seg_path = ResultError(Status::Error( + "construct_skip_inverted_index_seg_path_nullptr")); + }) + if (!seg_path) { + LOG(WARNING) << seg_path.error(); return false; } - // check index meta - auto result = inverted_index_file_reader->open(index_meta); - DBUG_EXECUTE_IF( - "Compaction::construct_skip_inverted_index_index_file_reader_open_" - "error", - { - result = ResultError( - Status::Error( - "CLuceneError occur when open idx file")); - }) - if (!result.has_value()) { - LOG(WARNING) - << "open index " << index_file_path << " error:" << result.error(); - return false; - } - auto reader = std::move(result.value()); - std::vector files; - reader->list(&files); - reader->close(); - DBUG_EXECUTE_IF( - "Compaction::construct_skip_inverted_index_index_reader_close_error", - { _CLTHROWA(CL_ERR_IO, "debug point: reader close error"); }) - - DBUG_EXECUTE_IF("Compaction::construct_skip_inverted_index_index_files_count", - { files.clear(); }) - - // why is 3? - // slice type index file at least has 3 files: null_bitmap, segments_N, segments.gen - if (files.size() < 3) { + std::string index_file_path; + try { + auto inverted_index_file_reader = std::make_unique( + fs, + std::string {InvertedIndexDescriptor::get_index_file_path_prefix( + seg_path.value())}, + _cur_tablet_schema->get_inverted_index_storage_format(), + rowset->rowset_meta()->inverted_index_file_info(i)); + auto st = inverted_index_file_reader->init( + config::inverted_index_read_buffer_size); + index_file_path = + inverted_index_file_reader->get_index_file_path(index_meta); + DBUG_EXECUTE_IF( + "Compaction::construct_skip_inverted_index_index_file_reader_init_" + "status_not_ok", + { + st = Status::Error( + "debug point: " + "construct_skip_inverted_index_index_file_reader_init_" + "status_" + "not_ok"); + }) + if (!st.ok()) { + LOG(WARNING) << "init index " << index_file_path << " error:" << st; + return false; + } + + // check index meta + auto result = inverted_index_file_reader->open(index_meta); + DBUG_EXECUTE_IF( + "Compaction::construct_skip_inverted_index_index_file_reader_open_" + "error", + { + result = ResultError( + Status::Error( + "CLuceneError occur when open idx file")); + }) + if (!result.has_value()) { + LOG(WARNING) << "open index " << index_file_path + << " error:" << result.error(); + return false; + } + auto reader = std::move(result.value()); + std::vector files; + reader->list(&files); + reader->close(); + DBUG_EXECUTE_IF( + "Compaction::construct_skip_inverted_index_index_reader_close_" + "error", + { _CLTHROWA(CL_ERR_IO, "debug point: reader close error"); }) + + DBUG_EXECUTE_IF( + "Compaction::construct_skip_inverted_index_index_files_count", + { files.clear(); }) + + // why is 3? + // slice type index file at least has 3 files: null_bitmap, segments_N, segments.gen + if (files.size() < 3) { + LOG(WARNING) + << "tablet[" << _tablet->tablet_id() << "] column_unique_id[" + << col_unique_id << "]," << index_file_path + << " is corrupted, will skip index compaction"; + return false; + } + } catch (CLuceneError& err) { LOG(WARNING) << "tablet[" << _tablet->tablet_id() << "] column_unique_id[" - << col_unique_id << "]," << index_file_path - << " is corrupted, will skip index compaction"; + << col_unique_id << "] open index[" << index_file_path + << "], will skip index compaction, error:" << err.what(); return false; } - } catch (CLuceneError& err) { - LOG(WARNING) << "tablet[" << _tablet->tablet_id() << "] column_unique_id[" - << col_unique_id << "] open index[" << index_file_path - << "], will skip index compaction, error:" << err.what(); - return false; } } + return true; }; diff --git a/be/src/olap/comparison_predicate.h b/be/src/olap/comparison_predicate.h index 2ce2ca57f3db7e..7d9d233b637730 100644 --- a/be/src/olap/comparison_predicate.h +++ b/be/src/olap/comparison_predicate.h @@ -73,7 +73,6 @@ class ComparisonPredicateBase : public ColumnPredicate { if (iterator == nullptr) { return Status::OK(); } - std::string column_name = name_with_type.first; InvertedIndexQueryType query_type = InvertedIndexQueryType::UNKNOWN_QUERY; switch (PT) { @@ -104,7 +103,7 @@ class ComparisonPredicateBase : public ColumnPredicate { std::unique_ptr query_param = nullptr; RETURN_IF_ERROR( InvertedIndexQueryParamFactory::create_query_value(&_value, query_param)); - RETURN_IF_ERROR(iterator->read_from_inverted_index(column_name, query_param->get_value(), + RETURN_IF_ERROR(iterator->read_from_inverted_index(name_with_type, query_param->get_value(), query_type, num_rows, roaring)); // mask out null_bitmap, since NULL cmp VALUE will produce NULL diff --git a/be/src/olap/delta_writer.cpp b/be/src/olap/delta_writer.cpp index 096ee2df2965d1..a34bb493d5bfeb 100644 --- a/be/src/olap/delta_writer.cpp +++ b/be/src/olap/delta_writer.cpp @@ -253,9 +253,9 @@ void DeltaWriter::_request_slave_tablet_pull_rowset(const PNodeInfo& node_info) auto cur_rowset = _rowset_builder->rowset(); auto tablet_schema = cur_rowset->rowset_meta()->tablet_schema(); if (!tablet_schema->skip_write_index_on_load()) { - for (auto& column : tablet_schema->columns()) { - const TabletIndex* index_meta = tablet_schema->inverted_index(*column); - if (index_meta) { + for (const auto& column : tablet_schema->columns()) { + auto index_metas = tablet_schema->inverted_indexs(*column); + for (const auto* index_meta : index_metas) { indices_ids.emplace_back(index_meta->index_id(), index_meta->get_index_suffix()); } } diff --git a/be/src/olap/in_list_predicate.h b/be/src/olap/in_list_predicate.h index 2dcdb24b636cec..7c3d799136a194 100644 --- a/be/src/olap/in_list_predicate.h +++ b/be/src/olap/in_list_predicate.h @@ -186,7 +186,6 @@ class InListPredicateBase : public ColumnPredicate { if (iterator == nullptr) { return Status::OK(); } - std::string column_name = name_with_type.first; roaring::Roaring indices; HybridSetBase::IteratorBase* iter = _values->begin(); while (iter->has_next()) { @@ -199,7 +198,7 @@ class InListPredicateBase : public ColumnPredicate { InvertedIndexQueryType query_type = InvertedIndexQueryType::EQUAL_QUERY; std::shared_ptr index = std::make_shared(); RETURN_IF_ERROR(iterator->read_from_inverted_index( - column_name, query_param->get_value(), query_type, num_rows, index)); + name_with_type, query_param->get_value(), query_type, num_rows, index)); indices |= *index; iter->next(); } diff --git a/be/src/olap/match_predicate.cpp b/be/src/olap/match_predicate.cpp index 683e38775f34c2..07858d2eb5ecfc 100644 --- a/be/src/olap/match_predicate.cpp +++ b/be/src/olap/match_predicate.cpp @@ -56,7 +56,6 @@ Status MatchPredicate::evaluate(const vectorized::IndexFieldNameAndTypePair& nam "phrase queries require setting support_phrase = true"); } auto type = name_with_type.second; - const std::string& name = name_with_type.first; std::shared_ptr roaring = std::make_shared(); auto inverted_index_query_type = _to_inverted_index_query_type(_match_type); TypeDescriptor column_desc = type->get_type_as_type_descriptor(); @@ -67,7 +66,7 @@ Status MatchPredicate::evaluate(const vectorized::IndexFieldNameAndTypePair& nam char* buffer = const_cast(_value.c_str()); match_value.replace(buffer, length); //is it safe? RETURN_IF_ERROR(iterator->read_from_inverted_index( - name, &match_value, inverted_index_query_type, num_rows, roaring)); + name_with_type, &match_value, inverted_index_query_type, num_rows, roaring)); } else if (column_desc.type == TYPE_ARRAY && is_numeric_type( TabletColumn::get_field_type_by_type(column_desc.children[0].type))) { @@ -76,7 +75,7 @@ Status MatchPredicate::evaluate(const vectorized::IndexFieldNameAndTypePair& nam TabletColumn::get_field_type_by_type(column_desc.children[0].type)); RETURN_IF_ERROR(type_info->from_string(buf.data(), _value)); RETURN_IF_ERROR(iterator->read_from_inverted_index( - name, buf.data(), inverted_index_query_type, num_rows, roaring, true)); + name_with_type, buf.data(), inverted_index_query_type, num_rows, roaring, true)); } // mask out null_bitmap, since NULL cmp VALUE will produce NULL @@ -125,8 +124,9 @@ InvertedIndexQueryType MatchPredicate::_to_inverted_index_query_type(MatchType m bool MatchPredicate::_check_evaluate(InvertedIndexIterator* iterator) const { if (_match_type == MatchType::MATCH_PHRASE || _match_type == MatchType::MATCH_PHRASE_PREFIX || _match_type == MatchType::MATCH_PHRASE_EDGE) { - if (iterator->get_inverted_index_reader_type() == InvertedIndexReaderType::FULLTEXT && - get_parser_phrase_support_string_from_properties(iterator->get_index_properties()) == + auto reader = iterator->get_reader(InvertedIndexReaderType::FULLTEXT); + if (reader && + get_parser_phrase_support_string_from_properties(reader->get_index_properties()) == INVERTED_INDEX_PARSER_PHRASE_SUPPORT_NO) { return true; } diff --git a/be/src/olap/rowset/beta_rowset.cpp b/be/src/olap/rowset/beta_rowset.cpp index b25b261c2bbafb..d4709be0321b17 100644 --- a/be/src/olap/rowset/beta_rowset.cpp +++ b/be/src/olap/rowset/beta_rowset.cpp @@ -133,8 +133,8 @@ void BetaRowset::clear_inverted_index_cache() { auto index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix(*seg_path); for (const auto& column : tablet_schema()->columns()) { - const TabletIndex* index_meta = tablet_schema()->inverted_index(*column); - if (index_meta) { + auto index_metas = tablet_schema()->inverted_indexs(*column); + for (const auto& index_meta : index_metas) { auto inverted_index_file_cache_key = InvertedIndexDescriptor::get_index_file_cache_key( index_path_prefix, index_meta->index_id(), @@ -237,9 +237,9 @@ Status BetaRowset::remove() { } if (_schema->get_inverted_index_storage_format() == InvertedIndexStorageFormatPB::V1) { - for (auto& column : _schema->columns()) { - const TabletIndex* index_meta = _schema->inverted_index(*column); - if (index_meta) { + for (const auto& column : _schema->columns()) { + auto index_metas = _schema->inverted_indexs(*column); + for (const auto& index_meta : index_metas) { std::string inverted_index_file = InvertedIndexDescriptor::get_index_file_path_v1( InvertedIndexDescriptor::get_index_file_path_prefix(seg_path), @@ -411,10 +411,9 @@ Status BetaRowset::copy_files_to(const std::string& dir, const RowsetId& new_row auto src_path = local_segment_path(_tablet_path, rowset_id().to_string(), i); RETURN_IF_ERROR(io::global_local_filesystem()->copy_path(src_path, dst_path)); if (_schema->get_inverted_index_storage_format() == InvertedIndexStorageFormatPB::V1) { - for (auto& column : _schema->columns()) { - // if (column.has_inverted_index()) { - const TabletIndex* index_meta = _schema->inverted_index(*column); - if (index_meta) { + for (const auto& column : _schema->columns()) { + auto index_metas = _schema->inverted_indexs(*column); + for (const auto& index_meta : index_metas) { std::string inverted_index_src_file_path = InvertedIndexDescriptor::get_index_file_path_v1( InvertedIndexDescriptor::get_index_file_path_prefix(src_path), @@ -470,10 +469,9 @@ Status BetaRowset::upload_to(const StorageResource& dest_fs, const RowsetId& new dest_paths.emplace_back(remote_seg_path); local_paths.emplace_back(local_seg_path); if (_schema->get_inverted_index_storage_format() == InvertedIndexStorageFormatPB::V1) { - for (auto& column : _schema->columns()) { - // if (column.has_inverted_index()) { - const TabletIndex* index_meta = _schema->inverted_index(*column); - if (index_meta) { + for (const auto& column : _schema->columns()) { + auto index_metas = _schema->inverted_indexs(*column); + for (const auto& index_meta : index_metas) { std::string remote_inverted_index_file = InvertedIndexDescriptor::get_index_file_path_v1( InvertedIndexDescriptor::get_index_file_path_prefix( @@ -679,9 +677,9 @@ Status BetaRowset::calc_file_crc(uint32_t* crc_value, int64_t* file_count) { auto seg_path = DORIS_TRY(segment_path(seg_id)); file_paths.emplace_back(seg_path); if (_schema->get_inverted_index_storage_format() == InvertedIndexStorageFormatPB::V1) { - for (auto& column : _schema->columns()) { - const TabletIndex* index_meta = _schema->inverted_index(*column); - if (index_meta) { + for (const auto& column : _schema->columns()) { + auto index_metas = _schema->inverted_indexs(*column); + for (const auto& index_meta : index_metas) { std::string inverted_index_file = InvertedIndexDescriptor::get_index_file_path_v1( InvertedIndexDescriptor::get_index_file_path_prefix(seg_path), @@ -838,26 +836,25 @@ Status BetaRowset::show_nested_index_file(rapidjson::Value* rowset_value, } else { rapidjson::Value indices(rapidjson::kArrayType); for (auto column : _rowset_meta->tablet_schema()->columns()) { - const auto* index_meta = _rowset_meta->tablet_schema()->inverted_index(*column); - if (index_meta == nullptr) { - continue; - } - rapidjson::Value index(rapidjson::kObjectType); - auto index_id = index_meta->index_id(); - auto index_suffix = index_meta->get_index_suffix(); - index.AddMember("index_id", rapidjson::Value(index_id).Move(), allocator); - index.AddMember("index_suffix", rapidjson::Value(index_suffix.c_str(), allocator), - allocator); - auto path = InvertedIndexDescriptor::get_index_file_path_v1(index_file_path_prefix, - index_id, index_suffix); - auto st = add_file_info_to_json(path, index); - if (!st.ok()) { - return st; - } + auto index_metes = _rowset_meta->tablet_schema()->inverted_indexs(*column); + for (const auto& index_meta : index_metes) { + rapidjson::Value index(rapidjson::kObjectType); + auto index_id = index_meta->index_id(); + auto index_suffix = index_meta->get_index_suffix(); + index.AddMember("index_id", rapidjson::Value(index_id).Move(), allocator); + index.AddMember("index_suffix", + rapidjson::Value(index_suffix.c_str(), allocator), allocator); + auto path = InvertedIndexDescriptor::get_index_file_path_v1( + index_file_path_prefix, index_id, index_suffix); + auto st = add_file_info_to_json(path, index); + if (!st.ok()) { + return st; + } - auto status = process_files(*index_meta, indices, index); - if (!status.ok()) { - return status; + auto status = process_files(*index_meta, indices, index); + if (!status.ok()) { + return status; + } } } segment.AddMember("indices", indices, allocator); diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp index 3c44f701d1fd1a..6bd196fc92b756 100644 --- a/be/src/olap/rowset/beta_rowset_writer.cpp +++ b/be/src/olap/rowset/beta_rowset_writer.cpp @@ -560,8 +560,8 @@ Status BetaRowsetWriter::_rename_compacted_indices(int64_t begin, int64_t end, u } // rename remaining inverted index files for (auto column : _context.tablet_schema->columns()) { - if (const auto& index_info = _context.tablet_schema->inverted_index(*column); - index_info != nullptr) { + auto index_infos = _context.tablet_schema->inverted_indexs(*column); + for (const auto& index_info : index_infos) { auto index_id = index_info->index_id(); if (_context.tablet_schema->get_inverted_index_storage_format() == InvertedIndexStorageFormatPB::V1) { diff --git a/be/src/olap/rowset/segcompaction.cpp b/be/src/olap/rowset/segcompaction.cpp index bf12ce8cbbc366..b26789ee366867 100644 --- a/be/src/olap/rowset/segcompaction.cpp +++ b/be/src/olap/rowset/segcompaction.cpp @@ -179,7 +179,8 @@ Status SegcompactionWorker::_delete_original_segments(uint32_t begin, uint32_t e } // Delete inverted index files for (auto&& column : schema->columns()) { - if (const auto* index_info = schema->inverted_index(*column); index_info != nullptr) { + auto index_infos = schema->inverted_indexs(*column); + for (const auto& index_info : index_infos) { auto index_id = index_info->index_id(); if (schema->get_inverted_index_storage_format() == InvertedIndexStorageFormatPB::V1) { diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 5c42268490467d..fe1936246aade7 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -781,9 +781,10 @@ Status ColumnReader::new_inverted_index_iterator( RETURN_IF_ERROR(_ensure_inverted_index_loaded(std::move(index_file_reader), index_meta)); { std::shared_lock rlock(_load_index_lock); - if (_inverted_index) { - RETURN_IF_ERROR(_inverted_index->new_iterator(read_options.io_ctx, read_options.stats, - read_options.runtime_state, iterator)); + auto iter = _inverted_indexs.find(index_meta->index_id()); + if (iter != _inverted_indexs.end()) { + RETURN_IF_ERROR(iter->second->new_iterator(read_options.io_ctx, read_options.stats, + read_options.runtime_state, iterator)); } } return Status::OK(); @@ -1066,8 +1067,13 @@ Status ColumnReader::_load_inverted_index_index( std::shared_ptr index_file_reader, const TabletIndex* index_meta) { std::unique_lock wlock(_load_index_lock); - if (_inverted_index && index_meta && - _inverted_index->get_index_id() == index_meta->index_id()) { + if (index_meta == nullptr) { + return Status::Error( + "Failed to load inverted index: index metadata is null"); + } + + auto it = _inverted_indexs.find(index_meta->index_id()); + if (it != _inverted_indexs.end()) { return Status::OK(); } @@ -1080,17 +1086,18 @@ Status ColumnReader::_load_inverted_index_index( type = _type_info->type(); } + std::shared_ptr inverted_index; if (is_string_type(type)) { if (parser_type != InvertedIndexParserType::PARSER_NONE) { try { - _inverted_index = FullTextIndexReader::create_shared(index_meta, index_file_reader); + inverted_index = FullTextIndexReader::create_shared(index_meta, index_file_reader); } catch (const CLuceneError& e) { return Status::Error( "create FullTextIndexReader error: {}", e.what()); } } else { try { - _inverted_index = + inverted_index = StringTypeInvertedIndexReader::create_shared(index_meta, index_file_reader); } catch (const CLuceneError& e) { return Status::Error( @@ -1099,18 +1106,16 @@ Status ColumnReader::_load_inverted_index_index( } } else if (is_numeric_type(type)) { try { - _inverted_index = BkdIndexReader::create_shared(index_meta, index_file_reader); + inverted_index = BkdIndexReader::create_shared(index_meta, index_file_reader); } catch (const CLuceneError& e) { return Status::Error( "create BkdIndexReader error: {}", e.what()); } } else { - _inverted_index.reset(); + return Status::Error( + "Field type {} is not supported for inverted index", type); } - // TODO: move has null to inverted_index_reader's query function - //bool has_null = true; - //RETURN_IF_ERROR(index_file_reader->has_null(index_meta, &has_null)); - //_inverted_index->set_has_null(has_null); + _inverted_indexs[index_meta->index_id()] = inverted_index; return Status::OK(); } diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h index c0c6ca06882da4..c8e0686f19fcdb 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.h +++ b/be/src/olap/rowset/segment_v2/column_reader.h @@ -300,7 +300,7 @@ class ColumnReader : public MetadataAdder { std::unique_ptr _zone_map_index; std::unique_ptr _ordinal_index; std::unique_ptr _bitmap_index; - std::shared_ptr _inverted_index; + std::unordered_map> _inverted_indexs; std::shared_ptr _bloom_filter_index; std::vector> _sub_readers; diff --git a/be/src/olap/rowset/segment_v2/column_writer.cpp b/be/src/olap/rowset/segment_v2/column_writer.cpp index bad3111d5916aa..ffc7385c03ee44 100644 --- a/be/src/olap/rowset/segment_v2/column_writer.cpp +++ b/be/src/olap/rowset/segment_v2/column_writer.cpp @@ -427,6 +427,7 @@ ScalarColumnWriter::ScalarColumnWriter(const ColumnWriterOptions& opts, DCHECK(opts.meta->has_compression()); DCHECK(opts.meta->has_is_nullable()); DCHECK(file_writer != nullptr); + _inverted_index_builders.resize(_opts.inverted_indexs.size()); } ScalarColumnWriter::~ScalarColumnWriter() { @@ -470,40 +471,44 @@ Status ScalarColumnWriter::init() { if (_opts.need_inverted_index) { do { - DBUG_EXECUTE_IF("column_writer.init", { - class InvertedIndexColumnWriterEmptyImpl final : public InvertedIndexColumnWriter { - public: - Status init() override { return Status::OK(); } - Status add_values(const std::string name, const void* values, - size_t count) override { - return Status::OK(); - } - Status add_array_values(size_t field_size, const CollectionValue* values, - size_t count) override { - return Status::OK(); - } - Status add_array_values(size_t field_size, const void* value_ptr, - const uint8_t* null_map, const uint8_t* offsets_ptr, - size_t count) override { - return Status::OK(); - } - Status add_nulls(uint32_t count) override { return Status::OK(); } - Status add_array_nulls(const uint8_t* null_map, size_t num_rows) override { - return Status::OK(); - } - Status finish() override { return Status::OK(); } - int64_t size() const override { return 0; } - void close_on_error() override {} - }; - - _inverted_index_builder = std::make_unique(); - - break; - }); - - RETURN_IF_ERROR(InvertedIndexColumnWriter::create(get_field(), &_inverted_index_builder, - _opts.inverted_index_file_writer, - _opts.inverted_index)); + for (size_t i = 0; i < _opts.inverted_indexs.size(); i++) { + DBUG_EXECUTE_IF("column_writer.init", { + class InvertedIndexColumnWriterEmptyImpl final + : public InvertedIndexColumnWriter { + public: + Status init() override { return Status::OK(); } + Status add_values(const std::string name, const void* values, + size_t count) override { + return Status::OK(); + } + Status add_array_values(size_t field_size, const CollectionValue* values, + size_t count) override { + return Status::OK(); + } + Status add_array_values(size_t field_size, const void* value_ptr, + const uint8_t* null_map, const uint8_t* offsets_ptr, + size_t count) override { + return Status::OK(); + } + Status add_nulls(uint32_t count) override { return Status::OK(); } + Status add_array_nulls(const uint8_t* null_map, size_t num_rows) override { + return Status::OK(); + } + Status finish() override { return Status::OK(); } + int64_t size() const override { return 0; } + void close_on_error() override {} + }; + + _inverted_index_builders[i] = + std::make_unique(); + + break; + }); + + RETURN_IF_ERROR(InvertedIndexColumnWriter::create( + get_field(), &_inverted_index_builders[i], _opts.inverted_index_file_writer, + _opts.inverted_indexs[i])); + } } while (false); } if (_opts.need_bloom_filter) { @@ -529,7 +534,9 @@ Status ScalarColumnWriter::append_nulls(size_t num_rows) { _bitmap_index_builder->add_nulls(num_rows); } if (_opts.need_inverted_index) { - RETURN_IF_ERROR(_inverted_index_builder->add_nulls(num_rows)); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->add_nulls(num_rows)); + } } if (_opts.need_bloom_filter) { _bloom_filter_index_builder->add_nulls(num_rows); @@ -565,8 +572,9 @@ Status ScalarColumnWriter::_internal_append_data_in_current_page(const uint8_t* _bitmap_index_builder->add_values(data, *num_written); } if (_opts.need_inverted_index) { - RETURN_IF_ERROR( - _inverted_index_builder->add_values(get_field()->name(), data, *num_written)); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->add_values(get_field()->name(), data, *num_written)); + } } if (_opts.need_bloom_filter) { RETURN_IF_ERROR(_bloom_filter_index_builder->add_values(data, *num_written)); @@ -658,7 +666,9 @@ Status ScalarColumnWriter::write_bitmap_index() { Status ScalarColumnWriter::write_inverted_index() { if (_opts.need_inverted_index) { - return _inverted_index_builder->finish(); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->finish()); + } } return Status::OK(); } @@ -914,11 +924,14 @@ Status ArrayColumnWriter::init() { } RETURN_IF_ERROR(_item_writer->init()); if (_opts.need_inverted_index) { + _inverted_index_builders.resize(_opts.inverted_indexs.size()); auto* writer = dynamic_cast(_item_writer.get()); if (writer != nullptr) { - RETURN_IF_ERROR(InvertedIndexColumnWriter::create(get_field(), &_inverted_index_builder, - _opts.inverted_index_file_writer, - _opts.inverted_index)); + for (size_t i = 0; i < _opts.inverted_indexs.size(); i++) { + RETURN_IF_ERROR(InvertedIndexColumnWriter::create( + get_field(), &_inverted_index_builders[i], _opts.inverted_index_file_writer, + _opts.inverted_indexs[i])); + } } } return Status::OK(); @@ -926,7 +939,9 @@ Status ArrayColumnWriter::init() { Status ArrayColumnWriter::write_inverted_index() { if (_opts.need_inverted_index) { - return _inverted_index_builder->finish(); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->finish()); + } } return Status::OK(); } @@ -951,9 +966,11 @@ Status ArrayColumnWriter::append_data(const uint8_t** ptr, size_t num_rows) { // now only support nested type is scala if (writer != nullptr) { //NOTE: use array field name as index field, but item_writer size should be used when moving item_data_ptr - RETURN_IF_ERROR(_inverted_index_builder->add_array_values( - _item_writer->get_field()->size(), reinterpret_cast(data), - reinterpret_cast(nested_null_map), offsets_ptr, num_rows)); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->add_array_values( + _item_writer->get_field()->size(), reinterpret_cast(data), + reinterpret_cast(nested_null_map), offsets_ptr, num_rows)); + } } } @@ -972,7 +989,9 @@ Status ArrayColumnWriter::append_nullable(const uint8_t* null_map, const uint8_t RETURN_IF_ERROR(append_data(ptr, num_rows)); if (is_nullable()) { if (_opts.need_inverted_index) { - RETURN_IF_ERROR(_inverted_index_builder->add_array_nulls(null_map, num_rows)); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->add_array_nulls(null_map, num_rows)); + } } RETURN_IF_ERROR(_null_writer->append_data(&null_map, num_rows)); } @@ -1170,7 +1189,9 @@ Status MapColumnWriter::finish_current_page() { Status MapColumnWriter::write_inverted_index() { if (_opts.need_inverted_index) { - return _inverted_index_builder->finish(); + for (const auto& builder : _inverted_index_builders) { + RETURN_IF_ERROR(builder->finish()); + } } return Status::OK(); } diff --git a/be/src/olap/rowset/segment_v2/column_writer.h b/be/src/olap/rowset/segment_v2/column_writer.h index 3139f00be631ab..5fad1c913705bb 100644 --- a/be/src/olap/rowset/segment_v2/column_writer.h +++ b/be/src/olap/rowset/segment_v2/column_writer.h @@ -67,8 +67,7 @@ struct ColumnWriterOptions { uint8_t gram_size; uint16_t gram_bf_size; BloomFilterOptions bf_options; - std::vector indexes; // unused - const TabletIndex* inverted_index = nullptr; + std::vector inverted_indexs; InvertedIndexFileWriter* inverted_index_file_writer; // variant column writer used SegmentFooterPB* footer = nullptr; @@ -290,7 +289,7 @@ class ScalarColumnWriter : public ColumnWriter { std::unique_ptr _ordinal_index_builder; std::unique_ptr _zone_map_index_builder; std::unique_ptr _bitmap_index_builder; - std::unique_ptr _inverted_index_builder; + std::vector> _inverted_index_builders; std::unique_ptr _bloom_filter_index_builder; // call before flush data page. @@ -419,7 +418,7 @@ class ArrayColumnWriter final : public ColumnWriter { std::unique_ptr _offset_writer; std::unique_ptr _null_writer; std::unique_ptr _item_writer; - std::unique_ptr _inverted_index_builder; + std::vector> _inverted_index_builders; ColumnWriterOptions _opts; }; @@ -473,7 +472,7 @@ class MapColumnWriter final : public ColumnWriter { // we need null writer to make sure a row is null or not std::unique_ptr _null_writer; std::unique_ptr _offsets_writer; - std::unique_ptr _inverted_index_builder; + std::vector> _inverted_index_builders; ColumnWriterOptions _opts; }; diff --git a/be/src/olap/rowset/segment_v2/inverted_index_query_type.h b/be/src/olap/rowset/segment_v2/inverted_index_query_type.h index f1a47ebdd0f2eb..4595ed64cdf1e5 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_query_type.h +++ b/be/src/olap/rowset/segment_v2/inverted_index_query_type.h @@ -81,6 +81,10 @@ enum class InvertedIndexQueryType { MATCH_PHRASE_EDGE_QUERY = 10, }; +inline bool is_equal_query(InvertedIndexQueryType query_type) { + return query_type == InvertedIndexQueryType::EQUAL_QUERY; +} + inline bool is_range_query(InvertedIndexQueryType query_type) { return (query_type == InvertedIndexQueryType::GREATER_THAN_QUERY || query_type == InvertedIndexQueryType::GREATER_EQUAL_QUERY || diff --git a/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp b/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp index 4574bf7c0cb657..66bd8f6e8934ce 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp +++ b/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp @@ -50,6 +50,7 @@ #include "olap/rowset/segment_v2/inverted_index_fs_directory.h" #include "olap/rowset/segment_v2/inverted_index_searcher.h" #include "olap/types.h" +#include "runtime/primitive_type.h" #include "runtime/runtime_state.h" #include "util/faststring.h" #include "util/runtime_profile.h" @@ -295,8 +296,10 @@ Status InvertedIndexReader::match_index_search( Status FullTextIndexReader::new_iterator(const io::IOContext& io_ctx, OlapReaderStatistics* stats, RuntimeState* runtime_state, std::unique_ptr* iterator) { - *iterator = - InvertedIndexIterator::create_unique(io_ctx, stats, runtime_state, shared_from_this()); + if (*iterator == nullptr) { + *iterator = InvertedIndexIterator::create_unique(io_ctx, stats, runtime_state); + } + (*iterator)->add_reader(InvertedIndexReaderType::FULLTEXT, shared_from_this()); return Status::OK(); } @@ -391,8 +394,10 @@ InvertedIndexReaderType FullTextIndexReader::type() { Status StringTypeInvertedIndexReader::new_iterator( const io::IOContext& io_ctx, OlapReaderStatistics* stats, RuntimeState* runtime_state, std::unique_ptr* iterator) { - *iterator = - InvertedIndexIterator::create_unique(io_ctx, stats, runtime_state, shared_from_this()); + if (*iterator == nullptr) { + *iterator = InvertedIndexIterator::create_unique(io_ctx, stats, runtime_state); + } + (*iterator)->add_reader(InvertedIndexReaderType::STRING_TYPE, shared_from_this()); return Status::OK(); } @@ -529,8 +534,10 @@ InvertedIndexReaderType StringTypeInvertedIndexReader::type() { Status BkdIndexReader::new_iterator(const io::IOContext& io_ctx, OlapReaderStatistics* stats, RuntimeState* runtime_state, std::unique_ptr* iterator) { - *iterator = - InvertedIndexIterator::create_unique(io_ctx, stats, runtime_state, shared_from_this()); + if (*iterator == nullptr) { + *iterator = InvertedIndexIterator::create_unique(io_ctx, stats, runtime_state); + } + (*iterator)->add_reader(InvertedIndexReaderType::BKD, shared_from_this()); return Status::OK(); } @@ -1151,24 +1158,36 @@ lucene::util::bkd::relation InvertedIndexVisitor::compare(std::vector& bit_map, bool skip_try) { + const vectorized::IndexFieldNameAndTypePair& name_with_type, const void* query_value, + InvertedIndexQueryType query_type, uint32_t segment_num_rows, + std::shared_ptr& bit_map, bool skip_try) { DBUG_EXECUTE_IF("return_inverted_index_bypass", { return Status::Error("inverted index bypass"); }); - if (UNLIKELY(_reader == nullptr)) { + auto reader = DORIS_TRY(_select_best_reader(name_with_type.second, query_type)); + if (UNLIKELY(reader == nullptr)) { throw CLuceneError(CL_ERR_NullPointer, "bkd index reader is null", false); } - if (!skip_try && _reader->type() == InvertedIndexReaderType::BKD) { + if (!skip_try && reader->type() == InvertedIndexReaderType::BKD) { if (_runtime_state != nullptr && _runtime_state->query_options().inverted_index_skip_threshold > 0 && _runtime_state->query_options().inverted_index_skip_threshold < 100) { auto query_bkd_limit_percent = _runtime_state->query_options().inverted_index_skip_threshold; uint32_t hit_count = 0; - RETURN_IF_ERROR( - try_read_from_inverted_index(column_name, query_value, query_type, &hit_count)); + RETURN_IF_ERROR(try_read_from_inverted_index(reader, name_with_type.first, query_value, + query_type, &hit_count)); if (hit_count > segment_num_rows * query_bkd_limit_percent / 100) { return Status::Error( "hit count: {}, bkd inverted reached limit {}% , segment num " @@ -1179,8 +1198,8 @@ Status InvertedIndexIterator::read_from_inverted_index( } auto execute_query = [&]() { - return _reader->query(&_io_ctx, _stats, _runtime_state, column_name, query_value, - query_type, bit_map); + return reader->query(&_io_ctx, _stats, _runtime_state, name_with_type.first, query_value, + query_type, bit_map); }; if (_runtime_state->query_options().enable_profile) { @@ -1189,7 +1208,7 @@ Status InvertedIndexIterator::read_from_inverted_index( SCOPED_RAW_TIMER(&query_stats.exec_time); RETURN_IF_ERROR(execute_query()); } - query_stats.column_name = column_name; + query_stats.column_name = name_with_type.first; query_stats.hit_rows = bit_map->cardinality(); _stats->inverted_index_stats.stats.emplace_back(query_stats); } else { @@ -1199,7 +1218,8 @@ Status InvertedIndexIterator::read_from_inverted_index( return Status::OK(); } -Status InvertedIndexIterator::try_read_from_inverted_index(const std::string& column_name, +Status InvertedIndexIterator::try_read_from_inverted_index(const InvertedIndexReaderPtr& reader, + const std::string& column_name, const void* query_value, InvertedIndexQueryType query_type, uint32_t* count) { @@ -1209,18 +1229,84 @@ Status InvertedIndexIterator::try_read_from_inverted_index(const std::string& co query_type == InvertedIndexQueryType::LESS_EQUAL_QUERY || query_type == InvertedIndexQueryType::LESS_THAN_QUERY || query_type == InvertedIndexQueryType::EQUAL_QUERY) { - RETURN_IF_ERROR(_reader->try_query(&_io_ctx, _stats, _runtime_state, column_name, - query_value, query_type, count)); + RETURN_IF_ERROR(reader->try_query(&_io_ctx, _stats, _runtime_state, column_name, + query_value, query_type, count)); } return Status::OK(); } -InvertedIndexReaderType InvertedIndexIterator::get_inverted_index_reader_type() const { - return _reader->type(); +Status InvertedIndexIterator::read_null_bitmap(InvertedIndexQueryCacheHandle* cache_handle, + lucene::store::Directory* dir) { + auto reader = DORIS_TRY(_select_best_reader()); + return reader->read_null_bitmap(&_io_ctx, _stats, cache_handle, dir); +} + +Result InvertedIndexIterator::has_null() { + auto reader = DORIS_TRY(_select_best_reader()); + return reader->has_null(); +}; + +Result InvertedIndexIterator::_select_best_reader( + const vectorized::DataTypePtr& column_type, InvertedIndexQueryType query_type) { + if (_readers.empty()) { + return ResultError(Status::RuntimeError( + "No available inverted index readers. Check if index is properly initialized.")); + } + + // Only one BKD index allowed per numeric type + if (_readers.size() == 1) { + return _readers.begin()->second; + } + + const auto& column_desc = column_type->get_type_as_type_descriptor(); + const auto field_type = TabletColumn::get_field_type_by_type(column_desc.type); + + // Check for string types (including arrays of strings) + const bool is_string = + is_string_type(field_type) || + (column_desc.type == TYPE_ARRAY && + is_string_type(TabletColumn::get_field_type_by_type(column_desc.children[0].type))); + + InvertedIndexReaderType preferred_type = InvertedIndexReaderType::UNKNOWN; + // Handle string type columns + if (is_string) { + if (is_match_query(query_type)) { + preferred_type = InvertedIndexReaderType::FULLTEXT; + } else if (is_equal_query(query_type)) { + preferred_type = InvertedIndexReaderType::STRING_TYPE; + } + } + DBUG_EXECUTE_IF("inverted_index_reader._select_best_reader", { + auto type = DebugPoints::instance()->get_debug_param_or_default( + "inverted_index_reader._select_best_reader", "type", -1); + if ((int32_t)preferred_type != type) { + return ResultError(Status::RuntimeError( + "Inverted index reader type mismatch. Expected={}, Actual={}", + (int32_t)preferred_type, type)); + } + }) + + if (auto reader = get_reader(preferred_type)) { + return reader; + } + + return ResultError(Status::RuntimeError("Index query type not supported")); +} + +Result InvertedIndexIterator::_select_best_reader() { + if (_readers.empty()) { + return ResultError(Status::RuntimeError( + "No available inverted index readers. Check if index is properly initialized.")); + } + return _readers.begin()->second; } -const std::map& InvertedIndexIterator::get_index_properties() const { - return _reader->get_index_properties(); +InvertedIndexReaderPtr InvertedIndexIterator::get_reader(InvertedIndexReaderType type) { + auto iter = _readers.find(type); + if (iter == _readers.end()) { + return nullptr; + } + return iter->second; } template class InvertedIndexVisitor; diff --git a/be/src/olap/rowset/segment_v2/inverted_index_reader.h b/be/src/olap/rowset/segment_v2/inverted_index_reader.h index 6ee293547431b7..87d7460a05aa43 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_reader.h +++ b/be/src/olap/rowset/segment_v2/inverted_index_reader.h @@ -449,35 +449,37 @@ class InvertedIndexIterator { public: InvertedIndexIterator(const io::IOContext& io_ctx, OlapReaderStatistics* stats, - RuntimeState* runtime_state, std::shared_ptr reader) - : _io_ctx(io_ctx), - _stats(stats), - _runtime_state(runtime_state), - _reader(std::move(reader)) {} - - Status read_from_inverted_index(const std::string& column_name, const void* query_value, - InvertedIndexQueryType query_type, uint32_t segment_num_rows, + RuntimeState* runtime_state); + + void add_reader(InvertedIndexReaderType type, const InvertedIndexReaderPtr& reader); + + Status read_from_inverted_index(const vectorized::IndexFieldNameAndTypePair& name_with_type, + const void* query_value, InvertedIndexQueryType query_type, + uint32_t segment_num_rows, + std::shared_ptr& bit_map, bool skip_try = false); - Status try_read_from_inverted_index(const std::string& column_name, const void* query_value, + + Status try_read_from_inverted_index(const InvertedIndexReaderPtr& reader, + const std::string& column_name, const void* query_value, InvertedIndexQueryType query_type, uint32_t* count); Status read_null_bitmap(InvertedIndexQueryCacheHandle* cache_handle, - lucene::store::Directory* dir = nullptr) { - return _reader->read_null_bitmap(&_io_ctx, _stats, cache_handle, dir); - } + lucene::store::Directory* dir = nullptr); - [[nodiscard]] InvertedIndexReaderType get_inverted_index_reader_type() const; - [[nodiscard]] const std::map& get_index_properties() const; - [[nodiscard]] bool has_null() { return _reader->has_null(); }; + [[nodiscard]] Result has_null(); - const InvertedIndexReaderPtr& reader() { return _reader; } + InvertedIndexReaderPtr get_reader(InvertedIndexReaderType type); private: + Result _select_best_reader(const vectorized::DataTypePtr& column_type, + InvertedIndexQueryType query_type); + Result _select_best_reader(); + io::IOContext _io_ctx; OlapReaderStatistics* _stats = nullptr; RuntimeState* _runtime_state = nullptr; - std::shared_ptr _reader; + std::unordered_map _readers; }; } // namespace segment_v2 diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index 80c71b78a9824a..ecaf559c4f5d6a 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -776,8 +776,8 @@ bool SegmentIterator::_check_apply_by_inverted_index(ColumnPredicate* pred) { // UNTOKENIZED strings exceed ignore_above, they are written as null, causing range query errors if (PredicateTypeTraits::is_range(pred->type()) && _inverted_index_iterators[pred_column_id] != nullptr && - _inverted_index_iterators[pred_column_id]->get_inverted_index_reader_type() == - InvertedIndexReaderType::STRING_TYPE) { + _inverted_index_iterators[pred_column_id]->get_reader( + InvertedIndexReaderType::STRING_TYPE)) { return false; } @@ -854,9 +854,9 @@ bool SegmentIterator::_downgrade_without_index(Status res, bool need_remaining) } bool SegmentIterator::_column_has_fulltext_index(int32_t cid) { - bool has_fulltext_index = _inverted_index_iterators[cid] != nullptr && - _inverted_index_iterators[cid]->get_inverted_index_reader_type() == - InvertedIndexReaderType::FULLTEXT; + bool has_fulltext_index = + _inverted_index_iterators[cid] != nullptr && + _inverted_index_iterators[cid]->get_reader(InvertedIndexReaderType::FULLTEXT); return has_fulltext_index; } @@ -946,18 +946,13 @@ bool SegmentIterator::_need_read_data(ColumnId cid) { Status SegmentIterator::_apply_inverted_index() { std::vector remaining_predicates; - std::set no_need_to_pass_column_predicate_set; - for (auto pred : _col_predicates) { - if (no_need_to_pass_column_predicate_set.count(pred) > 0) { - continue; - } else { - bool continue_apply = true; - RETURN_IF_ERROR(_apply_inverted_index_on_column_predicate(pred, remaining_predicates, - &continue_apply)); - if (!continue_apply) { - break; - } + for (auto* pred : _col_predicates) { + bool continue_apply = true; + RETURN_IF_ERROR(_apply_inverted_index_on_column_predicate(pred, remaining_predicates, + &continue_apply)); + if (!continue_apply) { + break; } } @@ -1082,21 +1077,13 @@ Status SegmentIterator::_init_inverted_index_iterators() { // This is because the sub-column is created in create_materialized_variant_column. // We use this column to locate the metadata for the inverted index, which requires a unique_id and path. const auto& column = _opts.tablet_schema->column(cid); - const TabletIndex* index_meta = nullptr; - if (column.is_extracted_column()) { - if (_segment->_column_readers.find(column.parent_unique_id()) == - _segment->_column_readers.end()) { - continue; - } - auto* column_reader = _segment->_column_readers.at(column.parent_unique_id()).get(); - index_meta = assert_cast(column_reader) - ->find_subcolumn_tablet_index(column.suffix_path()); - } else { - index_meta = _segment->_tablet_schema->inverted_index(column.unique_id()); - } - if (index_meta) { + int32_t col_unique_id = + column.is_extracted_column() ? column.parent_unique_id() : column.unique_id(); + auto inverted_indexs = + _segment->_tablet_schema->inverted_indexs(col_unique_id, column.suffix_path()); + for (const auto& inverted_index : inverted_indexs) { RETURN_IF_ERROR(_segment->new_inverted_index_iterator( - column, index_meta, _opts, &_inverted_index_iterators[cid])); + column, inverted_index, _opts, &_inverted_index_iterators[cid])); } } } diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index 5d6763afd2a7de..d160419e7e1da9 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -223,15 +223,18 @@ Status SegmentWriter::_create_column_writer(uint32_t cid, const TabletColumn& co if (_opts.write_type == DataWriteType::TYPE_DIRECT && schema->skip_write_index_on_load()) { skip_inverted_index = true; } - // indexes for this column - if (const auto& index = schema->inverted_index(column); - index != nullptr && !skip_inverted_index) { - opts.inverted_index = index; - opts.need_inverted_index = true; - DCHECK(_inverted_index_file_writer != nullptr); + if (!skip_inverted_index) { + auto inverted_indexs = schema->inverted_indexs(column); + if (!inverted_indexs.empty()) { + for (const auto& index : inverted_indexs) { + opts.inverted_indexs.emplace_back(index); + } + opts.need_inverted_index = true; + DCHECK(_inverted_index_file_writer != nullptr); + opts.inverted_index_file_writer = _inverted_index_file_writer; + } } - opts.inverted_index_file_writer = _inverted_index_file_writer; #define DISABLE_INDEX_IF_FIELD_TYPE(TYPE, type_name) \ if (column.type() == FieldType::OLAP_FIELD_TYPE_##TYPE) { \ diff --git a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp index 6e239e689966e5..45cd3c05e985a8 100644 --- a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp @@ -221,11 +221,24 @@ Status VerticalSegmentWriter::_create_column_writer(uint32_t cid, const TabletCo tablet_schema->skip_write_index_on_load()) { skip_inverted_index = true; } +<<<<<<< HEAD if (const auto& index = tablet_schema->inverted_index(column); index != nullptr && !skip_inverted_index) { opts.inverted_index = index; opts.need_inverted_index = true; DCHECK(_inverted_index_file_writer != nullptr); +======= + if (!skip_inverted_index) { + auto inverted_indexs = tablet_schema->inverted_indexs(column); + if (!inverted_indexs.empty()) { + for (const auto& index : inverted_indexs) { + opts.inverted_indexs.emplace_back(index); + } + opts.need_inverted_index = true; + DCHECK(_inverted_index_file_writer != nullptr); + opts.inverted_index_file_writer = _inverted_index_file_writer; + } +>>>>>>> b10f185714 ([feture](inverted index) Add multi inverted index support for single column) } opts.inverted_index_file_writer = _inverted_index_file_writer; diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index 5e5f4b47580c94..868e77d96def48 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -922,7 +922,13 @@ void TabletColumn::append_sparse_column(TabletColumn column) { } void TabletSchema::append_index(TabletIndex&& index) { + int32_t index_pos = _indexes.size(); _indexes.push_back(std::make_shared(index)); + for (int32_t id : _indexes.back()->col_unique_ids()) { + IndexKey key = std::make_tuple(_indexes.back()->index_type(), id, + _indexes.back()->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(index_pos); + } if (auto field_pattern = _indexes.back()->field_pattern(); !field_pattern.empty() && !_indexes.back()->col_unique_ids().empty()) { auto& pattern_to_index_map = @@ -932,15 +938,18 @@ void TabletSchema::append_index(TabletIndex&& index) { } void TabletSchema::update_index(const TabletColumn& col, const IndexType& index_type, - TabletIndex&& index) { + std::vector&& indexes) { int32_t col_unique_id = col.is_extracted_column() ? col.parent_unique_id() : col.unique_id(); const std::string& suffix_path = escape_for_path_name(col.suffix_path()); - for (auto& _indexe : _indexes) { - for (int32_t id : _indexe->col_unique_ids()) { - if (_indexe->index_type() == index_type && id == col_unique_id && - _indexe->get_index_suffix() == suffix_path) { - _indexe = std::make_shared(std::move(index)); - break; + IndexKey key(index_type, col_unique_id, suffix_path); + auto iter = _col_id_suffix_to_index.find(key); + if (iter != _col_id_suffix_to_index.end()) { + if (iter->second.size() == indexes.size()) { + for (size_t i = 0; i < iter->second.size(); ++i) { + int32_t pos = iter->second[i]; + if (pos >= 0 && pos < _indexes.size()) { + _indexes[pos] = std::make_shared(std::move(indexes[i])); + } } } } @@ -964,14 +973,23 @@ void TabletSchema::clear_index() { } void TabletSchema::remove_index(int64_t index_id) { - std::vector indexes; - for (auto index : _indexes) { - if (index->index_id() == index_id) { - continue; + std::vector new_indexes; + for (auto& index : _indexes) { + if (index->index_id() != index_id) { + new_indexes.emplace_back(std::move(index)); } - indexes.emplace_back(std::move(index)); } - _indexes = std::move(indexes); + + _col_id_suffix_to_index.clear(); + for (size_t new_pos = 0; new_pos < new_indexes.size(); ++new_pos) { + const auto& index = new_indexes[new_pos]; + for (int32_t col_uid : index->col_unique_ids()) { + IndexKey key = std::make_tuple(index->index_type(), col_uid, index->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(new_pos); + } + } + + _indexes = std::move(new_indexes); } void TabletSchema::clear_columns() { @@ -1055,6 +1073,11 @@ void TabletSchema::init_from_pb(const TabletSchemaPB& schema, bool ignore_extrac index = std::make_shared(); index->init_from_pb(index_pb); } + int32_t index_pos = _indexes.size(); + for (int32_t col_uid : index->col_unique_ids()) { + IndexKey key = std::make_tuple(index->index_type(), col_uid, index->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(index_pos); + } _indexes.emplace_back(std::move(index)); if (auto field_pattern = _indexes.back()->field_pattern(); !field_pattern.empty() && !_indexes.back()->col_unique_ids().empty()) { @@ -1224,6 +1247,11 @@ void TabletSchema::build_current_tablet_schema(int64_t index_id, int32_t version } for (const auto& i : index->indexes) { + int32_t index_pos = _indexes.size(); + for (int32_t col_uid : i->col_unique_ids()) { + IndexKey key = std::make_tuple(i->index_type(), col_uid, i->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(index_pos); + } _indexes.emplace_back(std::make_shared(*i)); if (auto field_pattern = i->field_pattern(); !field_pattern.empty() && !i->col_unique_ids().empty()) { @@ -1426,6 +1454,14 @@ void TabletSchema::update_indexes_from_thrift(const std::vector, IndexKeyHash> col_id_suffix_to_index; + for (size_t i = 0; i < _indexes.size(); i++) { + for (int32_t col_uid : _indexes[i]->col_unique_ids()) { + IndexKey key = std::make_tuple(_indexes[i]->index_type(), col_uid, + _indexes[i]->get_index_suffix()); + col_id_suffix_to_index[key].push_back(i); + } + } } bool TabletSchema::exist_column(const std::string& field_name) const { @@ -1478,20 +1514,20 @@ bool TabletSchema::has_inverted_index_with_index_id(int64_t index_id) const { return false; } -const TabletIndex* TabletSchema::inverted_index(int32_t col_unique_id, - const std::string& suffix_path) const { +std::vector TabletSchema::inverted_indexs( + int32_t col_unique_id, const std::string& suffix_path) const { + std::vector result; const std::string escaped_suffix = escape_for_path_name(suffix_path); - for (const auto& _index : _indexes) { - if (_index->index_type() == IndexType::INVERTED) { - for (int32_t id : _index->col_unique_ids()) { - if (id == col_unique_id && _index->get_index_suffix() == escaped_suffix && - _index->field_pattern().empty()) { - return _index.get(); - } + auto it = _col_id_suffix_to_index.find( + std::make_tuple(IndexType::INVERTED, col_unique_id, escaped_suffix)); + if (it != _col_id_suffix_to_index.end()) { + for (int32_t pos : it->second) { + if (pos >= 0 && pos < _indexes.size()) { + result.push_back(_indexes[pos].get()); } } } - return nullptr; + return result; } TabletIndexPtr TabletSchema::inverted_index_by_field_pattern( @@ -1507,18 +1543,18 @@ TabletIndexPtr TabletSchema::inverted_index_by_field_pattern( return pattern_to_index_map->second; } -const TabletIndex* TabletSchema::inverted_index(const TabletColumn& col) const { +std::vector TabletSchema::inverted_index(const TabletColumn& col) const { // Some columns(Float, Double, JSONB ...) from the variant do not support inverted index if (!segment_v2::InvertedIndexColumnWriter::check_support_inverted_index(col)) { - return nullptr; + return {}; } // TODO use more efficient impl // Use parent id if unique not assigned, this could happend when accessing subcolumns of variants int32_t col_unique_id = col.is_extracted_column() ? col.parent_unique_id() : col.unique_id(); - if (const TabletIndex* index = - inverted_index(col_unique_id, escape_for_path_name(col.suffix_path())); - index != nullptr) { - return index; + std::vector result; + if (result = inverted_index(col_unique_id, escape_for_path_name(col.suffix_path())); + !result.empty()) { + return result; } // variant's typed column has it's own index else if (col.is_extracted_column()) { @@ -1531,9 +1567,10 @@ const TabletIndex* TabletSchema::inverted_index(const TabletColumn& col) const { path_set_info.typed_path_set.end()) { return nullptr; } - return path_set_info.typed_path_set.at(relative_path).index.get(); + result.push_back(path_set_info.typed_path_set.at(relative_path).index.get()); + return result; } - return nullptr; + return result; } bool TabletSchema::has_ngram_bf_index(int32_t col_unique_id) const { @@ -1552,14 +1589,12 @@ bool TabletSchema::has_ngram_bf_index(int32_t col_unique_id) const { } const TabletIndex* TabletSchema::get_ngram_bf_index(int32_t col_unique_id) const { - // TODO use more efficient impl - for (const auto& _index : _indexes) { - if (_index->index_type() == IndexType::NGRAM_BF) { - for (int32_t id : _index->col_unique_ids()) { - if (id == col_unique_id) { - return _index.get(); - } - } + // Get the ngram bf index for the given column unique id + IndexKey index_key(IndexType::NGRAM_BF, col_unique_id, ""); + auto it = _col_id_suffix_to_index.find(index_key); + if (it != _col_id_suffix_to_index.end()) { + if (!it->second.empty()) { + return _indexes[it->second[0]].get(); } } return nullptr; diff --git a/be/src/olap/tablet_schema.h b/be/src/olap/tablet_schema.h index 56bc1c06c96c4e..a00b5cfc91715d 100644 --- a/be/src/olap/tablet_schema.h +++ b/be/src/olap/tablet_schema.h @@ -324,6 +324,8 @@ class TabletIndex : public MetadataAdder { IndexType _index_type; std::vector _col_unique_ids; std::map _properties; + + friend class TabletSchemaMultiIndexTest; }; using TabletIndexPtr = std::shared_ptr; @@ -356,7 +358,8 @@ class TabletSchema : public MetadataAdder { void to_schema_pb(TabletSchemaPB* tablet_meta_pb) const; void append_column(TabletColumn column, ColumnType col_type = ColumnType::NORMAL); void append_index(TabletIndex&& index); - void update_index(const TabletColumn& column, const IndexType& index_type, TabletIndex&& index); + void update_index(const TabletColumn& column, const IndexType& index_type, + std::vector&& indexs); void remove_index(int64_t index_id); void clear_index(); // Must make sure the row column is always the last column @@ -472,12 +475,12 @@ class TabletSchema : public MetadataAdder { bool has_inverted_index_with_index_id(int64_t index_id) const; // Check whether this column supports inverted index // Some columns (Float, Double, JSONB ...) from the variant do not support index, but they are listed in TabletIndex. - const TabletIndex* inverted_index(const TabletColumn& col) const; + std::vector inverted_indexs(const TabletColumn& col) const; // Regardless of whether this column supports inverted index // TabletIndex information will be returned as long as it exists. - const TabletIndex* inverted_index(int32_t col_unique_id, - const std::string& suffix_path = "") const; + std::vector inverted_indexs(int32_t col_unique_id, + const std::string& suffix_path = "") const; TabletIndexPtr inverted_index_by_field_pattern(int32_t col_unique_id, const std::string& field_pattern) const; bool has_ngram_bf_index(int32_t col_unique_id) const; @@ -630,6 +633,23 @@ class TabletSchema : public MetadataAdder { std::unordered_map _field_id_to_index; std::unordered_map _field_path_to_index; + + // index_type/col_unique_id/suffix -> idxs in _indexes + using IndexKey = std::tuple; + struct IndexKeyHash { + size_t operator()(const IndexKey& t) const { + std::size_t seed = 0; + seed = doris::HashUtil::hash((const char*)&std::get<0>(t), sizeof(std::get<0>(t)), + seed); + seed = doris::HashUtil::hash((const char*)&std::get<1>(t), sizeof(std::get<1>(t)), + seed); + seed = doris::HashUtil::hash((const char*)std::get<2>(t).c_str(), std::get<2>(t).size(), + seed); + return seed; + } + }; + std::unordered_map, IndexKeyHash> _col_id_suffix_to_index; + size_t _num_columns = 0; size_t _num_variant_columns = 0; size_t _num_key_columns = 0; diff --git a/be/src/olap/task/index_builder.cpp b/be/src/olap/task/index_builder.cpp index 817486679b273b..7f6e97d0980e01 100644 --- a/be/src/olap/task/index_builder.cpp +++ b/be/src/olap/task/index_builder.cpp @@ -114,34 +114,36 @@ Status IndexBuilder::update_inverted_index_info() { } } auto column = output_rs_tablet_schema->column(column_idx); - const auto* index_meta = output_rs_tablet_schema->inverted_index(column); - if (index_meta == nullptr) { + auto index_metas = output_rs_tablet_schema->inverted_indexs(column); + if (index_metas.empty()) { LOG(ERROR) << "failed to find column: " << column_name << " index_id: " << t_inverted_index.index_id; continue; } - if (output_rs_tablet_schema->get_inverted_index_storage_format() == - InvertedIndexStorageFormatPB::V1) { - const auto& fs = io::global_local_filesystem(); - - for (int seg_id = 0; seg_id < num_segments; seg_id++) { - auto seg_path = - local_segment_path(_tablet->tablet_path(), - input_rowset->rowset_id().to_string(), seg_id); - auto index_path = InvertedIndexDescriptor::get_index_file_path_v1( - InvertedIndexDescriptor::get_index_file_path_prefix(seg_path), - index_meta->index_id(), index_meta->get_index_suffix()); - int64_t index_size = 0; - RETURN_IF_ERROR(fs->file_size(index_path, &index_size)); - VLOG_DEBUG << "inverted index file:" << index_path - << " size:" << index_size; - drop_index_size += index_size; + for (const auto& index_meta : index_metas) { + if (output_rs_tablet_schema->get_inverted_index_storage_format() == + InvertedIndexStorageFormatPB::V1) { + const auto& fs = io::global_local_filesystem(); + + for (int seg_id = 0; seg_id < num_segments; seg_id++) { + auto seg_path = local_segment_path( + _tablet->tablet_path(), input_rowset->rowset_id().to_string(), + seg_id); + auto index_path = InvertedIndexDescriptor::get_index_file_path_v1( + InvertedIndexDescriptor::get_index_file_path_prefix(seg_path), + index_meta->index_id(), index_meta->get_index_suffix()); + int64_t index_size = 0; + RETURN_IF_ERROR(fs->file_size(index_path, &index_size)); + VLOG_DEBUG << "inverted index file:" << index_path + << " size:" << index_size; + drop_index_size += index_size; + } } + _dropped_inverted_indexes.push_back(*index_meta); + // ATTN: DO NOT REMOVE INDEX AFTER OUTPUT_ROWSET_WRITER CREATED. + // remove dropped index_meta from output rowset tablet schema + output_rs_tablet_schema->remove_index(index_meta->index_id()); } - _dropped_inverted_indexes.push_back(*index_meta); - // ATTN: DO NOT REMOVE INDEX AFTER OUTPUT_ROWSET_WRITER CREATED. - // remove dropped index_meta from output rowset tablet schema - output_rs_tablet_schema->remove_index(index_meta->index_id()); } DBUG_EXECUTE_IF("index_builder.update_inverted_index_info.drop_index", { auto indexes_count = DebugPoints::instance()->get_debug_param_or_default( @@ -171,15 +173,17 @@ Status IndexBuilder::update_inverted_index_info() { continue; } const TabletColumn& col = output_rs_tablet_schema->column_by_uid(column_uid); - const TabletIndex* exist_index = output_rs_tablet_schema->inverted_index(col); - if (exist_index && exist_index->index_id() != index.index_id()) { - LOG(WARNING) << fmt::format( - "column: {} has a exist inverted index, but the index id not equal " - "request's index id, , exist index id: {}, request's index id: {}, " - "remove exist index in new output_rs_tablet_schema", - column_uid, exist_index->index_id(), index.index_id()); - without_index_uids.insert(exist_index->index_id()); - output_rs_tablet_schema->remove_index(exist_index->index_id()); + auto exist_indexs = output_rs_tablet_schema->inverted_indexs(col); + for (const auto& exist_index : exist_indexs) { + if (exist_index->index_id() != index.index_id()) { + LOG(WARNING) << fmt::format( + "column: {} has a exist inverted index, but the index id not equal " + "request's index id, , exist index id: {}, request's index id: {}, " + "remove exist index in new output_rs_tablet_schema", + column_uid, exist_index->index_id(), index.index_id()); + without_index_uids.insert(exist_index->index_id()); + output_rs_tablet_schema->remove_index(exist_index->index_id()); + } } output_rs_tablet_schema->append_index(std::move(index)); } @@ -425,28 +429,33 @@ Status IndexBuilder::handle_single_rowset(RowsetMetaSharedPtr output_rowset_meta _olap_data_convertor->add_column_data_convertor(column); return_columns.emplace_back(column_idx); std::unique_ptr field(FieldFactory::create(column)); - const auto* index_meta = output_rowset_schema->inverted_index(column); - std::unique_ptr inverted_index_builder; - try { - RETURN_IF_ERROR(segment_v2::InvertedIndexColumnWriter::create( - field.get(), &inverted_index_builder, inverted_index_file_writer.get(), - index_meta)); - DBUG_EXECUTE_IF( - "IndexBuilder::handle_single_rowset_index_column_writer_create_error", { - _CLTHROWA(CL_ERR_IO, - "debug point: " - "handle_single_rowset_index_column_writer_create_error"); - }) - } catch (const std::exception& e) { - return Status::Error( - "CLuceneError occured: {}", e.what()); - } + auto index_metas = output_rowset_schema->inverted_indexs(column); + for (const auto& index_meta : index_metas) { + std::unique_ptr inverted_index_builder; + try { + RETURN_IF_ERROR(segment_v2::InvertedIndexColumnWriter::create( + field.get(), &inverted_index_builder, + inverted_index_file_writer.get(), index_meta)); + DBUG_EXECUTE_IF( + "IndexBuilder::handle_single_rowset_index_column_writer_create_" + "error", + { + _CLTHROWA(CL_ERR_IO, + "debug point: " + "handle_single_rowset_index_column_writer_create_" + "error"); + }) + } catch (const std::exception& e) { + return Status::Error( + "CLuceneError occured: {}", e.what()); + } - if (inverted_index_builder) { - auto writer_sign = std::make_pair(seg_ptr->id(), index_id); - _inverted_index_builders.insert( - std::make_pair(writer_sign, std::move(inverted_index_builder))); - inverted_index_writer_signs.emplace_back(writer_sign); + if (inverted_index_builder) { + auto writer_sign = std::make_pair(seg_ptr->id(), index_id); + _inverted_index_builders.insert( + std::make_pair(writer_sign, std::move(inverted_index_builder))); + inverted_index_writer_signs.emplace_back(writer_sign); + } } } diff --git a/be/src/vec/common/schema_util.cpp b/be/src/vec/common/schema_util.cpp index c2f1022c4a3191..2e7b6375ef8fbc 100644 --- a/be/src/vec/common/schema_util.cpp +++ b/be/src/vec/common/schema_util.cpp @@ -444,20 +444,20 @@ void inherit_column_attributes(const TabletColumn& source, TabletColumn& target, } // 2. inverted index - const auto* source_index_meta = (*target_schema)->inverted_index(source.unique_id()); - if (source_index_meta != nullptr) { - // add index meta + std::vector indexes_to_update; + auto source_indexes = target_schema->inverted_indexs(source.unique_id()); + for (const auto& source_index_meta : source_indexes) { TabletIndex index_info = *source_index_meta; index_info.set_escaped_escaped_index_suffix_path(target.path_info_ptr()->get_path()); - const auto* target_index_meta = - (*target_schema) - ->inverted_index(target.parent_unique_id(), - target.path_info_ptr()->get_path()); - if (target_index_meta != nullptr) { - // already exist - (*target_schema)->update_index(target, IndexType::INVERTED, std::move(index_info)); - } else { - (*target_schema)->append_index(std::move(index_info)); + indexes_to_update.emplace_back(std::move(index_info)); + } + auto target_indexes = target_schema->inverted_indexs(target.parent_unique_id(), + target.path_info_ptr()->get_path()); + if (!target_indexes.empty()) { + target_schema->update_index(target, IndexType::INVERTED, std::move(indexes_to_update)); + } else { + for (auto& index_info : indexes_to_update) { + target_schema->append_index(std::move(index_info)); } } @@ -636,10 +636,20 @@ bool has_schema_index_diff(const TabletSchema* new_schema, const TabletSchema* o return true; } - bool new_schema_has_inverted_index = new_schema->inverted_index(column_new); - bool old_schema_has_inverted_index = old_schema->inverted_index(column_old); + auto new_schema_inverted_indexs = new_schema->inverted_indexs(column_new); + auto old_schema_inverted_indexs = old_schema->inverted_indexs(column_old); + + if (new_schema_inverted_indexs.size() != old_schema_inverted_indexs.size()) { + return true; + } + + for (size_t i = 0; i < new_schema_inverted_indexs.size(); ++i) { + if (new_schema_inverted_indexs[i] != old_schema_inverted_indexs[i]) { + return true; + } + } - return new_schema_has_inverted_index != old_schema_has_inverted_index; + return false; } TabletColumn create_sparse_column(const TabletColumn& variant) { diff --git a/be/src/vec/functions/array/function_array_index.h b/be/src/vec/functions/array/function_array_index.h index 7f08bfdd4b4dda..23dda3bdc086ef 100644 --- a/be/src/vec/functions/array/function_array_index.h +++ b/be/src/vec/functions/array/function_array_index.h @@ -128,8 +128,7 @@ class FunctionArrayIndex : public IFunction { if (iter == nullptr) { return Status::OK(); } - if (iter->get_inverted_index_reader_type() == - segment_v2::InvertedIndexReaderType::FULLTEXT) { + if (iter->get_reader(segment_v2::InvertedIndexReaderType::FULLTEXT)) { // parser is not none we can not make sure the result is correct in expr combination // for example, filter: !array_index(array, 'tall:120cm, weight: 35kg') // here we have rows [tall:120cm, weight: 35kg, hobbies: reading book] which be tokenized @@ -158,7 +157,7 @@ class FunctionArrayIndex : public IFunction { RETURN_IF_ERROR(InvertedIndexQueryParamFactory::create_query_value(param_type, ¶m_value, query_param)); RETURN_IF_ERROR(iter->read_from_inverted_index( - data_type_with_name.first, query_param->get_value(), + data_type_with_name, query_param->get_value(), segment_v2::InvertedIndexQueryType::EQUAL_QUERY, num_rows, roaring)); // here debug for check array_contains function really filter rows by inverted index correctly DBUG_EXECUTE_IF("array_func.array_contains", { diff --git a/be/src/vec/functions/array/function_arrays_overlap.h b/be/src/vec/functions/array/function_arrays_overlap.h index 8ac21bcd710f8d..5c6604b204213f 100644 --- a/be/src/vec/functions/array/function_arrays_overlap.h +++ b/be/src/vec/functions/array/function_arrays_overlap.h @@ -145,8 +145,7 @@ class FunctionArraysOverlap : public IFunction { return Status::OK(); } auto data_type_with_name = data_type_with_names[0]; - if (iter->get_inverted_index_reader_type() == - segment_v2::InvertedIndexReaderType::FULLTEXT) { + if (iter->get_reader(segment_v2::InvertedIndexReaderType::FULLTEXT)) { return Status::Error( "Inverted index evaluate skipped, FULLTEXT reader can not support " "array_overlap"); @@ -193,7 +192,7 @@ class FunctionArraysOverlap : public IFunction { RETURN_IF_ERROR(InvertedIndexQueryParamFactory::create_query_value( nested_param_type, &nested_query_val, query_param)); RETURN_IF_ERROR(iter->read_from_inverted_index( - data_type_with_name.first, query_param->get_value(), + data_type_with_name, query_param->get_value(), segment_v2::InvertedIndexQueryType::EQUAL_QUERY, num_rows, single_res)); *roaring |= *single_res; } diff --git a/be/src/vec/functions/function_ip.h b/be/src/vec/functions/function_ip.h index 5fed82d6e10a44..38d17590527857 100644 --- a/be/src/vec/functions/function_ip.h +++ b/be/src/vec/functions/function_ip.h @@ -659,7 +659,7 @@ class FunctionIsIPAddressInRange : public IFunction { return Status::OK(); } - if (iter->get_inverted_index_reader_type() != segment_v2::InvertedIndexReaderType::BKD) { + if (iter->get_reader(segment_v2::InvertedIndexReaderType::BKD) == nullptr) { // Not support only bkd index return Status::Error( "Inverted index evaluate skipped, ip range reader can only support by bkd " @@ -717,13 +717,13 @@ class FunctionIsIPAddressInRange : public IFunction { RETURN_IF_ERROR(segment_v2::InvertedIndexQueryParamFactory::create_query_value( param_type, &min_ip, query_param)); RETURN_IF_ERROR(iter->read_from_inverted_index( - data_type_with_name.first, query_param->get_value(), + data_type_with_name, query_param->get_value(), segment_v2::InvertedIndexQueryType::GREATER_EQUAL_QUERY, num_rows, res_roaring)); // <= max ip RETURN_IF_ERROR(segment_v2::InvertedIndexQueryParamFactory::create_query_value( param_type, &max_ip, query_param)); RETURN_IF_ERROR(iter->read_from_inverted_index( - data_type_with_name.first, query_param->get_value(), + data_type_with_name, query_param->get_value(), segment_v2::InvertedIndexQueryType::LESS_EQUAL_QUERY, num_rows, max_roaring)); DBUG_EXECUTE_IF("ip.inverted_index_filtered", { diff --git a/be/src/vec/functions/function_multi_match.cpp b/be/src/vec/functions/function_multi_match.cpp index 8ab0cb2f2e542c..5e8ce268db6c3e 100644 --- a/be/src/vec/functions/function_multi_match.cpp +++ b/be/src/vec/functions/function_multi_match.cpp @@ -77,14 +77,19 @@ Status FunctionMultiMatch::evaluate_inverted_index( "arguments for multi_match must be string"); } // search - for (int i = 0; i < data_type_with_names.size(); i++) { - auto column_name = data_type_with_names[i].first; + for (size_t i = 0; i < data_type_with_names.size(); i++) { auto* iter = iterators[i]; + if (iter == nullptr) { + std::string error_msg = "Inverted index iterator is null for column '" + + data_type_with_names[i].first + + "' during multi_match execution"; + return Status::Error(error_msg); + } + auto single_result = std::make_shared(); - std::shared_ptr index = std::make_shared(); - RETURN_IF_ERROR(iter->read_from_inverted_index(column_name, &query_str, query_type, - num_rows, index)); - *roaring |= *index; + RETURN_IF_ERROR(iter->read_from_inverted_index(data_type_with_names[i], &query_str, + query_type, num_rows, single_result)); + *roaring |= *single_result; } segment_v2::InvertedIndexResultBitmap result(roaring, null_bitmap); bitmap_result = result; diff --git a/be/src/vec/functions/functions_comparison.h b/be/src/vec/functions/functions_comparison.h index 2da767fa7ef909..03ce1272057cc6 100644 --- a/be/src/vec/functions/functions_comparison.h +++ b/be/src/vec/functions/functions_comparison.h @@ -543,8 +543,7 @@ class FunctionComparison : public IFunction { if (iter == nullptr) { return Status::OK(); } - if (iter->get_inverted_index_reader_type() == - segment_v2::InvertedIndexReaderType::FULLTEXT) { + if (iter->get_reader(segment_v2::InvertedIndexReaderType::FULLTEXT)) { //NOT support comparison predicate when parser is FULLTEXT for expr inverted index evaluate. return Status::OK(); } @@ -565,12 +564,10 @@ class FunctionComparison : public IFunction { } if (segment_v2::is_range_query(query_type) && - iter->get_inverted_index_reader_type() == - segment_v2::InvertedIndexReaderType::STRING_TYPE) { + iter->get_reader(segment_v2::InvertedIndexReaderType::STRING_TYPE)) { // untokenized strings exceed ignore_above, they are written as null, causing range query errors return Status::OK(); } - std::string column_name = data_type_with_name.first; Field param_value; arguments[0].column->get(0, param_value); auto param_type = arguments[0].type->get_type_as_type_descriptor().type; @@ -580,8 +577,8 @@ class FunctionComparison : public IFunction { std::shared_ptr roaring = std::make_shared(); RETURN_IF_ERROR(segment_v2::InvertedIndexQueryParamFactory::create_query_value( param_type, ¶m_value, query_param)); - RETURN_IF_ERROR(iter->read_from_inverted_index(column_name, query_param->get_value(), - query_type, num_rows, roaring)); + RETURN_IF_ERROR(iter->read_from_inverted_index( + data_type_with_name, query_param->get_value(), query_type, num_rows, roaring)); std::shared_ptr null_bitmap = std::make_shared(); if (iter->has_null()) { segment_v2::InvertedIndexQueryCacheHandle null_bitmap_cache_handle; diff --git a/be/src/vec/functions/in.h b/be/src/vec/functions/in.h index 6f697ba7441df5..4875214d948b6c 100644 --- a/be/src/vec/functions/in.h +++ b/be/src/vec/functions/in.h @@ -150,8 +150,7 @@ class FunctionIn : public IFunction { if (iter == nullptr) { return Status::OK(); } - if (iter->get_inverted_index_reader_type() == - segment_v2::InvertedIndexReaderType::FULLTEXT) { + if (iter->get_reader(segment_v2::InvertedIndexReaderType::FULLTEXT)) { //NOT support in list when parser is FULLTEXT for expr inverted index evaluate. return Status::OK(); } @@ -160,7 +159,6 @@ class FunctionIn : public IFunction { RETURN_IF_ERROR(iter->read_null_bitmap(&null_bitmap_cache_handle)); null_bitmap = null_bitmap_cache_handle.get_bitmap(); } - std::string column_name = data_type_with_name.first; for (const auto& arg : arguments) { Field param_value; arg.column->get(0, param_value); @@ -178,8 +176,8 @@ class FunctionIn : public IFunction { param_type, ¶m_value, query_param)); InvertedIndexQueryType query_type = InvertedIndexQueryType::EQUAL_QUERY; std::shared_ptr index = std::make_shared(); - RETURN_IF_ERROR(iter->read_from_inverted_index(column_name, query_param->get_value(), - query_type, num_rows, index)); + RETURN_IF_ERROR(iter->read_from_inverted_index( + data_type_with_name, query_param->get_value(), query_type, num_rows, index)); *roaring |= *index; } segment_v2::InvertedIndexResultBitmap result(roaring, null_bitmap); diff --git a/be/src/vec/functions/match.cpp b/be/src/vec/functions/match.cpp index 8ba4f2f8ebb9cd..cc6e33716f90c8 100644 --- a/be/src/vec/functions/match.cpp +++ b/be/src/vec/functions/match.cpp @@ -42,8 +42,9 @@ Status FunctionMatchBase::evaluate_inverted_index( if (function_name == MATCH_PHRASE_FUNCTION || function_name == MATCH_PHRASE_PREFIX_FUNCTION || function_name == MATCH_PHRASE_EDGE_FUNCTION) { - if (iter->get_inverted_index_reader_type() == InvertedIndexReaderType::FULLTEXT && - get_parser_phrase_support_string_from_properties(iter->get_index_properties()) == + auto reader = iter->get_reader(InvertedIndexReaderType::FULLTEXT); + if (reader && + get_parser_phrase_support_string_from_properties(reader->get_index_properties()) == INVERTED_INDEX_PARSER_PHRASE_SUPPORT_NO) { return Status::Error( "phrase queries require setting support_phrase = true"); @@ -67,7 +68,7 @@ Status FunctionMatchBase::evaluate_inverted_index( if (is_string_type(param_type)) { auto inverted_index_query_type = get_query_type_from_fn_name(); RETURN_IF_ERROR( - iter->read_from_inverted_index(data_type_with_name.first, query_param->get_value(), + iter->read_from_inverted_index(data_type_with_name, query_param->get_value(), inverted_index_query_type, num_rows, roaring)); } else { return Status::Error( diff --git a/be/test/common/schema_util_test.cpp b/be/test/common/schema_util_test.cpp new file mode 100644 index 00000000000000..61b6eb97a3164d --- /dev/null +++ b/be/test/common/schema_util_test.cpp @@ -0,0 +1,121 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include "vec/common/schema_util.h" + +#include + +namespace doris { + +class SchemaUtilTest : public testing::Test {}; + +void construct_column(ColumnPB* column_pb, TabletIndexPB* tablet_index, int64_t index_id, + const std::string& index_name, int32_t col_unique_id, + const std::string& column_type, const std::string& column_name, + const IndexType& index_type) { + column_pb->set_unique_id(col_unique_id); + column_pb->set_name(column_name); + column_pb->set_type(column_type); + column_pb->set_is_nullable(true); + column_pb->set_is_bf_column(true); + tablet_index->set_index_id(index_id); + tablet_index->set_index_name(index_name); + tablet_index->set_index_type(index_type); + tablet_index->add_col_unique_id(col_unique_id); +} + +void construct_subcolumn(TabletSchemaSPtr schema, const FieldType& type, int32_t col_unique_id, + std::string_view path, std::vector* subcolumns) { + TabletColumn subcol; + subcol.set_type(type); + subcol.set_is_nullable(true); + subcol.set_unique_id(-1); + subcol.set_parent_unique_id(col_unique_id); + vectorized::PathInData col_path(path); + subcol.set_path_info(col_path); + subcol.set_name(col_path.get_path()); + + if (type == FieldType::OLAP_FIELD_TYPE_ARRAY) { + TabletColumn array_item_col; + // double not support inverted index + array_item_col.set_type(FieldType::OLAP_FIELD_TYPE_DOUBLE); + array_item_col.set_is_nullable(true); + array_item_col.set_unique_id(-1); + array_item_col.set_parent_unique_id(col_unique_id); + + subcol.add_sub_column(array_item_col); + } + + schema->append_column(subcol); + subcolumns->emplace_back(std::move(subcol)); +} + +TEST_F(SchemaUtilTest, inherit_column_attributes) { + TabletSchemaPB schema_pb; + schema_pb.set_keys_type(KeysType::DUP_KEYS); + schema_pb.set_inverted_index_storage_format(InvertedIndexStorageFormatPB::V2); + + construct_column(schema_pb.add_column(), schema_pb.add_index(), 10000, "key_index", 0, "INT", + "key", IndexType::INVERTED); + construct_column(schema_pb.add_column(), schema_pb.add_index(), 10001, "v1_index", 1, "VARIANT", + "v1", IndexType::INVERTED); + construct_column(schema_pb.add_column(), schema_pb.add_index(), 10003, "v3_index", 3, "VARIANT", + "v3", IndexType::INVERTED); + + TabletSchemaSPtr tablet_schema = std::make_shared(); + tablet_schema->init_from_pb(schema_pb); + std::vector subcolumns; + + construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_STRING, 1, "v1.b", &subcolumns); + construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_INT, 1, "v1.c", &subcolumns); + + construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_ARRAY, 3, "v3.d", &subcolumns); + construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_FLOAT, 3, "v3.a", &subcolumns); + + vectorized::schema_util::inherit_column_attributes(tablet_schema); + for (const auto& col : subcolumns) { + switch (col._parent_col_unique_id) { + case 1: + EXPECT_TRUE(!tablet_schema->inverted_indexs(col).empty()); + break; + case 3: + EXPECT_TRUE(tablet_schema->inverted_indexs(col).empty()); + break; + default: + EXPECT_TRUE(false); + } + } + EXPECT_EQ(tablet_schema->inverted_indexes().size(), 7); + + for (const auto& col : tablet_schema->_cols) { + if (!col->is_extracted_column()) { + continue; + } + switch (col->_parent_col_unique_id) { + case 1: + EXPECT_TRUE(col->is_bf_column()); + break; + case 3: + EXPECT_TRUE(!col->is_bf_column()); + break; + default: + EXPECT_TRUE(false); + } + } +} + +} // namespace doris diff --git a/be/test/olap/rowset/segment_v2/inverted_index/compaction/index_compaction_test.cpp b/be/test/olap/rowset/segment_v2/inverted_index/compaction/index_compaction_test.cpp index 33b35e4ef440fe..a21afd7415eaba 100644 --- a/be/test/olap/rowset/segment_v2/inverted_index/compaction/index_compaction_test.cpp +++ b/be/test/olap/rowset/segment_v2/inverted_index/compaction/index_compaction_test.cpp @@ -113,6 +113,35 @@ class IndexCompactionTest : public ::testing::Test { EXPECT_TRUE(_tablet->init().ok()); } + void _build_multi_index_tablet() { + // tablet_schema + TabletSchemaPB schema_pb; + schema_pb.set_keys_type(KeysType::DUP_KEYS); + schema_pb.set_inverted_index_storage_format(InvertedIndexStorageFormatPB::V2); + + IndexCompactionUtils::construct_column(schema_pb.add_column(), schema_pb.add_index(), 10000, + "key_index", 0, "INT", "key"); + IndexCompactionUtils::construct_column(schema_pb.add_column(), schema_pb.add_index(), 10001, + "v1_index", 1, "STRING", "v1"); + + IndexCompactionUtils::construct_column(schema_pb.add_column(), 2, "STRING", "v2"); + IndexCompactionUtils::construct_index(schema_pb.add_index(), 10002, "v2_keyword_index", 2, + true); + IndexCompactionUtils::construct_index(schema_pb.add_index(), 10003, "v2_text_index", 2, + false); + + IndexCompactionUtils::construct_column(schema_pb.add_column(), schema_pb.add_index(), 10004, + "v3_index", 3, "INT", "v3"); + _tablet_schema = std::make_shared(); + _tablet_schema->init_from_pb(schema_pb); + + // tablet + TabletMetaSharedPtr tablet_meta(new TabletMeta(_tablet_schema)); + + _tablet = std::make_shared(*_engine_ref, tablet_meta, _data_dir.get()); + EXPECT_TRUE(_tablet->init().ok()); + } + void _build_wiki_tablet(const KeysType& keys_type, const InvertedIndexStorageFormatPB& storage_format) { // tablet_schema @@ -876,6 +905,7 @@ TEST_F(IndexCompactionTest, test_col_unique_ids_empty) { testing::HasSubstr("No index with id 10001 found")); } +// Now it will support a column with 2 inverted indices TEST_F(IndexCompactionTest, test_tablet_index_id_not_equal) { _build_tablet(); // replace unique id from 2 to 1 in tablet index 10002 and rebuild tablet_schema @@ -896,7 +926,7 @@ TEST_F(IndexCompactionTest, test_tablet_index_id_not_equal) { data_files.push_back(data_file2); std::vector rowsets(data_files.size()); - auto custom_check_build_rowsets = [](const int32_t& size) { EXPECT_EQ(size, 3); }; + auto custom_check_build_rowsets = [](const int32_t& size) { EXPECT_EQ(size, 4); }; IndexCompactionUtils::build_rowsets( _data_dir, _tablet_schema, _tablet, _engine_ref, rowsets, data_files, _inc_id, custom_check_build_rowsets); @@ -923,9 +953,7 @@ TEST_F(IndexCompactionTest, test_tablet_index_id_not_equal) { // check index file // index 10002 cannot be found in idx file auto dir_idx_compaction = inverted_index_file_reader_index->_open(10002, ""); - EXPECT_TRUE(!dir_idx_compaction.has_value()) << dir_idx_compaction.error(); - EXPECT_THAT(dir_idx_compaction.error().to_string(), - testing::HasSubstr("No index with id 10002 found")); + EXPECT_TRUE(dir_idx_compaction.has_value()); } TEST_F(IndexCompactionTest, test_tablet_schema_tablet_index_is_null) { @@ -1590,4 +1618,50 @@ TEST_F(IndexCompactionTest, tes_wikipedia_mow_v2_multiple_src_lucene_segments) { _build_wiki_tablet(KeysType::UNIQUE_KEYS, InvertedIndexStorageFormatPB::V2); _run_normal_wiki_test(); } + +TEST_F(IndexCompactionTest, test_tablet_multi_index) { + _build_multi_index_tablet(); + + EXPECT_TRUE(io::global_local_filesystem()->delete_directory(_tablet->tablet_path()).ok()); + EXPECT_TRUE(io::global_local_filesystem()->create_directory(_tablet->tablet_path()).ok()); + std::string data_file1 = + _current_dir + "/be/test/olap/rowset/segment_v2/inverted_index/data/data1.csv"; + std::string data_file2 = + _current_dir + "/be/test/olap/rowset/segment_v2/inverted_index/data/data2.csv"; + std::vector data_files; + data_files.push_back(data_file1); + data_files.push_back(data_file2); + + std::vector rowsets(data_files.size()); + auto custom_check_build_rowsets = [](const int32_t& size) { EXPECT_EQ(size, 5); }; + IndexCompactionUtils::build_rowsets( + _data_dir, _tablet_schema, _tablet, _engine_ref, rowsets, data_files, _inc_id, + custom_check_build_rowsets); + + auto custom_check_index = [](const BaseCompaction& compaction, const RowsetWriterContext& ctx) { + EXPECT_EQ(compaction._cur_tablet_schema->inverted_indexes().size(), 5); + EXPECT_TRUE(ctx.columns_to_do_index_compaction.size() == 2); + EXPECT_TRUE(ctx.columns_to_do_index_compaction.contains(1)); + EXPECT_TRUE(ctx.columns_to_do_index_compaction.contains(2)); + EXPECT_TRUE(compaction._output_rowset->num_segments() == 1); + }; + + RowsetSharedPtr output_rowset_index; + auto st = IndexCompactionUtils::do_compaction(rowsets, _engine_ref, _tablet, true, + output_rowset_index, custom_check_index); + EXPECT_TRUE(st.ok()) << st.to_string(); + + const auto& seg_path = output_rowset_index->segment_path(0); + EXPECT_TRUE(seg_path.has_value()) << seg_path.error(); + auto inverted_index_file_reader_index = IndexCompactionUtils::init_index_file_reader( + output_rowset_index, seg_path.value(), + _tablet_schema->get_inverted_index_storage_format()); + + auto dir_idx_compaction_2 = inverted_index_file_reader_index->_open(10002, ""); + EXPECT_TRUE(dir_idx_compaction_2.has_value()); + + auto dir_idx_compaction_3 = inverted_index_file_reader_index->_open(10003, ""); + EXPECT_TRUE(dir_idx_compaction_3.has_value()); +} + } // namespace doris diff --git a/be/test/olap/rowset/segment_v2/inverted_index/compaction/util/index_compaction_utils.cpp b/be/test/olap/rowset/segment_v2/inverted_index/compaction/util/index_compaction_utils.cpp index 4f4a601e63cc4f..bf1b3a35e295c0 100644 --- a/be/test/olap/rowset/segment_v2/inverted_index/compaction/util/index_compaction_utils.cpp +++ b/be/test/olap/rowset/segment_v2/inverted_index/compaction/util/index_compaction_utils.cpp @@ -574,7 +574,9 @@ class IndexCompactionUtils { for (const auto& [col_uid, query_data] : query_map) { const auto& column = tablet_schema->column_by_uid(col_uid); - const auto* index = tablet_schema->inverted_index(column); + auto indexs = tablet_schema->inverted_indexs(column); + EXPECT_EQ(indexs.size(), 1); + const auto* index = indexs[0]; EXPECT_TRUE(index != nullptr); if (col_uid == 0 || col_uid == 3) { diff --git a/be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp b/be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp new file mode 100644 index 00000000000000..c665395ec7056f --- /dev/null +++ b/be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp @@ -0,0 +1,1990 @@ +// be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include "olap/rowset/segment_v2/inverted_index_reader.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "olap/field.h" +#include "olap/rowset/segment_v2/inverted_index_desc.h" +#include "olap/rowset/segment_v2/inverted_index_file_reader.h" +#include "olap/rowset/segment_v2/inverted_index_file_writer.h" +#include "olap/rowset/segment_v2/inverted_index_writer.h" +#include "olap/tablet_schema.h" +#include "olap/tablet_schema_helper.h" +#include "runtime/runtime_state.h" +#include "util/slice.h" +#include "vec/data_types/data_type_number.h" +#include "vec/data_types/data_type_string.h" + +namespace doris::segment_v2 { + +class InvertedIndexReaderTest : public testing::Test { +public: + const std::string kTestDir = "./ut_dir/inverted_index_reader_test"; + + void SetUp() override { + auto st = io::global_local_filesystem()->delete_directory(kTestDir); + ASSERT_TRUE(st.ok()) << st; + st = io::global_local_filesystem()->create_directory(kTestDir); + ASSERT_TRUE(st.ok()) << st; + std::vector paths; + paths.emplace_back(kTestDir, 1024); + auto tmp_file_dirs = std::make_unique(paths); + st = tmp_file_dirs->init(); + if (!st.ok()) { + std::cout << "init tmp file dirs error:" << st.to_string() << std::endl; + return; + } + ExecEnv::GetInstance()->set_tmp_file_dir(std::move(tmp_file_dirs)); + + // Initialize cache + int64_t inverted_index_cache_limit = 1024 * 1024 * 1024; + _inverted_index_searcher_cache = std::unique_ptr( + InvertedIndexSearcherCache::create_global_instance(inverted_index_cache_limit, 1)); + _inverted_index_query_cache = std::unique_ptr( + InvertedIndexQueryCache::create_global_cache(inverted_index_cache_limit, 1)); + + ExecEnv::GetInstance()->set_inverted_index_searcher_cache( + _inverted_index_searcher_cache.get()); + ExecEnv::GetInstance()->_inverted_index_query_cache = _inverted_index_query_cache.get(); + } + + void TearDown() override { + ASSERT_TRUE(io::global_local_filesystem()->delete_directory(kTestDir).ok()); + } + + // Create table schema + TabletSchemaSPtr create_schema(KeysType keys_type = DUP_KEYS) { + TabletSchemaSPtr tablet_schema = std::make_shared(); + TabletSchemaPB tablet_schema_pb; + tablet_schema_pb.set_keys_type(keys_type); + + tablet_schema->init_from_pb(tablet_schema_pb); + + // Add INT type key column + TabletColumn column_1; + column_1.set_name("c1"); + column_1.set_unique_id(0); + column_1.set_type(FieldType::OLAP_FIELD_TYPE_INT); + column_1.set_length(4); + column_1.set_index_length(4); + column_1.set_is_key(true); + column_1.set_is_nullable(true); + tablet_schema->append_column(column_1); + + // Add VARCHAR type value column + TabletColumn column_2; + column_2.set_name("c2"); + column_2.set_unique_id(1); + column_2.set_type(FieldType::OLAP_FIELD_TYPE_VARCHAR); + column_2.set_length(65535); + column_2.set_is_key(false); + column_2.set_is_nullable(false); + tablet_schema->append_column(column_2); + + return tablet_schema; + } + + std::string local_segment_path(std::string base, std::string_view rowset_id, int64_t seg_id) { + return fmt::format("{}/{}_{}.dat", base, rowset_id, seg_id); + } + + // Create string inverted index and write data + void prepare_string_index( + std::string_view rowset_id, int seg_id, std::vector& values, + TabletIndex* idx_meta, std::string* index_path_prefix, + InvertedIndexStorageFormatPB format = InvertedIndexStorageFormatPB::V2) { + auto tablet_schema = create_schema(); + + *index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix( + local_segment_path(kTestDir, rowset_id, seg_id)); + std::string index_path = + InvertedIndexDescriptor::get_index_file_path_v2(*index_path_prefix); + + io::FileWriterPtr file_writer; + io::FileWriterOptions opts; + auto fs = io::global_local_filesystem(); + Status sts = fs->create_file(index_path, &file_writer, &opts); + ASSERT_TRUE(sts.ok()) << sts; + auto index_file_writer = std::make_unique( + fs, *index_path_prefix, std::string {rowset_id}, seg_id, format, + std::move(file_writer)); + + // Get c2 column Field + const TabletColumn& column = tablet_schema->column(1); + ASSERT_NE(&column, nullptr); + std::unique_ptr field(FieldFactory::create(column)); + ASSERT_NE(field.get(), nullptr); + + // Create column writer + std::unique_ptr column_writer; + auto status = InvertedIndexColumnWriter::create(field.get(), &column_writer, + index_file_writer.get(), idx_meta); + EXPECT_TRUE(status.ok()) << status; + + // Write string values + status = column_writer->add_values("c2", values.data(), values.size()); + EXPECT_TRUE(status.ok()) << status; + + // Finish and close + status = column_writer->finish(); + EXPECT_TRUE(status.ok()) << status; + status = index_file_writer->close(); + EXPECT_TRUE(status.ok()) << status; + } + + // Create inverted index with NULL values + void prepare_null_index(std::string_view rowset_id, int seg_id, TabletIndex* idx_meta, + std::string* index_path_prefix) { + auto tablet_schema = create_schema(); + + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + + idx_meta->init_from_pb(*index_meta_pb.get()); + + *index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix( + local_segment_path(kTestDir, rowset_id, seg_id)); + std::string index_path = + InvertedIndexDescriptor::get_index_file_path_v2(*index_path_prefix); + + io::FileWriterPtr file_writer; + io::FileWriterOptions opts; + auto fs = io::global_local_filesystem(); + Status sts = fs->create_file(index_path, &file_writer, &opts); + ASSERT_TRUE(sts.ok()) << sts; + auto index_file_writer = std::make_unique( + fs, *index_path_prefix, std::string {rowset_id}, seg_id, + InvertedIndexStorageFormatPB::V2, std::move(file_writer)); + + // Get c2 column Field + const TabletColumn& column = tablet_schema->column(1); + ASSERT_NE(&column, nullptr); + std::unique_ptr field(FieldFactory::create(column)); + ASSERT_NE(field.get(), nullptr); + + // Create column writer + std::unique_ptr column_writer; + auto status = InvertedIndexColumnWriter::create(field.get(), &column_writer, + index_file_writer.get(), idx_meta); + EXPECT_TRUE(status.ok()) << status; + + // Add NULL values + status = column_writer->add_nulls(3); + EXPECT_TRUE(status.ok()) << status; + + // Add some regular values + std::vector values = {Slice("apple"), Slice("banana")}; + status = column_writer->add_values("c2", values.data(), values.size()); + EXPECT_TRUE(status.ok()) << status; + + // Add more NULL values + status = column_writer->add_nulls(2); + EXPECT_TRUE(status.ok()) << status; + + // Finish and close + status = column_writer->finish(); + EXPECT_TRUE(status.ok()) << status; + + status = index_file_writer->close(); + EXPECT_TRUE(status.ok()) << status; + } + + // Create BKD index + void prepare_bkd_index(std::string_view rowset_id, int seg_id, std::vector& values, + TabletIndex* idx_meta, std::string* index_path_prefix) { + auto tablet_schema = create_schema(); + + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(0); // c1 column ID + + // Set BKD index properties + auto* properties = index_meta_pb->mutable_properties(); + (*properties)["type"] = "bkd"; + + idx_meta->init_from_pb(*index_meta_pb.get()); + + *index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix( + local_segment_path(kTestDir, rowset_id, seg_id)); + std::string index_path = + InvertedIndexDescriptor::get_index_file_path_v2(*index_path_prefix); + + io::FileWriterPtr file_writer; + io::FileWriterOptions opts; + auto fs = io::global_local_filesystem(); + Status sts = fs->create_file(index_path, &file_writer, &opts); + ASSERT_TRUE(sts.ok()) << sts; + auto index_file_writer = std::make_unique( + fs, *index_path_prefix, std::string {rowset_id}, seg_id, + InvertedIndexStorageFormatPB::V2, std::move(file_writer)); + + // Get c1 column Field + const TabletColumn& column = tablet_schema->column(0); + ASSERT_NE(&column, nullptr); + std::unique_ptr field(FieldFactory::create(column)); + ASSERT_NE(field.get(), nullptr); + + // Create column writer + std::unique_ptr column_writer; + auto status = InvertedIndexColumnWriter::create(field.get(), &column_writer, + index_file_writer.get(), idx_meta); + EXPECT_TRUE(status.ok()) << status; + + // Add integer values + status = column_writer->add_values("c1", values.data(), values.size()); + EXPECT_TRUE(status.ok()) << status; + + // Finish and close + status = column_writer->finish(); + EXPECT_TRUE(status.ok()) << status; + + status = index_file_writer->close(); + EXPECT_TRUE(status.ok()) << status; + } + + // Test string inverted index reading + void test_string_index_read() { + std::string_view rowset_id = "test_read_rowset_1"; + int seg_id = 0; + + // Prepare data + std::vector values = {Slice("apple"), Slice("banana"), Slice("cherry"), + Slice("apple"), // Duplicate value to test frequency + Slice("date")}; + + TabletIndex idx_meta; + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + idx_meta.init_from_pb(*index_meta_pb.get()); + std::string index_path_prefix; + prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, + InvertedIndexStorageFormatPB::V2); + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_searcher_cache = false; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + // Test query + io::IOContext io_ctx; + std::string field_name = "1"; // c2 column unique_id + + // Test EQUAL query + std::shared_ptr bitmap = std::make_shared(); + StringRef str_ref(values[0].data, values[0].size); // "apple" + + auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::EQUAL_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 2) << "Should find 2 documents matching 'apple'"; + EXPECT_TRUE(bitmap->contains(0)) << "Document 0 should match 'apple'"; + EXPECT_TRUE(bitmap->contains(3)) << "Document 3 should match 'apple'"; + + // Test non-existent value + bitmap = std::make_shared(); + std::string not_exist = "orange"; + StringRef not_exist_ref(not_exist.c_str(), not_exist.length()); + + query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, ¬_exist_ref, + InvertedIndexQueryType::EQUAL_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 0) << "Should not find any document matching 'orange'"; + } + + // Test NULL value handling + void test_null_bitmap_read() { + std::string_view rowset_id = "test_read_rowset_2"; + int seg_id = 0; + + TabletIndex idx_meta; + std::string index_path_prefix; + prepare_null_index(rowset_id, seg_id, &idx_meta, &index_path_prefix); + + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + io::IOContext io_ctx; + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + // Read NULL bitmap + InvertedIndexQueryCacheHandle cache_handle; + status = str_reader->read_null_bitmap(&io_ctx, &stats, &cache_handle, nullptr); + EXPECT_TRUE(status.ok()) << status; + + // Get NULL bitmap + std::shared_ptr null_bitmap = cache_handle.get_bitmap(); + EXPECT_NE(null_bitmap, nullptr); + + // Verify expected values in NULL bitmap + EXPECT_EQ(null_bitmap->cardinality(), 5) << "Should have 5 NULL documents"; + std::vector expected_nulls = {0, 1, 2, 5, 6}; + for (int doc_id : expected_nulls) { + EXPECT_TRUE(null_bitmap->contains(doc_id)) + << "Document " << doc_id << " should be NULL"; + } + } + + // Test BKD index query + void test_bkd_index_read() { + std::string_view rowset_id = "test_read_rowset_3"; + int seg_id = 0; + + // Prepare data + std::vector values = {42, 100, 42, 200, 300}; + + TabletIndex idx_meta; + std::string index_path_prefix; + prepare_bkd_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix); + + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_searcher_cache = false; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto bkd_reader = BkdIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(bkd_reader, nullptr); + + io::IOContext io_ctx; + std::string field_name = "0"; // c1 column unique_id + + // Test EQUAL query + int32_t query_value = 42; + std::shared_ptr bitmap = std::make_shared(); + + auto query_status = + bkd_reader->query(&io_ctx, &stats, &runtime_state, field_name, &query_value, + InvertedIndexQueryType::EQUAL_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 2) << "Should find 2 documents matching value 42"; + EXPECT_TRUE(bitmap->contains(0)) << "Document 0 should match value 42"; + EXPECT_TRUE(bitmap->contains(2)) << "Document 2 should match value 42"; + + // Test LESS_THAN query + bitmap = std::make_shared(); + int32_t less_than_value = 100; + + query_status = + bkd_reader->query(&io_ctx, &stats, &runtime_state, field_name, &less_than_value, + InvertedIndexQueryType::LESS_THAN_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 2) << "Should find 2 documents with values less than 100"; + EXPECT_TRUE(bitmap->contains(0)) << "Document 0 should have value less than 100"; + EXPECT_TRUE(bitmap->contains(2)) << "Document 2 should have value less than 100"; + + // Test GREATER_THAN query + bitmap = std::make_shared(); + int32_t greater_than_value = 100; + + query_status = + bkd_reader->query(&io_ctx, &stats, &runtime_state, field_name, &greater_than_value, + InvertedIndexQueryType::GREATER_THAN_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 2) + << "Should find 2 documents with values greater than 100"; + EXPECT_TRUE(bitmap->contains(3)) << "Document 3 should have value greater than 100"; + EXPECT_TRUE(bitmap->contains(4)) << "Document 4 should have value greater than 100"; + } + + // Test query cache + void test_query_cache() { + std::string_view rowset_id = "test_read_rowset_4"; + int seg_id = 0; + + // Prepare data + std::vector values = {Slice("apple"), Slice("banana"), Slice("cherry")}; + + TabletIndex idx_meta; + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + idx_meta.init_from_pb(*index_meta_pb.get()); + std::string index_path_prefix; + prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix); + + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_query_cache = true; + query_options.enable_inverted_index_searcher_cache = true; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + io::IOContext io_ctx; + std::string field_name = "1"; // c2 column unique_id + + // First query, should be cache miss + std::shared_ptr bitmap1 = std::make_shared(); + StringRef str_ref(values[0].data, values[0].size); // "apple" + + auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::EQUAL_QUERY, bitmap1); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(stats.inverted_index_query_cache_miss, 1) << "First query should be cache miss"; + EXPECT_EQ(bitmap1->cardinality(), 1) << "Should find 1 document matching 'apple'"; + + // Second query with same value, should be cache hit + std::shared_ptr bitmap2 = std::make_shared(); + + query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::EQUAL_QUERY, bitmap2); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(stats.inverted_index_query_cache_hit, 1) << "Second query should be cache hit"; + EXPECT_EQ(bitmap2->cardinality(), 1) << "Should find 1 document matching 'apple'"; + } + + // Test searcher cache + void test_searcher_cache() { + std::string_view rowset_id = "test_read_rowset_5"; + int seg_id = 0; + + // Prepare data + std::vector values = {Slice("apple"), Slice("banana"), Slice("cherry")}; + + TabletIndex idx_meta; + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + idx_meta.init_from_pb(*index_meta_pb.get()); + std::string index_path_prefix; + prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, + InvertedIndexStorageFormatPB::V2); + + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_query_cache = false; + query_options.enable_inverted_index_searcher_cache = true; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + io::IOContext io_ctx; + std::string field_name = "1"; // c2 column unique_id + + // First query, should be searcher cache miss + std::shared_ptr bitmap1 = std::make_shared(); + StringRef str_ref(values[0].data, values[0].size); // "apple" + + auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::EQUAL_QUERY, bitmap1); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(stats.inverted_index_searcher_cache_miss, 1) + << "First query should be searcher cache miss"; + + // Query with different value, should be searcher cache hit + std::shared_ptr bitmap2 = std::make_shared(); + StringRef str_ref2(values[1].data, values[1].size); // "banana" + + query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref2, + InvertedIndexQueryType::EQUAL_QUERY, bitmap2); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(stats.inverted_index_searcher_cache_hit, 1) + << "Second query should be searcher cache hit"; + } + + // Test string index with large document set (>512 docs) + void test_string_index_large_docset() { + std::string_view rowset_id = "test_read_rowset_6"; + int seg_id = 0; + + // Prepare data with 1000 documents + std::vector values; + values.reserve(1000); + + // Add 600 documents with term "common" + for (int i = 0; i < 600; i++) { + values.emplace_back("common"); + } + + // Add 200 documents with term "apple" + for (int i = 0; i < 200; i++) { + values.emplace_back("apple"); + } + + // Add 200 documents with term "banana" + for (int i = 0; i < 200; i++) { + values.emplace_back("banana"); + } + + TabletIndex idx_meta; + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + index_meta_pb->mutable_properties()->insert({"parser", "english"}); + index_meta_pb->mutable_properties()->insert({"lower_case", "true"}); + index_meta_pb->mutable_properties()->insert({"support_phrase", "true"}); + idx_meta.init_from_pb(*index_meta_pb.get()); + std::string index_path_prefix; + prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, + InvertedIndexStorageFormatPB::V2); + + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_searcher_cache = false; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = FullTextIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + io::IOContext io_ctx; + std::string field_name = "1"; // c2 column unique_id + + // Test query for "common_term" which has >512 documents + std::shared_ptr bitmap = std::make_shared(); + std::string query_term = "common"; + StringRef str_ref(query_term.c_str(), query_term.length()); + + auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 600) << "Should find 600 documents matching 'common'"; + + // Verify first and last document IDs + EXPECT_TRUE(bitmap->contains(0)) << "First document should match 'common'"; + EXPECT_TRUE(bitmap->contains(599)) << "Last document should match 'common'"; + + // Test query for "apple" + bitmap = std::make_shared(); + query_term = "apple"; + StringRef str_ref_a(query_term.c_str(), query_term.length()); + + query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_a, + InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 200) << "Should find 200 documents matching 'apple'"; + EXPECT_TRUE(bitmap->contains(600)) << "First document of apple should be at position 600"; + EXPECT_TRUE(bitmap->contains(799)) << "Last document of apple should be at position 799"; + } + + // Test string index with large document set using V3 format + void test_string_index_large_docset_v3() { + std::string_view rowset_id = "test_read_rowset_6_v3"; + int seg_id = 0; + + // Prepare data with 1000 documents + std::vector values; + values.reserve(1000); + + // Add 600 documents with term "common_term" + for (int i = 0; i < 600; i++) { + values.emplace_back("common_term"); + } + + // Add 200 documents with term "term_a" + for (int i = 0; i < 200; i++) { + values.emplace_back("term_a"); + } + + // Add 200 documents with term "term_b" + for (int i = 0; i < 200; i++) { + values.emplace_back("term_b"); + } + + { + TabletIndex idx_meta; + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + index_meta_pb->mutable_properties()->insert({"parser", "english"}); + index_meta_pb->mutable_properties()->insert({"lower_case", "true"}); + index_meta_pb->mutable_properties()->insert({"support_phrase", "true"}); + idx_meta.init_from_pb(*index_meta_pb.get()); + std::string index_path_prefix; + prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, + InvertedIndexStorageFormatPB::V3); + + // Create V3 format reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_searcher_cache = false; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, + InvertedIndexStorageFormatPB::V3); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = FullTextIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + io::IOContext io_ctx; + std::string field_name = "1"; // c2 column unique_id + + // Test query for "common_term" which has >512 documents with V3 format + std::shared_ptr bitmap = std::make_shared(); + std::string query_term = "common_term"; + StringRef str_ref(query_term.c_str(), query_term.length()); + + auto query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 600) + << "V3: Should find 600 documents matching 'common_term'"; + + // Verify first and last document IDs + EXPECT_TRUE(bitmap->contains(0)) << "V3: First document should match 'common_term'"; + EXPECT_TRUE(bitmap->contains(599)) << "V3: Last document should match 'common_term'"; + + // Test query for "term_a" with V3 format + bitmap = std::make_shared(); + query_term = "term_a"; + StringRef str_ref_a(query_term.c_str(), query_term.length()); + + query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_a, + InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 200) + << "V3: Should find 200 documents matching 'term_a'"; + EXPECT_TRUE(bitmap->contains(600)) + << "V3: First document of term_a should be at position 600"; + EXPECT_TRUE(bitmap->contains(799)) + << "V3: Last document of term_a should be at position 799"; + + // Test query for "noexist" with V3 format + bitmap = std::make_shared(); + query_term = "noexist"; + StringRef str_ref_no_term(query_term.c_str(), query_term.length()); + + query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_no_term, + InvertedIndexQueryType::MATCH_ANY_QUERY, bitmap); + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 0) << "V3: Should find 0 documents matching 'noexist'"; + } + { + TabletIndex idx_meta; + // Create index metadata + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(1); + index_meta_pb->set_index_name("test"); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(1); // c2 column ID + idx_meta.init_from_pb(*index_meta_pb.get()); + std::string index_path_prefix; + prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, + InvertedIndexStorageFormatPB::V3); + + // Create V3 format reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_searcher_cache = false; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared( + io::global_local_filesystem(), index_path_prefix, + InvertedIndexStorageFormatPB::V3); + + auto status = reader->init(); + EXPECT_EQ(status, Status::OK()); + + auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); + EXPECT_NE(str_reader, nullptr); + + io::IOContext io_ctx; + std::string field_name = "1"; // c2 column unique_id + + // Test query for "common_term" which has >512 documents with V3 format + std::shared_ptr bitmap = std::make_shared(); + std::string query_term = "common_term"; + StringRef str_ref(query_term.c_str(), query_term.length()); + + auto query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::EQUAL_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 600) + << "V3: Should find 600 documents matching 'common_term'"; + + // Verify first and last document IDs + EXPECT_TRUE(bitmap->contains(0)) << "V3: First document should match 'common_term'"; + EXPECT_TRUE(bitmap->contains(599)) << "V3: Last document should match 'common_term'"; + + // Test query for "term_a" with V3 format + bitmap = std::make_shared(); + query_term = "term_a"; + StringRef str_ref_a(query_term.c_str(), query_term.length()); + + query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_a, + InvertedIndexQueryType::EQUAL_QUERY, bitmap); + + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 200) + << "V3: Should find 200 documents matching 'term_a'"; + EXPECT_TRUE(bitmap->contains(600)) + << "V3: First document of term_a should be at position 600"; + EXPECT_TRUE(bitmap->contains(799)) + << "V3: Last document of term_a should be at position 799"; + + // Test query for "noexist" with V3 format + bitmap = std::make_shared(); + query_term = "noexist"; + StringRef str_ref_no_term(query_term.c_str(), query_term.length()); + + query_status = + str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_no_term, + InvertedIndexQueryType::EQUAL_QUERY, bitmap); + EXPECT_TRUE(query_status.ok()) << query_status; + EXPECT_EQ(bitmap->cardinality(), 0) << "V3: Should find 0 documents matching 'noexist'"; + } + } + + // Helper function to check CPU architecture + bool is_arm_architecture() { +#if defined(__aarch64__) + return true; +#else + return false; +#endif + } + + // Helper function to check AVX2 support + bool has_avx2_support() { +#if defined(USE_AVX2) && defined(__x86_64__) + unsigned int eax, ebx, ecx, edx; + __asm__("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "0"(7), "c"(0)); + return (ebx & (1 << 5)) != 0; // Check AVX2 bit +#else + return false; +#endif + } + + // Helper function to test index reading with inline validation + void test_read_index_file( + const TabletIndex& idx_meta, const std::string& data_dir, const std::string& index_file, + const std::string& field_name, const std::string& query_term, + InvertedIndexStorageFormatPB storage_format, bool enable_compatible_read, + uint64_t expected_cardinality, // Added expected cardinality parameter + const std::vector& expected_doc_ids) { // Added expected doc IDs parameter + // Get the index file path + std::string index_path_prefix = data_dir + "/" + index_file; + + // Create reader + OlapReaderStatistics stats; + RuntimeState runtime_state; + TQueryOptions query_options; + query_options.enable_inverted_index_searcher_cache = false; + query_options.inverted_index_compatible_read = enable_compatible_read; + runtime_state.set_query_options(query_options); + + auto reader = std::make_shared(io::global_local_filesystem(), + index_path_prefix, storage_format); + + auto status = reader->init(); + ASSERT_TRUE(status.ok()) << "Failed to initialize InvertedIndexFileReader for " + << index_file << ": " << status.to_string(); + + auto index_reader = FullTextIndexReader::create_shared(&idx_meta, reader); + ASSERT_NE(index_reader, nullptr) + << "Failed to create FullTextIndexReader for " << index_file; + + io::IOContext io_ctx; + + // Test queries + std::shared_ptr bitmap = std::make_shared(); + StringRef str_ref(query_term.c_str(), query_term.length()); + + auto query_status = + index_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, + InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); + + ASSERT_TRUE(query_status.ok()) << "Query failed for term '" << query_term << "' in file " + << index_file << ": " << query_status.to_string(); + + // Perform validation inline + ASSERT_NE(bitmap, nullptr) + << "Bitmap is null after successful query for file: " << index_file; + EXPECT_EQ(bitmap->cardinality(), expected_cardinality) + << "File: " << index_file << " - Incorrect cardinality for term '" << query_term + << "'"; + //std::cout << "bitmap: " << bitmap->toString() << std::endl; + for (uint32_t doc_id : expected_doc_ids) { + EXPECT_TRUE(bitmap->contains(doc_id)) + << "File: " << index_file << " - Bitmap should contain doc ID " << doc_id + << " for term '" << query_term << "'"; + } + } + + // Test reading existing large document set index file + void test_compatible_read_cross_platform() { + std::string data_dir = "./be/test/olap/test_data"; + + // Helper lambda to create TabletIndex easily + auto create_test_index_meta = [](int64_t index_id, const std::string& index_name, + int64_t col_unique_id) { + auto index_meta_pb = std::make_unique(); + index_meta_pb->set_index_type(IndexType::INVERTED); + index_meta_pb->set_index_id(index_id); + index_meta_pb->set_index_name(index_name); + index_meta_pb->clear_col_unique_id(); + index_meta_pb->add_col_unique_id(col_unique_id); + index_meta_pb->mutable_properties()->insert({"parser", "english"}); + index_meta_pb->mutable_properties()->insert({"lower_case", "true"}); + index_meta_pb->mutable_properties()->insert({"support_phrase", "true"}); + TabletIndex idx_meta; + idx_meta.init_from_pb(*index_meta_pb.get()); + return idx_meta; + }; + + // Default metadata, query parameters, and expected results + std::string default_index_name = "test"; + std::string default_query_term = "gif"; + uint64_t expected_gif_cardinality = 27296; + std::vector expected_gif_doc_ids = {0, 19, 22, 23, 24, 26, 1000, 10278, 44702}; + + if (is_arm_architecture()) { + // Test ARM architecture cases + std::cout << "Testing on ARM architecture" << std::endl; + { + TabletIndex meta_arm_old_v2 = + create_test_index_meta(1744016478578, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37284; + expected_gif_doc_ids = {0, 19, 110, 1000, 2581, 7197, 9091, 16711, 29676, 44702}; + test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, false, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 359; + expected_gif_doc_ids = { + 25, 63, 66, 135, 214, 276, 287, 321, 653, 819, 968, + 1038, 1115, 1210, 1305, 1394, 1650, 1690, 1761, 1934, 1935, 2101, + 2114, 2544, 2815, 2912, 3028, 3104, 3475, 3953, 3991, 4052, 4097, + 4424, 4430, 4458, 4504, 4571, 4629, 4704, 4711, 4838, 5021, 5322, + 5362, 5414, 5461, 5524, 5681, 5828, 5877, 6031, 6123, 6249, 6298, + 6575, 6626, 6637, 6692, 6708, 6765, 6926, 6953, 7061, 7089, 7144, + 7147, 7184, 7342, 7461, 7615, 7703, 7818, 8002, 8014, 8280, 8369, + 8398, 8440, 8554, 8675, 8682, 8780, 9064, 9379, 9448, 9455, 9639, + 10036, 10124, 10164, 10224, 10246, 10568, 10736, 10750, 10914, 10930, 10944, + 10970, 11149, 11434, 11435, 11534, 11862, 11961, 12187, 12247, 12344, 12479, + 12632, 12923, 13015, 13018, 13122, 13277, 13357, 13459, 13466, 13597, 13792, + 13857, 13952, 14096, 14127, 14211, 14221, 14344, 14563, 14567, 14588, 14606, + 14692, 14868, 14880, 14990, 15085, 15101, 15211, 15218, 15439, 15530, 15564, + 15676, 15695, 15727, 15754, 15846, 15895, 15904, 15983, 16004, 16299, 16423, + 16476, 16530, 16954, 17045, 17202, 17393, 17592, 17693, 17829, 17852, 18018, + 18224, 18335, 18881, 18942, 19162, 19387, 19401, 19418, 19434, 19525, 19710, + 19805, 20054, 20126, 20127, 20407, 20572, 20742, 20929, 21023, 21024, 21248, + 21267, 21354, 21452, 21704, 21810, 21831, 21847, 21900, 22202, 22328, 22599, + 22629, 22671, 22761, 22762, 22824, 23139, 23478, 23784, 23797, 23884, 23886, + 23983, 24128, 24137, 24176, 24253, 24434, 24484, 24518, 24538, 24655, 24849, + 24853, 24865, 24888, 25163, 25256, 25274, 25307, 25613, 25816, 26225, 26323, + 26459, 26461, 26476, 26580, 26598, 26800, 26932, 26962, 27202, 27499, 27506, + 27768, 27923, 28049, 28133, 28305, 28468, 28535, 28670, 28717, 28782, 29154, + 29692, 29742, 30112, 30125, 30289, 30353, 30437, 30734, 30741, 30848, 30933, + 31332, 31399, 31581, 31841, 31867, 32025, 32446, 32463, 32712, 32947, 33038, + 33210, 33325, 33563, 33572, 33757, 33947, 33975, 34016, 34041, 34210, 34627, + 34684, 34732, 35064, 35684, 35787, 35809, 35811, 35996, 36272, 36389, 36418, + 36420, 36568, 36847, 36956, 37022, 37189, 37200, 37401, 37484, 37581, 37852, + 37939, 38156, 38269, 38785, 38874, 39072, 39081, 39094, 39157, 39187, 39308, + 39562, 39676, 39690, 39814, 39848, 40134, 40350, 40352, 40684, 41143, 41249, + 41416, 41463, 41738, 41840, 41875, 42028, 42077, 42104, 42439, 42467, 42528, + 42784, 42793, 42970, 43020, 43418, 43430, 43571, 43809, 43811, 44040, 44057, + 44081, 44168, 44288, 44329, 44608, 44624, 44690}; + test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, false, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_arm_old_v1 = + create_test_index_meta(1744016478651, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 40962; + expected_gif_doc_ids = {0, 21, 110, 1000, 2581, 7196, 9091, 16712, 26132, 44702}; + test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, false, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 402; + expected_gif_doc_ids = { + 36, 41, 242, 628, 716, 741, 884, 902, 1025, 1129, 1349, + 1401, 1871, 1873, 2074, 2184, 2420, 2815, 3138, 3164, 3189, 3302, + 3308, 3347, 3430, 3475, 3645, 3772, 3803, 3921, 4036, 4080, 4127, + 4419, 4424, 4450, 4526, 4546, 4608, 4668, 4701, 5223, 5274, 5366, + 5438, 5670, 6109, 6176, 6386, 6412, 6466, 6554, 6594, 6761, 6941, + 6957, 7076, 7173, 7178, 7208, 7263, 7370, 7489, 7726, 7800, 8293, + 8309, 8469, 8588, 8759, 8914, 9242, 9254, 9334, 9354, 9422, 9476, + 9515, 9545, 9709, 9714, 9741, 9982, 9995, 10145, 10284, 10384, 10464, + 10508, 10641, 10720, 10771, 10810, 10935, 11097, 11367, 11525, 11554, 11574, + 11660, 11857, 11930, 12025, 12078, 12203, 12237, 12245, 12297, 12432, 12466, + 12601, 12745, 12893, 12928, 13127, 13157, 13173, 13336, 13458, 13517, 13553, + 13681, 13747, 13893, 13935, 14108, 14191, 14265, 14408, 14439, 14468, 14528, + 14565, 14587, 14618, 14642, 14993, 15010, 15260, 15358, 15453, 15539, 15557, + 15586, 15594, 15728, 15893, 15904, 16156, 16304, 16408, 16532, 16789, 16974, + 17015, 17294, 17330, 17347, 17733, 17773, 17981, 17992, 18015, 18209, 18211, + 18278, 18566, 18603, 18643, 18912, 19327, 19419, 19538, 19700, 19714, 19872, + 19873, 19895, 19971, 20118, 20379, 20515, 20526, 20781, 20967, 21108, 21163, + 21179, 21431, 21474, 21595, 21749, 21822, 21848, 21999, 22314, 22476, 22539, + 22677, 23070, 23071, 23491, 23841, 23986, 24017, 24109, 24139, 24196, 24301, + 24355, 24742, 24965, 24970, 24987, 25254, 25268, 25287, 25331, 26050, 26133, + 26238, 26364, 26388, 26435, 26804, 26844, 26849, 26934, 27190, 27294, 27441, + 27467, 27679, 27702, 27762, 27772, 27821, 27844, 27860, 27912, 28068, 28115, + 28301, 28304, 28379, 28440, 28816, 28885, 28948, 28966, 29348, 29484, 29509, + 29902, 29908, 29917, 29951, 30127, 30181, 30693, 30779, 30861, 30903, 31061, + 31358, 31646, 31658, 31713, 31782, 31815, 31905, 31967, 32019, 32333, 32376, + 32394, 32452, 32635, 32709, 32973, 33505, 33506, 33602, 33693, 33751, 33793, + 33942, 33993, 34106, 34413, 34508, 34526, 34798, 34974, 34999, 35033, 35106, + 35159, 35200, 35288, 35305, 35355, 35373, 35522, 35583, 35602, 35716, 35956, + 36022, 36035, 36264, 36315, 36359, 36525, 36601, 36616, 36627, 36677, 36939, + 36970, 37050, 37139, 37218, 37287, 37445, 37467, 37502, 37521, 37552, 37635, + 37705, 37737, 37786, 37855, 38242, 38410, 38790, 38881, 39036, 39051, 39103, + 39123, 39165, 39195, 39373, 39425, 39464, 39476, 39499, 39627, 39657, 39754, + 39804, 40029, 40510, 40651, 40660, 40745, 40974, 41163, 41275, 41515, 41847, + 41931, 42030, 42174, 42385, 42448, 42462, 43183, 43243, 43279, 43417, 43645, + 43698, 44144, 44425, 44430, 44625, 44739, 44849, 44993, 45335, 45343, 45561, + 45594, 45734, 45978, 46070, 46162, 46378, 46449, 46704, 46833, 47257, 47268, + 47548, 47984, 47990, 48101, 48545, 48661}; + test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, false, + expected_gif_cardinality, expected_gif_doc_ids); + { + TabletIndex meta_x86_old_v2 = create_test_index_meta(10083, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37343; + expected_gif_doc_ids = {0, 19, 110, 1000, 2581, + 7196, 9090, 16711, 10278, 44702}; + test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 346; + expected_gif_doc_ids = { + 3, 222, 502, 649, 671, 814, 1101, 1110, 1286, 1329, + 1350, 1409, 1478, 1598, 1621, 1627, 1686, 1895, 2218, 2304, + 2429, 2654, 2735, 2798, 2799, 2828, 2966, 3050, 3083, 3261, + 3296, 3574, 3625, 3653, 4053, 4128, 4192, 4200, 4594, 4623, + 4747, 5284, 5371, 5379, 5467, 5567, 5694, 5714, 5723, 5903, + 5954, 6120, 6187, 6226, 6451, 6664, 6723, 6748, 6958, 7319, + 7933, 7947, 8041, 8156, 8203, 8205, 8568, 8626, 8777, 8923, + 8999, 9088, 9193, 9239, 9282, 9358, 9386, 9531, 9589, 9599, + 9864, 10006, 10229, 10370, 10523, 10751, 10854, 10864, 10883, 11045, + 11077, 11134, 11149, 11252, 11258, 11260, 11432, 11488, 11578, 11599, + 11765, 11826, 11929, 12124, 12154, 12277, 12339, 12410, 12432, 12500, + 12612, 12618, 12654, 12872, 12929, 12987, 13173, 13293, 13306, 13397, + 13559, 13800, 14017, 14180, 14195, 14283, 14385, 14481, 14659, 14728, + 14738, 15150, 15574, 15586, 15774, 15914, 15968, 16093, 16131, 16155, + 16337, 16340, 16391, 16420, 16577, 16632, 16836, 16874, 16883, 16896, + 16954, 17060, 17241, 17302, 17359, 17601, 17985, 18017, 18043, 18084, + 18334, 18539, 18637, 18831, 18864, 19068, 19075, 19140, 19445, 19487, + 19495, 19559, 19648, 19656, 19770, 19880, 20284, 20311, 20358, 20439, + 21103, 21252, 21382, 21429, 21678, 21765, 21773, 21779, 21877, 22067, + 22318, 22607, 22713, 22719, 22929, 23074, 23148, 23209, 23500, 23611, + 23614, 23709, 23761, 23952, 23999, 24120, 24217, 24503, 24656, 24675, + 24842, 24924, 24970, 25144, 25582, 25767, 25923, 26184, 26206, 26344, + 26376, 26529, 26682, 26686, 26803, 26896, 26921, 26951, 26982, 27033, + 27075, 27163, 27166, 27299, 27567, 27682, 28010, 28173, 28368, 28423, + 28440, 28590, 28801, 28990, 28994, 29138, 29256, 29300, 29657, 29769, + 30018, 30086, 30154, 30189, 30382, 30385, 30445, 30456, 30489, 30545, + 30908, 30931, 31009, 31267, 31297, 31336, 31696, 31728, 31735, 31943, + 32155, 32244, 32342, 32431, 32569, 32733, 32799, 32817, 32903, 33078, + 33552, 34064, 34604, 34705, 35186, 35256, 35284, 35295, 35494, 35745, + 35943, 36051, 36343, 36430, 36452, 36666, 36697, 36763, 36822, 36890, + 37511, 37547, 37706, 38256, 38581, 38911, 38931, 38955, 38998, 39131, + 39135, 39255, 39312, 39394, 39459, 39635, 39707, 40190, 40215, 40708, + 41063, 41264, 41361, 41593, 41699, 41864, 42190, 42363, 42444, 42873, + 42983, 43314, 43587, 43693, 43880, 43908, 43909, 43925, 43978, 43986, + 44071, 44183, 44340, 44398, 44466, 44498}; + test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_old_v1 = create_test_index_meta(10248, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 40893; + expected_gif_doc_ids = {0, 19, 110, 1001, 2581, + 7196, 9090, 16711, 10278, 44701}; + test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, true, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 356; + expected_gif_doc_ids = { + 622, 754, 1021, 1186, 1403, 1506, 1655, 1661, 1833, 2287, + 2356, 2425, 2849, 3198, 3350, 3365, 3416, 3423, 3499, 3541, + 3609, 3682, 3936, 4117, 4198, 4589, 4591, 4808, 4959, 5282, + 5332, 5495, 5560, 5624, 5773, 5831, 6138, 6180, 6361, 6372, + 6621, 6777, 6878, 6911, 6983, 7048, 7148, 7207, 7273, 7274, + 7385, 7545, 7735, 7904, 7912, 8150, 8215, 8238, 8363, 8598, + 8672, 8765, 8877, 9188, 9264, 9761, 9864, 9866, 9946, 10022, + 10139, 10143, 10146, 10184, 10291, 10304, 10308, 10332, 10371, 10695, + 10707, 11056, 11095, 11111, 11505, 11752, 11860, 11989, 12119, 12156, + 12655, 12764, 12792, 13055, 13636, 13824, 13902, 13912, 14061, 14152, + 14315, 14355, 14618, 14712, 14788, 15050, 15057, 15110, 15122, 15249, + 15267, 15281, 15735, 15848, 15939, 16117, 16327, 16331, 16597, 16739, + 16868, 17092, 17458, 17553, 17602, 17664, 17781, 18061, 18353, 18397, + 18468, 18717, 18726, 19131, 19209, 19402, 19551, 19812, 20128, 20146, + 20232, 20322, 20407, 20431, 20436, 20466, 20757, 20960, 20994, 21197, + 21254, 21487, 21561, 21602, 21662, 21710, 21754, 21826, 21965, 22091, + 22200, 22203, 22291, 22317, 22561, 22584, 22606, 22950, 23140, 23315, + 23442, 23858, 24026, 24322, 24581, 24617, 24655, 24756, 24974, 25191, + 25246, 25287, 25406, 25599, 25830, 26020, 26109, 26149, 26402, 26431, + 26451, 26458, 26495, 26766, 26777, 26848, 26966, 27053, 27089, 27177, + 27519, 27595, 27693, 28294, 28719, 28755, 29073, 29323, 29472, 29496, + 29604, 29761, 29772, 29953, 30030, 30083, 30139, 30210, 30719, 30774, + 30868, 30897, 31200, 31347, 31811, 31880, 31903, 32040, 32048, 32225, + 32335, 32357, 32517, 32579, 32679, 32821, 33294, 33393, 33509, 33675, + 33802, 34390, 34441, 34474, 34547, 34557, 35057, 35262, 35327, 35348, + 35455, 35482, 35668, 35811, 35845, 35953, 36098, 36151, 36602, 36711, + 36946, 37036, 37220, 37291, 37436, 37721, 37747, 37864, 37890, 37923, + 38045, 38588, 38654, 38730, 38930, 39169, 39814, 40401, 40689, 40762, + 40822, 41249, 41399, 41419, 41572, 41736, 41768, 41946, 41989, 42077, + 42079, 42225, 42360, 42524, 42576, 42595, 42691, 42784, 42892, 42930, + 43210, 43299, 43348, 43468, 43510, 43622, 43795, 43824, 43893, 43972, + 43975, 43998, 44008, 44023, 44031, 44049, 44139, 44518, 44555, 44597, + 44815, 44879, 45014, 45020, 45054, 45084, 45100, 45464, 45471, 45505, + 45580, 45593, 45686, 45991, 46019, 46021, 46107, 46138, 46197, 46209, + 46551, 46658, 46988, 47027, 47046, 47071, 47106, 47190, 47225, 47439, + 47465, 47531, 47602, 47660, 48453, 48575}; + test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, true, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_new_v1 = + create_test_index_meta(1744025019684, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 37337; + expected_gif_doc_ids = {0, 19, 110, 1001, 2581, + 7196, 9090, 16711, 10279, 44701}; + test_read_index_file(meta_x86_new_v1, data_dir, "x86_new", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, + false, expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 368; + expected_gif_doc_ids = { + 294, 678, 835, 852, 998, 1204, 1237, 1553, 1648, 1674, + 1859, 1944, 2024, 2043, 2319, 2383, 2476, 2955, 3064, 3281, + 3292, 3324, 3341, 3389, 3424, 3713, 3715, 3731, 3794, 3801, + 3824, 3892, 4089, 4174, 4302, 4436, 4459, 4509, 4697, 4726, + 4891, 4931, 4975, 5008, 5020, 5154, 5200, 5288, 5375, 5458, + 5624, 5728, 5844, 5864, 6306, 6452, 6461, 6619, 6632, 6755, + 7021, 7093, 7400, 7414, 7422, 7484, 7752, 7758, 7785, 7900, + 7992, 8013, 8019, 8075, 8076, 8118, 8119, 8123, 8126, 8248, + 8345, 8557, 8772, 8900, 8946, 8966, 8974, 9583, 9597, 9613, + 9782, 9869, 10033, 10162, 10271, 10297, 10439, 10520, 10558, 10591, + 10651, 10807, 10810, 10864, 10906, 11293, 11499, 11511, 11572, 11574, + 11665, 11697, 11722, 11729, 11801, 11845, 11868, 12031, 12251, 12289, + 12323, 12337, 12576, 12804, 12938, 13349, 13459, 13509, 13558, 13938, + 13951, 13989, 14006, 14237, 14362, 14365, 14508, 14560, 14658, 14666, + 14954, 15155, 15216, 15314, 15430, 15532, 15567, 15689, 15848, 15978, + 15983, 15985, 16119, 16174, 16193, 16506, 16543, 17048, 17078, 17190, + 17351, 17412, 17444, 17475, 17761, 17950, 17996, 18195, 18275, 18405, + 18637, 18780, 19245, 19445, 19604, 19744, 19763, 20284, 20308, 20530, + 20762, 20782, 20792, 20818, 20867, 20959, 21104, 21207, 21255, 21280, + 21339, 21514, 21870, 21966, 22231, 22275, 22391, 22478, 22509, 22637, + 22942, 22984, 23121, 23269, 23362, 23572, 23589, 23832, 23919, 24043, + 24078, 24126, 24244, 24364, 24405, 24454, 24782, 24794, 24833, 24949, + 24980, 24989, 25034, 25166, 25358, 25443, 25553, 25600, 25634, 25900, + 26054, 26105, 26196, 26218, 26241, 26532, 26637, 26918, 27179, 27207, + 27258, 27463, 27604, 27614, 27624, 27669, 27837, 27841, 28025, 28172, + 28181, 28214, 28391, 28554, 28785, 28812, 28893, 29063, 29665, 29810, + 29900, 30236, 30256, 30313, 30357, 30447, 30945, 30965, 30997, 31012, + 31033, 31302, 31309, 31806, 31821, 31904, 32080, 32128, 32330, 32359, + 32426, 32430, 32507, 32580, 32588, 32711, 32767, 32835, 32841, 32903, + 33094, 33226, 33313, 33371, 33615, 33742, 33808, 34480, 34571, 34874, + 34989, 35189, 35234, 35241, 35258, 35742, 35793, 36207, 36208, 36214, + 36735, 36915, 37041, 37286, 37391, 37433, 37454, 37480, 37493, 37504, + 37695, 37761, 37769, 38027, 38038, 38113, 38285, 38343, 38596, 38625, + 38758, 38874, 38944, 39045, 39346, 39390, 39432, 39670, 40012, 40068, + 40342, 40826, 41087, 41206, 41502, 41700, 42215, 42251, 42373, 42413, + 42475, 42482, 42490, 42506, 42594, 42656, 42665, 43075, 43147, 43366, + 43488, 43499, 43609, 43889, 43925, 44040, 44180, 44568}; + test_read_index_file(meta_x86_new_v1, data_dir, "x86_new", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, + false, expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_new_v2 = + create_test_index_meta(1744025019611, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37170; + expected_gif_doc_ids = {0, 18, 110, 1000, 2581, + 7196, 9090, 16711, 10276, 44702}; + test_read_index_file(meta_x86_new_v2, data_dir, "x86_new_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 356; + expected_gif_doc_ids = { + 260, 329, 334, 347, 459, 471, 568, 676, 689, 718, + 760, 1267, 1421, 1477, 2363, 2523, 2571, 2725, 2941, 3125, + 3148, 3306, 3459, 3808, 3856, 3933, 4022, 4076, 4386, 4815, + 4818, 4898, 4938, 4970, 4975, 5192, 5302, 5320, 5417, 5470, + 5752, 5875, 6007, 6143, 6425, 6597, 6639, 6761, 6961, 6977, + 6983, 7045, 7179, 7214, 7350, 7393, 7436, 7485, 7518, 7592, + 7739, 7856, 7921, 7957, 8006, 8116, 8411, 8664, 8716, 8728, + 8747, 8809, 8883, 8907, 8931, 8995, 9089, 9393, 9611, 9746, + 9787, 9963, 10080, 10230, 10348, 10464, 10494, 10547, 10552, 10666, + 10813, 10847, 10989, 11134, 11298, 11531, 11605, 11654, 11720, 11791, + 11835, 11994, 12012, 12068, 12232, 12272, 12336, 12438, 12537, 12646, + 12738, 12768, 12923, 12925, 13173, 13186, 13187, 13251, 13503, 13830, + 13973, 14121, 14291, 14378, 14380, 14389, 14453, 14495, 14508, 14620, + 14686, 14872, 15241, 15275, 15491, 15564, 15652, 15951, 15966, 16287, + 16289, 16531, 16681, 16914, 16919, 17079, 17382, 17393, 17860, 17961, + 18158, 18191, 18578, 18692, 18741, 18987, 19038, 19117, 19271, 19641, + 19723, 20253, 20259, 20473, 20766, 20863, 21419, 21424, 21908, 22325, + 22327, 22449, 22701, 22852, 22867, 22906, 22912, 22958, 23175, 23203, + 23332, 23461, 23493, 23746, 23921, 24257, 24328, 24411, 24479, 24747, + 24816, 25462, 25492, 25528, 25872, 25944, 26164, 26414, 26463, 26688, + 26779, 27033, 27283, 27303, 27858, 27948, 28248, 28372, 28402, 28460, + 28478, 28897, 29019, 29053, 29140, 29216, 29299, 29393, 29414, 29575, + 29789, 29803, 29805, 29934, 30270, 30278, 30291, 30301, 30433, 30493, + 30698, 30723, 30737, 30751, 31015, 31167, 31447, 32136, 32138, 32296, + 32318, 32374, 32585, 32747, 32815, 32964, 33060, 33144, 33159, 33315, + 33342, 33543, 33753, 33767, 33990, 34176, 34375, 34422, 34455, 34538, + 34563, 34708, 34738, 35050, 35130, 35137, 35220, 35422, 35484, 35487, + 35603, 35697, 35717, 35986, 36114, 36116, 36230, 36288, 36332, 36469, + 36520, 36572, 36727, 36959, 37099, 37152, 37400, 37473, 37712, 37838, + 37920, 38264, 38354, 38431, 38646, 38692, 38757, 38888, 38909, 38945, + 39078, 39103, 39125, 39138, 39155, 39274, 39412, 39553, 39577, 39583, + 39653, 39706, 39895, 39934, 39978, 40023, 40154, 40250, 40259, 40310, + 40357, 40376, 40457, 40643, 40665, 40881, 40990, 41368, 41379, 41519, + 41578, 41641, 41680, 42260, 42357, 42391, 42461, 42561, 42575, 42781, + 42810, 42844, 43026, 43028, 43046, 43145, 43386, 43388, 43576, 43667, + 43798, 43983, 44280, 44453, 44591, 44634}; + test_read_index_file(meta_x86_new_v2, data_dir, "x86_new_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + } + } + } else { + // Test x86 architecture cases + std::cout << "Testing on x86 architecture" << std::endl; + + if (has_avx2_support()) { + std::cout << "Testing with AVX2 support" << std::endl; + { + TabletIndex meta_arm_old_v2 = + create_test_index_meta(1744016478578, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37284; + expected_gif_doc_ids = {0, 19, 110, 1000, 2581, + 7197, 9091, 16711, 29676, 44702}; + test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 359; + expected_gif_doc_ids = { + 25, 63, 66, 135, 214, 276, 287, 321, 653, 819, + 968, 1038, 1115, 1210, 1305, 1394, 1650, 1690, 1761, 1934, + 1935, 2101, 2114, 2544, 2815, 2912, 3028, 3104, 3475, 3953, + 3991, 4052, 4097, 4424, 4430, 4458, 4504, 4571, 4629, 4704, + 4711, 4838, 5021, 5322, 5362, 5414, 5461, 5524, 5681, 5828, + 5877, 6031, 6123, 6249, 6298, 6575, 6626, 6637, 6692, 6708, + 6765, 6926, 6953, 7061, 7089, 7144, 7147, 7184, 7342, 7461, + 7615, 7703, 7818, 8002, 8014, 8280, 8369, 8398, 8440, 8554, + 8675, 8682, 8780, 9064, 9379, 9448, 9455, 9639, 10036, 10124, + 10164, 10224, 10246, 10568, 10736, 10750, 10914, 10930, 10944, 10970, + 11149, 11434, 11435, 11534, 11862, 11961, 12187, 12247, 12344, 12479, + 12632, 12923, 13015, 13018, 13122, 13277, 13357, 13459, 13466, 13597, + 13792, 13857, 13952, 14096, 14127, 14211, 14221, 14344, 14563, 14567, + 14588, 14606, 14692, 14868, 14880, 14990, 15085, 15101, 15211, 15218, + 15439, 15530, 15564, 15676, 15695, 15727, 15754, 15846, 15895, 15904, + 15983, 16004, 16299, 16423, 16476, 16530, 16954, 17045, 17202, 17393, + 17592, 17693, 17829, 17852, 18018, 18224, 18335, 18881, 18942, 19162, + 19387, 19401, 19418, 19434, 19525, 19710, 19805, 20054, 20126, 20127, + 20407, 20572, 20742, 20929, 21023, 21024, 21248, 21267, 21354, 21452, + 21704, 21810, 21831, 21847, 21900, 22202, 22328, 22599, 22629, 22671, + 22761, 22762, 22824, 23139, 23478, 23784, 23797, 23884, 23886, 23983, + 24128, 24137, 24176, 24253, 24434, 24484, 24518, 24538, 24655, 24849, + 24853, 24865, 24888, 25163, 25256, 25274, 25307, 25613, 25816, 26225, + 26323, 26459, 26461, 26476, 26580, 26598, 26800, 26932, 26962, 27202, + 27499, 27506, 27768, 27923, 28049, 28133, 28305, 28468, 28535, 28670, + 28717, 28782, 29154, 29692, 29742, 30112, 30125, 30289, 30353, 30437, + 30734, 30741, 30848, 30933, 31332, 31399, 31581, 31841, 31867, 32025, + 32446, 32463, 32712, 32947, 33038, 33210, 33325, 33563, 33572, 33757, + 33947, 33975, 34016, 34041, 34210, 34627, 34684, 34732, 35064, 35684, + 35787, 35809, 35811, 35996, 36272, 36389, 36418, 36420, 36568, 36847, + 36956, 37022, 37189, 37200, 37401, 37484, 37581, 37852, 37939, 38156, + 38269, 38785, 38874, 39072, 39081, 39094, 39157, 39187, 39308, 39562, + 39676, 39690, 39814, 39848, 40134, 40350, 40352, 40684, 41143, 41249, + 41416, 41463, 41738, 41840, 41875, 42028, 42077, 42104, 42439, 42467, + 42528, 42784, 42793, 42970, 43020, 43418, 43430, 43571, 43809, 43811, + 44040, 44057, 44081, 44168, 44288, 44329, 44608, 44624, 44690}; + test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_arm_old_v1 = + create_test_index_meta(1744016478651, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 40962; + expected_gif_doc_ids = {0, 21, 110, 1000, 2581, + 7196, 9091, 16712, 26132, 44702}; + test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, true, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 402; + expected_gif_doc_ids = { + 36, 41, 242, 628, 716, 741, 884, 902, 1025, 1129, + 1349, 1401, 1871, 1873, 2074, 2184, 2420, 2815, 3138, 3164, + 3189, 3302, 3308, 3347, 3430, 3475, 3645, 3772, 3803, 3921, + 4036, 4080, 4127, 4419, 4424, 4450, 4526, 4546, 4608, 4668, + 4701, 5223, 5274, 5366, 5438, 5670, 6109, 6176, 6386, 6412, + 6466, 6554, 6594, 6761, 6941, 6957, 7076, 7173, 7178, 7208, + 7263, 7370, 7489, 7726, 7800, 8293, 8309, 8469, 8588, 8759, + 8914, 9242, 9254, 9334, 9354, 9422, 9476, 9515, 9545, 9709, + 9714, 9741, 9982, 9995, 10145, 10284, 10384, 10464, 10508, 10641, + 10720, 10771, 10810, 10935, 11097, 11367, 11525, 11554, 11574, 11660, + 11857, 11930, 12025, 12078, 12203, 12237, 12245, 12297, 12432, 12466, + 12601, 12745, 12893, 12928, 13127, 13157, 13173, 13336, 13458, 13517, + 13553, 13681, 13747, 13893, 13935, 14108, 14191, 14265, 14408, 14439, + 14468, 14528, 14565, 14587, 14618, 14642, 14993, 15010, 15260, 15358, + 15453, 15539, 15557, 15586, 15594, 15728, 15893, 15904, 16156, 16304, + 16408, 16532, 16789, 16974, 17015, 17294, 17330, 17347, 17733, 17773, + 17981, 17992, 18015, 18209, 18211, 18278, 18566, 18603, 18643, 18912, + 19327, 19419, 19538, 19700, 19714, 19872, 19873, 19895, 19971, 20118, + 20379, 20515, 20526, 20781, 20967, 21108, 21163, 21179, 21431, 21474, + 21595, 21749, 21822, 21848, 21999, 22314, 22476, 22539, 22677, 23070, + 23071, 23491, 23841, 23986, 24017, 24109, 24139, 24196, 24301, 24355, + 24742, 24965, 24970, 24987, 25254, 25268, 25287, 25331, 26050, 26133, + 26238, 26364, 26388, 26435, 26804, 26844, 26849, 26934, 27190, 27294, + 27441, 27467, 27679, 27702, 27762, 27772, 27821, 27844, 27860, 27912, + 28068, 28115, 28301, 28304, 28379, 28440, 28816, 28885, 28948, 28966, + 29348, 29484, 29509, 29902, 29908, 29917, 29951, 30127, 30181, 30693, + 30779, 30861, 30903, 31061, 31358, 31646, 31658, 31713, 31782, 31815, + 31905, 31967, 32019, 32333, 32376, 32394, 32452, 32635, 32709, 32973, + 33505, 33506, 33602, 33693, 33751, 33793, 33942, 33993, 34106, 34413, + 34508, 34526, 34798, 34974, 34999, 35033, 35106, 35159, 35200, 35288, + 35305, 35355, 35373, 35522, 35583, 35602, 35716, 35956, 36022, 36035, + 36264, 36315, 36359, 36525, 36601, 36616, 36627, 36677, 36939, 36970, + 37050, 37139, 37218, 37287, 37445, 37467, 37502, 37521, 37552, 37635, + 37705, 37737, 37786, 37855, 38242, 38410, 38790, 38881, 39036, 39051, + 39103, 39123, 39165, 39195, 39373, 39425, 39464, 39476, 39499, 39627, + 39657, 39754, 39804, 40029, 40510, 40651, 40660, 40745, 40974, 41163, + 41275, 41515, 41847, 41931, 42030, 42174, 42385, 42448, 42462, 43183, + 43243, 43279, 43417, 43645, 43698, 44144, 44425, 44430, 44625, 44739, + 44849, 44993, 45335, 45343, 45561, 45594, 45734, 45978, 46070, 46162, + 46378, 46449, 46704, 46833, 47257, 47268, 47548, 47984, 47990, 48101, + 48545, 48661}; + test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, true, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_arm_new_v2 = + create_test_index_meta(1744017919311, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37170; + expected_gif_doc_ids = {0, 18, 110, 1000, 2581, + 7196, 9090, 16711, 10276, 44702}; + test_read_index_file(meta_arm_new_v2, data_dir, "arm_new_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, + false, expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 356; + expected_gif_doc_ids = { + 260, 329, 334, 347, 459, 471, 568, 676, 689, 718, + 760, 1267, 1421, 1477, 2363, 2523, 2571, 2725, 2941, 3125, + 3148, 3306, 3459, 3808, 3856, 3933, 4022, 4076, 4386, 4815, + 4818, 4898, 4938, 4970, 4975, 5192, 5302, 5320, 5417, 5470, + 5752, 5875, 6007, 6143, 6425, 6597, 6639, 6761, 6961, 6977, + 6983, 7045, 7179, 7214, 7350, 7393, 7436, 7485, 7518, 7592, + 7739, 7856, 7921, 7957, 8006, 8116, 8411, 8664, 8716, 8728, + 8747, 8809, 8883, 8907, 8931, 8995, 9089, 9393, 9611, 9746, + 9787, 9963, 10080, 10230, 10348, 10464, 10494, 10547, 10552, 10666, + 10813, 10847, 10989, 11134, 11298, 11531, 11605, 11654, 11720, 11791, + 11835, 11994, 12012, 12068, 12232, 12272, 12336, 12438, 12537, 12646, + 12738, 12768, 12923, 12925, 13173, 13186, 13187, 13251, 13503, 13830, + 13973, 14121, 14291, 14378, 14380, 14389, 14453, 14495, 14508, 14620, + 14686, 14872, 15241, 15275, 15491, 15564, 15652, 15951, 15966, 16287, + 16289, 16531, 16681, 16914, 16919, 17079, 17382, 17393, 17860, 17961, + 18158, 18191, 18578, 18692, 18741, 18987, 19038, 19117, 19271, 19641, + 19723, 20253, 20259, 20473, 20766, 20863, 21419, 21424, 21908, 22325, + 22327, 22449, 22701, 22852, 22867, 22906, 22912, 22958, 23175, 23203, + 23332, 23461, 23493, 23746, 23921, 24257, 24328, 24411, 24479, 24747, + 24816, 25462, 25492, 25528, 25872, 25944, 26164, 26414, 26463, 26688, + 26779, 27033, 27283, 27303, 27858, 27948, 28248, 28372, 28402, 28460, + 28478, 28897, 29019, 29053, 29140, 29216, 29299, 29393, 29414, 29575, + 29789, 29803, 29805, 29934, 30270, 30278, 30291, 30301, 30433, 30493, + 30698, 30723, 30737, 30751, 31015, 31167, 31447, 32136, 32138, 32296, + 32318, 32374, 32585, 32747, 32815, 32964, 33060, 33144, 33159, 33315, + 33342, 33543, 33753, 33767, 33990, 34176, 34375, 34422, 34455, 34538, + 34563, 34708, 34738, 35050, 35130, 35137, 35220, 35422, 35484, 35487, + 35603, 35697, 35717, 35986, 36114, 36116, 36230, 36288, 36332, 36469, + 36520, 36572, 36727, 36959, 37099, 37152, 37400, 37473, 37712, 37838, + 37920, 38264, 38354, 38431, 38646, 38692, 38757, 38888, 38909, 38945, + 39078, 39103, 39125, 39138, 39155, 39274, 39412, 39553, 39577, 39583, + 39653, 39706, 39895, 39934, 39978, 40023, 40154, 40250, 40259, 40310, + 40357, 40376, 40457, 40643, 40665, 40881, 40990, 41368, 41379, 41519, + 41578, 41641, 41680, 42260, 42357, 42391, 42461, 42561, 42575, 42781, + 42810, 42844, 43026, 43028, 43046, 43145, 43386, 43388, 43576, 43667, + 43798, 43983, 44280, 44453, 44591, 44634}; + test_read_index_file(meta_arm_new_v2, data_dir, "arm_new_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, + false, expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_arm_new_v1 = + create_test_index_meta(1744017919441, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 37343; + expected_gif_doc_ids = {0, 21, 110, 1000, 2580, + 7195, 9091, 16711, 26131, 44702}; + test_read_index_file(meta_arm_new_v1, data_dir, "arm_new", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, + false, expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 346; + expected_gif_doc_ids = { + 3, 222, 502, 649, 671, 814, 1101, 1110, 1286, 1329, + 1350, 1409, 1478, 1598, 1621, 1627, 1686, 1895, 2218, 2304, + 2429, 2654, 2735, 2798, 2799, 2828, 2966, 3050, 3083, 3261, + 3296, 3574, 3625, 3653, 4053, 4128, 4192, 4200, 4594, 4623, + 4747, 5284, 5371, 5379, 5467, 5567, 5694, 5714, 5723, 5903, + 5954, 6120, 6187, 6226, 6451, 6664, 6723, 6748, 6958, 7319, + 7933, 7947, 8041, 8156, 8203, 8205, 8568, 8626, 8777, 8923, + 8999, 9088, 9193, 9239, 9282, 9358, 9386, 9531, 9589, 9599, + 9864, 10006, 10229, 10370, 10523, 10751, 10854, 10864, 10883, 11045, + 11077, 11134, 11149, 11252, 11258, 11260, 11432, 11488, 11578, 11599, + 11765, 11826, 11929, 12124, 12154, 12277, 12339, 12410, 12432, 12500, + 12612, 12618, 12654, 12872, 12929, 12987, 13173, 13293, 13306, 13397, + 13559, 13800, 14017, 14180, 14195, 14283, 14385, 14481, 14659, 14728, + 14738, 15150, 15574, 15586, 15774, 15914, 15968, 16093, 16131, 16155, + 16337, 16340, 16391, 16420, 16577, 16632, 16836, 16874, 16883, 16896, + 16954, 17060, 17241, 17302, 17359, 17601, 17985, 18017, 18043, 18084, + 18334, 18539, 18637, 18831, 18864, 19068, 19075, 19140, 19445, 19487, + 19495, 19559, 19648, 19656, 19770, 19880, 20284, 20311, 20358, 20439, + 21103, 21252, 21382, 21429, 21678, 21765, 21773, 21779, 21877, 22067, + 22318, 22607, 22713, 22719, 22929, 23074, 23148, 23209, 23500, 23611, + 23614, 23709, 23761, 23952, 23999, 24120, 24217, 24503, 24656, 24675, + 24842, 24924, 24970, 25144, 25582, 25767, 25923, 26184, 26206, 26344, + 26376, 26529, 26682, 26686, 26803, 26896, 26921, 26951, 26982, 27033, + 27075, 27163, 27166, 27299, 27567, 27682, 28010, 28173, 28368, 28423, + 28440, 28590, 28801, 28990, 28994, 29138, 29256, 29300, 29657, 29769, + 30018, 30086, 30154, 30189, 30382, 30385, 30445, 30456, 30489, 30545, + 30908, 30931, 31009, 31267, 31297, 31336, 31696, 31728, 31735, 31943, + 32155, 32244, 32342, 32431, 32569, 32733, 32799, 32817, 32903, 33078, + 33552, 34064, 34604, 34705, 35186, 35256, 35284, 35295, 35494, 35745, + 35943, 36051, 36343, 36430, 36452, 36666, 36697, 36763, 36822, 36890, + 37511, 37547, 37706, 38256, 38581, 38911, 38931, 38955, 38998, 39131, + 39135, 39255, 39312, 39394, 39459, 39635, 39707, 40190, 40215, 40708, + 41063, 41264, 41361, 41593, 41699, 41864, 42190, 42363, 42444, 42873, + 42983, 43314, 43587, 43693, 43880, 43908, 43909, 43925, 43978, 43986, + 44071, 44183, 44340, 44398, 44466, 44498}; + test_read_index_file(meta_arm_new_v1, data_dir, "arm_new", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, + false, expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_old_v2 = create_test_index_meta(10083, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37343; + expected_gif_doc_ids = {0, 19, 110, 1000, 2581, + 7196, 9090, 16711, 10278, 44702}; + test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, + false, expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 346; + expected_gif_doc_ids = { + 3, 222, 502, 649, 671, 814, 1101, 1110, 1286, 1329, + 1350, 1409, 1478, 1598, 1621, 1627, 1686, 1895, 2218, 2304, + 2429, 2654, 2735, 2798, 2799, 2828, 2966, 3050, 3083, 3261, + 3296, 3574, 3625, 3653, 4053, 4128, 4192, 4200, 4594, 4623, + 4747, 5284, 5371, 5379, 5467, 5567, 5694, 5714, 5723, 5903, + 5954, 6120, 6187, 6226, 6451, 6664, 6723, 6748, 6958, 7319, + 7933, 7947, 8041, 8156, 8203, 8205, 8568, 8626, 8777, 8923, + 8999, 9088, 9193, 9239, 9282, 9358, 9386, 9531, 9589, 9599, + 9864, 10006, 10229, 10370, 10523, 10751, 10854, 10864, 10883, 11045, + 11077, 11134, 11149, 11252, 11258, 11260, 11432, 11488, 11578, 11599, + 11765, 11826, 11929, 12124, 12154, 12277, 12339, 12410, 12432, 12500, + 12612, 12618, 12654, 12872, 12929, 12987, 13173, 13293, 13306, 13397, + 13559, 13800, 14017, 14180, 14195, 14283, 14385, 14481, 14659, 14728, + 14738, 15150, 15574, 15586, 15774, 15914, 15968, 16093, 16131, 16155, + 16337, 16340, 16391, 16420, 16577, 16632, 16836, 16874, 16883, 16896, + 16954, 17060, 17241, 17302, 17359, 17601, 17985, 18017, 18043, 18084, + 18334, 18539, 18637, 18831, 18864, 19068, 19075, 19140, 19445, 19487, + 19495, 19559, 19648, 19656, 19770, 19880, 20284, 20311, 20358, 20439, + 21103, 21252, 21382, 21429, 21678, 21765, 21773, 21779, 21877, 22067, + 22318, 22607, 22713, 22719, 22929, 23074, 23148, 23209, 23500, 23611, + 23614, 23709, 23761, 23952, 23999, 24120, 24217, 24503, 24656, 24675, + 24842, 24924, 24970, 25144, 25582, 25767, 25923, 26184, 26206, 26344, + 26376, 26529, 26682, 26686, 26803, 26896, 26921, 26951, 26982, 27033, + 27075, 27163, 27166, 27299, 27567, 27682, 28010, 28173, 28368, 28423, + 28440, 28590, 28801, 28990, 28994, 29138, 29256, 29300, 29657, 29769, + 30018, 30086, 30154, 30189, 30382, 30385, 30445, 30456, 30489, 30545, + 30908, 30931, 31009, 31267, 31297, 31336, 31696, 31728, 31735, 31943, + 32155, 32244, 32342, 32431, 32569, 32733, 32799, 32817, 32903, 33078, + 33552, 34064, 34604, 34705, 35186, 35256, 35284, 35295, 35494, 35745, + 35943, 36051, 36343, 36430, 36452, 36666, 36697, 36763, 36822, 36890, + 37511, 37547, 37706, 38256, 38581, 38911, 38931, 38955, 38998, 39131, + 39135, 39255, 39312, 39394, 39459, 39635, 39707, 40190, 40215, 40708, + 41063, 41264, 41361, 41593, 41699, 41864, 42190, 42363, 42444, 42873, + 42983, 43314, 43587, 43693, 43880, 43908, 43909, 43925, 43978, 43986, + 44071, 44183, 44340, 44398, 44466, 44498}; + test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V2, + false, expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_old_v1 = create_test_index_meta(10248, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 40893; + expected_gif_doc_ids = {0, 19, 110, 1001, 2581, + 7196, 9090, 16711, 10278, 44701}; + test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, + false, expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 356; + expected_gif_doc_ids = { + 622, 754, 1021, 1186, 1403, 1506, 1655, 1661, 1833, 2287, + 2356, 2425, 2849, 3198, 3350, 3365, 3416, 3423, 3499, 3541, + 3609, 3682, 3936, 4117, 4198, 4589, 4591, 4808, 4959, 5282, + 5332, 5495, 5560, 5624, 5773, 5831, 6138, 6180, 6361, 6372, + 6621, 6777, 6878, 6911, 6983, 7048, 7148, 7207, 7273, 7274, + 7385, 7545, 7735, 7904, 7912, 8150, 8215, 8238, 8363, 8598, + 8672, 8765, 8877, 9188, 9264, 9761, 9864, 9866, 9946, 10022, + 10139, 10143, 10146, 10184, 10291, 10304, 10308, 10332, 10371, 10695, + 10707, 11056, 11095, 11111, 11505, 11752, 11860, 11989, 12119, 12156, + 12655, 12764, 12792, 13055, 13636, 13824, 13902, 13912, 14061, 14152, + 14315, 14355, 14618, 14712, 14788, 15050, 15057, 15110, 15122, 15249, + 15267, 15281, 15735, 15848, 15939, 16117, 16327, 16331, 16597, 16739, + 16868, 17092, 17458, 17553, 17602, 17664, 17781, 18061, 18353, 18397, + 18468, 18717, 18726, 19131, 19209, 19402, 19551, 19812, 20128, 20146, + 20232, 20322, 20407, 20431, 20436, 20466, 20757, 20960, 20994, 21197, + 21254, 21487, 21561, 21602, 21662, 21710, 21754, 21826, 21965, 22091, + 22200, 22203, 22291, 22317, 22561, 22584, 22606, 22950, 23140, 23315, + 23442, 23858, 24026, 24322, 24581, 24617, 24655, 24756, 24974, 25191, + 25246, 25287, 25406, 25599, 25830, 26020, 26109, 26149, 26402, 26431, + 26451, 26458, 26495, 26766, 26777, 26848, 26966, 27053, 27089, 27177, + 27519, 27595, 27693, 28294, 28719, 28755, 29073, 29323, 29472, 29496, + 29604, 29761, 29772, 29953, 30030, 30083, 30139, 30210, 30719, 30774, + 30868, 30897, 31200, 31347, 31811, 31880, 31903, 32040, 32048, 32225, + 32335, 32357, 32517, 32579, 32679, 32821, 33294, 33393, 33509, 33675, + 33802, 34390, 34441, 34474, 34547, 34557, 35057, 35262, 35327, 35348, + 35455, 35482, 35668, 35811, 35845, 35953, 36098, 36151, 36602, 36711, + 36946, 37036, 37220, 37291, 37436, 37721, 37747, 37864, 37890, 37923, + 38045, 38588, 38654, 38730, 38930, 39169, 39814, 40401, 40689, 40762, + 40822, 41249, 41399, 41419, 41572, 41736, 41768, 41946, 41989, 42077, + 42079, 42225, 42360, 42524, 42576, 42595, 42691, 42784, 42892, 42930, + 43210, 43299, 43348, 43468, 43510, 43622, 43795, 43824, 43893, 43972, + 43975, 43998, 44008, 44023, 44031, 44049, 44139, 44518, 44555, 44597, + 44815, 44879, 45014, 45020, 45054, 45084, 45100, 45464, 45471, 45505, + 45580, 45593, 45686, 45991, 46019, 46021, 46107, 46138, 46197, 46209, + 46551, 46658, 46988, 47027, 47046, 47071, 47106, 47190, 47225, 47439, + 47465, 47531, 47602, 47660, 48453, 48575}; + test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, + default_query_term, InvertedIndexStorageFormatPB::V1, + false, expected_gif_cardinality, expected_gif_doc_ids); + } + } else { + std::cout << "Testing with SSE support" << std::endl; + { + TabletIndex meta_x86_old_noavx2_v2 = + create_test_index_meta(1744076789957, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37203; + expected_gif_doc_ids = {0, 19, 110, 1000, 2582, + 7196, 9090, 16711, 10279, 44703}; + test_read_index_file(meta_x86_old_noavx2_v2, data_dir, "x86_noavx2_old_v2", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V2, false, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 395; + expected_gif_doc_ids = { + 267, 285, 462, 515, 578, 710, 778, 805, 807, 834, + 958, 1166, 1231, 1266, 1339, 1487, 1523, 1524, 1555, 1622, + 1632, 1676, 1742, 1762, 1798, 2068, 2074, 2220, 2559, 2594, + 2600, 2646, 3101, 3426, 3491, 3827, 4085, 4192, 4358, 4590, + 4776, 4789, 5191, 5236, 5339, 5378, 5578, 5630, 5711, 5742, + 5747, 5884, 5932, 6061, 6157, 6187, 6387, 6404, 6488, 6583, + 6808, 6905, 6969, 7033, 7059, 7582, 7630, 7651, 7820, 8045, + 8161, 8244, 8382, 8472, 8476, 8545, 8628, 8700, 9047, 9129, + 9191, 9197, 9265, 9660, 9808, 9998, 10185, 10324, 10431, 10441, + 10507, 10569, 10611, 10693, 10761, 10965, 10996, 11113, 11348, 11370, + 11578, 11592, 11694, 11969, 12104, 12521, 12718, 12871, 12907, 12911, + 13018, 13113, 13126, 13136, 13140, 13304, 13381, 13568, 13606, 13637, + 13720, 13727, 13871, 13883, 13931, 14075, 14179, 14210, 14367, 14464, + 14475, 14526, 14723, 14835, 14884, 15070, 15163, 15283, 15309, 15373, + 15420, 15495, 15531, 15635, 15704, 15752, 15760, 15768, 15777, 15827, + 15855, 15977, 16048, 16284, 16305, 16348, 16387, 16519, 16637, 16641, + 16954, 17080, 17318, 17409, 17435, 17491, 17550, 17587, 17872, 18021, + 18248, 18272, 18395, 18541, 18569, 19100, 19170, 19331, 19383, 19529, + 19571, 19581, 19594, 19630, 19635, 19714, 19970, 20272, 20317, 20432, + 20689, 20798, 20896, 20936, 21327, 21357, 22049, 22076, 22108, 22125, + 22181, 22185, 22262, 22327, 22411, 22514, 22531, 22553, 22774, 22824, + 22929, 22995, 23026, 23069, 23146, 23193, 23194, 23411, 23430, 23515, + 23561, 23616, 23680, 23898, 24104, 24200, 24235, 24287, 24358, 24417, + 24483, 24678, 24758, 24764, 24824, 24926, 25202, 25257, 25576, 25598, + 25816, 25910, 26015, 26277, 26479, 26787, 26857, 26941, 27140, 27216, + 27282, 27528, 27554, 27725, 27974, 28087, 28136, 28228, 28441, 28491, + 28618, 28628, 28733, 28758, 28793, 28896, 29143, 29150, 29279, 29617, + 29632, 29854, 30086, 30364, 30371, 30868, 31034, 31139, 31421, 31502, + 31538, 31968, 31989, 32220, 32264, 32363, 32393, 32490, 32576, 32671, + 32741, 32867, 32874, 33115, 33503, 33970, 34192, 34258, 34366, 34418, + 34550, 34648, 34667, 34738, 34829, 35184, 35279, 35314, 35510, 35645, + 35684, 35708, 35725, 35768, 35895, 36227, 36247, 36307, 36361, 36456, + 36586, 36638, 36656, 36716, 36856, 36907, 37088, 37217, 37321, 37374, + 37397, 37448, 37481, 37572, 37769, 37911, 37925, 37973, 37988, 38020, + 38108, 38134, 38248, 38429, 38615, 38814, 38827, 38877, 39080, 39167, + 39218, 39593, 39932, 39946, 40143, 40303, 40339, 40405, 40592, 40719, + 40791, 41101, 41194, 41206, 41358, 41455, 41470, 41560, 42374, 42597, + 42718, 42728, 42800, 42826, 42902, 43085, 43130, 43203, 43301, 43448, + 43556, 43604, 43606, 43656, 43781, 44029, 44043, 44129, 44203, 44273, + 44323, 44412, 44590, 44619, 44659}; + test_read_index_file(meta_x86_old_noavx2_v2, data_dir, "x86_noavx2_old_v2", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V2, false, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_old_noavx2_v1 = + create_test_index_meta(1744076790030, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 40657; + expected_gif_doc_ids = {0, 19, 110, 1001, 2581, + 7197, 9090, 16711, 10278, 44701}; + test_read_index_file(meta_x86_old_noavx2_v1, data_dir, "x86_noavx2_old", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V1, false, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 407; + expected_gif_doc_ids = { + 401, 452, 511, 584, 661, 916, 1019, 1149, 1212, 1285, + 1498, 1877, 1998, 2048, 2065, 2123, 2266, 2332, 2436, 2711, + 2743, 2851, 2927, 2959, 3129, 3330, 3433, 3536, 3745, 3808, + 3825, 4472, 4523, 4641, 4780, 4788, 4799, 5032, 5043, 5077, + 5368, 5532, 5638, 5794, 5837, 6179, 6744, 6756, 7057, 7093, + 7100, 7143, 7269, 7277, 7429, 7431, 7484, 7531, 8032, 8275, + 8303, 8327, 8423, 8944, 9043, 9075, 9170, 9317, 9636, 9683, + 9687, 9755, 10054, 10062, 10152, 10208, 10471, 10747, 10771, 10815, + 10861, 10976, 11012, 11014, 11099, 11110, 11251, 11261, 11266, 11293, + 11436, 11474, 11752, 11783, 11800, 11851, 11960, 12028, 12068, 12199, + 12404, 12422, 12605, 12814, 12889, 13104, 13414, 13505, 13572, 13839, + 14099, 14212, 14245, 14248, 14260, 14364, 14396, 14478, 14486, 14542, + 14627, 14674, 14797, 14853, 14875, 14945, 14984, 15254, 15273, 15591, + 15600, 15621, 15650, 15794, 15987, 16046, 16112, 16119, 16170, 16173, + 16325, 16461, 16474, 16525, 16656, 16758, 16963, 17068, 17262, 17329, + 17507, 17511, 17535, 17630, 17897, 17966, 18075, 18163, 18209, 18297, + 18378, 18380, 18419, 18533, 18587, 18681, 18927, 19108, 19283, 19350, + 19370, 19493, 19516, 19612, 19792, 20045, 20107, 20111, 20211, 20266, + 20322, 20325, 20384, 20986, 21035, 21193, 21201, 21578, 21589, 21604, + 21686, 21800, 21816, 21983, 22007, 22185, 22230, 22338, 22482, 22526, + 22540, 22563, 22575, 22726, 22855, 23032, 23087, 23149, 23182, 23890, + 24070, 24192, 24239, 24368, 24521, 24562, 24567, 24625, 24685, 24797, + 24898, 24971, 25006, 25007, 25229, 25425, 25753, 25777, 25877, 25921, + 26328, 26455, 26537, 26587, 26677, 26881, 27086, 27431, 27491, 27537, + 27640, 27748, 27829, 27919, 28104, 28170, 28235, 28449, 28468, 28574, + 28834, 28942, 29092, 29102, 29184, 29215, 29237, 29318, 29622, 29974, + 30071, 30192, 30218, 30302, 30353, 30711, 30869, 31070, 31133, 31193, + 31210, 31273, 31391, 31516, 31704, 31746, 31792, 31807, 32046, 32054, + 32297, 32484, 32513, 32676, 33028, 33173, 33463, 33554, 33620, 33652, + 33741, 33967, 34082, 34092, 34294, 34321, 34338, 34362, 34641, 35035, + 35039, 35149, 35270, 35322, 35349, 35586, 35627, 35820, 35832, 35920, + 36505, 36518, 36589, 36597, 36755, 36772, 36774, 36871, 37211, 37405, + 37564, 37843, 37927, 37935, 38171, 38416, 38520, 38586, 38685, 38821, + 38906, 38944, 39001, 39124, 39153, 39276, 39421, 39426, 39609, 39612, + 39734, 39836, 39999, 40108, 40136, 40226, 40307, 40349, 40403, 40491, + 40993, 41189, 41448, 41487, 41666, 41691, 41716, 41733, 41924, 42006, + 42070, 42317, 42451, 42588, 42800, 42903, 42934, 43217, 43221, 43544, + 43586, 43945, 44030, 44068, 44334, 44355, 44650, 44676, 44722, 44738, + 44915, 45060, 45493, 45650, 45708, 45740, 45800, 46172, 46485, 46674, + 46680, 46763, 46898, 47021, 47092, 47214, 47321, 47758, 47761, 47913, + 48121, 48167, 48184, 48271, 48383, 48431, 48560}; + test_read_index_file(meta_x86_old_noavx2_v1, data_dir, "x86_noavx2_old", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V1, false, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_new_noavx2_v2 = + create_test_index_meta(1744093412497, "request_idx", 2); + std::string field_name_avx2 = "2"; + default_query_term = "gif"; + expected_gif_cardinality = 37409; + expected_gif_doc_ids = {2, 19, 110, 1001, 2583, + 7196, 9090, 16710, 10278, 44702}; + test_read_index_file(meta_x86_new_noavx2_v2, data_dir, "x86_noavx2_new_v2", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V2, false, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 368; + expected_gif_doc_ids = { + 20, 206, 632, 742, 799, 1080, 1217, 1764, 1770, 2401, + 2415, 2425, 2560, 2587, 2852, 2876, 3235, 3336, 3763, 4051, + 4101, 4330, 4361, 4393, 4405, 4743, 4812, 4815, 4897, 4958, + 5088, 5180, 5250, 5326, 5379, 5428, 5497, 5514, 5626, 6041, + 6068, 6107, 6354, 6576, 6779, 6784, 6964, 6988, 7005, 7123, + 7172, 7459, 7575, 7863, 7920, 7923, 7939, 7957, 7977, 8550, + 8654, 8683, 8790, 8921, 8992, 9088, 9101, 9235, 9348, 9469, + 9486, 9670, 9759, 9823, 9833, 9857, 10187, 10477, 10760, 10955, + 11056, 11266, 11289, 11343, 11357, 11439, 11447, 11508, 11608, 11719, + 11797, 11843, 11937, 11939, 12126, 12173, 12228, 12321, 12364, 12504, + 12749, 12821, 12858, 13031, 13108, 13126, 13214, 13235, 13314, 13360, + 13374, 13385, 13455, 13596, 13707, 13771, 13810, 14305, 14444, 14617, + 14679, 14865, 15301, 15332, 15341, 15696, 15807, 15839, 15883, 15946, + 16015, 16156, 16304, 16412, 16607, 16709, 16797, 17290, 17563, 17570, + 18091, 18218, 18220, 18258, 18465, 18628, 18644, 18652, 18653, 18729, + 18737, 19053, 19138, 19155, 19208, 19209, 19245, 19384, 19587, 19947, + 20008, 20151, 20178, 20468, 20623, 20667, 20796, 20924, 21019, 21194, + 21471, 21493, 21540, 21622, 21675, 21746, 21991, 22184, 22490, 22627, + 23004, 23005, 23122, 23197, 23279, 23322, 23733, 23788, 23857, 23898, + 23924, 24359, 24574, 24635, 24759, 24804, 25009, 25083, 25181, 25349, + 25503, 25900, 26135, 26306, 26755, 26838, 26870, 26880, 26927, 27000, + 27063, 27226, 27391, 27418, 27458, 27536, 27544, 27595, 27660, 27854, + 27875, 27901, 27947, 28064, 28201, 28211, 28240, 28270, 28349, 28408, + 28456, 28696, 28829, 28886, 28944, 28967, 29107, 29215, 29782, 29907, + 30382, 30434, 30491, 30515, 30539, 30777, 30896, 30935, 31041, 31161, + 31244, 31521, 31625, 31669, 31800, 31819, 32308, 32327, 32483, 32690, + 32709, 33087, 33222, 33272, 33370, 33522, 33677, 33699, 34086, 34280, + 34303, 34372, 34492, 34564, 34602, 34668, 34738, 34854, 34871, 35154, + 35228, 35474, 35637, 35658, 35671, 35672, 35775, 35896, 35913, 36024, + 36220, 36259, 36394, 36437, 36671, 36833, 37023, 37073, 37095, 37136, + 37171, 37262, 37369, 37528, 37583, 37697, 37710, 37842, 37955, 38073, + 38080, 38091, 38100, 38187, 38214, 38283, 38430, 38485, 38578, 38592, + 38910, 39157, 39254, 39387, 39388, 39570, 39642, 39664, 39732, 39814, + 39817, 39865, 40071, 40096, 40113, 40495, 40529, 40596, 40676, 40711, + 40850, 41156, 41160, 41236, 41809, 41822, 41895, 41912, 41961, 41991, + 42037, 42271, 42333, 42556, 42614, 42682, 42897, 43041, 43429, 43530, + 43597, 43646, 43754, 44312, 44334, 44438, 44489, 44513}; + test_read_index_file(meta_x86_new_noavx2_v2, data_dir, "x86_noavx2_new_v2", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V2, true, + expected_gif_cardinality, expected_gif_doc_ids); + } + { + TabletIndex meta_x86_new_noavx2_v1 = + create_test_index_meta(1744093412581, "request_idx", 2); + std::string field_name_avx2 = "request"; + default_query_term = "gif"; + expected_gif_cardinality = 37272; + expected_gif_doc_ids = {0, 19, 110, 1001, 2581, + 7197, 9090, 16711, 10278, 44701}; + test_read_index_file(meta_x86_new_noavx2_v1, data_dir, "x86_noavx2_new", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V1, false, + expected_gif_cardinality, expected_gif_doc_ids); + default_query_term = "/english/index.html"; + expected_gif_cardinality = 326; + expected_gif_doc_ids = { + 50, 117, 237, 623, 1102, 1172, 1358, 1612, 1725, 1932, + 2074, 2233, 2395, 2618, 2871, 2977, 2985, 3305, 3375, 3385, + 3518, 3713, 3761, 3810, 3879, 3917, 4059, 4081, 4114, 4121, + 4292, 4306, 4509, 4565, 4566, 4700, 4711, 4831, 4832, 5024, + 5029, 5184, 5324, 5432, 5618, 5753, 5803, 5844, 6558, 6594, + 6876, 6901, 7273, 7429, 7498, 7504, 7624, 7681, 7842, 7883, + 7971, 7983, 8349, 8530, 8597, 8632, 8687, 8807, 8847, 8865, + 8886, 9303, 9315, 9319, 9428, 9509, 9601, 9799, 9909, 10101, + 10177, 10203, 10228, 10553, 10666, 10693, 10780, 10814, 10824, 11046, + 11118, 11265, 11409, 11463, 11611, 11730, 11767, 12041, 12096, 12119, + 12294, 12475, 12496, 12634, 12759, 12987, 13181, 13276, 13373, 13566, + 13830, 14001, 14383, 14425, 14613, 14846, 15002, 15039, 15072, 15817, + 15950, 16092, 16109, 16334, 16442, 16531, 16635, 17023, 17030, 17661, + 17726, 17856, 18208, 18210, 18261, 18414, 18420, 18582, 18645, 19045, + 19101, 19374, 19535, 19728, 19740, 19815, 19861, 19938, 19955, 19991, + 20512, 20908, 21066, 21097, 21403, 21524, 21789, 22177, 22298, 22402, + 22422, 22769, 22836, 22874, 22985, 23005, 23018, 23027, 23291, 23361, + 23413, 23500, 23513, 23588, 23609, 23851, 23959, 24228, 24383, 24445, + 24468, 24636, 24817, 24888, 25070, 25459, 25618, 25640, 26178, 26459, + 26583, 26970, 27070, 27131, 27147, 27479, 27606, 27616, 27696, 27780, + 27871, 27960, 28094, 28306, 28442, 28516, 28609, 28843, 29042, 29488, + 29512, 29686, 29891, 29932, 29956, 30094, 30319, 30357, 30478, 30527, + 30914, 31035, 31530, 31586, 31659, 31696, 32134, 32178, 32273, 32713, + 32932, 33273, 33334, 33338, 33461, 33481, 33552, 33727, 33852, 33982, + 34104, 34235, 34253, 34308, 34816, 35126, 35147, 35246, 35293, 35329, + 35402, 35482, 35535, 35940, 35986, 36034, 36075, 36125, 36170, 36313, + 36340, 36683, 36823, 37002, 37351, 37458, 37537, 37552, 37808, 37943, + 37952, 37954, 38166, 38461, 38624, 38756, 38807, 38847, 39096, 39147, + 39358, 39592, 40015, 40170, 40201, 40230, 40409, 40542, 40593, 40608, + 40687, 40825, 40894, 40903, 41234, 41278, 41380, 41488, 41522, 41555, + 41559, 41593, 41678, 41742, 41765, 41792, 42054, 42248, 42319, 42623, + 42660, 42886, 42925, 43338, 43552, 43593, 43594, 43766, 43782, 43881, + 44229, 44263, 44324, 44537, 44601, 44661}; + test_read_index_file(meta_x86_new_noavx2_v1, data_dir, "x86_noavx2_new", + field_name_avx2, default_query_term, + InvertedIndexStorageFormatPB::V1, false, + expected_gif_cardinality, expected_gif_doc_ids); + } + } + } + } + +private: + std::unique_ptr _inverted_index_searcher_cache; + std::unique_ptr _inverted_index_query_cache; +}; + +// String index reading test +TEST_F(InvertedIndexReaderTest, StringIndexRead) { + test_string_index_read(); +} + +// NULL value bitmap test +TEST_F(InvertedIndexReaderTest, NullBitmapRead) { + test_null_bitmap_read(); +} + +// BKD index reading test +TEST_F(InvertedIndexReaderTest, BkdIndexRead) { + test_bkd_index_read(); +} + +// Query cache test +TEST_F(InvertedIndexReaderTest, QueryCache) { + test_query_cache(); +} + +// Searcher cache test +TEST_F(InvertedIndexReaderTest, SearcherCache) { + test_searcher_cache(); +} + +// Test string index with large document set (>512 docs) +TEST_F(InvertedIndexReaderTest, StringIndexLargeDocset) { + test_string_index_large_docset(); +} + +// Test string index with large document set using V3 format +TEST_F(InvertedIndexReaderTest, StringIndexLargeDocsetV3) { + test_string_index_large_docset_v3(); +} + +// Test reading existing large document set index file +TEST_F(InvertedIndexReaderTest, CompatibleTest) { + test_compatible_read_cross_platform(); +} + +class MockInvertedIndexReader : public InvertedIndexReader { +public: + MockInvertedIndexReader(InvertedIndexReaderType type, const TabletIndex* tablet_index) + : InvertedIndexReader(tablet_index, nullptr), _type(type) {} + + MOCK_METHOD(Status, new_iterator, + (const io::IOContext& io_ctx, OlapReaderStatistics* stats, + RuntimeState* runtime_state, std::unique_ptr* iterator), + (override)); + + MOCK_METHOD(Status, query, + (const io::IOContext* io_ctx, OlapReaderStatistics* stats, + RuntimeState* runtime_state, const std::string& column_name, + const void* query_value, InvertedIndexQueryType query_type, + std::shared_ptr& bit_map), + (override)); + + MOCK_METHOD(Status, try_query, + (const io::IOContext* io_ctx, OlapReaderStatistics* stats, + RuntimeState* runtime_state, const std::string& column_name, + const void* query_value, InvertedIndexQueryType query_type, uint32_t* count), + (override)); + + InvertedIndexReaderType type() override { return _type; } + +private: + InvertedIndexReaderType _type; +}; + +TEST_F(InvertedIndexReaderTest, InvertedIndexIteratorTest) { + // Mock dependencies + io::IOContext io_ctx; + TabletIndex tablet_index; + + // Create iterator + InvertedIndexIterator iterator(io_ctx, nullptr, nullptr); + + // Create mock readers + auto string_reader = std::make_shared( + InvertedIndexReaderType::STRING_TYPE, &tablet_index); + auto fulltext_reader = std::make_shared( + InvertedIndexReaderType::FULLTEXT, &tablet_index); + auto bkd_reader = + std::make_shared(InvertedIndexReaderType::BKD, &tablet_index); + + // Test add_reader and get_reader + iterator.add_reader(InvertedIndexReaderType::STRING_TYPE, string_reader); + iterator.add_reader(InvertedIndexReaderType::FULLTEXT, fulltext_reader); + iterator.add_reader(InvertedIndexReaderType::BKD, bkd_reader); + + // Verify get_reader returns correct readers + ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::STRING_TYPE), string_reader); + ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::FULLTEXT), fulltext_reader); + ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::BKD), bkd_reader); + ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::UNKNOWN), nullptr); + + // Test _select_best_reader() - should return first reader when no criteria + auto best_reader = iterator._select_best_reader(); + ASSERT_TRUE(best_reader.has_value()); + ASSERT_TRUE(best_reader.value()); // First added + + // Test _select_best_reader with type and query criteria + // Create mock column types + auto string_type = std::make_shared(); + auto int_type = std::make_shared(); + + // String type with match query should prefer fulltext + auto result = + iterator._select_best_reader(string_type, InvertedIndexQueryType::MATCH_ANY_QUERY); + ASSERT_TRUE(result.has_value()); + ASSERT_EQ(result.value(), fulltext_reader); + + // String type with equal query should prefer string reader + result = iterator._select_best_reader(string_type, InvertedIndexQueryType::EQUAL_QUERY); + ASSERT_TRUE(result.has_value()); + ASSERT_EQ(result.value(), string_reader); + + // Numeric type should return error since we don't have logic for it in this implementation + result = iterator._select_best_reader(int_type, InvertedIndexQueryType::LESS_THAN_QUERY); + ASSERT_FALSE(result.has_value()); + + // Test empty readers case + InvertedIndexIterator empty_iterator(io_ctx, nullptr, nullptr); + auto empty_result = empty_iterator._select_best_reader(); + ASSERT_FALSE(empty_result.has_value()); + + empty_result = empty_iterator._select_best_reader(string_type, + InvertedIndexQueryType::MATCH_PHRASE_QUERY); + ASSERT_FALSE(empty_result.has_value()); +} + +} // namespace doris::segment_v2 \ No newline at end of file diff --git a/be/test/olap/tablet_index_test.cpp b/be/test/olap/tablet_index_test.cpp index 7842f9af18d51d..8850a12a8011b8 100644 --- a/be/test/olap/tablet_index_test.cpp +++ b/be/test/olap/tablet_index_test.cpp @@ -61,11 +61,11 @@ TEST_F(TabletIndexTest, test_inverted_index) { EXPECT_TRUE(tablet_schema->has_inverted_index()); EXPECT_EQ(tablet_schema->inverted_indexes().size(), 2); - EXPECT_TRUE(tablet_schema->inverted_index(tablet_schema->column_by_uid(0)) != nullptr); - EXPECT_TRUE(tablet_schema->inverted_index(tablet_schema->column_by_uid(1)) != nullptr); - EXPECT_TRUE(tablet_schema->inverted_index(tablet_schema->column_by_uid(2)) == nullptr); - EXPECT_TRUE(tablet_schema->inverted_index(3) == nullptr); - EXPECT_TRUE(tablet_schema->inverted_index(4, "v1.a") == nullptr); + EXPECT_TRUE(!tablet_schema->inverted_indexs(tablet_schema->column_by_uid(0)).empty()); + EXPECT_TRUE(!tablet_schema->inverted_indexs(tablet_schema->column_by_uid(1)).empty()); + EXPECT_TRUE(tablet_schema->inverted_indexs(tablet_schema->column_by_uid(2)).empty()); + EXPECT_TRUE(tablet_schema->inverted_indexs(3).empty()); + EXPECT_TRUE(tablet_schema->inverted_indexs(4, "v1.a").empty()); } TEST_F(TabletIndexTest, test_schema_index_diff) { diff --git a/be/test/olap/tablet_schema_index_test.cpp b/be/test/olap/tablet_schema_index_test.cpp new file mode 100644 index 00000000000000..e7cdafe70bb42e --- /dev/null +++ b/be/test/olap/tablet_schema_index_test.cpp @@ -0,0 +1,177 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include + +#include "olap/tablet_schema.h" + +namespace doris { + +class TabletSchemaIndexTest : public testing::Test { +protected: + void SetUp() override { + // Setup common test data + _tablet_schema = std::make_shared(); + } + + TabletIndex create_test_index(int64_t index_id, IndexType type, + const std::vector& col_uids, + const std::string& suffix = "") { + TabletIndex index; + index._index_id = index_id; + index._index_type = type; + index._col_unique_ids = col_uids; + index.set_escaped_escaped_index_suffix_path(suffix); + return index; + } + + std::shared_ptr _tablet_schema; +}; + +TEST_F(TabletSchemaIndexTest, TestAddInvertedIndex) { + // Add inverted index with suffix + TabletIndex index = create_test_index(1, IndexType::INVERTED, {100}, "suffix1"); + _tablet_schema->append_index(std::move(index)); + + // Verify index mapping + auto found_indexs = _tablet_schema->inverted_indexs(100, "suffix1"); + ASSERT_NE(found_indexs.size(), 0); + EXPECT_EQ(found_indexs[0]->index_id(), 1); + EXPECT_EQ(found_indexs[0]->get_index_suffix(), "suffix1"); +} + +TEST_F(TabletSchemaIndexTest, TestRemoveIndex) { + // Add multiple indexes + _tablet_schema->append_index(create_test_index(1, IndexType::INVERTED, {100}, "suffix1")); + _tablet_schema->append_index(create_test_index(2, IndexType::INVERTED, {200}, "suffix2")); + + // Remove index 1 + _tablet_schema->remove_index(1); + + // Verify index 1 removed + EXPECT_EQ(_tablet_schema->inverted_indexs(100, "suffix1").size(), 0); + + // Verify index 2 still exists + auto found_indexs = _tablet_schema->inverted_indexs(200, "suffix2"); + ASSERT_NE(found_indexs.size(), 0); + EXPECT_EQ(found_indexs[0]->index_id(), 2); +} + +TEST_F(TabletSchemaIndexTest, TestUpdateIndex) { + // Add initial index + _tablet_schema->append_index(create_test_index(1, IndexType::INVERTED, {100}, "old_suffix")); + ASSERT_NE(_tablet_schema->inverted_indexs(100, "old_suffix").size(), 0); + + // Update index with new suffix + _tablet_schema->remove_index(1); + _tablet_schema->append_index(create_test_index(1, IndexType::INVERTED, {100}, "new_suffix")); + + // Verify update + EXPECT_EQ(_tablet_schema->inverted_indexs(100, "old_suffix").size(), 0); + auto found_indexs = _tablet_schema->inverted_indexs(100, "new_suffix"); + ASSERT_NE(found_indexs.size(), 0); + EXPECT_EQ(found_indexs[0]->get_index_suffix(), "new%5Fsuffix"); +} + +TEST_F(TabletSchemaIndexTest, TestMultipleColumnsIndex) { + // Add index with multiple columns + TabletIndex index = create_test_index(1, IndexType::INVERTED, {100, 200}, "multi_col"); + _tablet_schema->append_index(std::move(index)); + + // Verify both columns mapped + auto indexs1 = _tablet_schema->inverted_indexs(100, "multi_col"); + auto indexs2 = _tablet_schema->inverted_indexs(200, "multi_col"); + ASSERT_NE(indexs1.size(), 0); + ASSERT_EQ(indexs1[0], indexs2[0]); // Should point to same index +} + +TEST_F(TabletSchemaIndexTest, TestDuplicateIndexKey) { + // Add two indexes with same (type,col,suffix) + _tablet_schema->append_index(create_test_index(1, IndexType::INVERTED, {100}, "suffix")); + _tablet_schema->append_index(create_test_index(2, IndexType::INVERTED, {100}, "suffix")); + + // The last added should override + auto found_indexs = _tablet_schema->inverted_indexs(100, "suffix"); + ASSERT_NE(found_indexs.size(), 0); + EXPECT_EQ(found_indexs[0]->index_id(), 1); +} + +TEST_F(TabletSchemaIndexTest, TestClearIndexes) { + _tablet_schema->append_index(create_test_index(1, IndexType::INVERTED, {100})); + _tablet_schema->clear_index(); + + EXPECT_EQ(_tablet_schema->inverted_indexs(100, "").size(), 0); + EXPECT_TRUE(_tablet_schema->inverted_indexes().empty()); +} + +TEST_F(TabletSchemaIndexTest, TestUpdateIndexMethod) { + TabletColumn col; + col.set_parent_unique_id(100); + col.set_path_info(vectorized::PathInData("v2")); + _tablet_schema->append_column(col); + + TabletIndex old_index = create_test_index(1, IndexType::INVERTED, {100}, "v2"); + _tablet_schema->append_index(std::move(old_index)); + + std::vector new_indexs; + TabletIndex new_index = create_test_index(1, IndexType::INVERTED, {100}, "v2"); + new_index._properties["new_prop"] = "value"; + new_indexs.emplace_back(std::move(new_index)); + + _tablet_schema->update_index(col, IndexType::INVERTED, std::move(new_indexs)); + + auto updated_indexs = _tablet_schema->inverted_indexs(100, "v2"); + ASSERT_NE(updated_indexs.size(), 0); + EXPECT_EQ(updated_indexs[0]->index_id(), 1); + EXPECT_EQ(updated_indexs[0]->properties().at("new_prop"), "value"); + + auto key = std::make_tuple(IndexType::INVERTED, 100, "v2"); + EXPECT_NE(_tablet_schema->_col_id_suffix_to_index.find(key), + _tablet_schema->_col_id_suffix_to_index.end()); +} + +TEST_F(TabletSchemaIndexTest, TestUpdateIndexAddNewWhenNotExist) { + // Not exist, return nullptr + TabletColumn col; + col.set_unique_id(200); + + std::vector new_indexs; + new_indexs.emplace_back(create_test_index(2, IndexType::INVERTED, {200}, "v3")); + _tablet_schema->update_index(col, IndexType::INVERTED, std::move(new_indexs)); + + auto indexs = _tablet_schema->inverted_indexs(200, "v3"); + ASSERT_EQ(indexs.size(), 0); +} + +TEST_F(TabletSchemaIndexTest, TestUpdateIndexWithMultipleColumns) { + TabletColumn col1, col2; + col1.set_unique_id(300); + col2.set_unique_id(400); + _tablet_schema->append_column(col1); + _tablet_schema->append_column(col2); + + TabletIndex old_multi_index = create_test_index(3, IndexType::INVERTED, {300, 400}, "multi"); + _tablet_schema->append_index(std::move(old_multi_index)); + + TabletIndex new_multi_index = create_test_index(3, IndexType::NGRAM_BF, {300, 400}); + _tablet_schema->append_index(std::move(new_multi_index)); + + ASSERT_NE(_tablet_schema->inverted_indexs(300, "multi").size(), 0); + EXPECT_NE(_tablet_schema->get_ngram_bf_index(400), nullptr); +} + +} // namespace doris \ No newline at end of file diff --git a/be/test/olap/tablet_schema_multi_index_test.cpp b/be/test/olap/tablet_schema_multi_index_test.cpp new file mode 100644 index 00000000000000..949af0b48b1291 --- /dev/null +++ b/be/test/olap/tablet_schema_multi_index_test.cpp @@ -0,0 +1,373 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include + +#include + +#include "olap/tablet_schema.h" +#include "vec/common/string_ref.h" + +namespace doris { + +class TabletSchemaMultiIndexTest : public ::testing::Test { +protected: + void SetUp() override { + // Common setup for all tests + schema = std::make_shared(); + + auto col1 = std::make_shared(); + col1->_unique_id = 0; + col1->_col_name = "c0"; + schema->_cols.push_back(col1); + + auto col2 = std::make_shared(); + col2->_unique_id = 1; + col2->_col_name = "c1"; + schema->_cols.push_back(col2); + + auto col3 = std::make_shared(); + col3->_unique_id = 2; + col3->_col_name = "c2"; + schema->_cols.push_back(col3); + + schema->_field_name_to_index[StringRef(col1->_col_name)] = 0; + schema->_field_name_to_index[StringRef(col2->_col_name)] = 1; + schema->_field_name_to_index[StringRef(col3->_col_name)] = 2; + + schema->_num_columns = 3; + } + + void TearDown() override { + // Clean up if needed + } + + TabletSchemaSPtr schema; +}; + +TEST_F(TabletSchemaMultiIndexTest, AppendIndex) { + TabletIndex index; + index._index_id = 100; + index._index_type = IndexType::INVERTED; + index._col_unique_ids = {1, 2}; + index._escaped_index_suffix_path = "suffix1"; + + // Append first index + schema->append_index(std::move(index)); + + // Verify the index was added + ASSERT_EQ(schema->_indexes.size(), 1); + ASSERT_EQ(schema->_indexes[0]->_index_id, 100); + + // Verify the mapping was created for both columns + TabletSchema::IndexKey key1(IndexType::INVERTED, 1, "suffix1"); + TabletSchema::IndexKey key2(IndexType::INVERTED, 2, "suffix1"); + + ASSERT_EQ(schema->_col_id_suffix_to_index[key1].size(), 1); + ASSERT_EQ(schema->_col_id_suffix_to_index[key2].size(), 1); + ASSERT_EQ(schema->_col_id_suffix_to_index[key1][0], 0); + ASSERT_EQ(schema->_col_id_suffix_to_index[key2][0], 0); + + // Append second index with same columns + TabletIndex index2; + index2._index_id = 101; + index2._index_type = IndexType::INVERTED; + index2._col_unique_ids = {1, 2}; + index2._escaped_index_suffix_path = "suffix1"; + + schema->append_index(std::move(index2)); + + // Verify both indexes are present + ASSERT_EQ(schema->_indexes.size(), 2); + + // Verify mapping now contains both indexes for the columns + ASSERT_EQ(schema->_col_id_suffix_to_index[key1].size(), 2); + ASSERT_EQ(schema->_col_id_suffix_to_index[key2].size(), 2); + ASSERT_EQ(schema->_col_id_suffix_to_index[key1][0], 0); + ASSERT_EQ(schema->_col_id_suffix_to_index[key1][1], 1); +} + +TEST_F(TabletSchemaMultiIndexTest, AppendIndexWithExtractedColumn) { + TabletIndex index; + index._index_id = 100; + index._index_type = IndexType::INVERTED; + index._col_unique_ids = {3}; // extracted column unique id + index._escaped_index_suffix_path = "suffix1"; + + schema->append_index(std::move(index)); + + // Should map to parent unique id (1) + TabletSchema::IndexKey key(IndexType::INVERTED, 3, "suffix1"); + ASSERT_EQ(schema->_col_id_suffix_to_index[key].size(), 1); + ASSERT_EQ(schema->_col_id_suffix_to_index[key][0], 0); +} + +TEST_F(TabletSchemaMultiIndexTest, UpdateIndex) { + // Setup initial index + TabletIndex index; + index._index_id = 100; + index._index_type = IndexType::INVERTED; + index._col_unique_ids = {1}; + schema->append_index(std::move(index)); + + // Create updated index + std::vector updates; + TabletIndex updated_index; + updated_index._index_id = 101; + updated_index._index_type = IndexType::INVERTED; + updated_index._col_unique_ids = {1}; + std::map propertie = {{"updated_key", "updated_value"}}; + updated_index._properties = propertie; + updates.push_back(updated_index); + + TabletColumn col1; + col1._unique_id = 1; + + // Update the index + schema->update_index(col1, IndexType::INVERTED, std::move(updates)); + + // Verify the index was updated + ASSERT_EQ(schema->_indexes[0]->_index_id, 101); + ASSERT_EQ(schema->_indexes[0]->_properties, propertie); +} + +TEST_F(TabletSchemaMultiIndexTest, UpdateIndexWithMultipleIndexes) { + // Setup two indexes for same column + TabletIndex index1; + index1._index_id = 100; + index1._index_type = IndexType::INVERTED; + index1._col_unique_ids = {1}; + schema->append_index(std::move(index1)); + + TabletIndex index2; + index2._index_id = 101; + index2._index_type = IndexType::INVERTED; + index2._col_unique_ids = {1}; + schema->append_index(std::move(index2)); + + // Create two updates + std::vector updates; + TabletIndex updated1; + updated1._index_id = 102; + updated1._index_type = IndexType::INVERTED; + updated1._col_unique_ids = {1}; + std::map properties1 = {{"updated_key1", "updated_value"}}; + updated1._properties = properties1; + updates.push_back(updated1); + + TabletIndex updated2; + updated2._index_id = 103; + updated2._index_type = IndexType::INVERTED; + updated2._col_unique_ids = {1}; + std::map properties2 = {{"updated_key2", "updated_value"}}; + updated2._properties = properties2; + updates.push_back(updated2); + + TabletColumn col1; + col1._unique_id = 1; + + // Update the indexes + schema->update_index(col1, IndexType::INVERTED, std::move(updates)); + + // Verify both indexes were updated + ASSERT_EQ(schema->_indexes[0]->_index_id, 102); + ASSERT_EQ(schema->_indexes[1]->_index_id, 103); + ASSERT_EQ(schema->_indexes[0]->_properties, properties1); + ASSERT_EQ(schema->_indexes[1]->_properties, properties2); +} + +TEST_F(TabletSchemaMultiIndexTest, UpdateIndexWithMismatchedCount) { + // Setup one index + TabletIndex index; + index._index_id = 100; + index._index_type = IndexType::INVERTED; + index._col_unique_ids = {1}; + schema->append_index(std::move(index)); + + // Try to update with two indexes (should fail) + std::vector updates; + TabletIndex updated1; + updated1._index_id = 101; + updated1._index_type = IndexType::INVERTED; + updated1._col_unique_ids = {1}; + std::map properties1 = {{"updated_key1", "updated_value"}}; + updated1._properties = properties1; + updates.push_back(updated1); + + TabletIndex updated2; + updated2._index_id = 102; + updated2._index_type = IndexType::INVERTED; + updated2._col_unique_ids = {1}; + updates.push_back(updated2); + + TabletColumn col1; + col1._unique_id = 1; + + schema->update_index(col1, IndexType::INVERTED, std::move(updates)); + + // Verify the index was NOT updated + ASSERT_NE(schema->_indexes[0]->_properties, properties1); +} + +TEST_F(TabletSchemaMultiIndexTest, RemoveIndex) { + // Setup two indexes + TabletIndex index1; + index1._index_id = 100; + index1._index_type = IndexType::INVERTED; + index1._col_unique_ids = {1}; + index1._escaped_index_suffix_path = ""; + schema->append_index(std::move(index1)); + + TabletIndex index2; + index2._index_id = 101; + index2._index_type = IndexType::INVERTED; + index2._col_unique_ids = {1}; + index2._escaped_index_suffix_path = "suffix1"; + schema->append_index(std::move(index2)); + + // Remove first index + schema->remove_index(100); + + // Verify only second index remains + ASSERT_EQ(schema->_indexes.size(), 1); + ASSERT_EQ(schema->_indexes[0]->_index_id, 101); + + // Verify mapping was updated + TabletSchema::IndexKey key(IndexType::INVERTED, 1, "suffix1"); + ASSERT_EQ(schema->_col_id_suffix_to_index[key].size(), 1); + ASSERT_EQ(schema->_col_id_suffix_to_index[key][0], 0); // Now points to position 0 +} + +TEST_F(TabletSchemaMultiIndexTest, RemoveNonExistentIndex) { + // Setup one index + TabletIndex index; + index._index_id = 100; + index._index_type = IndexType::INVERTED; + index._col_unique_ids = {1}; + index._escaped_index_suffix_path = "suffix1"; + schema->append_index(std::move(index)); + + // Try to remove non-existent index + schema->remove_index(999); + + // Verify original index still exists + ASSERT_EQ(schema->_indexes.size(), 1); + ASSERT_EQ(schema->_indexes[0]->_index_id, 100); +} + +TEST_F(TabletSchemaMultiIndexTest, UpdateIndexesFromThrift) { + std::vector tindexes; + + // Create first thrift index + doris::TOlapTableIndex tindex1; + tindex1.__set_index_id(100); + tindex1.__set_index_type(TIndexType::type::INVERTED); + tindex1.columns.push_back("c1"); + tindexes.push_back(tindex1); + + // Create second thrift index + doris::TOlapTableIndex tindex2; + tindex2.__set_index_id(101); + tindex2.__set_index_type(TIndexType::type::INVERTED); + tindex2.columns.push_back("c1"); + tindex2.columns.push_back("c2"); + tindexes.push_back(tindex2); + + // Update from thrift + schema->update_indexes_from_thrift(tindexes); + + // Verify indexes were created + ASSERT_EQ(schema->_indexes.size(), 2); + ASSERT_EQ(schema->_indexes[0]->_index_id, 100); + ASSERT_EQ(schema->_indexes[1]->_index_id, 101); + + // Verify mappings were created + TabletSchema::IndexKey key1(IndexType::INVERTED, 1, ""); + TabletSchema::IndexKey key2(IndexType::INVERTED, 2, ""); + + ASSERT_EQ(schema->_col_id_suffix_to_index[key1].size(), 2); // Both indexes reference col1 + ASSERT_EQ(schema->_col_id_suffix_to_index[key2].size(), 1); // Only second index references col2 +} + +TEST_F(TabletSchemaMultiIndexTest, InvertedIndexesLookup) { + // Setup two inverted indexes for col1 + TabletIndex index1; + index1._index_id = 100; + index1._index_type = IndexType::INVERTED; + index1._col_unique_ids = {1}; + index1._escaped_index_suffix_path = "suffix1"; + schema->append_index(std::move(index1)); + + TabletIndex index2; + index2._index_id = 101; + index2._index_type = IndexType::INVERTED; + index2._col_unique_ids = {1}; + index2._escaped_index_suffix_path = "suffix1"; + schema->append_index(std::move(index2)); + + // Setup one inverted index for col2 + TabletIndex index3; + index3._index_id = 102; + index3._index_type = IndexType::INVERTED; + index3._col_unique_ids = {2}; + index3._escaped_index_suffix_path = "suffix1"; + schema->append_index(std::move(index3)); + + // Lookup indexes for col1 + auto indexes = schema->inverted_indexs(1, "suffix1"); + ASSERT_EQ(indexes.size(), 2); + ASSERT_EQ(indexes[0]->_index_id, 100); + ASSERT_EQ(indexes[1]->_index_id, 101); + + // Lookup indexes for col2 + indexes = schema->inverted_indexs(2, "suffix1"); + ASSERT_EQ(indexes.size(), 1); + ASSERT_EQ(indexes[0]->_index_id, 102); + + // Lookup non-existent column + indexes = schema->inverted_indexs(999, "suffix1"); + ASSERT_TRUE(indexes.empty()); +} + +TEST_F(TabletSchemaMultiIndexTest, InvertedIndexesLookupWithColumnObject) { + // Setup index for extracted column + TabletIndex index; + index._index_id = 100; + index._index_type = IndexType::INVERTED; + index._col_unique_ids = {3}; // extracted column unique id + schema->append_index(std::move(index)); + + TabletColumn col1; + col1._unique_id = 3; + + // Lookup using the extracted column + auto indexes = schema->inverted_indexs(col1); + ASSERT_EQ(indexes.size(), 1); + ASSERT_EQ(indexes[0]->_index_id, 100); +} + +TEST_F(TabletSchemaMultiIndexTest, InvertedIndexesUnsupportedColumn) { + // Create an unsupported column type + TabletColumn unsupported_col; + unsupported_col._unique_id = 4; + + // Should return empty vector for unsupported column + auto indexes = schema->inverted_indexs(unsupported_col); + ASSERT_TRUE(indexes.empty()); +} + +} // namespace doris \ No newline at end of file diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java index 32ddbafa3ce522..5e4bbe5205c269 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java @@ -676,7 +676,9 @@ public void validate(ConnectContext ctx) { if (!indexes.isEmpty()) { Set distinct = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); boolean disableInvertedIndexV1ForVariant = false; - TInvertedIndexFileStorageFormat invertedIndexFileStorageFormat; + + Set>> nonInvertedIndexes = new HashSet<>(); + Map, Set> invertedIndexes = new HashMap<>(); try { invertedIndexFileStorageFormat = PropertyAnalyzer.analyzeInvertedIndexFileStorageFormat( new HashMap<>(properties)); @@ -709,6 +711,23 @@ public void validate(ConnectContext ctx) { } } distinct.add(indexDef.getIndexName()); + + List colNames = indexDef.getColumnNames().stream() + .map(String::toUpperCase) + .collect(Collectors.toList()); + if (indexDef.isAllStringInvertedIndex(columns)) { + boolean isAnalyzed = indexDef.isAnalyzedInvertedIndex(); + Set analyzedSet = invertedIndexes.computeIfAbsent(colNames, k -> new HashSet<>()); + if (!analyzedSet.add(isAnalyzed)) { + throw new AnalysisException( + "Duplicate inverted index with same analyzed property on columns: " + colNames); + } + } else { + Pair> pair = Pair.of(indexDef.getIndexType(), colNames); + if (!nonInvertedIndexes.add(pair)) { + throw new AnalysisException("Duplicate index type and columns: " + pair); + } + } } if (distinct.size() != indexes.size()) { throw new AnalysisException("index name must be unique."); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java index 5d4e592bd53f24..874929a791f850 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java @@ -312,4 +312,49 @@ public String toSql(String tableName) { public Map getProperties() { return properties; } + + public boolean isAnalyzedInvertedIndex() { + return indexType == IndexDef.IndexType.INVERTED + && properties != null + && properties.containsKey(InvertedIndexUtil.INVERTED_INDEX_PARSER_KEY); + } + + public boolean isNonAnalyzedInvertedIndex() { + return indexType == IndexDef.IndexType.INVERTED + && (properties == null + || !properties.containsKey(InvertedIndexUtil.INVERTED_INDEX_PARSER_KEY)); + } + + /** + * Check whether all columns in this INVERTED index are of string type. + */ + public boolean isAllStringInvertedIndex(List columns) throws AnalysisException { + if (indexType != IndexType.INVERTED) { + return false; + } + + for (String indexColName : getColumnNames()) { + ColumnDefinition targetColumn = null; + for (ColumnDefinition column : columns) { + if (column.getName().equalsIgnoreCase(indexColName)) { + targetColumn = column; + break; + } + } + + if (targetColumn == null) { + throw new AnalysisException( + "Column does not exist in table. invalid column: " + indexColName); + } + + boolean isString = targetColumn.getType().isCharType() + || targetColumn.getType().isVarcharType() + || targetColumn.getType().isStringType(); + + if (!isString) { + return false; + } + } + return true; + } } diff --git a/regression-test/data/inverted_index_p0/test_single_column_multi_index.out b/regression-test/data/inverted_index_p0/test_single_column_multi_index.out new file mode 100644 index 00000000000000..2ec2c01184c5e5 --- /dev/null +++ b/regression-test/data/inverted_index_p0/test_single_column_multi_index.out @@ -0,0 +1,7 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +8630 + +-- !sql -- +990 + diff --git a/regression-test/suites/inverted_index_p0/test_single_column_multi_index.groovy b/regression-test/suites/inverted_index_p0/test_single_column_multi_index.groovy new file mode 100644 index 00000000000000..1eb7eda4db5c77 --- /dev/null +++ b/regression-test/suites/inverted_index_p0/test_single_column_multi_index.groovy @@ -0,0 +1,111 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + +suite("test_single_column_multi_index", "nonConcurrent"){ + def indexTbName = "test_single_column_multi_index" + + sql "DROP TABLE IF EXISTS ${indexTbName}" + + sql """ + CREATE TABLE ${indexTbName} ( + `@timestamp` int(11) NULL COMMENT "", + `clientip` varchar(20) NULL COMMENT "", + `request` text NULL COMMENT "", + `status` int(11) NULL COMMENT "", + `size` int(11) NULL COMMENT "", + INDEX request_keyword_idx (`request`) USING INVERTED COMMENT '', + INDEX request_text_idx (`request`) USING INVERTED PROPERTIES("parser" = "english", "support_phrase" = "true") COMMENT '' + ) ENGINE=OLAP + DUPLICATE KEY(`@timestamp`) + COMMENT "OLAP" + DISTRIBUTED BY RANDOM BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + def load_httplogs_data = {table_name, label, read_flag, format_flag, file_name, ignore_failure=false, + expected_succ_rows = -1, load_to_single_tablet = 'true' -> + + // load the json data + streamLoad { + table "${table_name}" + + // set http request header params + set 'label', label + "_" + UUID.randomUUID().toString() + set 'read_json_by_line', read_flag + set 'format', format_flag + file file_name // import json file + time 10000 // limit inflight 10s + if (expected_succ_rows >= 0) { + set 'max_filter_ratio', '1' + } + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (ignore_failure && expected_succ_rows < 0) { return } + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + if (expected_succ_rows >= 0) { + assertEquals(json.NumberLoadedRows, expected_succ_rows) + } else { + assertEquals(json.NumberTotalRows, json.NumberLoadedRows + json.NumberUnselectedRows) + assertTrue(json.NumberLoadedRows > 0 && json.LoadBytes > 0) + } + } + } + } + + try { + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + load_httplogs_data.call(indexTbName, 'test_index_match_all', 'true', 'json', 'documents-1000.json') + + sql "sync" + sql """ set enable_common_expr_pushdown = true; """ + GetDebugPoint().enableDebugPointForAllBEs("VMatchPredicate.execute") + + GetDebugPoint().enableDebugPointForAllBEs("inverted_index_reader._select_best_reader", [type: 0]) + try { + qt_sql """ select count() from ${indexTbName} where (request match 'images'); """ + } finally { + GetDebugPoint().disableDebugPointForAllBEs("inverted_index_reader._select_best_reader") + } + + GetDebugPoint().enableDebugPointForAllBEs("inverted_index_reader._select_best_reader", [type: 1]) + try { + qt_sql """ select count() from ${indexTbName} where (request = 'GET /images/hm_bg.jpg HTTP/1.0'); """ + } finally { + GetDebugPoint().disableDebugPointForAllBEs("inverted_index_reader._select_best_reader") + } + } finally { + GetDebugPoint().disableDebugPointForAllBEs("VMatchPredicate.execute") + } +} \ No newline at end of file From 99f578373cded54671fce53d9ccb24aa58622ea8 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Tue, 22 Apr 2025 17:24:57 +0800 Subject: [PATCH 2/8] fix build --- be/src/olap/rowset/segment_v2/column_reader.cpp | 6 +++--- .../segment_v2/variant_column_writer_impl.cpp | 8 ++++---- .../rowset/segment_v2/vertical_segment_writer.cpp | 8 -------- be/src/olap/tablet_schema.cpp | 8 ++++---- be/src/vec/common/schema_util.cpp | 14 +++++++------- .../trees/plans/commands/info/CreateTableInfo.java | 7 +++++-- 6 files changed, 23 insertions(+), 28 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index fe1936246aade7..fd36dabb6bdb98 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -522,7 +522,7 @@ Status VariantColumnReader::init(const ColumnReaderOptions& opts, const SegmentF _subcolumn_readers = std::make_unique(); _statistics = std::make_unique(); const ColumnMetaPB& self_column_pb = footer.columns(column_id); - const auto* parent_index = opts.tablet_schema->inverted_index(self_column_pb.unique_id()); + const auto& parent_index = opts.tablet_schema->inverted_indexs(self_column_pb.unique_id()); for (const ColumnMetaPB& column_pb : footer.columns()) { // Find all columns belonging to the current variant column // 1. not the variant column @@ -597,11 +597,11 @@ Status VariantColumnReader::init(const ColumnReaderOptions& opts, const SegmentF DCHECK(index_meta != nullptr); auto subcolumn_index = std::make_unique(*index_meta); _variant_subcolumns_indexes.emplace(path.get_path(), std::move(subcolumn_index)); - } else if (parent_index) { + } else if (!parent_index.empty()) { const auto& suffix_path = path.get_path(); auto it = _variant_subcolumns_indexes.find(suffix_path); if (it == _variant_subcolumns_indexes.end()) { - auto subcolumn_index = std::make_unique(*parent_index); + auto subcolumn_index = std::make_unique(*parent_index[0]); subcolumn_index->set_escaped_escaped_index_suffix_path(suffix_path); _variant_subcolumns_indexes.emplace(suffix_path, std::move(subcolumn_index)); } else { diff --git a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp index c0edc586ac5bcb..72e2cf866db9d2 100644 --- a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp +++ b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp @@ -86,7 +86,7 @@ Status _create_column_writer(uint32_t cid, const TabletColumn& column, opt->need_zone_map = tablet_schema->keys_type() != KeysType::AGG_KEYS; opt->need_bloom_filter = column.is_bf_column(); opt->need_bitmap_index = column.has_bitmap_index(); - const auto& index = tablet_schema->inverted_index(column.parent_unique_id()); + const auto& parent_index = tablet_schema->inverted_indexs(column.parent_unique_id()); VLOG_DEBUG << "column: " << column.name() << " need_inverted_index: " << opt->need_inverted_index << " need_bloom_filter: " << opt->need_bloom_filter @@ -95,15 +95,15 @@ Status _create_column_writer(uint32_t cid, const TabletColumn& column, // init inverted index // index denotes the index of the entire variant column // while subcolumn_index denotes the current subcolumn's index - if ((index != nullptr || subcolumn_index != nullptr) && + if ((!parent_index.empty() || subcolumn_index != nullptr) && segment_v2::InvertedIndexColumnWriter::check_support_inverted_index(column)) { // inheriting the variant column's index when the subcolumn index is absent if (subcolumn_index == nullptr) { - subcolumn_index = std::make_unique(*index); + subcolumn_index = std::make_unique(*parent_index[0]); subcolumn_index->set_escaped_escaped_index_suffix_path( column.path_info_ptr()->get_path()); + opt->inverted_indexs.push_back(subcolumn_index.get()); } - opt->inverted_index = subcolumn_index.get(); opt->need_inverted_index = true; DCHECK(inverted_index_file_writer != nullptr); opt->inverted_index_file_writer = inverted_index_file_writer; diff --git a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp index 45cd3c05e985a8..01d20065a45b17 100644 --- a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp @@ -221,13 +221,6 @@ Status VerticalSegmentWriter::_create_column_writer(uint32_t cid, const TabletCo tablet_schema->skip_write_index_on_load()) { skip_inverted_index = true; } -<<<<<<< HEAD - if (const auto& index = tablet_schema->inverted_index(column); - index != nullptr && !skip_inverted_index) { - opts.inverted_index = index; - opts.need_inverted_index = true; - DCHECK(_inverted_index_file_writer != nullptr); -======= if (!skip_inverted_index) { auto inverted_indexs = tablet_schema->inverted_indexs(column); if (!inverted_indexs.empty()) { @@ -238,7 +231,6 @@ Status VerticalSegmentWriter::_create_column_writer(uint32_t cid, const TabletCo DCHECK(_inverted_index_file_writer != nullptr); opts.inverted_index_file_writer = _inverted_index_file_writer; } ->>>>>>> b10f185714 ([feture](inverted index) Add multi inverted index support for single column) } opts.inverted_index_file_writer = _inverted_index_file_writer; diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index 868e77d96def48..25d9bb3fcc7ec6 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -1543,7 +1543,7 @@ TabletIndexPtr TabletSchema::inverted_index_by_field_pattern( return pattern_to_index_map->second; } -std::vector TabletSchema::inverted_index(const TabletColumn& col) const { +std::vector TabletSchema::inverted_indexs(const TabletColumn& col) const { // Some columns(Float, Double, JSONB ...) from the variant do not support inverted index if (!segment_v2::InvertedIndexColumnWriter::check_support_inverted_index(col)) { return {}; @@ -1552,7 +1552,7 @@ std::vector TabletSchema::inverted_index(const TabletColumn& // Use parent id if unique not assigned, this could happend when accessing subcolumns of variants int32_t col_unique_id = col.is_extracted_column() ? col.parent_unique_id() : col.unique_id(); std::vector result; - if (result = inverted_index(col_unique_id, escape_for_path_name(col.suffix_path())); + if (result = inverted_indexs(col_unique_id, escape_for_path_name(col.suffix_path())); !result.empty()) { return result; } @@ -1560,12 +1560,12 @@ std::vector TabletSchema::inverted_index(const TabletColumn& else if (col.is_extracted_column()) { std::string relative_path = col.path_info_ptr()->copy_pop_front().get_path(); if (_path_set_info_map.find(col_unique_id) == _path_set_info_map.end()) { - return nullptr; + return result; } const auto& path_set_info = _path_set_info_map.at(col_unique_id); if (path_set_info.typed_path_set.find(relative_path) == path_set_info.typed_path_set.end()) { - return nullptr; + return result; } result.push_back(path_set_info.typed_path_set.at(relative_path).index.get()); return result; diff --git a/be/src/vec/common/schema_util.cpp b/be/src/vec/common/schema_util.cpp index 2e7b6375ef8fbc..30a35e5d3c5beb 100644 --- a/be/src/vec/common/schema_util.cpp +++ b/be/src/vec/common/schema_util.cpp @@ -445,19 +445,19 @@ void inherit_column_attributes(const TabletColumn& source, TabletColumn& target, // 2. inverted index std::vector indexes_to_update; - auto source_indexes = target_schema->inverted_indexs(source.unique_id()); + auto source_indexes = (*target_schema)->inverted_indexs(source.unique_id()); for (const auto& source_index_meta : source_indexes) { TabletIndex index_info = *source_index_meta; index_info.set_escaped_escaped_index_suffix_path(target.path_info_ptr()->get_path()); indexes_to_update.emplace_back(std::move(index_info)); } - auto target_indexes = target_schema->inverted_indexs(target.parent_unique_id(), + auto target_indexes = (*target_schema)->inverted_indexs(target.parent_unique_id(), target.path_info_ptr()->get_path()); if (!target_indexes.empty()) { - target_schema->update_index(target, IndexType::INVERTED, std::move(indexes_to_update)); + (*target_schema)->update_index(target, IndexType::INVERTED, std::move(indexes_to_update)); } else { for (auto& index_info : indexes_to_update) { - target_schema->append_index(std::move(index_info)); + (*target_schema)->append_index(std::move(index_info)); } } @@ -1198,9 +1198,9 @@ bool generate_sub_column_info(const TabletSchema& schema, int32_t col_unique_id, sub_column_info->column.path_info_ptr()->get_path()); } // 2. find parent column's index - else if (const auto* parent_index = schema.inverted_index(col_unique_id); - parent_index != nullptr) { - sub_column_info->index = std::make_shared(*parent_index); + else if (const auto parent_index = schema.inverted_indexs(col_unique_id); + !parent_index.empty()) { + sub_column_info->index = std::make_shared(*parent_index[0]); sub_column_info->index->set_escaped_escaped_index_suffix_path( sub_column_info->column.path_info_ptr()->get_path()); } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java index 5e4bbe5205c269..642a9d7891f93f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java @@ -38,6 +38,7 @@ import org.apache.doris.common.ErrorReport; import org.apache.doris.common.FeConstants; import org.apache.doris.common.FeNameFormat; +import org.apache.doris.common.Pair; import org.apache.doris.common.util.AutoBucketUtils; import org.apache.doris.common.util.GeneratedColumnUtil; import org.apache.doris.common.util.InternalDatabaseUtil; @@ -677,8 +678,10 @@ public void validate(ConnectContext ctx) { Set distinct = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); boolean disableInvertedIndexV1ForVariant = false; - Set>> nonInvertedIndexes = new HashSet<>(); + Set>> nonInvertedIndexes = new HashSet<>(); Map, Set> invertedIndexes = new HashMap<>(); + + TInvertedIndexFileStorageFormat invertedIndexFileStorageFormat; try { invertedIndexFileStorageFormat = PropertyAnalyzer.analyzeInvertedIndexFileStorageFormat( new HashMap<>(properties)); @@ -723,7 +726,7 @@ public void validate(ConnectContext ctx) { "Duplicate inverted index with same analyzed property on columns: " + colNames); } } else { - Pair> pair = Pair.of(indexDef.getIndexType(), colNames); + Pair> pair = Pair.of(indexDef.getIndexType(), colNames); if (!nonInvertedIndexes.add(pair)) { throw new AnalysisException("Duplicate index type and columns: " + pair); } From 4f0f49a8a0ceb8f609877af5267a24f77ad7f6c8 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Wed, 23 Apr 2025 14:01:28 +0800 Subject: [PATCH 3/8] add be --- .../olap/rowset/segment_v2/column_reader.cpp | 23 ++++----- be/src/olap/rowset/segment_v2/column_reader.h | 6 ++- be/src/olap/rowset/segment_v2/column_writer.h | 2 +- .../segment_v2/variant_column_writer_impl.cpp | 51 ++++++++++++------- .../segment_v2/variant_column_writer_impl.h | 2 +- be/src/olap/tablet_schema.cpp | 18 ++++--- be/src/olap/tablet_schema.h | 10 ++-- be/src/vec/common/schema_util.cpp | 29 +++++++---- 8 files changed, 82 insertions(+), 59 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index fd36dabb6bdb98..ed4abd19328b3b 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -592,20 +592,15 @@ Status VariantColumnReader::init(const ColumnReaderOptions& opts, const SegmentF if (vectorized::schema_util::generate_sub_column_info( *opts.tablet_schema, self_column_pb.unique_id(), relative_path.get_path(), &sub_column_info) && - sub_column_info.index != nullptr) { - const auto* index_meta = sub_column_info.index.get(); - DCHECK(index_meta != nullptr); - auto subcolumn_index = std::make_unique(*index_meta); - _variant_subcolumns_indexes.emplace(path.get_path(), std::move(subcolumn_index)); + !sub_column_info.indexes.empty()) { + _variant_subcolumns_indexes[path.get_path()] = std::move(sub_column_info.indexes); } else if (!parent_index.empty()) { - const auto& suffix_path = path.get_path(); - auto it = _variant_subcolumns_indexes.find(suffix_path); - if (it == _variant_subcolumns_indexes.end()) { - auto subcolumn_index = std::make_unique(*parent_index[0]); + for (const auto& index : parent_index) { + const auto& suffix_path = path.get_path(); + auto subcolumn_index = std::make_unique(*index); subcolumn_index->set_escaped_escaped_index_suffix_path(suffix_path); - _variant_subcolumns_indexes.emplace(suffix_path, std::move(subcolumn_index)); - } else { - DCHECK(false); + _variant_subcolumns_indexes[suffix_path].emplace_back( + std::move(subcolumn_index)); } } } @@ -622,9 +617,9 @@ Status VariantColumnReader::init(const ColumnReaderOptions& opts, const SegmentF return Status::OK(); } -TabletIndex* VariantColumnReader::find_subcolumn_tablet_index(const std::string& path) { +TabletIndexes VariantColumnReader::find_subcolumn_tablet_indexes(const std::string& path) { auto it = _variant_subcolumns_indexes.find(path); - return it == _variant_subcolumns_indexes.end() ? nullptr : it->second.get(); + return it == _variant_subcolumns_indexes.end() ? TabletIndexes() : it->second; } std::vector VariantColumnReader::get_typed_paths() const { diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h index c8e0686f19fcdb..9b9e3aac547e99 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.h +++ b/be/src/olap/rowset/segment_v2/column_reader.h @@ -36,6 +36,7 @@ #include "io/fs/file_system.h" #include "io/io_common.h" #include "olap/olap_common.h" +#include "olap/tablet_schema.h" #include "olap/rowset/segment_v2/common.h" #include "olap/rowset/segment_v2/ordinal_page_index.h" // for OrdinalPageIndexIterator #include "olap/rowset/segment_v2/page_handle.h" // for PageHandle @@ -329,7 +330,7 @@ class VariantColumnReader : public ColumnReader { int64_t get_metadata_size() const override; - TabletIndex* find_subcolumn_tablet_index(const std::string&); + TabletIndexes find_subcolumn_tablet_indexes(const std::string&); bool exist_in_sparse_column(const vectorized::PathInData& path) const; @@ -353,7 +354,8 @@ class VariantColumnReader : public ColumnReader { std::unique_ptr _subcolumn_readers; std::unique_ptr _sparse_column_reader; std::unique_ptr _statistics; - std::unordered_map> _variant_subcolumns_indexes; + // key: subcolumn path, value: subcolumn indexes + std::unordered_map _variant_subcolumns_indexes; }; // Base iterator to read one column data diff --git a/be/src/olap/rowset/segment_v2/column_writer.h b/be/src/olap/rowset/segment_v2/column_writer.h index 5fad1c913705bb..f9b3cb62377812 100644 --- a/be/src/olap/rowset/segment_v2/column_writer.h +++ b/be/src/olap/rowset/segment_v2/column_writer.h @@ -523,7 +523,7 @@ class VariantSubcolumnWriter : public ColumnWriter { const TabletColumn* _tablet_column = nullptr; ColumnWriterOptions _opts; std::unique_ptr _writer; - std::unique_ptr _index; + TabletIndexes _indexes; }; class VariantColumnWriter : public ColumnWriter { diff --git a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp index 72e2cf866db9d2..3bf0995d00bd84 100644 --- a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp +++ b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp @@ -75,7 +75,7 @@ Status _create_column_writer(uint32_t cid, const TabletColumn& column, const TabletSchemaSPtr& tablet_schema, InvertedIndexFileWriter* inverted_index_file_writer, std::unique_ptr* writer, - std::unique_ptr& subcolumn_index, + TabletIndexes& subcolumn_indexes, ColumnWriterOptions* opt, int64_t none_null_value_size) { _init_column_meta(opt->meta, cid, column, opt->compression_type); // no need to record none null value size for typed column @@ -93,20 +93,36 @@ Status _create_column_writer(uint32_t cid, const TabletColumn& column, << " need_bitmap_index: " << opt->need_bitmap_index; // init inverted index - // index denotes the index of the entire variant column + // parent_index denotes the index of the entire variant column // while subcolumn_index denotes the current subcolumn's index - if ((!parent_index.empty() || subcolumn_index != nullptr) && - segment_v2::InvertedIndexColumnWriter::check_support_inverted_index(column)) { - // inheriting the variant column's index when the subcolumn index is absent - if (subcolumn_index == nullptr) { - subcolumn_index = std::make_unique(*parent_index[0]); - subcolumn_index->set_escaped_escaped_index_suffix_path( - column.path_info_ptr()->get_path()); - opt->inverted_indexs.push_back(subcolumn_index.get()); + if (segment_v2::InvertedIndexColumnWriter::check_support_inverted_index(column)) { + auto init_opt_inverted_index = [&]() { + DCHECK(!subcolumn_indexes.empty()); + for (const auto& index : subcolumn_indexes) { + opt->inverted_indexs.push_back(index.get()); + } + opt->need_inverted_index = true; + DCHECK(inverted_index_file_writer != nullptr); + opt->inverted_index_file_writer = inverted_index_file_writer; + }; + + // the subcolumn index is already initialized + if (!subcolumn_indexes.empty()) { + init_opt_inverted_index(); + } + // the subcolumn index is not initialized, but the parent index is present + else if (!parent_index.empty()) { + for (const auto& index : parent_index) { + subcolumn_indexes.push_back(std::make_unique(*index)); + subcolumn_indexes.back()->set_escaped_escaped_index_suffix_path( + column.path_info_ptr()->get_path()); + } + init_opt_inverted_index(); + } + // no parent index and no subcolumn index + else { + opt->need_inverted_index = false; } - opt->need_inverted_index = true; - DCHECK(inverted_index_file_writer != nullptr); - opt->inverted_index_file_writer = inverted_index_file_writer; } #define DISABLE_INDEX_IF_FIELD_TYPE(TYPE, type_name) \ @@ -352,7 +368,7 @@ Status VariantColumnWriterImpl::_process_subcolumns(vectorized::ColumnObject* pt vectorized::ColumnPtr current_column; if (auto current_path = entry->path.get_path(); _subcolumns_info.find(current_path) != _subcolumns_info.end()) { - tablet_column = _subcolumns_info[current_path].column; + tablet_column = std::move(_subcolumns_info[current_path].column); vectorized::DataTypePtr storage_type = vectorized::DataTypeFactory::instance().create_data_type(tablet_column); vectorized::DataTypePtr finalized_type = entry->data.get_least_common_type(); @@ -361,9 +377,8 @@ Status VariantColumnWriterImpl::_process_subcolumns(vectorized::ColumnObject* pt RETURN_IF_ERROR(vectorized::schema_util::cast_column( {current_column, finalized_type, ""}, storage_type, ¤t_column)); } - if (auto index = _subcolumns_info[current_path].index; index != nullptr) { - _subcolumns_indexes[current_column_id] = std::make_unique(*index); - } + _subcolumns_indexes[current_column_id] = + std::move(_subcolumns_info[current_path].indexes); const auto& null_data = assert_cast(*current_column) .get_null_map_data(); none_null_value_size = @@ -720,7 +735,7 @@ Status VariantSubcolumnWriter::finalize() { << " is_bf_column: " << parent_column.is_bf_column() << " " << flush_column.is_bf_column(); RETURN_IF_ERROR(_create_column_writer(0, flush_column, _opts.rowset_ctx->tablet_schema, - _opts.inverted_index_file_writer, &_writer, _index, &opts, + _opts.inverted_index_file_writer, &_writer, _indexes, &opts, none_null_value_size)); _opts = opts; auto olap_data_convertor = std::make_unique(); diff --git a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.h b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.h index cfb17b9ac65e3f..7fd8e8d253ce74 100644 --- a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.h +++ b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.h @@ -94,7 +94,7 @@ class VariantColumnWriterImpl { VariantStatistics _statistics; // hold the references of subcolumns indexes - std::vector> _subcolumns_indexes; + std::vector _subcolumns_indexes; // hold the references of subcolumns info std::unordered_map _subcolumns_info; diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index 25d9bb3fcc7ec6..77fe3ea4abceb9 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -933,7 +933,7 @@ void TabletSchema::append_index(TabletIndex&& index) { !field_pattern.empty() && !_indexes.back()->col_unique_ids().empty()) { auto& pattern_to_index_map = _index_by_unique_id_with_pattern[_indexes.back()->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern] = _indexes.back(); + pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); } } @@ -1083,7 +1083,7 @@ void TabletSchema::init_from_pb(const TabletSchemaPB& schema, bool ignore_extrac !field_pattern.empty() && !_indexes.back()->col_unique_ids().empty()) { auto& pattern_to_index_map = _index_by_unique_id_with_pattern[_indexes.back()->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern] = _indexes.back(); + pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); } } _num_short_key_columns = schema.num_short_key_columns(); @@ -1256,7 +1256,7 @@ void TabletSchema::build_current_tablet_schema(int64_t index_id, int32_t version if (auto field_pattern = i->field_pattern(); !field_pattern.empty() && !i->col_unique_ids().empty()) { auto& pattern_to_index_map = _index_by_unique_id_with_pattern[i->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern] = _indexes.back(); + pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); } } @@ -1451,7 +1451,7 @@ void TabletSchema::update_indexes_from_thrift(const std::vectorcol_unique_ids().empty()) { auto& pattern_to_index_map = _index_by_unique_id_with_pattern[index->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern] = index; + pattern_to_index_map[field_pattern].emplace_back(index); } } std::unordered_map, IndexKeyHash> col_id_suffix_to_index; @@ -1530,15 +1530,15 @@ std::vector TabletSchema::inverted_indexs( return result; } -TabletIndexPtr TabletSchema::inverted_index_by_field_pattern( +std::vector TabletSchema::inverted_index_by_field_pattern( int32_t col_unique_id, const std::string& field_pattern) const { auto id_to_pattern_map = _index_by_unique_id_with_pattern.find(col_unique_id); if (id_to_pattern_map == _index_by_unique_id_with_pattern.end()) { - return nullptr; + return {}; } auto pattern_to_index_map = id_to_pattern_map->second.find(field_pattern); if (pattern_to_index_map == id_to_pattern_map->second.end()) { - return nullptr; + return {}; } return pattern_to_index_map->second; } @@ -1567,7 +1567,9 @@ std::vector TabletSchema::inverted_indexs(const TabletColumn path_set_info.typed_path_set.end()) { return result; } - result.push_back(path_set_info.typed_path_set.at(relative_path).index.get()); + for (const auto& index : path_set_info.typed_path_set.at(relative_path).indexes) { + result.push_back(index.get()); + } return result; } return result; diff --git a/be/src/olap/tablet_schema.h b/be/src/olap/tablet_schema.h index a00b5cfc91715d..ffd98d0390f06a 100644 --- a/be/src/olap/tablet_schema.h +++ b/be/src/olap/tablet_schema.h @@ -329,6 +329,7 @@ class TabletIndex : public MetadataAdder { }; using TabletIndexPtr = std::shared_ptr; +using TabletIndexes = std::vector>; class TabletSchema : public MetadataAdder { public: @@ -481,8 +482,8 @@ class TabletSchema : public MetadataAdder { // TabletIndex information will be returned as long as it exists. std::vector inverted_indexs(int32_t col_unique_id, const std::string& suffix_path = "") const; - TabletIndexPtr inverted_index_by_field_pattern(int32_t col_unique_id, - const std::string& field_pattern) const; + std::vector inverted_index_by_field_pattern( + int32_t col_unique_id, const std::string& field_pattern) const; bool has_ngram_bf_index(int32_t col_unique_id) const; const TabletIndex* get_ngram_bf_index(int32_t col_unique_id) const; void update_indexes_from_thrift(const std::vector& indexes); @@ -594,9 +595,10 @@ class TabletSchema : public MetadataAdder { struct SubColumnInfo { TabletColumn column; - TabletIndexPtr index; + TabletIndexes indexes; }; + // all path in path_set_info are relative to the parent column struct PathsSetInfo { std::unordered_map typed_path_set; // typed columns PathSet sub_path_set; // extracted columns @@ -693,7 +695,7 @@ class TabletSchema : public MetadataAdder { // key: field_pattern // value: index - using PatternToIndex = std::unordered_map; + using PatternToIndex = std::unordered_map>; std::unordered_map _index_by_unique_id_with_pattern; }; diff --git a/be/src/vec/common/schema_util.cpp b/be/src/vec/common/schema_util.cpp index 30a35e5d3c5beb..2e6f9ba308f559 100644 --- a/be/src/vec/common/schema_util.cpp +++ b/be/src/vec/common/schema_util.cpp @@ -451,8 +451,9 @@ void inherit_column_attributes(const TabletColumn& source, TabletColumn& target, index_info.set_escaped_escaped_index_suffix_path(target.path_info_ptr()->get_path()); indexes_to_update.emplace_back(std::move(index_info)); } - auto target_indexes = (*target_schema)->inverted_indexs(target.parent_unique_id(), - target.path_info_ptr()->get_path()); + auto target_indexes = (*target_schema) + ->inverted_indexs(target.parent_unique_id(), + target.path_info_ptr()->get_path()); if (!target_indexes.empty()) { (*target_schema)->update_index(target, IndexType::INVERTED, std::move(indexes_to_update)); } else { @@ -1191,20 +1192,26 @@ bool generate_sub_column_info(const TabletSchema& schema, int32_t col_unique_id, auto generate_index = [&](const std::string& pattern) { // 1. find subcolumn's index - if (const auto& index = schema.inverted_index_by_field_pattern(col_unique_id, pattern); - index != nullptr) { - sub_column_info->index = std::make_shared(*index); - sub_column_info->index->set_escaped_escaped_index_suffix_path( - sub_column_info->column.path_info_ptr()->get_path()); + if (const auto& indexes = schema.inverted_index_by_field_pattern(col_unique_id, pattern); + !indexes.empty()) { + for (const auto& index : indexes) { + auto index_ptr = std::make_shared(*index); + index_ptr->set_escaped_escaped_index_suffix_path( + sub_column_info->column.path_info_ptr()->get_path()); + sub_column_info->indexes.emplace_back(std::move(index_ptr)); + } } // 2. find parent column's index else if (const auto parent_index = schema.inverted_indexs(col_unique_id); !parent_index.empty()) { - sub_column_info->index = std::make_shared(*parent_index[0]); - sub_column_info->index->set_escaped_escaped_index_suffix_path( - sub_column_info->column.path_info_ptr()->get_path()); + for (const auto& index : parent_index) { + auto index_ptr = std::make_shared(*index); + index_ptr->set_escaped_escaped_index_suffix_path( + sub_column_info->column.path_info_ptr()->get_path()); + sub_column_info->indexes.emplace_back(std::move(index_ptr)); + } } else { - sub_column_info->index = nullptr; + sub_column_info->indexes.clear(); } }; From 96718e7ea7aa505e2295ff749cae30e11cc7d69a Mon Sep 17 00:00:00 2001 From: csun5285 Date: Thu, 24 Apr 2025 15:32:51 +0800 Subject: [PATCH 4/8] fix --- .../olap/rowset/segment_v2/column_reader.cpp | 11 +- be/src/olap/rowset/segment_v2/column_reader.h | 4 +- .../rowset/segment_v2/segment_iterator.cpp | 19 +- .../olap/rowset/segment_v2/segment_writer.cpp | 2 +- .../segment_v2/variant_column_writer_impl.cpp | 8 +- .../segment_v2/vertical_segment_writer.cpp | 1 - be/src/olap/tablet_schema.cpp | 59 +- .../doris/nereids/.antlr/DorisLexer.interp | 1653 + .../doris/nereids/.antlr/DorisLexer.java | 3843 ++ .../doris/nereids/.antlr/DorisLexer.tokens | 1067 + .../doris/nereids/.antlr/DorisParser.interp | 1328 + .../doris/nereids/.antlr/DorisParser.java | 53737 ++++++++++++++++ .../doris/nereids/.antlr/DorisParser.tokens | 1067 + .../.antlr/DorisParserBaseListener.java | 7263 +++ .../nereids/.antlr/DorisParserListener.java | 6893 ++ .../doris/analysis/InvertedIndexUtil.java | 28 + .../plans/commands/info/CreateTableInfo.java | 129 +- .../plans/commands/info/IndexDefinition.java | 33 - .../test_predefine_type_multi_index.out | 19 + .../data/variant_p1/predefine/load.out | 91 + .../predefine/test_predefine_ddl.groovy | 75 + .../test_predefine_type_multi_index.groovy | 60 + .../suites/variant_p1/predefine/load.groovy | 110 + 23 files changed, 77365 insertions(+), 135 deletions(-) create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java create mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java create mode 100644 regression-test/data/variant_p0/predefine/test_predefine_type_multi_index.out create mode 100644 regression-test/data/variant_p1/predefine/load.out create mode 100644 regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy create mode 100644 regression-test/suites/variant_p1/predefine/load.groovy diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index ed4abd19328b3b..8481c33d65506e 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -617,9 +617,16 @@ Status VariantColumnReader::init(const ColumnReaderOptions& opts, const SegmentF return Status::OK(); } -TabletIndexes VariantColumnReader::find_subcolumn_tablet_indexes(const std::string& path) { +std::vector VariantColumnReader::find_subcolumn_tablet_indexes( + const std::string& path) { auto it = _variant_subcolumns_indexes.find(path); - return it == _variant_subcolumns_indexes.end() ? TabletIndexes() : it->second; + std::vector indexes; + if (it != _variant_subcolumns_indexes.end()) { + for (const auto& index : it->second) { + indexes.push_back(index.get()); + } + } + return indexes; } std::vector VariantColumnReader::get_typed_paths() const { diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h index 9b9e3aac547e99..e74302caa7c16d 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.h +++ b/be/src/olap/rowset/segment_v2/column_reader.h @@ -36,13 +36,13 @@ #include "io/fs/file_system.h" #include "io/io_common.h" #include "olap/olap_common.h" -#include "olap/tablet_schema.h" #include "olap/rowset/segment_v2/common.h" #include "olap/rowset/segment_v2/ordinal_page_index.h" // for OrdinalPageIndexIterator #include "olap/rowset/segment_v2/page_handle.h" // for PageHandle #include "olap/rowset/segment_v2/page_pointer.h" #include "olap/rowset/segment_v2/parsed_page.h" // for ParsedPage #include "olap/rowset/segment_v2/stream_reader.h" +#include "olap/tablet_schema.h" #include "olap/types.h" #include "olap/utils.h" #include "util/once.h" @@ -330,7 +330,7 @@ class VariantColumnReader : public ColumnReader { int64_t get_metadata_size() const override; - TabletIndexes find_subcolumn_tablet_indexes(const std::string&); + std::vector find_subcolumn_tablet_indexes(const std::string&); bool exist_in_sparse_column(const vectorized::PathInData& path) const; diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index ecaf559c4f5d6a..fa8616d37ed8e6 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -1077,10 +1077,21 @@ Status SegmentIterator::_init_inverted_index_iterators() { // This is because the sub-column is created in create_materialized_variant_column. // We use this column to locate the metadata for the inverted index, which requires a unique_id and path. const auto& column = _opts.tablet_schema->column(cid); - int32_t col_unique_id = - column.is_extracted_column() ? column.parent_unique_id() : column.unique_id(); - auto inverted_indexs = - _segment->_tablet_schema->inverted_indexs(col_unique_id, column.suffix_path()); + std::vector inverted_indexs; + // If the column is an extracted column, we need to find the sub-column in the parent column reader. + if (column.is_extracted_column()) { + if (_segment->_column_readers.find(column.parent_unique_id()) == + _segment->_column_readers.end()) { + continue; + } + auto* column_reader = _segment->_column_readers.at(column.parent_unique_id()).get(); + inverted_indexs = assert_cast(column_reader) + ->find_subcolumn_tablet_indexes(column.suffix_path()); + } + // If the column is not an extracted column, we can directly get the inverted index metadata from the tablet schema. + else { + inverted_indexs = _segment->_tablet_schema->inverted_indexs(column); + } for (const auto& inverted_index : inverted_indexs) { RETURN_IF_ERROR(_segment->new_inverted_index_iterator( column, inverted_index, _opts, &_inverted_index_iterators[cid])); diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index d160419e7e1da9..d6e0318871595c 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -232,9 +232,9 @@ Status SegmentWriter::_create_column_writer(uint32_t cid, const TabletColumn& co } opts.need_inverted_index = true; DCHECK(_inverted_index_file_writer != nullptr); - opts.inverted_index_file_writer = _inverted_index_file_writer; } } + opts.inverted_index_file_writer = _inverted_index_file_writer; #define DISABLE_INDEX_IF_FIELD_TYPE(TYPE, type_name) \ if (column.type() == FieldType::OLAP_FIELD_TYPE_##TYPE) { \ diff --git a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp index 3bf0995d00bd84..1e50c0ea45bc90 100644 --- a/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp +++ b/be/src/olap/rowset/segment_v2/variant_column_writer_impl.cpp @@ -75,8 +75,8 @@ Status _create_column_writer(uint32_t cid, const TabletColumn& column, const TabletSchemaSPtr& tablet_schema, InvertedIndexFileWriter* inverted_index_file_writer, std::unique_ptr* writer, - TabletIndexes& subcolumn_indexes, - ColumnWriterOptions* opt, int64_t none_null_value_size) { + TabletIndexes& subcolumn_indexes, ColumnWriterOptions* opt, + int64_t none_null_value_size) { _init_column_meta(opt->meta, cid, column, opt->compression_type); // no need to record none null value size for typed column if (!column.path_info_ptr()->get_is_typed()) { @@ -735,8 +735,8 @@ Status VariantSubcolumnWriter::finalize() { << " is_bf_column: " << parent_column.is_bf_column() << " " << flush_column.is_bf_column(); RETURN_IF_ERROR(_create_column_writer(0, flush_column, _opts.rowset_ctx->tablet_schema, - _opts.inverted_index_file_writer, &_writer, _indexes, &opts, - none_null_value_size)); + _opts.inverted_index_file_writer, &_writer, _indexes, + &opts, none_null_value_size)); _opts = opts; auto olap_data_convertor = std::make_unique(); int column_id = 0; diff --git a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp index 01d20065a45b17..937aa7e42b82d4 100644 --- a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp @@ -229,7 +229,6 @@ Status VerticalSegmentWriter::_create_column_writer(uint32_t cid, const TabletCo } opts.need_inverted_index = true; DCHECK(_inverted_index_file_writer != nullptr); - opts.inverted_index_file_writer = _inverted_index_file_writer; } } opts.inverted_index_file_writer = _inverted_index_file_writer; diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index 77fe3ea4abceb9..be0bd6f24d24ec 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -925,15 +925,14 @@ void TabletSchema::append_index(TabletIndex&& index) { int32_t index_pos = _indexes.size(); _indexes.push_back(std::make_shared(index)); for (int32_t id : _indexes.back()->col_unique_ids()) { - IndexKey key = std::make_tuple(_indexes.back()->index_type(), id, - _indexes.back()->get_index_suffix()); - _col_id_suffix_to_index[key].push_back(index_pos); - } - if (auto field_pattern = _indexes.back()->field_pattern(); - !field_pattern.empty() && !_indexes.back()->col_unique_ids().empty()) { - auto& pattern_to_index_map = - _index_by_unique_id_with_pattern[_indexes.back()->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); + if (auto field_pattern = _indexes.back()->field_pattern(); !field_pattern.empty()) { + auto& pattern_to_index_map = _index_by_unique_id_with_pattern[id]; + pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); + } else { + IndexKey key = std::make_tuple(_indexes.back()->index_type(), id, + _indexes.back()->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(index_pos); + } } } @@ -970,6 +969,8 @@ void TabletSchema::clear_index_cache_handlers() { void TabletSchema::clear_index() { clear_index_cache_handlers(); _indexes.clear(); + _index_by_unique_id_with_pattern.clear(); + _col_id_suffix_to_index.clear(); } void TabletSchema::remove_index(int64_t index_id) { @@ -1023,6 +1024,8 @@ void TabletSchema::init_from_pb(const TabletSchemaPB& schema, bool ignore_extrac _field_name_to_index.clear(); _field_id_to_index.clear(); _cluster_key_uids.clear(); + _index_by_unique_id_with_pattern.clear(); + _col_id_suffix_to_index.clear(); clear_column_cache_handlers(); clear_index_cache_handlers(); for (const auto& i : schema.cluster_key_uids()) { @@ -1074,16 +1077,16 @@ void TabletSchema::init_from_pb(const TabletSchemaPB& schema, bool ignore_extrac index->init_from_pb(index_pb); } int32_t index_pos = _indexes.size(); - for (int32_t col_uid : index->col_unique_ids()) { - IndexKey key = std::make_tuple(index->index_type(), col_uid, index->get_index_suffix()); - _col_id_suffix_to_index[key].push_back(index_pos); - } _indexes.emplace_back(std::move(index)); - if (auto field_pattern = _indexes.back()->field_pattern(); - !field_pattern.empty() && !_indexes.back()->col_unique_ids().empty()) { - auto& pattern_to_index_map = - _index_by_unique_id_with_pattern[_indexes.back()->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); + for (int32_t col_uid : _indexes.back()->col_unique_ids()) { + if (auto field_pattern = _indexes.back()->field_pattern(); !field_pattern.empty()) { + auto& pattern_to_index_map = _index_by_unique_id_with_pattern[col_uid]; + pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); + } else { + IndexKey key = std::make_tuple(_indexes.back()->index_type(), col_uid, + _indexes.back()->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(index_pos); + } } } _num_short_key_columns = schema.num_short_key_columns(); @@ -1209,6 +1212,8 @@ void TabletSchema::build_current_tablet_schema(int64_t index_id, int32_t version _indexes.clear(); _field_name_to_index.clear(); _field_id_to_index.clear(); + _index_by_unique_id_with_pattern.clear(); + _col_id_suffix_to_index.clear(); _delete_sign_idx = -1; _sequence_col_idx = -1; _version_col_idx = -1; @@ -1248,15 +1253,17 @@ void TabletSchema::build_current_tablet_schema(int64_t index_id, int32_t version for (const auto& i : index->indexes) { int32_t index_pos = _indexes.size(); - for (int32_t col_uid : i->col_unique_ids()) { - IndexKey key = std::make_tuple(i->index_type(), col_uid, i->get_index_suffix()); - _col_id_suffix_to_index[key].push_back(index_pos); - } _indexes.emplace_back(std::make_shared(*i)); - if (auto field_pattern = i->field_pattern(); - !field_pattern.empty() && !i->col_unique_ids().empty()) { - auto& pattern_to_index_map = _index_by_unique_id_with_pattern[i->col_unique_ids()[0]]; - pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); + + for (int32_t col_uid : _indexes.back()->col_unique_ids()) { + if (auto field_pattern = _indexes.back()->field_pattern(); !field_pattern.empty()) { + auto& pattern_to_index_map = _index_by_unique_id_with_pattern[col_uid]; + pattern_to_index_map[field_pattern].emplace_back(_indexes.back()); + } else { + IndexKey key = std::make_tuple(_indexes.back()->index_type(), col_uid, + _indexes.back()->get_index_suffix()); + _col_id_suffix_to_index[key].push_back(index_pos); + } } } diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp new file mode 100644 index 00000000000000..19049a01d60486 --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp @@ -0,0 +1,1653 @@ +token literal names: +null +';' +'(' +')' +',' +'.' +'...' +'[' +']' +'{' +'}' +'ACCOUNT_LOCK' +'ACCOUNT_UNLOCK' +'ACTIONS' +'ADD' +'ADMIN' +'AFTER' +'AGG_STATE' +'AGGREGATE' +'ALIAS' +'ALL' +'ALTER' +'ANALYZE' +'ANALYZED' +'AND' +'ANTI' +'APPEND' +'ARRAY' +'AS' +'ASC' +'AT' +'AUTHORS' +'AUTO' +'AUTO_INCREMENT' +'ALWAYS' +'BACKEND' +'BACKENDS' +'BACKUP' +'BEGIN' +'BELONG' +'BETWEEN' +'BIGINT' +'BIN' +'BINARY' +'BINLOG' +'BITAND' +'BITMAP' +'BITMAP_EMPTY' +'BITMAP_UNION' +'BITOR' +'BITXOR' +'BLOB' +'BOOLEAN' +'BRIEF' +'BROKER' +'BUCKETS' +'BUILD' +'BUILTIN' +'BULK' +'BY' +'CACHE' +'CACHED' +'CALL' +'CANCEL' +'CASE' +'CAST' +'CATALOG' +'CATALOGS' +'CHAIN' +null +'CHARSET' +'CHECK' +'CLEAN' +'CLUSTER' +'CLUSTERS' +'COLLATE' +'COLLATION' +'COLLECT' +'COLOCATE' +'COLUMN' +'COLUMNS' +'COMMENT' +'COMMIT' +'COMMITTED' +'COMPACT' +'COMPLETE' +'COMPRESS_TYPE' +'COMPUTE' +'CONDITIONS' +'CONFIG' +'CONNECTION' +'CONNECTION_ID' +'CONSISTENT' +'CONSTRAINT' +'CONSTRAINTS' +'CONVERT' +'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS' +'COPY' +'COUNT' +'CREATE' +'CREATION' +'CRON' +'CROSS' +'CUBE' +'CURRENT' +'CURRENT_CATALOG' +'CURRENT_DATE' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'CURRENT_USER' +'DATA' +'DATABASE' +'DATABASES' +'DATE' +'DATETIME' +'DATETIMEV2' +'DATEV2' +'DATETIMEV1' +'DATEV1' +'DAY' +'DECIMAL' +'DECIMALV2' +'DECIMALV3' +'DECOMMISSION' +'DEFAULT' +'DEFERRED' +'DELETE' +'DEMAND' +'DESC' +'DESCRIBE' +'DIAGNOSE' +'DIAGNOSIS' +'DISK' +'DISTINCT' +'DISTINCTPC' +'DISTINCTPCSA' +'DISTRIBUTED' +'DISTRIBUTION' +'DIV' +'DO' +'DORIS_INTERNAL_TABLE_ID' +'DOUBLE' +'DROP' +'DROPP' +'DUAL' +'DUMP' +'DUPLICATE' +'DYNAMIC' +'E' +'ELSE' +'ENABLE' +'ENCRYPTKEY' +'ENCRYPTKEYS' +'END' +'ENDS' +'ENGINE' +'ENGINES' +'ENTER' +'ERRORS' +'EVENTS' +'EVERY' +'EXCEPT' +'EXCLUDE' +'EXECUTE' +'EXISTS' +'EXPIRED' +'EXPLAIN' +'EXPORT' +'EXTENDED' +'EXTERNAL' +'EXTRACT' +'FAILED_LOGIN_ATTEMPTS' +'FALSE' +'FAST' +'FEATURE' +'FIELDS' +'FILE' +'FILTER' +'FIRST' +'FLOAT' +'FOLLOWER' +'FOLLOWING' +'FOR' +'FOREIGN' +'FORCE' +'FORMAT' +'FREE' +'FROM' +'FRONTEND' +'FRONTENDS' +'FULL' +'FUNCTION' +'FUNCTIONS' +'GENERATED' +'GENERIC' +'GLOBAL' +'GRANT' +'GRANTS' +'GRAPH' +'GROUP' +'GROUPING' +'GROUPS' +'HASH' +'HAVING' +'HDFS' +'HELP' +'HISTOGRAM' +'HLL' +'HLL_UNION' +'HOSTNAME' +'HOTSPOT' +'HOUR' +'HUB' +'IDENTIFIED' +'IF' +'IGNORE' +'IMMEDIATE' +'IN' +'INCREMENTAL' +'INDEX' +'INDEXES' +'INFILE' +'INNER' +'INSERT' +'INSTALL' +'INT' +'INTEGER' +'INTERMEDIATE' +'INTERSECT' +'INTERVAL' +'INTO' +'INVERTED' +'IPV4' +'IPV6' +'IS' +'IS_NOT_NULL_PRED' +'IS_NULL_PRED' +'ISNULL' +'ISOLATION' +'JOB' +'JOBS' +'JOIN' +'JSON' +'JSONB' +'KEY' +'KEYS' +'KILL' +'LABEL' +'LARGEINT' +'LAST' +'LATERAL' +'LDAP' +'LDAP_ADMIN_PASSWORD' +'LEFT' +'LESS' +'LEVEL' +'LIKE' +'LIMIT' +'LINES' +'LINK' +'LIST' +'LOAD' +'LOCAL' +'LOCALTIME' +'LOCALTIMESTAMP' +'LOCATION' +'LOCK' +'LOGICAL' +'LOW_PRIORITY' +'MANUAL' +'MAP' +'MATCH' +'MATCH_ALL' +'MATCH_ANY' +'MATCH_PHRASE' +'MATCH_PHRASE_EDGE' +'MATCH_PHRASE_PREFIX' +'MATCH_REGEXP' +'MATCH_NAME' +'MATCH_NAME_GLOB' +'MATERIALIZED' +'MAX' +'MAXVALUE' +'MEMO' +'MERGE' +'MIGRATE' +'MIGRATIONS' +'MIN' +'MINUS' +'MINUTE' +'MODIFY' +'MONTH' +'MTMV' +'NAME' +'NAMES' +'NATURAL' +'NEGATIVE' +'NEVER' +'NEXT' +'NGRAM_BF' +'NO' +'NO_USE_MV' +'NON_NULLABLE' +'NOT' +'NULL' +'NULLS' +'OBSERVER' +'OF' +'OFFSET' +'ON' +'ONLY' +'OPEN' +'OPTIMIZED' +'OR' +'ORDER' +'OUTER' +'OUTFILE' +'OVER' +'OVERWRITE' +'PARAMETER' +'PARSED' +'PARTITION' +'PARTITIONS' +'PASSWORD' +'PASSWORD_EXPIRE' +'PASSWORD_HISTORY' +'PASSWORD_LOCK_TIME' +'PASSWORD_REUSE' +'PATH' +'PAUSE' +'PERCENT' +'PERIOD' +'PERMISSIVE' +'PHYSICAL' +'PI' +'?' +'PLAN' +'PLAY' +'PRIVILEGES' +'PROCESS' +'PLUGIN' +'PLUGINS' +'POLICY' +'PRECEDING' +'PREPARE' +'PRIMARY' +'PROC' +'PROCEDURE' +'PROCESSLIST' +'PROFILE' +'PROPERTIES' +'PROPERTY' +'QUANTILE_STATE' +'QUANTILE_UNION' +'QUERY' +'QUEUED' +'QUOTA' +'QUALIFY' +'QUARTER' +'RANDOM' +'RANGE' +'READ' +'REAL' +'REBALANCE' +'RECENT' +'RECOVER' +'RECYCLE' +'REFRESH' +'REFERENCES' +'REGEXP' +'RELEASE' +'RENAME' +'REPAIR' +'REPEATABLE' +'REPLACE' +'REPLACE_IF_NOT_NULL' +'REPLAYER' +'REPLICA' +'REPOSITORIES' +'REPOSITORY' +'RESOURCE' +'RESOURCES' +'RESTORE' +'RESTRICTIVE' +'RESUME' +'RETURNS' +'REVOKE' +'REWRITTEN' +'RIGHT' +'RLIKE' +'ROLE' +'ROLES' +'ROLLBACK' +'ROLLUP' +'ROUTINE' +'ROW' +'ROWS' +'S3' +'SAMPLE' +'SCHEDULE' +'SCHEDULER' +'SCHEMA' +'SCHEMAS' +'SECOND' +'SELECT' +'SEMI' +'SERIALIZABLE' +'SESSION' +'SESSION_USER' +'SET' +'SETS' +'SET_SESSION_VARIABLE' +'SHAPE' +'SHOW' +'SIGNED' +'SKEW' +'SMALLINT' +'SNAPSHOT' +'SONAME' +'SPLIT' +'SQL' +'SQL_BLOCK_RULE' +'STAGE' +'STAGES' +'START' +'STARTS' +'STATS' +'STATUS' +'STOP' +'STORAGE' +'STREAM' +'STREAMING' +'STRING' +'STRUCT' +'SUM' +'SUPERUSER' +'SWITCH' +'SYNC' +'SYSTEM' +'TABLE' +'TABLES' +'TABLESAMPLE' +'TABLET' +'TABLETS' +'TASK' +'TASKS' +'TEMPORARY' +'TERMINATED' +'TEXT' +'THAN' +'THEN' +'TIME' +'TIMESTAMP' +'TINYINT' +'TO' +'TRANSACTION' +'TRASH' +'TREE' +'TRIGGERS' +'TRIM' +'TRUE' +'TRUNCATE' +'TYPE' +'TYPE_CAST' +'TYPES' +'UNBOUNDED' +'UNCOMMITTED' +'UNINSTALL' +'UNION' +'UNIQUE' +'UNLOCK' +'UNSET' +'UNSIGNED' +'UP' +'UPDATE' +'USE' +'USER' +'USE_MV' +'USING' +'VALUE' +'VALUES' +'VARCHAR' +'VARIABLE' +'VARIABLES' +'VARIANT' +'VAULT' +'VAULTS' +'VERBOSE' +'VERSION' +'VIEW' +'VIEWS' +'WARM' +'WARNINGS' +'WEEK' +'WHEN' +'WHERE' +'WHITELIST' +'WITH' +'WORK' +'WORKLOAD' +'WRITE' +'XOR' +'YEAR' +null +'<=>' +null +'<' +null +'>' +null +'+' +'-' +'*' +'/' +'%' +'~' +'&' +'&&' +'!' +'|' +'||' +'^' +':' +'->' +'/*+' +'*/' +'/*' +'@' +'@@' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +SEMICOLON +LEFT_PAREN +RIGHT_PAREN +COMMA +DOT +DOTDOTDOT +LEFT_BRACKET +RIGHT_BRACKET +LEFT_BRACE +RIGHT_BRACE +ACCOUNT_LOCK +ACCOUNT_UNLOCK +ACTIONS +ADD +ADMIN +AFTER +AGG_STATE +AGGREGATE +ALIAS +ALL +ALTER +ANALYZE +ANALYZED +AND +ANTI +APPEND +ARRAY +AS +ASC +AT +AUTHORS +AUTO +AUTO_INCREMENT +ALWAYS +BACKEND +BACKENDS +BACKUP +BEGIN +BELONG +BETWEEN +BIGINT +BIN +BINARY +BINLOG +BITAND +BITMAP +BITMAP_EMPTY +BITMAP_UNION +BITOR +BITXOR +BLOB +BOOLEAN +BRIEF +BROKER +BUCKETS +BUILD +BUILTIN +BULK +BY +CACHE +CACHED +CALL +CANCEL +CASE +CAST +CATALOG +CATALOGS +CHAIN +CHAR +CHARSET +CHECK +CLEAN +CLUSTER +CLUSTERS +COLLATE +COLLATION +COLLECT +COLOCATE +COLUMN +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETE +COMPRESS_TYPE +COMPUTE +CONDITIONS +CONFIG +CONNECTION +CONNECTION_ID +CONSISTENT +CONSTRAINT +CONSTRAINTS +CONVERT +CONVERT_LSC +COPY +COUNT +CREATE +CREATION +CRON +CROSS +CUBE +CURRENT +CURRENT_CATALOG +CURRENT_DATE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DATA +DATABASE +DATABASES +DATE +DATETIME +DATETIMEV2 +DATEV2 +DATETIMEV1 +DATEV1 +DAY +DECIMAL +DECIMALV2 +DECIMALV3 +DECOMMISSION +DEFAULT +DEFERRED +DELETE +DEMAND +DESC +DESCRIBE +DIAGNOSE +DIAGNOSIS +DISK +DISTINCT +DISTINCTPC +DISTINCTPCSA +DISTRIBUTED +DISTRIBUTION +DIV +DO +DORIS_INTERNAL_TABLE_ID +DOUBLE +DROP +DROPP +DUAL +DUMP +DUPLICATE +DYNAMIC +E +ELSE +ENABLE +ENCRYPTKEY +ENCRYPTKEYS +END +ENDS +ENGINE +ENGINES +ENTER +ERRORS +EVENTS +EVERY +EXCEPT +EXCLUDE +EXECUTE +EXISTS +EXPIRED +EXPLAIN +EXPORT +EXTENDED +EXTERNAL +EXTRACT +FAILED_LOGIN_ATTEMPTS +FALSE +FAST +FEATURE +FIELDS +FILE +FILTER +FIRST +FLOAT +FOLLOWER +FOLLOWING +FOR +FOREIGN +FORCE +FORMAT +FREE +FROM +FRONTEND +FRONTENDS +FULL +FUNCTION +FUNCTIONS +GENERATED +GENERIC +GLOBAL +GRANT +GRANTS +GRAPH +GROUP +GROUPING +GROUPS +HASH +HAVING +HDFS +HELP +HISTOGRAM +HLL +HLL_UNION +HOSTNAME +HOTSPOT +HOUR +HUB +IDENTIFIED +IF +IGNORE +IMMEDIATE +IN +INCREMENTAL +INDEX +INDEXES +INFILE +INNER +INSERT +INSTALL +INT +INTEGER +INTERMEDIATE +INTERSECT +INTERVAL +INTO +INVERTED +IPV4 +IPV6 +IS +IS_NOT_NULL_PRED +IS_NULL_PRED +ISNULL +ISOLATION +JOB +JOBS +JOIN +JSON +JSONB +KEY +KEYS +KILL +LABEL +LARGEINT +LAST +LATERAL +LDAP +LDAP_ADMIN_PASSWORD +LEFT +LESS +LEVEL +LIKE +LIMIT +LINES +LINK +LIST +LOAD +LOCAL +LOCALTIME +LOCALTIMESTAMP +LOCATION +LOCK +LOGICAL +LOW_PRIORITY +MANUAL +MAP +MATCH +MATCH_ALL +MATCH_ANY +MATCH_PHRASE +MATCH_PHRASE_EDGE +MATCH_PHRASE_PREFIX +MATCH_REGEXP +MATCH_NAME +MATCH_NAME_GLOB +MATERIALIZED +MAX +MAXVALUE +MEMO +MERGE +MIGRATE +MIGRATIONS +MIN +MINUS +MINUTE +MODIFY +MONTH +MTMV +NAME +NAMES +NATURAL +NEGATIVE +NEVER +NEXT +NGRAM_BF +NO +NO_USE_MV +NON_NULLABLE +NOT +NULL +NULLS +OBSERVER +OF +OFFSET +ON +ONLY +OPEN +OPTIMIZED +OR +ORDER +OUTER +OUTFILE +OVER +OVERWRITE +PARAMETER +PARSED +PARTITION +PARTITIONS +PASSWORD +PASSWORD_EXPIRE +PASSWORD_HISTORY +PASSWORD_LOCK_TIME +PASSWORD_REUSE +PATH +PAUSE +PERCENT +PERIOD +PERMISSIVE +PHYSICAL +PI +PLACEHOLDER +PLAN +PLAY +PRIVILEGES +PROCESS +PLUGIN +PLUGINS +POLICY +PRECEDING +PREPARE +PRIMARY +PROC +PROCEDURE +PROCESSLIST +PROFILE +PROPERTIES +PROPERTY +QUANTILE_STATE +QUANTILE_UNION +QUERY +QUEUED +QUOTA +QUALIFY +QUARTER +RANDOM +RANGE +READ +REAL +REBALANCE +RECENT +RECOVER +RECYCLE +REFRESH +REFERENCES +REGEXP +RELEASE +RENAME +REPAIR +REPEATABLE +REPLACE +REPLACE_IF_NOT_NULL +REPLAYER +REPLICA +REPOSITORIES +REPOSITORY +RESOURCE +RESOURCES +RESTORE +RESTRICTIVE +RESUME +RETURNS +REVOKE +REWRITTEN +RIGHT +RLIKE +ROLE +ROLES +ROLLBACK +ROLLUP +ROUTINE +ROW +ROWS +S3 +SAMPLE +SCHEDULE +SCHEDULER +SCHEMA +SCHEMAS +SECOND +SELECT +SEMI +SERIALIZABLE +SESSION +SESSION_USER +SET +SETS +SET_SESSION_VARIABLE +SHAPE +SHOW +SIGNED +SKEW +SMALLINT +SNAPSHOT +SONAME +SPLIT +SQL +SQL_BLOCK_RULE +STAGE +STAGES +START +STARTS +STATS +STATUS +STOP +STORAGE +STREAM +STREAMING +STRING +STRUCT +SUM +SUPERUSER +SWITCH +SYNC +SYSTEM +TABLE +TABLES +TABLESAMPLE +TABLET +TABLETS +TASK +TASKS +TEMPORARY +TERMINATED +TEXT +THAN +THEN +TIME +TIMESTAMP +TINYINT +TO +TRANSACTION +TRASH +TREE +TRIGGERS +TRIM +TRUE +TRUNCATE +TYPE +TYPECAST +TYPES +UNBOUNDED +UNCOMMITTED +UNINSTALL +UNION +UNIQUE +UNLOCK +UNSET +UNSIGNED +UP +UPDATE +USE +USER +USE_MV +USING +VALUE +VALUES +VARCHAR +VARIABLE +VARIABLES +VARIANT +VAULT +VAULTS +VERBOSE +VERSION +VIEW +VIEWS +WARM +WARNINGS +WEEK +WHEN +WHERE +WHITELIST +WITH +WORK +WORKLOAD +WRITE +XOR +YEAR +EQ +NSEQ +NEQ +LT +LTE +GT +GTE +PLUS +SUBTRACT +ASTERISK +SLASH +MOD +TILDE +AMPERSAND +LOGICALAND +LOGICALNOT +PIPE +DOUBLEPIPES +HAT +COLON +ARROW +HINT_START +HINT_END +COMMENT_START +ATSIGN +DOUBLEATSIGN +STRING_LITERAL +LEADING_STRING +BIGINT_LITERAL +SMALLINT_LITERAL +TINYINT_LITERAL +INTEGER_VALUE +EXPONENT_VALUE +DECIMAL_VALUE +BIGDECIMAL_LITERAL +IDENTIFIER +BACKQUOTED_IDENTIFIER +SIMPLE_COMMENT +BRACKETED_COMMENT +FROM_DUAL +WS +UNRECOGNIZED + +rule names: +SEMICOLON +LEFT_PAREN +RIGHT_PAREN +COMMA +DOT +DOTDOTDOT +LEFT_BRACKET +RIGHT_BRACKET +LEFT_BRACE +RIGHT_BRACE +ACCOUNT_LOCK +ACCOUNT_UNLOCK +ACTIONS +ADD +ADMIN +AFTER +AGG_STATE +AGGREGATE +ALIAS +ALL +ALTER +ANALYZE +ANALYZED +AND +ANTI +APPEND +ARRAY +AS +ASC +AT +AUTHORS +AUTO +AUTO_INCREMENT +ALWAYS +BACKEND +BACKENDS +BACKUP +BEGIN +BELONG +BETWEEN +BIGINT +BIN +BINARY +BINLOG +BITAND +BITMAP +BITMAP_EMPTY +BITMAP_UNION +BITOR +BITXOR +BLOB +BOOLEAN +BRIEF +BROKER +BUCKETS +BUILD +BUILTIN +BULK +BY +CACHE +CACHED +CALL +CANCEL +CASE +CAST +CATALOG +CATALOGS +CHAIN +CHAR +CHARSET +CHECK +CLEAN +CLUSTER +CLUSTERS +COLLATE +COLLATION +COLLECT +COLOCATE +COLUMN +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETE +COMPRESS_TYPE +COMPUTE +CONDITIONS +CONFIG +CONNECTION +CONNECTION_ID +CONSISTENT +CONSTRAINT +CONSTRAINTS +CONVERT +CONVERT_LSC +COPY +COUNT +CREATE +CREATION +CRON +CROSS +CUBE +CURRENT +CURRENT_CATALOG +CURRENT_DATE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DATA +DATABASE +DATABASES +DATE +DATETIME +DATETIMEV2 +DATEV2 +DATETIMEV1 +DATEV1 +DAY +DECIMAL +DECIMALV2 +DECIMALV3 +DECOMMISSION +DEFAULT +DEFERRED +DELETE +DEMAND +DESC +DESCRIBE +DIAGNOSE +DIAGNOSIS +DISK +DISTINCT +DISTINCTPC +DISTINCTPCSA +DISTRIBUTED +DISTRIBUTION +DIV +DO +DORIS_INTERNAL_TABLE_ID +DOUBLE +DROP +DROPP +DUAL +DUMP +DUPLICATE +DYNAMIC +E +ELSE +ENABLE +ENCRYPTKEY +ENCRYPTKEYS +END +ENDS +ENGINE +ENGINES +ENTER +ERRORS +EVENTS +EVERY +EXCEPT +EXCLUDE +EXECUTE +EXISTS +EXPIRED +EXPLAIN +EXPORT +EXTENDED +EXTERNAL +EXTRACT +FAILED_LOGIN_ATTEMPTS +FALSE +FAST +FEATURE +FIELDS +FILE +FILTER +FIRST +FLOAT +FOLLOWER +FOLLOWING +FOR +FOREIGN +FORCE +FORMAT +FREE +FROM +FRONTEND +FRONTENDS +FULL +FUNCTION +FUNCTIONS +GENERATED +GENERIC +GLOBAL +GRANT +GRANTS +GRAPH +GROUP +GROUPING +GROUPS +HASH +HAVING +HDFS +HELP +HISTOGRAM +HLL +HLL_UNION +HOSTNAME +HOTSPOT +HOUR +HUB +IDENTIFIED +IF +IGNORE +IMMEDIATE +IN +INCREMENTAL +INDEX +INDEXES +INFILE +INNER +INSERT +INSTALL +INT +INTEGER +INTERMEDIATE +INTERSECT +INTERVAL +INTO +INVERTED +IPV4 +IPV6 +IS +IS_NOT_NULL_PRED +IS_NULL_PRED +ISNULL +ISOLATION +JOB +JOBS +JOIN +JSON +JSONB +KEY +KEYS +KILL +LABEL +LARGEINT +LAST +LATERAL +LDAP +LDAP_ADMIN_PASSWORD +LEFT +LESS +LEVEL +LIKE +LIMIT +LINES +LINK +LIST +LOAD +LOCAL +LOCALTIME +LOCALTIMESTAMP +LOCATION +LOCK +LOGICAL +LOW_PRIORITY +MANUAL +MAP +MATCH +MATCH_ALL +MATCH_ANY +MATCH_PHRASE +MATCH_PHRASE_EDGE +MATCH_PHRASE_PREFIX +MATCH_REGEXP +MATCH_NAME +MATCH_NAME_GLOB +MATERIALIZED +MAX +MAXVALUE +MEMO +MERGE +MIGRATE +MIGRATIONS +MIN +MINUS +MINUTE +MODIFY +MONTH +MTMV +NAME +NAMES +NATURAL +NEGATIVE +NEVER +NEXT +NGRAM_BF +NO +NO_USE_MV +NON_NULLABLE +NOT +NULL +NULLS +OBSERVER +OF +OFFSET +ON +ONLY +OPEN +OPTIMIZED +OR +ORDER +OUTER +OUTFILE +OVER +OVERWRITE +PARAMETER +PARSED +PARTITION +PARTITIONS +PASSWORD +PASSWORD_EXPIRE +PASSWORD_HISTORY +PASSWORD_LOCK_TIME +PASSWORD_REUSE +PATH +PAUSE +PERCENT +PERIOD +PERMISSIVE +PHYSICAL +PI +PLACEHOLDER +PLAN +PLAY +PRIVILEGES +PROCESS +PLUGIN +PLUGINS +POLICY +PRECEDING +PREPARE +PRIMARY +PROC +PROCEDURE +PROCESSLIST +PROFILE +PROPERTIES +PROPERTY +QUANTILE_STATE +QUANTILE_UNION +QUERY +QUEUED +QUOTA +QUALIFY +QUARTER +RANDOM +RANGE +READ +REAL +REBALANCE +RECENT +RECOVER +RECYCLE +REFRESH +REFERENCES +REGEXP +RELEASE +RENAME +REPAIR +REPEATABLE +REPLACE +REPLACE_IF_NOT_NULL +REPLAYER +REPLICA +REPOSITORIES +REPOSITORY +RESOURCE +RESOURCES +RESTORE +RESTRICTIVE +RESUME +RETURNS +REVOKE +REWRITTEN +RIGHT +RLIKE +ROLE +ROLES +ROLLBACK +ROLLUP +ROUTINE +ROW +ROWS +S3 +SAMPLE +SCHEDULE +SCHEDULER +SCHEMA +SCHEMAS +SECOND +SELECT +SEMI +SERIALIZABLE +SESSION +SESSION_USER +SET +SETS +SET_SESSION_VARIABLE +SHAPE +SHOW +SIGNED +SKEW +SMALLINT +SNAPSHOT +SONAME +SPLIT +SQL +SQL_BLOCK_RULE +STAGE +STAGES +START +STARTS +STATS +STATUS +STOP +STORAGE +STREAM +STREAMING +STRING +STRUCT +SUM +SUPERUSER +SWITCH +SYNC +SYSTEM +TABLE +TABLES +TABLESAMPLE +TABLET +TABLETS +TASK +TASKS +TEMPORARY +TERMINATED +TEXT +THAN +THEN +TIME +TIMESTAMP +TINYINT +TO +TRANSACTION +TRASH +TREE +TRIGGERS +TRIM +TRUE +TRUNCATE +TYPE +TYPECAST +TYPES +UNBOUNDED +UNCOMMITTED +UNINSTALL +UNION +UNIQUE +UNLOCK +UNSET +UNSIGNED +UP +UPDATE +USE +USER +USE_MV +USING +VALUE +VALUES +VARCHAR +VARIABLE +VARIABLES +VARIANT +VAULT +VAULTS +VERBOSE +VERSION +VIEW +VIEWS +WARM +WARNINGS +WEEK +WHEN +WHERE +WHITELIST +WITH +WORK +WORKLOAD +WRITE +XOR +YEAR +EQ +NSEQ +NEQ +LT +LTE +GT +GTE +PLUS +SUBTRACT +ASTERISK +SLASH +MOD +TILDE +AMPERSAND +LOGICALAND +LOGICALNOT +PIPE +DOUBLEPIPES +HAT +COLON +ARROW +HINT_START +HINT_END +COMMENT_START +ATSIGN +DOUBLEATSIGN +STRING_LITERAL +LEADING_STRING +BIGINT_LITERAL +SMALLINT_LITERAL +TINYINT_LITERAL +INTEGER_VALUE +EXPONENT_VALUE +DECIMAL_VALUE +BIGDECIMAL_LITERAL +IDENTIFIER +BACKQUOTED_IDENTIFIER +DECIMAL_DIGITS +EXPONENT +DIGIT +LETTER +SIMPLE_COMMENT +BRACKETED_COMMENT +FROM_DUAL +WS +UNRECOGNIZED + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 544, 5279, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1542, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 3, 502, 4974, 8, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 3, 504, 4984, 8, 504, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 3, 506, 4992, 8, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 3, 508, 5000, 8, 508, 1, 509, 1, 509, 1, 510, 1, 510, 1, 511, 1, 511, 1, 512, 1, 512, 1, 513, 1, 513, 1, 514, 1, 514, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5054, 8, 528, 10, 528, 12, 528, 5057, 9, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5066, 8, 528, 10, 528, 12, 528, 5069, 9, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5076, 8, 528, 10, 528, 12, 528, 5079, 9, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5086, 8, 528, 10, 528, 12, 528, 5089, 9, 528, 1, 528, 3, 528, 5092, 8, 528, 1, 529, 1, 529, 1, 529, 1, 529, 3, 529, 5098, 8, 529, 1, 530, 4, 530, 5101, 8, 530, 11, 530, 12, 530, 5102, 1, 530, 1, 530, 1, 531, 4, 531, 5108, 8, 531, 11, 531, 12, 531, 5109, 1, 531, 1, 531, 1, 532, 4, 532, 5115, 8, 532, 11, 532, 12, 532, 5116, 1, 532, 1, 532, 1, 533, 4, 533, 5122, 8, 533, 11, 533, 12, 533, 5123, 1, 534, 4, 534, 5127, 8, 534, 11, 534, 12, 534, 5128, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 3, 534, 5137, 8, 534, 1, 535, 1, 535, 1, 535, 1, 536, 4, 536, 5143, 8, 536, 11, 536, 12, 536, 5144, 1, 536, 3, 536, 5148, 8, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 3, 536, 5155, 8, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 3, 536, 5162, 8, 536, 1, 537, 1, 537, 1, 537, 4, 537, 5167, 8, 537, 11, 537, 12, 537, 5168, 1, 538, 1, 538, 1, 538, 1, 538, 5, 538, 5175, 8, 538, 10, 538, 12, 538, 5178, 9, 538, 1, 538, 1, 538, 1, 539, 4, 539, 5183, 8, 539, 11, 539, 12, 539, 5184, 1, 539, 1, 539, 5, 539, 5189, 8, 539, 10, 539, 12, 539, 5192, 9, 539, 1, 539, 1, 539, 4, 539, 5196, 8, 539, 11, 539, 12, 539, 5197, 3, 539, 5200, 8, 539, 1, 540, 1, 540, 3, 540, 5204, 8, 540, 1, 540, 4, 540, 5207, 8, 540, 11, 540, 12, 540, 5208, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 3, 542, 5217, 8, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 5, 543, 5225, 8, 543, 10, 543, 12, 543, 5228, 9, 543, 1, 543, 3, 543, 5231, 8, 543, 1, 543, 3, 543, 5234, 8, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 5, 544, 5241, 8, 544, 10, 544, 12, 544, 5244, 9, 544, 1, 544, 1, 544, 1, 544, 1, 544, 3, 544, 5250, 8, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 4, 545, 5260, 8, 545, 11, 545, 12, 545, 5261, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 4, 546, 5272, 8, 546, 11, 546, 12, 546, 5273, 1, 546, 1, 546, 1, 547, 1, 547, 1, 5242, 0, 548, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 336, 673, 337, 675, 338, 677, 339, 679, 340, 681, 341, 683, 342, 685, 343, 687, 344, 689, 345, 691, 346, 693, 347, 695, 348, 697, 349, 699, 350, 701, 351, 703, 352, 705, 353, 707, 354, 709, 355, 711, 356, 713, 357, 715, 358, 717, 359, 719, 360, 721, 361, 723, 362, 725, 363, 727, 364, 729, 365, 731, 366, 733, 367, 735, 368, 737, 369, 739, 370, 741, 371, 743, 372, 745, 373, 747, 374, 749, 375, 751, 376, 753, 377, 755, 378, 757, 379, 759, 380, 761, 381, 763, 382, 765, 383, 767, 384, 769, 385, 771, 386, 773, 387, 775, 388, 777, 389, 779, 390, 781, 391, 783, 392, 785, 393, 787, 394, 789, 395, 791, 396, 793, 397, 795, 398, 797, 399, 799, 400, 801, 401, 803, 402, 805, 403, 807, 404, 809, 405, 811, 406, 813, 407, 815, 408, 817, 409, 819, 410, 821, 411, 823, 412, 825, 413, 827, 414, 829, 415, 831, 416, 833, 417, 835, 418, 837, 419, 839, 420, 841, 421, 843, 422, 845, 423, 847, 424, 849, 425, 851, 426, 853, 427, 855, 428, 857, 429, 859, 430, 861, 431, 863, 432, 865, 433, 867, 434, 869, 435, 871, 436, 873, 437, 875, 438, 877, 439, 879, 440, 881, 441, 883, 442, 885, 443, 887, 444, 889, 445, 891, 446, 893, 447, 895, 448, 897, 449, 899, 450, 901, 451, 903, 452, 905, 453, 907, 454, 909, 455, 911, 456, 913, 457, 915, 458, 917, 459, 919, 460, 921, 461, 923, 462, 925, 463, 927, 464, 929, 465, 931, 466, 933, 467, 935, 468, 937, 469, 939, 470, 941, 471, 943, 472, 945, 473, 947, 474, 949, 475, 951, 476, 953, 477, 955, 478, 957, 479, 959, 480, 961, 481, 963, 482, 965, 483, 967, 484, 969, 485, 971, 486, 973, 487, 975, 488, 977, 489, 979, 490, 981, 491, 983, 492, 985, 493, 987, 494, 989, 495, 991, 496, 993, 497, 995, 498, 997, 499, 999, 500, 1001, 501, 1003, 502, 1005, 503, 1007, 504, 1009, 505, 1011, 506, 1013, 507, 1015, 508, 1017, 509, 1019, 510, 1021, 511, 1023, 512, 1025, 513, 1027, 514, 1029, 515, 1031, 516, 1033, 517, 1035, 518, 1037, 519, 1039, 520, 1041, 521, 1043, 522, 1045, 523, 1047, 524, 1049, 525, 1051, 526, 1053, 527, 1055, 528, 1057, 529, 1059, 530, 1061, 531, 1063, 532, 1065, 533, 1067, 534, 1069, 535, 1071, 536, 1073, 537, 1075, 538, 1077, 539, 1079, 0, 1081, 0, 1083, 0, 1085, 0, 1087, 540, 1089, 541, 1091, 542, 1093, 543, 1095, 544, 1, 0, 13, 2, 0, 39, 39, 92, 92, 2, 0, 34, 34, 92, 92, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 2, 0, 0, 127, 55296, 56319, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 5325, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 1, 1097, 1, 0, 0, 0, 3, 1099, 1, 0, 0, 0, 5, 1101, 1, 0, 0, 0, 7, 1103, 1, 0, 0, 0, 9, 1105, 1, 0, 0, 0, 11, 1107, 1, 0, 0, 0, 13, 1111, 1, 0, 0, 0, 15, 1113, 1, 0, 0, 0, 17, 1115, 1, 0, 0, 0, 19, 1117, 1, 0, 0, 0, 21, 1119, 1, 0, 0, 0, 23, 1132, 1, 0, 0, 0, 25, 1147, 1, 0, 0, 0, 27, 1155, 1, 0, 0, 0, 29, 1159, 1, 0, 0, 0, 31, 1165, 1, 0, 0, 0, 33, 1171, 1, 0, 0, 0, 35, 1181, 1, 0, 0, 0, 37, 1191, 1, 0, 0, 0, 39, 1197, 1, 0, 0, 0, 41, 1201, 1, 0, 0, 0, 43, 1207, 1, 0, 0, 0, 45, 1215, 1, 0, 0, 0, 47, 1224, 1, 0, 0, 0, 49, 1228, 1, 0, 0, 0, 51, 1233, 1, 0, 0, 0, 53, 1240, 1, 0, 0, 0, 55, 1246, 1, 0, 0, 0, 57, 1249, 1, 0, 0, 0, 59, 1253, 1, 0, 0, 0, 61, 1256, 1, 0, 0, 0, 63, 1264, 1, 0, 0, 0, 65, 1269, 1, 0, 0, 0, 67, 1284, 1, 0, 0, 0, 69, 1291, 1, 0, 0, 0, 71, 1299, 1, 0, 0, 0, 73, 1308, 1, 0, 0, 0, 75, 1315, 1, 0, 0, 0, 77, 1321, 1, 0, 0, 0, 79, 1328, 1, 0, 0, 0, 81, 1336, 1, 0, 0, 0, 83, 1343, 1, 0, 0, 0, 85, 1347, 1, 0, 0, 0, 87, 1354, 1, 0, 0, 0, 89, 1361, 1, 0, 0, 0, 91, 1368, 1, 0, 0, 0, 93, 1375, 1, 0, 0, 0, 95, 1388, 1, 0, 0, 0, 97, 1401, 1, 0, 0, 0, 99, 1407, 1, 0, 0, 0, 101, 1414, 1, 0, 0, 0, 103, 1419, 1, 0, 0, 0, 105, 1427, 1, 0, 0, 0, 107, 1433, 1, 0, 0, 0, 109, 1440, 1, 0, 0, 0, 111, 1448, 1, 0, 0, 0, 113, 1454, 1, 0, 0, 0, 115, 1462, 1, 0, 0, 0, 117, 1467, 1, 0, 0, 0, 119, 1470, 1, 0, 0, 0, 121, 1476, 1, 0, 0, 0, 123, 1483, 1, 0, 0, 0, 125, 1488, 1, 0, 0, 0, 127, 1495, 1, 0, 0, 0, 129, 1500, 1, 0, 0, 0, 131, 1505, 1, 0, 0, 0, 133, 1513, 1, 0, 0, 0, 135, 1522, 1, 0, 0, 0, 137, 1541, 1, 0, 0, 0, 139, 1543, 1, 0, 0, 0, 141, 1551, 1, 0, 0, 0, 143, 1557, 1, 0, 0, 0, 145, 1563, 1, 0, 0, 0, 147, 1571, 1, 0, 0, 0, 149, 1580, 1, 0, 0, 0, 151, 1588, 1, 0, 0, 0, 153, 1598, 1, 0, 0, 0, 155, 1606, 1, 0, 0, 0, 157, 1615, 1, 0, 0, 0, 159, 1622, 1, 0, 0, 0, 161, 1630, 1, 0, 0, 0, 163, 1638, 1, 0, 0, 0, 165, 1645, 1, 0, 0, 0, 167, 1655, 1, 0, 0, 0, 169, 1663, 1, 0, 0, 0, 171, 1672, 1, 0, 0, 0, 173, 1686, 1, 0, 0, 0, 175, 1694, 1, 0, 0, 0, 177, 1705, 1, 0, 0, 0, 179, 1712, 1, 0, 0, 0, 181, 1723, 1, 0, 0, 0, 183, 1737, 1, 0, 0, 0, 185, 1748, 1, 0, 0, 0, 187, 1759, 1, 0, 0, 0, 189, 1771, 1, 0, 0, 0, 191, 1779, 1, 0, 0, 0, 193, 1815, 1, 0, 0, 0, 195, 1820, 1, 0, 0, 0, 197, 1826, 1, 0, 0, 0, 199, 1833, 1, 0, 0, 0, 201, 1842, 1, 0, 0, 0, 203, 1847, 1, 0, 0, 0, 205, 1853, 1, 0, 0, 0, 207, 1858, 1, 0, 0, 0, 209, 1866, 1, 0, 0, 0, 211, 1882, 1, 0, 0, 0, 213, 1895, 1, 0, 0, 0, 215, 1908, 1, 0, 0, 0, 217, 1926, 1, 0, 0, 0, 219, 1939, 1, 0, 0, 0, 221, 1944, 1, 0, 0, 0, 223, 1953, 1, 0, 0, 0, 225, 1963, 1, 0, 0, 0, 227, 1968, 1, 0, 0, 0, 229, 1977, 1, 0, 0, 0, 231, 1988, 1, 0, 0, 0, 233, 1995, 1, 0, 0, 0, 235, 2006, 1, 0, 0, 0, 237, 2013, 1, 0, 0, 0, 239, 2017, 1, 0, 0, 0, 241, 2025, 1, 0, 0, 0, 243, 2035, 1, 0, 0, 0, 245, 2045, 1, 0, 0, 0, 247, 2058, 1, 0, 0, 0, 249, 2066, 1, 0, 0, 0, 251, 2075, 1, 0, 0, 0, 253, 2082, 1, 0, 0, 0, 255, 2089, 1, 0, 0, 0, 257, 2094, 1, 0, 0, 0, 259, 2103, 1, 0, 0, 0, 261, 2112, 1, 0, 0, 0, 263, 2122, 1, 0, 0, 0, 265, 2127, 1, 0, 0, 0, 267, 2136, 1, 0, 0, 0, 269, 2147, 1, 0, 0, 0, 271, 2160, 1, 0, 0, 0, 273, 2172, 1, 0, 0, 0, 275, 2185, 1, 0, 0, 0, 277, 2189, 1, 0, 0, 0, 279, 2192, 1, 0, 0, 0, 281, 2216, 1, 0, 0, 0, 283, 2223, 1, 0, 0, 0, 285, 2228, 1, 0, 0, 0, 287, 2234, 1, 0, 0, 0, 289, 2239, 1, 0, 0, 0, 291, 2244, 1, 0, 0, 0, 293, 2254, 1, 0, 0, 0, 295, 2262, 1, 0, 0, 0, 297, 2264, 1, 0, 0, 0, 299, 2269, 1, 0, 0, 0, 301, 2276, 1, 0, 0, 0, 303, 2287, 1, 0, 0, 0, 305, 2299, 1, 0, 0, 0, 307, 2303, 1, 0, 0, 0, 309, 2308, 1, 0, 0, 0, 311, 2315, 1, 0, 0, 0, 313, 2323, 1, 0, 0, 0, 315, 2329, 1, 0, 0, 0, 317, 2336, 1, 0, 0, 0, 319, 2343, 1, 0, 0, 0, 321, 2349, 1, 0, 0, 0, 323, 2356, 1, 0, 0, 0, 325, 2364, 1, 0, 0, 0, 327, 2372, 1, 0, 0, 0, 329, 2379, 1, 0, 0, 0, 331, 2387, 1, 0, 0, 0, 333, 2395, 1, 0, 0, 0, 335, 2402, 1, 0, 0, 0, 337, 2411, 1, 0, 0, 0, 339, 2420, 1, 0, 0, 0, 341, 2428, 1, 0, 0, 0, 343, 2450, 1, 0, 0, 0, 345, 2456, 1, 0, 0, 0, 347, 2461, 1, 0, 0, 0, 349, 2469, 1, 0, 0, 0, 351, 2476, 1, 0, 0, 0, 353, 2481, 1, 0, 0, 0, 355, 2488, 1, 0, 0, 0, 357, 2494, 1, 0, 0, 0, 359, 2500, 1, 0, 0, 0, 361, 2509, 1, 0, 0, 0, 363, 2519, 1, 0, 0, 0, 365, 2523, 1, 0, 0, 0, 367, 2531, 1, 0, 0, 0, 369, 2537, 1, 0, 0, 0, 371, 2544, 1, 0, 0, 0, 373, 2549, 1, 0, 0, 0, 375, 2554, 1, 0, 0, 0, 377, 2563, 1, 0, 0, 0, 379, 2573, 1, 0, 0, 0, 381, 2578, 1, 0, 0, 0, 383, 2587, 1, 0, 0, 0, 385, 2597, 1, 0, 0, 0, 387, 2607, 1, 0, 0, 0, 389, 2615, 1, 0, 0, 0, 391, 2622, 1, 0, 0, 0, 393, 2628, 1, 0, 0, 0, 395, 2635, 1, 0, 0, 0, 397, 2641, 1, 0, 0, 0, 399, 2647, 1, 0, 0, 0, 401, 2656, 1, 0, 0, 0, 403, 2663, 1, 0, 0, 0, 405, 2668, 1, 0, 0, 0, 407, 2675, 1, 0, 0, 0, 409, 2680, 1, 0, 0, 0, 411, 2685, 1, 0, 0, 0, 413, 2695, 1, 0, 0, 0, 415, 2699, 1, 0, 0, 0, 417, 2709, 1, 0, 0, 0, 419, 2718, 1, 0, 0, 0, 421, 2726, 1, 0, 0, 0, 423, 2731, 1, 0, 0, 0, 425, 2735, 1, 0, 0, 0, 427, 2746, 1, 0, 0, 0, 429, 2749, 1, 0, 0, 0, 431, 2756, 1, 0, 0, 0, 433, 2766, 1, 0, 0, 0, 435, 2769, 1, 0, 0, 0, 437, 2781, 1, 0, 0, 0, 439, 2787, 1, 0, 0, 0, 441, 2795, 1, 0, 0, 0, 443, 2802, 1, 0, 0, 0, 445, 2808, 1, 0, 0, 0, 447, 2815, 1, 0, 0, 0, 449, 2823, 1, 0, 0, 0, 451, 2827, 1, 0, 0, 0, 453, 2835, 1, 0, 0, 0, 455, 2848, 1, 0, 0, 0, 457, 2858, 1, 0, 0, 0, 459, 2867, 1, 0, 0, 0, 461, 2872, 1, 0, 0, 0, 463, 2881, 1, 0, 0, 0, 465, 2886, 1, 0, 0, 0, 467, 2891, 1, 0, 0, 0, 469, 2894, 1, 0, 0, 0, 471, 2911, 1, 0, 0, 0, 473, 2924, 1, 0, 0, 0, 475, 2931, 1, 0, 0, 0, 477, 2941, 1, 0, 0, 0, 479, 2945, 1, 0, 0, 0, 481, 2950, 1, 0, 0, 0, 483, 2955, 1, 0, 0, 0, 485, 2960, 1, 0, 0, 0, 487, 2966, 1, 0, 0, 0, 489, 2970, 1, 0, 0, 0, 491, 2975, 1, 0, 0, 0, 493, 2980, 1, 0, 0, 0, 495, 2986, 1, 0, 0, 0, 497, 2995, 1, 0, 0, 0, 499, 3000, 1, 0, 0, 0, 501, 3008, 1, 0, 0, 0, 503, 3013, 1, 0, 0, 0, 505, 3033, 1, 0, 0, 0, 507, 3038, 1, 0, 0, 0, 509, 3043, 1, 0, 0, 0, 511, 3049, 1, 0, 0, 0, 513, 3054, 1, 0, 0, 0, 515, 3060, 1, 0, 0, 0, 517, 3066, 1, 0, 0, 0, 519, 3071, 1, 0, 0, 0, 521, 3076, 1, 0, 0, 0, 523, 3081, 1, 0, 0, 0, 525, 3087, 1, 0, 0, 0, 527, 3097, 1, 0, 0, 0, 529, 3112, 1, 0, 0, 0, 531, 3121, 1, 0, 0, 0, 533, 3126, 1, 0, 0, 0, 535, 3134, 1, 0, 0, 0, 537, 3147, 1, 0, 0, 0, 539, 3154, 1, 0, 0, 0, 541, 3158, 1, 0, 0, 0, 543, 3164, 1, 0, 0, 0, 545, 3174, 1, 0, 0, 0, 547, 3184, 1, 0, 0, 0, 549, 3197, 1, 0, 0, 0, 551, 3215, 1, 0, 0, 0, 553, 3235, 1, 0, 0, 0, 555, 3248, 1, 0, 0, 0, 557, 3259, 1, 0, 0, 0, 559, 3275, 1, 0, 0, 0, 561, 3288, 1, 0, 0, 0, 563, 3292, 1, 0, 0, 0, 565, 3301, 1, 0, 0, 0, 567, 3306, 1, 0, 0, 0, 569, 3312, 1, 0, 0, 0, 571, 3320, 1, 0, 0, 0, 573, 3331, 1, 0, 0, 0, 575, 3335, 1, 0, 0, 0, 577, 3341, 1, 0, 0, 0, 579, 3348, 1, 0, 0, 0, 581, 3355, 1, 0, 0, 0, 583, 3361, 1, 0, 0, 0, 585, 3366, 1, 0, 0, 0, 587, 3371, 1, 0, 0, 0, 589, 3377, 1, 0, 0, 0, 591, 3385, 1, 0, 0, 0, 593, 3394, 1, 0, 0, 0, 595, 3400, 1, 0, 0, 0, 597, 3405, 1, 0, 0, 0, 599, 3414, 1, 0, 0, 0, 601, 3417, 1, 0, 0, 0, 603, 3427, 1, 0, 0, 0, 605, 3440, 1, 0, 0, 0, 607, 3444, 1, 0, 0, 0, 609, 3449, 1, 0, 0, 0, 611, 3455, 1, 0, 0, 0, 613, 3464, 1, 0, 0, 0, 615, 3467, 1, 0, 0, 0, 617, 3474, 1, 0, 0, 0, 619, 3477, 1, 0, 0, 0, 621, 3482, 1, 0, 0, 0, 623, 3487, 1, 0, 0, 0, 625, 3497, 1, 0, 0, 0, 627, 3500, 1, 0, 0, 0, 629, 3506, 1, 0, 0, 0, 631, 3512, 1, 0, 0, 0, 633, 3520, 1, 0, 0, 0, 635, 3525, 1, 0, 0, 0, 637, 3535, 1, 0, 0, 0, 639, 3545, 1, 0, 0, 0, 641, 3552, 1, 0, 0, 0, 643, 3562, 1, 0, 0, 0, 645, 3573, 1, 0, 0, 0, 647, 3582, 1, 0, 0, 0, 649, 3598, 1, 0, 0, 0, 651, 3615, 1, 0, 0, 0, 653, 3634, 1, 0, 0, 0, 655, 3649, 1, 0, 0, 0, 657, 3654, 1, 0, 0, 0, 659, 3660, 1, 0, 0, 0, 661, 3668, 1, 0, 0, 0, 663, 3675, 1, 0, 0, 0, 665, 3686, 1, 0, 0, 0, 667, 3695, 1, 0, 0, 0, 669, 3698, 1, 0, 0, 0, 671, 3700, 1, 0, 0, 0, 673, 3705, 1, 0, 0, 0, 675, 3710, 1, 0, 0, 0, 677, 3721, 1, 0, 0, 0, 679, 3729, 1, 0, 0, 0, 681, 3736, 1, 0, 0, 0, 683, 3744, 1, 0, 0, 0, 685, 3751, 1, 0, 0, 0, 687, 3761, 1, 0, 0, 0, 689, 3769, 1, 0, 0, 0, 691, 3777, 1, 0, 0, 0, 693, 3782, 1, 0, 0, 0, 695, 3792, 1, 0, 0, 0, 697, 3804, 1, 0, 0, 0, 699, 3812, 1, 0, 0, 0, 701, 3823, 1, 0, 0, 0, 703, 3832, 1, 0, 0, 0, 705, 3847, 1, 0, 0, 0, 707, 3862, 1, 0, 0, 0, 709, 3868, 1, 0, 0, 0, 711, 3875, 1, 0, 0, 0, 713, 3881, 1, 0, 0, 0, 715, 3889, 1, 0, 0, 0, 717, 3897, 1, 0, 0, 0, 719, 3904, 1, 0, 0, 0, 721, 3910, 1, 0, 0, 0, 723, 3915, 1, 0, 0, 0, 725, 3920, 1, 0, 0, 0, 727, 3930, 1, 0, 0, 0, 729, 3937, 1, 0, 0, 0, 731, 3945, 1, 0, 0, 0, 733, 3953, 1, 0, 0, 0, 735, 3961, 1, 0, 0, 0, 737, 3972, 1, 0, 0, 0, 739, 3979, 1, 0, 0, 0, 741, 3987, 1, 0, 0, 0, 743, 3994, 1, 0, 0, 0, 745, 4001, 1, 0, 0, 0, 747, 4012, 1, 0, 0, 0, 749, 4020, 1, 0, 0, 0, 751, 4040, 1, 0, 0, 0, 753, 4049, 1, 0, 0, 0, 755, 4057, 1, 0, 0, 0, 757, 4070, 1, 0, 0, 0, 759, 4081, 1, 0, 0, 0, 761, 4090, 1, 0, 0, 0, 763, 4100, 1, 0, 0, 0, 765, 4108, 1, 0, 0, 0, 767, 4120, 1, 0, 0, 0, 769, 4127, 1, 0, 0, 0, 771, 4135, 1, 0, 0, 0, 773, 4142, 1, 0, 0, 0, 775, 4152, 1, 0, 0, 0, 777, 4158, 1, 0, 0, 0, 779, 4164, 1, 0, 0, 0, 781, 4169, 1, 0, 0, 0, 783, 4175, 1, 0, 0, 0, 785, 4184, 1, 0, 0, 0, 787, 4191, 1, 0, 0, 0, 789, 4199, 1, 0, 0, 0, 791, 4203, 1, 0, 0, 0, 793, 4208, 1, 0, 0, 0, 795, 4211, 1, 0, 0, 0, 797, 4218, 1, 0, 0, 0, 799, 4227, 1, 0, 0, 0, 801, 4237, 1, 0, 0, 0, 803, 4244, 1, 0, 0, 0, 805, 4252, 1, 0, 0, 0, 807, 4259, 1, 0, 0, 0, 809, 4266, 1, 0, 0, 0, 811, 4271, 1, 0, 0, 0, 813, 4284, 1, 0, 0, 0, 815, 4292, 1, 0, 0, 0, 817, 4305, 1, 0, 0, 0, 819, 4309, 1, 0, 0, 0, 821, 4314, 1, 0, 0, 0, 823, 4335, 1, 0, 0, 0, 825, 4341, 1, 0, 0, 0, 827, 4346, 1, 0, 0, 0, 829, 4353, 1, 0, 0, 0, 831, 4358, 1, 0, 0, 0, 833, 4367, 1, 0, 0, 0, 835, 4376, 1, 0, 0, 0, 837, 4383, 1, 0, 0, 0, 839, 4389, 1, 0, 0, 0, 841, 4393, 1, 0, 0, 0, 843, 4408, 1, 0, 0, 0, 845, 4414, 1, 0, 0, 0, 847, 4421, 1, 0, 0, 0, 849, 4427, 1, 0, 0, 0, 851, 4434, 1, 0, 0, 0, 853, 4440, 1, 0, 0, 0, 855, 4447, 1, 0, 0, 0, 857, 4452, 1, 0, 0, 0, 859, 4460, 1, 0, 0, 0, 861, 4467, 1, 0, 0, 0, 863, 4477, 1, 0, 0, 0, 865, 4484, 1, 0, 0, 0, 867, 4491, 1, 0, 0, 0, 869, 4495, 1, 0, 0, 0, 871, 4505, 1, 0, 0, 0, 873, 4512, 1, 0, 0, 0, 875, 4517, 1, 0, 0, 0, 877, 4524, 1, 0, 0, 0, 879, 4530, 1, 0, 0, 0, 881, 4537, 1, 0, 0, 0, 883, 4549, 1, 0, 0, 0, 885, 4556, 1, 0, 0, 0, 887, 4564, 1, 0, 0, 0, 889, 4569, 1, 0, 0, 0, 891, 4575, 1, 0, 0, 0, 893, 4585, 1, 0, 0, 0, 895, 4596, 1, 0, 0, 0, 897, 4601, 1, 0, 0, 0, 899, 4606, 1, 0, 0, 0, 901, 4611, 1, 0, 0, 0, 903, 4616, 1, 0, 0, 0, 905, 4626, 1, 0, 0, 0, 907, 4634, 1, 0, 0, 0, 909, 4637, 1, 0, 0, 0, 911, 4649, 1, 0, 0, 0, 913, 4655, 1, 0, 0, 0, 915, 4660, 1, 0, 0, 0, 917, 4669, 1, 0, 0, 0, 919, 4674, 1, 0, 0, 0, 921, 4679, 1, 0, 0, 0, 923, 4688, 1, 0, 0, 0, 925, 4693, 1, 0, 0, 0, 927, 4703, 1, 0, 0, 0, 929, 4709, 1, 0, 0, 0, 931, 4719, 1, 0, 0, 0, 933, 4731, 1, 0, 0, 0, 935, 4741, 1, 0, 0, 0, 937, 4747, 1, 0, 0, 0, 939, 4754, 1, 0, 0, 0, 941, 4761, 1, 0, 0, 0, 943, 4767, 1, 0, 0, 0, 945, 4776, 1, 0, 0, 0, 947, 4779, 1, 0, 0, 0, 949, 4786, 1, 0, 0, 0, 951, 4790, 1, 0, 0, 0, 953, 4795, 1, 0, 0, 0, 955, 4802, 1, 0, 0, 0, 957, 4808, 1, 0, 0, 0, 959, 4814, 1, 0, 0, 0, 961, 4821, 1, 0, 0, 0, 963, 4829, 1, 0, 0, 0, 965, 4838, 1, 0, 0, 0, 967, 4848, 1, 0, 0, 0, 969, 4856, 1, 0, 0, 0, 971, 4862, 1, 0, 0, 0, 973, 4869, 1, 0, 0, 0, 975, 4877, 1, 0, 0, 0, 977, 4885, 1, 0, 0, 0, 979, 4890, 1, 0, 0, 0, 981, 4896, 1, 0, 0, 0, 983, 4901, 1, 0, 0, 0, 985, 4910, 1, 0, 0, 0, 987, 4915, 1, 0, 0, 0, 989, 4920, 1, 0, 0, 0, 991, 4926, 1, 0, 0, 0, 993, 4936, 1, 0, 0, 0, 995, 4941, 1, 0, 0, 0, 997, 4946, 1, 0, 0, 0, 999, 4955, 1, 0, 0, 0, 1001, 4961, 1, 0, 0, 0, 1003, 4965, 1, 0, 0, 0, 1005, 4973, 1, 0, 0, 0, 1007, 4975, 1, 0, 0, 0, 1009, 4983, 1, 0, 0, 0, 1011, 4985, 1, 0, 0, 0, 1013, 4991, 1, 0, 0, 0, 1015, 4993, 1, 0, 0, 0, 1017, 4999, 1, 0, 0, 0, 1019, 5001, 1, 0, 0, 0, 1021, 5003, 1, 0, 0, 0, 1023, 5005, 1, 0, 0, 0, 1025, 5007, 1, 0, 0, 0, 1027, 5009, 1, 0, 0, 0, 1029, 5011, 1, 0, 0, 0, 1031, 5013, 1, 0, 0, 0, 1033, 5015, 1, 0, 0, 0, 1035, 5018, 1, 0, 0, 0, 1037, 5020, 1, 0, 0, 0, 1039, 5022, 1, 0, 0, 0, 1041, 5025, 1, 0, 0, 0, 1043, 5027, 1, 0, 0, 0, 1045, 5029, 1, 0, 0, 0, 1047, 5032, 1, 0, 0, 0, 1049, 5036, 1, 0, 0, 0, 1051, 5039, 1, 0, 0, 0, 1053, 5042, 1, 0, 0, 0, 1055, 5044, 1, 0, 0, 0, 1057, 5091, 1, 0, 0, 0, 1059, 5097, 1, 0, 0, 0, 1061, 5100, 1, 0, 0, 0, 1063, 5107, 1, 0, 0, 0, 1065, 5114, 1, 0, 0, 0, 1067, 5121, 1, 0, 0, 0, 1069, 5136, 1, 0, 0, 0, 1071, 5138, 1, 0, 0, 0, 1073, 5161, 1, 0, 0, 0, 1075, 5166, 1, 0, 0, 0, 1077, 5170, 1, 0, 0, 0, 1079, 5199, 1, 0, 0, 0, 1081, 5201, 1, 0, 0, 0, 1083, 5210, 1, 0, 0, 0, 1085, 5216, 1, 0, 0, 0, 1087, 5218, 1, 0, 0, 0, 1089, 5237, 1, 0, 0, 0, 1091, 5253, 1, 0, 0, 0, 1093, 5271, 1, 0, 0, 0, 1095, 5277, 1, 0, 0, 0, 1097, 1098, 5, 59, 0, 0, 1098, 2, 1, 0, 0, 0, 1099, 1100, 5, 40, 0, 0, 1100, 4, 1, 0, 0, 0, 1101, 1102, 5, 41, 0, 0, 1102, 6, 1, 0, 0, 0, 1103, 1104, 5, 44, 0, 0, 1104, 8, 1, 0, 0, 0, 1105, 1106, 5, 46, 0, 0, 1106, 10, 1, 0, 0, 0, 1107, 1108, 5, 46, 0, 0, 1108, 1109, 5, 46, 0, 0, 1109, 1110, 5, 46, 0, 0, 1110, 12, 1, 0, 0, 0, 1111, 1112, 5, 91, 0, 0, 1112, 14, 1, 0, 0, 0, 1113, 1114, 5, 93, 0, 0, 1114, 16, 1, 0, 0, 0, 1115, 1116, 5, 123, 0, 0, 1116, 18, 1, 0, 0, 0, 1117, 1118, 5, 125, 0, 0, 1118, 20, 1, 0, 0, 0, 1119, 1120, 5, 65, 0, 0, 1120, 1121, 5, 67, 0, 0, 1121, 1122, 5, 67, 0, 0, 1122, 1123, 5, 79, 0, 0, 1123, 1124, 5, 85, 0, 0, 1124, 1125, 5, 78, 0, 0, 1125, 1126, 5, 84, 0, 0, 1126, 1127, 5, 95, 0, 0, 1127, 1128, 5, 76, 0, 0, 1128, 1129, 5, 79, 0, 0, 1129, 1130, 5, 67, 0, 0, 1130, 1131, 5, 75, 0, 0, 1131, 22, 1, 0, 0, 0, 1132, 1133, 5, 65, 0, 0, 1133, 1134, 5, 67, 0, 0, 1134, 1135, 5, 67, 0, 0, 1135, 1136, 5, 79, 0, 0, 1136, 1137, 5, 85, 0, 0, 1137, 1138, 5, 78, 0, 0, 1138, 1139, 5, 84, 0, 0, 1139, 1140, 5, 95, 0, 0, 1140, 1141, 5, 85, 0, 0, 1141, 1142, 5, 78, 0, 0, 1142, 1143, 5, 76, 0, 0, 1143, 1144, 5, 79, 0, 0, 1144, 1145, 5, 67, 0, 0, 1145, 1146, 5, 75, 0, 0, 1146, 24, 1, 0, 0, 0, 1147, 1148, 5, 65, 0, 0, 1148, 1149, 5, 67, 0, 0, 1149, 1150, 5, 84, 0, 0, 1150, 1151, 5, 73, 0, 0, 1151, 1152, 5, 79, 0, 0, 1152, 1153, 5, 78, 0, 0, 1153, 1154, 5, 83, 0, 0, 1154, 26, 1, 0, 0, 0, 1155, 1156, 5, 65, 0, 0, 1156, 1157, 5, 68, 0, 0, 1157, 1158, 5, 68, 0, 0, 1158, 28, 1, 0, 0, 0, 1159, 1160, 5, 65, 0, 0, 1160, 1161, 5, 68, 0, 0, 1161, 1162, 5, 77, 0, 0, 1162, 1163, 5, 73, 0, 0, 1163, 1164, 5, 78, 0, 0, 1164, 30, 1, 0, 0, 0, 1165, 1166, 5, 65, 0, 0, 1166, 1167, 5, 70, 0, 0, 1167, 1168, 5, 84, 0, 0, 1168, 1169, 5, 69, 0, 0, 1169, 1170, 5, 82, 0, 0, 1170, 32, 1, 0, 0, 0, 1171, 1172, 5, 65, 0, 0, 1172, 1173, 5, 71, 0, 0, 1173, 1174, 5, 71, 0, 0, 1174, 1175, 5, 95, 0, 0, 1175, 1176, 5, 83, 0, 0, 1176, 1177, 5, 84, 0, 0, 1177, 1178, 5, 65, 0, 0, 1178, 1179, 5, 84, 0, 0, 1179, 1180, 5, 69, 0, 0, 1180, 34, 1, 0, 0, 0, 1181, 1182, 5, 65, 0, 0, 1182, 1183, 5, 71, 0, 0, 1183, 1184, 5, 71, 0, 0, 1184, 1185, 5, 82, 0, 0, 1185, 1186, 5, 69, 0, 0, 1186, 1187, 5, 71, 0, 0, 1187, 1188, 5, 65, 0, 0, 1188, 1189, 5, 84, 0, 0, 1189, 1190, 5, 69, 0, 0, 1190, 36, 1, 0, 0, 0, 1191, 1192, 5, 65, 0, 0, 1192, 1193, 5, 76, 0, 0, 1193, 1194, 5, 73, 0, 0, 1194, 1195, 5, 65, 0, 0, 1195, 1196, 5, 83, 0, 0, 1196, 38, 1, 0, 0, 0, 1197, 1198, 5, 65, 0, 0, 1198, 1199, 5, 76, 0, 0, 1199, 1200, 5, 76, 0, 0, 1200, 40, 1, 0, 0, 0, 1201, 1202, 5, 65, 0, 0, 1202, 1203, 5, 76, 0, 0, 1203, 1204, 5, 84, 0, 0, 1204, 1205, 5, 69, 0, 0, 1205, 1206, 5, 82, 0, 0, 1206, 42, 1, 0, 0, 0, 1207, 1208, 5, 65, 0, 0, 1208, 1209, 5, 78, 0, 0, 1209, 1210, 5, 65, 0, 0, 1210, 1211, 5, 76, 0, 0, 1211, 1212, 5, 89, 0, 0, 1212, 1213, 5, 90, 0, 0, 1213, 1214, 5, 69, 0, 0, 1214, 44, 1, 0, 0, 0, 1215, 1216, 5, 65, 0, 0, 1216, 1217, 5, 78, 0, 0, 1217, 1218, 5, 65, 0, 0, 1218, 1219, 5, 76, 0, 0, 1219, 1220, 5, 89, 0, 0, 1220, 1221, 5, 90, 0, 0, 1221, 1222, 5, 69, 0, 0, 1222, 1223, 5, 68, 0, 0, 1223, 46, 1, 0, 0, 0, 1224, 1225, 5, 65, 0, 0, 1225, 1226, 5, 78, 0, 0, 1226, 1227, 5, 68, 0, 0, 1227, 48, 1, 0, 0, 0, 1228, 1229, 5, 65, 0, 0, 1229, 1230, 5, 78, 0, 0, 1230, 1231, 5, 84, 0, 0, 1231, 1232, 5, 73, 0, 0, 1232, 50, 1, 0, 0, 0, 1233, 1234, 5, 65, 0, 0, 1234, 1235, 5, 80, 0, 0, 1235, 1236, 5, 80, 0, 0, 1236, 1237, 5, 69, 0, 0, 1237, 1238, 5, 78, 0, 0, 1238, 1239, 5, 68, 0, 0, 1239, 52, 1, 0, 0, 0, 1240, 1241, 5, 65, 0, 0, 1241, 1242, 5, 82, 0, 0, 1242, 1243, 5, 82, 0, 0, 1243, 1244, 5, 65, 0, 0, 1244, 1245, 5, 89, 0, 0, 1245, 54, 1, 0, 0, 0, 1246, 1247, 5, 65, 0, 0, 1247, 1248, 5, 83, 0, 0, 1248, 56, 1, 0, 0, 0, 1249, 1250, 5, 65, 0, 0, 1250, 1251, 5, 83, 0, 0, 1251, 1252, 5, 67, 0, 0, 1252, 58, 1, 0, 0, 0, 1253, 1254, 5, 65, 0, 0, 1254, 1255, 5, 84, 0, 0, 1255, 60, 1, 0, 0, 0, 1256, 1257, 5, 65, 0, 0, 1257, 1258, 5, 85, 0, 0, 1258, 1259, 5, 84, 0, 0, 1259, 1260, 5, 72, 0, 0, 1260, 1261, 5, 79, 0, 0, 1261, 1262, 5, 82, 0, 0, 1262, 1263, 5, 83, 0, 0, 1263, 62, 1, 0, 0, 0, 1264, 1265, 5, 65, 0, 0, 1265, 1266, 5, 85, 0, 0, 1266, 1267, 5, 84, 0, 0, 1267, 1268, 5, 79, 0, 0, 1268, 64, 1, 0, 0, 0, 1269, 1270, 5, 65, 0, 0, 1270, 1271, 5, 85, 0, 0, 1271, 1272, 5, 84, 0, 0, 1272, 1273, 5, 79, 0, 0, 1273, 1274, 5, 95, 0, 0, 1274, 1275, 5, 73, 0, 0, 1275, 1276, 5, 78, 0, 0, 1276, 1277, 5, 67, 0, 0, 1277, 1278, 5, 82, 0, 0, 1278, 1279, 5, 69, 0, 0, 1279, 1280, 5, 77, 0, 0, 1280, 1281, 5, 69, 0, 0, 1281, 1282, 5, 78, 0, 0, 1282, 1283, 5, 84, 0, 0, 1283, 66, 1, 0, 0, 0, 1284, 1285, 5, 65, 0, 0, 1285, 1286, 5, 76, 0, 0, 1286, 1287, 5, 87, 0, 0, 1287, 1288, 5, 65, 0, 0, 1288, 1289, 5, 89, 0, 0, 1289, 1290, 5, 83, 0, 0, 1290, 68, 1, 0, 0, 0, 1291, 1292, 5, 66, 0, 0, 1292, 1293, 5, 65, 0, 0, 1293, 1294, 5, 67, 0, 0, 1294, 1295, 5, 75, 0, 0, 1295, 1296, 5, 69, 0, 0, 1296, 1297, 5, 78, 0, 0, 1297, 1298, 5, 68, 0, 0, 1298, 70, 1, 0, 0, 0, 1299, 1300, 5, 66, 0, 0, 1300, 1301, 5, 65, 0, 0, 1301, 1302, 5, 67, 0, 0, 1302, 1303, 5, 75, 0, 0, 1303, 1304, 5, 69, 0, 0, 1304, 1305, 5, 78, 0, 0, 1305, 1306, 5, 68, 0, 0, 1306, 1307, 5, 83, 0, 0, 1307, 72, 1, 0, 0, 0, 1308, 1309, 5, 66, 0, 0, 1309, 1310, 5, 65, 0, 0, 1310, 1311, 5, 67, 0, 0, 1311, 1312, 5, 75, 0, 0, 1312, 1313, 5, 85, 0, 0, 1313, 1314, 5, 80, 0, 0, 1314, 74, 1, 0, 0, 0, 1315, 1316, 5, 66, 0, 0, 1316, 1317, 5, 69, 0, 0, 1317, 1318, 5, 71, 0, 0, 1318, 1319, 5, 73, 0, 0, 1319, 1320, 5, 78, 0, 0, 1320, 76, 1, 0, 0, 0, 1321, 1322, 5, 66, 0, 0, 1322, 1323, 5, 69, 0, 0, 1323, 1324, 5, 76, 0, 0, 1324, 1325, 5, 79, 0, 0, 1325, 1326, 5, 78, 0, 0, 1326, 1327, 5, 71, 0, 0, 1327, 78, 1, 0, 0, 0, 1328, 1329, 5, 66, 0, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1331, 5, 84, 0, 0, 1331, 1332, 5, 87, 0, 0, 1332, 1333, 5, 69, 0, 0, 1333, 1334, 5, 69, 0, 0, 1334, 1335, 5, 78, 0, 0, 1335, 80, 1, 0, 0, 0, 1336, 1337, 5, 66, 0, 0, 1337, 1338, 5, 73, 0, 0, 1338, 1339, 5, 71, 0, 0, 1339, 1340, 5, 73, 0, 0, 1340, 1341, 5, 78, 0, 0, 1341, 1342, 5, 84, 0, 0, 1342, 82, 1, 0, 0, 0, 1343, 1344, 5, 66, 0, 0, 1344, 1345, 5, 73, 0, 0, 1345, 1346, 5, 78, 0, 0, 1346, 84, 1, 0, 0, 0, 1347, 1348, 5, 66, 0, 0, 1348, 1349, 5, 73, 0, 0, 1349, 1350, 5, 78, 0, 0, 1350, 1351, 5, 65, 0, 0, 1351, 1352, 5, 82, 0, 0, 1352, 1353, 5, 89, 0, 0, 1353, 86, 1, 0, 0, 0, 1354, 1355, 5, 66, 0, 0, 1355, 1356, 5, 73, 0, 0, 1356, 1357, 5, 78, 0, 0, 1357, 1358, 5, 76, 0, 0, 1358, 1359, 5, 79, 0, 0, 1359, 1360, 5, 71, 0, 0, 1360, 88, 1, 0, 0, 0, 1361, 1362, 5, 66, 0, 0, 1362, 1363, 5, 73, 0, 0, 1363, 1364, 5, 84, 0, 0, 1364, 1365, 5, 65, 0, 0, 1365, 1366, 5, 78, 0, 0, 1366, 1367, 5, 68, 0, 0, 1367, 90, 1, 0, 0, 0, 1368, 1369, 5, 66, 0, 0, 1369, 1370, 5, 73, 0, 0, 1370, 1371, 5, 84, 0, 0, 1371, 1372, 5, 77, 0, 0, 1372, 1373, 5, 65, 0, 0, 1373, 1374, 5, 80, 0, 0, 1374, 92, 1, 0, 0, 0, 1375, 1376, 5, 66, 0, 0, 1376, 1377, 5, 73, 0, 0, 1377, 1378, 5, 84, 0, 0, 1378, 1379, 5, 77, 0, 0, 1379, 1380, 5, 65, 0, 0, 1380, 1381, 5, 80, 0, 0, 1381, 1382, 5, 95, 0, 0, 1382, 1383, 5, 69, 0, 0, 1383, 1384, 5, 77, 0, 0, 1384, 1385, 5, 80, 0, 0, 1385, 1386, 5, 84, 0, 0, 1386, 1387, 5, 89, 0, 0, 1387, 94, 1, 0, 0, 0, 1388, 1389, 5, 66, 0, 0, 1389, 1390, 5, 73, 0, 0, 1390, 1391, 5, 84, 0, 0, 1391, 1392, 5, 77, 0, 0, 1392, 1393, 5, 65, 0, 0, 1393, 1394, 5, 80, 0, 0, 1394, 1395, 5, 95, 0, 0, 1395, 1396, 5, 85, 0, 0, 1396, 1397, 5, 78, 0, 0, 1397, 1398, 5, 73, 0, 0, 1398, 1399, 5, 79, 0, 0, 1399, 1400, 5, 78, 0, 0, 1400, 96, 1, 0, 0, 0, 1401, 1402, 5, 66, 0, 0, 1402, 1403, 5, 73, 0, 0, 1403, 1404, 5, 84, 0, 0, 1404, 1405, 5, 79, 0, 0, 1405, 1406, 5, 82, 0, 0, 1406, 98, 1, 0, 0, 0, 1407, 1408, 5, 66, 0, 0, 1408, 1409, 5, 73, 0, 0, 1409, 1410, 5, 84, 0, 0, 1410, 1411, 5, 88, 0, 0, 1411, 1412, 5, 79, 0, 0, 1412, 1413, 5, 82, 0, 0, 1413, 100, 1, 0, 0, 0, 1414, 1415, 5, 66, 0, 0, 1415, 1416, 5, 76, 0, 0, 1416, 1417, 5, 79, 0, 0, 1417, 1418, 5, 66, 0, 0, 1418, 102, 1, 0, 0, 0, 1419, 1420, 5, 66, 0, 0, 1420, 1421, 5, 79, 0, 0, 1421, 1422, 5, 79, 0, 0, 1422, 1423, 5, 76, 0, 0, 1423, 1424, 5, 69, 0, 0, 1424, 1425, 5, 65, 0, 0, 1425, 1426, 5, 78, 0, 0, 1426, 104, 1, 0, 0, 0, 1427, 1428, 5, 66, 0, 0, 1428, 1429, 5, 82, 0, 0, 1429, 1430, 5, 73, 0, 0, 1430, 1431, 5, 69, 0, 0, 1431, 1432, 5, 70, 0, 0, 1432, 106, 1, 0, 0, 0, 1433, 1434, 5, 66, 0, 0, 1434, 1435, 5, 82, 0, 0, 1435, 1436, 5, 79, 0, 0, 1436, 1437, 5, 75, 0, 0, 1437, 1438, 5, 69, 0, 0, 1438, 1439, 5, 82, 0, 0, 1439, 108, 1, 0, 0, 0, 1440, 1441, 5, 66, 0, 0, 1441, 1442, 5, 85, 0, 0, 1442, 1443, 5, 67, 0, 0, 1443, 1444, 5, 75, 0, 0, 1444, 1445, 5, 69, 0, 0, 1445, 1446, 5, 84, 0, 0, 1446, 1447, 5, 83, 0, 0, 1447, 110, 1, 0, 0, 0, 1448, 1449, 5, 66, 0, 0, 1449, 1450, 5, 85, 0, 0, 1450, 1451, 5, 73, 0, 0, 1451, 1452, 5, 76, 0, 0, 1452, 1453, 5, 68, 0, 0, 1453, 112, 1, 0, 0, 0, 1454, 1455, 5, 66, 0, 0, 1455, 1456, 5, 85, 0, 0, 1456, 1457, 5, 73, 0, 0, 1457, 1458, 5, 76, 0, 0, 1458, 1459, 5, 84, 0, 0, 1459, 1460, 5, 73, 0, 0, 1460, 1461, 5, 78, 0, 0, 1461, 114, 1, 0, 0, 0, 1462, 1463, 5, 66, 0, 0, 1463, 1464, 5, 85, 0, 0, 1464, 1465, 5, 76, 0, 0, 1465, 1466, 5, 75, 0, 0, 1466, 116, 1, 0, 0, 0, 1467, 1468, 5, 66, 0, 0, 1468, 1469, 5, 89, 0, 0, 1469, 118, 1, 0, 0, 0, 1470, 1471, 5, 67, 0, 0, 1471, 1472, 5, 65, 0, 0, 1472, 1473, 5, 67, 0, 0, 1473, 1474, 5, 72, 0, 0, 1474, 1475, 5, 69, 0, 0, 1475, 120, 1, 0, 0, 0, 1476, 1477, 5, 67, 0, 0, 1477, 1478, 5, 65, 0, 0, 1478, 1479, 5, 67, 0, 0, 1479, 1480, 5, 72, 0, 0, 1480, 1481, 5, 69, 0, 0, 1481, 1482, 5, 68, 0, 0, 1482, 122, 1, 0, 0, 0, 1483, 1484, 5, 67, 0, 0, 1484, 1485, 5, 65, 0, 0, 1485, 1486, 5, 76, 0, 0, 1486, 1487, 5, 76, 0, 0, 1487, 124, 1, 0, 0, 0, 1488, 1489, 5, 67, 0, 0, 1489, 1490, 5, 65, 0, 0, 1490, 1491, 5, 78, 0, 0, 1491, 1492, 5, 67, 0, 0, 1492, 1493, 5, 69, 0, 0, 1493, 1494, 5, 76, 0, 0, 1494, 126, 1, 0, 0, 0, 1495, 1496, 5, 67, 0, 0, 1496, 1497, 5, 65, 0, 0, 1497, 1498, 5, 83, 0, 0, 1498, 1499, 5, 69, 0, 0, 1499, 128, 1, 0, 0, 0, 1500, 1501, 5, 67, 0, 0, 1501, 1502, 5, 65, 0, 0, 1502, 1503, 5, 83, 0, 0, 1503, 1504, 5, 84, 0, 0, 1504, 130, 1, 0, 0, 0, 1505, 1506, 5, 67, 0, 0, 1506, 1507, 5, 65, 0, 0, 1507, 1508, 5, 84, 0, 0, 1508, 1509, 5, 65, 0, 0, 1509, 1510, 5, 76, 0, 0, 1510, 1511, 5, 79, 0, 0, 1511, 1512, 5, 71, 0, 0, 1512, 132, 1, 0, 0, 0, 1513, 1514, 5, 67, 0, 0, 1514, 1515, 5, 65, 0, 0, 1515, 1516, 5, 84, 0, 0, 1516, 1517, 5, 65, 0, 0, 1517, 1518, 5, 76, 0, 0, 1518, 1519, 5, 79, 0, 0, 1519, 1520, 5, 71, 0, 0, 1520, 1521, 5, 83, 0, 0, 1521, 134, 1, 0, 0, 0, 1522, 1523, 5, 67, 0, 0, 1523, 1524, 5, 72, 0, 0, 1524, 1525, 5, 65, 0, 0, 1525, 1526, 5, 73, 0, 0, 1526, 1527, 5, 78, 0, 0, 1527, 136, 1, 0, 0, 0, 1528, 1529, 5, 67, 0, 0, 1529, 1530, 5, 72, 0, 0, 1530, 1531, 5, 65, 0, 0, 1531, 1542, 5, 82, 0, 0, 1532, 1533, 5, 67, 0, 0, 1533, 1534, 5, 72, 0, 0, 1534, 1535, 5, 65, 0, 0, 1535, 1536, 5, 82, 0, 0, 1536, 1537, 5, 65, 0, 0, 1537, 1538, 5, 67, 0, 0, 1538, 1539, 5, 84, 0, 0, 1539, 1540, 5, 69, 0, 0, 1540, 1542, 5, 82, 0, 0, 1541, 1528, 1, 0, 0, 0, 1541, 1532, 1, 0, 0, 0, 1542, 138, 1, 0, 0, 0, 1543, 1544, 5, 67, 0, 0, 1544, 1545, 5, 72, 0, 0, 1545, 1546, 5, 65, 0, 0, 1546, 1547, 5, 82, 0, 0, 1547, 1548, 5, 83, 0, 0, 1548, 1549, 5, 69, 0, 0, 1549, 1550, 5, 84, 0, 0, 1550, 140, 1, 0, 0, 0, 1551, 1552, 5, 67, 0, 0, 1552, 1553, 5, 72, 0, 0, 1553, 1554, 5, 69, 0, 0, 1554, 1555, 5, 67, 0, 0, 1555, 1556, 5, 75, 0, 0, 1556, 142, 1, 0, 0, 0, 1557, 1558, 5, 67, 0, 0, 1558, 1559, 5, 76, 0, 0, 1559, 1560, 5, 69, 0, 0, 1560, 1561, 5, 65, 0, 0, 1561, 1562, 5, 78, 0, 0, 1562, 144, 1, 0, 0, 0, 1563, 1564, 5, 67, 0, 0, 1564, 1565, 5, 76, 0, 0, 1565, 1566, 5, 85, 0, 0, 1566, 1567, 5, 83, 0, 0, 1567, 1568, 5, 84, 0, 0, 1568, 1569, 5, 69, 0, 0, 1569, 1570, 5, 82, 0, 0, 1570, 146, 1, 0, 0, 0, 1571, 1572, 5, 67, 0, 0, 1572, 1573, 5, 76, 0, 0, 1573, 1574, 5, 85, 0, 0, 1574, 1575, 5, 83, 0, 0, 1575, 1576, 5, 84, 0, 0, 1576, 1577, 5, 69, 0, 0, 1577, 1578, 5, 82, 0, 0, 1578, 1579, 5, 83, 0, 0, 1579, 148, 1, 0, 0, 0, 1580, 1581, 5, 67, 0, 0, 1581, 1582, 5, 79, 0, 0, 1582, 1583, 5, 76, 0, 0, 1583, 1584, 5, 76, 0, 0, 1584, 1585, 5, 65, 0, 0, 1585, 1586, 5, 84, 0, 0, 1586, 1587, 5, 69, 0, 0, 1587, 150, 1, 0, 0, 0, 1588, 1589, 5, 67, 0, 0, 1589, 1590, 5, 79, 0, 0, 1590, 1591, 5, 76, 0, 0, 1591, 1592, 5, 76, 0, 0, 1592, 1593, 5, 65, 0, 0, 1593, 1594, 5, 84, 0, 0, 1594, 1595, 5, 73, 0, 0, 1595, 1596, 5, 79, 0, 0, 1596, 1597, 5, 78, 0, 0, 1597, 152, 1, 0, 0, 0, 1598, 1599, 5, 67, 0, 0, 1599, 1600, 5, 79, 0, 0, 1600, 1601, 5, 76, 0, 0, 1601, 1602, 5, 76, 0, 0, 1602, 1603, 5, 69, 0, 0, 1603, 1604, 5, 67, 0, 0, 1604, 1605, 5, 84, 0, 0, 1605, 154, 1, 0, 0, 0, 1606, 1607, 5, 67, 0, 0, 1607, 1608, 5, 79, 0, 0, 1608, 1609, 5, 76, 0, 0, 1609, 1610, 5, 79, 0, 0, 1610, 1611, 5, 67, 0, 0, 1611, 1612, 5, 65, 0, 0, 1612, 1613, 5, 84, 0, 0, 1613, 1614, 5, 69, 0, 0, 1614, 156, 1, 0, 0, 0, 1615, 1616, 5, 67, 0, 0, 1616, 1617, 5, 79, 0, 0, 1617, 1618, 5, 76, 0, 0, 1618, 1619, 5, 85, 0, 0, 1619, 1620, 5, 77, 0, 0, 1620, 1621, 5, 78, 0, 0, 1621, 158, 1, 0, 0, 0, 1622, 1623, 5, 67, 0, 0, 1623, 1624, 5, 79, 0, 0, 1624, 1625, 5, 76, 0, 0, 1625, 1626, 5, 85, 0, 0, 1626, 1627, 5, 77, 0, 0, 1627, 1628, 5, 78, 0, 0, 1628, 1629, 5, 83, 0, 0, 1629, 160, 1, 0, 0, 0, 1630, 1631, 5, 67, 0, 0, 1631, 1632, 5, 79, 0, 0, 1632, 1633, 5, 77, 0, 0, 1633, 1634, 5, 77, 0, 0, 1634, 1635, 5, 69, 0, 0, 1635, 1636, 5, 78, 0, 0, 1636, 1637, 5, 84, 0, 0, 1637, 162, 1, 0, 0, 0, 1638, 1639, 5, 67, 0, 0, 1639, 1640, 5, 79, 0, 0, 1640, 1641, 5, 77, 0, 0, 1641, 1642, 5, 77, 0, 0, 1642, 1643, 5, 73, 0, 0, 1643, 1644, 5, 84, 0, 0, 1644, 164, 1, 0, 0, 0, 1645, 1646, 5, 67, 0, 0, 1646, 1647, 5, 79, 0, 0, 1647, 1648, 5, 77, 0, 0, 1648, 1649, 5, 77, 0, 0, 1649, 1650, 5, 73, 0, 0, 1650, 1651, 5, 84, 0, 0, 1651, 1652, 5, 84, 0, 0, 1652, 1653, 5, 69, 0, 0, 1653, 1654, 5, 68, 0, 0, 1654, 166, 1, 0, 0, 0, 1655, 1656, 5, 67, 0, 0, 1656, 1657, 5, 79, 0, 0, 1657, 1658, 5, 77, 0, 0, 1658, 1659, 5, 80, 0, 0, 1659, 1660, 5, 65, 0, 0, 1660, 1661, 5, 67, 0, 0, 1661, 1662, 5, 84, 0, 0, 1662, 168, 1, 0, 0, 0, 1663, 1664, 5, 67, 0, 0, 1664, 1665, 5, 79, 0, 0, 1665, 1666, 5, 77, 0, 0, 1666, 1667, 5, 80, 0, 0, 1667, 1668, 5, 76, 0, 0, 1668, 1669, 5, 69, 0, 0, 1669, 1670, 5, 84, 0, 0, 1670, 1671, 5, 69, 0, 0, 1671, 170, 1, 0, 0, 0, 1672, 1673, 5, 67, 0, 0, 1673, 1674, 5, 79, 0, 0, 1674, 1675, 5, 77, 0, 0, 1675, 1676, 5, 80, 0, 0, 1676, 1677, 5, 82, 0, 0, 1677, 1678, 5, 69, 0, 0, 1678, 1679, 5, 83, 0, 0, 1679, 1680, 5, 83, 0, 0, 1680, 1681, 5, 95, 0, 0, 1681, 1682, 5, 84, 0, 0, 1682, 1683, 5, 89, 0, 0, 1683, 1684, 5, 80, 0, 0, 1684, 1685, 5, 69, 0, 0, 1685, 172, 1, 0, 0, 0, 1686, 1687, 5, 67, 0, 0, 1687, 1688, 5, 79, 0, 0, 1688, 1689, 5, 77, 0, 0, 1689, 1690, 5, 80, 0, 0, 1690, 1691, 5, 85, 0, 0, 1691, 1692, 5, 84, 0, 0, 1692, 1693, 5, 69, 0, 0, 1693, 174, 1, 0, 0, 0, 1694, 1695, 5, 67, 0, 0, 1695, 1696, 5, 79, 0, 0, 1696, 1697, 5, 78, 0, 0, 1697, 1698, 5, 68, 0, 0, 1698, 1699, 5, 73, 0, 0, 1699, 1700, 5, 84, 0, 0, 1700, 1701, 5, 73, 0, 0, 1701, 1702, 5, 79, 0, 0, 1702, 1703, 5, 78, 0, 0, 1703, 1704, 5, 83, 0, 0, 1704, 176, 1, 0, 0, 0, 1705, 1706, 5, 67, 0, 0, 1706, 1707, 5, 79, 0, 0, 1707, 1708, 5, 78, 0, 0, 1708, 1709, 5, 70, 0, 0, 1709, 1710, 5, 73, 0, 0, 1710, 1711, 5, 71, 0, 0, 1711, 178, 1, 0, 0, 0, 1712, 1713, 5, 67, 0, 0, 1713, 1714, 5, 79, 0, 0, 1714, 1715, 5, 78, 0, 0, 1715, 1716, 5, 78, 0, 0, 1716, 1717, 5, 69, 0, 0, 1717, 1718, 5, 67, 0, 0, 1718, 1719, 5, 84, 0, 0, 1719, 1720, 5, 73, 0, 0, 1720, 1721, 5, 79, 0, 0, 1721, 1722, 5, 78, 0, 0, 1722, 180, 1, 0, 0, 0, 1723, 1724, 5, 67, 0, 0, 1724, 1725, 5, 79, 0, 0, 1725, 1726, 5, 78, 0, 0, 1726, 1727, 5, 78, 0, 0, 1727, 1728, 5, 69, 0, 0, 1728, 1729, 5, 67, 0, 0, 1729, 1730, 5, 84, 0, 0, 1730, 1731, 5, 73, 0, 0, 1731, 1732, 5, 79, 0, 0, 1732, 1733, 5, 78, 0, 0, 1733, 1734, 5, 95, 0, 0, 1734, 1735, 5, 73, 0, 0, 1735, 1736, 5, 68, 0, 0, 1736, 182, 1, 0, 0, 0, 1737, 1738, 5, 67, 0, 0, 1738, 1739, 5, 79, 0, 0, 1739, 1740, 5, 78, 0, 0, 1740, 1741, 5, 83, 0, 0, 1741, 1742, 5, 73, 0, 0, 1742, 1743, 5, 83, 0, 0, 1743, 1744, 5, 84, 0, 0, 1744, 1745, 5, 69, 0, 0, 1745, 1746, 5, 78, 0, 0, 1746, 1747, 5, 84, 0, 0, 1747, 184, 1, 0, 0, 0, 1748, 1749, 5, 67, 0, 0, 1749, 1750, 5, 79, 0, 0, 1750, 1751, 5, 78, 0, 0, 1751, 1752, 5, 83, 0, 0, 1752, 1753, 5, 84, 0, 0, 1753, 1754, 5, 82, 0, 0, 1754, 1755, 5, 65, 0, 0, 1755, 1756, 5, 73, 0, 0, 1756, 1757, 5, 78, 0, 0, 1757, 1758, 5, 84, 0, 0, 1758, 186, 1, 0, 0, 0, 1759, 1760, 5, 67, 0, 0, 1760, 1761, 5, 79, 0, 0, 1761, 1762, 5, 78, 0, 0, 1762, 1763, 5, 83, 0, 0, 1763, 1764, 5, 84, 0, 0, 1764, 1765, 5, 82, 0, 0, 1765, 1766, 5, 65, 0, 0, 1766, 1767, 5, 73, 0, 0, 1767, 1768, 5, 78, 0, 0, 1768, 1769, 5, 84, 0, 0, 1769, 1770, 5, 83, 0, 0, 1770, 188, 1, 0, 0, 0, 1771, 1772, 5, 67, 0, 0, 1772, 1773, 5, 79, 0, 0, 1773, 1774, 5, 78, 0, 0, 1774, 1775, 5, 86, 0, 0, 1775, 1776, 5, 69, 0, 0, 1776, 1777, 5, 82, 0, 0, 1777, 1778, 5, 84, 0, 0, 1778, 190, 1, 0, 0, 0, 1779, 1780, 5, 67, 0, 0, 1780, 1781, 5, 79, 0, 0, 1781, 1782, 5, 78, 0, 0, 1782, 1783, 5, 86, 0, 0, 1783, 1784, 5, 69, 0, 0, 1784, 1785, 5, 82, 0, 0, 1785, 1786, 5, 84, 0, 0, 1786, 1787, 5, 95, 0, 0, 1787, 1788, 5, 76, 0, 0, 1788, 1789, 5, 73, 0, 0, 1789, 1790, 5, 71, 0, 0, 1790, 1791, 5, 72, 0, 0, 1791, 1792, 5, 84, 0, 0, 1792, 1793, 5, 95, 0, 0, 1793, 1794, 5, 83, 0, 0, 1794, 1795, 5, 67, 0, 0, 1795, 1796, 5, 72, 0, 0, 1796, 1797, 5, 69, 0, 0, 1797, 1798, 5, 77, 0, 0, 1798, 1799, 5, 65, 0, 0, 1799, 1800, 5, 95, 0, 0, 1800, 1801, 5, 67, 0, 0, 1801, 1802, 5, 72, 0, 0, 1802, 1803, 5, 65, 0, 0, 1803, 1804, 5, 78, 0, 0, 1804, 1805, 5, 71, 0, 0, 1805, 1806, 5, 69, 0, 0, 1806, 1807, 5, 95, 0, 0, 1807, 1808, 5, 80, 0, 0, 1808, 1809, 5, 82, 0, 0, 1809, 1810, 5, 79, 0, 0, 1810, 1811, 5, 67, 0, 0, 1811, 1812, 5, 69, 0, 0, 1812, 1813, 5, 83, 0, 0, 1813, 1814, 5, 83, 0, 0, 1814, 192, 1, 0, 0, 0, 1815, 1816, 5, 67, 0, 0, 1816, 1817, 5, 79, 0, 0, 1817, 1818, 5, 80, 0, 0, 1818, 1819, 5, 89, 0, 0, 1819, 194, 1, 0, 0, 0, 1820, 1821, 5, 67, 0, 0, 1821, 1822, 5, 79, 0, 0, 1822, 1823, 5, 85, 0, 0, 1823, 1824, 5, 78, 0, 0, 1824, 1825, 5, 84, 0, 0, 1825, 196, 1, 0, 0, 0, 1826, 1827, 5, 67, 0, 0, 1827, 1828, 5, 82, 0, 0, 1828, 1829, 5, 69, 0, 0, 1829, 1830, 5, 65, 0, 0, 1830, 1831, 5, 84, 0, 0, 1831, 1832, 5, 69, 0, 0, 1832, 198, 1, 0, 0, 0, 1833, 1834, 5, 67, 0, 0, 1834, 1835, 5, 82, 0, 0, 1835, 1836, 5, 69, 0, 0, 1836, 1837, 5, 65, 0, 0, 1837, 1838, 5, 84, 0, 0, 1838, 1839, 5, 73, 0, 0, 1839, 1840, 5, 79, 0, 0, 1840, 1841, 5, 78, 0, 0, 1841, 200, 1, 0, 0, 0, 1842, 1843, 5, 67, 0, 0, 1843, 1844, 5, 82, 0, 0, 1844, 1845, 5, 79, 0, 0, 1845, 1846, 5, 78, 0, 0, 1846, 202, 1, 0, 0, 0, 1847, 1848, 5, 67, 0, 0, 1848, 1849, 5, 82, 0, 0, 1849, 1850, 5, 79, 0, 0, 1850, 1851, 5, 83, 0, 0, 1851, 1852, 5, 83, 0, 0, 1852, 204, 1, 0, 0, 0, 1853, 1854, 5, 67, 0, 0, 1854, 1855, 5, 85, 0, 0, 1855, 1856, 5, 66, 0, 0, 1856, 1857, 5, 69, 0, 0, 1857, 206, 1, 0, 0, 0, 1858, 1859, 5, 67, 0, 0, 1859, 1860, 5, 85, 0, 0, 1860, 1861, 5, 82, 0, 0, 1861, 1862, 5, 82, 0, 0, 1862, 1863, 5, 69, 0, 0, 1863, 1864, 5, 78, 0, 0, 1864, 1865, 5, 84, 0, 0, 1865, 208, 1, 0, 0, 0, 1866, 1867, 5, 67, 0, 0, 1867, 1868, 5, 85, 0, 0, 1868, 1869, 5, 82, 0, 0, 1869, 1870, 5, 82, 0, 0, 1870, 1871, 5, 69, 0, 0, 1871, 1872, 5, 78, 0, 0, 1872, 1873, 5, 84, 0, 0, 1873, 1874, 5, 95, 0, 0, 1874, 1875, 5, 67, 0, 0, 1875, 1876, 5, 65, 0, 0, 1876, 1877, 5, 84, 0, 0, 1877, 1878, 5, 65, 0, 0, 1878, 1879, 5, 76, 0, 0, 1879, 1880, 5, 79, 0, 0, 1880, 1881, 5, 71, 0, 0, 1881, 210, 1, 0, 0, 0, 1882, 1883, 5, 67, 0, 0, 1883, 1884, 5, 85, 0, 0, 1884, 1885, 5, 82, 0, 0, 1885, 1886, 5, 82, 0, 0, 1886, 1887, 5, 69, 0, 0, 1887, 1888, 5, 78, 0, 0, 1888, 1889, 5, 84, 0, 0, 1889, 1890, 5, 95, 0, 0, 1890, 1891, 5, 68, 0, 0, 1891, 1892, 5, 65, 0, 0, 1892, 1893, 5, 84, 0, 0, 1893, 1894, 5, 69, 0, 0, 1894, 212, 1, 0, 0, 0, 1895, 1896, 5, 67, 0, 0, 1896, 1897, 5, 85, 0, 0, 1897, 1898, 5, 82, 0, 0, 1898, 1899, 5, 82, 0, 0, 1899, 1900, 5, 69, 0, 0, 1900, 1901, 5, 78, 0, 0, 1901, 1902, 5, 84, 0, 0, 1902, 1903, 5, 95, 0, 0, 1903, 1904, 5, 84, 0, 0, 1904, 1905, 5, 73, 0, 0, 1905, 1906, 5, 77, 0, 0, 1906, 1907, 5, 69, 0, 0, 1907, 214, 1, 0, 0, 0, 1908, 1909, 5, 67, 0, 0, 1909, 1910, 5, 85, 0, 0, 1910, 1911, 5, 82, 0, 0, 1911, 1912, 5, 82, 0, 0, 1912, 1913, 5, 69, 0, 0, 1913, 1914, 5, 78, 0, 0, 1914, 1915, 5, 84, 0, 0, 1915, 1916, 5, 95, 0, 0, 1916, 1917, 5, 84, 0, 0, 1917, 1918, 5, 73, 0, 0, 1918, 1919, 5, 77, 0, 0, 1919, 1920, 5, 69, 0, 0, 1920, 1921, 5, 83, 0, 0, 1921, 1922, 5, 84, 0, 0, 1922, 1923, 5, 65, 0, 0, 1923, 1924, 5, 77, 0, 0, 1924, 1925, 5, 80, 0, 0, 1925, 216, 1, 0, 0, 0, 1926, 1927, 5, 67, 0, 0, 1927, 1928, 5, 85, 0, 0, 1928, 1929, 5, 82, 0, 0, 1929, 1930, 5, 82, 0, 0, 1930, 1931, 5, 69, 0, 0, 1931, 1932, 5, 78, 0, 0, 1932, 1933, 5, 84, 0, 0, 1933, 1934, 5, 95, 0, 0, 1934, 1935, 5, 85, 0, 0, 1935, 1936, 5, 83, 0, 0, 1936, 1937, 5, 69, 0, 0, 1937, 1938, 5, 82, 0, 0, 1938, 218, 1, 0, 0, 0, 1939, 1940, 5, 68, 0, 0, 1940, 1941, 5, 65, 0, 0, 1941, 1942, 5, 84, 0, 0, 1942, 1943, 5, 65, 0, 0, 1943, 220, 1, 0, 0, 0, 1944, 1945, 5, 68, 0, 0, 1945, 1946, 5, 65, 0, 0, 1946, 1947, 5, 84, 0, 0, 1947, 1948, 5, 65, 0, 0, 1948, 1949, 5, 66, 0, 0, 1949, 1950, 5, 65, 0, 0, 1950, 1951, 5, 83, 0, 0, 1951, 1952, 5, 69, 0, 0, 1952, 222, 1, 0, 0, 0, 1953, 1954, 5, 68, 0, 0, 1954, 1955, 5, 65, 0, 0, 1955, 1956, 5, 84, 0, 0, 1956, 1957, 5, 65, 0, 0, 1957, 1958, 5, 66, 0, 0, 1958, 1959, 5, 65, 0, 0, 1959, 1960, 5, 83, 0, 0, 1960, 1961, 5, 69, 0, 0, 1961, 1962, 5, 83, 0, 0, 1962, 224, 1, 0, 0, 0, 1963, 1964, 5, 68, 0, 0, 1964, 1965, 5, 65, 0, 0, 1965, 1966, 5, 84, 0, 0, 1966, 1967, 5, 69, 0, 0, 1967, 226, 1, 0, 0, 0, 1968, 1969, 5, 68, 0, 0, 1969, 1970, 5, 65, 0, 0, 1970, 1971, 5, 84, 0, 0, 1971, 1972, 5, 69, 0, 0, 1972, 1973, 5, 84, 0, 0, 1973, 1974, 5, 73, 0, 0, 1974, 1975, 5, 77, 0, 0, 1975, 1976, 5, 69, 0, 0, 1976, 228, 1, 0, 0, 0, 1977, 1978, 5, 68, 0, 0, 1978, 1979, 5, 65, 0, 0, 1979, 1980, 5, 84, 0, 0, 1980, 1981, 5, 69, 0, 0, 1981, 1982, 5, 84, 0, 0, 1982, 1983, 5, 73, 0, 0, 1983, 1984, 5, 77, 0, 0, 1984, 1985, 5, 69, 0, 0, 1985, 1986, 5, 86, 0, 0, 1986, 1987, 5, 50, 0, 0, 1987, 230, 1, 0, 0, 0, 1988, 1989, 5, 68, 0, 0, 1989, 1990, 5, 65, 0, 0, 1990, 1991, 5, 84, 0, 0, 1991, 1992, 5, 69, 0, 0, 1992, 1993, 5, 86, 0, 0, 1993, 1994, 5, 50, 0, 0, 1994, 232, 1, 0, 0, 0, 1995, 1996, 5, 68, 0, 0, 1996, 1997, 5, 65, 0, 0, 1997, 1998, 5, 84, 0, 0, 1998, 1999, 5, 69, 0, 0, 1999, 2000, 5, 84, 0, 0, 2000, 2001, 5, 73, 0, 0, 2001, 2002, 5, 77, 0, 0, 2002, 2003, 5, 69, 0, 0, 2003, 2004, 5, 86, 0, 0, 2004, 2005, 5, 49, 0, 0, 2005, 234, 1, 0, 0, 0, 2006, 2007, 5, 68, 0, 0, 2007, 2008, 5, 65, 0, 0, 2008, 2009, 5, 84, 0, 0, 2009, 2010, 5, 69, 0, 0, 2010, 2011, 5, 86, 0, 0, 2011, 2012, 5, 49, 0, 0, 2012, 236, 1, 0, 0, 0, 2013, 2014, 5, 68, 0, 0, 2014, 2015, 5, 65, 0, 0, 2015, 2016, 5, 89, 0, 0, 2016, 238, 1, 0, 0, 0, 2017, 2018, 5, 68, 0, 0, 2018, 2019, 5, 69, 0, 0, 2019, 2020, 5, 67, 0, 0, 2020, 2021, 5, 73, 0, 0, 2021, 2022, 5, 77, 0, 0, 2022, 2023, 5, 65, 0, 0, 2023, 2024, 5, 76, 0, 0, 2024, 240, 1, 0, 0, 0, 2025, 2026, 5, 68, 0, 0, 2026, 2027, 5, 69, 0, 0, 2027, 2028, 5, 67, 0, 0, 2028, 2029, 5, 73, 0, 0, 2029, 2030, 5, 77, 0, 0, 2030, 2031, 5, 65, 0, 0, 2031, 2032, 5, 76, 0, 0, 2032, 2033, 5, 86, 0, 0, 2033, 2034, 5, 50, 0, 0, 2034, 242, 1, 0, 0, 0, 2035, 2036, 5, 68, 0, 0, 2036, 2037, 5, 69, 0, 0, 2037, 2038, 5, 67, 0, 0, 2038, 2039, 5, 73, 0, 0, 2039, 2040, 5, 77, 0, 0, 2040, 2041, 5, 65, 0, 0, 2041, 2042, 5, 76, 0, 0, 2042, 2043, 5, 86, 0, 0, 2043, 2044, 5, 51, 0, 0, 2044, 244, 1, 0, 0, 0, 2045, 2046, 5, 68, 0, 0, 2046, 2047, 5, 69, 0, 0, 2047, 2048, 5, 67, 0, 0, 2048, 2049, 5, 79, 0, 0, 2049, 2050, 5, 77, 0, 0, 2050, 2051, 5, 77, 0, 0, 2051, 2052, 5, 73, 0, 0, 2052, 2053, 5, 83, 0, 0, 2053, 2054, 5, 83, 0, 0, 2054, 2055, 5, 73, 0, 0, 2055, 2056, 5, 79, 0, 0, 2056, 2057, 5, 78, 0, 0, 2057, 246, 1, 0, 0, 0, 2058, 2059, 5, 68, 0, 0, 2059, 2060, 5, 69, 0, 0, 2060, 2061, 5, 70, 0, 0, 2061, 2062, 5, 65, 0, 0, 2062, 2063, 5, 85, 0, 0, 2063, 2064, 5, 76, 0, 0, 2064, 2065, 5, 84, 0, 0, 2065, 248, 1, 0, 0, 0, 2066, 2067, 5, 68, 0, 0, 2067, 2068, 5, 69, 0, 0, 2068, 2069, 5, 70, 0, 0, 2069, 2070, 5, 69, 0, 0, 2070, 2071, 5, 82, 0, 0, 2071, 2072, 5, 82, 0, 0, 2072, 2073, 5, 69, 0, 0, 2073, 2074, 5, 68, 0, 0, 2074, 250, 1, 0, 0, 0, 2075, 2076, 5, 68, 0, 0, 2076, 2077, 5, 69, 0, 0, 2077, 2078, 5, 76, 0, 0, 2078, 2079, 5, 69, 0, 0, 2079, 2080, 5, 84, 0, 0, 2080, 2081, 5, 69, 0, 0, 2081, 252, 1, 0, 0, 0, 2082, 2083, 5, 68, 0, 0, 2083, 2084, 5, 69, 0, 0, 2084, 2085, 5, 77, 0, 0, 2085, 2086, 5, 65, 0, 0, 2086, 2087, 5, 78, 0, 0, 2087, 2088, 5, 68, 0, 0, 2088, 254, 1, 0, 0, 0, 2089, 2090, 5, 68, 0, 0, 2090, 2091, 5, 69, 0, 0, 2091, 2092, 5, 83, 0, 0, 2092, 2093, 5, 67, 0, 0, 2093, 256, 1, 0, 0, 0, 2094, 2095, 5, 68, 0, 0, 2095, 2096, 5, 69, 0, 0, 2096, 2097, 5, 83, 0, 0, 2097, 2098, 5, 67, 0, 0, 2098, 2099, 5, 82, 0, 0, 2099, 2100, 5, 73, 0, 0, 2100, 2101, 5, 66, 0, 0, 2101, 2102, 5, 69, 0, 0, 2102, 258, 1, 0, 0, 0, 2103, 2104, 5, 68, 0, 0, 2104, 2105, 5, 73, 0, 0, 2105, 2106, 5, 65, 0, 0, 2106, 2107, 5, 71, 0, 0, 2107, 2108, 5, 78, 0, 0, 2108, 2109, 5, 79, 0, 0, 2109, 2110, 5, 83, 0, 0, 2110, 2111, 5, 69, 0, 0, 2111, 260, 1, 0, 0, 0, 2112, 2113, 5, 68, 0, 0, 2113, 2114, 5, 73, 0, 0, 2114, 2115, 5, 65, 0, 0, 2115, 2116, 5, 71, 0, 0, 2116, 2117, 5, 78, 0, 0, 2117, 2118, 5, 79, 0, 0, 2118, 2119, 5, 83, 0, 0, 2119, 2120, 5, 73, 0, 0, 2120, 2121, 5, 83, 0, 0, 2121, 262, 1, 0, 0, 0, 2122, 2123, 5, 68, 0, 0, 2123, 2124, 5, 73, 0, 0, 2124, 2125, 5, 83, 0, 0, 2125, 2126, 5, 75, 0, 0, 2126, 264, 1, 0, 0, 0, 2127, 2128, 5, 68, 0, 0, 2128, 2129, 5, 73, 0, 0, 2129, 2130, 5, 83, 0, 0, 2130, 2131, 5, 84, 0, 0, 2131, 2132, 5, 73, 0, 0, 2132, 2133, 5, 78, 0, 0, 2133, 2134, 5, 67, 0, 0, 2134, 2135, 5, 84, 0, 0, 2135, 266, 1, 0, 0, 0, 2136, 2137, 5, 68, 0, 0, 2137, 2138, 5, 73, 0, 0, 2138, 2139, 5, 83, 0, 0, 2139, 2140, 5, 84, 0, 0, 2140, 2141, 5, 73, 0, 0, 2141, 2142, 5, 78, 0, 0, 2142, 2143, 5, 67, 0, 0, 2143, 2144, 5, 84, 0, 0, 2144, 2145, 5, 80, 0, 0, 2145, 2146, 5, 67, 0, 0, 2146, 268, 1, 0, 0, 0, 2147, 2148, 5, 68, 0, 0, 2148, 2149, 5, 73, 0, 0, 2149, 2150, 5, 83, 0, 0, 2150, 2151, 5, 84, 0, 0, 2151, 2152, 5, 73, 0, 0, 2152, 2153, 5, 78, 0, 0, 2153, 2154, 5, 67, 0, 0, 2154, 2155, 5, 84, 0, 0, 2155, 2156, 5, 80, 0, 0, 2156, 2157, 5, 67, 0, 0, 2157, 2158, 5, 83, 0, 0, 2158, 2159, 5, 65, 0, 0, 2159, 270, 1, 0, 0, 0, 2160, 2161, 5, 68, 0, 0, 2161, 2162, 5, 73, 0, 0, 2162, 2163, 5, 83, 0, 0, 2163, 2164, 5, 84, 0, 0, 2164, 2165, 5, 82, 0, 0, 2165, 2166, 5, 73, 0, 0, 2166, 2167, 5, 66, 0, 0, 2167, 2168, 5, 85, 0, 0, 2168, 2169, 5, 84, 0, 0, 2169, 2170, 5, 69, 0, 0, 2170, 2171, 5, 68, 0, 0, 2171, 272, 1, 0, 0, 0, 2172, 2173, 5, 68, 0, 0, 2173, 2174, 5, 73, 0, 0, 2174, 2175, 5, 83, 0, 0, 2175, 2176, 5, 84, 0, 0, 2176, 2177, 5, 82, 0, 0, 2177, 2178, 5, 73, 0, 0, 2178, 2179, 5, 66, 0, 0, 2179, 2180, 5, 85, 0, 0, 2180, 2181, 5, 84, 0, 0, 2181, 2182, 5, 73, 0, 0, 2182, 2183, 5, 79, 0, 0, 2183, 2184, 5, 78, 0, 0, 2184, 274, 1, 0, 0, 0, 2185, 2186, 5, 68, 0, 0, 2186, 2187, 5, 73, 0, 0, 2187, 2188, 5, 86, 0, 0, 2188, 276, 1, 0, 0, 0, 2189, 2190, 5, 68, 0, 0, 2190, 2191, 5, 79, 0, 0, 2191, 278, 1, 0, 0, 0, 2192, 2193, 5, 68, 0, 0, 2193, 2194, 5, 79, 0, 0, 2194, 2195, 5, 82, 0, 0, 2195, 2196, 5, 73, 0, 0, 2196, 2197, 5, 83, 0, 0, 2197, 2198, 5, 95, 0, 0, 2198, 2199, 5, 73, 0, 0, 2199, 2200, 5, 78, 0, 0, 2200, 2201, 5, 84, 0, 0, 2201, 2202, 5, 69, 0, 0, 2202, 2203, 5, 82, 0, 0, 2203, 2204, 5, 78, 0, 0, 2204, 2205, 5, 65, 0, 0, 2205, 2206, 5, 76, 0, 0, 2206, 2207, 5, 95, 0, 0, 2207, 2208, 5, 84, 0, 0, 2208, 2209, 5, 65, 0, 0, 2209, 2210, 5, 66, 0, 0, 2210, 2211, 5, 76, 0, 0, 2211, 2212, 5, 69, 0, 0, 2212, 2213, 5, 95, 0, 0, 2213, 2214, 5, 73, 0, 0, 2214, 2215, 5, 68, 0, 0, 2215, 280, 1, 0, 0, 0, 2216, 2217, 5, 68, 0, 0, 2217, 2218, 5, 79, 0, 0, 2218, 2219, 5, 85, 0, 0, 2219, 2220, 5, 66, 0, 0, 2220, 2221, 5, 76, 0, 0, 2221, 2222, 5, 69, 0, 0, 2222, 282, 1, 0, 0, 0, 2223, 2224, 5, 68, 0, 0, 2224, 2225, 5, 82, 0, 0, 2225, 2226, 5, 79, 0, 0, 2226, 2227, 5, 80, 0, 0, 2227, 284, 1, 0, 0, 0, 2228, 2229, 5, 68, 0, 0, 2229, 2230, 5, 82, 0, 0, 2230, 2231, 5, 79, 0, 0, 2231, 2232, 5, 80, 0, 0, 2232, 2233, 5, 80, 0, 0, 2233, 286, 1, 0, 0, 0, 2234, 2235, 5, 68, 0, 0, 2235, 2236, 5, 85, 0, 0, 2236, 2237, 5, 65, 0, 0, 2237, 2238, 5, 76, 0, 0, 2238, 288, 1, 0, 0, 0, 2239, 2240, 5, 68, 0, 0, 2240, 2241, 5, 85, 0, 0, 2241, 2242, 5, 77, 0, 0, 2242, 2243, 5, 80, 0, 0, 2243, 290, 1, 0, 0, 0, 2244, 2245, 5, 68, 0, 0, 2245, 2246, 5, 85, 0, 0, 2246, 2247, 5, 80, 0, 0, 2247, 2248, 5, 76, 0, 0, 2248, 2249, 5, 73, 0, 0, 2249, 2250, 5, 67, 0, 0, 2250, 2251, 5, 65, 0, 0, 2251, 2252, 5, 84, 0, 0, 2252, 2253, 5, 69, 0, 0, 2253, 292, 1, 0, 0, 0, 2254, 2255, 5, 68, 0, 0, 2255, 2256, 5, 89, 0, 0, 2256, 2257, 5, 78, 0, 0, 2257, 2258, 5, 65, 0, 0, 2258, 2259, 5, 77, 0, 0, 2259, 2260, 5, 73, 0, 0, 2260, 2261, 5, 67, 0, 0, 2261, 294, 1, 0, 0, 0, 2262, 2263, 5, 69, 0, 0, 2263, 296, 1, 0, 0, 0, 2264, 2265, 5, 69, 0, 0, 2265, 2266, 5, 76, 0, 0, 2266, 2267, 5, 83, 0, 0, 2267, 2268, 5, 69, 0, 0, 2268, 298, 1, 0, 0, 0, 2269, 2270, 5, 69, 0, 0, 2270, 2271, 5, 78, 0, 0, 2271, 2272, 5, 65, 0, 0, 2272, 2273, 5, 66, 0, 0, 2273, 2274, 5, 76, 0, 0, 2274, 2275, 5, 69, 0, 0, 2275, 300, 1, 0, 0, 0, 2276, 2277, 5, 69, 0, 0, 2277, 2278, 5, 78, 0, 0, 2278, 2279, 5, 67, 0, 0, 2279, 2280, 5, 82, 0, 0, 2280, 2281, 5, 89, 0, 0, 2281, 2282, 5, 80, 0, 0, 2282, 2283, 5, 84, 0, 0, 2283, 2284, 5, 75, 0, 0, 2284, 2285, 5, 69, 0, 0, 2285, 2286, 5, 89, 0, 0, 2286, 302, 1, 0, 0, 0, 2287, 2288, 5, 69, 0, 0, 2288, 2289, 5, 78, 0, 0, 2289, 2290, 5, 67, 0, 0, 2290, 2291, 5, 82, 0, 0, 2291, 2292, 5, 89, 0, 0, 2292, 2293, 5, 80, 0, 0, 2293, 2294, 5, 84, 0, 0, 2294, 2295, 5, 75, 0, 0, 2295, 2296, 5, 69, 0, 0, 2296, 2297, 5, 89, 0, 0, 2297, 2298, 5, 83, 0, 0, 2298, 304, 1, 0, 0, 0, 2299, 2300, 5, 69, 0, 0, 2300, 2301, 5, 78, 0, 0, 2301, 2302, 5, 68, 0, 0, 2302, 306, 1, 0, 0, 0, 2303, 2304, 5, 69, 0, 0, 2304, 2305, 5, 78, 0, 0, 2305, 2306, 5, 68, 0, 0, 2306, 2307, 5, 83, 0, 0, 2307, 308, 1, 0, 0, 0, 2308, 2309, 5, 69, 0, 0, 2309, 2310, 5, 78, 0, 0, 2310, 2311, 5, 71, 0, 0, 2311, 2312, 5, 73, 0, 0, 2312, 2313, 5, 78, 0, 0, 2313, 2314, 5, 69, 0, 0, 2314, 310, 1, 0, 0, 0, 2315, 2316, 5, 69, 0, 0, 2316, 2317, 5, 78, 0, 0, 2317, 2318, 5, 71, 0, 0, 2318, 2319, 5, 73, 0, 0, 2319, 2320, 5, 78, 0, 0, 2320, 2321, 5, 69, 0, 0, 2321, 2322, 5, 83, 0, 0, 2322, 312, 1, 0, 0, 0, 2323, 2324, 5, 69, 0, 0, 2324, 2325, 5, 78, 0, 0, 2325, 2326, 5, 84, 0, 0, 2326, 2327, 5, 69, 0, 0, 2327, 2328, 5, 82, 0, 0, 2328, 314, 1, 0, 0, 0, 2329, 2330, 5, 69, 0, 0, 2330, 2331, 5, 82, 0, 0, 2331, 2332, 5, 82, 0, 0, 2332, 2333, 5, 79, 0, 0, 2333, 2334, 5, 82, 0, 0, 2334, 2335, 5, 83, 0, 0, 2335, 316, 1, 0, 0, 0, 2336, 2337, 5, 69, 0, 0, 2337, 2338, 5, 86, 0, 0, 2338, 2339, 5, 69, 0, 0, 2339, 2340, 5, 78, 0, 0, 2340, 2341, 5, 84, 0, 0, 2341, 2342, 5, 83, 0, 0, 2342, 318, 1, 0, 0, 0, 2343, 2344, 5, 69, 0, 0, 2344, 2345, 5, 86, 0, 0, 2345, 2346, 5, 69, 0, 0, 2346, 2347, 5, 82, 0, 0, 2347, 2348, 5, 89, 0, 0, 2348, 320, 1, 0, 0, 0, 2349, 2350, 5, 69, 0, 0, 2350, 2351, 5, 88, 0, 0, 2351, 2352, 5, 67, 0, 0, 2352, 2353, 5, 69, 0, 0, 2353, 2354, 5, 80, 0, 0, 2354, 2355, 5, 84, 0, 0, 2355, 322, 1, 0, 0, 0, 2356, 2357, 5, 69, 0, 0, 2357, 2358, 5, 88, 0, 0, 2358, 2359, 5, 67, 0, 0, 2359, 2360, 5, 76, 0, 0, 2360, 2361, 5, 85, 0, 0, 2361, 2362, 5, 68, 0, 0, 2362, 2363, 5, 69, 0, 0, 2363, 324, 1, 0, 0, 0, 2364, 2365, 5, 69, 0, 0, 2365, 2366, 5, 88, 0, 0, 2366, 2367, 5, 69, 0, 0, 2367, 2368, 5, 67, 0, 0, 2368, 2369, 5, 85, 0, 0, 2369, 2370, 5, 84, 0, 0, 2370, 2371, 5, 69, 0, 0, 2371, 326, 1, 0, 0, 0, 2372, 2373, 5, 69, 0, 0, 2373, 2374, 5, 88, 0, 0, 2374, 2375, 5, 73, 0, 0, 2375, 2376, 5, 83, 0, 0, 2376, 2377, 5, 84, 0, 0, 2377, 2378, 5, 83, 0, 0, 2378, 328, 1, 0, 0, 0, 2379, 2380, 5, 69, 0, 0, 2380, 2381, 5, 88, 0, 0, 2381, 2382, 5, 80, 0, 0, 2382, 2383, 5, 73, 0, 0, 2383, 2384, 5, 82, 0, 0, 2384, 2385, 5, 69, 0, 0, 2385, 2386, 5, 68, 0, 0, 2386, 330, 1, 0, 0, 0, 2387, 2388, 5, 69, 0, 0, 2388, 2389, 5, 88, 0, 0, 2389, 2390, 5, 80, 0, 0, 2390, 2391, 5, 76, 0, 0, 2391, 2392, 5, 65, 0, 0, 2392, 2393, 5, 73, 0, 0, 2393, 2394, 5, 78, 0, 0, 2394, 332, 1, 0, 0, 0, 2395, 2396, 5, 69, 0, 0, 2396, 2397, 5, 88, 0, 0, 2397, 2398, 5, 80, 0, 0, 2398, 2399, 5, 79, 0, 0, 2399, 2400, 5, 82, 0, 0, 2400, 2401, 5, 84, 0, 0, 2401, 334, 1, 0, 0, 0, 2402, 2403, 5, 69, 0, 0, 2403, 2404, 5, 88, 0, 0, 2404, 2405, 5, 84, 0, 0, 2405, 2406, 5, 69, 0, 0, 2406, 2407, 5, 78, 0, 0, 2407, 2408, 5, 68, 0, 0, 2408, 2409, 5, 69, 0, 0, 2409, 2410, 5, 68, 0, 0, 2410, 336, 1, 0, 0, 0, 2411, 2412, 5, 69, 0, 0, 2412, 2413, 5, 88, 0, 0, 2413, 2414, 5, 84, 0, 0, 2414, 2415, 5, 69, 0, 0, 2415, 2416, 5, 82, 0, 0, 2416, 2417, 5, 78, 0, 0, 2417, 2418, 5, 65, 0, 0, 2418, 2419, 5, 76, 0, 0, 2419, 338, 1, 0, 0, 0, 2420, 2421, 5, 69, 0, 0, 2421, 2422, 5, 88, 0, 0, 2422, 2423, 5, 84, 0, 0, 2423, 2424, 5, 82, 0, 0, 2424, 2425, 5, 65, 0, 0, 2425, 2426, 5, 67, 0, 0, 2426, 2427, 5, 84, 0, 0, 2427, 340, 1, 0, 0, 0, 2428, 2429, 5, 70, 0, 0, 2429, 2430, 5, 65, 0, 0, 2430, 2431, 5, 73, 0, 0, 2431, 2432, 5, 76, 0, 0, 2432, 2433, 5, 69, 0, 0, 2433, 2434, 5, 68, 0, 0, 2434, 2435, 5, 95, 0, 0, 2435, 2436, 5, 76, 0, 0, 2436, 2437, 5, 79, 0, 0, 2437, 2438, 5, 71, 0, 0, 2438, 2439, 5, 73, 0, 0, 2439, 2440, 5, 78, 0, 0, 2440, 2441, 5, 95, 0, 0, 2441, 2442, 5, 65, 0, 0, 2442, 2443, 5, 84, 0, 0, 2443, 2444, 5, 84, 0, 0, 2444, 2445, 5, 69, 0, 0, 2445, 2446, 5, 77, 0, 0, 2446, 2447, 5, 80, 0, 0, 2447, 2448, 5, 84, 0, 0, 2448, 2449, 5, 83, 0, 0, 2449, 342, 1, 0, 0, 0, 2450, 2451, 5, 70, 0, 0, 2451, 2452, 5, 65, 0, 0, 2452, 2453, 5, 76, 0, 0, 2453, 2454, 5, 83, 0, 0, 2454, 2455, 5, 69, 0, 0, 2455, 344, 1, 0, 0, 0, 2456, 2457, 5, 70, 0, 0, 2457, 2458, 5, 65, 0, 0, 2458, 2459, 5, 83, 0, 0, 2459, 2460, 5, 84, 0, 0, 2460, 346, 1, 0, 0, 0, 2461, 2462, 5, 70, 0, 0, 2462, 2463, 5, 69, 0, 0, 2463, 2464, 5, 65, 0, 0, 2464, 2465, 5, 84, 0, 0, 2465, 2466, 5, 85, 0, 0, 2466, 2467, 5, 82, 0, 0, 2467, 2468, 5, 69, 0, 0, 2468, 348, 1, 0, 0, 0, 2469, 2470, 5, 70, 0, 0, 2470, 2471, 5, 73, 0, 0, 2471, 2472, 5, 69, 0, 0, 2472, 2473, 5, 76, 0, 0, 2473, 2474, 5, 68, 0, 0, 2474, 2475, 5, 83, 0, 0, 2475, 350, 1, 0, 0, 0, 2476, 2477, 5, 70, 0, 0, 2477, 2478, 5, 73, 0, 0, 2478, 2479, 5, 76, 0, 0, 2479, 2480, 5, 69, 0, 0, 2480, 352, 1, 0, 0, 0, 2481, 2482, 5, 70, 0, 0, 2482, 2483, 5, 73, 0, 0, 2483, 2484, 5, 76, 0, 0, 2484, 2485, 5, 84, 0, 0, 2485, 2486, 5, 69, 0, 0, 2486, 2487, 5, 82, 0, 0, 2487, 354, 1, 0, 0, 0, 2488, 2489, 5, 70, 0, 0, 2489, 2490, 5, 73, 0, 0, 2490, 2491, 5, 82, 0, 0, 2491, 2492, 5, 83, 0, 0, 2492, 2493, 5, 84, 0, 0, 2493, 356, 1, 0, 0, 0, 2494, 2495, 5, 70, 0, 0, 2495, 2496, 5, 76, 0, 0, 2496, 2497, 5, 79, 0, 0, 2497, 2498, 5, 65, 0, 0, 2498, 2499, 5, 84, 0, 0, 2499, 358, 1, 0, 0, 0, 2500, 2501, 5, 70, 0, 0, 2501, 2502, 5, 79, 0, 0, 2502, 2503, 5, 76, 0, 0, 2503, 2504, 5, 76, 0, 0, 2504, 2505, 5, 79, 0, 0, 2505, 2506, 5, 87, 0, 0, 2506, 2507, 5, 69, 0, 0, 2507, 2508, 5, 82, 0, 0, 2508, 360, 1, 0, 0, 0, 2509, 2510, 5, 70, 0, 0, 2510, 2511, 5, 79, 0, 0, 2511, 2512, 5, 76, 0, 0, 2512, 2513, 5, 76, 0, 0, 2513, 2514, 5, 79, 0, 0, 2514, 2515, 5, 87, 0, 0, 2515, 2516, 5, 73, 0, 0, 2516, 2517, 5, 78, 0, 0, 2517, 2518, 5, 71, 0, 0, 2518, 362, 1, 0, 0, 0, 2519, 2520, 5, 70, 0, 0, 2520, 2521, 5, 79, 0, 0, 2521, 2522, 5, 82, 0, 0, 2522, 364, 1, 0, 0, 0, 2523, 2524, 5, 70, 0, 0, 2524, 2525, 5, 79, 0, 0, 2525, 2526, 5, 82, 0, 0, 2526, 2527, 5, 69, 0, 0, 2527, 2528, 5, 73, 0, 0, 2528, 2529, 5, 71, 0, 0, 2529, 2530, 5, 78, 0, 0, 2530, 366, 1, 0, 0, 0, 2531, 2532, 5, 70, 0, 0, 2532, 2533, 5, 79, 0, 0, 2533, 2534, 5, 82, 0, 0, 2534, 2535, 5, 67, 0, 0, 2535, 2536, 5, 69, 0, 0, 2536, 368, 1, 0, 0, 0, 2537, 2538, 5, 70, 0, 0, 2538, 2539, 5, 79, 0, 0, 2539, 2540, 5, 82, 0, 0, 2540, 2541, 5, 77, 0, 0, 2541, 2542, 5, 65, 0, 0, 2542, 2543, 5, 84, 0, 0, 2543, 370, 1, 0, 0, 0, 2544, 2545, 5, 70, 0, 0, 2545, 2546, 5, 82, 0, 0, 2546, 2547, 5, 69, 0, 0, 2547, 2548, 5, 69, 0, 0, 2548, 372, 1, 0, 0, 0, 2549, 2550, 5, 70, 0, 0, 2550, 2551, 5, 82, 0, 0, 2551, 2552, 5, 79, 0, 0, 2552, 2553, 5, 77, 0, 0, 2553, 374, 1, 0, 0, 0, 2554, 2555, 5, 70, 0, 0, 2555, 2556, 5, 82, 0, 0, 2556, 2557, 5, 79, 0, 0, 2557, 2558, 5, 78, 0, 0, 2558, 2559, 5, 84, 0, 0, 2559, 2560, 5, 69, 0, 0, 2560, 2561, 5, 78, 0, 0, 2561, 2562, 5, 68, 0, 0, 2562, 376, 1, 0, 0, 0, 2563, 2564, 5, 70, 0, 0, 2564, 2565, 5, 82, 0, 0, 2565, 2566, 5, 79, 0, 0, 2566, 2567, 5, 78, 0, 0, 2567, 2568, 5, 84, 0, 0, 2568, 2569, 5, 69, 0, 0, 2569, 2570, 5, 78, 0, 0, 2570, 2571, 5, 68, 0, 0, 2571, 2572, 5, 83, 0, 0, 2572, 378, 1, 0, 0, 0, 2573, 2574, 5, 70, 0, 0, 2574, 2575, 5, 85, 0, 0, 2575, 2576, 5, 76, 0, 0, 2576, 2577, 5, 76, 0, 0, 2577, 380, 1, 0, 0, 0, 2578, 2579, 5, 70, 0, 0, 2579, 2580, 5, 85, 0, 0, 2580, 2581, 5, 78, 0, 0, 2581, 2582, 5, 67, 0, 0, 2582, 2583, 5, 84, 0, 0, 2583, 2584, 5, 73, 0, 0, 2584, 2585, 5, 79, 0, 0, 2585, 2586, 5, 78, 0, 0, 2586, 382, 1, 0, 0, 0, 2587, 2588, 5, 70, 0, 0, 2588, 2589, 5, 85, 0, 0, 2589, 2590, 5, 78, 0, 0, 2590, 2591, 5, 67, 0, 0, 2591, 2592, 5, 84, 0, 0, 2592, 2593, 5, 73, 0, 0, 2593, 2594, 5, 79, 0, 0, 2594, 2595, 5, 78, 0, 0, 2595, 2596, 5, 83, 0, 0, 2596, 384, 1, 0, 0, 0, 2597, 2598, 5, 71, 0, 0, 2598, 2599, 5, 69, 0, 0, 2599, 2600, 5, 78, 0, 0, 2600, 2601, 5, 69, 0, 0, 2601, 2602, 5, 82, 0, 0, 2602, 2603, 5, 65, 0, 0, 2603, 2604, 5, 84, 0, 0, 2604, 2605, 5, 69, 0, 0, 2605, 2606, 5, 68, 0, 0, 2606, 386, 1, 0, 0, 0, 2607, 2608, 5, 71, 0, 0, 2608, 2609, 5, 69, 0, 0, 2609, 2610, 5, 78, 0, 0, 2610, 2611, 5, 69, 0, 0, 2611, 2612, 5, 82, 0, 0, 2612, 2613, 5, 73, 0, 0, 2613, 2614, 5, 67, 0, 0, 2614, 388, 1, 0, 0, 0, 2615, 2616, 5, 71, 0, 0, 2616, 2617, 5, 76, 0, 0, 2617, 2618, 5, 79, 0, 0, 2618, 2619, 5, 66, 0, 0, 2619, 2620, 5, 65, 0, 0, 2620, 2621, 5, 76, 0, 0, 2621, 390, 1, 0, 0, 0, 2622, 2623, 5, 71, 0, 0, 2623, 2624, 5, 82, 0, 0, 2624, 2625, 5, 65, 0, 0, 2625, 2626, 5, 78, 0, 0, 2626, 2627, 5, 84, 0, 0, 2627, 392, 1, 0, 0, 0, 2628, 2629, 5, 71, 0, 0, 2629, 2630, 5, 82, 0, 0, 2630, 2631, 5, 65, 0, 0, 2631, 2632, 5, 78, 0, 0, 2632, 2633, 5, 84, 0, 0, 2633, 2634, 5, 83, 0, 0, 2634, 394, 1, 0, 0, 0, 2635, 2636, 5, 71, 0, 0, 2636, 2637, 5, 82, 0, 0, 2637, 2638, 5, 65, 0, 0, 2638, 2639, 5, 80, 0, 0, 2639, 2640, 5, 72, 0, 0, 2640, 396, 1, 0, 0, 0, 2641, 2642, 5, 71, 0, 0, 2642, 2643, 5, 82, 0, 0, 2643, 2644, 5, 79, 0, 0, 2644, 2645, 5, 85, 0, 0, 2645, 2646, 5, 80, 0, 0, 2646, 398, 1, 0, 0, 0, 2647, 2648, 5, 71, 0, 0, 2648, 2649, 5, 82, 0, 0, 2649, 2650, 5, 79, 0, 0, 2650, 2651, 5, 85, 0, 0, 2651, 2652, 5, 80, 0, 0, 2652, 2653, 5, 73, 0, 0, 2653, 2654, 5, 78, 0, 0, 2654, 2655, 5, 71, 0, 0, 2655, 400, 1, 0, 0, 0, 2656, 2657, 5, 71, 0, 0, 2657, 2658, 5, 82, 0, 0, 2658, 2659, 5, 79, 0, 0, 2659, 2660, 5, 85, 0, 0, 2660, 2661, 5, 80, 0, 0, 2661, 2662, 5, 83, 0, 0, 2662, 402, 1, 0, 0, 0, 2663, 2664, 5, 72, 0, 0, 2664, 2665, 5, 65, 0, 0, 2665, 2666, 5, 83, 0, 0, 2666, 2667, 5, 72, 0, 0, 2667, 404, 1, 0, 0, 0, 2668, 2669, 5, 72, 0, 0, 2669, 2670, 5, 65, 0, 0, 2670, 2671, 5, 86, 0, 0, 2671, 2672, 5, 73, 0, 0, 2672, 2673, 5, 78, 0, 0, 2673, 2674, 5, 71, 0, 0, 2674, 406, 1, 0, 0, 0, 2675, 2676, 5, 72, 0, 0, 2676, 2677, 5, 68, 0, 0, 2677, 2678, 5, 70, 0, 0, 2678, 2679, 5, 83, 0, 0, 2679, 408, 1, 0, 0, 0, 2680, 2681, 5, 72, 0, 0, 2681, 2682, 5, 69, 0, 0, 2682, 2683, 5, 76, 0, 0, 2683, 2684, 5, 80, 0, 0, 2684, 410, 1, 0, 0, 0, 2685, 2686, 5, 72, 0, 0, 2686, 2687, 5, 73, 0, 0, 2687, 2688, 5, 83, 0, 0, 2688, 2689, 5, 84, 0, 0, 2689, 2690, 5, 79, 0, 0, 2690, 2691, 5, 71, 0, 0, 2691, 2692, 5, 82, 0, 0, 2692, 2693, 5, 65, 0, 0, 2693, 2694, 5, 77, 0, 0, 2694, 412, 1, 0, 0, 0, 2695, 2696, 5, 72, 0, 0, 2696, 2697, 5, 76, 0, 0, 2697, 2698, 5, 76, 0, 0, 2698, 414, 1, 0, 0, 0, 2699, 2700, 5, 72, 0, 0, 2700, 2701, 5, 76, 0, 0, 2701, 2702, 5, 76, 0, 0, 2702, 2703, 5, 95, 0, 0, 2703, 2704, 5, 85, 0, 0, 2704, 2705, 5, 78, 0, 0, 2705, 2706, 5, 73, 0, 0, 2706, 2707, 5, 79, 0, 0, 2707, 2708, 5, 78, 0, 0, 2708, 416, 1, 0, 0, 0, 2709, 2710, 5, 72, 0, 0, 2710, 2711, 5, 79, 0, 0, 2711, 2712, 5, 83, 0, 0, 2712, 2713, 5, 84, 0, 0, 2713, 2714, 5, 78, 0, 0, 2714, 2715, 5, 65, 0, 0, 2715, 2716, 5, 77, 0, 0, 2716, 2717, 5, 69, 0, 0, 2717, 418, 1, 0, 0, 0, 2718, 2719, 5, 72, 0, 0, 2719, 2720, 5, 79, 0, 0, 2720, 2721, 5, 84, 0, 0, 2721, 2722, 5, 83, 0, 0, 2722, 2723, 5, 80, 0, 0, 2723, 2724, 5, 79, 0, 0, 2724, 2725, 5, 84, 0, 0, 2725, 420, 1, 0, 0, 0, 2726, 2727, 5, 72, 0, 0, 2727, 2728, 5, 79, 0, 0, 2728, 2729, 5, 85, 0, 0, 2729, 2730, 5, 82, 0, 0, 2730, 422, 1, 0, 0, 0, 2731, 2732, 5, 72, 0, 0, 2732, 2733, 5, 85, 0, 0, 2733, 2734, 5, 66, 0, 0, 2734, 424, 1, 0, 0, 0, 2735, 2736, 5, 73, 0, 0, 2736, 2737, 5, 68, 0, 0, 2737, 2738, 5, 69, 0, 0, 2738, 2739, 5, 78, 0, 0, 2739, 2740, 5, 84, 0, 0, 2740, 2741, 5, 73, 0, 0, 2741, 2742, 5, 70, 0, 0, 2742, 2743, 5, 73, 0, 0, 2743, 2744, 5, 69, 0, 0, 2744, 2745, 5, 68, 0, 0, 2745, 426, 1, 0, 0, 0, 2746, 2747, 5, 73, 0, 0, 2747, 2748, 5, 70, 0, 0, 2748, 428, 1, 0, 0, 0, 2749, 2750, 5, 73, 0, 0, 2750, 2751, 5, 71, 0, 0, 2751, 2752, 5, 78, 0, 0, 2752, 2753, 5, 79, 0, 0, 2753, 2754, 5, 82, 0, 0, 2754, 2755, 5, 69, 0, 0, 2755, 430, 1, 0, 0, 0, 2756, 2757, 5, 73, 0, 0, 2757, 2758, 5, 77, 0, 0, 2758, 2759, 5, 77, 0, 0, 2759, 2760, 5, 69, 0, 0, 2760, 2761, 5, 68, 0, 0, 2761, 2762, 5, 73, 0, 0, 2762, 2763, 5, 65, 0, 0, 2763, 2764, 5, 84, 0, 0, 2764, 2765, 5, 69, 0, 0, 2765, 432, 1, 0, 0, 0, 2766, 2767, 5, 73, 0, 0, 2767, 2768, 5, 78, 0, 0, 2768, 434, 1, 0, 0, 0, 2769, 2770, 5, 73, 0, 0, 2770, 2771, 5, 78, 0, 0, 2771, 2772, 5, 67, 0, 0, 2772, 2773, 5, 82, 0, 0, 2773, 2774, 5, 69, 0, 0, 2774, 2775, 5, 77, 0, 0, 2775, 2776, 5, 69, 0, 0, 2776, 2777, 5, 78, 0, 0, 2777, 2778, 5, 84, 0, 0, 2778, 2779, 5, 65, 0, 0, 2779, 2780, 5, 76, 0, 0, 2780, 436, 1, 0, 0, 0, 2781, 2782, 5, 73, 0, 0, 2782, 2783, 5, 78, 0, 0, 2783, 2784, 5, 68, 0, 0, 2784, 2785, 5, 69, 0, 0, 2785, 2786, 5, 88, 0, 0, 2786, 438, 1, 0, 0, 0, 2787, 2788, 5, 73, 0, 0, 2788, 2789, 5, 78, 0, 0, 2789, 2790, 5, 68, 0, 0, 2790, 2791, 5, 69, 0, 0, 2791, 2792, 5, 88, 0, 0, 2792, 2793, 5, 69, 0, 0, 2793, 2794, 5, 83, 0, 0, 2794, 440, 1, 0, 0, 0, 2795, 2796, 5, 73, 0, 0, 2796, 2797, 5, 78, 0, 0, 2797, 2798, 5, 70, 0, 0, 2798, 2799, 5, 73, 0, 0, 2799, 2800, 5, 76, 0, 0, 2800, 2801, 5, 69, 0, 0, 2801, 442, 1, 0, 0, 0, 2802, 2803, 5, 73, 0, 0, 2803, 2804, 5, 78, 0, 0, 2804, 2805, 5, 78, 0, 0, 2805, 2806, 5, 69, 0, 0, 2806, 2807, 5, 82, 0, 0, 2807, 444, 1, 0, 0, 0, 2808, 2809, 5, 73, 0, 0, 2809, 2810, 5, 78, 0, 0, 2810, 2811, 5, 83, 0, 0, 2811, 2812, 5, 69, 0, 0, 2812, 2813, 5, 82, 0, 0, 2813, 2814, 5, 84, 0, 0, 2814, 446, 1, 0, 0, 0, 2815, 2816, 5, 73, 0, 0, 2816, 2817, 5, 78, 0, 0, 2817, 2818, 5, 83, 0, 0, 2818, 2819, 5, 84, 0, 0, 2819, 2820, 5, 65, 0, 0, 2820, 2821, 5, 76, 0, 0, 2821, 2822, 5, 76, 0, 0, 2822, 448, 1, 0, 0, 0, 2823, 2824, 5, 73, 0, 0, 2824, 2825, 5, 78, 0, 0, 2825, 2826, 5, 84, 0, 0, 2826, 450, 1, 0, 0, 0, 2827, 2828, 5, 73, 0, 0, 2828, 2829, 5, 78, 0, 0, 2829, 2830, 5, 84, 0, 0, 2830, 2831, 5, 69, 0, 0, 2831, 2832, 5, 71, 0, 0, 2832, 2833, 5, 69, 0, 0, 2833, 2834, 5, 82, 0, 0, 2834, 452, 1, 0, 0, 0, 2835, 2836, 5, 73, 0, 0, 2836, 2837, 5, 78, 0, 0, 2837, 2838, 5, 84, 0, 0, 2838, 2839, 5, 69, 0, 0, 2839, 2840, 5, 82, 0, 0, 2840, 2841, 5, 77, 0, 0, 2841, 2842, 5, 69, 0, 0, 2842, 2843, 5, 68, 0, 0, 2843, 2844, 5, 73, 0, 0, 2844, 2845, 5, 65, 0, 0, 2845, 2846, 5, 84, 0, 0, 2846, 2847, 5, 69, 0, 0, 2847, 454, 1, 0, 0, 0, 2848, 2849, 5, 73, 0, 0, 2849, 2850, 5, 78, 0, 0, 2850, 2851, 5, 84, 0, 0, 2851, 2852, 5, 69, 0, 0, 2852, 2853, 5, 82, 0, 0, 2853, 2854, 5, 83, 0, 0, 2854, 2855, 5, 69, 0, 0, 2855, 2856, 5, 67, 0, 0, 2856, 2857, 5, 84, 0, 0, 2857, 456, 1, 0, 0, 0, 2858, 2859, 5, 73, 0, 0, 2859, 2860, 5, 78, 0, 0, 2860, 2861, 5, 84, 0, 0, 2861, 2862, 5, 69, 0, 0, 2862, 2863, 5, 82, 0, 0, 2863, 2864, 5, 86, 0, 0, 2864, 2865, 5, 65, 0, 0, 2865, 2866, 5, 76, 0, 0, 2866, 458, 1, 0, 0, 0, 2867, 2868, 5, 73, 0, 0, 2868, 2869, 5, 78, 0, 0, 2869, 2870, 5, 84, 0, 0, 2870, 2871, 5, 79, 0, 0, 2871, 460, 1, 0, 0, 0, 2872, 2873, 5, 73, 0, 0, 2873, 2874, 5, 78, 0, 0, 2874, 2875, 5, 86, 0, 0, 2875, 2876, 5, 69, 0, 0, 2876, 2877, 5, 82, 0, 0, 2877, 2878, 5, 84, 0, 0, 2878, 2879, 5, 69, 0, 0, 2879, 2880, 5, 68, 0, 0, 2880, 462, 1, 0, 0, 0, 2881, 2882, 5, 73, 0, 0, 2882, 2883, 5, 80, 0, 0, 2883, 2884, 5, 86, 0, 0, 2884, 2885, 5, 52, 0, 0, 2885, 464, 1, 0, 0, 0, 2886, 2887, 5, 73, 0, 0, 2887, 2888, 5, 80, 0, 0, 2888, 2889, 5, 86, 0, 0, 2889, 2890, 5, 54, 0, 0, 2890, 466, 1, 0, 0, 0, 2891, 2892, 5, 73, 0, 0, 2892, 2893, 5, 83, 0, 0, 2893, 468, 1, 0, 0, 0, 2894, 2895, 5, 73, 0, 0, 2895, 2896, 5, 83, 0, 0, 2896, 2897, 5, 95, 0, 0, 2897, 2898, 5, 78, 0, 0, 2898, 2899, 5, 79, 0, 0, 2899, 2900, 5, 84, 0, 0, 2900, 2901, 5, 95, 0, 0, 2901, 2902, 5, 78, 0, 0, 2902, 2903, 5, 85, 0, 0, 2903, 2904, 5, 76, 0, 0, 2904, 2905, 5, 76, 0, 0, 2905, 2906, 5, 95, 0, 0, 2906, 2907, 5, 80, 0, 0, 2907, 2908, 5, 82, 0, 0, 2908, 2909, 5, 69, 0, 0, 2909, 2910, 5, 68, 0, 0, 2910, 470, 1, 0, 0, 0, 2911, 2912, 5, 73, 0, 0, 2912, 2913, 5, 83, 0, 0, 2913, 2914, 5, 95, 0, 0, 2914, 2915, 5, 78, 0, 0, 2915, 2916, 5, 85, 0, 0, 2916, 2917, 5, 76, 0, 0, 2917, 2918, 5, 76, 0, 0, 2918, 2919, 5, 95, 0, 0, 2919, 2920, 5, 80, 0, 0, 2920, 2921, 5, 82, 0, 0, 2921, 2922, 5, 69, 0, 0, 2922, 2923, 5, 68, 0, 0, 2923, 472, 1, 0, 0, 0, 2924, 2925, 5, 73, 0, 0, 2925, 2926, 5, 83, 0, 0, 2926, 2927, 5, 78, 0, 0, 2927, 2928, 5, 85, 0, 0, 2928, 2929, 5, 76, 0, 0, 2929, 2930, 5, 76, 0, 0, 2930, 474, 1, 0, 0, 0, 2931, 2932, 5, 73, 0, 0, 2932, 2933, 5, 83, 0, 0, 2933, 2934, 5, 79, 0, 0, 2934, 2935, 5, 76, 0, 0, 2935, 2936, 5, 65, 0, 0, 2936, 2937, 5, 84, 0, 0, 2937, 2938, 5, 73, 0, 0, 2938, 2939, 5, 79, 0, 0, 2939, 2940, 5, 78, 0, 0, 2940, 476, 1, 0, 0, 0, 2941, 2942, 5, 74, 0, 0, 2942, 2943, 5, 79, 0, 0, 2943, 2944, 5, 66, 0, 0, 2944, 478, 1, 0, 0, 0, 2945, 2946, 5, 74, 0, 0, 2946, 2947, 5, 79, 0, 0, 2947, 2948, 5, 66, 0, 0, 2948, 2949, 5, 83, 0, 0, 2949, 480, 1, 0, 0, 0, 2950, 2951, 5, 74, 0, 0, 2951, 2952, 5, 79, 0, 0, 2952, 2953, 5, 73, 0, 0, 2953, 2954, 5, 78, 0, 0, 2954, 482, 1, 0, 0, 0, 2955, 2956, 5, 74, 0, 0, 2956, 2957, 5, 83, 0, 0, 2957, 2958, 5, 79, 0, 0, 2958, 2959, 5, 78, 0, 0, 2959, 484, 1, 0, 0, 0, 2960, 2961, 5, 74, 0, 0, 2961, 2962, 5, 83, 0, 0, 2962, 2963, 5, 79, 0, 0, 2963, 2964, 5, 78, 0, 0, 2964, 2965, 5, 66, 0, 0, 2965, 486, 1, 0, 0, 0, 2966, 2967, 5, 75, 0, 0, 2967, 2968, 5, 69, 0, 0, 2968, 2969, 5, 89, 0, 0, 2969, 488, 1, 0, 0, 0, 2970, 2971, 5, 75, 0, 0, 2971, 2972, 5, 69, 0, 0, 2972, 2973, 5, 89, 0, 0, 2973, 2974, 5, 83, 0, 0, 2974, 490, 1, 0, 0, 0, 2975, 2976, 5, 75, 0, 0, 2976, 2977, 5, 73, 0, 0, 2977, 2978, 5, 76, 0, 0, 2978, 2979, 5, 76, 0, 0, 2979, 492, 1, 0, 0, 0, 2980, 2981, 5, 76, 0, 0, 2981, 2982, 5, 65, 0, 0, 2982, 2983, 5, 66, 0, 0, 2983, 2984, 5, 69, 0, 0, 2984, 2985, 5, 76, 0, 0, 2985, 494, 1, 0, 0, 0, 2986, 2987, 5, 76, 0, 0, 2987, 2988, 5, 65, 0, 0, 2988, 2989, 5, 82, 0, 0, 2989, 2990, 5, 71, 0, 0, 2990, 2991, 5, 69, 0, 0, 2991, 2992, 5, 73, 0, 0, 2992, 2993, 5, 78, 0, 0, 2993, 2994, 5, 84, 0, 0, 2994, 496, 1, 0, 0, 0, 2995, 2996, 5, 76, 0, 0, 2996, 2997, 5, 65, 0, 0, 2997, 2998, 5, 83, 0, 0, 2998, 2999, 5, 84, 0, 0, 2999, 498, 1, 0, 0, 0, 3000, 3001, 5, 76, 0, 0, 3001, 3002, 5, 65, 0, 0, 3002, 3003, 5, 84, 0, 0, 3003, 3004, 5, 69, 0, 0, 3004, 3005, 5, 82, 0, 0, 3005, 3006, 5, 65, 0, 0, 3006, 3007, 5, 76, 0, 0, 3007, 500, 1, 0, 0, 0, 3008, 3009, 5, 76, 0, 0, 3009, 3010, 5, 68, 0, 0, 3010, 3011, 5, 65, 0, 0, 3011, 3012, 5, 80, 0, 0, 3012, 502, 1, 0, 0, 0, 3013, 3014, 5, 76, 0, 0, 3014, 3015, 5, 68, 0, 0, 3015, 3016, 5, 65, 0, 0, 3016, 3017, 5, 80, 0, 0, 3017, 3018, 5, 95, 0, 0, 3018, 3019, 5, 65, 0, 0, 3019, 3020, 5, 68, 0, 0, 3020, 3021, 5, 77, 0, 0, 3021, 3022, 5, 73, 0, 0, 3022, 3023, 5, 78, 0, 0, 3023, 3024, 5, 95, 0, 0, 3024, 3025, 5, 80, 0, 0, 3025, 3026, 5, 65, 0, 0, 3026, 3027, 5, 83, 0, 0, 3027, 3028, 5, 83, 0, 0, 3028, 3029, 5, 87, 0, 0, 3029, 3030, 5, 79, 0, 0, 3030, 3031, 5, 82, 0, 0, 3031, 3032, 5, 68, 0, 0, 3032, 504, 1, 0, 0, 0, 3033, 3034, 5, 76, 0, 0, 3034, 3035, 5, 69, 0, 0, 3035, 3036, 5, 70, 0, 0, 3036, 3037, 5, 84, 0, 0, 3037, 506, 1, 0, 0, 0, 3038, 3039, 5, 76, 0, 0, 3039, 3040, 5, 69, 0, 0, 3040, 3041, 5, 83, 0, 0, 3041, 3042, 5, 83, 0, 0, 3042, 508, 1, 0, 0, 0, 3043, 3044, 5, 76, 0, 0, 3044, 3045, 5, 69, 0, 0, 3045, 3046, 5, 86, 0, 0, 3046, 3047, 5, 69, 0, 0, 3047, 3048, 5, 76, 0, 0, 3048, 510, 1, 0, 0, 0, 3049, 3050, 5, 76, 0, 0, 3050, 3051, 5, 73, 0, 0, 3051, 3052, 5, 75, 0, 0, 3052, 3053, 5, 69, 0, 0, 3053, 512, 1, 0, 0, 0, 3054, 3055, 5, 76, 0, 0, 3055, 3056, 5, 73, 0, 0, 3056, 3057, 5, 77, 0, 0, 3057, 3058, 5, 73, 0, 0, 3058, 3059, 5, 84, 0, 0, 3059, 514, 1, 0, 0, 0, 3060, 3061, 5, 76, 0, 0, 3061, 3062, 5, 73, 0, 0, 3062, 3063, 5, 78, 0, 0, 3063, 3064, 5, 69, 0, 0, 3064, 3065, 5, 83, 0, 0, 3065, 516, 1, 0, 0, 0, 3066, 3067, 5, 76, 0, 0, 3067, 3068, 5, 73, 0, 0, 3068, 3069, 5, 78, 0, 0, 3069, 3070, 5, 75, 0, 0, 3070, 518, 1, 0, 0, 0, 3071, 3072, 5, 76, 0, 0, 3072, 3073, 5, 73, 0, 0, 3073, 3074, 5, 83, 0, 0, 3074, 3075, 5, 84, 0, 0, 3075, 520, 1, 0, 0, 0, 3076, 3077, 5, 76, 0, 0, 3077, 3078, 5, 79, 0, 0, 3078, 3079, 5, 65, 0, 0, 3079, 3080, 5, 68, 0, 0, 3080, 522, 1, 0, 0, 0, 3081, 3082, 5, 76, 0, 0, 3082, 3083, 5, 79, 0, 0, 3083, 3084, 5, 67, 0, 0, 3084, 3085, 5, 65, 0, 0, 3085, 3086, 5, 76, 0, 0, 3086, 524, 1, 0, 0, 0, 3087, 3088, 5, 76, 0, 0, 3088, 3089, 5, 79, 0, 0, 3089, 3090, 5, 67, 0, 0, 3090, 3091, 5, 65, 0, 0, 3091, 3092, 5, 76, 0, 0, 3092, 3093, 5, 84, 0, 0, 3093, 3094, 5, 73, 0, 0, 3094, 3095, 5, 77, 0, 0, 3095, 3096, 5, 69, 0, 0, 3096, 526, 1, 0, 0, 0, 3097, 3098, 5, 76, 0, 0, 3098, 3099, 5, 79, 0, 0, 3099, 3100, 5, 67, 0, 0, 3100, 3101, 5, 65, 0, 0, 3101, 3102, 5, 76, 0, 0, 3102, 3103, 5, 84, 0, 0, 3103, 3104, 5, 73, 0, 0, 3104, 3105, 5, 77, 0, 0, 3105, 3106, 5, 69, 0, 0, 3106, 3107, 5, 83, 0, 0, 3107, 3108, 5, 84, 0, 0, 3108, 3109, 5, 65, 0, 0, 3109, 3110, 5, 77, 0, 0, 3110, 3111, 5, 80, 0, 0, 3111, 528, 1, 0, 0, 0, 3112, 3113, 5, 76, 0, 0, 3113, 3114, 5, 79, 0, 0, 3114, 3115, 5, 67, 0, 0, 3115, 3116, 5, 65, 0, 0, 3116, 3117, 5, 84, 0, 0, 3117, 3118, 5, 73, 0, 0, 3118, 3119, 5, 79, 0, 0, 3119, 3120, 5, 78, 0, 0, 3120, 530, 1, 0, 0, 0, 3121, 3122, 5, 76, 0, 0, 3122, 3123, 5, 79, 0, 0, 3123, 3124, 5, 67, 0, 0, 3124, 3125, 5, 75, 0, 0, 3125, 532, 1, 0, 0, 0, 3126, 3127, 5, 76, 0, 0, 3127, 3128, 5, 79, 0, 0, 3128, 3129, 5, 71, 0, 0, 3129, 3130, 5, 73, 0, 0, 3130, 3131, 5, 67, 0, 0, 3131, 3132, 5, 65, 0, 0, 3132, 3133, 5, 76, 0, 0, 3133, 534, 1, 0, 0, 0, 3134, 3135, 5, 76, 0, 0, 3135, 3136, 5, 79, 0, 0, 3136, 3137, 5, 87, 0, 0, 3137, 3138, 5, 95, 0, 0, 3138, 3139, 5, 80, 0, 0, 3139, 3140, 5, 82, 0, 0, 3140, 3141, 5, 73, 0, 0, 3141, 3142, 5, 79, 0, 0, 3142, 3143, 5, 82, 0, 0, 3143, 3144, 5, 73, 0, 0, 3144, 3145, 5, 84, 0, 0, 3145, 3146, 5, 89, 0, 0, 3146, 536, 1, 0, 0, 0, 3147, 3148, 5, 77, 0, 0, 3148, 3149, 5, 65, 0, 0, 3149, 3150, 5, 78, 0, 0, 3150, 3151, 5, 85, 0, 0, 3151, 3152, 5, 65, 0, 0, 3152, 3153, 5, 76, 0, 0, 3153, 538, 1, 0, 0, 0, 3154, 3155, 5, 77, 0, 0, 3155, 3156, 5, 65, 0, 0, 3156, 3157, 5, 80, 0, 0, 3157, 540, 1, 0, 0, 0, 3158, 3159, 5, 77, 0, 0, 3159, 3160, 5, 65, 0, 0, 3160, 3161, 5, 84, 0, 0, 3161, 3162, 5, 67, 0, 0, 3162, 3163, 5, 72, 0, 0, 3163, 542, 1, 0, 0, 0, 3164, 3165, 5, 77, 0, 0, 3165, 3166, 5, 65, 0, 0, 3166, 3167, 5, 84, 0, 0, 3167, 3168, 5, 67, 0, 0, 3168, 3169, 5, 72, 0, 0, 3169, 3170, 5, 95, 0, 0, 3170, 3171, 5, 65, 0, 0, 3171, 3172, 5, 76, 0, 0, 3172, 3173, 5, 76, 0, 0, 3173, 544, 1, 0, 0, 0, 3174, 3175, 5, 77, 0, 0, 3175, 3176, 5, 65, 0, 0, 3176, 3177, 5, 84, 0, 0, 3177, 3178, 5, 67, 0, 0, 3178, 3179, 5, 72, 0, 0, 3179, 3180, 5, 95, 0, 0, 3180, 3181, 5, 65, 0, 0, 3181, 3182, 5, 78, 0, 0, 3182, 3183, 5, 89, 0, 0, 3183, 546, 1, 0, 0, 0, 3184, 3185, 5, 77, 0, 0, 3185, 3186, 5, 65, 0, 0, 3186, 3187, 5, 84, 0, 0, 3187, 3188, 5, 67, 0, 0, 3188, 3189, 5, 72, 0, 0, 3189, 3190, 5, 95, 0, 0, 3190, 3191, 5, 80, 0, 0, 3191, 3192, 5, 72, 0, 0, 3192, 3193, 5, 82, 0, 0, 3193, 3194, 5, 65, 0, 0, 3194, 3195, 5, 83, 0, 0, 3195, 3196, 5, 69, 0, 0, 3196, 548, 1, 0, 0, 0, 3197, 3198, 5, 77, 0, 0, 3198, 3199, 5, 65, 0, 0, 3199, 3200, 5, 84, 0, 0, 3200, 3201, 5, 67, 0, 0, 3201, 3202, 5, 72, 0, 0, 3202, 3203, 5, 95, 0, 0, 3203, 3204, 5, 80, 0, 0, 3204, 3205, 5, 72, 0, 0, 3205, 3206, 5, 82, 0, 0, 3206, 3207, 5, 65, 0, 0, 3207, 3208, 5, 83, 0, 0, 3208, 3209, 5, 69, 0, 0, 3209, 3210, 5, 95, 0, 0, 3210, 3211, 5, 69, 0, 0, 3211, 3212, 5, 68, 0, 0, 3212, 3213, 5, 71, 0, 0, 3213, 3214, 5, 69, 0, 0, 3214, 550, 1, 0, 0, 0, 3215, 3216, 5, 77, 0, 0, 3216, 3217, 5, 65, 0, 0, 3217, 3218, 5, 84, 0, 0, 3218, 3219, 5, 67, 0, 0, 3219, 3220, 5, 72, 0, 0, 3220, 3221, 5, 95, 0, 0, 3221, 3222, 5, 80, 0, 0, 3222, 3223, 5, 72, 0, 0, 3223, 3224, 5, 82, 0, 0, 3224, 3225, 5, 65, 0, 0, 3225, 3226, 5, 83, 0, 0, 3226, 3227, 5, 69, 0, 0, 3227, 3228, 5, 95, 0, 0, 3228, 3229, 5, 80, 0, 0, 3229, 3230, 5, 82, 0, 0, 3230, 3231, 5, 69, 0, 0, 3231, 3232, 5, 70, 0, 0, 3232, 3233, 5, 73, 0, 0, 3233, 3234, 5, 88, 0, 0, 3234, 552, 1, 0, 0, 0, 3235, 3236, 5, 77, 0, 0, 3236, 3237, 5, 65, 0, 0, 3237, 3238, 5, 84, 0, 0, 3238, 3239, 5, 67, 0, 0, 3239, 3240, 5, 72, 0, 0, 3240, 3241, 5, 95, 0, 0, 3241, 3242, 5, 82, 0, 0, 3242, 3243, 5, 69, 0, 0, 3243, 3244, 5, 71, 0, 0, 3244, 3245, 5, 69, 0, 0, 3245, 3246, 5, 88, 0, 0, 3246, 3247, 5, 80, 0, 0, 3247, 554, 1, 0, 0, 0, 3248, 3249, 5, 77, 0, 0, 3249, 3250, 5, 65, 0, 0, 3250, 3251, 5, 84, 0, 0, 3251, 3252, 5, 67, 0, 0, 3252, 3253, 5, 72, 0, 0, 3253, 3254, 5, 95, 0, 0, 3254, 3255, 5, 78, 0, 0, 3255, 3256, 5, 65, 0, 0, 3256, 3257, 5, 77, 0, 0, 3257, 3258, 5, 69, 0, 0, 3258, 556, 1, 0, 0, 0, 3259, 3260, 5, 77, 0, 0, 3260, 3261, 5, 65, 0, 0, 3261, 3262, 5, 84, 0, 0, 3262, 3263, 5, 67, 0, 0, 3263, 3264, 5, 72, 0, 0, 3264, 3265, 5, 95, 0, 0, 3265, 3266, 5, 78, 0, 0, 3266, 3267, 5, 65, 0, 0, 3267, 3268, 5, 77, 0, 0, 3268, 3269, 5, 69, 0, 0, 3269, 3270, 5, 95, 0, 0, 3270, 3271, 5, 71, 0, 0, 3271, 3272, 5, 76, 0, 0, 3272, 3273, 5, 79, 0, 0, 3273, 3274, 5, 66, 0, 0, 3274, 558, 1, 0, 0, 0, 3275, 3276, 5, 77, 0, 0, 3276, 3277, 5, 65, 0, 0, 3277, 3278, 5, 84, 0, 0, 3278, 3279, 5, 69, 0, 0, 3279, 3280, 5, 82, 0, 0, 3280, 3281, 5, 73, 0, 0, 3281, 3282, 5, 65, 0, 0, 3282, 3283, 5, 76, 0, 0, 3283, 3284, 5, 73, 0, 0, 3284, 3285, 5, 90, 0, 0, 3285, 3286, 5, 69, 0, 0, 3286, 3287, 5, 68, 0, 0, 3287, 560, 1, 0, 0, 0, 3288, 3289, 5, 77, 0, 0, 3289, 3290, 5, 65, 0, 0, 3290, 3291, 5, 88, 0, 0, 3291, 562, 1, 0, 0, 0, 3292, 3293, 5, 77, 0, 0, 3293, 3294, 5, 65, 0, 0, 3294, 3295, 5, 88, 0, 0, 3295, 3296, 5, 86, 0, 0, 3296, 3297, 5, 65, 0, 0, 3297, 3298, 5, 76, 0, 0, 3298, 3299, 5, 85, 0, 0, 3299, 3300, 5, 69, 0, 0, 3300, 564, 1, 0, 0, 0, 3301, 3302, 5, 77, 0, 0, 3302, 3303, 5, 69, 0, 0, 3303, 3304, 5, 77, 0, 0, 3304, 3305, 5, 79, 0, 0, 3305, 566, 1, 0, 0, 0, 3306, 3307, 5, 77, 0, 0, 3307, 3308, 5, 69, 0, 0, 3308, 3309, 5, 82, 0, 0, 3309, 3310, 5, 71, 0, 0, 3310, 3311, 5, 69, 0, 0, 3311, 568, 1, 0, 0, 0, 3312, 3313, 5, 77, 0, 0, 3313, 3314, 5, 73, 0, 0, 3314, 3315, 5, 71, 0, 0, 3315, 3316, 5, 82, 0, 0, 3316, 3317, 5, 65, 0, 0, 3317, 3318, 5, 84, 0, 0, 3318, 3319, 5, 69, 0, 0, 3319, 570, 1, 0, 0, 0, 3320, 3321, 5, 77, 0, 0, 3321, 3322, 5, 73, 0, 0, 3322, 3323, 5, 71, 0, 0, 3323, 3324, 5, 82, 0, 0, 3324, 3325, 5, 65, 0, 0, 3325, 3326, 5, 84, 0, 0, 3326, 3327, 5, 73, 0, 0, 3327, 3328, 5, 79, 0, 0, 3328, 3329, 5, 78, 0, 0, 3329, 3330, 5, 83, 0, 0, 3330, 572, 1, 0, 0, 0, 3331, 3332, 5, 77, 0, 0, 3332, 3333, 5, 73, 0, 0, 3333, 3334, 5, 78, 0, 0, 3334, 574, 1, 0, 0, 0, 3335, 3336, 5, 77, 0, 0, 3336, 3337, 5, 73, 0, 0, 3337, 3338, 5, 78, 0, 0, 3338, 3339, 5, 85, 0, 0, 3339, 3340, 5, 83, 0, 0, 3340, 576, 1, 0, 0, 0, 3341, 3342, 5, 77, 0, 0, 3342, 3343, 5, 73, 0, 0, 3343, 3344, 5, 78, 0, 0, 3344, 3345, 5, 85, 0, 0, 3345, 3346, 5, 84, 0, 0, 3346, 3347, 5, 69, 0, 0, 3347, 578, 1, 0, 0, 0, 3348, 3349, 5, 77, 0, 0, 3349, 3350, 5, 79, 0, 0, 3350, 3351, 5, 68, 0, 0, 3351, 3352, 5, 73, 0, 0, 3352, 3353, 5, 70, 0, 0, 3353, 3354, 5, 89, 0, 0, 3354, 580, 1, 0, 0, 0, 3355, 3356, 5, 77, 0, 0, 3356, 3357, 5, 79, 0, 0, 3357, 3358, 5, 78, 0, 0, 3358, 3359, 5, 84, 0, 0, 3359, 3360, 5, 72, 0, 0, 3360, 582, 1, 0, 0, 0, 3361, 3362, 5, 77, 0, 0, 3362, 3363, 5, 84, 0, 0, 3363, 3364, 5, 77, 0, 0, 3364, 3365, 5, 86, 0, 0, 3365, 584, 1, 0, 0, 0, 3366, 3367, 5, 78, 0, 0, 3367, 3368, 5, 65, 0, 0, 3368, 3369, 5, 77, 0, 0, 3369, 3370, 5, 69, 0, 0, 3370, 586, 1, 0, 0, 0, 3371, 3372, 5, 78, 0, 0, 3372, 3373, 5, 65, 0, 0, 3373, 3374, 5, 77, 0, 0, 3374, 3375, 5, 69, 0, 0, 3375, 3376, 5, 83, 0, 0, 3376, 588, 1, 0, 0, 0, 3377, 3378, 5, 78, 0, 0, 3378, 3379, 5, 65, 0, 0, 3379, 3380, 5, 84, 0, 0, 3380, 3381, 5, 85, 0, 0, 3381, 3382, 5, 82, 0, 0, 3382, 3383, 5, 65, 0, 0, 3383, 3384, 5, 76, 0, 0, 3384, 590, 1, 0, 0, 0, 3385, 3386, 5, 78, 0, 0, 3386, 3387, 5, 69, 0, 0, 3387, 3388, 5, 71, 0, 0, 3388, 3389, 5, 65, 0, 0, 3389, 3390, 5, 84, 0, 0, 3390, 3391, 5, 73, 0, 0, 3391, 3392, 5, 86, 0, 0, 3392, 3393, 5, 69, 0, 0, 3393, 592, 1, 0, 0, 0, 3394, 3395, 5, 78, 0, 0, 3395, 3396, 5, 69, 0, 0, 3396, 3397, 5, 86, 0, 0, 3397, 3398, 5, 69, 0, 0, 3398, 3399, 5, 82, 0, 0, 3399, 594, 1, 0, 0, 0, 3400, 3401, 5, 78, 0, 0, 3401, 3402, 5, 69, 0, 0, 3402, 3403, 5, 88, 0, 0, 3403, 3404, 5, 84, 0, 0, 3404, 596, 1, 0, 0, 0, 3405, 3406, 5, 78, 0, 0, 3406, 3407, 5, 71, 0, 0, 3407, 3408, 5, 82, 0, 0, 3408, 3409, 5, 65, 0, 0, 3409, 3410, 5, 77, 0, 0, 3410, 3411, 5, 95, 0, 0, 3411, 3412, 5, 66, 0, 0, 3412, 3413, 5, 70, 0, 0, 3413, 598, 1, 0, 0, 0, 3414, 3415, 5, 78, 0, 0, 3415, 3416, 5, 79, 0, 0, 3416, 600, 1, 0, 0, 0, 3417, 3418, 5, 78, 0, 0, 3418, 3419, 5, 79, 0, 0, 3419, 3420, 5, 95, 0, 0, 3420, 3421, 5, 85, 0, 0, 3421, 3422, 5, 83, 0, 0, 3422, 3423, 5, 69, 0, 0, 3423, 3424, 5, 95, 0, 0, 3424, 3425, 5, 77, 0, 0, 3425, 3426, 5, 86, 0, 0, 3426, 602, 1, 0, 0, 0, 3427, 3428, 5, 78, 0, 0, 3428, 3429, 5, 79, 0, 0, 3429, 3430, 5, 78, 0, 0, 3430, 3431, 5, 95, 0, 0, 3431, 3432, 5, 78, 0, 0, 3432, 3433, 5, 85, 0, 0, 3433, 3434, 5, 76, 0, 0, 3434, 3435, 5, 76, 0, 0, 3435, 3436, 5, 65, 0, 0, 3436, 3437, 5, 66, 0, 0, 3437, 3438, 5, 76, 0, 0, 3438, 3439, 5, 69, 0, 0, 3439, 604, 1, 0, 0, 0, 3440, 3441, 5, 78, 0, 0, 3441, 3442, 5, 79, 0, 0, 3442, 3443, 5, 84, 0, 0, 3443, 606, 1, 0, 0, 0, 3444, 3445, 5, 78, 0, 0, 3445, 3446, 5, 85, 0, 0, 3446, 3447, 5, 76, 0, 0, 3447, 3448, 5, 76, 0, 0, 3448, 608, 1, 0, 0, 0, 3449, 3450, 5, 78, 0, 0, 3450, 3451, 5, 85, 0, 0, 3451, 3452, 5, 76, 0, 0, 3452, 3453, 5, 76, 0, 0, 3453, 3454, 5, 83, 0, 0, 3454, 610, 1, 0, 0, 0, 3455, 3456, 5, 79, 0, 0, 3456, 3457, 5, 66, 0, 0, 3457, 3458, 5, 83, 0, 0, 3458, 3459, 5, 69, 0, 0, 3459, 3460, 5, 82, 0, 0, 3460, 3461, 5, 86, 0, 0, 3461, 3462, 5, 69, 0, 0, 3462, 3463, 5, 82, 0, 0, 3463, 612, 1, 0, 0, 0, 3464, 3465, 5, 79, 0, 0, 3465, 3466, 5, 70, 0, 0, 3466, 614, 1, 0, 0, 0, 3467, 3468, 5, 79, 0, 0, 3468, 3469, 5, 70, 0, 0, 3469, 3470, 5, 70, 0, 0, 3470, 3471, 5, 83, 0, 0, 3471, 3472, 5, 69, 0, 0, 3472, 3473, 5, 84, 0, 0, 3473, 616, 1, 0, 0, 0, 3474, 3475, 5, 79, 0, 0, 3475, 3476, 5, 78, 0, 0, 3476, 618, 1, 0, 0, 0, 3477, 3478, 5, 79, 0, 0, 3478, 3479, 5, 78, 0, 0, 3479, 3480, 5, 76, 0, 0, 3480, 3481, 5, 89, 0, 0, 3481, 620, 1, 0, 0, 0, 3482, 3483, 5, 79, 0, 0, 3483, 3484, 5, 80, 0, 0, 3484, 3485, 5, 69, 0, 0, 3485, 3486, 5, 78, 0, 0, 3486, 622, 1, 0, 0, 0, 3487, 3488, 5, 79, 0, 0, 3488, 3489, 5, 80, 0, 0, 3489, 3490, 5, 84, 0, 0, 3490, 3491, 5, 73, 0, 0, 3491, 3492, 5, 77, 0, 0, 3492, 3493, 5, 73, 0, 0, 3493, 3494, 5, 90, 0, 0, 3494, 3495, 5, 69, 0, 0, 3495, 3496, 5, 68, 0, 0, 3496, 624, 1, 0, 0, 0, 3497, 3498, 5, 79, 0, 0, 3498, 3499, 5, 82, 0, 0, 3499, 626, 1, 0, 0, 0, 3500, 3501, 5, 79, 0, 0, 3501, 3502, 5, 82, 0, 0, 3502, 3503, 5, 68, 0, 0, 3503, 3504, 5, 69, 0, 0, 3504, 3505, 5, 82, 0, 0, 3505, 628, 1, 0, 0, 0, 3506, 3507, 5, 79, 0, 0, 3507, 3508, 5, 85, 0, 0, 3508, 3509, 5, 84, 0, 0, 3509, 3510, 5, 69, 0, 0, 3510, 3511, 5, 82, 0, 0, 3511, 630, 1, 0, 0, 0, 3512, 3513, 5, 79, 0, 0, 3513, 3514, 5, 85, 0, 0, 3514, 3515, 5, 84, 0, 0, 3515, 3516, 5, 70, 0, 0, 3516, 3517, 5, 73, 0, 0, 3517, 3518, 5, 76, 0, 0, 3518, 3519, 5, 69, 0, 0, 3519, 632, 1, 0, 0, 0, 3520, 3521, 5, 79, 0, 0, 3521, 3522, 5, 86, 0, 0, 3522, 3523, 5, 69, 0, 0, 3523, 3524, 5, 82, 0, 0, 3524, 634, 1, 0, 0, 0, 3525, 3526, 5, 79, 0, 0, 3526, 3527, 5, 86, 0, 0, 3527, 3528, 5, 69, 0, 0, 3528, 3529, 5, 82, 0, 0, 3529, 3530, 5, 87, 0, 0, 3530, 3531, 5, 82, 0, 0, 3531, 3532, 5, 73, 0, 0, 3532, 3533, 5, 84, 0, 0, 3533, 3534, 5, 69, 0, 0, 3534, 636, 1, 0, 0, 0, 3535, 3536, 5, 80, 0, 0, 3536, 3537, 5, 65, 0, 0, 3537, 3538, 5, 82, 0, 0, 3538, 3539, 5, 65, 0, 0, 3539, 3540, 5, 77, 0, 0, 3540, 3541, 5, 69, 0, 0, 3541, 3542, 5, 84, 0, 0, 3542, 3543, 5, 69, 0, 0, 3543, 3544, 5, 82, 0, 0, 3544, 638, 1, 0, 0, 0, 3545, 3546, 5, 80, 0, 0, 3546, 3547, 5, 65, 0, 0, 3547, 3548, 5, 82, 0, 0, 3548, 3549, 5, 83, 0, 0, 3549, 3550, 5, 69, 0, 0, 3550, 3551, 5, 68, 0, 0, 3551, 640, 1, 0, 0, 0, 3552, 3553, 5, 80, 0, 0, 3553, 3554, 5, 65, 0, 0, 3554, 3555, 5, 82, 0, 0, 3555, 3556, 5, 84, 0, 0, 3556, 3557, 5, 73, 0, 0, 3557, 3558, 5, 84, 0, 0, 3558, 3559, 5, 73, 0, 0, 3559, 3560, 5, 79, 0, 0, 3560, 3561, 5, 78, 0, 0, 3561, 642, 1, 0, 0, 0, 3562, 3563, 5, 80, 0, 0, 3563, 3564, 5, 65, 0, 0, 3564, 3565, 5, 82, 0, 0, 3565, 3566, 5, 84, 0, 0, 3566, 3567, 5, 73, 0, 0, 3567, 3568, 5, 84, 0, 0, 3568, 3569, 5, 73, 0, 0, 3569, 3570, 5, 79, 0, 0, 3570, 3571, 5, 78, 0, 0, 3571, 3572, 5, 83, 0, 0, 3572, 644, 1, 0, 0, 0, 3573, 3574, 5, 80, 0, 0, 3574, 3575, 5, 65, 0, 0, 3575, 3576, 5, 83, 0, 0, 3576, 3577, 5, 83, 0, 0, 3577, 3578, 5, 87, 0, 0, 3578, 3579, 5, 79, 0, 0, 3579, 3580, 5, 82, 0, 0, 3580, 3581, 5, 68, 0, 0, 3581, 646, 1, 0, 0, 0, 3582, 3583, 5, 80, 0, 0, 3583, 3584, 5, 65, 0, 0, 3584, 3585, 5, 83, 0, 0, 3585, 3586, 5, 83, 0, 0, 3586, 3587, 5, 87, 0, 0, 3587, 3588, 5, 79, 0, 0, 3588, 3589, 5, 82, 0, 0, 3589, 3590, 5, 68, 0, 0, 3590, 3591, 5, 95, 0, 0, 3591, 3592, 5, 69, 0, 0, 3592, 3593, 5, 88, 0, 0, 3593, 3594, 5, 80, 0, 0, 3594, 3595, 5, 73, 0, 0, 3595, 3596, 5, 82, 0, 0, 3596, 3597, 5, 69, 0, 0, 3597, 648, 1, 0, 0, 0, 3598, 3599, 5, 80, 0, 0, 3599, 3600, 5, 65, 0, 0, 3600, 3601, 5, 83, 0, 0, 3601, 3602, 5, 83, 0, 0, 3602, 3603, 5, 87, 0, 0, 3603, 3604, 5, 79, 0, 0, 3604, 3605, 5, 82, 0, 0, 3605, 3606, 5, 68, 0, 0, 3606, 3607, 5, 95, 0, 0, 3607, 3608, 5, 72, 0, 0, 3608, 3609, 5, 73, 0, 0, 3609, 3610, 5, 83, 0, 0, 3610, 3611, 5, 84, 0, 0, 3611, 3612, 5, 79, 0, 0, 3612, 3613, 5, 82, 0, 0, 3613, 3614, 5, 89, 0, 0, 3614, 650, 1, 0, 0, 0, 3615, 3616, 5, 80, 0, 0, 3616, 3617, 5, 65, 0, 0, 3617, 3618, 5, 83, 0, 0, 3618, 3619, 5, 83, 0, 0, 3619, 3620, 5, 87, 0, 0, 3620, 3621, 5, 79, 0, 0, 3621, 3622, 5, 82, 0, 0, 3622, 3623, 5, 68, 0, 0, 3623, 3624, 5, 95, 0, 0, 3624, 3625, 5, 76, 0, 0, 3625, 3626, 5, 79, 0, 0, 3626, 3627, 5, 67, 0, 0, 3627, 3628, 5, 75, 0, 0, 3628, 3629, 5, 95, 0, 0, 3629, 3630, 5, 84, 0, 0, 3630, 3631, 5, 73, 0, 0, 3631, 3632, 5, 77, 0, 0, 3632, 3633, 5, 69, 0, 0, 3633, 652, 1, 0, 0, 0, 3634, 3635, 5, 80, 0, 0, 3635, 3636, 5, 65, 0, 0, 3636, 3637, 5, 83, 0, 0, 3637, 3638, 5, 83, 0, 0, 3638, 3639, 5, 87, 0, 0, 3639, 3640, 5, 79, 0, 0, 3640, 3641, 5, 82, 0, 0, 3641, 3642, 5, 68, 0, 0, 3642, 3643, 5, 95, 0, 0, 3643, 3644, 5, 82, 0, 0, 3644, 3645, 5, 69, 0, 0, 3645, 3646, 5, 85, 0, 0, 3646, 3647, 5, 83, 0, 0, 3647, 3648, 5, 69, 0, 0, 3648, 654, 1, 0, 0, 0, 3649, 3650, 5, 80, 0, 0, 3650, 3651, 5, 65, 0, 0, 3651, 3652, 5, 84, 0, 0, 3652, 3653, 5, 72, 0, 0, 3653, 656, 1, 0, 0, 0, 3654, 3655, 5, 80, 0, 0, 3655, 3656, 5, 65, 0, 0, 3656, 3657, 5, 85, 0, 0, 3657, 3658, 5, 83, 0, 0, 3658, 3659, 5, 69, 0, 0, 3659, 658, 1, 0, 0, 0, 3660, 3661, 5, 80, 0, 0, 3661, 3662, 5, 69, 0, 0, 3662, 3663, 5, 82, 0, 0, 3663, 3664, 5, 67, 0, 0, 3664, 3665, 5, 69, 0, 0, 3665, 3666, 5, 78, 0, 0, 3666, 3667, 5, 84, 0, 0, 3667, 660, 1, 0, 0, 0, 3668, 3669, 5, 80, 0, 0, 3669, 3670, 5, 69, 0, 0, 3670, 3671, 5, 82, 0, 0, 3671, 3672, 5, 73, 0, 0, 3672, 3673, 5, 79, 0, 0, 3673, 3674, 5, 68, 0, 0, 3674, 662, 1, 0, 0, 0, 3675, 3676, 5, 80, 0, 0, 3676, 3677, 5, 69, 0, 0, 3677, 3678, 5, 82, 0, 0, 3678, 3679, 5, 77, 0, 0, 3679, 3680, 5, 73, 0, 0, 3680, 3681, 5, 83, 0, 0, 3681, 3682, 5, 83, 0, 0, 3682, 3683, 5, 73, 0, 0, 3683, 3684, 5, 86, 0, 0, 3684, 3685, 5, 69, 0, 0, 3685, 664, 1, 0, 0, 0, 3686, 3687, 5, 80, 0, 0, 3687, 3688, 5, 72, 0, 0, 3688, 3689, 5, 89, 0, 0, 3689, 3690, 5, 83, 0, 0, 3690, 3691, 5, 73, 0, 0, 3691, 3692, 5, 67, 0, 0, 3692, 3693, 5, 65, 0, 0, 3693, 3694, 5, 76, 0, 0, 3694, 666, 1, 0, 0, 0, 3695, 3696, 5, 80, 0, 0, 3696, 3697, 5, 73, 0, 0, 3697, 668, 1, 0, 0, 0, 3698, 3699, 5, 63, 0, 0, 3699, 670, 1, 0, 0, 0, 3700, 3701, 5, 80, 0, 0, 3701, 3702, 5, 76, 0, 0, 3702, 3703, 5, 65, 0, 0, 3703, 3704, 5, 78, 0, 0, 3704, 672, 1, 0, 0, 0, 3705, 3706, 5, 80, 0, 0, 3706, 3707, 5, 76, 0, 0, 3707, 3708, 5, 65, 0, 0, 3708, 3709, 5, 89, 0, 0, 3709, 674, 1, 0, 0, 0, 3710, 3711, 5, 80, 0, 0, 3711, 3712, 5, 82, 0, 0, 3712, 3713, 5, 73, 0, 0, 3713, 3714, 5, 86, 0, 0, 3714, 3715, 5, 73, 0, 0, 3715, 3716, 5, 76, 0, 0, 3716, 3717, 5, 69, 0, 0, 3717, 3718, 5, 71, 0, 0, 3718, 3719, 5, 69, 0, 0, 3719, 3720, 5, 83, 0, 0, 3720, 676, 1, 0, 0, 0, 3721, 3722, 5, 80, 0, 0, 3722, 3723, 5, 82, 0, 0, 3723, 3724, 5, 79, 0, 0, 3724, 3725, 5, 67, 0, 0, 3725, 3726, 5, 69, 0, 0, 3726, 3727, 5, 83, 0, 0, 3727, 3728, 5, 83, 0, 0, 3728, 678, 1, 0, 0, 0, 3729, 3730, 5, 80, 0, 0, 3730, 3731, 5, 76, 0, 0, 3731, 3732, 5, 85, 0, 0, 3732, 3733, 5, 71, 0, 0, 3733, 3734, 5, 73, 0, 0, 3734, 3735, 5, 78, 0, 0, 3735, 680, 1, 0, 0, 0, 3736, 3737, 5, 80, 0, 0, 3737, 3738, 5, 76, 0, 0, 3738, 3739, 5, 85, 0, 0, 3739, 3740, 5, 71, 0, 0, 3740, 3741, 5, 73, 0, 0, 3741, 3742, 5, 78, 0, 0, 3742, 3743, 5, 83, 0, 0, 3743, 682, 1, 0, 0, 0, 3744, 3745, 5, 80, 0, 0, 3745, 3746, 5, 79, 0, 0, 3746, 3747, 5, 76, 0, 0, 3747, 3748, 5, 73, 0, 0, 3748, 3749, 5, 67, 0, 0, 3749, 3750, 5, 89, 0, 0, 3750, 684, 1, 0, 0, 0, 3751, 3752, 5, 80, 0, 0, 3752, 3753, 5, 82, 0, 0, 3753, 3754, 5, 69, 0, 0, 3754, 3755, 5, 67, 0, 0, 3755, 3756, 5, 69, 0, 0, 3756, 3757, 5, 68, 0, 0, 3757, 3758, 5, 73, 0, 0, 3758, 3759, 5, 78, 0, 0, 3759, 3760, 5, 71, 0, 0, 3760, 686, 1, 0, 0, 0, 3761, 3762, 5, 80, 0, 0, 3762, 3763, 5, 82, 0, 0, 3763, 3764, 5, 69, 0, 0, 3764, 3765, 5, 80, 0, 0, 3765, 3766, 5, 65, 0, 0, 3766, 3767, 5, 82, 0, 0, 3767, 3768, 5, 69, 0, 0, 3768, 688, 1, 0, 0, 0, 3769, 3770, 5, 80, 0, 0, 3770, 3771, 5, 82, 0, 0, 3771, 3772, 5, 73, 0, 0, 3772, 3773, 5, 77, 0, 0, 3773, 3774, 5, 65, 0, 0, 3774, 3775, 5, 82, 0, 0, 3775, 3776, 5, 89, 0, 0, 3776, 690, 1, 0, 0, 0, 3777, 3778, 5, 80, 0, 0, 3778, 3779, 5, 82, 0, 0, 3779, 3780, 5, 79, 0, 0, 3780, 3781, 5, 67, 0, 0, 3781, 692, 1, 0, 0, 0, 3782, 3783, 5, 80, 0, 0, 3783, 3784, 5, 82, 0, 0, 3784, 3785, 5, 79, 0, 0, 3785, 3786, 5, 67, 0, 0, 3786, 3787, 5, 69, 0, 0, 3787, 3788, 5, 68, 0, 0, 3788, 3789, 5, 85, 0, 0, 3789, 3790, 5, 82, 0, 0, 3790, 3791, 5, 69, 0, 0, 3791, 694, 1, 0, 0, 0, 3792, 3793, 5, 80, 0, 0, 3793, 3794, 5, 82, 0, 0, 3794, 3795, 5, 79, 0, 0, 3795, 3796, 5, 67, 0, 0, 3796, 3797, 5, 69, 0, 0, 3797, 3798, 5, 83, 0, 0, 3798, 3799, 5, 83, 0, 0, 3799, 3800, 5, 76, 0, 0, 3800, 3801, 5, 73, 0, 0, 3801, 3802, 5, 83, 0, 0, 3802, 3803, 5, 84, 0, 0, 3803, 696, 1, 0, 0, 0, 3804, 3805, 5, 80, 0, 0, 3805, 3806, 5, 82, 0, 0, 3806, 3807, 5, 79, 0, 0, 3807, 3808, 5, 70, 0, 0, 3808, 3809, 5, 73, 0, 0, 3809, 3810, 5, 76, 0, 0, 3810, 3811, 5, 69, 0, 0, 3811, 698, 1, 0, 0, 0, 3812, 3813, 5, 80, 0, 0, 3813, 3814, 5, 82, 0, 0, 3814, 3815, 5, 79, 0, 0, 3815, 3816, 5, 80, 0, 0, 3816, 3817, 5, 69, 0, 0, 3817, 3818, 5, 82, 0, 0, 3818, 3819, 5, 84, 0, 0, 3819, 3820, 5, 73, 0, 0, 3820, 3821, 5, 69, 0, 0, 3821, 3822, 5, 83, 0, 0, 3822, 700, 1, 0, 0, 0, 3823, 3824, 5, 80, 0, 0, 3824, 3825, 5, 82, 0, 0, 3825, 3826, 5, 79, 0, 0, 3826, 3827, 5, 80, 0, 0, 3827, 3828, 5, 69, 0, 0, 3828, 3829, 5, 82, 0, 0, 3829, 3830, 5, 84, 0, 0, 3830, 3831, 5, 89, 0, 0, 3831, 702, 1, 0, 0, 0, 3832, 3833, 5, 81, 0, 0, 3833, 3834, 5, 85, 0, 0, 3834, 3835, 5, 65, 0, 0, 3835, 3836, 5, 78, 0, 0, 3836, 3837, 5, 84, 0, 0, 3837, 3838, 5, 73, 0, 0, 3838, 3839, 5, 76, 0, 0, 3839, 3840, 5, 69, 0, 0, 3840, 3841, 5, 95, 0, 0, 3841, 3842, 5, 83, 0, 0, 3842, 3843, 5, 84, 0, 0, 3843, 3844, 5, 65, 0, 0, 3844, 3845, 5, 84, 0, 0, 3845, 3846, 5, 69, 0, 0, 3846, 704, 1, 0, 0, 0, 3847, 3848, 5, 81, 0, 0, 3848, 3849, 5, 85, 0, 0, 3849, 3850, 5, 65, 0, 0, 3850, 3851, 5, 78, 0, 0, 3851, 3852, 5, 84, 0, 0, 3852, 3853, 5, 73, 0, 0, 3853, 3854, 5, 76, 0, 0, 3854, 3855, 5, 69, 0, 0, 3855, 3856, 5, 95, 0, 0, 3856, 3857, 5, 85, 0, 0, 3857, 3858, 5, 78, 0, 0, 3858, 3859, 5, 73, 0, 0, 3859, 3860, 5, 79, 0, 0, 3860, 3861, 5, 78, 0, 0, 3861, 706, 1, 0, 0, 0, 3862, 3863, 5, 81, 0, 0, 3863, 3864, 5, 85, 0, 0, 3864, 3865, 5, 69, 0, 0, 3865, 3866, 5, 82, 0, 0, 3866, 3867, 5, 89, 0, 0, 3867, 708, 1, 0, 0, 0, 3868, 3869, 5, 81, 0, 0, 3869, 3870, 5, 85, 0, 0, 3870, 3871, 5, 69, 0, 0, 3871, 3872, 5, 85, 0, 0, 3872, 3873, 5, 69, 0, 0, 3873, 3874, 5, 68, 0, 0, 3874, 710, 1, 0, 0, 0, 3875, 3876, 5, 81, 0, 0, 3876, 3877, 5, 85, 0, 0, 3877, 3878, 5, 79, 0, 0, 3878, 3879, 5, 84, 0, 0, 3879, 3880, 5, 65, 0, 0, 3880, 712, 1, 0, 0, 0, 3881, 3882, 5, 81, 0, 0, 3882, 3883, 5, 85, 0, 0, 3883, 3884, 5, 65, 0, 0, 3884, 3885, 5, 76, 0, 0, 3885, 3886, 5, 73, 0, 0, 3886, 3887, 5, 70, 0, 0, 3887, 3888, 5, 89, 0, 0, 3888, 714, 1, 0, 0, 0, 3889, 3890, 5, 81, 0, 0, 3890, 3891, 5, 85, 0, 0, 3891, 3892, 5, 65, 0, 0, 3892, 3893, 5, 82, 0, 0, 3893, 3894, 5, 84, 0, 0, 3894, 3895, 5, 69, 0, 0, 3895, 3896, 5, 82, 0, 0, 3896, 716, 1, 0, 0, 0, 3897, 3898, 5, 82, 0, 0, 3898, 3899, 5, 65, 0, 0, 3899, 3900, 5, 78, 0, 0, 3900, 3901, 5, 68, 0, 0, 3901, 3902, 5, 79, 0, 0, 3902, 3903, 5, 77, 0, 0, 3903, 718, 1, 0, 0, 0, 3904, 3905, 5, 82, 0, 0, 3905, 3906, 5, 65, 0, 0, 3906, 3907, 5, 78, 0, 0, 3907, 3908, 5, 71, 0, 0, 3908, 3909, 5, 69, 0, 0, 3909, 720, 1, 0, 0, 0, 3910, 3911, 5, 82, 0, 0, 3911, 3912, 5, 69, 0, 0, 3912, 3913, 5, 65, 0, 0, 3913, 3914, 5, 68, 0, 0, 3914, 722, 1, 0, 0, 0, 3915, 3916, 5, 82, 0, 0, 3916, 3917, 5, 69, 0, 0, 3917, 3918, 5, 65, 0, 0, 3918, 3919, 5, 76, 0, 0, 3919, 724, 1, 0, 0, 0, 3920, 3921, 5, 82, 0, 0, 3921, 3922, 5, 69, 0, 0, 3922, 3923, 5, 66, 0, 0, 3923, 3924, 5, 65, 0, 0, 3924, 3925, 5, 76, 0, 0, 3925, 3926, 5, 65, 0, 0, 3926, 3927, 5, 78, 0, 0, 3927, 3928, 5, 67, 0, 0, 3928, 3929, 5, 69, 0, 0, 3929, 726, 1, 0, 0, 0, 3930, 3931, 5, 82, 0, 0, 3931, 3932, 5, 69, 0, 0, 3932, 3933, 5, 67, 0, 0, 3933, 3934, 5, 69, 0, 0, 3934, 3935, 5, 78, 0, 0, 3935, 3936, 5, 84, 0, 0, 3936, 728, 1, 0, 0, 0, 3937, 3938, 5, 82, 0, 0, 3938, 3939, 5, 69, 0, 0, 3939, 3940, 5, 67, 0, 0, 3940, 3941, 5, 79, 0, 0, 3941, 3942, 5, 86, 0, 0, 3942, 3943, 5, 69, 0, 0, 3943, 3944, 5, 82, 0, 0, 3944, 730, 1, 0, 0, 0, 3945, 3946, 5, 82, 0, 0, 3946, 3947, 5, 69, 0, 0, 3947, 3948, 5, 67, 0, 0, 3948, 3949, 5, 89, 0, 0, 3949, 3950, 5, 67, 0, 0, 3950, 3951, 5, 76, 0, 0, 3951, 3952, 5, 69, 0, 0, 3952, 732, 1, 0, 0, 0, 3953, 3954, 5, 82, 0, 0, 3954, 3955, 5, 69, 0, 0, 3955, 3956, 5, 70, 0, 0, 3956, 3957, 5, 82, 0, 0, 3957, 3958, 5, 69, 0, 0, 3958, 3959, 5, 83, 0, 0, 3959, 3960, 5, 72, 0, 0, 3960, 734, 1, 0, 0, 0, 3961, 3962, 5, 82, 0, 0, 3962, 3963, 5, 69, 0, 0, 3963, 3964, 5, 70, 0, 0, 3964, 3965, 5, 69, 0, 0, 3965, 3966, 5, 82, 0, 0, 3966, 3967, 5, 69, 0, 0, 3967, 3968, 5, 78, 0, 0, 3968, 3969, 5, 67, 0, 0, 3969, 3970, 5, 69, 0, 0, 3970, 3971, 5, 83, 0, 0, 3971, 736, 1, 0, 0, 0, 3972, 3973, 5, 82, 0, 0, 3973, 3974, 5, 69, 0, 0, 3974, 3975, 5, 71, 0, 0, 3975, 3976, 5, 69, 0, 0, 3976, 3977, 5, 88, 0, 0, 3977, 3978, 5, 80, 0, 0, 3978, 738, 1, 0, 0, 0, 3979, 3980, 5, 82, 0, 0, 3980, 3981, 5, 69, 0, 0, 3981, 3982, 5, 76, 0, 0, 3982, 3983, 5, 69, 0, 0, 3983, 3984, 5, 65, 0, 0, 3984, 3985, 5, 83, 0, 0, 3985, 3986, 5, 69, 0, 0, 3986, 740, 1, 0, 0, 0, 3987, 3988, 5, 82, 0, 0, 3988, 3989, 5, 69, 0, 0, 3989, 3990, 5, 78, 0, 0, 3990, 3991, 5, 65, 0, 0, 3991, 3992, 5, 77, 0, 0, 3992, 3993, 5, 69, 0, 0, 3993, 742, 1, 0, 0, 0, 3994, 3995, 5, 82, 0, 0, 3995, 3996, 5, 69, 0, 0, 3996, 3997, 5, 80, 0, 0, 3997, 3998, 5, 65, 0, 0, 3998, 3999, 5, 73, 0, 0, 3999, 4000, 5, 82, 0, 0, 4000, 744, 1, 0, 0, 0, 4001, 4002, 5, 82, 0, 0, 4002, 4003, 5, 69, 0, 0, 4003, 4004, 5, 80, 0, 0, 4004, 4005, 5, 69, 0, 0, 4005, 4006, 5, 65, 0, 0, 4006, 4007, 5, 84, 0, 0, 4007, 4008, 5, 65, 0, 0, 4008, 4009, 5, 66, 0, 0, 4009, 4010, 5, 76, 0, 0, 4010, 4011, 5, 69, 0, 0, 4011, 746, 1, 0, 0, 0, 4012, 4013, 5, 82, 0, 0, 4013, 4014, 5, 69, 0, 0, 4014, 4015, 5, 80, 0, 0, 4015, 4016, 5, 76, 0, 0, 4016, 4017, 5, 65, 0, 0, 4017, 4018, 5, 67, 0, 0, 4018, 4019, 5, 69, 0, 0, 4019, 748, 1, 0, 0, 0, 4020, 4021, 5, 82, 0, 0, 4021, 4022, 5, 69, 0, 0, 4022, 4023, 5, 80, 0, 0, 4023, 4024, 5, 76, 0, 0, 4024, 4025, 5, 65, 0, 0, 4025, 4026, 5, 67, 0, 0, 4026, 4027, 5, 69, 0, 0, 4027, 4028, 5, 95, 0, 0, 4028, 4029, 5, 73, 0, 0, 4029, 4030, 5, 70, 0, 0, 4030, 4031, 5, 95, 0, 0, 4031, 4032, 5, 78, 0, 0, 4032, 4033, 5, 79, 0, 0, 4033, 4034, 5, 84, 0, 0, 4034, 4035, 5, 95, 0, 0, 4035, 4036, 5, 78, 0, 0, 4036, 4037, 5, 85, 0, 0, 4037, 4038, 5, 76, 0, 0, 4038, 4039, 5, 76, 0, 0, 4039, 750, 1, 0, 0, 0, 4040, 4041, 5, 82, 0, 0, 4041, 4042, 5, 69, 0, 0, 4042, 4043, 5, 80, 0, 0, 4043, 4044, 5, 76, 0, 0, 4044, 4045, 5, 65, 0, 0, 4045, 4046, 5, 89, 0, 0, 4046, 4047, 5, 69, 0, 0, 4047, 4048, 5, 82, 0, 0, 4048, 752, 1, 0, 0, 0, 4049, 4050, 5, 82, 0, 0, 4050, 4051, 5, 69, 0, 0, 4051, 4052, 5, 80, 0, 0, 4052, 4053, 5, 76, 0, 0, 4053, 4054, 5, 73, 0, 0, 4054, 4055, 5, 67, 0, 0, 4055, 4056, 5, 65, 0, 0, 4056, 754, 1, 0, 0, 0, 4057, 4058, 5, 82, 0, 0, 4058, 4059, 5, 69, 0, 0, 4059, 4060, 5, 80, 0, 0, 4060, 4061, 5, 79, 0, 0, 4061, 4062, 5, 83, 0, 0, 4062, 4063, 5, 73, 0, 0, 4063, 4064, 5, 84, 0, 0, 4064, 4065, 5, 79, 0, 0, 4065, 4066, 5, 82, 0, 0, 4066, 4067, 5, 73, 0, 0, 4067, 4068, 5, 69, 0, 0, 4068, 4069, 5, 83, 0, 0, 4069, 756, 1, 0, 0, 0, 4070, 4071, 5, 82, 0, 0, 4071, 4072, 5, 69, 0, 0, 4072, 4073, 5, 80, 0, 0, 4073, 4074, 5, 79, 0, 0, 4074, 4075, 5, 83, 0, 0, 4075, 4076, 5, 73, 0, 0, 4076, 4077, 5, 84, 0, 0, 4077, 4078, 5, 79, 0, 0, 4078, 4079, 5, 82, 0, 0, 4079, 4080, 5, 89, 0, 0, 4080, 758, 1, 0, 0, 0, 4081, 4082, 5, 82, 0, 0, 4082, 4083, 5, 69, 0, 0, 4083, 4084, 5, 83, 0, 0, 4084, 4085, 5, 79, 0, 0, 4085, 4086, 5, 85, 0, 0, 4086, 4087, 5, 82, 0, 0, 4087, 4088, 5, 67, 0, 0, 4088, 4089, 5, 69, 0, 0, 4089, 760, 1, 0, 0, 0, 4090, 4091, 5, 82, 0, 0, 4091, 4092, 5, 69, 0, 0, 4092, 4093, 5, 83, 0, 0, 4093, 4094, 5, 79, 0, 0, 4094, 4095, 5, 85, 0, 0, 4095, 4096, 5, 82, 0, 0, 4096, 4097, 5, 67, 0, 0, 4097, 4098, 5, 69, 0, 0, 4098, 4099, 5, 83, 0, 0, 4099, 762, 1, 0, 0, 0, 4100, 4101, 5, 82, 0, 0, 4101, 4102, 5, 69, 0, 0, 4102, 4103, 5, 83, 0, 0, 4103, 4104, 5, 84, 0, 0, 4104, 4105, 5, 79, 0, 0, 4105, 4106, 5, 82, 0, 0, 4106, 4107, 5, 69, 0, 0, 4107, 764, 1, 0, 0, 0, 4108, 4109, 5, 82, 0, 0, 4109, 4110, 5, 69, 0, 0, 4110, 4111, 5, 83, 0, 0, 4111, 4112, 5, 84, 0, 0, 4112, 4113, 5, 82, 0, 0, 4113, 4114, 5, 73, 0, 0, 4114, 4115, 5, 67, 0, 0, 4115, 4116, 5, 84, 0, 0, 4116, 4117, 5, 73, 0, 0, 4117, 4118, 5, 86, 0, 0, 4118, 4119, 5, 69, 0, 0, 4119, 766, 1, 0, 0, 0, 4120, 4121, 5, 82, 0, 0, 4121, 4122, 5, 69, 0, 0, 4122, 4123, 5, 83, 0, 0, 4123, 4124, 5, 85, 0, 0, 4124, 4125, 5, 77, 0, 0, 4125, 4126, 5, 69, 0, 0, 4126, 768, 1, 0, 0, 0, 4127, 4128, 5, 82, 0, 0, 4128, 4129, 5, 69, 0, 0, 4129, 4130, 5, 84, 0, 0, 4130, 4131, 5, 85, 0, 0, 4131, 4132, 5, 82, 0, 0, 4132, 4133, 5, 78, 0, 0, 4133, 4134, 5, 83, 0, 0, 4134, 770, 1, 0, 0, 0, 4135, 4136, 5, 82, 0, 0, 4136, 4137, 5, 69, 0, 0, 4137, 4138, 5, 86, 0, 0, 4138, 4139, 5, 79, 0, 0, 4139, 4140, 5, 75, 0, 0, 4140, 4141, 5, 69, 0, 0, 4141, 772, 1, 0, 0, 0, 4142, 4143, 5, 82, 0, 0, 4143, 4144, 5, 69, 0, 0, 4144, 4145, 5, 87, 0, 0, 4145, 4146, 5, 82, 0, 0, 4146, 4147, 5, 73, 0, 0, 4147, 4148, 5, 84, 0, 0, 4148, 4149, 5, 84, 0, 0, 4149, 4150, 5, 69, 0, 0, 4150, 4151, 5, 78, 0, 0, 4151, 774, 1, 0, 0, 0, 4152, 4153, 5, 82, 0, 0, 4153, 4154, 5, 73, 0, 0, 4154, 4155, 5, 71, 0, 0, 4155, 4156, 5, 72, 0, 0, 4156, 4157, 5, 84, 0, 0, 4157, 776, 1, 0, 0, 0, 4158, 4159, 5, 82, 0, 0, 4159, 4160, 5, 76, 0, 0, 4160, 4161, 5, 73, 0, 0, 4161, 4162, 5, 75, 0, 0, 4162, 4163, 5, 69, 0, 0, 4163, 778, 1, 0, 0, 0, 4164, 4165, 5, 82, 0, 0, 4165, 4166, 5, 79, 0, 0, 4166, 4167, 5, 76, 0, 0, 4167, 4168, 5, 69, 0, 0, 4168, 780, 1, 0, 0, 0, 4169, 4170, 5, 82, 0, 0, 4170, 4171, 5, 79, 0, 0, 4171, 4172, 5, 76, 0, 0, 4172, 4173, 5, 69, 0, 0, 4173, 4174, 5, 83, 0, 0, 4174, 782, 1, 0, 0, 0, 4175, 4176, 5, 82, 0, 0, 4176, 4177, 5, 79, 0, 0, 4177, 4178, 5, 76, 0, 0, 4178, 4179, 5, 76, 0, 0, 4179, 4180, 5, 66, 0, 0, 4180, 4181, 5, 65, 0, 0, 4181, 4182, 5, 67, 0, 0, 4182, 4183, 5, 75, 0, 0, 4183, 784, 1, 0, 0, 0, 4184, 4185, 5, 82, 0, 0, 4185, 4186, 5, 79, 0, 0, 4186, 4187, 5, 76, 0, 0, 4187, 4188, 5, 76, 0, 0, 4188, 4189, 5, 85, 0, 0, 4189, 4190, 5, 80, 0, 0, 4190, 786, 1, 0, 0, 0, 4191, 4192, 5, 82, 0, 0, 4192, 4193, 5, 79, 0, 0, 4193, 4194, 5, 85, 0, 0, 4194, 4195, 5, 84, 0, 0, 4195, 4196, 5, 73, 0, 0, 4196, 4197, 5, 78, 0, 0, 4197, 4198, 5, 69, 0, 0, 4198, 788, 1, 0, 0, 0, 4199, 4200, 5, 82, 0, 0, 4200, 4201, 5, 79, 0, 0, 4201, 4202, 5, 87, 0, 0, 4202, 790, 1, 0, 0, 0, 4203, 4204, 5, 82, 0, 0, 4204, 4205, 5, 79, 0, 0, 4205, 4206, 5, 87, 0, 0, 4206, 4207, 5, 83, 0, 0, 4207, 792, 1, 0, 0, 0, 4208, 4209, 5, 83, 0, 0, 4209, 4210, 5, 51, 0, 0, 4210, 794, 1, 0, 0, 0, 4211, 4212, 5, 83, 0, 0, 4212, 4213, 5, 65, 0, 0, 4213, 4214, 5, 77, 0, 0, 4214, 4215, 5, 80, 0, 0, 4215, 4216, 5, 76, 0, 0, 4216, 4217, 5, 69, 0, 0, 4217, 796, 1, 0, 0, 0, 4218, 4219, 5, 83, 0, 0, 4219, 4220, 5, 67, 0, 0, 4220, 4221, 5, 72, 0, 0, 4221, 4222, 5, 69, 0, 0, 4222, 4223, 5, 68, 0, 0, 4223, 4224, 5, 85, 0, 0, 4224, 4225, 5, 76, 0, 0, 4225, 4226, 5, 69, 0, 0, 4226, 798, 1, 0, 0, 0, 4227, 4228, 5, 83, 0, 0, 4228, 4229, 5, 67, 0, 0, 4229, 4230, 5, 72, 0, 0, 4230, 4231, 5, 69, 0, 0, 4231, 4232, 5, 68, 0, 0, 4232, 4233, 5, 85, 0, 0, 4233, 4234, 5, 76, 0, 0, 4234, 4235, 5, 69, 0, 0, 4235, 4236, 5, 82, 0, 0, 4236, 800, 1, 0, 0, 0, 4237, 4238, 5, 83, 0, 0, 4238, 4239, 5, 67, 0, 0, 4239, 4240, 5, 72, 0, 0, 4240, 4241, 5, 69, 0, 0, 4241, 4242, 5, 77, 0, 0, 4242, 4243, 5, 65, 0, 0, 4243, 802, 1, 0, 0, 0, 4244, 4245, 5, 83, 0, 0, 4245, 4246, 5, 67, 0, 0, 4246, 4247, 5, 72, 0, 0, 4247, 4248, 5, 69, 0, 0, 4248, 4249, 5, 77, 0, 0, 4249, 4250, 5, 65, 0, 0, 4250, 4251, 5, 83, 0, 0, 4251, 804, 1, 0, 0, 0, 4252, 4253, 5, 83, 0, 0, 4253, 4254, 5, 69, 0, 0, 4254, 4255, 5, 67, 0, 0, 4255, 4256, 5, 79, 0, 0, 4256, 4257, 5, 78, 0, 0, 4257, 4258, 5, 68, 0, 0, 4258, 806, 1, 0, 0, 0, 4259, 4260, 5, 83, 0, 0, 4260, 4261, 5, 69, 0, 0, 4261, 4262, 5, 76, 0, 0, 4262, 4263, 5, 69, 0, 0, 4263, 4264, 5, 67, 0, 0, 4264, 4265, 5, 84, 0, 0, 4265, 808, 1, 0, 0, 0, 4266, 4267, 5, 83, 0, 0, 4267, 4268, 5, 69, 0, 0, 4268, 4269, 5, 77, 0, 0, 4269, 4270, 5, 73, 0, 0, 4270, 810, 1, 0, 0, 0, 4271, 4272, 5, 83, 0, 0, 4272, 4273, 5, 69, 0, 0, 4273, 4274, 5, 82, 0, 0, 4274, 4275, 5, 73, 0, 0, 4275, 4276, 5, 65, 0, 0, 4276, 4277, 5, 76, 0, 0, 4277, 4278, 5, 73, 0, 0, 4278, 4279, 5, 90, 0, 0, 4279, 4280, 5, 65, 0, 0, 4280, 4281, 5, 66, 0, 0, 4281, 4282, 5, 76, 0, 0, 4282, 4283, 5, 69, 0, 0, 4283, 812, 1, 0, 0, 0, 4284, 4285, 5, 83, 0, 0, 4285, 4286, 5, 69, 0, 0, 4286, 4287, 5, 83, 0, 0, 4287, 4288, 5, 83, 0, 0, 4288, 4289, 5, 73, 0, 0, 4289, 4290, 5, 79, 0, 0, 4290, 4291, 5, 78, 0, 0, 4291, 814, 1, 0, 0, 0, 4292, 4293, 5, 83, 0, 0, 4293, 4294, 5, 69, 0, 0, 4294, 4295, 5, 83, 0, 0, 4295, 4296, 5, 83, 0, 0, 4296, 4297, 5, 73, 0, 0, 4297, 4298, 5, 79, 0, 0, 4298, 4299, 5, 78, 0, 0, 4299, 4300, 5, 95, 0, 0, 4300, 4301, 5, 85, 0, 0, 4301, 4302, 5, 83, 0, 0, 4302, 4303, 5, 69, 0, 0, 4303, 4304, 5, 82, 0, 0, 4304, 816, 1, 0, 0, 0, 4305, 4306, 5, 83, 0, 0, 4306, 4307, 5, 69, 0, 0, 4307, 4308, 5, 84, 0, 0, 4308, 818, 1, 0, 0, 0, 4309, 4310, 5, 83, 0, 0, 4310, 4311, 5, 69, 0, 0, 4311, 4312, 5, 84, 0, 0, 4312, 4313, 5, 83, 0, 0, 4313, 820, 1, 0, 0, 0, 4314, 4315, 5, 83, 0, 0, 4315, 4316, 5, 69, 0, 0, 4316, 4317, 5, 84, 0, 0, 4317, 4318, 5, 95, 0, 0, 4318, 4319, 5, 83, 0, 0, 4319, 4320, 5, 69, 0, 0, 4320, 4321, 5, 83, 0, 0, 4321, 4322, 5, 83, 0, 0, 4322, 4323, 5, 73, 0, 0, 4323, 4324, 5, 79, 0, 0, 4324, 4325, 5, 78, 0, 0, 4325, 4326, 5, 95, 0, 0, 4326, 4327, 5, 86, 0, 0, 4327, 4328, 5, 65, 0, 0, 4328, 4329, 5, 82, 0, 0, 4329, 4330, 5, 73, 0, 0, 4330, 4331, 5, 65, 0, 0, 4331, 4332, 5, 66, 0, 0, 4332, 4333, 5, 76, 0, 0, 4333, 4334, 5, 69, 0, 0, 4334, 822, 1, 0, 0, 0, 4335, 4336, 5, 83, 0, 0, 4336, 4337, 5, 72, 0, 0, 4337, 4338, 5, 65, 0, 0, 4338, 4339, 5, 80, 0, 0, 4339, 4340, 5, 69, 0, 0, 4340, 824, 1, 0, 0, 0, 4341, 4342, 5, 83, 0, 0, 4342, 4343, 5, 72, 0, 0, 4343, 4344, 5, 79, 0, 0, 4344, 4345, 5, 87, 0, 0, 4345, 826, 1, 0, 0, 0, 4346, 4347, 5, 83, 0, 0, 4347, 4348, 5, 73, 0, 0, 4348, 4349, 5, 71, 0, 0, 4349, 4350, 5, 78, 0, 0, 4350, 4351, 5, 69, 0, 0, 4351, 4352, 5, 68, 0, 0, 4352, 828, 1, 0, 0, 0, 4353, 4354, 5, 83, 0, 0, 4354, 4355, 5, 75, 0, 0, 4355, 4356, 5, 69, 0, 0, 4356, 4357, 5, 87, 0, 0, 4357, 830, 1, 0, 0, 0, 4358, 4359, 5, 83, 0, 0, 4359, 4360, 5, 77, 0, 0, 4360, 4361, 5, 65, 0, 0, 4361, 4362, 5, 76, 0, 0, 4362, 4363, 5, 76, 0, 0, 4363, 4364, 5, 73, 0, 0, 4364, 4365, 5, 78, 0, 0, 4365, 4366, 5, 84, 0, 0, 4366, 832, 1, 0, 0, 0, 4367, 4368, 5, 83, 0, 0, 4368, 4369, 5, 78, 0, 0, 4369, 4370, 5, 65, 0, 0, 4370, 4371, 5, 80, 0, 0, 4371, 4372, 5, 83, 0, 0, 4372, 4373, 5, 72, 0, 0, 4373, 4374, 5, 79, 0, 0, 4374, 4375, 5, 84, 0, 0, 4375, 834, 1, 0, 0, 0, 4376, 4377, 5, 83, 0, 0, 4377, 4378, 5, 79, 0, 0, 4378, 4379, 5, 78, 0, 0, 4379, 4380, 5, 65, 0, 0, 4380, 4381, 5, 77, 0, 0, 4381, 4382, 5, 69, 0, 0, 4382, 836, 1, 0, 0, 0, 4383, 4384, 5, 83, 0, 0, 4384, 4385, 5, 80, 0, 0, 4385, 4386, 5, 76, 0, 0, 4386, 4387, 5, 73, 0, 0, 4387, 4388, 5, 84, 0, 0, 4388, 838, 1, 0, 0, 0, 4389, 4390, 5, 83, 0, 0, 4390, 4391, 5, 81, 0, 0, 4391, 4392, 5, 76, 0, 0, 4392, 840, 1, 0, 0, 0, 4393, 4394, 5, 83, 0, 0, 4394, 4395, 5, 81, 0, 0, 4395, 4396, 5, 76, 0, 0, 4396, 4397, 5, 95, 0, 0, 4397, 4398, 5, 66, 0, 0, 4398, 4399, 5, 76, 0, 0, 4399, 4400, 5, 79, 0, 0, 4400, 4401, 5, 67, 0, 0, 4401, 4402, 5, 75, 0, 0, 4402, 4403, 5, 95, 0, 0, 4403, 4404, 5, 82, 0, 0, 4404, 4405, 5, 85, 0, 0, 4405, 4406, 5, 76, 0, 0, 4406, 4407, 5, 69, 0, 0, 4407, 842, 1, 0, 0, 0, 4408, 4409, 5, 83, 0, 0, 4409, 4410, 5, 84, 0, 0, 4410, 4411, 5, 65, 0, 0, 4411, 4412, 5, 71, 0, 0, 4412, 4413, 5, 69, 0, 0, 4413, 844, 1, 0, 0, 0, 4414, 4415, 5, 83, 0, 0, 4415, 4416, 5, 84, 0, 0, 4416, 4417, 5, 65, 0, 0, 4417, 4418, 5, 71, 0, 0, 4418, 4419, 5, 69, 0, 0, 4419, 4420, 5, 83, 0, 0, 4420, 846, 1, 0, 0, 0, 4421, 4422, 5, 83, 0, 0, 4422, 4423, 5, 84, 0, 0, 4423, 4424, 5, 65, 0, 0, 4424, 4425, 5, 82, 0, 0, 4425, 4426, 5, 84, 0, 0, 4426, 848, 1, 0, 0, 0, 4427, 4428, 5, 83, 0, 0, 4428, 4429, 5, 84, 0, 0, 4429, 4430, 5, 65, 0, 0, 4430, 4431, 5, 82, 0, 0, 4431, 4432, 5, 84, 0, 0, 4432, 4433, 5, 83, 0, 0, 4433, 850, 1, 0, 0, 0, 4434, 4435, 5, 83, 0, 0, 4435, 4436, 5, 84, 0, 0, 4436, 4437, 5, 65, 0, 0, 4437, 4438, 5, 84, 0, 0, 4438, 4439, 5, 83, 0, 0, 4439, 852, 1, 0, 0, 0, 4440, 4441, 5, 83, 0, 0, 4441, 4442, 5, 84, 0, 0, 4442, 4443, 5, 65, 0, 0, 4443, 4444, 5, 84, 0, 0, 4444, 4445, 5, 85, 0, 0, 4445, 4446, 5, 83, 0, 0, 4446, 854, 1, 0, 0, 0, 4447, 4448, 5, 83, 0, 0, 4448, 4449, 5, 84, 0, 0, 4449, 4450, 5, 79, 0, 0, 4450, 4451, 5, 80, 0, 0, 4451, 856, 1, 0, 0, 0, 4452, 4453, 5, 83, 0, 0, 4453, 4454, 5, 84, 0, 0, 4454, 4455, 5, 79, 0, 0, 4455, 4456, 5, 82, 0, 0, 4456, 4457, 5, 65, 0, 0, 4457, 4458, 5, 71, 0, 0, 4458, 4459, 5, 69, 0, 0, 4459, 858, 1, 0, 0, 0, 4460, 4461, 5, 83, 0, 0, 4461, 4462, 5, 84, 0, 0, 4462, 4463, 5, 82, 0, 0, 4463, 4464, 5, 69, 0, 0, 4464, 4465, 5, 65, 0, 0, 4465, 4466, 5, 77, 0, 0, 4466, 860, 1, 0, 0, 0, 4467, 4468, 5, 83, 0, 0, 4468, 4469, 5, 84, 0, 0, 4469, 4470, 5, 82, 0, 0, 4470, 4471, 5, 69, 0, 0, 4471, 4472, 5, 65, 0, 0, 4472, 4473, 5, 77, 0, 0, 4473, 4474, 5, 73, 0, 0, 4474, 4475, 5, 78, 0, 0, 4475, 4476, 5, 71, 0, 0, 4476, 862, 1, 0, 0, 0, 4477, 4478, 5, 83, 0, 0, 4478, 4479, 5, 84, 0, 0, 4479, 4480, 5, 82, 0, 0, 4480, 4481, 5, 73, 0, 0, 4481, 4482, 5, 78, 0, 0, 4482, 4483, 5, 71, 0, 0, 4483, 864, 1, 0, 0, 0, 4484, 4485, 5, 83, 0, 0, 4485, 4486, 5, 84, 0, 0, 4486, 4487, 5, 82, 0, 0, 4487, 4488, 5, 85, 0, 0, 4488, 4489, 5, 67, 0, 0, 4489, 4490, 5, 84, 0, 0, 4490, 866, 1, 0, 0, 0, 4491, 4492, 5, 83, 0, 0, 4492, 4493, 5, 85, 0, 0, 4493, 4494, 5, 77, 0, 0, 4494, 868, 1, 0, 0, 0, 4495, 4496, 5, 83, 0, 0, 4496, 4497, 5, 85, 0, 0, 4497, 4498, 5, 80, 0, 0, 4498, 4499, 5, 69, 0, 0, 4499, 4500, 5, 82, 0, 0, 4500, 4501, 5, 85, 0, 0, 4501, 4502, 5, 83, 0, 0, 4502, 4503, 5, 69, 0, 0, 4503, 4504, 5, 82, 0, 0, 4504, 870, 1, 0, 0, 0, 4505, 4506, 5, 83, 0, 0, 4506, 4507, 5, 87, 0, 0, 4507, 4508, 5, 73, 0, 0, 4508, 4509, 5, 84, 0, 0, 4509, 4510, 5, 67, 0, 0, 4510, 4511, 5, 72, 0, 0, 4511, 872, 1, 0, 0, 0, 4512, 4513, 5, 83, 0, 0, 4513, 4514, 5, 89, 0, 0, 4514, 4515, 5, 78, 0, 0, 4515, 4516, 5, 67, 0, 0, 4516, 874, 1, 0, 0, 0, 4517, 4518, 5, 83, 0, 0, 4518, 4519, 5, 89, 0, 0, 4519, 4520, 5, 83, 0, 0, 4520, 4521, 5, 84, 0, 0, 4521, 4522, 5, 69, 0, 0, 4522, 4523, 5, 77, 0, 0, 4523, 876, 1, 0, 0, 0, 4524, 4525, 5, 84, 0, 0, 4525, 4526, 5, 65, 0, 0, 4526, 4527, 5, 66, 0, 0, 4527, 4528, 5, 76, 0, 0, 4528, 4529, 5, 69, 0, 0, 4529, 878, 1, 0, 0, 0, 4530, 4531, 5, 84, 0, 0, 4531, 4532, 5, 65, 0, 0, 4532, 4533, 5, 66, 0, 0, 4533, 4534, 5, 76, 0, 0, 4534, 4535, 5, 69, 0, 0, 4535, 4536, 5, 83, 0, 0, 4536, 880, 1, 0, 0, 0, 4537, 4538, 5, 84, 0, 0, 4538, 4539, 5, 65, 0, 0, 4539, 4540, 5, 66, 0, 0, 4540, 4541, 5, 76, 0, 0, 4541, 4542, 5, 69, 0, 0, 4542, 4543, 5, 83, 0, 0, 4543, 4544, 5, 65, 0, 0, 4544, 4545, 5, 77, 0, 0, 4545, 4546, 5, 80, 0, 0, 4546, 4547, 5, 76, 0, 0, 4547, 4548, 5, 69, 0, 0, 4548, 882, 1, 0, 0, 0, 4549, 4550, 5, 84, 0, 0, 4550, 4551, 5, 65, 0, 0, 4551, 4552, 5, 66, 0, 0, 4552, 4553, 5, 76, 0, 0, 4553, 4554, 5, 69, 0, 0, 4554, 4555, 5, 84, 0, 0, 4555, 884, 1, 0, 0, 0, 4556, 4557, 5, 84, 0, 0, 4557, 4558, 5, 65, 0, 0, 4558, 4559, 5, 66, 0, 0, 4559, 4560, 5, 76, 0, 0, 4560, 4561, 5, 69, 0, 0, 4561, 4562, 5, 84, 0, 0, 4562, 4563, 5, 83, 0, 0, 4563, 886, 1, 0, 0, 0, 4564, 4565, 5, 84, 0, 0, 4565, 4566, 5, 65, 0, 0, 4566, 4567, 5, 83, 0, 0, 4567, 4568, 5, 75, 0, 0, 4568, 888, 1, 0, 0, 0, 4569, 4570, 5, 84, 0, 0, 4570, 4571, 5, 65, 0, 0, 4571, 4572, 5, 83, 0, 0, 4572, 4573, 5, 75, 0, 0, 4573, 4574, 5, 83, 0, 0, 4574, 890, 1, 0, 0, 0, 4575, 4576, 5, 84, 0, 0, 4576, 4577, 5, 69, 0, 0, 4577, 4578, 5, 77, 0, 0, 4578, 4579, 5, 80, 0, 0, 4579, 4580, 5, 79, 0, 0, 4580, 4581, 5, 82, 0, 0, 4581, 4582, 5, 65, 0, 0, 4582, 4583, 5, 82, 0, 0, 4583, 4584, 5, 89, 0, 0, 4584, 892, 1, 0, 0, 0, 4585, 4586, 5, 84, 0, 0, 4586, 4587, 5, 69, 0, 0, 4587, 4588, 5, 82, 0, 0, 4588, 4589, 5, 77, 0, 0, 4589, 4590, 5, 73, 0, 0, 4590, 4591, 5, 78, 0, 0, 4591, 4592, 5, 65, 0, 0, 4592, 4593, 5, 84, 0, 0, 4593, 4594, 5, 69, 0, 0, 4594, 4595, 5, 68, 0, 0, 4595, 894, 1, 0, 0, 0, 4596, 4597, 5, 84, 0, 0, 4597, 4598, 5, 69, 0, 0, 4598, 4599, 5, 88, 0, 0, 4599, 4600, 5, 84, 0, 0, 4600, 896, 1, 0, 0, 0, 4601, 4602, 5, 84, 0, 0, 4602, 4603, 5, 72, 0, 0, 4603, 4604, 5, 65, 0, 0, 4604, 4605, 5, 78, 0, 0, 4605, 898, 1, 0, 0, 0, 4606, 4607, 5, 84, 0, 0, 4607, 4608, 5, 72, 0, 0, 4608, 4609, 5, 69, 0, 0, 4609, 4610, 5, 78, 0, 0, 4610, 900, 1, 0, 0, 0, 4611, 4612, 5, 84, 0, 0, 4612, 4613, 5, 73, 0, 0, 4613, 4614, 5, 77, 0, 0, 4614, 4615, 5, 69, 0, 0, 4615, 902, 1, 0, 0, 0, 4616, 4617, 5, 84, 0, 0, 4617, 4618, 5, 73, 0, 0, 4618, 4619, 5, 77, 0, 0, 4619, 4620, 5, 69, 0, 0, 4620, 4621, 5, 83, 0, 0, 4621, 4622, 5, 84, 0, 0, 4622, 4623, 5, 65, 0, 0, 4623, 4624, 5, 77, 0, 0, 4624, 4625, 5, 80, 0, 0, 4625, 904, 1, 0, 0, 0, 4626, 4627, 5, 84, 0, 0, 4627, 4628, 5, 73, 0, 0, 4628, 4629, 5, 78, 0, 0, 4629, 4630, 5, 89, 0, 0, 4630, 4631, 5, 73, 0, 0, 4631, 4632, 5, 78, 0, 0, 4632, 4633, 5, 84, 0, 0, 4633, 906, 1, 0, 0, 0, 4634, 4635, 5, 84, 0, 0, 4635, 4636, 5, 79, 0, 0, 4636, 908, 1, 0, 0, 0, 4637, 4638, 5, 84, 0, 0, 4638, 4639, 5, 82, 0, 0, 4639, 4640, 5, 65, 0, 0, 4640, 4641, 5, 78, 0, 0, 4641, 4642, 5, 83, 0, 0, 4642, 4643, 5, 65, 0, 0, 4643, 4644, 5, 67, 0, 0, 4644, 4645, 5, 84, 0, 0, 4645, 4646, 5, 73, 0, 0, 4646, 4647, 5, 79, 0, 0, 4647, 4648, 5, 78, 0, 0, 4648, 910, 1, 0, 0, 0, 4649, 4650, 5, 84, 0, 0, 4650, 4651, 5, 82, 0, 0, 4651, 4652, 5, 65, 0, 0, 4652, 4653, 5, 83, 0, 0, 4653, 4654, 5, 72, 0, 0, 4654, 912, 1, 0, 0, 0, 4655, 4656, 5, 84, 0, 0, 4656, 4657, 5, 82, 0, 0, 4657, 4658, 5, 69, 0, 0, 4658, 4659, 5, 69, 0, 0, 4659, 914, 1, 0, 0, 0, 4660, 4661, 5, 84, 0, 0, 4661, 4662, 5, 82, 0, 0, 4662, 4663, 5, 73, 0, 0, 4663, 4664, 5, 71, 0, 0, 4664, 4665, 5, 71, 0, 0, 4665, 4666, 5, 69, 0, 0, 4666, 4667, 5, 82, 0, 0, 4667, 4668, 5, 83, 0, 0, 4668, 916, 1, 0, 0, 0, 4669, 4670, 5, 84, 0, 0, 4670, 4671, 5, 82, 0, 0, 4671, 4672, 5, 73, 0, 0, 4672, 4673, 5, 77, 0, 0, 4673, 918, 1, 0, 0, 0, 4674, 4675, 5, 84, 0, 0, 4675, 4676, 5, 82, 0, 0, 4676, 4677, 5, 85, 0, 0, 4677, 4678, 5, 69, 0, 0, 4678, 920, 1, 0, 0, 0, 4679, 4680, 5, 84, 0, 0, 4680, 4681, 5, 82, 0, 0, 4681, 4682, 5, 85, 0, 0, 4682, 4683, 5, 78, 0, 0, 4683, 4684, 5, 67, 0, 0, 4684, 4685, 5, 65, 0, 0, 4685, 4686, 5, 84, 0, 0, 4686, 4687, 5, 69, 0, 0, 4687, 922, 1, 0, 0, 0, 4688, 4689, 5, 84, 0, 0, 4689, 4690, 5, 89, 0, 0, 4690, 4691, 5, 80, 0, 0, 4691, 4692, 5, 69, 0, 0, 4692, 924, 1, 0, 0, 0, 4693, 4694, 5, 84, 0, 0, 4694, 4695, 5, 89, 0, 0, 4695, 4696, 5, 80, 0, 0, 4696, 4697, 5, 69, 0, 0, 4697, 4698, 5, 95, 0, 0, 4698, 4699, 5, 67, 0, 0, 4699, 4700, 5, 65, 0, 0, 4700, 4701, 5, 83, 0, 0, 4701, 4702, 5, 84, 0, 0, 4702, 926, 1, 0, 0, 0, 4703, 4704, 5, 84, 0, 0, 4704, 4705, 5, 89, 0, 0, 4705, 4706, 5, 80, 0, 0, 4706, 4707, 5, 69, 0, 0, 4707, 4708, 5, 83, 0, 0, 4708, 928, 1, 0, 0, 0, 4709, 4710, 5, 85, 0, 0, 4710, 4711, 5, 78, 0, 0, 4711, 4712, 5, 66, 0, 0, 4712, 4713, 5, 79, 0, 0, 4713, 4714, 5, 85, 0, 0, 4714, 4715, 5, 78, 0, 0, 4715, 4716, 5, 68, 0, 0, 4716, 4717, 5, 69, 0, 0, 4717, 4718, 5, 68, 0, 0, 4718, 930, 1, 0, 0, 0, 4719, 4720, 5, 85, 0, 0, 4720, 4721, 5, 78, 0, 0, 4721, 4722, 5, 67, 0, 0, 4722, 4723, 5, 79, 0, 0, 4723, 4724, 5, 77, 0, 0, 4724, 4725, 5, 77, 0, 0, 4725, 4726, 5, 73, 0, 0, 4726, 4727, 5, 84, 0, 0, 4727, 4728, 5, 84, 0, 0, 4728, 4729, 5, 69, 0, 0, 4729, 4730, 5, 68, 0, 0, 4730, 932, 1, 0, 0, 0, 4731, 4732, 5, 85, 0, 0, 4732, 4733, 5, 78, 0, 0, 4733, 4734, 5, 73, 0, 0, 4734, 4735, 5, 78, 0, 0, 4735, 4736, 5, 83, 0, 0, 4736, 4737, 5, 84, 0, 0, 4737, 4738, 5, 65, 0, 0, 4738, 4739, 5, 76, 0, 0, 4739, 4740, 5, 76, 0, 0, 4740, 934, 1, 0, 0, 0, 4741, 4742, 5, 85, 0, 0, 4742, 4743, 5, 78, 0, 0, 4743, 4744, 5, 73, 0, 0, 4744, 4745, 5, 79, 0, 0, 4745, 4746, 5, 78, 0, 0, 4746, 936, 1, 0, 0, 0, 4747, 4748, 5, 85, 0, 0, 4748, 4749, 5, 78, 0, 0, 4749, 4750, 5, 73, 0, 0, 4750, 4751, 5, 81, 0, 0, 4751, 4752, 5, 85, 0, 0, 4752, 4753, 5, 69, 0, 0, 4753, 938, 1, 0, 0, 0, 4754, 4755, 5, 85, 0, 0, 4755, 4756, 5, 78, 0, 0, 4756, 4757, 5, 76, 0, 0, 4757, 4758, 5, 79, 0, 0, 4758, 4759, 5, 67, 0, 0, 4759, 4760, 5, 75, 0, 0, 4760, 940, 1, 0, 0, 0, 4761, 4762, 5, 85, 0, 0, 4762, 4763, 5, 78, 0, 0, 4763, 4764, 5, 83, 0, 0, 4764, 4765, 5, 69, 0, 0, 4765, 4766, 5, 84, 0, 0, 4766, 942, 1, 0, 0, 0, 4767, 4768, 5, 85, 0, 0, 4768, 4769, 5, 78, 0, 0, 4769, 4770, 5, 83, 0, 0, 4770, 4771, 5, 73, 0, 0, 4771, 4772, 5, 71, 0, 0, 4772, 4773, 5, 78, 0, 0, 4773, 4774, 5, 69, 0, 0, 4774, 4775, 5, 68, 0, 0, 4775, 944, 1, 0, 0, 0, 4776, 4777, 5, 85, 0, 0, 4777, 4778, 5, 80, 0, 0, 4778, 946, 1, 0, 0, 0, 4779, 4780, 5, 85, 0, 0, 4780, 4781, 5, 80, 0, 0, 4781, 4782, 5, 68, 0, 0, 4782, 4783, 5, 65, 0, 0, 4783, 4784, 5, 84, 0, 0, 4784, 4785, 5, 69, 0, 0, 4785, 948, 1, 0, 0, 0, 4786, 4787, 5, 85, 0, 0, 4787, 4788, 5, 83, 0, 0, 4788, 4789, 5, 69, 0, 0, 4789, 950, 1, 0, 0, 0, 4790, 4791, 5, 85, 0, 0, 4791, 4792, 5, 83, 0, 0, 4792, 4793, 5, 69, 0, 0, 4793, 4794, 5, 82, 0, 0, 4794, 952, 1, 0, 0, 0, 4795, 4796, 5, 85, 0, 0, 4796, 4797, 5, 83, 0, 0, 4797, 4798, 5, 69, 0, 0, 4798, 4799, 5, 95, 0, 0, 4799, 4800, 5, 77, 0, 0, 4800, 4801, 5, 86, 0, 0, 4801, 954, 1, 0, 0, 0, 4802, 4803, 5, 85, 0, 0, 4803, 4804, 5, 83, 0, 0, 4804, 4805, 5, 73, 0, 0, 4805, 4806, 5, 78, 0, 0, 4806, 4807, 5, 71, 0, 0, 4807, 956, 1, 0, 0, 0, 4808, 4809, 5, 86, 0, 0, 4809, 4810, 5, 65, 0, 0, 4810, 4811, 5, 76, 0, 0, 4811, 4812, 5, 85, 0, 0, 4812, 4813, 5, 69, 0, 0, 4813, 958, 1, 0, 0, 0, 4814, 4815, 5, 86, 0, 0, 4815, 4816, 5, 65, 0, 0, 4816, 4817, 5, 76, 0, 0, 4817, 4818, 5, 85, 0, 0, 4818, 4819, 5, 69, 0, 0, 4819, 4820, 5, 83, 0, 0, 4820, 960, 1, 0, 0, 0, 4821, 4822, 5, 86, 0, 0, 4822, 4823, 5, 65, 0, 0, 4823, 4824, 5, 82, 0, 0, 4824, 4825, 5, 67, 0, 0, 4825, 4826, 5, 72, 0, 0, 4826, 4827, 5, 65, 0, 0, 4827, 4828, 5, 82, 0, 0, 4828, 962, 1, 0, 0, 0, 4829, 4830, 5, 86, 0, 0, 4830, 4831, 5, 65, 0, 0, 4831, 4832, 5, 82, 0, 0, 4832, 4833, 5, 73, 0, 0, 4833, 4834, 5, 65, 0, 0, 4834, 4835, 5, 66, 0, 0, 4835, 4836, 5, 76, 0, 0, 4836, 4837, 5, 69, 0, 0, 4837, 964, 1, 0, 0, 0, 4838, 4839, 5, 86, 0, 0, 4839, 4840, 5, 65, 0, 0, 4840, 4841, 5, 82, 0, 0, 4841, 4842, 5, 73, 0, 0, 4842, 4843, 5, 65, 0, 0, 4843, 4844, 5, 66, 0, 0, 4844, 4845, 5, 76, 0, 0, 4845, 4846, 5, 69, 0, 0, 4846, 4847, 5, 83, 0, 0, 4847, 966, 1, 0, 0, 0, 4848, 4849, 5, 86, 0, 0, 4849, 4850, 5, 65, 0, 0, 4850, 4851, 5, 82, 0, 0, 4851, 4852, 5, 73, 0, 0, 4852, 4853, 5, 65, 0, 0, 4853, 4854, 5, 78, 0, 0, 4854, 4855, 5, 84, 0, 0, 4855, 968, 1, 0, 0, 0, 4856, 4857, 5, 86, 0, 0, 4857, 4858, 5, 65, 0, 0, 4858, 4859, 5, 85, 0, 0, 4859, 4860, 5, 76, 0, 0, 4860, 4861, 5, 84, 0, 0, 4861, 970, 1, 0, 0, 0, 4862, 4863, 5, 86, 0, 0, 4863, 4864, 5, 65, 0, 0, 4864, 4865, 5, 85, 0, 0, 4865, 4866, 5, 76, 0, 0, 4866, 4867, 5, 84, 0, 0, 4867, 4868, 5, 83, 0, 0, 4868, 972, 1, 0, 0, 0, 4869, 4870, 5, 86, 0, 0, 4870, 4871, 5, 69, 0, 0, 4871, 4872, 5, 82, 0, 0, 4872, 4873, 5, 66, 0, 0, 4873, 4874, 5, 79, 0, 0, 4874, 4875, 5, 83, 0, 0, 4875, 4876, 5, 69, 0, 0, 4876, 974, 1, 0, 0, 0, 4877, 4878, 5, 86, 0, 0, 4878, 4879, 5, 69, 0, 0, 4879, 4880, 5, 82, 0, 0, 4880, 4881, 5, 83, 0, 0, 4881, 4882, 5, 73, 0, 0, 4882, 4883, 5, 79, 0, 0, 4883, 4884, 5, 78, 0, 0, 4884, 976, 1, 0, 0, 0, 4885, 4886, 5, 86, 0, 0, 4886, 4887, 5, 73, 0, 0, 4887, 4888, 5, 69, 0, 0, 4888, 4889, 5, 87, 0, 0, 4889, 978, 1, 0, 0, 0, 4890, 4891, 5, 86, 0, 0, 4891, 4892, 5, 73, 0, 0, 4892, 4893, 5, 69, 0, 0, 4893, 4894, 5, 87, 0, 0, 4894, 4895, 5, 83, 0, 0, 4895, 980, 1, 0, 0, 0, 4896, 4897, 5, 87, 0, 0, 4897, 4898, 5, 65, 0, 0, 4898, 4899, 5, 82, 0, 0, 4899, 4900, 5, 77, 0, 0, 4900, 982, 1, 0, 0, 0, 4901, 4902, 5, 87, 0, 0, 4902, 4903, 5, 65, 0, 0, 4903, 4904, 5, 82, 0, 0, 4904, 4905, 5, 78, 0, 0, 4905, 4906, 5, 73, 0, 0, 4906, 4907, 5, 78, 0, 0, 4907, 4908, 5, 71, 0, 0, 4908, 4909, 5, 83, 0, 0, 4909, 984, 1, 0, 0, 0, 4910, 4911, 5, 87, 0, 0, 4911, 4912, 5, 69, 0, 0, 4912, 4913, 5, 69, 0, 0, 4913, 4914, 5, 75, 0, 0, 4914, 986, 1, 0, 0, 0, 4915, 4916, 5, 87, 0, 0, 4916, 4917, 5, 72, 0, 0, 4917, 4918, 5, 69, 0, 0, 4918, 4919, 5, 78, 0, 0, 4919, 988, 1, 0, 0, 0, 4920, 4921, 5, 87, 0, 0, 4921, 4922, 5, 72, 0, 0, 4922, 4923, 5, 69, 0, 0, 4923, 4924, 5, 82, 0, 0, 4924, 4925, 5, 69, 0, 0, 4925, 990, 1, 0, 0, 0, 4926, 4927, 5, 87, 0, 0, 4927, 4928, 5, 72, 0, 0, 4928, 4929, 5, 73, 0, 0, 4929, 4930, 5, 84, 0, 0, 4930, 4931, 5, 69, 0, 0, 4931, 4932, 5, 76, 0, 0, 4932, 4933, 5, 73, 0, 0, 4933, 4934, 5, 83, 0, 0, 4934, 4935, 5, 84, 0, 0, 4935, 992, 1, 0, 0, 0, 4936, 4937, 5, 87, 0, 0, 4937, 4938, 5, 73, 0, 0, 4938, 4939, 5, 84, 0, 0, 4939, 4940, 5, 72, 0, 0, 4940, 994, 1, 0, 0, 0, 4941, 4942, 5, 87, 0, 0, 4942, 4943, 5, 79, 0, 0, 4943, 4944, 5, 82, 0, 0, 4944, 4945, 5, 75, 0, 0, 4945, 996, 1, 0, 0, 0, 4946, 4947, 5, 87, 0, 0, 4947, 4948, 5, 79, 0, 0, 4948, 4949, 5, 82, 0, 0, 4949, 4950, 5, 75, 0, 0, 4950, 4951, 5, 76, 0, 0, 4951, 4952, 5, 79, 0, 0, 4952, 4953, 5, 65, 0, 0, 4953, 4954, 5, 68, 0, 0, 4954, 998, 1, 0, 0, 0, 4955, 4956, 5, 87, 0, 0, 4956, 4957, 5, 82, 0, 0, 4957, 4958, 5, 73, 0, 0, 4958, 4959, 5, 84, 0, 0, 4959, 4960, 5, 69, 0, 0, 4960, 1000, 1, 0, 0, 0, 4961, 4962, 5, 88, 0, 0, 4962, 4963, 5, 79, 0, 0, 4963, 4964, 5, 82, 0, 0, 4964, 1002, 1, 0, 0, 0, 4965, 4966, 5, 89, 0, 0, 4966, 4967, 5, 69, 0, 0, 4967, 4968, 5, 65, 0, 0, 4968, 4969, 5, 82, 0, 0, 4969, 1004, 1, 0, 0, 0, 4970, 4974, 5, 61, 0, 0, 4971, 4972, 5, 61, 0, 0, 4972, 4974, 5, 61, 0, 0, 4973, 4970, 1, 0, 0, 0, 4973, 4971, 1, 0, 0, 0, 4974, 1006, 1, 0, 0, 0, 4975, 4976, 5, 60, 0, 0, 4976, 4977, 5, 61, 0, 0, 4977, 4978, 5, 62, 0, 0, 4978, 1008, 1, 0, 0, 0, 4979, 4980, 5, 60, 0, 0, 4980, 4984, 5, 62, 0, 0, 4981, 4982, 5, 33, 0, 0, 4982, 4984, 5, 61, 0, 0, 4983, 4979, 1, 0, 0, 0, 4983, 4981, 1, 0, 0, 0, 4984, 1010, 1, 0, 0, 0, 4985, 4986, 5, 60, 0, 0, 4986, 1012, 1, 0, 0, 0, 4987, 4988, 5, 60, 0, 0, 4988, 4992, 5, 61, 0, 0, 4989, 4990, 5, 33, 0, 0, 4990, 4992, 5, 62, 0, 0, 4991, 4987, 1, 0, 0, 0, 4991, 4989, 1, 0, 0, 0, 4992, 1014, 1, 0, 0, 0, 4993, 4994, 5, 62, 0, 0, 4994, 1016, 1, 0, 0, 0, 4995, 4996, 5, 62, 0, 0, 4996, 5000, 5, 61, 0, 0, 4997, 4998, 5, 33, 0, 0, 4998, 5000, 5, 60, 0, 0, 4999, 4995, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 1018, 1, 0, 0, 0, 5001, 5002, 5, 43, 0, 0, 5002, 1020, 1, 0, 0, 0, 5003, 5004, 5, 45, 0, 0, 5004, 1022, 1, 0, 0, 0, 5005, 5006, 5, 42, 0, 0, 5006, 1024, 1, 0, 0, 0, 5007, 5008, 5, 47, 0, 0, 5008, 1026, 1, 0, 0, 0, 5009, 5010, 5, 37, 0, 0, 5010, 1028, 1, 0, 0, 0, 5011, 5012, 5, 126, 0, 0, 5012, 1030, 1, 0, 0, 0, 5013, 5014, 5, 38, 0, 0, 5014, 1032, 1, 0, 0, 0, 5015, 5016, 5, 38, 0, 0, 5016, 5017, 5, 38, 0, 0, 5017, 1034, 1, 0, 0, 0, 5018, 5019, 5, 33, 0, 0, 5019, 1036, 1, 0, 0, 0, 5020, 5021, 5, 124, 0, 0, 5021, 1038, 1, 0, 0, 0, 5022, 5023, 5, 124, 0, 0, 5023, 5024, 5, 124, 0, 0, 5024, 1040, 1, 0, 0, 0, 5025, 5026, 5, 94, 0, 0, 5026, 1042, 1, 0, 0, 0, 5027, 5028, 5, 58, 0, 0, 5028, 1044, 1, 0, 0, 0, 5029, 5030, 5, 45, 0, 0, 5030, 5031, 5, 62, 0, 0, 5031, 1046, 1, 0, 0, 0, 5032, 5033, 5, 47, 0, 0, 5033, 5034, 5, 42, 0, 0, 5034, 5035, 5, 43, 0, 0, 5035, 1048, 1, 0, 0, 0, 5036, 5037, 5, 42, 0, 0, 5037, 5038, 5, 47, 0, 0, 5038, 1050, 1, 0, 0, 0, 5039, 5040, 5, 47, 0, 0, 5040, 5041, 5, 42, 0, 0, 5041, 1052, 1, 0, 0, 0, 5042, 5043, 5, 64, 0, 0, 5043, 1054, 1, 0, 0, 0, 5044, 5045, 5, 64, 0, 0, 5045, 5046, 5, 64, 0, 0, 5046, 1056, 1, 0, 0, 0, 5047, 5055, 5, 39, 0, 0, 5048, 5049, 5, 92, 0, 0, 5049, 5054, 9, 0, 0, 0, 5050, 5051, 5, 39, 0, 0, 5051, 5054, 5, 39, 0, 0, 5052, 5054, 8, 0, 0, 0, 5053, 5048, 1, 0, 0, 0, 5053, 5050, 1, 0, 0, 0, 5053, 5052, 1, 0, 0, 0, 5054, 5057, 1, 0, 0, 0, 5055, 5053, 1, 0, 0, 0, 5055, 5056, 1, 0, 0, 0, 5056, 5058, 1, 0, 0, 0, 5057, 5055, 1, 0, 0, 0, 5058, 5092, 5, 39, 0, 0, 5059, 5067, 5, 34, 0, 0, 5060, 5061, 5, 92, 0, 0, 5061, 5066, 9, 0, 0, 0, 5062, 5063, 5, 34, 0, 0, 5063, 5066, 5, 34, 0, 0, 5064, 5066, 8, 1, 0, 0, 5065, 5060, 1, 0, 0, 0, 5065, 5062, 1, 0, 0, 0, 5065, 5064, 1, 0, 0, 0, 5066, 5069, 1, 0, 0, 0, 5067, 5065, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5070, 1, 0, 0, 0, 5069, 5067, 1, 0, 0, 0, 5070, 5092, 5, 34, 0, 0, 5071, 5072, 5, 82, 0, 0, 5072, 5073, 5, 39, 0, 0, 5073, 5077, 1, 0, 0, 0, 5074, 5076, 8, 2, 0, 0, 5075, 5074, 1, 0, 0, 0, 5076, 5079, 1, 0, 0, 0, 5077, 5075, 1, 0, 0, 0, 5077, 5078, 1, 0, 0, 0, 5078, 5080, 1, 0, 0, 0, 5079, 5077, 1, 0, 0, 0, 5080, 5092, 5, 39, 0, 0, 5081, 5082, 5, 82, 0, 0, 5082, 5083, 5, 34, 0, 0, 5083, 5087, 1, 0, 0, 0, 5084, 5086, 8, 3, 0, 0, 5085, 5084, 1, 0, 0, 0, 5086, 5089, 1, 0, 0, 0, 5087, 5085, 1, 0, 0, 0, 5087, 5088, 1, 0, 0, 0, 5088, 5090, 1, 0, 0, 0, 5089, 5087, 1, 0, 0, 0, 5090, 5092, 5, 34, 0, 0, 5091, 5047, 1, 0, 0, 0, 5091, 5059, 1, 0, 0, 0, 5091, 5071, 1, 0, 0, 0, 5091, 5081, 1, 0, 0, 0, 5092, 1058, 1, 0, 0, 0, 5093, 5098, 3, 17, 8, 0, 5094, 5098, 3, 19, 9, 0, 5095, 5098, 3, 13, 6, 0, 5096, 5098, 3, 15, 7, 0, 5097, 5093, 1, 0, 0, 0, 5097, 5094, 1, 0, 0, 0, 5097, 5095, 1, 0, 0, 0, 5097, 5096, 1, 0, 0, 0, 5098, 1060, 1, 0, 0, 0, 5099, 5101, 3, 1083, 541, 0, 5100, 5099, 1, 0, 0, 0, 5101, 5102, 1, 0, 0, 0, 5102, 5100, 1, 0, 0, 0, 5102, 5103, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5105, 5, 76, 0, 0, 5105, 1062, 1, 0, 0, 0, 5106, 5108, 3, 1083, 541, 0, 5107, 5106, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5107, 1, 0, 0, 0, 5109, 5110, 1, 0, 0, 0, 5110, 5111, 1, 0, 0, 0, 5111, 5112, 5, 83, 0, 0, 5112, 1064, 1, 0, 0, 0, 5113, 5115, 3, 1083, 541, 0, 5114, 5113, 1, 0, 0, 0, 5115, 5116, 1, 0, 0, 0, 5116, 5114, 1, 0, 0, 0, 5116, 5117, 1, 0, 0, 0, 5117, 5118, 1, 0, 0, 0, 5118, 5119, 5, 89, 0, 0, 5119, 1066, 1, 0, 0, 0, 5120, 5122, 3, 1083, 541, 0, 5121, 5120, 1, 0, 0, 0, 5122, 5123, 1, 0, 0, 0, 5123, 5121, 1, 0, 0, 0, 5123, 5124, 1, 0, 0, 0, 5124, 1068, 1, 0, 0, 0, 5125, 5127, 3, 1083, 541, 0, 5126, 5125, 1, 0, 0, 0, 5127, 5128, 1, 0, 0, 0, 5128, 5126, 1, 0, 0, 0, 5128, 5129, 1, 0, 0, 0, 5129, 5130, 1, 0, 0, 0, 5130, 5131, 3, 1081, 540, 0, 5131, 5137, 1, 0, 0, 0, 5132, 5133, 3, 1079, 539, 0, 5133, 5134, 3, 1081, 540, 0, 5134, 5135, 4, 534, 0, 0, 5135, 5137, 1, 0, 0, 0, 5136, 5126, 1, 0, 0, 0, 5136, 5132, 1, 0, 0, 0, 5137, 1070, 1, 0, 0, 0, 5138, 5139, 3, 1079, 539, 0, 5139, 5140, 4, 535, 1, 0, 5140, 1072, 1, 0, 0, 0, 5141, 5143, 3, 1083, 541, 0, 5142, 5141, 1, 0, 0, 0, 5143, 5144, 1, 0, 0, 0, 5144, 5142, 1, 0, 0, 0, 5144, 5145, 1, 0, 0, 0, 5145, 5147, 1, 0, 0, 0, 5146, 5148, 3, 1081, 540, 0, 5147, 5146, 1, 0, 0, 0, 5147, 5148, 1, 0, 0, 0, 5148, 5149, 1, 0, 0, 0, 5149, 5150, 5, 66, 0, 0, 5150, 5151, 5, 68, 0, 0, 5151, 5162, 1, 0, 0, 0, 5152, 5154, 3, 1079, 539, 0, 5153, 5155, 3, 1081, 540, 0, 5154, 5153, 1, 0, 0, 0, 5154, 5155, 1, 0, 0, 0, 5155, 5156, 1, 0, 0, 0, 5156, 5157, 5, 66, 0, 0, 5157, 5158, 5, 68, 0, 0, 5158, 5159, 1, 0, 0, 0, 5159, 5160, 4, 536, 2, 0, 5160, 5162, 1, 0, 0, 0, 5161, 5142, 1, 0, 0, 0, 5161, 5152, 1, 0, 0, 0, 5162, 1074, 1, 0, 0, 0, 5163, 5167, 3, 1085, 542, 0, 5164, 5167, 3, 1083, 541, 0, 5165, 5167, 5, 95, 0, 0, 5166, 5163, 1, 0, 0, 0, 5166, 5164, 1, 0, 0, 0, 5166, 5165, 1, 0, 0, 0, 5167, 5168, 1, 0, 0, 0, 5168, 5166, 1, 0, 0, 0, 5168, 5169, 1, 0, 0, 0, 5169, 1076, 1, 0, 0, 0, 5170, 5176, 5, 96, 0, 0, 5171, 5175, 8, 4, 0, 0, 5172, 5173, 5, 96, 0, 0, 5173, 5175, 5, 96, 0, 0, 5174, 5171, 1, 0, 0, 0, 5174, 5172, 1, 0, 0, 0, 5175, 5178, 1, 0, 0, 0, 5176, 5174, 1, 0, 0, 0, 5176, 5177, 1, 0, 0, 0, 5177, 5179, 1, 0, 0, 0, 5178, 5176, 1, 0, 0, 0, 5179, 5180, 5, 96, 0, 0, 5180, 1078, 1, 0, 0, 0, 5181, 5183, 3, 1083, 541, 0, 5182, 5181, 1, 0, 0, 0, 5183, 5184, 1, 0, 0, 0, 5184, 5182, 1, 0, 0, 0, 5184, 5185, 1, 0, 0, 0, 5185, 5186, 1, 0, 0, 0, 5186, 5190, 5, 46, 0, 0, 5187, 5189, 3, 1083, 541, 0, 5188, 5187, 1, 0, 0, 0, 5189, 5192, 1, 0, 0, 0, 5190, 5188, 1, 0, 0, 0, 5190, 5191, 1, 0, 0, 0, 5191, 5200, 1, 0, 0, 0, 5192, 5190, 1, 0, 0, 0, 5193, 5195, 5, 46, 0, 0, 5194, 5196, 3, 1083, 541, 0, 5195, 5194, 1, 0, 0, 0, 5196, 5197, 1, 0, 0, 0, 5197, 5195, 1, 0, 0, 0, 5197, 5198, 1, 0, 0, 0, 5198, 5200, 1, 0, 0, 0, 5199, 5182, 1, 0, 0, 0, 5199, 5193, 1, 0, 0, 0, 5200, 1080, 1, 0, 0, 0, 5201, 5203, 5, 69, 0, 0, 5202, 5204, 7, 5, 0, 0, 5203, 5202, 1, 0, 0, 0, 5203, 5204, 1, 0, 0, 0, 5204, 5206, 1, 0, 0, 0, 5205, 5207, 3, 1083, 541, 0, 5206, 5205, 1, 0, 0, 0, 5207, 5208, 1, 0, 0, 0, 5208, 5206, 1, 0, 0, 0, 5208, 5209, 1, 0, 0, 0, 5209, 1082, 1, 0, 0, 0, 5210, 5211, 7, 6, 0, 0, 5211, 1084, 1, 0, 0, 0, 5212, 5217, 7, 7, 0, 0, 5213, 5217, 8, 8, 0, 0, 5214, 5215, 7, 9, 0, 0, 5215, 5217, 7, 10, 0, 0, 5216, 5212, 1, 0, 0, 0, 5216, 5213, 1, 0, 0, 0, 5216, 5214, 1, 0, 0, 0, 5217, 1086, 1, 0, 0, 0, 5218, 5219, 5, 45, 0, 0, 5219, 5220, 5, 45, 0, 0, 5220, 5226, 1, 0, 0, 0, 5221, 5222, 5, 92, 0, 0, 5222, 5225, 5, 10, 0, 0, 5223, 5225, 8, 11, 0, 0, 5224, 5221, 1, 0, 0, 0, 5224, 5223, 1, 0, 0, 0, 5225, 5228, 1, 0, 0, 0, 5226, 5224, 1, 0, 0, 0, 5226, 5227, 1, 0, 0, 0, 5227, 5230, 1, 0, 0, 0, 5228, 5226, 1, 0, 0, 0, 5229, 5231, 5, 13, 0, 0, 5230, 5229, 1, 0, 0, 0, 5230, 5231, 1, 0, 0, 0, 5231, 5233, 1, 0, 0, 0, 5232, 5234, 5, 10, 0, 0, 5233, 5232, 1, 0, 0, 0, 5233, 5234, 1, 0, 0, 0, 5234, 5235, 1, 0, 0, 0, 5235, 5236, 6, 543, 0, 0, 5236, 1088, 1, 0, 0, 0, 5237, 5242, 3, 1051, 525, 0, 5238, 5241, 3, 1089, 544, 0, 5239, 5241, 9, 0, 0, 0, 5240, 5238, 1, 0, 0, 0, 5240, 5239, 1, 0, 0, 0, 5241, 5244, 1, 0, 0, 0, 5242, 5243, 1, 0, 0, 0, 5242, 5240, 1, 0, 0, 0, 5243, 5249, 1, 0, 0, 0, 5244, 5242, 1, 0, 0, 0, 5245, 5246, 5, 42, 0, 0, 5246, 5250, 5, 47, 0, 0, 5247, 5248, 6, 544, 1, 0, 5248, 5250, 5, 0, 0, 1, 5249, 5245, 1, 0, 0, 0, 5249, 5247, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5252, 6, 544, 2, 0, 5252, 1090, 1, 0, 0, 0, 5253, 5254, 5, 70, 0, 0, 5254, 5255, 5, 82, 0, 0, 5255, 5256, 5, 79, 0, 0, 5256, 5257, 5, 77, 0, 0, 5257, 5259, 1, 0, 0, 0, 5258, 5260, 3, 1093, 546, 0, 5259, 5258, 1, 0, 0, 0, 5260, 5261, 1, 0, 0, 0, 5261, 5259, 1, 0, 0, 0, 5261, 5262, 1, 0, 0, 0, 5262, 5263, 1, 0, 0, 0, 5263, 5264, 5, 68, 0, 0, 5264, 5265, 5, 85, 0, 0, 5265, 5266, 5, 65, 0, 0, 5266, 5267, 5, 76, 0, 0, 5267, 5268, 1, 0, 0, 0, 5268, 5269, 6, 545, 0, 0, 5269, 1092, 1, 0, 0, 0, 5270, 5272, 7, 12, 0, 0, 5271, 5270, 1, 0, 0, 0, 5272, 5273, 1, 0, 0, 0, 5273, 5271, 1, 0, 0, 0, 5273, 5274, 1, 0, 0, 0, 5274, 5275, 1, 0, 0, 0, 5275, 5276, 6, 546, 0, 0, 5276, 1094, 1, 0, 0, 0, 5277, 5278, 9, 0, 0, 0, 5278, 1096, 1, 0, 0, 0, 44, 0, 1541, 4973, 4983, 4991, 4999, 5053, 5055, 5065, 5067, 5077, 5087, 5091, 5097, 5102, 5109, 5116, 5123, 5128, 5136, 5144, 5147, 5154, 5161, 5166, 5168, 5174, 5176, 5184, 5190, 5197, 5199, 5203, 5208, 5216, 5224, 5226, 5230, 5233, 5240, 5242, 5249, 5261, 5273, 3, 0, 1, 0, 1, 544, 0, 0, 2, 0] \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java new file mode 100644 index 00000000000000..99ef9a550afe1c --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java @@ -0,0 +1,3843 @@ +// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 by ANTLR 4.13.1 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) +public class DorisLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + SEMICOLON=1, LEFT_PAREN=2, RIGHT_PAREN=3, COMMA=4, DOT=5, DOTDOTDOT=6, + LEFT_BRACKET=7, RIGHT_BRACKET=8, LEFT_BRACE=9, RIGHT_BRACE=10, ACCOUNT_LOCK=11, + ACCOUNT_UNLOCK=12, ACTIONS=13, ADD=14, ADMIN=15, AFTER=16, AGG_STATE=17, + AGGREGATE=18, ALIAS=19, ALL=20, ALTER=21, ANALYZE=22, ANALYZED=23, AND=24, + ANTI=25, APPEND=26, ARRAY=27, AS=28, ASC=29, AT=30, AUTHORS=31, AUTO=32, + AUTO_INCREMENT=33, ALWAYS=34, BACKEND=35, BACKENDS=36, BACKUP=37, BEGIN=38, + BELONG=39, BETWEEN=40, BIGINT=41, BIN=42, BINARY=43, BINLOG=44, BITAND=45, + BITMAP=46, BITMAP_EMPTY=47, BITMAP_UNION=48, BITOR=49, BITXOR=50, BLOB=51, + BOOLEAN=52, BRIEF=53, BROKER=54, BUCKETS=55, BUILD=56, BUILTIN=57, BULK=58, + BY=59, CACHE=60, CACHED=61, CALL=62, CANCEL=63, CASE=64, CAST=65, CATALOG=66, + CATALOGS=67, CHAIN=68, CHAR=69, CHARSET=70, CHECK=71, CLEAN=72, CLUSTER=73, + CLUSTERS=74, COLLATE=75, COLLATION=76, COLLECT=77, COLOCATE=78, COLUMN=79, + COLUMNS=80, COMMENT=81, COMMIT=82, COMMITTED=83, COMPACT=84, COMPLETE=85, + COMPRESS_TYPE=86, COMPUTE=87, CONDITIONS=88, CONFIG=89, CONNECTION=90, + CONNECTION_ID=91, CONSISTENT=92, CONSTRAINT=93, CONSTRAINTS=94, CONVERT=95, + CONVERT_LSC=96, COPY=97, COUNT=98, CREATE=99, CREATION=100, CRON=101, + CROSS=102, CUBE=103, CURRENT=104, CURRENT_CATALOG=105, CURRENT_DATE=106, + CURRENT_TIME=107, CURRENT_TIMESTAMP=108, CURRENT_USER=109, DATA=110, DATABASE=111, + DATABASES=112, DATE=113, DATETIME=114, DATETIMEV2=115, DATEV2=116, DATETIMEV1=117, + DATEV1=118, DAY=119, DECIMAL=120, DECIMALV2=121, DECIMALV3=122, DECOMMISSION=123, + DEFAULT=124, DEFERRED=125, DELETE=126, DEMAND=127, DESC=128, DESCRIBE=129, + DIAGNOSE=130, DIAGNOSIS=131, DISK=132, DISTINCT=133, DISTINCTPC=134, DISTINCTPCSA=135, + DISTRIBUTED=136, DISTRIBUTION=137, DIV=138, DO=139, DORIS_INTERNAL_TABLE_ID=140, + DOUBLE=141, DROP=142, DROPP=143, DUAL=144, DUMP=145, DUPLICATE=146, DYNAMIC=147, + E=148, ELSE=149, ENABLE=150, ENCRYPTKEY=151, ENCRYPTKEYS=152, END=153, + ENDS=154, ENGINE=155, ENGINES=156, ENTER=157, ERRORS=158, EVENTS=159, + EVERY=160, EXCEPT=161, EXCLUDE=162, EXECUTE=163, EXISTS=164, EXPIRED=165, + EXPLAIN=166, EXPORT=167, EXTENDED=168, EXTERNAL=169, EXTRACT=170, FAILED_LOGIN_ATTEMPTS=171, + FALSE=172, FAST=173, FEATURE=174, FIELDS=175, FILE=176, FILTER=177, FIRST=178, + FLOAT=179, FOLLOWER=180, FOLLOWING=181, FOR=182, FOREIGN=183, FORCE=184, + FORMAT=185, FREE=186, FROM=187, FRONTEND=188, FRONTENDS=189, FULL=190, + FUNCTION=191, FUNCTIONS=192, GENERATED=193, GENERIC=194, GLOBAL=195, GRANT=196, + GRANTS=197, GRAPH=198, GROUP=199, GROUPING=200, GROUPS=201, HASH=202, + HAVING=203, HDFS=204, HELP=205, HISTOGRAM=206, HLL=207, HLL_UNION=208, + HOSTNAME=209, HOTSPOT=210, HOUR=211, HUB=212, IDENTIFIED=213, IF=214, + IGNORE=215, IMMEDIATE=216, IN=217, INCREMENTAL=218, INDEX=219, INDEXES=220, + INFILE=221, INNER=222, INSERT=223, INSTALL=224, INT=225, INTEGER=226, + INTERMEDIATE=227, INTERSECT=228, INTERVAL=229, INTO=230, INVERTED=231, + IPV4=232, IPV6=233, IS=234, IS_NOT_NULL_PRED=235, IS_NULL_PRED=236, ISNULL=237, + ISOLATION=238, JOB=239, JOBS=240, JOIN=241, JSON=242, JSONB=243, KEY=244, + KEYS=245, KILL=246, LABEL=247, LARGEINT=248, LAST=249, LATERAL=250, LDAP=251, + LDAP_ADMIN_PASSWORD=252, LEFT=253, LESS=254, LEVEL=255, LIKE=256, LIMIT=257, + LINES=258, LINK=259, LIST=260, LOAD=261, LOCAL=262, LOCALTIME=263, LOCALTIMESTAMP=264, + LOCATION=265, LOCK=266, LOGICAL=267, LOW_PRIORITY=268, MANUAL=269, MAP=270, + MATCH=271, MATCH_ALL=272, MATCH_ANY=273, MATCH_PHRASE=274, MATCH_PHRASE_EDGE=275, + MATCH_PHRASE_PREFIX=276, MATCH_REGEXP=277, MATCH_NAME=278, MATCH_NAME_GLOB=279, + MATERIALIZED=280, MAX=281, MAXVALUE=282, MEMO=283, MERGE=284, MIGRATE=285, + MIGRATIONS=286, MIN=287, MINUS=288, MINUTE=289, MODIFY=290, MONTH=291, + MTMV=292, NAME=293, NAMES=294, NATURAL=295, NEGATIVE=296, NEVER=297, NEXT=298, + NGRAM_BF=299, NO=300, NO_USE_MV=301, NON_NULLABLE=302, NOT=303, NULL=304, + NULLS=305, OBSERVER=306, OF=307, OFFSET=308, ON=309, ONLY=310, OPEN=311, + OPTIMIZED=312, OR=313, ORDER=314, OUTER=315, OUTFILE=316, OVER=317, OVERWRITE=318, + PARAMETER=319, PARSED=320, PARTITION=321, PARTITIONS=322, PASSWORD=323, + PASSWORD_EXPIRE=324, PASSWORD_HISTORY=325, PASSWORD_LOCK_TIME=326, PASSWORD_REUSE=327, + PATH=328, PAUSE=329, PERCENT=330, PERIOD=331, PERMISSIVE=332, PHYSICAL=333, + PI=334, PLACEHOLDER=335, PLAN=336, PLAY=337, PRIVILEGES=338, PROCESS=339, + PLUGIN=340, PLUGINS=341, POLICY=342, PRECEDING=343, PREPARE=344, PRIMARY=345, + PROC=346, PROCEDURE=347, PROCESSLIST=348, PROFILE=349, PROPERTIES=350, + PROPERTY=351, QUANTILE_STATE=352, QUANTILE_UNION=353, QUERY=354, QUEUED=355, + QUOTA=356, QUALIFY=357, QUARTER=358, RANDOM=359, RANGE=360, READ=361, + REAL=362, REBALANCE=363, RECENT=364, RECOVER=365, RECYCLE=366, REFRESH=367, + REFERENCES=368, REGEXP=369, RELEASE=370, RENAME=371, REPAIR=372, REPEATABLE=373, + REPLACE=374, REPLACE_IF_NOT_NULL=375, REPLAYER=376, REPLICA=377, REPOSITORIES=378, + REPOSITORY=379, RESOURCE=380, RESOURCES=381, RESTORE=382, RESTRICTIVE=383, + RESUME=384, RETURNS=385, REVOKE=386, REWRITTEN=387, RIGHT=388, RLIKE=389, + ROLE=390, ROLES=391, ROLLBACK=392, ROLLUP=393, ROUTINE=394, ROW=395, ROWS=396, + S3=397, SAMPLE=398, SCHEDULE=399, SCHEDULER=400, SCHEMA=401, SCHEMAS=402, + SECOND=403, SELECT=404, SEMI=405, SERIALIZABLE=406, SESSION=407, SESSION_USER=408, + SET=409, SETS=410, SET_SESSION_VARIABLE=411, SHAPE=412, SHOW=413, SIGNED=414, + SKEW=415, SMALLINT=416, SNAPSHOT=417, SONAME=418, SPLIT=419, SQL=420, + SQL_BLOCK_RULE=421, STAGE=422, STAGES=423, START=424, STARTS=425, STATS=426, + STATUS=427, STOP=428, STORAGE=429, STREAM=430, STREAMING=431, STRING=432, + STRUCT=433, SUM=434, SUPERUSER=435, SWITCH=436, SYNC=437, SYSTEM=438, + TABLE=439, TABLES=440, TABLESAMPLE=441, TABLET=442, TABLETS=443, TASK=444, + TASKS=445, TEMPORARY=446, TERMINATED=447, TEXT=448, THAN=449, THEN=450, + TIME=451, TIMESTAMP=452, TINYINT=453, TO=454, TRANSACTION=455, TRASH=456, + TREE=457, TRIGGERS=458, TRIM=459, TRUE=460, TRUNCATE=461, TYPE=462, TYPECAST=463, + TYPES=464, UNBOUNDED=465, UNCOMMITTED=466, UNINSTALL=467, UNION=468, UNIQUE=469, + UNLOCK=470, UNSET=471, UNSIGNED=472, UP=473, UPDATE=474, USE=475, USER=476, + USE_MV=477, USING=478, VALUE=479, VALUES=480, VARCHAR=481, VARIABLE=482, + VARIABLES=483, VARIANT=484, VAULT=485, VAULTS=486, VERBOSE=487, VERSION=488, + VIEW=489, VIEWS=490, WARM=491, WARNINGS=492, WEEK=493, WHEN=494, WHERE=495, + WHITELIST=496, WITH=497, WORK=498, WORKLOAD=499, WRITE=500, XOR=501, YEAR=502, + EQ=503, NSEQ=504, NEQ=505, LT=506, LTE=507, GT=508, GTE=509, PLUS=510, + SUBTRACT=511, ASTERISK=512, SLASH=513, MOD=514, TILDE=515, AMPERSAND=516, + LOGICALAND=517, LOGICALNOT=518, PIPE=519, DOUBLEPIPES=520, HAT=521, COLON=522, + ARROW=523, HINT_START=524, HINT_END=525, COMMENT_START=526, ATSIGN=527, + DOUBLEATSIGN=528, STRING_LITERAL=529, LEADING_STRING=530, BIGINT_LITERAL=531, + SMALLINT_LITERAL=532, TINYINT_LITERAL=533, INTEGER_VALUE=534, EXPONENT_VALUE=535, + DECIMAL_VALUE=536, BIGDECIMAL_LITERAL=537, IDENTIFIER=538, BACKQUOTED_IDENTIFIER=539, + SIMPLE_COMMENT=540, BRACKETED_COMMENT=541, FROM_DUAL=542, WS=543, UNRECOGNIZED=544; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "SEMICOLON", "LEFT_PAREN", "RIGHT_PAREN", "COMMA", "DOT", "DOTDOTDOT", + "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "ACCOUNT_LOCK", + "ACCOUNT_UNLOCK", "ACTIONS", "ADD", "ADMIN", "AFTER", "AGG_STATE", "AGGREGATE", + "ALIAS", "ALL", "ALTER", "ANALYZE", "ANALYZED", "AND", "ANTI", "APPEND", + "ARRAY", "AS", "ASC", "AT", "AUTHORS", "AUTO", "AUTO_INCREMENT", "ALWAYS", + "BACKEND", "BACKENDS", "BACKUP", "BEGIN", "BELONG", "BETWEEN", "BIGINT", + "BIN", "BINARY", "BINLOG", "BITAND", "BITMAP", "BITMAP_EMPTY", "BITMAP_UNION", + "BITOR", "BITXOR", "BLOB", "BOOLEAN", "BRIEF", "BROKER", "BUCKETS", "BUILD", + "BUILTIN", "BULK", "BY", "CACHE", "CACHED", "CALL", "CANCEL", "CASE", + "CAST", "CATALOG", "CATALOGS", "CHAIN", "CHAR", "CHARSET", "CHECK", "CLEAN", + "CLUSTER", "CLUSTERS", "COLLATE", "COLLATION", "COLLECT", "COLOCATE", + "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETE", + "COMPRESS_TYPE", "COMPUTE", "CONDITIONS", "CONFIG", "CONNECTION", "CONNECTION_ID", + "CONSISTENT", "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CONVERT_LSC", + "COPY", "COUNT", "CREATE", "CREATION", "CRON", "CROSS", "CUBE", "CURRENT", + "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", + "DATETIMEV2", "DATEV2", "DATETIMEV1", "DATEV1", "DAY", "DECIMAL", "DECIMALV2", + "DECIMALV3", "DECOMMISSION", "DEFAULT", "DEFERRED", "DELETE", "DEMAND", + "DESC", "DESCRIBE", "DIAGNOSE", "DIAGNOSIS", "DISK", "DISTINCT", "DISTINCTPC", + "DISTINCTPCSA", "DISTRIBUTED", "DISTRIBUTION", "DIV", "DO", "DORIS_INTERNAL_TABLE_ID", + "DOUBLE", "DROP", "DROPP", "DUAL", "DUMP", "DUPLICATE", "DYNAMIC", "E", + "ELSE", "ENABLE", "ENCRYPTKEY", "ENCRYPTKEYS", "END", "ENDS", "ENGINE", + "ENGINES", "ENTER", "ERRORS", "EVENTS", "EVERY", "EXCEPT", "EXCLUDE", + "EXECUTE", "EXISTS", "EXPIRED", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", + "EXTRACT", "FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FEATURE", "FIELDS", + "FILE", "FILTER", "FIRST", "FLOAT", "FOLLOWER", "FOLLOWING", "FOR", "FOREIGN", + "FORCE", "FORMAT", "FREE", "FROM", "FRONTEND", "FRONTENDS", "FULL", "FUNCTION", + "FUNCTIONS", "GENERATED", "GENERIC", "GLOBAL", "GRANT", "GRANTS", "GRAPH", + "GROUP", "GROUPING", "GROUPS", "HASH", "HAVING", "HDFS", "HELP", "HISTOGRAM", + "HLL", "HLL_UNION", "HOSTNAME", "HOTSPOT", "HOUR", "HUB", "IDENTIFIED", + "IF", "IGNORE", "IMMEDIATE", "IN", "INCREMENTAL", "INDEX", "INDEXES", + "INFILE", "INNER", "INSERT", "INSTALL", "INT", "INTEGER", "INTERMEDIATE", + "INTERSECT", "INTERVAL", "INTO", "INVERTED", "IPV4", "IPV6", "IS", "IS_NOT_NULL_PRED", + "IS_NULL_PRED", "ISNULL", "ISOLATION", "JOB", "JOBS", "JOIN", "JSON", + "JSONB", "KEY", "KEYS", "KILL", "LABEL", "LARGEINT", "LAST", "LATERAL", + "LDAP", "LDAP_ADMIN_PASSWORD", "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", + "LINES", "LINK", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", + "LOCATION", "LOCK", "LOGICAL", "LOW_PRIORITY", "MANUAL", "MAP", "MATCH", + "MATCH_ALL", "MATCH_ANY", "MATCH_PHRASE", "MATCH_PHRASE_EDGE", "MATCH_PHRASE_PREFIX", + "MATCH_REGEXP", "MATCH_NAME", "MATCH_NAME_GLOB", "MATERIALIZED", "MAX", + "MAXVALUE", "MEMO", "MERGE", "MIGRATE", "MIGRATIONS", "MIN", "MINUS", + "MINUTE", "MODIFY", "MONTH", "MTMV", "NAME", "NAMES", "NATURAL", "NEGATIVE", + "NEVER", "NEXT", "NGRAM_BF", "NO", "NO_USE_MV", "NON_NULLABLE", "NOT", + "NULL", "NULLS", "OBSERVER", "OF", "OFFSET", "ON", "ONLY", "OPEN", "OPTIMIZED", + "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "OVERWRITE", "PARAMETER", + "PARSED", "PARTITION", "PARTITIONS", "PASSWORD", "PASSWORD_EXPIRE", "PASSWORD_HISTORY", + "PASSWORD_LOCK_TIME", "PASSWORD_REUSE", "PATH", "PAUSE", "PERCENT", "PERIOD", + "PERMISSIVE", "PHYSICAL", "PI", "PLACEHOLDER", "PLAN", "PLAY", "PRIVILEGES", + "PROCESS", "PLUGIN", "PLUGINS", "POLICY", "PRECEDING", "PREPARE", "PRIMARY", + "PROC", "PROCEDURE", "PROCESSLIST", "PROFILE", "PROPERTIES", "PROPERTY", + "QUANTILE_STATE", "QUANTILE_UNION", "QUERY", "QUEUED", "QUOTA", "QUALIFY", + "QUARTER", "RANDOM", "RANGE", "READ", "REAL", "REBALANCE", "RECENT", + "RECOVER", "RECYCLE", "REFRESH", "REFERENCES", "REGEXP", "RELEASE", "RENAME", + "REPAIR", "REPEATABLE", "REPLACE", "REPLACE_IF_NOT_NULL", "REPLAYER", + "REPLICA", "REPOSITORIES", "REPOSITORY", "RESOURCE", "RESOURCES", "RESTORE", + "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITTEN", "RIGHT", "RLIKE", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW", "ROWS", "S3", + "SAMPLE", "SCHEDULE", "SCHEDULER", "SCHEMA", "SCHEMAS", "SECOND", "SELECT", + "SEMI", "SERIALIZABLE", "SESSION", "SESSION_USER", "SET", "SETS", "SET_SESSION_VARIABLE", + "SHAPE", "SHOW", "SIGNED", "SKEW", "SMALLINT", "SNAPSHOT", "SONAME", + "SPLIT", "SQL", "SQL_BLOCK_RULE", "STAGE", "STAGES", "START", "STARTS", + "STATS", "STATUS", "STOP", "STORAGE", "STREAM", "STREAMING", "STRING", + "STRUCT", "SUM", "SUPERUSER", "SWITCH", "SYNC", "SYSTEM", "TABLE", "TABLES", + "TABLESAMPLE", "TABLET", "TABLETS", "TASK", "TASKS", "TEMPORARY", "TERMINATED", + "TEXT", "THAN", "THEN", "TIME", "TIMESTAMP", "TINYINT", "TO", "TRANSACTION", + "TRASH", "TREE", "TRIGGERS", "TRIM", "TRUE", "TRUNCATE", "TYPE", "TYPECAST", + "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNINSTALL", "UNION", "UNIQUE", + "UNLOCK", "UNSET", "UNSIGNED", "UP", "UPDATE", "USE", "USER", "USE_MV", + "USING", "VALUE", "VALUES", "VARCHAR", "VARIABLE", "VARIABLES", "VARIANT", + "VAULT", "VAULTS", "VERBOSE", "VERSION", "VIEW", "VIEWS", "WARM", "WARNINGS", + "WEEK", "WHEN", "WHERE", "WHITELIST", "WITH", "WORK", "WORKLOAD", "WRITE", + "XOR", "YEAR", "EQ", "NSEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", + "SUBTRACT", "ASTERISK", "SLASH", "MOD", "TILDE", "AMPERSAND", "LOGICALAND", + "LOGICALNOT", "PIPE", "DOUBLEPIPES", "HAT", "COLON", "ARROW", "HINT_START", + "HINT_END", "COMMENT_START", "ATSIGN", "DOUBLEATSIGN", "STRING_LITERAL", + "LEADING_STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", + "INTEGER_VALUE", "EXPONENT_VALUE", "DECIMAL_VALUE", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "DECIMAL_DIGITS", "EXPONENT", + "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "FROM_DUAL", + "WS", "UNRECOGNIZED" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "';'", "'('", "')'", "','", "'.'", "'...'", "'['", "']'", "'{'", + "'}'", "'ACCOUNT_LOCK'", "'ACCOUNT_UNLOCK'", "'ACTIONS'", "'ADD'", "'ADMIN'", + "'AFTER'", "'AGG_STATE'", "'AGGREGATE'", "'ALIAS'", "'ALL'", "'ALTER'", + "'ANALYZE'", "'ANALYZED'", "'AND'", "'ANTI'", "'APPEND'", "'ARRAY'", + "'AS'", "'ASC'", "'AT'", "'AUTHORS'", "'AUTO'", "'AUTO_INCREMENT'", "'ALWAYS'", + "'BACKEND'", "'BACKENDS'", "'BACKUP'", "'BEGIN'", "'BELONG'", "'BETWEEN'", + "'BIGINT'", "'BIN'", "'BINARY'", "'BINLOG'", "'BITAND'", "'BITMAP'", + "'BITMAP_EMPTY'", "'BITMAP_UNION'", "'BITOR'", "'BITXOR'", "'BLOB'", + "'BOOLEAN'", "'BRIEF'", "'BROKER'", "'BUCKETS'", "'BUILD'", "'BUILTIN'", + "'BULK'", "'BY'", "'CACHE'", "'CACHED'", "'CALL'", "'CANCEL'", "'CASE'", + "'CAST'", "'CATALOG'", "'CATALOGS'", "'CHAIN'", null, "'CHARSET'", "'CHECK'", + "'CLEAN'", "'CLUSTER'", "'CLUSTERS'", "'COLLATE'", "'COLLATION'", "'COLLECT'", + "'COLOCATE'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", + "'COMPACT'", "'COMPLETE'", "'COMPRESS_TYPE'", "'COMPUTE'", "'CONDITIONS'", + "'CONFIG'", "'CONNECTION'", "'CONNECTION_ID'", "'CONSISTENT'", "'CONSTRAINT'", + "'CONSTRAINTS'", "'CONVERT'", "'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'", + "'COPY'", "'COUNT'", "'CREATE'", "'CREATION'", "'CRON'", "'CROSS'", "'CUBE'", + "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_TIME'", + "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATABASE'", "'DATABASES'", + "'DATE'", "'DATETIME'", "'DATETIMEV2'", "'DATEV2'", "'DATETIMEV1'", "'DATEV1'", + "'DAY'", "'DECIMAL'", "'DECIMALV2'", "'DECIMALV3'", "'DECOMMISSION'", + "'DEFAULT'", "'DEFERRED'", "'DELETE'", "'DEMAND'", "'DESC'", "'DESCRIBE'", + "'DIAGNOSE'", "'DIAGNOSIS'", "'DISK'", "'DISTINCT'", "'DISTINCTPC'", + "'DISTINCTPCSA'", "'DISTRIBUTED'", "'DISTRIBUTION'", "'DIV'", "'DO'", + "'DORIS_INTERNAL_TABLE_ID'", "'DOUBLE'", "'DROP'", "'DROPP'", "'DUAL'", + "'DUMP'", "'DUPLICATE'", "'DYNAMIC'", "'E'", "'ELSE'", "'ENABLE'", "'ENCRYPTKEY'", + "'ENCRYPTKEYS'", "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ENTER'", + "'ERRORS'", "'EVENTS'", "'EVERY'", "'EXCEPT'", "'EXCLUDE'", "'EXECUTE'", + "'EXISTS'", "'EXPIRED'", "'EXPLAIN'", "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", + "'EXTRACT'", "'FAILED_LOGIN_ATTEMPTS'", "'FALSE'", "'FAST'", "'FEATURE'", + "'FIELDS'", "'FILE'", "'FILTER'", "'FIRST'", "'FLOAT'", "'FOLLOWER'", + "'FOLLOWING'", "'FOR'", "'FOREIGN'", "'FORCE'", "'FORMAT'", "'FREE'", + "'FROM'", "'FRONTEND'", "'FRONTENDS'", "'FULL'", "'FUNCTION'", "'FUNCTIONS'", + "'GENERATED'", "'GENERIC'", "'GLOBAL'", "'GRANT'", "'GRANTS'", "'GRAPH'", + "'GROUP'", "'GROUPING'", "'GROUPS'", "'HASH'", "'HAVING'", "'HDFS'", + "'HELP'", "'HISTOGRAM'", "'HLL'", "'HLL_UNION'", "'HOSTNAME'", "'HOTSPOT'", + "'HOUR'", "'HUB'", "'IDENTIFIED'", "'IF'", "'IGNORE'", "'IMMEDIATE'", + "'IN'", "'INCREMENTAL'", "'INDEX'", "'INDEXES'", "'INFILE'", "'INNER'", + "'INSERT'", "'INSTALL'", "'INT'", "'INTEGER'", "'INTERMEDIATE'", "'INTERSECT'", + "'INTERVAL'", "'INTO'", "'INVERTED'", "'IPV4'", "'IPV6'", "'IS'", "'IS_NOT_NULL_PRED'", + "'IS_NULL_PRED'", "'ISNULL'", "'ISOLATION'", "'JOB'", "'JOBS'", "'JOIN'", + "'JSON'", "'JSONB'", "'KEY'", "'KEYS'", "'KILL'", "'LABEL'", "'LARGEINT'", + "'LAST'", "'LATERAL'", "'LDAP'", "'LDAP_ADMIN_PASSWORD'", "'LEFT'", "'LESS'", + "'LEVEL'", "'LIKE'", "'LIMIT'", "'LINES'", "'LINK'", "'LIST'", "'LOAD'", + "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", "'LOCATION'", "'LOCK'", + "'LOGICAL'", "'LOW_PRIORITY'", "'MANUAL'", "'MAP'", "'MATCH'", "'MATCH_ALL'", + "'MATCH_ANY'", "'MATCH_PHRASE'", "'MATCH_PHRASE_EDGE'", "'MATCH_PHRASE_PREFIX'", + "'MATCH_REGEXP'", "'MATCH_NAME'", "'MATCH_NAME_GLOB'", "'MATERIALIZED'", + "'MAX'", "'MAXVALUE'", "'MEMO'", "'MERGE'", "'MIGRATE'", "'MIGRATIONS'", + "'MIN'", "'MINUS'", "'MINUTE'", "'MODIFY'", "'MONTH'", "'MTMV'", "'NAME'", + "'NAMES'", "'NATURAL'", "'NEGATIVE'", "'NEVER'", "'NEXT'", "'NGRAM_BF'", + "'NO'", "'NO_USE_MV'", "'NON_NULLABLE'", "'NOT'", "'NULL'", "'NULLS'", + "'OBSERVER'", "'OF'", "'OFFSET'", "'ON'", "'ONLY'", "'OPEN'", "'OPTIMIZED'", + "'OR'", "'ORDER'", "'OUTER'", "'OUTFILE'", "'OVER'", "'OVERWRITE'", "'PARAMETER'", + "'PARSED'", "'PARTITION'", "'PARTITIONS'", "'PASSWORD'", "'PASSWORD_EXPIRE'", + "'PASSWORD_HISTORY'", "'PASSWORD_LOCK_TIME'", "'PASSWORD_REUSE'", "'PATH'", + "'PAUSE'", "'PERCENT'", "'PERIOD'", "'PERMISSIVE'", "'PHYSICAL'", "'PI'", + "'?'", "'PLAN'", "'PLAY'", "'PRIVILEGES'", "'PROCESS'", "'PLUGIN'", "'PLUGINS'", + "'POLICY'", "'PRECEDING'", "'PREPARE'", "'PRIMARY'", "'PROC'", "'PROCEDURE'", + "'PROCESSLIST'", "'PROFILE'", "'PROPERTIES'", "'PROPERTY'", "'QUANTILE_STATE'", + "'QUANTILE_UNION'", "'QUERY'", "'QUEUED'", "'QUOTA'", "'QUALIFY'", "'QUARTER'", + "'RANDOM'", "'RANGE'", "'READ'", "'REAL'", "'REBALANCE'", "'RECENT'", + "'RECOVER'", "'RECYCLE'", "'REFRESH'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", + "'RENAME'", "'REPAIR'", "'REPEATABLE'", "'REPLACE'", "'REPLACE_IF_NOT_NULL'", + "'REPLAYER'", "'REPLICA'", "'REPOSITORIES'", "'REPOSITORY'", "'RESOURCE'", + "'RESOURCES'", "'RESTORE'", "'RESTRICTIVE'", "'RESUME'", "'RETURNS'", + "'REVOKE'", "'REWRITTEN'", "'RIGHT'", "'RLIKE'", "'ROLE'", "'ROLES'", + "'ROLLBACK'", "'ROLLUP'", "'ROUTINE'", "'ROW'", "'ROWS'", "'S3'", "'SAMPLE'", + "'SCHEDULE'", "'SCHEDULER'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SELECT'", + "'SEMI'", "'SERIALIZABLE'", "'SESSION'", "'SESSION_USER'", "'SET'", "'SETS'", + "'SET_SESSION_VARIABLE'", "'SHAPE'", "'SHOW'", "'SIGNED'", "'SKEW'", + "'SMALLINT'", "'SNAPSHOT'", "'SONAME'", "'SPLIT'", "'SQL'", "'SQL_BLOCK_RULE'", + "'STAGE'", "'STAGES'", "'START'", "'STARTS'", "'STATS'", "'STATUS'", + "'STOP'", "'STORAGE'", "'STREAM'", "'STREAMING'", "'STRING'", "'STRUCT'", + "'SUM'", "'SUPERUSER'", "'SWITCH'", "'SYNC'", "'SYSTEM'", "'TABLE'", + "'TABLES'", "'TABLESAMPLE'", "'TABLET'", "'TABLETS'", "'TASK'", "'TASKS'", + "'TEMPORARY'", "'TERMINATED'", "'TEXT'", "'THAN'", "'THEN'", "'TIME'", + "'TIMESTAMP'", "'TINYINT'", "'TO'", "'TRANSACTION'", "'TRASH'", "'TREE'", + "'TRIGGERS'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", "'TYPE_CAST'", + "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNINSTALL'", "'UNION'", + "'UNIQUE'", "'UNLOCK'", "'UNSET'", "'UNSIGNED'", "'UP'", "'UPDATE'", + "'USE'", "'USER'", "'USE_MV'", "'USING'", "'VALUE'", "'VALUES'", "'VARCHAR'", + "'VARIABLE'", "'VARIABLES'", "'VARIANT'", "'VAULT'", "'VAULTS'", "'VERBOSE'", + "'VERSION'", "'VIEW'", "'VIEWS'", "'WARM'", "'WARNINGS'", "'WEEK'", "'WHEN'", + "'WHERE'", "'WHITELIST'", "'WITH'", "'WORK'", "'WORKLOAD'", "'WRITE'", + "'XOR'", "'YEAR'", null, "'<=>'", null, "'<'", null, "'>'", null, "'+'", + "'-'", "'*'", "'/'", "'%'", "'~'", "'&'", "'&&'", "'!'", "'|'", "'||'", + "'^'", "':'", "'->'", "'/*+'", "'*/'", "'/*'", "'@'", "'@@'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "SEMICOLON", "LEFT_PAREN", "RIGHT_PAREN", "COMMA", "DOT", "DOTDOTDOT", + "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "ACCOUNT_LOCK", + "ACCOUNT_UNLOCK", "ACTIONS", "ADD", "ADMIN", "AFTER", "AGG_STATE", "AGGREGATE", + "ALIAS", "ALL", "ALTER", "ANALYZE", "ANALYZED", "AND", "ANTI", "APPEND", + "ARRAY", "AS", "ASC", "AT", "AUTHORS", "AUTO", "AUTO_INCREMENT", "ALWAYS", + "BACKEND", "BACKENDS", "BACKUP", "BEGIN", "BELONG", "BETWEEN", "BIGINT", + "BIN", "BINARY", "BINLOG", "BITAND", "BITMAP", "BITMAP_EMPTY", "BITMAP_UNION", + "BITOR", "BITXOR", "BLOB", "BOOLEAN", "BRIEF", "BROKER", "BUCKETS", "BUILD", + "BUILTIN", "BULK", "BY", "CACHE", "CACHED", "CALL", "CANCEL", "CASE", + "CAST", "CATALOG", "CATALOGS", "CHAIN", "CHAR", "CHARSET", "CHECK", "CLEAN", + "CLUSTER", "CLUSTERS", "COLLATE", "COLLATION", "COLLECT", "COLOCATE", + "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETE", + "COMPRESS_TYPE", "COMPUTE", "CONDITIONS", "CONFIG", "CONNECTION", "CONNECTION_ID", + "CONSISTENT", "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CONVERT_LSC", + "COPY", "COUNT", "CREATE", "CREATION", "CRON", "CROSS", "CUBE", "CURRENT", + "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", + "DATETIMEV2", "DATEV2", "DATETIMEV1", "DATEV1", "DAY", "DECIMAL", "DECIMALV2", + "DECIMALV3", "DECOMMISSION", "DEFAULT", "DEFERRED", "DELETE", "DEMAND", + "DESC", "DESCRIBE", "DIAGNOSE", "DIAGNOSIS", "DISK", "DISTINCT", "DISTINCTPC", + "DISTINCTPCSA", "DISTRIBUTED", "DISTRIBUTION", "DIV", "DO", "DORIS_INTERNAL_TABLE_ID", + "DOUBLE", "DROP", "DROPP", "DUAL", "DUMP", "DUPLICATE", "DYNAMIC", "E", + "ELSE", "ENABLE", "ENCRYPTKEY", "ENCRYPTKEYS", "END", "ENDS", "ENGINE", + "ENGINES", "ENTER", "ERRORS", "EVENTS", "EVERY", "EXCEPT", "EXCLUDE", + "EXECUTE", "EXISTS", "EXPIRED", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", + "EXTRACT", "FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FEATURE", "FIELDS", + "FILE", "FILTER", "FIRST", "FLOAT", "FOLLOWER", "FOLLOWING", "FOR", "FOREIGN", + "FORCE", "FORMAT", "FREE", "FROM", "FRONTEND", "FRONTENDS", "FULL", "FUNCTION", + "FUNCTIONS", "GENERATED", "GENERIC", "GLOBAL", "GRANT", "GRANTS", "GRAPH", + "GROUP", "GROUPING", "GROUPS", "HASH", "HAVING", "HDFS", "HELP", "HISTOGRAM", + "HLL", "HLL_UNION", "HOSTNAME", "HOTSPOT", "HOUR", "HUB", "IDENTIFIED", + "IF", "IGNORE", "IMMEDIATE", "IN", "INCREMENTAL", "INDEX", "INDEXES", + "INFILE", "INNER", "INSERT", "INSTALL", "INT", "INTEGER", "INTERMEDIATE", + "INTERSECT", "INTERVAL", "INTO", "INVERTED", "IPV4", "IPV6", "IS", "IS_NOT_NULL_PRED", + "IS_NULL_PRED", "ISNULL", "ISOLATION", "JOB", "JOBS", "JOIN", "JSON", + "JSONB", "KEY", "KEYS", "KILL", "LABEL", "LARGEINT", "LAST", "LATERAL", + "LDAP", "LDAP_ADMIN_PASSWORD", "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", + "LINES", "LINK", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", + "LOCATION", "LOCK", "LOGICAL", "LOW_PRIORITY", "MANUAL", "MAP", "MATCH", + "MATCH_ALL", "MATCH_ANY", "MATCH_PHRASE", "MATCH_PHRASE_EDGE", "MATCH_PHRASE_PREFIX", + "MATCH_REGEXP", "MATCH_NAME", "MATCH_NAME_GLOB", "MATERIALIZED", "MAX", + "MAXVALUE", "MEMO", "MERGE", "MIGRATE", "MIGRATIONS", "MIN", "MINUS", + "MINUTE", "MODIFY", "MONTH", "MTMV", "NAME", "NAMES", "NATURAL", "NEGATIVE", + "NEVER", "NEXT", "NGRAM_BF", "NO", "NO_USE_MV", "NON_NULLABLE", "NOT", + "NULL", "NULLS", "OBSERVER", "OF", "OFFSET", "ON", "ONLY", "OPEN", "OPTIMIZED", + "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "OVERWRITE", "PARAMETER", + "PARSED", "PARTITION", "PARTITIONS", "PASSWORD", "PASSWORD_EXPIRE", "PASSWORD_HISTORY", + "PASSWORD_LOCK_TIME", "PASSWORD_REUSE", "PATH", "PAUSE", "PERCENT", "PERIOD", + "PERMISSIVE", "PHYSICAL", "PI", "PLACEHOLDER", "PLAN", "PLAY", "PRIVILEGES", + "PROCESS", "PLUGIN", "PLUGINS", "POLICY", "PRECEDING", "PREPARE", "PRIMARY", + "PROC", "PROCEDURE", "PROCESSLIST", "PROFILE", "PROPERTIES", "PROPERTY", + "QUANTILE_STATE", "QUANTILE_UNION", "QUERY", "QUEUED", "QUOTA", "QUALIFY", + "QUARTER", "RANDOM", "RANGE", "READ", "REAL", "REBALANCE", "RECENT", + "RECOVER", "RECYCLE", "REFRESH", "REFERENCES", "REGEXP", "RELEASE", "RENAME", + "REPAIR", "REPEATABLE", "REPLACE", "REPLACE_IF_NOT_NULL", "REPLAYER", + "REPLICA", "REPOSITORIES", "REPOSITORY", "RESOURCE", "RESOURCES", "RESTORE", + "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITTEN", "RIGHT", "RLIKE", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW", "ROWS", "S3", + "SAMPLE", "SCHEDULE", "SCHEDULER", "SCHEMA", "SCHEMAS", "SECOND", "SELECT", + "SEMI", "SERIALIZABLE", "SESSION", "SESSION_USER", "SET", "SETS", "SET_SESSION_VARIABLE", + "SHAPE", "SHOW", "SIGNED", "SKEW", "SMALLINT", "SNAPSHOT", "SONAME", + "SPLIT", "SQL", "SQL_BLOCK_RULE", "STAGE", "STAGES", "START", "STARTS", + "STATS", "STATUS", "STOP", "STORAGE", "STREAM", "STREAMING", "STRING", + "STRUCT", "SUM", "SUPERUSER", "SWITCH", "SYNC", "SYSTEM", "TABLE", "TABLES", + "TABLESAMPLE", "TABLET", "TABLETS", "TASK", "TASKS", "TEMPORARY", "TERMINATED", + "TEXT", "THAN", "THEN", "TIME", "TIMESTAMP", "TINYINT", "TO", "TRANSACTION", + "TRASH", "TREE", "TRIGGERS", "TRIM", "TRUE", "TRUNCATE", "TYPE", "TYPECAST", + "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNINSTALL", "UNION", "UNIQUE", + "UNLOCK", "UNSET", "UNSIGNED", "UP", "UPDATE", "USE", "USER", "USE_MV", + "USING", "VALUE", "VALUES", "VARCHAR", "VARIABLE", "VARIABLES", "VARIANT", + "VAULT", "VAULTS", "VERBOSE", "VERSION", "VIEW", "VIEWS", "WARM", "WARNINGS", + "WEEK", "WHEN", "WHERE", "WHITELIST", "WITH", "WORK", "WORKLOAD", "WRITE", + "XOR", "YEAR", "EQ", "NSEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", + "SUBTRACT", "ASTERISK", "SLASH", "MOD", "TILDE", "AMPERSAND", "LOGICALAND", + "LOGICALNOT", "PIPE", "DOUBLEPIPES", "HAT", "COLON", "ARROW", "HINT_START", + "HINT_END", "COMMENT_START", "ATSIGN", "DOUBLEATSIGN", "STRING_LITERAL", + "LEADING_STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", + "INTEGER_VALUE", "EXPONENT_VALUE", "DECIMAL_VALUE", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "FROM_DUAL", "WS", "UNRECOGNIZED" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + /** + * When true, parser should throw ParseExcetion for unclosed bracketed comment. + */ + public boolean has_unclosed_bracketed_comment = false; + + /** + * Verify whether current token is a valid decimal token (which contains dot). + * Returns true if the character that follows the token is not a digit or letter or underscore. + * + * For example: + * For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. + * For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. + * For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. + * For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed + * by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' + * which is not a digit or letter or underscore. + */ + public boolean isValidDecimal() { + int nextChar = _input.LA(1); + if (nextChar >= 'A' && nextChar <= 'Z' || nextChar >= '0' && nextChar <= '9' || + nextChar == '_') { + return false; + } else { + return true; + } + } + + /** + * This method will be called when the character stream ends and try to find out the + * unclosed bracketed comment. + * If the method be called, it means the end of the entire character stream match, + * and we set the flag and fail later. + */ + public void markUnclosedComment() { + has_unclosed_bracketed_comment = true; + } + + + public DorisLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "DorisLexer.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + @Override + public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { + switch (ruleIndex) { + case 544: + BRACKETED_COMMENT_action((RuleContext)_localctx, actionIndex); + break; + } + } + private void BRACKETED_COMMENT_action(RuleContext _localctx, int actionIndex) { + switch (actionIndex) { + case 0: + markUnclosedComment(); + break; + } + } + @Override + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 534: + return EXPONENT_VALUE_sempred((RuleContext)_localctx, predIndex); + case 535: + return DECIMAL_VALUE_sempred((RuleContext)_localctx, predIndex); + case 536: + return BIGDECIMAL_LITERAL_sempred((RuleContext)_localctx, predIndex); + } + return true; + } + private boolean EXPONENT_VALUE_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return isValidDecimal(); + } + return true; + } + private boolean DECIMAL_VALUE_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return isValidDecimal(); + } + return true; + } + private boolean BIGDECIMAL_LITERAL_sempred(RuleContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return isValidDecimal(); + } + return true; + } + + private static final String _serializedATNSegment0 = + "\u0004\u0000\u0220\u149f\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ + "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ + "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ + "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ + "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ + "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ + "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ + "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ + "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ + "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ + "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ + "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+ + "&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002"+ + "+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0002"+ + "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+ + "5\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002"+ + ":\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002"+ + "?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002"+ + "D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002"+ + "I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002"+ + "N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002"+ + "S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002"+ + "X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002"+ + "]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+ + "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+ + "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+ + "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+ + "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+ + "v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002"+ + "{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f"+ + "\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082"+ + "\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085"+ + "\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088"+ + "\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b"+ + "\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e"+ + "\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091"+ + "\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094"+ + "\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097"+ + "\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a"+ + "\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d"+ + "\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0"+ + "\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3"+ + "\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6"+ + "\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9"+ + "\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac"+ + "\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af"+ + "\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2"+ + "\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5"+ + "\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8"+ + "\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb"+ + "\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be"+ + "\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1"+ + "\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4"+ + "\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7"+ + "\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca"+ + "\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd"+ + "\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0"+ + "\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3"+ + "\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6"+ + "\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9"+ + "\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc"+ + "\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df"+ + "\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2"+ + "\u0002\u00e3\u0007\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5"+ + "\u0002\u00e6\u0007\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8"+ + "\u0002\u00e9\u0007\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb"+ + "\u0002\u00ec\u0007\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee"+ + "\u0002\u00ef\u0007\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1"+ + "\u0002\u00f2\u0007\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4"+ + "\u0002\u00f5\u0007\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7"+ + "\u0002\u00f8\u0007\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa"+ + "\u0002\u00fb\u0007\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd"+ + "\u0002\u00fe\u0007\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100"+ + "\u0002\u0101\u0007\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103"+ + "\u0002\u0104\u0007\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106"+ + "\u0002\u0107\u0007\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109"+ + "\u0002\u010a\u0007\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c"+ + "\u0002\u010d\u0007\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f"+ + "\u0002\u0110\u0007\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112"+ + "\u0002\u0113\u0007\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115"+ + "\u0002\u0116\u0007\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118"+ + "\u0002\u0119\u0007\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b"+ + "\u0002\u011c\u0007\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e"+ + "\u0002\u011f\u0007\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121"+ + "\u0002\u0122\u0007\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124"+ + "\u0002\u0125\u0007\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127"+ + "\u0002\u0128\u0007\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a"+ + "\u0002\u012b\u0007\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d"+ + "\u0002\u012e\u0007\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130"+ + "\u0002\u0131\u0007\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133"+ + "\u0002\u0134\u0007\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136"+ + "\u0002\u0137\u0007\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139"+ + "\u0002\u013a\u0007\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c"+ + "\u0002\u013d\u0007\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f"+ + "\u0002\u0140\u0007\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142"+ + "\u0002\u0143\u0007\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145"+ + "\u0002\u0146\u0007\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148"+ + "\u0002\u0149\u0007\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b"+ + "\u0002\u014c\u0007\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e"+ + "\u0002\u014f\u0007\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151"+ + "\u0002\u0152\u0007\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154"+ + "\u0002\u0155\u0007\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157"+ + "\u0002\u0158\u0007\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a"+ + "\u0002\u015b\u0007\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d"+ + "\u0002\u015e\u0007\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160"+ + "\u0002\u0161\u0007\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163"+ + "\u0002\u0164\u0007\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166"+ + "\u0002\u0167\u0007\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169"+ + "\u0002\u016a\u0007\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c"+ + "\u0002\u016d\u0007\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f"+ + "\u0002\u0170\u0007\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172"+ + "\u0002\u0173\u0007\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175"+ + "\u0002\u0176\u0007\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178"+ + "\u0002\u0179\u0007\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b"+ + "\u0002\u017c\u0007\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e"+ + "\u0002\u017f\u0007\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181"+ + "\u0002\u0182\u0007\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184"+ + "\u0002\u0185\u0007\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187"+ + "\u0002\u0188\u0007\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a"+ + "\u0002\u018b\u0007\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d"+ + "\u0002\u018e\u0007\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190"+ + "\u0002\u0191\u0007\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193"+ + "\u0002\u0194\u0007\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196"+ + "\u0002\u0197\u0007\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199"+ + "\u0002\u019a\u0007\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c"+ + "\u0002\u019d\u0007\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f"+ + "\u0002\u01a0\u0007\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2"+ + "\u0002\u01a3\u0007\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5"+ + "\u0002\u01a6\u0007\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8"+ + "\u0002\u01a9\u0007\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab"+ + "\u0002\u01ac\u0007\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae"+ + "\u0002\u01af\u0007\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1"+ + "\u0002\u01b2\u0007\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4"+ + "\u0002\u01b5\u0007\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7"+ + "\u0002\u01b8\u0007\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba"+ + "\u0002\u01bb\u0007\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd"+ + "\u0002\u01be\u0007\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0"+ + "\u0002\u01c1\u0007\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3"+ + "\u0002\u01c4\u0007\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6"+ + "\u0002\u01c7\u0007\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9"+ + "\u0002\u01ca\u0007\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc"+ + "\u0002\u01cd\u0007\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf"+ + "\u0002\u01d0\u0007\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2"+ + "\u0002\u01d3\u0007\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5"+ + "\u0002\u01d6\u0007\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8"+ + "\u0002\u01d9\u0007\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db"+ + "\u0002\u01dc\u0007\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de"+ + "\u0002\u01df\u0007\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1"+ + "\u0002\u01e2\u0007\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4"+ + "\u0002\u01e5\u0007\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7"+ + "\u0002\u01e8\u0007\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea"+ + "\u0002\u01eb\u0007\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed"+ + "\u0002\u01ee\u0007\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0"+ + "\u0002\u01f1\u0007\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3"+ + "\u0002\u01f4\u0007\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6"+ + "\u0002\u01f7\u0007\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9"+ + "\u0002\u01fa\u0007\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc"+ + "\u0002\u01fd\u0007\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff"+ + "\u0002\u0200\u0007\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202"+ + "\u0002\u0203\u0007\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205"+ + "\u0002\u0206\u0007\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208"+ + "\u0002\u0209\u0007\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b"+ + "\u0002\u020c\u0007\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e"+ + "\u0002\u020f\u0007\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211"+ + "\u0002\u0212\u0007\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214"+ + "\u0002\u0215\u0007\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217"+ + "\u0002\u0218\u0007\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a"+ + "\u0002\u021b\u0007\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d"+ + "\u0002\u021e\u0007\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220"+ + "\u0002\u0221\u0007\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223"+ + "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ + "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007"+ + "\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+ + "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+ + "\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001"+ + "\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001"+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001"+ + "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001"+ + "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ + "\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ + "\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001"+ + "\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ + "\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+ + "\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+ + "\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001"+ + "\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+ + "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 "+ + "\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001"+ + "!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+ + "\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ + "#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001%\u0001"+ + "%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+ + "\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001)\u0001)\u0001"+ + ")\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001"+ + "+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001"+ + ",\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + ".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+ + "/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u0001"+ + "0\u00010\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u0001"+ + "2\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ + "3\u00013\u00014\u00014\u00014\u00014\u00014\u00014\u00015\u00015\u0001"+ + "5\u00015\u00015\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u0001"+ + "6\u00016\u00016\u00017\u00017\u00017\u00017\u00017\u00017\u00018\u0001"+ + "8\u00018\u00018\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u0001"+ + "9\u00019\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+ + ";\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001=\u0001=\u0001"+ + "=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ + "?\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ + "A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001"+ + "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001"+ + "C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001"+ + "D\u0001D\u0001D\u0001D\u0001D\u0001D\u0003D\u0606\bD\u0001E\u0001E\u0001"+ + "E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001"+ + "F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001H\u0001H\u0001"+ + "H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001"+ + "I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+ + "J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+ + "K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001"+ + "L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+ + "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001"+ + "O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+ + "P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ + "R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+ + "S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001T\u0001T\u0001"+ + "T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001"+ + "U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001"+ + "U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001"+ + "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+ + "X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001"+ + "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001"+ + "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ + "Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+ + "[\u0001[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ + "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001]\u0001]"+ + "\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]\u0001^\u0001^\u0001"+ + "^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001"+ + "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+ + "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+ + "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+ + "_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001"+ + "a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+ + "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001"+ + "d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ + "f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ + "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ + "h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001"+ + "i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001"+ + "i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ + "j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ + "k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"+ + "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ + "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ + "p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ + "q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ + "r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ + "s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ + "t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ + "w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ + "x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ + "y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+ + "z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001"+ + "{\u0001{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001"+ + "|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001"+ + "~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ + "\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080"+ + "\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081"+ + "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+ + "\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ + "\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ + "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084"+ + "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ + "\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+ + "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+ + "\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ + "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ + "\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088"+ + "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088"+ + "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+ + "\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c"+ + "\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008d"+ + "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e"+ + "\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008f\u0001\u008f"+ + "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090"+ + "\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+ + "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+ + "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+ + "\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094"+ + "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095"+ + "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096"+ + "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096"+ + "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097"+ + "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097"+ + "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098\u0001\u0098"+ + "\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099"+ + "\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+ + "\u0001\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+ + "\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c"+ + "\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d"+ + "\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009e\u0001\u009e"+ + "\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009f"+ + "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0"+ + "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+ + "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+ + "\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2"+ + "\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3"+ + "\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4"+ + "\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+ + "\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+ + "\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ + "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7"+ + "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ + "\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+ + "\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0001\u00a9"+ + "\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9"+ + "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ + "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ + "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ + "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00ab\u0001\u00ab"+ + "\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001\u00ac"+ + "\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad"+ + "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae"+ + "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ + "\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00b0"+ + "\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+ + "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+ + "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ + "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6"+ + "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6"+ + "\u0001\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ + "\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+ + "\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9"+ + "\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ + "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ + "\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+ + "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf"+ + "\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+ + "\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1"+ + "\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+ + "\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+ + "\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+ + "\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ + "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6"+ + "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7"+ + "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+ + "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ + "\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+ + "\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca"+ + "\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb"+ + "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd"+ + "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+ + "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ + "\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ + "\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0"+ + "\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ + "\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1"+ + "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2"+ + "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ + "\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ + "\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6"+ + "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d7\u0001\u00d7"+ + "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+ + "\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9"+ + "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9"+ + "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da"+ + "\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db"+ + "\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+ + "\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+ + "\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ + "\u0001\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+ + "\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001\u00df\u0001\u00df"+ + "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00e0"+ + "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+ + "\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2"+ + "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+ + "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+ + "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+ + "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001\u00e4"+ + "\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4"+ + "\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5"+ + "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ + "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7"+ + "\u0001\u00e7\u0001\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8"+ + "\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001\u00ea"+ + "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ + "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ + "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb"+ + "\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb"+ + "\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00ec\u0001\u00ec"+ + "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ed"+ + "\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+ + "\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee\u0001\u00ee"+ + "\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef"+ + "\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f1"+ + "\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2"+ + "\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3"+ + "\u0001\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4"+ + "\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5"+ + "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+ + "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7"+ + "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f8"+ + "\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9"+ + "\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa"+ + "\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ + "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ + "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ + "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc"+ + "\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd"+ + "\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe"+ + "\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff"+ + "\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100"+ + "\u0001\u0100\u0001\u0100\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+ + "\u0001\u0101\u0001\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102"+ + "\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103"+ + "\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0105"+ + "\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0106"+ + "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106"+ + "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107\u0001\u0107"+ + "\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+ + "\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+ + "\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108"+ + "\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001\u0109"+ + "\u0001\u0109\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a"+ + "\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b"+ + "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b"+ + "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c"+ + "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+ + "\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e"+ + "\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010f\u0001\u010f"+ + "\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f"+ + "\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110"+ + "\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110"+ + "\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+ + "\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+ + "\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+ + "\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+ + "\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+ + "\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ + "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ + "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ + "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0001\u0114"+ + "\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114"+ + "\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0115\u0001\u0115"+ + "\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ + "\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116"+ + "\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+ + "\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+ + "\u0001\u0116\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117"+ + "\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117"+ + "\u0001\u0117\u0001\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118"+ + "\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119"+ + "\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u011a\u0001\u011a\u0001\u011a"+ + "\u0001\u011a\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b"+ + "\u0001\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+ + "\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011d\u0001\u011d"+ + "\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d"+ + "\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e\u0001\u011e"+ + "\u0001\u011e\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f"+ + "\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+ + "\u0001\u0120\u0001\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+ + "\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0122\u0001\u0122\u0001\u0122"+ + "\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001\u0123\u0001\u0123"+ + "\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124"+ + "\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125"+ + "\u0001\u0125\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+ + "\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001\u0127"+ + "\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+ + "\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+ + "\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u012a"+ + "\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+ + "\u0001\u012a\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012c"+ + "\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+ + "\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012d\u0001\u012d\u0001\u012d"+ + "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+ + "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012e\u0001\u012e"+ + "\u0001\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f"+ + "\u0001\u012f\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+ + "\u0001\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131"+ + "\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0132\u0001\u0132"+ + "\u0001\u0132\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133"+ + "\u0001\u0133\u0001\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135"+ + "\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0136\u0001\u0136"+ + "\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0137\u0001\u0137\u0001\u0137"+ + "\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137"+ + "\u0001\u0137\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0139\u0001\u0139"+ + "\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u013a\u0001\u013a"+ + "\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013b\u0001\u013b"+ + "\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+ + "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013d"+ + "\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+ + "\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013e\u0001\u013e\u0001\u013e"+ + "\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e"+ + "\u0001\u013e\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f"+ + "\u0001\u013f\u0001\u013f\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+ + "\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+ + "\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+ + "\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0142"+ + "\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142"+ + "\u0001\u0142\u0001\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ + "\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ + "\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ + "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+ + "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+ + "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0145"+ + "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ + "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ + "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ + "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+ + "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+ + "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147"+ + "\u0001\u0147\u0001\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+ + "\u0001\u0148\u0001\u0148\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149"+ + "\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a"+ + "\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014b"+ + "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ + "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014c\u0001\u014c"+ + "\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+ + "\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014e\u0001\u014e"+ + "\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u0150"+ + "\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001\u0151"+ + "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151"+ + "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001\u0152"+ + "\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0153"+ + "\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+ + "\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+ + "\u0001\u0154\u0001\u0154\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155"+ + "\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0156\u0001\u0156\u0001\u0156"+ + "\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156"+ + "\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157"+ + "\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0158\u0001\u0158\u0001\u0158"+ + "\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0159"+ + "\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u015a\u0001\u015a"+ + "\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a"+ + "\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+ + "\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+ + "\u0001\u015b\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+ + "\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015d\u0001\u015d"+ + "\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d"+ + "\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015e\u0001\u015e\u0001\u015e"+ + "\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+ + "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+ + "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+ + "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u0160\u0001\u0160\u0001\u0160"+ + "\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ + "\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ + "\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161"+ + "\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162"+ + "\u0001\u0162\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163"+ + "\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+ + "\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0165\u0001\u0165\u0001\u0165"+ + "\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0166"+ + "\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166"+ + "\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167"+ + "\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169"+ + "\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u016a\u0001\u016a"+ + "\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a"+ + "\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b"+ + "\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016c\u0001\u016c\u0001\u016c"+ + "\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016d"+ + "\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d"+ + "\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e"+ + "\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f"+ + "\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f"+ + "\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170"+ + "\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0171\u0001\u0171\u0001\u0171"+ + "\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0172"+ + "\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172"+ + "\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+ + "\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+ + "\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+ + "\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175"+ + "\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+ + "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+ + "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+ + "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0177\u0001\u0177"+ + "\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177"+ + "\u0001\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+ + "\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179"+ + "\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ + "\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u017a\u0001\u017a"+ + "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+ + "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017b\u0001\u017b\u0001\u017b"+ + "\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+ + "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ + "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ + "\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+ + "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ + "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ + "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f"+ + "\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180"+ + "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181"+ + "\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0182\u0001\u0182"+ + "\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+ + "\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183"+ + "\u0001\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184"+ + "\u0001\u0184\u0001\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185"+ + "\u0001\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186"+ + "\u0001\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187"+ + "\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188"+ + "\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189"+ + "\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189"+ + "\u0001\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018b"+ + "\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c"+ + "\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d"+ + "\u0001\u018d\u0001\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+ + "\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018f"+ + "\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+ + "\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u0190\u0001\u0190\u0001\u0190"+ + "\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0191\u0001\u0191"+ + "\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+ + "\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192"+ + "\u0001\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+ + "\u0001\u0193\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194"+ + "\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+ + "\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+ + "\u0001\u0195\u0001\u0195\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+ + "\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0197\u0001\u0197"+ + "\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ + "\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198"+ + "\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199"+ + "\u0001\u0199\u0001\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ + "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ + "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ + "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019b"+ + "\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c"+ + "\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d"+ + "\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019e"+ + "\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019f\u0001\u019f"+ + "\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+ + "\u0001\u019f\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0"+ + "\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1"+ + "\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a2"+ + "\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3"+ + "\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ + "\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ + "\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ + "\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5"+ + "\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ + "\u0001\u01a6\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+ + "\u0001\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8"+ + "\u0001\u01a8\u0001\u01a8\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ + "\u0001\u01a9\u0001\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ + "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ + "\u0001\u01ab\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ + "\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ad\u0001\u01ad"+ + "\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ae"+ + "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+ + "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01af\u0001\u01af\u0001\u01af"+ + "\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01b0\u0001\u01b0"+ + "\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b1"+ + "\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b2\u0001\u01b2\u0001\u01b2"+ + "\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+ + "\u0001\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3"+ + "\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+ + "\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5"+ + "\u0001\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+ + "\u0001\u01b6\u0001\u01b6\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+ + "\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8"+ + "\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8"+ + "\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001\u01b9\u0001\u01b9"+ + "\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba"+ + "\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba"+ + "\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bc"+ + "\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bd"+ + "\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd"+ + "\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be"+ + "\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be"+ + "\u0001\u01be\u0001\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf"+ + "\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0"+ + "\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c2"+ + "\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c3\u0001\u01c3"+ + "\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+ + "\u0001\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+ + "\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5"+ + "\u0001\u01c5\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6"+ + "\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6"+ + "\u0001\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7"+ + "\u0001\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+ + "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+ + "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca"+ + "\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb"+ + "\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+ + "\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cd\u0001\u01cd"+ + "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce"+ + "\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+ + "\u0001\u01ce\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf"+ + "\u0001\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0"+ + "\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d1"+ + "\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+ + "\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d2"+ + "\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2"+ + "\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3"+ + "\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4"+ + "\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d5\u0001\u01d5"+ + "\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d6"+ + "\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d7"+ + "\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+ + "\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9"+ + "\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ + "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01db\u0001\u01db"+ + "\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc"+ + "\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dd\u0001\u01dd"+ + "\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01de\u0001\u01de"+ + "\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01df\u0001\u01df"+ + "\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01e0"+ + "\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0"+ + "\u0001\u01e0\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1"+ + "\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e2\u0001\u01e2"+ + "\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2"+ + "\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3"+ + "\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e4\u0001\u01e4"+ + "\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e5\u0001\u01e5"+ + "\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e6"+ + "\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6"+ + "\u0001\u01e6\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7"+ + "\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8"+ + "\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9"+ + "\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea"+ + "\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb"+ + "\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01ec\u0001\u01ec"+ + "\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed"+ + "\u0001\u01ed\u0001\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+ + "\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef"+ + "\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef"+ + "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f1"+ + "\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f2\u0001\u01f2"+ + "\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2"+ + "\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3"+ + "\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f5"+ + "\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f6\u0001\u01f6"+ + "\u0001\u01f6\u0003\u01f6\u136e\b\u01f6\u0001\u01f7\u0001\u01f7\u0001\u01f7"+ + "\u0001\u01f7\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0003\u01f8"+ + "\u1378\b\u01f8\u0001\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ + "\u0001\u01fa\u0003\u01fa\u1380\b\u01fa\u0001\u01fb\u0001\u01fb\u0001\u01fc"+ + "\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0003\u01fc\u1388\b\u01fc\u0001\u01fd"+ + "\u0001\u01fd\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001\u01ff\u0001\u0200"+ + "\u0001\u0200\u0001\u0201\u0001\u0201\u0001\u0202\u0001\u0202\u0001\u0203"+ + "\u0001\u0203\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0205\u0001\u0205"+ + "\u0001\u0206\u0001\u0206\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0208"+ + "\u0001\u0208\u0001\u0209\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a"+ + "\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020c\u0001\u020c"+ + "\u0001\u020c\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e"+ + "\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u0210\u0001\u0210\u0001\u0210"+ + "\u0001\u0210\u0001\u0210\u0001\u0210\u0005\u0210\u13be\b\u0210\n\u0210"+ + "\f\u0210\u13c1\t\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+ + "\u0001\u0210\u0001\u0210\u0001\u0210\u0005\u0210\u13ca\b\u0210\n\u0210"+ + "\f\u0210\u13cd\t\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+ + "\u0001\u0210\u0005\u0210\u13d4\b\u0210\n\u0210\f\u0210\u13d7\t\u0210\u0001"+ + "\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0005\u0210\u13de"+ + "\b\u0210\n\u0210\f\u0210\u13e1\t\u0210\u0001\u0210\u0003\u0210\u13e4\b"+ + "\u0210\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0003\u0211\u13ea"+ + "\b\u0211\u0001\u0212\u0004\u0212\u13ed\b\u0212\u000b\u0212\f\u0212\u13ee"+ + "\u0001\u0212\u0001\u0212\u0001\u0213\u0004\u0213\u13f4\b\u0213\u000b\u0213"+ + "\f\u0213\u13f5\u0001\u0213\u0001\u0213\u0001\u0214\u0004\u0214\u13fb\b"+ + "\u0214\u000b\u0214\f\u0214\u13fc\u0001\u0214\u0001\u0214\u0001\u0215\u0004"+ + "\u0215\u1402\b\u0215\u000b\u0215\f\u0215\u1403\u0001\u0216\u0004\u0216"+ + "\u1407\b\u0216\u000b\u0216\f\u0216\u1408\u0001\u0216\u0001\u0216\u0001"+ + "\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0003\u0216\u1411\b\u0216\u0001"+ + "\u0217\u0001\u0217\u0001\u0217\u0001\u0218\u0004\u0218\u1417\b\u0218\u000b"+ + "\u0218\f\u0218\u1418\u0001\u0218\u0003\u0218\u141c\b\u0218\u0001\u0218"+ + "\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0003\u0218\u1423\b\u0218"+ + "\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0003\u0218"+ + "\u142a\b\u0218\u0001\u0219\u0001\u0219\u0001\u0219\u0004\u0219\u142f\b"+ + "\u0219\u000b\u0219\f\u0219\u1430\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+ + "\u021a\u0005\u021a\u1437\b\u021a\n\u021a\f\u021a\u143a\t\u021a\u0001\u021a"+ + "\u0001\u021a\u0001\u021b\u0004\u021b\u143f\b\u021b\u000b\u021b\f\u021b"+ + "\u1440\u0001\u021b\u0001\u021b\u0005\u021b\u1445\b\u021b\n\u021b\f\u021b"+ + "\u1448\t\u021b\u0001\u021b\u0001\u021b\u0004\u021b\u144c\b\u021b\u000b"+ + "\u021b\f\u021b\u144d\u0003\u021b\u1450\b\u021b\u0001\u021c\u0001\u021c"+ + "\u0003\u021c\u1454\b\u021c\u0001\u021c\u0004\u021c\u1457\b\u021c\u000b"+ + "\u021c\f\u021c\u1458\u0001\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001"+ + "\u021e\u0001\u021e\u0003\u021e\u1461\b\u021e\u0001\u021f\u0001\u021f\u0001"+ + "\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0005\u021f\u1469\b\u021f\n"+ + "\u021f\f\u021f\u146c\t\u021f\u0001\u021f\u0003\u021f\u146f\b\u021f\u0001"+ + "\u021f\u0003\u021f\u1472\b\u021f\u0001\u021f\u0001\u021f\u0001\u0220\u0001"+ + "\u0220\u0001\u0220\u0005\u0220\u1479\b\u0220\n\u0220\f\u0220\u147c\t\u0220"+ + "\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0003\u0220\u1482\b\u0220"+ + "\u0001\u0220\u0001\u0220\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221"+ + "\u0001\u0221\u0001\u0221\u0004\u0221\u148c\b\u0221\u000b\u0221\f\u0221"+ + "\u148d\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001"+ + "\u0221\u0001\u0221\u0001\u0222\u0004\u0222\u1498\b\u0222\u000b\u0222\f"+ + "\u0222\u1499\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u147a"+ + "\u0000\u0224\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b"+ + "\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b"+ + "\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016"+ + "-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\""+ + "E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e3g4i5k6m7o8q9s:u;w}?\u007f@\u0081"+ + "A\u0083B\u0085C\u0087D\u0089E\u008bF\u008dG\u008fH\u0091I\u0093J\u0095"+ + "K\u0097L\u0099M\u009bN\u009dO\u009fP\u00a1Q\u00a3R\u00a5S\u00a7T\u00a9"+ + "U\u00abV\u00adW\u00afX\u00b1Y\u00b3Z\u00b5[\u00b7\\\u00b9]\u00bb^\u00bd"+ + "_\u00bf`\u00c1a\u00c3b\u00c5c\u00c7d\u00c9e\u00cbf\u00cdg\u00cfh\u00d1"+ + "i\u00d3j\u00d5k\u00d7l\u00d9m\u00dbn\u00ddo\u00dfp\u00e1q\u00e3r\u00e5"+ + "s\u00e7t\u00e9u\u00ebv\u00edw\u00efx\u00f1y\u00f3z\u00f5{\u00f7|\u00f9"+ + "}\u00fb~\u00fd\u007f\u00ff\u0080\u0101\u0081\u0103\u0082\u0105\u0083\u0107"+ + "\u0084\u0109\u0085\u010b\u0086\u010d\u0087\u010f\u0088\u0111\u0089\u0113"+ + "\u008a\u0115\u008b\u0117\u008c\u0119\u008d\u011b\u008e\u011d\u008f\u011f"+ + "\u0090\u0121\u0091\u0123\u0092\u0125\u0093\u0127\u0094\u0129\u0095\u012b"+ + "\u0096\u012d\u0097\u012f\u0098\u0131\u0099\u0133\u009a\u0135\u009b\u0137"+ + "\u009c\u0139\u009d\u013b\u009e\u013d\u009f\u013f\u00a0\u0141\u00a1\u0143"+ + "\u00a2\u0145\u00a3\u0147\u00a4\u0149\u00a5\u014b\u00a6\u014d\u00a7\u014f"+ + "\u00a8\u0151\u00a9\u0153\u00aa\u0155\u00ab\u0157\u00ac\u0159\u00ad\u015b"+ + "\u00ae\u015d\u00af\u015f\u00b0\u0161\u00b1\u0163\u00b2\u0165\u00b3\u0167"+ + "\u00b4\u0169\u00b5\u016b\u00b6\u016d\u00b7\u016f\u00b8\u0171\u00b9\u0173"+ + "\u00ba\u0175\u00bb\u0177\u00bc\u0179\u00bd\u017b\u00be\u017d\u00bf\u017f"+ + "\u00c0\u0181\u00c1\u0183\u00c2\u0185\u00c3\u0187\u00c4\u0189\u00c5\u018b"+ + "\u00c6\u018d\u00c7\u018f\u00c8\u0191\u00c9\u0193\u00ca\u0195\u00cb\u0197"+ + "\u00cc\u0199\u00cd\u019b\u00ce\u019d\u00cf\u019f\u00d0\u01a1\u00d1\u01a3"+ + "\u00d2\u01a5\u00d3\u01a7\u00d4\u01a9\u00d5\u01ab\u00d6\u01ad\u00d7\u01af"+ + "\u00d8\u01b1\u00d9\u01b3\u00da\u01b5\u00db\u01b7\u00dc\u01b9\u00dd\u01bb"+ + "\u00de\u01bd\u00df\u01bf\u00e0\u01c1\u00e1\u01c3\u00e2\u01c5\u00e3\u01c7"+ + "\u00e4\u01c9\u00e5\u01cb\u00e6\u01cd\u00e7\u01cf\u00e8\u01d1\u00e9\u01d3"+ + "\u00ea\u01d5\u00eb\u01d7\u00ec\u01d9\u00ed\u01db\u00ee\u01dd\u00ef\u01df"+ + "\u00f0\u01e1\u00f1\u01e3\u00f2\u01e5\u00f3\u01e7\u00f4\u01e9\u00f5\u01eb"+ + "\u00f6\u01ed\u00f7\u01ef\u00f8\u01f1\u00f9\u01f3\u00fa\u01f5\u00fb\u01f7"+ + "\u00fc\u01f9\u00fd\u01fb\u00fe\u01fd\u00ff\u01ff\u0100\u0201\u0101\u0203"+ + "\u0102\u0205\u0103\u0207\u0104\u0209\u0105\u020b\u0106\u020d\u0107\u020f"+ + "\u0108\u0211\u0109\u0213\u010a\u0215\u010b\u0217\u010c\u0219\u010d\u021b"+ + "\u010e\u021d\u010f\u021f\u0110\u0221\u0111\u0223\u0112\u0225\u0113\u0227"+ + "\u0114\u0229\u0115\u022b\u0116\u022d\u0117\u022f\u0118\u0231\u0119\u0233"+ + "\u011a\u0235\u011b\u0237\u011c\u0239\u011d\u023b\u011e\u023d\u011f\u023f"+ + "\u0120\u0241\u0121\u0243\u0122\u0245\u0123\u0247\u0124\u0249\u0125\u024b"+ + "\u0126\u024d\u0127\u024f\u0128\u0251\u0129\u0253\u012a\u0255\u012b\u0257"+ + "\u012c\u0259\u012d\u025b\u012e\u025d\u012f\u025f\u0130\u0261\u0131\u0263"+ + "\u0132\u0265\u0133\u0267\u0134\u0269\u0135\u026b\u0136\u026d\u0137\u026f"+ + "\u0138\u0271\u0139\u0273\u013a\u0275\u013b\u0277\u013c\u0279\u013d\u027b"+ + "\u013e\u027d\u013f\u027f\u0140\u0281\u0141\u0283\u0142\u0285\u0143\u0287"+ + "\u0144\u0289\u0145\u028b\u0146\u028d\u0147\u028f\u0148\u0291\u0149\u0293"+ + "\u014a\u0295\u014b\u0297\u014c\u0299\u014d\u029b\u014e\u029d\u014f\u029f"+ + "\u0150\u02a1\u0151\u02a3\u0152\u02a5\u0153\u02a7\u0154\u02a9\u0155\u02ab"+ + "\u0156\u02ad\u0157\u02af\u0158\u02b1\u0159\u02b3\u015a\u02b5\u015b\u02b7"+ + "\u015c\u02b9\u015d\u02bb\u015e\u02bd\u015f\u02bf\u0160\u02c1\u0161\u02c3"+ + "\u0162\u02c5\u0163\u02c7\u0164\u02c9\u0165\u02cb\u0166\u02cd\u0167\u02cf"+ + "\u0168\u02d1\u0169\u02d3\u016a\u02d5\u016b\u02d7\u016c\u02d9\u016d\u02db"+ + "\u016e\u02dd\u016f\u02df\u0170\u02e1\u0171\u02e3\u0172\u02e5\u0173\u02e7"+ + "\u0174\u02e9\u0175\u02eb\u0176\u02ed\u0177\u02ef\u0178\u02f1\u0179\u02f3"+ + "\u017a\u02f5\u017b\u02f7\u017c\u02f9\u017d\u02fb\u017e\u02fd\u017f\u02ff"+ + "\u0180\u0301\u0181\u0303\u0182\u0305\u0183\u0307\u0184\u0309\u0185\u030b"+ + "\u0186\u030d\u0187\u030f\u0188\u0311\u0189\u0313\u018a\u0315\u018b\u0317"+ + "\u018c\u0319\u018d\u031b\u018e\u031d\u018f\u031f\u0190\u0321\u0191\u0323"+ + "\u0192\u0325\u0193\u0327\u0194\u0329\u0195\u032b\u0196\u032d\u0197\u032f"+ + "\u0198\u0331\u0199\u0333\u019a\u0335\u019b\u0337\u019c\u0339\u019d\u033b"+ + "\u019e\u033d\u019f\u033f\u01a0\u0341\u01a1\u0343\u01a2\u0345\u01a3\u0347"+ + "\u01a4\u0349\u01a5\u034b\u01a6\u034d\u01a7\u034f\u01a8\u0351\u01a9\u0353"+ + "\u01aa\u0355\u01ab\u0357\u01ac\u0359\u01ad\u035b\u01ae\u035d\u01af\u035f"+ + "\u01b0\u0361\u01b1\u0363\u01b2\u0365\u01b3\u0367\u01b4\u0369\u01b5\u036b"+ + "\u01b6\u036d\u01b7\u036f\u01b8\u0371\u01b9\u0373\u01ba\u0375\u01bb\u0377"+ + "\u01bc\u0379\u01bd\u037b\u01be\u037d\u01bf\u037f\u01c0\u0381\u01c1\u0383"+ + "\u01c2\u0385\u01c3\u0387\u01c4\u0389\u01c5\u038b\u01c6\u038d\u01c7\u038f"+ + "\u01c8\u0391\u01c9\u0393\u01ca\u0395\u01cb\u0397\u01cc\u0399\u01cd\u039b"+ + "\u01ce\u039d\u01cf\u039f\u01d0\u03a1\u01d1\u03a3\u01d2\u03a5\u01d3\u03a7"+ + "\u01d4\u03a9\u01d5\u03ab\u01d6\u03ad\u01d7\u03af\u01d8\u03b1\u01d9\u03b3"+ + "\u01da\u03b5\u01db\u03b7\u01dc\u03b9\u01dd\u03bb\u01de\u03bd\u01df\u03bf"+ + "\u01e0\u03c1\u01e1\u03c3\u01e2\u03c5\u01e3\u03c7\u01e4\u03c9\u01e5\u03cb"+ + "\u01e6\u03cd\u01e7\u03cf\u01e8\u03d1\u01e9\u03d3\u01ea\u03d5\u01eb\u03d7"+ + "\u01ec\u03d9\u01ed\u03db\u01ee\u03dd\u01ef\u03df\u01f0\u03e1\u01f1\u03e3"+ + "\u01f2\u03e5\u01f3\u03e7\u01f4\u03e9\u01f5\u03eb\u01f6\u03ed\u01f7\u03ef"+ + "\u01f8\u03f1\u01f9\u03f3\u01fa\u03f5\u01fb\u03f7\u01fc\u03f9\u01fd\u03fb"+ + "\u01fe\u03fd\u01ff\u03ff\u0200\u0401\u0201\u0403\u0202\u0405\u0203\u0407"+ + "\u0204\u0409\u0205\u040b\u0206\u040d\u0207\u040f\u0208\u0411\u0209\u0413"+ + "\u020a\u0415\u020b\u0417\u020c\u0419\u020d\u041b\u020e\u041d\u020f\u041f"+ + "\u0210\u0421\u0211\u0423\u0212\u0425\u0213\u0427\u0214\u0429\u0215\u042b"+ + "\u0216\u042d\u0217\u042f\u0218\u0431\u0219\u0433\u021a\u0435\u021b\u0437"+ + "\u0000\u0439\u0000\u043b\u0000\u043d\u0000\u043f\u021c\u0441\u021d\u0443"+ + "\u021e\u0445\u021f\u0447\u0220\u0001\u0000\r\u0002\u0000\'\'\\\\\u0002"+ + "\u0000\"\"\\\\\u0001\u0000\'\'\u0001\u0000\"\"\u0001\u0000``\u0002\u0000"+ + "++--\u0001\u000009\u0004\u0000$$AZ__az\u0002\u0000\u0000\u007f\u8000\ud800"+ + "\u8000\udbff\u0001\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00"+ + "\u8000\udfff\u0002\u0000\n\n\r\r\u0003\u0000\t\n\r\r \u14cd\u0000\u0001"+ + "\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+ + "\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+ + "\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+ + "\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000"+ + "\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000"+ + "\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000"+ + "\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000"+ + "\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000"+ + "\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000"+ + "\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001"+ + "\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000"+ + "\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u0000"+ + "5\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001"+ + "\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000"+ + "\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+ + "C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+ + "\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+ + "\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000"+ + "Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001"+ + "\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000"+ + "\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000"+ + "_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001"+ + "\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000g\u0001\u0000\u0000"+ + "\u0000\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001\u0000\u0000\u0000\u0000"+ + "m\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000\u0000\u0000q\u0001"+ + "\u0000\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000u\u0001\u0000\u0000"+ + "\u0000\u0000w\u0001\u0000\u0000\u0000\u0000y\u0001\u0000\u0000\u0000\u0000"+ + "{\u0001\u0000\u0000\u0000\u0000}\u0001\u0000\u0000\u0000\u0000\u007f\u0001"+ + "\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000\u0000\u0000\u0083\u0001"+ + "\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000\u0000\u0000\u0087\u0001"+ + "\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000\u0000\u0000\u008b\u0001"+ + "\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000\u0000\u0000\u008f\u0001"+ + "\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000\u0000\u0000\u0093\u0001"+ + "\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000\u0000\u0000\u0097\u0001"+ + "\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000\u0000\u0000\u009b\u0001"+ + "\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000\u0000\u0000\u009f\u0001"+ + "\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000\u0000\u0000\u00a3\u0001"+ + "\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000\u0000\u0000\u00a7\u0001"+ + "\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000\u0000\u0000\u00ab\u0001"+ + "\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000\u0000\u0000\u00af\u0001"+ + "\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000\u0000\u0000\u00b3\u0001"+ + "\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000\u0000\u0000\u00b7\u0001"+ + "\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00bb\u0001"+ + "\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000\u0000\u0000\u00bf\u0001"+ + "\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000\u0000\u0000\u00c3\u0001"+ + "\u0000\u0000\u0000\u0000\u00c5\u0001\u0000\u0000\u0000\u0000\u00c7\u0001"+ + "\u0000\u0000\u0000\u0000\u00c9\u0001\u0000\u0000\u0000\u0000\u00cb\u0001"+ + "\u0000\u0000\u0000\u0000\u00cd\u0001\u0000\u0000\u0000\u0000\u00cf\u0001"+ + "\u0000\u0000\u0000\u0000\u00d1\u0001\u0000\u0000\u0000\u0000\u00d3\u0001"+ + "\u0000\u0000\u0000\u0000\u00d5\u0001\u0000\u0000\u0000\u0000\u00d7\u0001"+ + "\u0000\u0000\u0000\u0000\u00d9\u0001\u0000\u0000\u0000\u0000\u00db\u0001"+ + "\u0000\u0000\u0000\u0000\u00dd\u0001\u0000\u0000\u0000\u0000\u00df\u0001"+ + "\u0000\u0000\u0000\u0000\u00e1\u0001\u0000\u0000\u0000\u0000\u00e3\u0001"+ + "\u0000\u0000\u0000\u0000\u00e5\u0001\u0000\u0000\u0000\u0000\u00e7\u0001"+ + "\u0000\u0000\u0000\u0000\u00e9\u0001\u0000\u0000\u0000\u0000\u00eb\u0001"+ + "\u0000\u0000\u0000\u0000\u00ed\u0001\u0000\u0000\u0000\u0000\u00ef\u0001"+ + "\u0000\u0000\u0000\u0000\u00f1\u0001\u0000\u0000\u0000\u0000\u00f3\u0001"+ + "\u0000\u0000\u0000\u0000\u00f5\u0001\u0000\u0000\u0000\u0000\u00f7\u0001"+ + "\u0000\u0000\u0000\u0000\u00f9\u0001\u0000\u0000\u0000\u0000\u00fb\u0001"+ + "\u0000\u0000\u0000\u0000\u00fd\u0001\u0000\u0000\u0000\u0000\u00ff\u0001"+ + "\u0000\u0000\u0000\u0000\u0101\u0001\u0000\u0000\u0000\u0000\u0103\u0001"+ + "\u0000\u0000\u0000\u0000\u0105\u0001\u0000\u0000\u0000\u0000\u0107\u0001"+ + "\u0000\u0000\u0000\u0000\u0109\u0001\u0000\u0000\u0000\u0000\u010b\u0001"+ + "\u0000\u0000\u0000\u0000\u010d\u0001\u0000\u0000\u0000\u0000\u010f\u0001"+ + "\u0000\u0000\u0000\u0000\u0111\u0001\u0000\u0000\u0000\u0000\u0113\u0001"+ + "\u0000\u0000\u0000\u0000\u0115\u0001\u0000\u0000\u0000\u0000\u0117\u0001"+ + "\u0000\u0000\u0000\u0000\u0119\u0001\u0000\u0000\u0000\u0000\u011b\u0001"+ + "\u0000\u0000\u0000\u0000\u011d\u0001\u0000\u0000\u0000\u0000\u011f\u0001"+ + "\u0000\u0000\u0000\u0000\u0121\u0001\u0000\u0000\u0000\u0000\u0123\u0001"+ + "\u0000\u0000\u0000\u0000\u0125\u0001\u0000\u0000\u0000\u0000\u0127\u0001"+ + "\u0000\u0000\u0000\u0000\u0129\u0001\u0000\u0000\u0000\u0000\u012b\u0001"+ + "\u0000\u0000\u0000\u0000\u012d\u0001\u0000\u0000\u0000\u0000\u012f\u0001"+ + "\u0000\u0000\u0000\u0000\u0131\u0001\u0000\u0000\u0000\u0000\u0133\u0001"+ + "\u0000\u0000\u0000\u0000\u0135\u0001\u0000\u0000\u0000\u0000\u0137\u0001"+ + "\u0000\u0000\u0000\u0000\u0139\u0001\u0000\u0000\u0000\u0000\u013b\u0001"+ + "\u0000\u0000\u0000\u0000\u013d\u0001\u0000\u0000\u0000\u0000\u013f\u0001"+ + "\u0000\u0000\u0000\u0000\u0141\u0001\u0000\u0000\u0000\u0000\u0143\u0001"+ + "\u0000\u0000\u0000\u0000\u0145\u0001\u0000\u0000\u0000\u0000\u0147\u0001"+ + "\u0000\u0000\u0000\u0000\u0149\u0001\u0000\u0000\u0000\u0000\u014b\u0001"+ + "\u0000\u0000\u0000\u0000\u014d\u0001\u0000\u0000\u0000\u0000\u014f\u0001"+ + "\u0000\u0000\u0000\u0000\u0151\u0001\u0000\u0000\u0000\u0000\u0153\u0001"+ + "\u0000\u0000\u0000\u0000\u0155\u0001\u0000\u0000\u0000\u0000\u0157\u0001"+ + "\u0000\u0000\u0000\u0000\u0159\u0001\u0000\u0000\u0000\u0000\u015b\u0001"+ + "\u0000\u0000\u0000\u0000\u015d\u0001\u0000\u0000\u0000\u0000\u015f\u0001"+ + "\u0000\u0000\u0000\u0000\u0161\u0001\u0000\u0000\u0000\u0000\u0163\u0001"+ + "\u0000\u0000\u0000\u0000\u0165\u0001\u0000\u0000\u0000\u0000\u0167\u0001"+ + "\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000\u0000\u0000\u016b\u0001"+ + "\u0000\u0000\u0000\u0000\u016d\u0001\u0000\u0000\u0000\u0000\u016f\u0001"+ + "\u0000\u0000\u0000\u0000\u0171\u0001\u0000\u0000\u0000\u0000\u0173\u0001"+ + "\u0000\u0000\u0000\u0000\u0175\u0001\u0000\u0000\u0000\u0000\u0177\u0001"+ + "\u0000\u0000\u0000\u0000\u0179\u0001\u0000\u0000\u0000\u0000\u017b\u0001"+ + "\u0000\u0000\u0000\u0000\u017d\u0001\u0000\u0000\u0000\u0000\u017f\u0001"+ + "\u0000\u0000\u0000\u0000\u0181\u0001\u0000\u0000\u0000\u0000\u0183\u0001"+ + "\u0000\u0000\u0000\u0000\u0185\u0001\u0000\u0000\u0000\u0000\u0187\u0001"+ + "\u0000\u0000\u0000\u0000\u0189\u0001\u0000\u0000\u0000\u0000\u018b\u0001"+ + "\u0000\u0000\u0000\u0000\u018d\u0001\u0000\u0000\u0000\u0000\u018f\u0001"+ + "\u0000\u0000\u0000\u0000\u0191\u0001\u0000\u0000\u0000\u0000\u0193\u0001"+ + "\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000\u0000\u0000\u0197\u0001"+ + "\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000\u0000\u0000\u019b\u0001"+ + "\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000\u0000\u0000\u019f\u0001"+ + "\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000\u0000\u0000\u01a3\u0001"+ + "\u0000\u0000\u0000\u0000\u01a5\u0001\u0000\u0000\u0000\u0000\u01a7\u0001"+ + "\u0000\u0000\u0000\u0000\u01a9\u0001\u0000\u0000\u0000\u0000\u01ab\u0001"+ + "\u0000\u0000\u0000\u0000\u01ad\u0001\u0000\u0000\u0000\u0000\u01af\u0001"+ + "\u0000\u0000\u0000\u0000\u01b1\u0001\u0000\u0000\u0000\u0000\u01b3\u0001"+ + "\u0000\u0000\u0000\u0000\u01b5\u0001\u0000\u0000\u0000\u0000\u01b7\u0001"+ + "\u0000\u0000\u0000\u0000\u01b9\u0001\u0000\u0000\u0000\u0000\u01bb\u0001"+ + "\u0000\u0000\u0000\u0000\u01bd\u0001\u0000\u0000\u0000\u0000\u01bf\u0001"+ + "\u0000\u0000\u0000\u0000\u01c1\u0001\u0000\u0000\u0000\u0000\u01c3\u0001"+ + "\u0000\u0000\u0000\u0000\u01c5\u0001\u0000\u0000\u0000\u0000\u01c7\u0001"+ + "\u0000\u0000\u0000\u0000\u01c9\u0001\u0000\u0000\u0000\u0000\u01cb\u0001"+ + "\u0000\u0000\u0000\u0000\u01cd\u0001\u0000\u0000\u0000\u0000\u01cf\u0001"+ + "\u0000\u0000\u0000\u0000\u01d1\u0001\u0000\u0000\u0000\u0000\u01d3\u0001"+ + "\u0000\u0000\u0000\u0000\u01d5\u0001\u0000\u0000\u0000\u0000\u01d7\u0001"+ + "\u0000\u0000\u0000\u0000\u01d9\u0001\u0000\u0000\u0000\u0000\u01db\u0001"+ + "\u0000\u0000\u0000\u0000\u01dd\u0001\u0000\u0000\u0000\u0000\u01df\u0001"+ + "\u0000\u0000\u0000\u0000\u01e1\u0001\u0000\u0000\u0000\u0000\u01e3\u0001"+ + "\u0000\u0000\u0000\u0000\u01e5\u0001\u0000\u0000\u0000\u0000\u01e7\u0001"+ + "\u0000\u0000\u0000\u0000\u01e9\u0001\u0000\u0000\u0000\u0000\u01eb\u0001"+ + "\u0000\u0000\u0000\u0000\u01ed\u0001\u0000\u0000\u0000\u0000\u01ef\u0001"+ + "\u0000\u0000\u0000\u0000\u01f1\u0001\u0000\u0000\u0000\u0000\u01f3\u0001"+ + "\u0000\u0000\u0000\u0000\u01f5\u0001\u0000\u0000\u0000\u0000\u01f7\u0001"+ + "\u0000\u0000\u0000\u0000\u01f9\u0001\u0000\u0000\u0000\u0000\u01fb\u0001"+ + "\u0000\u0000\u0000\u0000\u01fd\u0001\u0000\u0000\u0000\u0000\u01ff\u0001"+ + "\u0000\u0000\u0000\u0000\u0201\u0001\u0000\u0000\u0000\u0000\u0203\u0001"+ + "\u0000\u0000\u0000\u0000\u0205\u0001\u0000\u0000\u0000\u0000\u0207\u0001"+ + "\u0000\u0000\u0000\u0000\u0209\u0001\u0000\u0000\u0000\u0000\u020b\u0001"+ + "\u0000\u0000\u0000\u0000\u020d\u0001\u0000\u0000\u0000\u0000\u020f\u0001"+ + "\u0000\u0000\u0000\u0000\u0211\u0001\u0000\u0000\u0000\u0000\u0213\u0001"+ + "\u0000\u0000\u0000\u0000\u0215\u0001\u0000\u0000\u0000\u0000\u0217\u0001"+ + "\u0000\u0000\u0000\u0000\u0219\u0001\u0000\u0000\u0000\u0000\u021b\u0001"+ + "\u0000\u0000\u0000\u0000\u021d\u0001\u0000\u0000\u0000\u0000\u021f\u0001"+ + "\u0000\u0000\u0000\u0000\u0221\u0001\u0000\u0000\u0000\u0000\u0223\u0001"+ + "\u0000\u0000\u0000\u0000\u0225\u0001\u0000\u0000\u0000\u0000\u0227\u0001"+ + "\u0000\u0000\u0000\u0000\u0229\u0001\u0000\u0000\u0000\u0000\u022b\u0001"+ + "\u0000\u0000\u0000\u0000\u022d\u0001\u0000\u0000\u0000\u0000\u022f\u0001"+ + "\u0000\u0000\u0000\u0000\u0231\u0001\u0000\u0000\u0000\u0000\u0233\u0001"+ + "\u0000\u0000\u0000\u0000\u0235\u0001\u0000\u0000\u0000\u0000\u0237\u0001"+ + "\u0000\u0000\u0000\u0000\u0239\u0001\u0000\u0000\u0000\u0000\u023b\u0001"+ + "\u0000\u0000\u0000\u0000\u023d\u0001\u0000\u0000\u0000\u0000\u023f\u0001"+ + "\u0000\u0000\u0000\u0000\u0241\u0001\u0000\u0000\u0000\u0000\u0243\u0001"+ + "\u0000\u0000\u0000\u0000\u0245\u0001\u0000\u0000\u0000\u0000\u0247\u0001"+ + "\u0000\u0000\u0000\u0000\u0249\u0001\u0000\u0000\u0000\u0000\u024b\u0001"+ + "\u0000\u0000\u0000\u0000\u024d\u0001\u0000\u0000\u0000\u0000\u024f\u0001"+ + "\u0000\u0000\u0000\u0000\u0251\u0001\u0000\u0000\u0000\u0000\u0253\u0001"+ + "\u0000\u0000\u0000\u0000\u0255\u0001\u0000\u0000\u0000\u0000\u0257\u0001"+ + "\u0000\u0000\u0000\u0000\u0259\u0001\u0000\u0000\u0000\u0000\u025b\u0001"+ + "\u0000\u0000\u0000\u0000\u025d\u0001\u0000\u0000\u0000\u0000\u025f\u0001"+ + "\u0000\u0000\u0000\u0000\u0261\u0001\u0000\u0000\u0000\u0000\u0263\u0001"+ + "\u0000\u0000\u0000\u0000\u0265\u0001\u0000\u0000\u0000\u0000\u0267\u0001"+ + "\u0000\u0000\u0000\u0000\u0269\u0001\u0000\u0000\u0000\u0000\u026b\u0001"+ + "\u0000\u0000\u0000\u0000\u026d\u0001\u0000\u0000\u0000\u0000\u026f\u0001"+ + "\u0000\u0000\u0000\u0000\u0271\u0001\u0000\u0000\u0000\u0000\u0273\u0001"+ + "\u0000\u0000\u0000\u0000\u0275\u0001\u0000\u0000\u0000\u0000\u0277\u0001"+ + "\u0000\u0000\u0000\u0000\u0279\u0001\u0000\u0000\u0000\u0000\u027b\u0001"+ + "\u0000\u0000\u0000\u0000\u027d\u0001\u0000\u0000\u0000\u0000\u027f\u0001"+ + "\u0000\u0000\u0000\u0000\u0281\u0001\u0000\u0000\u0000\u0000\u0283\u0001"+ + "\u0000\u0000\u0000\u0000\u0285\u0001\u0000\u0000\u0000\u0000\u0287\u0001"+ + "\u0000\u0000\u0000\u0000\u0289\u0001\u0000\u0000\u0000\u0000\u028b\u0001"+ + "\u0000\u0000\u0000\u0000\u028d\u0001\u0000\u0000\u0000\u0000\u028f\u0001"+ + "\u0000\u0000\u0000\u0000\u0291\u0001\u0000\u0000\u0000\u0000\u0293\u0001"+ + "\u0000\u0000\u0000\u0000\u0295\u0001\u0000\u0000\u0000\u0000\u0297\u0001"+ + "\u0000\u0000\u0000\u0000\u0299\u0001\u0000\u0000\u0000\u0000\u029b\u0001"+ + "\u0000\u0000\u0000\u0000\u029d\u0001\u0000\u0000\u0000\u0000\u029f\u0001"+ + "\u0000\u0000\u0000\u0000\u02a1\u0001\u0000\u0000\u0000\u0000\u02a3\u0001"+ + "\u0000\u0000\u0000\u0000\u02a5\u0001\u0000\u0000\u0000\u0000\u02a7\u0001"+ + "\u0000\u0000\u0000\u0000\u02a9\u0001\u0000\u0000\u0000\u0000\u02ab\u0001"+ + "\u0000\u0000\u0000\u0000\u02ad\u0001\u0000\u0000\u0000\u0000\u02af\u0001"+ + "\u0000\u0000\u0000\u0000\u02b1\u0001\u0000\u0000\u0000\u0000\u02b3\u0001"+ + "\u0000\u0000\u0000\u0000\u02b5\u0001\u0000\u0000\u0000\u0000\u02b7\u0001"+ + "\u0000\u0000\u0000\u0000\u02b9\u0001\u0000\u0000\u0000\u0000\u02bb\u0001"+ + "\u0000\u0000\u0000\u0000\u02bd\u0001\u0000\u0000\u0000\u0000\u02bf\u0001"+ + "\u0000\u0000\u0000\u0000\u02c1\u0001\u0000\u0000\u0000\u0000\u02c3\u0001"+ + "\u0000\u0000\u0000\u0000\u02c5\u0001\u0000\u0000\u0000\u0000\u02c7\u0001"+ + "\u0000\u0000\u0000\u0000\u02c9\u0001\u0000\u0000\u0000\u0000\u02cb\u0001"+ + "\u0000\u0000\u0000\u0000\u02cd\u0001\u0000\u0000\u0000\u0000\u02cf\u0001"+ + "\u0000\u0000\u0000\u0000\u02d1\u0001\u0000\u0000\u0000\u0000\u02d3\u0001"+ + "\u0000\u0000\u0000\u0000\u02d5\u0001\u0000\u0000\u0000\u0000\u02d7\u0001"+ + "\u0000\u0000\u0000\u0000\u02d9\u0001\u0000\u0000\u0000\u0000\u02db\u0001"+ + "\u0000\u0000\u0000\u0000\u02dd\u0001\u0000\u0000\u0000\u0000\u02df\u0001"+ + "\u0000\u0000\u0000\u0000\u02e1\u0001\u0000\u0000\u0000\u0000\u02e3\u0001"+ + "\u0000\u0000\u0000\u0000\u02e5\u0001\u0000\u0000\u0000\u0000\u02e7\u0001"+ + "\u0000\u0000\u0000\u0000\u02e9\u0001\u0000\u0000\u0000\u0000\u02eb\u0001"+ + "\u0000\u0000\u0000\u0000\u02ed\u0001\u0000\u0000\u0000\u0000\u02ef\u0001"+ + "\u0000\u0000\u0000\u0000\u02f1\u0001\u0000\u0000\u0000\u0000\u02f3\u0001"+ + "\u0000\u0000\u0000\u0000\u02f5\u0001\u0000\u0000\u0000\u0000\u02f7\u0001"+ + "\u0000\u0000\u0000\u0000\u02f9\u0001\u0000\u0000\u0000\u0000\u02fb\u0001"+ + "\u0000\u0000\u0000\u0000\u02fd\u0001\u0000\u0000\u0000\u0000\u02ff\u0001"+ + "\u0000\u0000\u0000\u0000\u0301\u0001\u0000\u0000\u0000\u0000\u0303\u0001"+ + "\u0000\u0000\u0000\u0000\u0305\u0001\u0000\u0000\u0000\u0000\u0307\u0001"+ + "\u0000\u0000\u0000\u0000\u0309\u0001\u0000\u0000\u0000\u0000\u030b\u0001"+ + "\u0000\u0000\u0000\u0000\u030d\u0001\u0000\u0000\u0000\u0000\u030f\u0001"+ + "\u0000\u0000\u0000\u0000\u0311\u0001\u0000\u0000\u0000\u0000\u0313\u0001"+ + "\u0000\u0000\u0000\u0000\u0315\u0001\u0000\u0000\u0000\u0000\u0317\u0001"+ + "\u0000\u0000\u0000\u0000\u0319\u0001\u0000\u0000\u0000\u0000\u031b\u0001"+ + "\u0000\u0000\u0000\u0000\u031d\u0001\u0000\u0000\u0000\u0000\u031f\u0001"+ + "\u0000\u0000\u0000\u0000\u0321\u0001\u0000\u0000\u0000\u0000\u0323\u0001"+ + "\u0000\u0000\u0000\u0000\u0325\u0001\u0000\u0000\u0000\u0000\u0327\u0001"+ + "\u0000\u0000\u0000\u0000\u0329\u0001\u0000\u0000\u0000\u0000\u032b\u0001"+ + "\u0000\u0000\u0000\u0000\u032d\u0001\u0000\u0000\u0000\u0000\u032f\u0001"+ + "\u0000\u0000\u0000\u0000\u0331\u0001\u0000\u0000\u0000\u0000\u0333\u0001"+ + "\u0000\u0000\u0000\u0000\u0335\u0001\u0000\u0000\u0000\u0000\u0337\u0001"+ + "\u0000\u0000\u0000\u0000\u0339\u0001\u0000\u0000\u0000\u0000\u033b\u0001"+ + "\u0000\u0000\u0000\u0000\u033d\u0001\u0000\u0000\u0000\u0000\u033f\u0001"+ + "\u0000\u0000\u0000\u0000\u0341\u0001\u0000\u0000\u0000\u0000\u0343\u0001"+ + "\u0000\u0000\u0000\u0000\u0345\u0001\u0000\u0000\u0000\u0000\u0347\u0001"+ + "\u0000\u0000\u0000\u0000\u0349\u0001\u0000\u0000\u0000\u0000\u034b\u0001"+ + "\u0000\u0000\u0000\u0000\u034d\u0001\u0000\u0000\u0000\u0000\u034f\u0001"+ + "\u0000\u0000\u0000\u0000\u0351\u0001\u0000\u0000\u0000\u0000\u0353\u0001"+ + "\u0000\u0000\u0000\u0000\u0355\u0001\u0000\u0000\u0000\u0000\u0357\u0001"+ + "\u0000\u0000\u0000\u0000\u0359\u0001\u0000\u0000\u0000\u0000\u035b\u0001"+ + "\u0000\u0000\u0000\u0000\u035d\u0001\u0000\u0000\u0000\u0000\u035f\u0001"+ + "\u0000\u0000\u0000\u0000\u0361\u0001\u0000\u0000\u0000\u0000\u0363\u0001"+ + "\u0000\u0000\u0000\u0000\u0365\u0001\u0000\u0000\u0000\u0000\u0367\u0001"+ + "\u0000\u0000\u0000\u0000\u0369\u0001\u0000\u0000\u0000\u0000\u036b\u0001"+ + "\u0000\u0000\u0000\u0000\u036d\u0001\u0000\u0000\u0000\u0000\u036f\u0001"+ + "\u0000\u0000\u0000\u0000\u0371\u0001\u0000\u0000\u0000\u0000\u0373\u0001"+ + "\u0000\u0000\u0000\u0000\u0375\u0001\u0000\u0000\u0000\u0000\u0377\u0001"+ + "\u0000\u0000\u0000\u0000\u0379\u0001\u0000\u0000\u0000\u0000\u037b\u0001"+ + "\u0000\u0000\u0000\u0000\u037d\u0001\u0000\u0000\u0000\u0000\u037f\u0001"+ + "\u0000\u0000\u0000\u0000\u0381\u0001\u0000\u0000\u0000\u0000\u0383\u0001"+ + "\u0000\u0000\u0000\u0000\u0385\u0001\u0000\u0000\u0000\u0000\u0387\u0001"+ + "\u0000\u0000\u0000\u0000\u0389\u0001\u0000\u0000\u0000\u0000\u038b\u0001"+ + "\u0000\u0000\u0000\u0000\u038d\u0001\u0000\u0000\u0000\u0000\u038f\u0001"+ + "\u0000\u0000\u0000\u0000\u0391\u0001\u0000\u0000\u0000\u0000\u0393\u0001"+ + "\u0000\u0000\u0000\u0000\u0395\u0001\u0000\u0000\u0000\u0000\u0397\u0001"+ + "\u0000\u0000\u0000\u0000\u0399\u0001\u0000\u0000\u0000\u0000\u039b\u0001"+ + "\u0000\u0000\u0000\u0000\u039d\u0001\u0000\u0000\u0000\u0000\u039f\u0001"+ + "\u0000\u0000\u0000\u0000\u03a1\u0001\u0000\u0000\u0000\u0000\u03a3\u0001"+ + "\u0000\u0000\u0000\u0000\u03a5\u0001\u0000\u0000\u0000\u0000\u03a7\u0001"+ + "\u0000\u0000\u0000\u0000\u03a9\u0001\u0000\u0000\u0000\u0000\u03ab\u0001"+ + "\u0000\u0000\u0000\u0000\u03ad\u0001\u0000\u0000\u0000\u0000\u03af\u0001"+ + "\u0000\u0000\u0000\u0000\u03b1\u0001\u0000\u0000\u0000\u0000\u03b3\u0001"+ + "\u0000\u0000\u0000\u0000\u03b5\u0001\u0000\u0000\u0000\u0000\u03b7\u0001"+ + "\u0000\u0000\u0000\u0000\u03b9\u0001\u0000\u0000\u0000\u0000\u03bb\u0001"+ + "\u0000\u0000\u0000\u0000\u03bd\u0001\u0000\u0000\u0000\u0000\u03bf\u0001"+ + "\u0000\u0000\u0000\u0000\u03c1\u0001\u0000\u0000\u0000\u0000\u03c3\u0001"+ + "\u0000\u0000\u0000\u0000\u03c5\u0001\u0000\u0000\u0000\u0000\u03c7\u0001"+ + "\u0000\u0000\u0000\u0000\u03c9\u0001\u0000\u0000\u0000\u0000\u03cb\u0001"+ + "\u0000\u0000\u0000\u0000\u03cd\u0001\u0000\u0000\u0000\u0000\u03cf\u0001"+ + "\u0000\u0000\u0000\u0000\u03d1\u0001\u0000\u0000\u0000\u0000\u03d3\u0001"+ + "\u0000\u0000\u0000\u0000\u03d5\u0001\u0000\u0000\u0000\u0000\u03d7\u0001"+ + "\u0000\u0000\u0000\u0000\u03d9\u0001\u0000\u0000\u0000\u0000\u03db\u0001"+ + "\u0000\u0000\u0000\u0000\u03dd\u0001\u0000\u0000\u0000\u0000\u03df\u0001"+ + "\u0000\u0000\u0000\u0000\u03e1\u0001\u0000\u0000\u0000\u0000\u03e3\u0001"+ + "\u0000\u0000\u0000\u0000\u03e5\u0001\u0000\u0000\u0000\u0000\u03e7\u0001"+ + "\u0000\u0000\u0000\u0000\u03e9\u0001\u0000\u0000\u0000\u0000\u03eb\u0001"+ + "\u0000\u0000\u0000\u0000\u03ed\u0001\u0000\u0000\u0000\u0000\u03ef\u0001"+ + "\u0000\u0000\u0000\u0000\u03f1\u0001\u0000\u0000\u0000\u0000\u03f3\u0001"+ + "\u0000\u0000\u0000\u0000\u03f5\u0001\u0000\u0000\u0000\u0000\u03f7\u0001"+ + "\u0000\u0000\u0000\u0000\u03f9\u0001\u0000\u0000\u0000\u0000\u03fb\u0001"+ + "\u0000\u0000\u0000\u0000\u03fd\u0001\u0000\u0000\u0000\u0000\u03ff\u0001"+ + "\u0000\u0000\u0000\u0000\u0401\u0001\u0000\u0000\u0000\u0000\u0403\u0001"+ + "\u0000\u0000\u0000\u0000\u0405\u0001\u0000\u0000\u0000\u0000\u0407\u0001"+ + "\u0000\u0000\u0000\u0000\u0409\u0001\u0000\u0000\u0000\u0000\u040b\u0001"+ + "\u0000\u0000\u0000\u0000\u040d\u0001\u0000\u0000\u0000\u0000\u040f\u0001"+ + "\u0000\u0000\u0000\u0000\u0411\u0001\u0000\u0000\u0000\u0000\u0413\u0001"+ + "\u0000\u0000\u0000\u0000\u0415\u0001\u0000\u0000\u0000\u0000\u0417\u0001"+ + "\u0000\u0000\u0000\u0000\u0419\u0001\u0000\u0000\u0000\u0000\u041b\u0001"+ + "\u0000\u0000\u0000\u0000\u041d\u0001\u0000\u0000\u0000\u0000\u041f\u0001"+ + "\u0000\u0000\u0000\u0000\u0421\u0001\u0000\u0000\u0000\u0000\u0423\u0001"+ + "\u0000\u0000\u0000\u0000\u0425\u0001\u0000\u0000\u0000\u0000\u0427\u0001"+ + "\u0000\u0000\u0000\u0000\u0429\u0001\u0000\u0000\u0000\u0000\u042b\u0001"+ + "\u0000\u0000\u0000\u0000\u042d\u0001\u0000\u0000\u0000\u0000\u042f\u0001"+ + "\u0000\u0000\u0000\u0000\u0431\u0001\u0000\u0000\u0000\u0000\u0433\u0001"+ + "\u0000\u0000\u0000\u0000\u0435\u0001\u0000\u0000\u0000\u0000\u043f\u0001"+ + "\u0000\u0000\u0000\u0000\u0441\u0001\u0000\u0000\u0000\u0000\u0443\u0001"+ + "\u0000\u0000\u0000\u0000\u0445\u0001\u0000\u0000\u0000\u0000\u0447\u0001"+ + "\u0000\u0000\u0000\u0001\u0449\u0001\u0000\u0000\u0000\u0003\u044b\u0001"+ + "\u0000\u0000\u0000\u0005\u044d\u0001\u0000\u0000\u0000\u0007\u044f\u0001"+ + "\u0000\u0000\u0000\t\u0451\u0001\u0000\u0000\u0000\u000b\u0453\u0001\u0000"+ + "\u0000\u0000\r\u0457\u0001\u0000\u0000\u0000\u000f\u0459\u0001\u0000\u0000"+ + "\u0000\u0011\u045b\u0001\u0000\u0000\u0000\u0013\u045d\u0001\u0000\u0000"+ + "\u0000\u0015\u045f\u0001\u0000\u0000\u0000\u0017\u046c\u0001\u0000\u0000"+ + "\u0000\u0019\u047b\u0001\u0000\u0000\u0000\u001b\u0483\u0001\u0000\u0000"+ + "\u0000\u001d\u0487\u0001\u0000\u0000\u0000\u001f\u048d\u0001\u0000\u0000"+ + "\u0000!\u0493\u0001\u0000\u0000\u0000#\u049d\u0001\u0000\u0000\u0000%"+ + "\u04a7\u0001\u0000\u0000\u0000\'\u04ad\u0001\u0000\u0000\u0000)\u04b1"+ + "\u0001\u0000\u0000\u0000+\u04b7\u0001\u0000\u0000\u0000-\u04bf\u0001\u0000"+ + "\u0000\u0000/\u04c8\u0001\u0000\u0000\u00001\u04cc\u0001\u0000\u0000\u0000"+ + "3\u04d1\u0001\u0000\u0000\u00005\u04d8\u0001\u0000\u0000\u00007\u04de"+ + "\u0001\u0000\u0000\u00009\u04e1\u0001\u0000\u0000\u0000;\u04e5\u0001\u0000"+ + "\u0000\u0000=\u04e8\u0001\u0000\u0000\u0000?\u04f0\u0001\u0000\u0000\u0000"+ + "A\u04f5\u0001\u0000\u0000\u0000C\u0504\u0001\u0000\u0000\u0000E\u050b"+ + "\u0001\u0000\u0000\u0000G\u0513\u0001\u0000\u0000\u0000I\u051c\u0001\u0000"+ + "\u0000\u0000K\u0523\u0001\u0000\u0000\u0000M\u0529\u0001\u0000\u0000\u0000"+ + "O\u0530\u0001\u0000\u0000\u0000Q\u0538\u0001\u0000\u0000\u0000S\u053f"+ + "\u0001\u0000\u0000\u0000U\u0543\u0001\u0000\u0000\u0000W\u054a\u0001\u0000"+ + "\u0000\u0000Y\u0551\u0001\u0000\u0000\u0000[\u0558\u0001\u0000\u0000\u0000"+ + "]\u055f\u0001\u0000\u0000\u0000_\u056c\u0001\u0000\u0000\u0000a\u0579"+ + "\u0001\u0000\u0000\u0000c\u057f\u0001\u0000\u0000\u0000e\u0586\u0001\u0000"+ + "\u0000\u0000g\u058b\u0001\u0000\u0000\u0000i\u0593\u0001\u0000\u0000\u0000"+ + "k\u0599\u0001\u0000\u0000\u0000m\u05a0\u0001\u0000\u0000\u0000o\u05a8"+ + "\u0001\u0000\u0000\u0000q\u05ae\u0001\u0000\u0000\u0000s\u05b6\u0001\u0000"+ + "\u0000\u0000u\u05bb\u0001\u0000\u0000\u0000w\u05be\u0001\u0000\u0000\u0000"+ + "y\u05c4\u0001\u0000\u0000\u0000{\u05cb\u0001\u0000\u0000\u0000}\u05d0"+ + "\u0001\u0000\u0000\u0000\u007f\u05d7\u0001\u0000\u0000\u0000\u0081\u05dc"+ + "\u0001\u0000\u0000\u0000\u0083\u05e1\u0001\u0000\u0000\u0000\u0085\u05e9"+ + "\u0001\u0000\u0000\u0000\u0087\u05f2\u0001\u0000\u0000\u0000\u0089\u0605"+ + "\u0001\u0000\u0000\u0000\u008b\u0607\u0001\u0000\u0000\u0000\u008d\u060f"+ + "\u0001\u0000\u0000\u0000\u008f\u0615\u0001\u0000\u0000\u0000\u0091\u061b"+ + "\u0001\u0000\u0000\u0000\u0093\u0623\u0001\u0000\u0000\u0000\u0095\u062c"+ + "\u0001\u0000\u0000\u0000\u0097\u0634\u0001\u0000\u0000\u0000\u0099\u063e"+ + "\u0001\u0000\u0000\u0000\u009b\u0646\u0001\u0000\u0000\u0000\u009d\u064f"+ + "\u0001\u0000\u0000\u0000\u009f\u0656\u0001\u0000\u0000\u0000\u00a1\u065e"+ + "\u0001\u0000\u0000\u0000\u00a3\u0666\u0001\u0000\u0000\u0000\u00a5\u066d"+ + "\u0001\u0000\u0000\u0000\u00a7\u0677\u0001\u0000\u0000\u0000\u00a9\u067f"+ + "\u0001\u0000\u0000\u0000\u00ab\u0688\u0001\u0000\u0000\u0000\u00ad\u0696"+ + "\u0001\u0000\u0000\u0000\u00af\u069e\u0001\u0000\u0000\u0000\u00b1\u06a9"+ + "\u0001\u0000\u0000\u0000\u00b3\u06b0\u0001\u0000\u0000\u0000\u00b5\u06bb"+ + "\u0001\u0000\u0000\u0000\u00b7\u06c9\u0001\u0000\u0000\u0000\u00b9\u06d4"+ + "\u0001\u0000\u0000\u0000\u00bb\u06df\u0001\u0000\u0000\u0000\u00bd\u06eb"+ + "\u0001\u0000\u0000\u0000\u00bf\u06f3\u0001\u0000\u0000\u0000\u00c1\u0717"+ + "\u0001\u0000\u0000\u0000\u00c3\u071c\u0001\u0000\u0000\u0000\u00c5\u0722"+ + "\u0001\u0000\u0000\u0000\u00c7\u0729\u0001\u0000\u0000\u0000\u00c9\u0732"+ + "\u0001\u0000\u0000\u0000\u00cb\u0737\u0001\u0000\u0000\u0000\u00cd\u073d"+ + "\u0001\u0000\u0000\u0000\u00cf\u0742\u0001\u0000\u0000\u0000\u00d1\u074a"+ + "\u0001\u0000\u0000\u0000\u00d3\u075a\u0001\u0000\u0000\u0000\u00d5\u0767"+ + "\u0001\u0000\u0000\u0000\u00d7\u0774\u0001\u0000\u0000\u0000\u00d9\u0786"+ + "\u0001\u0000\u0000\u0000\u00db\u0793\u0001\u0000\u0000\u0000\u00dd\u0798"+ + "\u0001\u0000\u0000\u0000\u00df\u07a1\u0001\u0000\u0000\u0000\u00e1\u07ab"+ + "\u0001\u0000\u0000\u0000\u00e3\u07b0\u0001\u0000\u0000\u0000\u00e5\u07b9"+ + "\u0001\u0000\u0000\u0000\u00e7\u07c4\u0001\u0000\u0000\u0000\u00e9\u07cb"+ + "\u0001\u0000\u0000\u0000\u00eb\u07d6\u0001\u0000\u0000\u0000\u00ed\u07dd"+ + "\u0001\u0000\u0000\u0000\u00ef\u07e1\u0001\u0000\u0000\u0000\u00f1\u07e9"+ + "\u0001\u0000\u0000\u0000\u00f3\u07f3\u0001\u0000\u0000\u0000\u00f5\u07fd"+ + "\u0001\u0000\u0000\u0000\u00f7\u080a\u0001\u0000\u0000\u0000\u00f9\u0812"+ + "\u0001\u0000\u0000\u0000\u00fb\u081b\u0001\u0000\u0000\u0000\u00fd\u0822"+ + "\u0001\u0000\u0000\u0000\u00ff\u0829\u0001\u0000\u0000\u0000\u0101\u082e"+ + "\u0001\u0000\u0000\u0000\u0103\u0837\u0001\u0000\u0000\u0000\u0105\u0840"+ + "\u0001\u0000\u0000\u0000\u0107\u084a\u0001\u0000\u0000\u0000\u0109\u084f"+ + "\u0001\u0000\u0000\u0000\u010b\u0858\u0001\u0000\u0000\u0000\u010d\u0863"+ + "\u0001\u0000\u0000\u0000\u010f\u0870\u0001\u0000\u0000\u0000\u0111\u087c"+ + "\u0001\u0000\u0000\u0000\u0113\u0889\u0001\u0000\u0000\u0000\u0115\u088d"+ + "\u0001\u0000\u0000\u0000\u0117\u0890\u0001\u0000\u0000\u0000\u0119\u08a8"+ + "\u0001\u0000\u0000\u0000\u011b\u08af\u0001\u0000\u0000\u0000\u011d\u08b4"+ + "\u0001\u0000\u0000\u0000\u011f\u08ba\u0001\u0000\u0000\u0000\u0121\u08bf"+ + "\u0001\u0000\u0000\u0000\u0123\u08c4\u0001\u0000\u0000\u0000\u0125\u08ce"+ + "\u0001\u0000\u0000\u0000\u0127\u08d6\u0001\u0000\u0000\u0000\u0129\u08d8"+ + "\u0001\u0000\u0000\u0000\u012b\u08dd\u0001\u0000\u0000\u0000\u012d\u08e4"+ + "\u0001\u0000\u0000\u0000\u012f\u08ef\u0001\u0000\u0000\u0000\u0131\u08fb"+ + "\u0001\u0000\u0000\u0000\u0133\u08ff\u0001\u0000\u0000\u0000\u0135\u0904"+ + "\u0001\u0000\u0000\u0000\u0137\u090b\u0001\u0000\u0000\u0000\u0139\u0913"+ + "\u0001\u0000\u0000\u0000\u013b\u0919\u0001\u0000\u0000\u0000\u013d\u0920"+ + "\u0001\u0000\u0000\u0000\u013f\u0927\u0001\u0000\u0000\u0000\u0141\u092d"+ + "\u0001\u0000\u0000\u0000\u0143\u0934\u0001\u0000\u0000\u0000\u0145\u093c"+ + "\u0001\u0000\u0000\u0000\u0147\u0944\u0001\u0000\u0000\u0000\u0149\u094b"+ + "\u0001\u0000\u0000\u0000\u014b\u0953\u0001\u0000\u0000\u0000\u014d\u095b"+ + "\u0001\u0000\u0000\u0000\u014f\u0962\u0001\u0000\u0000\u0000\u0151\u096b"+ + "\u0001\u0000\u0000\u0000\u0153\u0974\u0001\u0000\u0000\u0000\u0155\u097c"+ + "\u0001\u0000\u0000\u0000\u0157\u0992\u0001\u0000\u0000\u0000\u0159\u0998"+ + "\u0001\u0000\u0000\u0000\u015b\u099d\u0001\u0000\u0000\u0000\u015d\u09a5"+ + "\u0001\u0000\u0000\u0000\u015f\u09ac\u0001\u0000\u0000\u0000\u0161\u09b1"+ + "\u0001\u0000\u0000\u0000\u0163\u09b8\u0001\u0000\u0000\u0000\u0165\u09be"+ + "\u0001\u0000\u0000\u0000\u0167\u09c4\u0001\u0000\u0000\u0000\u0169\u09cd"+ + "\u0001\u0000\u0000\u0000\u016b\u09d7\u0001\u0000\u0000\u0000\u016d\u09db"+ + "\u0001\u0000\u0000\u0000\u016f\u09e3\u0001\u0000\u0000\u0000\u0171\u09e9"+ + "\u0001\u0000\u0000\u0000\u0173\u09f0\u0001\u0000\u0000\u0000\u0175\u09f5"+ + "\u0001\u0000\u0000\u0000\u0177\u09fa\u0001\u0000\u0000\u0000\u0179\u0a03"+ + "\u0001\u0000\u0000\u0000\u017b\u0a0d\u0001\u0000\u0000\u0000\u017d\u0a12"+ + "\u0001\u0000\u0000\u0000\u017f\u0a1b\u0001\u0000\u0000\u0000\u0181\u0a25"+ + "\u0001\u0000\u0000\u0000\u0183\u0a2f\u0001\u0000\u0000\u0000\u0185\u0a37"+ + "\u0001\u0000\u0000\u0000\u0187\u0a3e\u0001\u0000\u0000\u0000\u0189\u0a44"+ + "\u0001\u0000\u0000\u0000\u018b\u0a4b\u0001\u0000\u0000\u0000\u018d\u0a51"+ + "\u0001\u0000\u0000\u0000\u018f\u0a57\u0001\u0000\u0000\u0000\u0191\u0a60"+ + "\u0001\u0000\u0000\u0000\u0193\u0a67\u0001\u0000\u0000\u0000\u0195\u0a6c"+ + "\u0001\u0000\u0000\u0000\u0197\u0a73\u0001\u0000\u0000\u0000\u0199\u0a78"+ + "\u0001\u0000\u0000\u0000\u019b\u0a7d\u0001\u0000\u0000\u0000\u019d\u0a87"+ + "\u0001\u0000\u0000\u0000\u019f\u0a8b\u0001\u0000\u0000\u0000\u01a1\u0a95"+ + "\u0001\u0000\u0000\u0000\u01a3\u0a9e\u0001\u0000\u0000\u0000\u01a5\u0aa6"+ + "\u0001\u0000\u0000\u0000\u01a7\u0aab\u0001\u0000\u0000\u0000\u01a9\u0aaf"+ + "\u0001\u0000\u0000\u0000\u01ab\u0aba\u0001\u0000\u0000\u0000\u01ad\u0abd"+ + "\u0001\u0000\u0000\u0000\u01af\u0ac4\u0001\u0000\u0000\u0000\u01b1\u0ace"+ + "\u0001\u0000\u0000\u0000\u01b3\u0ad1\u0001\u0000\u0000\u0000\u01b5\u0add"+ + "\u0001\u0000\u0000\u0000\u01b7\u0ae3\u0001\u0000\u0000\u0000\u01b9\u0aeb"+ + "\u0001\u0000\u0000\u0000\u01bb\u0af2\u0001\u0000\u0000\u0000\u01bd\u0af8"+ + "\u0001\u0000\u0000\u0000\u01bf\u0aff\u0001\u0000\u0000\u0000\u01c1\u0b07"+ + "\u0001\u0000\u0000\u0000\u01c3\u0b0b\u0001\u0000\u0000\u0000\u01c5\u0b13"+ + "\u0001\u0000\u0000\u0000\u01c7\u0b20\u0001\u0000\u0000\u0000\u01c9\u0b2a"+ + "\u0001\u0000\u0000\u0000\u01cb\u0b33\u0001\u0000\u0000\u0000\u01cd\u0b38"+ + "\u0001\u0000\u0000\u0000\u01cf\u0b41\u0001\u0000\u0000\u0000\u01d1\u0b46"+ + "\u0001\u0000\u0000\u0000\u01d3\u0b4b\u0001\u0000\u0000\u0000\u01d5\u0b4e"+ + "\u0001\u0000\u0000\u0000\u01d7\u0b5f\u0001\u0000\u0000\u0000\u01d9\u0b6c"+ + "\u0001\u0000\u0000\u0000\u01db\u0b73\u0001\u0000\u0000\u0000\u01dd\u0b7d"+ + "\u0001\u0000\u0000\u0000\u01df\u0b81\u0001\u0000\u0000\u0000\u01e1\u0b86"+ + "\u0001\u0000\u0000\u0000\u01e3\u0b8b\u0001\u0000\u0000\u0000\u01e5\u0b90"+ + "\u0001\u0000\u0000\u0000\u01e7\u0b96\u0001\u0000\u0000\u0000\u01e9\u0b9a"+ + "\u0001\u0000\u0000\u0000\u01eb\u0b9f\u0001\u0000\u0000\u0000\u01ed\u0ba4"+ + "\u0001\u0000\u0000\u0000\u01ef\u0baa\u0001\u0000\u0000\u0000\u01f1\u0bb3"+ + "\u0001\u0000\u0000\u0000\u01f3\u0bb8\u0001\u0000\u0000\u0000\u01f5\u0bc0"+ + "\u0001\u0000\u0000\u0000\u01f7\u0bc5\u0001\u0000\u0000\u0000\u01f9\u0bd9"+ + "\u0001\u0000\u0000\u0000\u01fb\u0bde\u0001\u0000\u0000\u0000\u01fd\u0be3"+ + "\u0001\u0000\u0000\u0000\u01ff\u0be9\u0001\u0000\u0000\u0000\u0201\u0bee"+ + "\u0001\u0000\u0000\u0000\u0203\u0bf4\u0001\u0000\u0000\u0000\u0205\u0bfa"+ + "\u0001\u0000\u0000\u0000\u0207\u0bff\u0001\u0000\u0000\u0000\u0209\u0c04"+ + "\u0001\u0000\u0000\u0000\u020b\u0c09\u0001\u0000\u0000\u0000\u020d\u0c0f"+ + "\u0001\u0000\u0000\u0000\u020f\u0c19\u0001\u0000\u0000\u0000\u0211\u0c28"+ + "\u0001\u0000\u0000\u0000\u0213\u0c31\u0001\u0000\u0000\u0000\u0215\u0c36"+ + "\u0001\u0000\u0000\u0000\u0217\u0c3e\u0001\u0000\u0000\u0000\u0219\u0c4b"+ + "\u0001\u0000\u0000\u0000\u021b\u0c52\u0001\u0000\u0000\u0000\u021d\u0c56"+ + "\u0001\u0000\u0000\u0000\u021f\u0c5c\u0001\u0000\u0000\u0000\u0221\u0c66"+ + "\u0001\u0000\u0000\u0000\u0223\u0c70\u0001\u0000\u0000\u0000\u0225\u0c7d"+ + "\u0001\u0000\u0000\u0000\u0227\u0c8f\u0001\u0000\u0000\u0000\u0229\u0ca3"+ + "\u0001\u0000\u0000\u0000\u022b\u0cb0\u0001\u0000\u0000\u0000\u022d\u0cbb"+ + "\u0001\u0000\u0000\u0000\u022f\u0ccb\u0001\u0000\u0000\u0000\u0231\u0cd8"+ + "\u0001\u0000\u0000\u0000\u0233\u0cdc\u0001\u0000\u0000\u0000\u0235\u0ce5"+ + "\u0001\u0000\u0000\u0000\u0237\u0cea\u0001\u0000\u0000\u0000\u0239\u0cf0"+ + "\u0001\u0000\u0000\u0000\u023b\u0cf8\u0001\u0000\u0000\u0000\u023d\u0d03"+ + "\u0001\u0000\u0000\u0000\u023f\u0d07\u0001\u0000\u0000\u0000\u0241\u0d0d"+ + "\u0001\u0000\u0000\u0000\u0243\u0d14\u0001\u0000\u0000\u0000\u0245\u0d1b"+ + "\u0001\u0000\u0000\u0000\u0247\u0d21\u0001\u0000\u0000\u0000\u0249\u0d26"+ + "\u0001\u0000\u0000\u0000\u024b\u0d2b\u0001\u0000\u0000\u0000\u024d\u0d31"+ + "\u0001\u0000\u0000\u0000\u024f\u0d39\u0001\u0000\u0000\u0000\u0251\u0d42"+ + "\u0001\u0000\u0000\u0000\u0253\u0d48\u0001\u0000\u0000\u0000\u0255\u0d4d"+ + "\u0001\u0000\u0000\u0000\u0257\u0d56\u0001\u0000\u0000\u0000\u0259\u0d59"+ + "\u0001\u0000\u0000\u0000\u025b\u0d63\u0001\u0000\u0000\u0000\u025d\u0d70"+ + "\u0001\u0000\u0000\u0000\u025f\u0d74\u0001\u0000\u0000\u0000\u0261\u0d79"+ + "\u0001\u0000\u0000\u0000\u0263\u0d7f\u0001\u0000\u0000\u0000\u0265\u0d88"+ + "\u0001\u0000\u0000\u0000\u0267\u0d8b\u0001\u0000\u0000\u0000\u0269\u0d92"+ + "\u0001\u0000\u0000\u0000\u026b\u0d95\u0001\u0000\u0000\u0000\u026d\u0d9a"+ + "\u0001\u0000\u0000\u0000\u026f\u0d9f\u0001\u0000\u0000\u0000\u0271\u0da9"+ + "\u0001\u0000\u0000\u0000\u0273\u0dac\u0001\u0000\u0000\u0000\u0275\u0db2"+ + "\u0001\u0000\u0000\u0000\u0277\u0db8\u0001\u0000\u0000\u0000\u0279\u0dc0"+ + "\u0001\u0000\u0000\u0000\u027b\u0dc5\u0001\u0000\u0000\u0000\u027d\u0dcf"+ + "\u0001\u0000\u0000\u0000\u027f\u0dd9\u0001\u0000\u0000\u0000\u0281\u0de0"+ + "\u0001\u0000\u0000\u0000\u0283\u0dea\u0001\u0000\u0000\u0000\u0285\u0df5"+ + "\u0001\u0000\u0000\u0000\u0287\u0dfe\u0001\u0000\u0000\u0000\u0289\u0e0e"+ + "\u0001\u0000\u0000\u0000\u028b\u0e1f\u0001\u0000\u0000\u0000\u028d\u0e32"+ + "\u0001\u0000\u0000\u0000\u028f\u0e41\u0001\u0000\u0000\u0000\u0291\u0e46"+ + "\u0001\u0000\u0000\u0000\u0293\u0e4c\u0001\u0000\u0000\u0000\u0295\u0e54"+ + "\u0001\u0000\u0000\u0000\u0297\u0e5b\u0001\u0000\u0000\u0000\u0299\u0e66"+ + "\u0001\u0000\u0000\u0000\u029b\u0e6f\u0001\u0000\u0000\u0000\u029d\u0e72"+ + "\u0001\u0000\u0000\u0000\u029f\u0e74\u0001\u0000\u0000\u0000\u02a1\u0e79"+ + "\u0001\u0000\u0000\u0000\u02a3\u0e7e\u0001\u0000\u0000\u0000\u02a5\u0e89"+ + "\u0001\u0000\u0000\u0000\u02a7\u0e91\u0001\u0000\u0000\u0000\u02a9\u0e98"+ + "\u0001\u0000\u0000\u0000\u02ab\u0ea0\u0001\u0000\u0000\u0000\u02ad\u0ea7"+ + "\u0001\u0000\u0000\u0000\u02af\u0eb1\u0001\u0000\u0000\u0000\u02b1\u0eb9"+ + "\u0001\u0000\u0000\u0000\u02b3\u0ec1\u0001\u0000\u0000\u0000\u02b5\u0ec6"+ + "\u0001\u0000\u0000\u0000\u02b7\u0ed0\u0001\u0000\u0000\u0000\u02b9\u0edc"+ + "\u0001\u0000\u0000\u0000\u02bb\u0ee4\u0001\u0000\u0000\u0000\u02bd\u0eef"+ + "\u0001\u0000\u0000\u0000\u02bf\u0ef8\u0001\u0000\u0000\u0000\u02c1\u0f07"+ + "\u0001\u0000\u0000\u0000\u02c3\u0f16\u0001\u0000\u0000\u0000\u02c5\u0f1c"+ + "\u0001\u0000\u0000\u0000\u02c7\u0f23\u0001\u0000\u0000\u0000\u02c9\u0f29"+ + "\u0001\u0000\u0000\u0000\u02cb\u0f31\u0001\u0000\u0000\u0000\u02cd\u0f39"+ + "\u0001\u0000\u0000\u0000\u02cf\u0f40\u0001\u0000\u0000\u0000\u02d1\u0f46"+ + "\u0001\u0000\u0000\u0000\u02d3\u0f4b\u0001\u0000\u0000\u0000\u02d5\u0f50"+ + "\u0001\u0000\u0000\u0000\u02d7\u0f5a\u0001\u0000\u0000\u0000\u02d9\u0f61"+ + "\u0001\u0000\u0000\u0000\u02db\u0f69\u0001\u0000\u0000\u0000\u02dd\u0f71"+ + "\u0001\u0000\u0000\u0000\u02df\u0f79\u0001\u0000\u0000\u0000\u02e1\u0f84"+ + "\u0001\u0000\u0000\u0000\u02e3\u0f8b\u0001\u0000\u0000\u0000\u02e5\u0f93"+ + "\u0001\u0000\u0000\u0000\u02e7\u0f9a\u0001\u0000\u0000\u0000\u02e9\u0fa1"+ + "\u0001\u0000\u0000\u0000\u02eb\u0fac\u0001\u0000\u0000\u0000\u02ed\u0fb4"+ + "\u0001\u0000\u0000\u0000\u02ef\u0fc8\u0001\u0000\u0000\u0000\u02f1\u0fd1"+ + "\u0001\u0000\u0000\u0000\u02f3\u0fd9\u0001\u0000\u0000\u0000\u02f5\u0fe6"+ + "\u0001\u0000\u0000\u0000\u02f7\u0ff1\u0001\u0000\u0000\u0000\u02f9\u0ffa"+ + "\u0001\u0000\u0000\u0000\u02fb\u1004\u0001\u0000\u0000\u0000\u02fd\u100c"+ + "\u0001\u0000\u0000\u0000\u02ff\u1018\u0001\u0000\u0000\u0000\u0301\u101f"+ + "\u0001\u0000\u0000\u0000\u0303\u1027\u0001\u0000\u0000\u0000\u0305\u102e"+ + "\u0001\u0000\u0000\u0000\u0307\u1038\u0001\u0000\u0000\u0000\u0309\u103e"+ + "\u0001\u0000\u0000\u0000\u030b\u1044\u0001\u0000\u0000\u0000\u030d\u1049"+ + "\u0001\u0000\u0000\u0000\u030f\u104f\u0001\u0000\u0000\u0000\u0311\u1058"+ + "\u0001\u0000\u0000\u0000\u0313\u105f\u0001\u0000\u0000\u0000\u0315\u1067"+ + "\u0001\u0000\u0000\u0000\u0317\u106b\u0001\u0000\u0000\u0000\u0319\u1070"+ + "\u0001\u0000\u0000\u0000\u031b\u1073\u0001\u0000\u0000\u0000\u031d\u107a"+ + "\u0001\u0000\u0000\u0000\u031f\u1083\u0001\u0000\u0000\u0000\u0321\u108d"+ + "\u0001\u0000\u0000\u0000\u0323\u1094\u0001\u0000\u0000\u0000\u0325\u109c"+ + "\u0001\u0000\u0000\u0000\u0327\u10a3\u0001\u0000\u0000\u0000\u0329\u10aa"+ + "\u0001\u0000\u0000\u0000\u032b\u10af\u0001\u0000\u0000\u0000\u032d\u10bc"+ + "\u0001\u0000\u0000\u0000\u032f\u10c4\u0001\u0000\u0000\u0000\u0331\u10d1"+ + "\u0001\u0000\u0000\u0000\u0333\u10d5\u0001\u0000\u0000\u0000\u0335\u10da"+ + "\u0001\u0000\u0000\u0000\u0337\u10ef\u0001\u0000\u0000\u0000\u0339\u10f5"+ + "\u0001\u0000\u0000\u0000\u033b\u10fa\u0001\u0000\u0000\u0000\u033d\u1101"+ + "\u0001\u0000\u0000\u0000\u033f\u1106\u0001\u0000\u0000\u0000\u0341\u110f"+ + "\u0001\u0000\u0000\u0000\u0343\u1118\u0001\u0000\u0000\u0000\u0345\u111f"+ + "\u0001\u0000\u0000\u0000\u0347\u1125\u0001\u0000\u0000\u0000\u0349\u1129"+ + "\u0001\u0000\u0000\u0000\u034b\u1138\u0001\u0000\u0000\u0000\u034d\u113e"+ + "\u0001\u0000\u0000\u0000\u034f\u1145\u0001\u0000\u0000\u0000\u0351\u114b"+ + "\u0001\u0000\u0000\u0000\u0353\u1152\u0001\u0000\u0000\u0000\u0355\u1158"+ + "\u0001\u0000\u0000\u0000\u0357\u115f\u0001\u0000\u0000\u0000\u0359\u1164"+ + "\u0001\u0000\u0000\u0000\u035b\u116c\u0001\u0000\u0000\u0000\u035d\u1173"+ + "\u0001\u0000\u0000\u0000\u035f\u117d\u0001\u0000\u0000\u0000\u0361\u1184"+ + "\u0001\u0000\u0000\u0000\u0363\u118b\u0001\u0000\u0000\u0000\u0365\u118f"+ + "\u0001\u0000\u0000\u0000\u0367\u1199\u0001\u0000\u0000\u0000\u0369\u11a0"+ + "\u0001\u0000\u0000\u0000\u036b\u11a5\u0001\u0000\u0000\u0000\u036d\u11ac"+ + "\u0001\u0000\u0000\u0000\u036f\u11b2\u0001\u0000\u0000\u0000\u0371\u11b9"+ + "\u0001\u0000\u0000\u0000\u0373\u11c5\u0001\u0000\u0000\u0000\u0375\u11cc"+ + "\u0001\u0000\u0000\u0000\u0377\u11d4\u0001\u0000\u0000\u0000\u0379\u11d9"+ + "\u0001\u0000\u0000\u0000\u037b\u11df\u0001\u0000\u0000\u0000\u037d\u11e9"+ + "\u0001\u0000\u0000\u0000\u037f\u11f4\u0001\u0000\u0000\u0000\u0381\u11f9"+ + "\u0001\u0000\u0000\u0000\u0383\u11fe\u0001\u0000\u0000\u0000\u0385\u1203"+ + "\u0001\u0000\u0000\u0000\u0387\u1208\u0001\u0000\u0000\u0000\u0389\u1212"+ + "\u0001\u0000\u0000\u0000\u038b\u121a\u0001\u0000\u0000\u0000\u038d\u121d"+ + "\u0001\u0000\u0000\u0000\u038f\u1229\u0001\u0000\u0000\u0000\u0391\u122f"+ + "\u0001\u0000\u0000\u0000\u0393\u1234\u0001\u0000\u0000\u0000\u0395\u123d"+ + "\u0001\u0000\u0000\u0000\u0397\u1242\u0001\u0000\u0000\u0000\u0399\u1247"+ + "\u0001\u0000\u0000\u0000\u039b\u1250\u0001\u0000\u0000\u0000\u039d\u1255"+ + "\u0001\u0000\u0000\u0000\u039f\u125f\u0001\u0000\u0000\u0000\u03a1\u1265"+ + "\u0001\u0000\u0000\u0000\u03a3\u126f\u0001\u0000\u0000\u0000\u03a5\u127b"+ + "\u0001\u0000\u0000\u0000\u03a7\u1285\u0001\u0000\u0000\u0000\u03a9\u128b"+ + "\u0001\u0000\u0000\u0000\u03ab\u1292\u0001\u0000\u0000\u0000\u03ad\u1299"+ + "\u0001\u0000\u0000\u0000\u03af\u129f\u0001\u0000\u0000\u0000\u03b1\u12a8"+ + "\u0001\u0000\u0000\u0000\u03b3\u12ab\u0001\u0000\u0000\u0000\u03b5\u12b2"+ + "\u0001\u0000\u0000\u0000\u03b7\u12b6\u0001\u0000\u0000\u0000\u03b9\u12bb"+ + "\u0001\u0000\u0000\u0000\u03bb\u12c2\u0001\u0000\u0000\u0000\u03bd\u12c8"+ + "\u0001\u0000\u0000\u0000\u03bf\u12ce\u0001\u0000\u0000\u0000\u03c1\u12d5"+ + "\u0001\u0000\u0000\u0000\u03c3\u12dd\u0001\u0000\u0000\u0000\u03c5\u12e6"+ + "\u0001\u0000\u0000\u0000\u03c7\u12f0\u0001\u0000\u0000\u0000\u03c9\u12f8"+ + "\u0001\u0000\u0000\u0000\u03cb\u12fe\u0001\u0000\u0000\u0000\u03cd\u1305"+ + "\u0001\u0000\u0000\u0000\u03cf\u130d\u0001\u0000\u0000\u0000\u03d1\u1315"+ + "\u0001\u0000\u0000\u0000\u03d3\u131a\u0001\u0000\u0000\u0000\u03d5\u1320"+ + "\u0001\u0000\u0000\u0000\u03d7\u1325\u0001\u0000\u0000\u0000\u03d9\u132e"+ + "\u0001\u0000\u0000\u0000\u03db\u1333\u0001\u0000\u0000\u0000\u03dd\u1338"+ + "\u0001\u0000\u0000\u0000\u03df\u133e\u0001\u0000\u0000\u0000\u03e1\u1348"+ + "\u0001\u0000\u0000\u0000\u03e3\u134d\u0001\u0000\u0000\u0000\u03e5\u1352"+ + "\u0001\u0000\u0000\u0000\u03e7\u135b\u0001\u0000\u0000\u0000\u03e9\u1361"+ + "\u0001\u0000\u0000\u0000\u03eb\u1365\u0001\u0000\u0000\u0000\u03ed\u136d"+ + "\u0001\u0000\u0000\u0000\u03ef\u136f\u0001\u0000\u0000\u0000\u03f1\u1377"+ + "\u0001\u0000\u0000\u0000\u03f3\u1379\u0001\u0000\u0000\u0000\u03f5\u137f"+ + "\u0001\u0000\u0000\u0000\u03f7\u1381\u0001\u0000\u0000\u0000\u03f9\u1387"+ + "\u0001\u0000\u0000\u0000\u03fb\u1389\u0001\u0000\u0000\u0000\u03fd\u138b"+ + "\u0001\u0000\u0000\u0000\u03ff\u138d\u0001\u0000\u0000\u0000\u0401\u138f"+ + "\u0001\u0000\u0000\u0000\u0403\u1391\u0001\u0000\u0000\u0000\u0405\u1393"+ + "\u0001\u0000\u0000\u0000\u0407\u1395\u0001\u0000\u0000\u0000\u0409\u1397"+ + "\u0001\u0000\u0000\u0000\u040b\u139a\u0001\u0000\u0000\u0000\u040d\u139c"+ + "\u0001\u0000\u0000\u0000\u040f\u139e\u0001\u0000\u0000\u0000\u0411\u13a1"+ + "\u0001\u0000\u0000\u0000\u0413\u13a3\u0001\u0000\u0000\u0000\u0415\u13a5"+ + "\u0001\u0000\u0000\u0000\u0417\u13a8\u0001\u0000\u0000\u0000\u0419\u13ac"+ + "\u0001\u0000\u0000\u0000\u041b\u13af\u0001\u0000\u0000\u0000\u041d\u13b2"+ + "\u0001\u0000\u0000\u0000\u041f\u13b4\u0001\u0000\u0000\u0000\u0421\u13e3"+ + "\u0001\u0000\u0000\u0000\u0423\u13e9\u0001\u0000\u0000\u0000\u0425\u13ec"+ + "\u0001\u0000\u0000\u0000\u0427\u13f3\u0001\u0000\u0000\u0000\u0429\u13fa"+ + "\u0001\u0000\u0000\u0000\u042b\u1401\u0001\u0000\u0000\u0000\u042d\u1410"+ + "\u0001\u0000\u0000\u0000\u042f\u1412\u0001\u0000\u0000\u0000\u0431\u1429"+ + "\u0001\u0000\u0000\u0000\u0433\u142e\u0001\u0000\u0000\u0000\u0435\u1432"+ + "\u0001\u0000\u0000\u0000\u0437\u144f\u0001\u0000\u0000\u0000\u0439\u1451"+ + "\u0001\u0000\u0000\u0000\u043b\u145a\u0001\u0000\u0000\u0000\u043d\u1460"+ + "\u0001\u0000\u0000\u0000\u043f\u1462\u0001\u0000\u0000\u0000\u0441\u1475"+ + "\u0001\u0000\u0000\u0000\u0443\u1485\u0001\u0000\u0000\u0000\u0445\u1497"+ + "\u0001\u0000\u0000\u0000\u0447\u149d\u0001\u0000\u0000\u0000\u0449\u044a"+ + "\u0005;\u0000\u0000\u044a\u0002\u0001\u0000\u0000\u0000\u044b\u044c\u0005"+ + "(\u0000\u0000\u044c\u0004\u0001\u0000\u0000\u0000\u044d\u044e\u0005)\u0000"+ + "\u0000\u044e\u0006\u0001\u0000\u0000\u0000\u044f\u0450\u0005,\u0000\u0000"+ + "\u0450\b\u0001\u0000\u0000\u0000\u0451\u0452\u0005.\u0000\u0000\u0452"+ + "\n\u0001\u0000\u0000\u0000\u0453\u0454\u0005.\u0000\u0000\u0454\u0455"+ + "\u0005.\u0000\u0000\u0455\u0456\u0005.\u0000\u0000\u0456\f\u0001\u0000"+ + "\u0000\u0000\u0457\u0458\u0005[\u0000\u0000\u0458\u000e\u0001\u0000\u0000"+ + "\u0000\u0459\u045a\u0005]\u0000\u0000\u045a\u0010\u0001\u0000\u0000\u0000"+ + "\u045b\u045c\u0005{\u0000\u0000\u045c\u0012\u0001\u0000\u0000\u0000\u045d"+ + "\u045e\u0005}\u0000\u0000\u045e\u0014\u0001\u0000\u0000\u0000\u045f\u0460"+ + "\u0005A\u0000\u0000\u0460\u0461\u0005C\u0000\u0000\u0461\u0462\u0005C"+ + "\u0000\u0000\u0462\u0463\u0005O\u0000\u0000\u0463\u0464\u0005U\u0000\u0000"+ + "\u0464\u0465\u0005N\u0000\u0000\u0465\u0466\u0005T\u0000\u0000\u0466\u0467"+ + "\u0005_\u0000\u0000\u0467\u0468\u0005L\u0000\u0000\u0468\u0469\u0005O"+ + "\u0000\u0000\u0469\u046a\u0005C\u0000\u0000\u046a\u046b\u0005K\u0000\u0000"+ + "\u046b\u0016\u0001\u0000\u0000\u0000\u046c\u046d\u0005A\u0000\u0000\u046d"+ + "\u046e\u0005C\u0000\u0000\u046e\u046f\u0005C\u0000\u0000\u046f\u0470\u0005"+ + "O\u0000\u0000\u0470\u0471\u0005U\u0000\u0000\u0471\u0472\u0005N\u0000"+ + "\u0000\u0472\u0473\u0005T\u0000\u0000\u0473\u0474\u0005_\u0000\u0000\u0474"+ + "\u0475\u0005U\u0000\u0000\u0475\u0476\u0005N\u0000\u0000\u0476\u0477\u0005"+ + "L\u0000\u0000\u0477\u0478\u0005O\u0000\u0000\u0478\u0479\u0005C\u0000"+ + "\u0000\u0479\u047a\u0005K\u0000\u0000\u047a\u0018\u0001\u0000\u0000\u0000"+ + "\u047b\u047c\u0005A\u0000\u0000\u047c\u047d\u0005C\u0000\u0000\u047d\u047e"+ + "\u0005T\u0000\u0000\u047e\u047f\u0005I\u0000\u0000\u047f\u0480\u0005O"+ + "\u0000\u0000\u0480\u0481\u0005N\u0000\u0000\u0481\u0482\u0005S\u0000\u0000"+ + "\u0482\u001a\u0001\u0000\u0000\u0000\u0483\u0484\u0005A\u0000\u0000\u0484"+ + "\u0485\u0005D\u0000\u0000\u0485\u0486\u0005D\u0000\u0000\u0486\u001c\u0001"+ + "\u0000\u0000\u0000\u0487\u0488\u0005A\u0000\u0000\u0488\u0489\u0005D\u0000"+ + "\u0000\u0489\u048a\u0005M\u0000\u0000\u048a\u048b\u0005I\u0000\u0000\u048b"+ + "\u048c\u0005N\u0000\u0000\u048c\u001e\u0001\u0000\u0000\u0000\u048d\u048e"+ + "\u0005A\u0000\u0000\u048e\u048f\u0005F\u0000\u0000\u048f\u0490\u0005T"+ + "\u0000\u0000\u0490\u0491\u0005E\u0000\u0000\u0491\u0492\u0005R\u0000\u0000"+ + "\u0492 \u0001\u0000\u0000\u0000\u0493\u0494\u0005A\u0000\u0000\u0494\u0495"+ + "\u0005G\u0000\u0000\u0495\u0496\u0005G\u0000\u0000\u0496\u0497\u0005_"+ + "\u0000\u0000\u0497\u0498\u0005S\u0000\u0000\u0498\u0499\u0005T\u0000\u0000"+ + "\u0499\u049a\u0005A\u0000\u0000\u049a\u049b\u0005T\u0000\u0000\u049b\u049c"+ + "\u0005E\u0000\u0000\u049c\"\u0001\u0000\u0000\u0000\u049d\u049e\u0005"+ + "A\u0000\u0000\u049e\u049f\u0005G\u0000\u0000\u049f\u04a0\u0005G\u0000"+ + "\u0000\u04a0\u04a1\u0005R\u0000\u0000\u04a1\u04a2\u0005E\u0000\u0000\u04a2"+ + "\u04a3\u0005G\u0000\u0000\u04a3\u04a4\u0005A\u0000\u0000\u04a4\u04a5\u0005"+ + "T\u0000\u0000\u04a5\u04a6\u0005E\u0000\u0000\u04a6$\u0001\u0000\u0000"+ + "\u0000\u04a7\u04a8\u0005A\u0000\u0000\u04a8\u04a9\u0005L\u0000\u0000\u04a9"+ + "\u04aa\u0005I\u0000\u0000\u04aa\u04ab\u0005A\u0000\u0000\u04ab\u04ac\u0005"+ + "S\u0000\u0000\u04ac&\u0001\u0000\u0000\u0000\u04ad\u04ae\u0005A\u0000"+ + "\u0000\u04ae\u04af\u0005L\u0000\u0000\u04af\u04b0\u0005L\u0000\u0000\u04b0"+ + "(\u0001\u0000\u0000\u0000\u04b1\u04b2\u0005A\u0000\u0000\u04b2\u04b3\u0005"+ + "L\u0000\u0000\u04b3\u04b4\u0005T\u0000\u0000\u04b4\u04b5\u0005E\u0000"+ + "\u0000\u04b5\u04b6\u0005R\u0000\u0000\u04b6*\u0001\u0000\u0000\u0000\u04b7"+ + "\u04b8\u0005A\u0000\u0000\u04b8\u04b9\u0005N\u0000\u0000\u04b9\u04ba\u0005"+ + "A\u0000\u0000\u04ba\u04bb\u0005L\u0000\u0000\u04bb\u04bc\u0005Y\u0000"+ + "\u0000\u04bc\u04bd\u0005Z\u0000\u0000\u04bd\u04be\u0005E\u0000\u0000\u04be"+ + ",\u0001\u0000\u0000\u0000\u04bf\u04c0\u0005A\u0000\u0000\u04c0\u04c1\u0005"+ + "N\u0000\u0000\u04c1\u04c2\u0005A\u0000\u0000\u04c2\u04c3\u0005L\u0000"+ + "\u0000\u04c3\u04c4\u0005Y\u0000\u0000\u04c4\u04c5\u0005Z\u0000\u0000\u04c5"+ + "\u04c6\u0005E\u0000\u0000\u04c6\u04c7\u0005D\u0000\u0000\u04c7.\u0001"+ + "\u0000\u0000\u0000\u04c8\u04c9\u0005A\u0000\u0000\u04c9\u04ca\u0005N\u0000"+ + "\u0000\u04ca\u04cb\u0005D\u0000\u0000\u04cb0\u0001\u0000\u0000\u0000\u04cc"+ + "\u04cd\u0005A\u0000\u0000\u04cd\u04ce\u0005N\u0000\u0000\u04ce\u04cf\u0005"+ + "T\u0000\u0000\u04cf\u04d0\u0005I\u0000\u0000\u04d02\u0001\u0000\u0000"+ + "\u0000\u04d1\u04d2\u0005A\u0000\u0000\u04d2\u04d3\u0005P\u0000\u0000\u04d3"+ + "\u04d4\u0005P\u0000\u0000\u04d4\u04d5\u0005E\u0000\u0000\u04d5\u04d6\u0005"+ + "N\u0000\u0000\u04d6\u04d7\u0005D\u0000\u0000\u04d74\u0001\u0000\u0000"+ + "\u0000\u04d8\u04d9\u0005A\u0000\u0000\u04d9\u04da\u0005R\u0000\u0000\u04da"+ + "\u04db\u0005R\u0000\u0000\u04db\u04dc\u0005A\u0000\u0000\u04dc\u04dd\u0005"+ + "Y\u0000\u0000\u04dd6\u0001\u0000\u0000\u0000\u04de\u04df\u0005A\u0000"+ + "\u0000\u04df\u04e0\u0005S\u0000\u0000\u04e08\u0001\u0000\u0000\u0000\u04e1"+ + "\u04e2\u0005A\u0000\u0000\u04e2\u04e3\u0005S\u0000\u0000\u04e3\u04e4\u0005"+ + "C\u0000\u0000\u04e4:\u0001\u0000\u0000\u0000\u04e5\u04e6\u0005A\u0000"+ + "\u0000\u04e6\u04e7\u0005T\u0000\u0000\u04e7<\u0001\u0000\u0000\u0000\u04e8"+ + "\u04e9\u0005A\u0000\u0000\u04e9\u04ea\u0005U\u0000\u0000\u04ea\u04eb\u0005"+ + "T\u0000\u0000\u04eb\u04ec\u0005H\u0000\u0000\u04ec\u04ed\u0005O\u0000"+ + "\u0000\u04ed\u04ee\u0005R\u0000\u0000\u04ee\u04ef\u0005S\u0000\u0000\u04ef"+ + ">\u0001\u0000\u0000\u0000\u04f0\u04f1\u0005A\u0000\u0000\u04f1\u04f2\u0005"+ + "U\u0000\u0000\u04f2\u04f3\u0005T\u0000\u0000\u04f3\u04f4\u0005O\u0000"+ + "\u0000\u04f4@\u0001\u0000\u0000\u0000\u04f5\u04f6\u0005A\u0000\u0000\u04f6"+ + "\u04f7\u0005U\u0000\u0000\u04f7\u04f8\u0005T\u0000\u0000\u04f8\u04f9\u0005"+ + "O\u0000\u0000\u04f9\u04fa\u0005_\u0000\u0000\u04fa\u04fb\u0005I\u0000"+ + "\u0000\u04fb\u04fc\u0005N\u0000\u0000\u04fc\u04fd\u0005C\u0000\u0000\u04fd"+ + "\u04fe\u0005R\u0000\u0000\u04fe\u04ff\u0005E\u0000\u0000\u04ff\u0500\u0005"+ + "M\u0000\u0000\u0500\u0501\u0005E\u0000\u0000\u0501\u0502\u0005N\u0000"+ + "\u0000\u0502\u0503\u0005T\u0000\u0000\u0503B\u0001\u0000\u0000\u0000\u0504"+ + "\u0505\u0005A\u0000\u0000\u0505\u0506\u0005L\u0000\u0000\u0506\u0507\u0005"+ + "W\u0000\u0000\u0507\u0508\u0005A\u0000\u0000\u0508\u0509\u0005Y\u0000"+ + "\u0000\u0509\u050a\u0005S\u0000\u0000\u050aD\u0001\u0000\u0000\u0000\u050b"+ + "\u050c\u0005B\u0000\u0000\u050c\u050d\u0005A\u0000\u0000\u050d\u050e\u0005"+ + "C\u0000\u0000\u050e\u050f\u0005K\u0000\u0000\u050f\u0510\u0005E\u0000"+ + "\u0000\u0510\u0511\u0005N\u0000\u0000\u0511\u0512\u0005D\u0000\u0000\u0512"+ + "F\u0001\u0000\u0000\u0000\u0513\u0514\u0005B\u0000\u0000\u0514\u0515\u0005"+ + "A\u0000\u0000\u0515\u0516\u0005C\u0000\u0000\u0516\u0517\u0005K\u0000"+ + "\u0000\u0517\u0518\u0005E\u0000\u0000\u0518\u0519\u0005N\u0000\u0000\u0519"+ + "\u051a\u0005D\u0000\u0000\u051a\u051b\u0005S\u0000\u0000\u051bH\u0001"+ + "\u0000\u0000\u0000\u051c\u051d\u0005B\u0000\u0000\u051d\u051e\u0005A\u0000"+ + "\u0000\u051e\u051f\u0005C\u0000\u0000\u051f\u0520\u0005K\u0000\u0000\u0520"+ + "\u0521\u0005U\u0000\u0000\u0521\u0522\u0005P\u0000\u0000\u0522J\u0001"+ + "\u0000\u0000\u0000\u0523\u0524\u0005B\u0000\u0000\u0524\u0525\u0005E\u0000"+ + "\u0000\u0525\u0526\u0005G\u0000\u0000\u0526\u0527\u0005I\u0000\u0000\u0527"+ + "\u0528\u0005N\u0000\u0000\u0528L\u0001\u0000\u0000\u0000\u0529\u052a\u0005"+ + "B\u0000\u0000\u052a\u052b\u0005E\u0000\u0000\u052b\u052c\u0005L\u0000"+ + "\u0000\u052c\u052d\u0005O\u0000\u0000\u052d\u052e\u0005N\u0000\u0000\u052e"+ + "\u052f\u0005G\u0000\u0000\u052fN\u0001\u0000\u0000\u0000\u0530\u0531\u0005"+ + "B\u0000\u0000\u0531\u0532\u0005E\u0000\u0000\u0532\u0533\u0005T\u0000"+ + "\u0000\u0533\u0534\u0005W\u0000\u0000\u0534\u0535\u0005E\u0000\u0000\u0535"+ + "\u0536\u0005E\u0000\u0000\u0536\u0537\u0005N\u0000\u0000\u0537P\u0001"+ + "\u0000\u0000\u0000\u0538\u0539\u0005B\u0000\u0000\u0539\u053a\u0005I\u0000"+ + "\u0000\u053a\u053b\u0005G\u0000\u0000\u053b\u053c\u0005I\u0000\u0000\u053c"+ + "\u053d\u0005N\u0000\u0000\u053d\u053e\u0005T\u0000\u0000\u053eR\u0001"+ + "\u0000\u0000\u0000\u053f\u0540\u0005B\u0000\u0000\u0540\u0541\u0005I\u0000"+ + "\u0000\u0541\u0542\u0005N\u0000\u0000\u0542T\u0001\u0000\u0000\u0000\u0543"+ + "\u0544\u0005B\u0000\u0000\u0544\u0545\u0005I\u0000\u0000\u0545\u0546\u0005"+ + "N\u0000\u0000\u0546\u0547\u0005A\u0000\u0000\u0547\u0548\u0005R\u0000"+ + "\u0000\u0548\u0549\u0005Y\u0000\u0000\u0549V\u0001\u0000\u0000\u0000\u054a"+ + "\u054b\u0005B\u0000\u0000\u054b\u054c\u0005I\u0000\u0000\u054c\u054d\u0005"+ + "N\u0000\u0000\u054d\u054e\u0005L\u0000\u0000\u054e\u054f\u0005O\u0000"+ + "\u0000\u054f\u0550\u0005G\u0000\u0000\u0550X\u0001\u0000\u0000\u0000\u0551"+ + "\u0552\u0005B\u0000\u0000\u0552\u0553\u0005I\u0000\u0000\u0553\u0554\u0005"+ + "T\u0000\u0000\u0554\u0555\u0005A\u0000\u0000\u0555\u0556\u0005N\u0000"+ + "\u0000\u0556\u0557\u0005D\u0000\u0000\u0557Z\u0001\u0000\u0000\u0000\u0558"+ + "\u0559\u0005B\u0000\u0000\u0559\u055a\u0005I\u0000\u0000\u055a\u055b\u0005"+ + "T\u0000\u0000\u055b\u055c\u0005M\u0000\u0000\u055c\u055d\u0005A\u0000"+ + "\u0000\u055d\u055e\u0005P\u0000\u0000\u055e\\\u0001\u0000\u0000\u0000"+ + "\u055f\u0560\u0005B\u0000\u0000\u0560\u0561\u0005I\u0000\u0000\u0561\u0562"+ + "\u0005T\u0000\u0000\u0562\u0563\u0005M\u0000\u0000\u0563\u0564\u0005A"+ + "\u0000\u0000\u0564\u0565\u0005P\u0000\u0000\u0565\u0566\u0005_\u0000\u0000"+ + "\u0566\u0567\u0005E\u0000\u0000\u0567\u0568\u0005M\u0000\u0000\u0568\u0569"+ + "\u0005P\u0000\u0000\u0569\u056a\u0005T\u0000\u0000\u056a\u056b\u0005Y"+ + "\u0000\u0000\u056b^\u0001\u0000\u0000\u0000\u056c\u056d\u0005B\u0000\u0000"+ + "\u056d\u056e\u0005I\u0000\u0000\u056e\u056f\u0005T\u0000\u0000\u056f\u0570"+ + "\u0005M\u0000\u0000\u0570\u0571\u0005A\u0000\u0000\u0571\u0572\u0005P"+ + "\u0000\u0000\u0572\u0573\u0005_\u0000\u0000\u0573\u0574\u0005U\u0000\u0000"+ + "\u0574\u0575\u0005N\u0000\u0000\u0575\u0576\u0005I\u0000\u0000\u0576\u0577"+ + "\u0005O\u0000\u0000\u0577\u0578\u0005N\u0000\u0000\u0578`\u0001\u0000"+ + "\u0000\u0000\u0579\u057a\u0005B\u0000\u0000\u057a\u057b\u0005I\u0000\u0000"+ + "\u057b\u057c\u0005T\u0000\u0000\u057c\u057d\u0005O\u0000\u0000\u057d\u057e"+ + "\u0005R\u0000\u0000\u057eb\u0001\u0000\u0000\u0000\u057f\u0580\u0005B"+ + "\u0000\u0000\u0580\u0581\u0005I\u0000\u0000\u0581\u0582\u0005T\u0000\u0000"+ + "\u0582\u0583\u0005X\u0000\u0000\u0583\u0584\u0005O\u0000\u0000\u0584\u0585"+ + "\u0005R\u0000\u0000\u0585d\u0001\u0000\u0000\u0000\u0586\u0587\u0005B"+ + "\u0000\u0000\u0587\u0588\u0005L\u0000\u0000\u0588\u0589\u0005O\u0000\u0000"+ + "\u0589\u058a\u0005B\u0000\u0000\u058af\u0001\u0000\u0000\u0000\u058b\u058c"+ + "\u0005B\u0000\u0000\u058c\u058d\u0005O\u0000\u0000\u058d\u058e\u0005O"+ + "\u0000\u0000\u058e\u058f\u0005L\u0000\u0000\u058f\u0590\u0005E\u0000\u0000"+ + "\u0590\u0591\u0005A\u0000\u0000\u0591\u0592\u0005N\u0000\u0000\u0592h"+ + "\u0001\u0000\u0000\u0000\u0593\u0594\u0005B\u0000\u0000\u0594\u0595\u0005"+ + "R\u0000\u0000\u0595\u0596\u0005I\u0000\u0000\u0596\u0597\u0005E\u0000"+ + "\u0000\u0597\u0598\u0005F\u0000\u0000\u0598j\u0001\u0000\u0000\u0000\u0599"+ + "\u059a\u0005B\u0000\u0000\u059a\u059b\u0005R\u0000\u0000\u059b\u059c\u0005"+ + "O\u0000\u0000\u059c\u059d\u0005K\u0000\u0000\u059d\u059e\u0005E\u0000"+ + "\u0000\u059e\u059f\u0005R\u0000\u0000\u059fl\u0001\u0000\u0000\u0000\u05a0"+ + "\u05a1\u0005B\u0000\u0000\u05a1\u05a2\u0005U\u0000\u0000\u05a2\u05a3\u0005"+ + "C\u0000\u0000\u05a3\u05a4\u0005K\u0000\u0000\u05a4\u05a5\u0005E\u0000"+ + "\u0000\u05a5\u05a6\u0005T\u0000\u0000\u05a6\u05a7\u0005S\u0000\u0000\u05a7"+ + "n\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005B\u0000\u0000\u05a9\u05aa\u0005"+ + "U\u0000\u0000\u05aa\u05ab\u0005I\u0000\u0000\u05ab\u05ac\u0005L\u0000"+ + "\u0000\u05ac\u05ad\u0005D\u0000\u0000\u05adp\u0001\u0000\u0000\u0000\u05ae"+ + "\u05af\u0005B\u0000\u0000\u05af\u05b0\u0005U\u0000\u0000\u05b0\u05b1\u0005"+ + "I\u0000\u0000\u05b1\u05b2\u0005L\u0000\u0000\u05b2\u05b3\u0005T\u0000"+ + "\u0000\u05b3\u05b4\u0005I\u0000\u0000\u05b4\u05b5\u0005N\u0000\u0000\u05b5"+ + "r\u0001\u0000\u0000\u0000\u05b6\u05b7\u0005B\u0000\u0000\u05b7\u05b8\u0005"+ + "U\u0000\u0000\u05b8\u05b9\u0005L\u0000\u0000\u05b9\u05ba\u0005K\u0000"+ + "\u0000\u05bat\u0001\u0000\u0000\u0000\u05bb\u05bc\u0005B\u0000\u0000\u05bc"+ + "\u05bd\u0005Y\u0000\u0000\u05bdv\u0001\u0000\u0000\u0000\u05be\u05bf\u0005"+ + "C\u0000\u0000\u05bf\u05c0\u0005A\u0000\u0000\u05c0\u05c1\u0005C\u0000"+ + "\u0000\u05c1\u05c2\u0005H\u0000\u0000\u05c2\u05c3\u0005E\u0000\u0000\u05c3"+ + "x\u0001\u0000\u0000\u0000\u05c4\u05c5\u0005C\u0000\u0000\u05c5\u05c6\u0005"+ + "A\u0000\u0000\u05c6\u05c7\u0005C\u0000\u0000\u05c7\u05c8\u0005H\u0000"+ + "\u0000\u05c8\u05c9\u0005E\u0000\u0000\u05c9\u05ca\u0005D\u0000\u0000\u05ca"+ + "z\u0001\u0000\u0000\u0000\u05cb\u05cc\u0005C\u0000\u0000\u05cc\u05cd\u0005"+ + "A\u0000\u0000\u05cd\u05ce\u0005L\u0000\u0000\u05ce\u05cf\u0005L\u0000"+ + "\u0000\u05cf|\u0001\u0000\u0000\u0000\u05d0\u05d1\u0005C\u0000\u0000\u05d1"+ + "\u05d2\u0005A\u0000\u0000\u05d2\u05d3\u0005N\u0000\u0000\u05d3\u05d4\u0005"+ + "C\u0000\u0000\u05d4\u05d5\u0005E\u0000\u0000\u05d5\u05d6\u0005L\u0000"+ + "\u0000\u05d6~\u0001\u0000\u0000\u0000\u05d7\u05d8\u0005C\u0000\u0000\u05d8"+ + "\u05d9\u0005A\u0000\u0000\u05d9\u05da\u0005S\u0000\u0000\u05da\u05db\u0005"+ + "E\u0000\u0000\u05db\u0080\u0001\u0000\u0000\u0000\u05dc\u05dd\u0005C\u0000"+ + "\u0000\u05dd\u05de\u0005A\u0000\u0000\u05de\u05df\u0005S\u0000\u0000\u05df"+ + "\u05e0\u0005T\u0000\u0000\u05e0\u0082\u0001\u0000\u0000\u0000\u05e1\u05e2"+ + "\u0005C\u0000\u0000\u05e2\u05e3\u0005A\u0000\u0000\u05e3\u05e4\u0005T"+ + "\u0000\u0000\u05e4\u05e5\u0005A\u0000\u0000\u05e5\u05e6\u0005L\u0000\u0000"+ + "\u05e6\u05e7\u0005O\u0000\u0000\u05e7\u05e8\u0005G\u0000\u0000\u05e8\u0084"+ + "\u0001\u0000\u0000\u0000\u05e9\u05ea\u0005C\u0000\u0000\u05ea\u05eb\u0005"+ + "A\u0000\u0000\u05eb\u05ec\u0005T\u0000\u0000\u05ec\u05ed\u0005A\u0000"+ + "\u0000\u05ed\u05ee\u0005L\u0000\u0000\u05ee\u05ef\u0005O\u0000\u0000\u05ef"+ + "\u05f0\u0005G\u0000\u0000\u05f0\u05f1\u0005S\u0000\u0000\u05f1\u0086\u0001"+ + "\u0000\u0000\u0000\u05f2\u05f3\u0005C\u0000\u0000\u05f3\u05f4\u0005H\u0000"+ + "\u0000\u05f4\u05f5\u0005A\u0000\u0000\u05f5\u05f6\u0005I\u0000\u0000\u05f6"+ + "\u05f7\u0005N\u0000\u0000\u05f7\u0088\u0001\u0000\u0000\u0000\u05f8\u05f9"+ + "\u0005C\u0000\u0000\u05f9\u05fa\u0005H\u0000\u0000\u05fa\u05fb\u0005A"+ + "\u0000\u0000\u05fb\u0606\u0005R\u0000\u0000\u05fc\u05fd\u0005C\u0000\u0000"+ + "\u05fd\u05fe\u0005H\u0000\u0000\u05fe\u05ff\u0005A\u0000\u0000\u05ff\u0600"+ + "\u0005R\u0000\u0000\u0600\u0601\u0005A\u0000\u0000\u0601\u0602\u0005C"+ + "\u0000\u0000\u0602\u0603\u0005T\u0000\u0000\u0603\u0604\u0005E\u0000\u0000"+ + "\u0604\u0606\u0005R\u0000\u0000\u0605\u05f8\u0001\u0000\u0000\u0000\u0605"+ + "\u05fc\u0001\u0000\u0000\u0000\u0606\u008a\u0001\u0000\u0000\u0000\u0607"+ + "\u0608\u0005C\u0000\u0000\u0608\u0609\u0005H\u0000\u0000\u0609\u060a\u0005"+ + "A\u0000\u0000\u060a\u060b\u0005R\u0000\u0000\u060b\u060c\u0005S\u0000"+ + "\u0000\u060c\u060d\u0005E\u0000\u0000\u060d\u060e\u0005T\u0000\u0000\u060e"+ + "\u008c\u0001\u0000\u0000\u0000\u060f\u0610\u0005C\u0000\u0000\u0610\u0611"+ + "\u0005H\u0000\u0000\u0611\u0612\u0005E\u0000\u0000\u0612\u0613\u0005C"+ + "\u0000\u0000\u0613\u0614\u0005K\u0000\u0000\u0614\u008e\u0001\u0000\u0000"+ + "\u0000\u0615\u0616\u0005C\u0000\u0000\u0616\u0617\u0005L\u0000\u0000\u0617"+ + "\u0618\u0005E\u0000\u0000\u0618\u0619\u0005A\u0000\u0000\u0619\u061a\u0005"+ + "N\u0000\u0000\u061a\u0090\u0001\u0000\u0000\u0000\u061b\u061c\u0005C\u0000"+ + "\u0000\u061c\u061d\u0005L\u0000\u0000\u061d\u061e\u0005U\u0000\u0000\u061e"+ + "\u061f\u0005S\u0000\u0000\u061f\u0620\u0005T\u0000\u0000\u0620\u0621\u0005"+ + "E\u0000\u0000\u0621\u0622\u0005R\u0000\u0000\u0622\u0092\u0001\u0000\u0000"+ + "\u0000\u0623\u0624\u0005C\u0000\u0000\u0624\u0625\u0005L\u0000\u0000\u0625"+ + "\u0626\u0005U\u0000\u0000\u0626\u0627\u0005S\u0000\u0000\u0627\u0628\u0005"+ + "T\u0000\u0000\u0628\u0629\u0005E\u0000\u0000\u0629\u062a\u0005R\u0000"+ + "\u0000\u062a\u062b\u0005S\u0000\u0000\u062b\u0094\u0001\u0000\u0000\u0000"+ + "\u062c\u062d\u0005C\u0000\u0000\u062d\u062e\u0005O\u0000\u0000\u062e\u062f"+ + "\u0005L\u0000\u0000\u062f\u0630\u0005L\u0000\u0000\u0630\u0631\u0005A"+ + "\u0000\u0000\u0631\u0632\u0005T\u0000\u0000\u0632\u0633\u0005E\u0000\u0000"+ + "\u0633\u0096\u0001\u0000\u0000\u0000\u0634\u0635\u0005C\u0000\u0000\u0635"+ + "\u0636\u0005O\u0000\u0000\u0636\u0637\u0005L\u0000\u0000\u0637\u0638\u0005"+ + "L\u0000\u0000\u0638\u0639\u0005A\u0000\u0000\u0639\u063a\u0005T\u0000"+ + "\u0000\u063a\u063b\u0005I\u0000\u0000\u063b\u063c\u0005O\u0000\u0000\u063c"+ + "\u063d\u0005N\u0000\u0000\u063d\u0098\u0001\u0000\u0000\u0000\u063e\u063f"+ + "\u0005C\u0000\u0000\u063f\u0640\u0005O\u0000\u0000\u0640\u0641\u0005L"+ + "\u0000\u0000\u0641\u0642\u0005L\u0000\u0000\u0642\u0643\u0005E\u0000\u0000"+ + "\u0643\u0644\u0005C\u0000\u0000\u0644\u0645\u0005T\u0000\u0000\u0645\u009a"+ + "\u0001\u0000\u0000\u0000\u0646\u0647\u0005C\u0000\u0000\u0647\u0648\u0005"+ + "O\u0000\u0000\u0648\u0649\u0005L\u0000\u0000\u0649\u064a\u0005O\u0000"+ + "\u0000\u064a\u064b\u0005C\u0000\u0000\u064b\u064c\u0005A\u0000\u0000\u064c"+ + "\u064d\u0005T\u0000\u0000\u064d\u064e\u0005E\u0000\u0000\u064e\u009c\u0001"+ + "\u0000\u0000\u0000\u064f\u0650\u0005C\u0000\u0000\u0650\u0651\u0005O\u0000"+ + "\u0000\u0651\u0652\u0005L\u0000\u0000\u0652\u0653\u0005U\u0000\u0000\u0653"+ + "\u0654\u0005M\u0000\u0000\u0654\u0655\u0005N\u0000\u0000\u0655\u009e\u0001"+ + "\u0000\u0000\u0000\u0656\u0657\u0005C\u0000\u0000\u0657\u0658\u0005O\u0000"+ + "\u0000\u0658\u0659\u0005L\u0000\u0000\u0659\u065a\u0005U\u0000\u0000\u065a"+ + "\u065b\u0005M\u0000\u0000\u065b\u065c\u0005N\u0000\u0000\u065c\u065d\u0005"+ + "S\u0000\u0000\u065d\u00a0\u0001\u0000\u0000\u0000\u065e\u065f\u0005C\u0000"+ + "\u0000\u065f\u0660\u0005O\u0000\u0000\u0660\u0661\u0005M\u0000\u0000\u0661"+ + "\u0662\u0005M\u0000\u0000\u0662\u0663\u0005E\u0000\u0000\u0663\u0664\u0005"+ + "N\u0000\u0000\u0664\u0665\u0005T\u0000\u0000\u0665\u00a2\u0001\u0000\u0000"+ + "\u0000\u0666\u0667\u0005C\u0000\u0000\u0667\u0668\u0005O\u0000\u0000\u0668"+ + "\u0669\u0005M\u0000\u0000\u0669\u066a\u0005M\u0000\u0000\u066a\u066b\u0005"+ + "I\u0000\u0000\u066b\u066c\u0005T\u0000\u0000\u066c\u00a4\u0001\u0000\u0000"+ + "\u0000\u066d\u066e\u0005C\u0000\u0000\u066e\u066f\u0005O\u0000\u0000\u066f"+ + "\u0670\u0005M\u0000\u0000\u0670\u0671\u0005M\u0000\u0000\u0671\u0672\u0005"+ + "I\u0000\u0000\u0672\u0673\u0005T\u0000\u0000\u0673\u0674\u0005T\u0000"+ + "\u0000\u0674\u0675\u0005E\u0000\u0000\u0675\u0676\u0005D\u0000\u0000\u0676"+ + "\u00a6\u0001\u0000\u0000\u0000\u0677\u0678\u0005C\u0000\u0000\u0678\u0679"+ + "\u0005O\u0000\u0000\u0679\u067a\u0005M\u0000\u0000\u067a\u067b\u0005P"+ + "\u0000\u0000\u067b\u067c\u0005A\u0000\u0000\u067c\u067d\u0005C\u0000\u0000"+ + "\u067d\u067e\u0005T\u0000\u0000\u067e\u00a8\u0001\u0000\u0000\u0000\u067f"+ + "\u0680\u0005C\u0000\u0000\u0680\u0681\u0005O\u0000\u0000\u0681\u0682\u0005"+ + "M\u0000\u0000\u0682\u0683\u0005P\u0000\u0000\u0683\u0684\u0005L\u0000"+ + "\u0000\u0684\u0685\u0005E\u0000\u0000\u0685\u0686\u0005T\u0000\u0000\u0686"+ + "\u0687\u0005E\u0000\u0000\u0687\u00aa\u0001\u0000\u0000\u0000\u0688\u0689"+ + "\u0005C\u0000\u0000\u0689\u068a\u0005O\u0000\u0000\u068a\u068b\u0005M"+ + "\u0000\u0000\u068b\u068c\u0005P\u0000\u0000\u068c\u068d\u0005R\u0000\u0000"+ + "\u068d\u068e\u0005E\u0000"; + private static final String _serializedATNSegment1 = + "\u0000\u068e\u068f\u0005S\u0000\u0000\u068f\u0690\u0005S\u0000\u0000\u0690"+ + "\u0691\u0005_\u0000\u0000\u0691\u0692\u0005T\u0000\u0000\u0692\u0693\u0005"+ + "Y\u0000\u0000\u0693\u0694\u0005P\u0000\u0000\u0694\u0695\u0005E\u0000"+ + "\u0000\u0695\u00ac\u0001\u0000\u0000\u0000\u0696\u0697\u0005C\u0000\u0000"+ + "\u0697\u0698\u0005O\u0000\u0000\u0698\u0699\u0005M\u0000\u0000\u0699\u069a"+ + "\u0005P\u0000\u0000\u069a\u069b\u0005U\u0000\u0000\u069b\u069c\u0005T"+ + "\u0000\u0000\u069c\u069d\u0005E\u0000\u0000\u069d\u00ae\u0001\u0000\u0000"+ + "\u0000\u069e\u069f\u0005C\u0000\u0000\u069f\u06a0\u0005O\u0000\u0000\u06a0"+ + "\u06a1\u0005N\u0000\u0000\u06a1\u06a2\u0005D\u0000\u0000\u06a2\u06a3\u0005"+ + "I\u0000\u0000\u06a3\u06a4\u0005T\u0000\u0000\u06a4\u06a5\u0005I\u0000"+ + "\u0000\u06a5\u06a6\u0005O\u0000\u0000\u06a6\u06a7\u0005N\u0000\u0000\u06a7"+ + "\u06a8\u0005S\u0000\u0000\u06a8\u00b0\u0001\u0000\u0000\u0000\u06a9\u06aa"+ + "\u0005C\u0000\u0000\u06aa\u06ab\u0005O\u0000\u0000\u06ab\u06ac\u0005N"+ + "\u0000\u0000\u06ac\u06ad\u0005F\u0000\u0000\u06ad\u06ae\u0005I\u0000\u0000"+ + "\u06ae\u06af\u0005G\u0000\u0000\u06af\u00b2\u0001\u0000\u0000\u0000\u06b0"+ + "\u06b1\u0005C\u0000\u0000\u06b1\u06b2\u0005O\u0000\u0000\u06b2\u06b3\u0005"+ + "N\u0000\u0000\u06b3\u06b4\u0005N\u0000\u0000\u06b4\u06b5\u0005E\u0000"+ + "\u0000\u06b5\u06b6\u0005C\u0000\u0000\u06b6\u06b7\u0005T\u0000\u0000\u06b7"+ + "\u06b8\u0005I\u0000\u0000\u06b8\u06b9\u0005O\u0000\u0000\u06b9\u06ba\u0005"+ + "N\u0000\u0000\u06ba\u00b4\u0001\u0000\u0000\u0000\u06bb\u06bc\u0005C\u0000"+ + "\u0000\u06bc\u06bd\u0005O\u0000\u0000\u06bd\u06be\u0005N\u0000\u0000\u06be"+ + "\u06bf\u0005N\u0000\u0000\u06bf\u06c0\u0005E\u0000\u0000\u06c0\u06c1\u0005"+ + "C\u0000\u0000\u06c1\u06c2\u0005T\u0000\u0000\u06c2\u06c3\u0005I\u0000"+ + "\u0000\u06c3\u06c4\u0005O\u0000\u0000\u06c4\u06c5\u0005N\u0000\u0000\u06c5"+ + "\u06c6\u0005_\u0000\u0000\u06c6\u06c7\u0005I\u0000\u0000\u06c7\u06c8\u0005"+ + "D\u0000\u0000\u06c8\u00b6\u0001\u0000\u0000\u0000\u06c9\u06ca\u0005C\u0000"+ + "\u0000\u06ca\u06cb\u0005O\u0000\u0000\u06cb\u06cc\u0005N\u0000\u0000\u06cc"+ + "\u06cd\u0005S\u0000\u0000\u06cd\u06ce\u0005I\u0000\u0000\u06ce\u06cf\u0005"+ + "S\u0000\u0000\u06cf\u06d0\u0005T\u0000\u0000\u06d0\u06d1\u0005E\u0000"+ + "\u0000\u06d1\u06d2\u0005N\u0000\u0000\u06d2\u06d3\u0005T\u0000\u0000\u06d3"+ + "\u00b8\u0001\u0000\u0000\u0000\u06d4\u06d5\u0005C\u0000\u0000\u06d5\u06d6"+ + "\u0005O\u0000\u0000\u06d6\u06d7\u0005N\u0000\u0000\u06d7\u06d8\u0005S"+ + "\u0000\u0000\u06d8\u06d9\u0005T\u0000\u0000\u06d9\u06da\u0005R\u0000\u0000"+ + "\u06da\u06db\u0005A\u0000\u0000\u06db\u06dc\u0005I\u0000\u0000\u06dc\u06dd"+ + "\u0005N\u0000\u0000\u06dd\u06de\u0005T\u0000\u0000\u06de\u00ba\u0001\u0000"+ + "\u0000\u0000\u06df\u06e0\u0005C\u0000\u0000\u06e0\u06e1\u0005O\u0000\u0000"+ + "\u06e1\u06e2\u0005N\u0000\u0000\u06e2\u06e3\u0005S\u0000\u0000\u06e3\u06e4"+ + "\u0005T\u0000\u0000\u06e4\u06e5\u0005R\u0000\u0000\u06e5\u06e6\u0005A"+ + "\u0000\u0000\u06e6\u06e7\u0005I\u0000\u0000\u06e7\u06e8\u0005N\u0000\u0000"+ + "\u06e8\u06e9\u0005T\u0000\u0000\u06e9\u06ea\u0005S\u0000\u0000\u06ea\u00bc"+ + "\u0001\u0000\u0000\u0000\u06eb\u06ec\u0005C\u0000\u0000\u06ec\u06ed\u0005"+ + "O\u0000\u0000\u06ed\u06ee\u0005N\u0000\u0000\u06ee\u06ef\u0005V\u0000"+ + "\u0000\u06ef\u06f0\u0005E\u0000\u0000\u06f0\u06f1\u0005R\u0000\u0000\u06f1"+ + "\u06f2\u0005T\u0000\u0000\u06f2\u00be\u0001\u0000\u0000\u0000\u06f3\u06f4"+ + "\u0005C\u0000\u0000\u06f4\u06f5\u0005O\u0000\u0000\u06f5\u06f6\u0005N"+ + "\u0000\u0000\u06f6\u06f7\u0005V\u0000\u0000\u06f7\u06f8\u0005E\u0000\u0000"+ + "\u06f8\u06f9\u0005R\u0000\u0000\u06f9\u06fa\u0005T\u0000\u0000\u06fa\u06fb"+ + "\u0005_\u0000\u0000\u06fb\u06fc\u0005L\u0000\u0000\u06fc\u06fd\u0005I"+ + "\u0000\u0000\u06fd\u06fe\u0005G\u0000\u0000\u06fe\u06ff\u0005H\u0000\u0000"+ + "\u06ff\u0700\u0005T\u0000\u0000\u0700\u0701\u0005_\u0000\u0000\u0701\u0702"+ + "\u0005S\u0000\u0000\u0702\u0703\u0005C\u0000\u0000\u0703\u0704\u0005H"+ + "\u0000\u0000\u0704\u0705\u0005E\u0000\u0000\u0705\u0706\u0005M\u0000\u0000"+ + "\u0706\u0707\u0005A\u0000\u0000\u0707\u0708\u0005_\u0000\u0000\u0708\u0709"+ + "\u0005C\u0000\u0000\u0709\u070a\u0005H\u0000\u0000\u070a\u070b\u0005A"+ + "\u0000\u0000\u070b\u070c\u0005N\u0000\u0000\u070c\u070d\u0005G\u0000\u0000"+ + "\u070d\u070e\u0005E\u0000\u0000\u070e\u070f\u0005_\u0000\u0000\u070f\u0710"+ + "\u0005P\u0000\u0000\u0710\u0711\u0005R\u0000\u0000\u0711\u0712\u0005O"+ + "\u0000\u0000\u0712\u0713\u0005C\u0000\u0000\u0713\u0714\u0005E\u0000\u0000"+ + "\u0714\u0715\u0005S\u0000\u0000\u0715\u0716\u0005S\u0000\u0000\u0716\u00c0"+ + "\u0001\u0000\u0000\u0000\u0717\u0718\u0005C\u0000\u0000\u0718\u0719\u0005"+ + "O\u0000\u0000\u0719\u071a\u0005P\u0000\u0000\u071a\u071b\u0005Y\u0000"+ + "\u0000\u071b\u00c2\u0001\u0000\u0000\u0000\u071c\u071d\u0005C\u0000\u0000"+ + "\u071d\u071e\u0005O\u0000\u0000\u071e\u071f\u0005U\u0000\u0000\u071f\u0720"+ + "\u0005N\u0000\u0000\u0720\u0721\u0005T\u0000\u0000\u0721\u00c4\u0001\u0000"+ + "\u0000\u0000\u0722\u0723\u0005C\u0000\u0000\u0723\u0724\u0005R\u0000\u0000"+ + "\u0724\u0725\u0005E\u0000\u0000\u0725\u0726\u0005A\u0000\u0000\u0726\u0727"+ + "\u0005T\u0000\u0000\u0727\u0728\u0005E\u0000\u0000\u0728\u00c6\u0001\u0000"+ + "\u0000\u0000\u0729\u072a\u0005C\u0000\u0000\u072a\u072b\u0005R\u0000\u0000"+ + "\u072b\u072c\u0005E\u0000\u0000\u072c\u072d\u0005A\u0000\u0000\u072d\u072e"+ + "\u0005T\u0000\u0000\u072e\u072f\u0005I\u0000\u0000\u072f\u0730\u0005O"+ + "\u0000\u0000\u0730\u0731\u0005N\u0000\u0000\u0731\u00c8\u0001\u0000\u0000"+ + "\u0000\u0732\u0733\u0005C\u0000\u0000\u0733\u0734\u0005R\u0000\u0000\u0734"+ + "\u0735\u0005O\u0000\u0000\u0735\u0736\u0005N\u0000\u0000\u0736\u00ca\u0001"+ + "\u0000\u0000\u0000\u0737\u0738\u0005C\u0000\u0000\u0738\u0739\u0005R\u0000"+ + "\u0000\u0739\u073a\u0005O\u0000\u0000\u073a\u073b\u0005S\u0000\u0000\u073b"+ + "\u073c\u0005S\u0000\u0000\u073c\u00cc\u0001\u0000\u0000\u0000\u073d\u073e"+ + "\u0005C\u0000\u0000\u073e\u073f\u0005U\u0000\u0000\u073f\u0740\u0005B"+ + "\u0000\u0000\u0740\u0741\u0005E\u0000\u0000\u0741\u00ce\u0001\u0000\u0000"+ + "\u0000\u0742\u0743\u0005C\u0000\u0000\u0743\u0744\u0005U\u0000\u0000\u0744"+ + "\u0745\u0005R\u0000\u0000\u0745\u0746\u0005R\u0000\u0000\u0746\u0747\u0005"+ + "E\u0000\u0000\u0747\u0748\u0005N\u0000\u0000\u0748\u0749\u0005T\u0000"+ + "\u0000\u0749\u00d0\u0001\u0000\u0000\u0000\u074a\u074b\u0005C\u0000\u0000"+ + "\u074b\u074c\u0005U\u0000\u0000\u074c\u074d\u0005R\u0000\u0000\u074d\u074e"+ + "\u0005R\u0000\u0000\u074e\u074f\u0005E\u0000\u0000\u074f\u0750\u0005N"+ + "\u0000\u0000\u0750\u0751\u0005T\u0000\u0000\u0751\u0752\u0005_\u0000\u0000"+ + "\u0752\u0753\u0005C\u0000\u0000\u0753\u0754\u0005A\u0000\u0000\u0754\u0755"+ + "\u0005T\u0000\u0000\u0755\u0756\u0005A\u0000\u0000\u0756\u0757\u0005L"+ + "\u0000\u0000\u0757\u0758\u0005O\u0000\u0000\u0758\u0759\u0005G\u0000\u0000"+ + "\u0759\u00d2\u0001\u0000\u0000\u0000\u075a\u075b\u0005C\u0000\u0000\u075b"+ + "\u075c\u0005U\u0000\u0000\u075c\u075d\u0005R\u0000\u0000\u075d\u075e\u0005"+ + "R\u0000\u0000\u075e\u075f\u0005E\u0000\u0000\u075f\u0760\u0005N\u0000"+ + "\u0000\u0760\u0761\u0005T\u0000\u0000\u0761\u0762\u0005_\u0000\u0000\u0762"+ + "\u0763\u0005D\u0000\u0000\u0763\u0764\u0005A\u0000\u0000\u0764\u0765\u0005"+ + "T\u0000\u0000\u0765\u0766\u0005E\u0000\u0000\u0766\u00d4\u0001\u0000\u0000"+ + "\u0000\u0767\u0768\u0005C\u0000\u0000\u0768\u0769\u0005U\u0000\u0000\u0769"+ + "\u076a\u0005R\u0000\u0000\u076a\u076b\u0005R\u0000\u0000\u076b\u076c\u0005"+ + "E\u0000\u0000\u076c\u076d\u0005N\u0000\u0000\u076d\u076e\u0005T\u0000"+ + "\u0000\u076e\u076f\u0005_\u0000\u0000\u076f\u0770\u0005T\u0000\u0000\u0770"+ + "\u0771\u0005I\u0000\u0000\u0771\u0772\u0005M\u0000\u0000\u0772\u0773\u0005"+ + "E\u0000\u0000\u0773\u00d6\u0001\u0000\u0000\u0000\u0774\u0775\u0005C\u0000"+ + "\u0000\u0775\u0776\u0005U\u0000\u0000\u0776\u0777\u0005R\u0000\u0000\u0777"+ + "\u0778\u0005R\u0000\u0000\u0778\u0779\u0005E\u0000\u0000\u0779\u077a\u0005"+ + "N\u0000\u0000\u077a\u077b\u0005T\u0000\u0000\u077b\u077c\u0005_\u0000"+ + "\u0000\u077c\u077d\u0005T\u0000\u0000\u077d\u077e\u0005I\u0000\u0000\u077e"+ + "\u077f\u0005M\u0000\u0000\u077f\u0780\u0005E\u0000\u0000\u0780\u0781\u0005"+ + "S\u0000\u0000\u0781\u0782\u0005T\u0000\u0000\u0782\u0783\u0005A\u0000"+ + "\u0000\u0783\u0784\u0005M\u0000\u0000\u0784\u0785\u0005P\u0000\u0000\u0785"+ + "\u00d8\u0001\u0000\u0000\u0000\u0786\u0787\u0005C\u0000\u0000\u0787\u0788"+ + "\u0005U\u0000\u0000\u0788\u0789\u0005R\u0000\u0000\u0789\u078a\u0005R"+ + "\u0000\u0000\u078a\u078b\u0005E\u0000\u0000\u078b\u078c\u0005N\u0000\u0000"+ + "\u078c\u078d\u0005T\u0000\u0000\u078d\u078e\u0005_\u0000\u0000\u078e\u078f"+ + "\u0005U\u0000\u0000\u078f\u0790\u0005S\u0000\u0000\u0790\u0791\u0005E"+ + "\u0000\u0000\u0791\u0792\u0005R\u0000\u0000\u0792\u00da\u0001\u0000\u0000"+ + "\u0000\u0793\u0794\u0005D\u0000\u0000\u0794\u0795\u0005A\u0000\u0000\u0795"+ + "\u0796\u0005T\u0000\u0000\u0796\u0797\u0005A\u0000\u0000\u0797\u00dc\u0001"+ + "\u0000\u0000\u0000\u0798\u0799\u0005D\u0000\u0000\u0799\u079a\u0005A\u0000"+ + "\u0000\u079a\u079b\u0005T\u0000\u0000\u079b\u079c\u0005A\u0000\u0000\u079c"+ + "\u079d\u0005B\u0000\u0000\u079d\u079e\u0005A\u0000\u0000\u079e\u079f\u0005"+ + "S\u0000\u0000\u079f\u07a0\u0005E\u0000\u0000\u07a0\u00de\u0001\u0000\u0000"+ + "\u0000\u07a1\u07a2\u0005D\u0000\u0000\u07a2\u07a3\u0005A\u0000\u0000\u07a3"+ + "\u07a4\u0005T\u0000\u0000\u07a4\u07a5\u0005A\u0000\u0000\u07a5\u07a6\u0005"+ + "B\u0000\u0000\u07a6\u07a7\u0005A\u0000\u0000\u07a7\u07a8\u0005S\u0000"+ + "\u0000\u07a8\u07a9\u0005E\u0000\u0000\u07a9\u07aa\u0005S\u0000\u0000\u07aa"+ + "\u00e0\u0001\u0000\u0000\u0000\u07ab\u07ac\u0005D\u0000\u0000\u07ac\u07ad"+ + "\u0005A\u0000\u0000\u07ad\u07ae\u0005T\u0000\u0000\u07ae\u07af\u0005E"+ + "\u0000\u0000\u07af\u00e2\u0001\u0000\u0000\u0000\u07b0\u07b1\u0005D\u0000"+ + "\u0000\u07b1\u07b2\u0005A\u0000\u0000\u07b2\u07b3\u0005T\u0000\u0000\u07b3"+ + "\u07b4\u0005E\u0000\u0000\u07b4\u07b5\u0005T\u0000\u0000\u07b5\u07b6\u0005"+ + "I\u0000\u0000\u07b6\u07b7\u0005M\u0000\u0000\u07b7\u07b8\u0005E\u0000"+ + "\u0000\u07b8\u00e4\u0001\u0000\u0000\u0000\u07b9\u07ba\u0005D\u0000\u0000"+ + "\u07ba\u07bb\u0005A\u0000\u0000\u07bb\u07bc\u0005T\u0000\u0000\u07bc\u07bd"+ + "\u0005E\u0000\u0000\u07bd\u07be\u0005T\u0000\u0000\u07be\u07bf\u0005I"+ + "\u0000\u0000\u07bf\u07c0\u0005M\u0000\u0000\u07c0\u07c1\u0005E\u0000\u0000"+ + "\u07c1\u07c2\u0005V\u0000\u0000\u07c2\u07c3\u00052\u0000\u0000\u07c3\u00e6"+ + "\u0001\u0000\u0000\u0000\u07c4\u07c5\u0005D\u0000\u0000\u07c5\u07c6\u0005"+ + "A\u0000\u0000\u07c6\u07c7\u0005T\u0000\u0000\u07c7\u07c8\u0005E\u0000"+ + "\u0000\u07c8\u07c9\u0005V\u0000\u0000\u07c9\u07ca\u00052\u0000\u0000\u07ca"+ + "\u00e8\u0001\u0000\u0000\u0000\u07cb\u07cc\u0005D\u0000\u0000\u07cc\u07cd"+ + "\u0005A\u0000\u0000\u07cd\u07ce\u0005T\u0000\u0000\u07ce\u07cf\u0005E"+ + "\u0000\u0000\u07cf\u07d0\u0005T\u0000\u0000\u07d0\u07d1\u0005I\u0000\u0000"+ + "\u07d1\u07d2\u0005M\u0000\u0000\u07d2\u07d3\u0005E\u0000\u0000\u07d3\u07d4"+ + "\u0005V\u0000\u0000\u07d4\u07d5\u00051\u0000\u0000\u07d5\u00ea\u0001\u0000"+ + "\u0000\u0000\u07d6\u07d7\u0005D\u0000\u0000\u07d7\u07d8\u0005A\u0000\u0000"+ + "\u07d8\u07d9\u0005T\u0000\u0000\u07d9\u07da\u0005E\u0000\u0000\u07da\u07db"+ + "\u0005V\u0000\u0000\u07db\u07dc\u00051\u0000\u0000\u07dc\u00ec\u0001\u0000"+ + "\u0000\u0000\u07dd\u07de\u0005D\u0000\u0000\u07de\u07df\u0005A\u0000\u0000"+ + "\u07df\u07e0\u0005Y\u0000\u0000\u07e0\u00ee\u0001\u0000\u0000\u0000\u07e1"+ + "\u07e2\u0005D\u0000\u0000\u07e2\u07e3\u0005E\u0000\u0000\u07e3\u07e4\u0005"+ + "C\u0000\u0000\u07e4\u07e5\u0005I\u0000\u0000\u07e5\u07e6\u0005M\u0000"+ + "\u0000\u07e6\u07e7\u0005A\u0000\u0000\u07e7\u07e8\u0005L\u0000\u0000\u07e8"+ + "\u00f0\u0001\u0000\u0000\u0000\u07e9\u07ea\u0005D\u0000\u0000\u07ea\u07eb"+ + "\u0005E\u0000\u0000\u07eb\u07ec\u0005C\u0000\u0000\u07ec\u07ed\u0005I"+ + "\u0000\u0000\u07ed\u07ee\u0005M\u0000\u0000\u07ee\u07ef\u0005A\u0000\u0000"+ + "\u07ef\u07f0\u0005L\u0000\u0000\u07f0\u07f1\u0005V\u0000\u0000\u07f1\u07f2"+ + "\u00052\u0000\u0000\u07f2\u00f2\u0001\u0000\u0000\u0000\u07f3\u07f4\u0005"+ + "D\u0000\u0000\u07f4\u07f5\u0005E\u0000\u0000\u07f5\u07f6\u0005C\u0000"+ + "\u0000\u07f6\u07f7\u0005I\u0000\u0000\u07f7\u07f8\u0005M\u0000\u0000\u07f8"+ + "\u07f9\u0005A\u0000\u0000\u07f9\u07fa\u0005L\u0000\u0000\u07fa\u07fb\u0005"+ + "V\u0000\u0000\u07fb\u07fc\u00053\u0000\u0000\u07fc\u00f4\u0001\u0000\u0000"+ + "\u0000\u07fd\u07fe\u0005D\u0000\u0000\u07fe\u07ff\u0005E\u0000\u0000\u07ff"+ + "\u0800\u0005C\u0000\u0000\u0800\u0801\u0005O\u0000\u0000\u0801\u0802\u0005"+ + "M\u0000\u0000\u0802\u0803\u0005M\u0000\u0000\u0803\u0804\u0005I\u0000"+ + "\u0000\u0804\u0805\u0005S\u0000\u0000\u0805\u0806\u0005S\u0000\u0000\u0806"+ + "\u0807\u0005I\u0000\u0000\u0807\u0808\u0005O\u0000\u0000\u0808\u0809\u0005"+ + "N\u0000\u0000\u0809\u00f6\u0001\u0000\u0000\u0000\u080a\u080b\u0005D\u0000"+ + "\u0000\u080b\u080c\u0005E\u0000\u0000\u080c\u080d\u0005F\u0000\u0000\u080d"+ + "\u080e\u0005A\u0000\u0000\u080e\u080f\u0005U\u0000\u0000\u080f\u0810\u0005"+ + "L\u0000\u0000\u0810\u0811\u0005T\u0000\u0000\u0811\u00f8\u0001\u0000\u0000"+ + "\u0000\u0812\u0813\u0005D\u0000\u0000\u0813\u0814\u0005E\u0000\u0000\u0814"+ + "\u0815\u0005F\u0000\u0000\u0815\u0816\u0005E\u0000\u0000\u0816\u0817\u0005"+ + "R\u0000\u0000\u0817\u0818\u0005R\u0000\u0000\u0818\u0819\u0005E\u0000"+ + "\u0000\u0819\u081a\u0005D\u0000\u0000\u081a\u00fa\u0001\u0000\u0000\u0000"+ + "\u081b\u081c\u0005D\u0000\u0000\u081c\u081d\u0005E\u0000\u0000\u081d\u081e"+ + "\u0005L\u0000\u0000\u081e\u081f\u0005E\u0000\u0000\u081f\u0820\u0005T"+ + "\u0000\u0000\u0820\u0821\u0005E\u0000\u0000\u0821\u00fc\u0001\u0000\u0000"+ + "\u0000\u0822\u0823\u0005D\u0000\u0000\u0823\u0824\u0005E\u0000\u0000\u0824"+ + "\u0825\u0005M\u0000\u0000\u0825\u0826\u0005A\u0000\u0000\u0826\u0827\u0005"+ + "N\u0000\u0000\u0827\u0828\u0005D\u0000\u0000\u0828\u00fe\u0001\u0000\u0000"+ + "\u0000\u0829\u082a\u0005D\u0000\u0000\u082a\u082b\u0005E\u0000\u0000\u082b"+ + "\u082c\u0005S\u0000\u0000\u082c\u082d\u0005C\u0000\u0000\u082d\u0100\u0001"+ + "\u0000\u0000\u0000\u082e\u082f\u0005D\u0000\u0000\u082f\u0830\u0005E\u0000"+ + "\u0000\u0830\u0831\u0005S\u0000\u0000\u0831\u0832\u0005C\u0000\u0000\u0832"+ + "\u0833\u0005R\u0000\u0000\u0833\u0834\u0005I\u0000\u0000\u0834\u0835\u0005"+ + "B\u0000\u0000\u0835\u0836\u0005E\u0000\u0000\u0836\u0102\u0001\u0000\u0000"+ + "\u0000\u0837\u0838\u0005D\u0000\u0000\u0838\u0839\u0005I\u0000\u0000\u0839"+ + "\u083a\u0005A\u0000\u0000\u083a\u083b\u0005G\u0000\u0000\u083b\u083c\u0005"+ + "N\u0000\u0000\u083c\u083d\u0005O\u0000\u0000\u083d\u083e\u0005S\u0000"+ + "\u0000\u083e\u083f\u0005E\u0000\u0000\u083f\u0104\u0001\u0000\u0000\u0000"+ + "\u0840\u0841\u0005D\u0000\u0000\u0841\u0842\u0005I\u0000\u0000\u0842\u0843"+ + "\u0005A\u0000\u0000\u0843\u0844\u0005G\u0000\u0000\u0844\u0845\u0005N"+ + "\u0000\u0000\u0845\u0846\u0005O\u0000\u0000\u0846\u0847\u0005S\u0000\u0000"+ + "\u0847\u0848\u0005I\u0000\u0000\u0848\u0849\u0005S\u0000\u0000\u0849\u0106"+ + "\u0001\u0000\u0000\u0000\u084a\u084b\u0005D\u0000\u0000\u084b\u084c\u0005"+ + "I\u0000\u0000\u084c\u084d\u0005S\u0000\u0000\u084d\u084e\u0005K\u0000"+ + "\u0000\u084e\u0108\u0001\u0000\u0000\u0000\u084f\u0850\u0005D\u0000\u0000"+ + "\u0850\u0851\u0005I\u0000\u0000\u0851\u0852\u0005S\u0000\u0000\u0852\u0853"+ + "\u0005T\u0000\u0000\u0853\u0854\u0005I\u0000\u0000\u0854\u0855\u0005N"+ + "\u0000\u0000\u0855\u0856\u0005C\u0000\u0000\u0856\u0857\u0005T\u0000\u0000"+ + "\u0857\u010a\u0001\u0000\u0000\u0000\u0858\u0859\u0005D\u0000\u0000\u0859"+ + "\u085a\u0005I\u0000\u0000\u085a\u085b\u0005S\u0000\u0000\u085b\u085c\u0005"+ + "T\u0000\u0000\u085c\u085d\u0005I\u0000\u0000\u085d\u085e\u0005N\u0000"+ + "\u0000\u085e\u085f\u0005C\u0000\u0000\u085f\u0860\u0005T\u0000\u0000\u0860"+ + "\u0861\u0005P\u0000\u0000\u0861\u0862\u0005C\u0000\u0000\u0862\u010c\u0001"+ + "\u0000\u0000\u0000\u0863\u0864\u0005D\u0000\u0000\u0864\u0865\u0005I\u0000"+ + "\u0000\u0865\u0866\u0005S\u0000\u0000\u0866\u0867\u0005T\u0000\u0000\u0867"+ + "\u0868\u0005I\u0000\u0000\u0868\u0869\u0005N\u0000\u0000\u0869\u086a\u0005"+ + "C\u0000\u0000\u086a\u086b\u0005T\u0000\u0000\u086b\u086c\u0005P\u0000"+ + "\u0000\u086c\u086d\u0005C\u0000\u0000\u086d\u086e\u0005S\u0000\u0000\u086e"+ + "\u086f\u0005A\u0000\u0000\u086f\u010e\u0001\u0000\u0000\u0000\u0870\u0871"+ + "\u0005D\u0000\u0000\u0871\u0872\u0005I\u0000\u0000\u0872\u0873\u0005S"+ + "\u0000\u0000\u0873\u0874\u0005T\u0000\u0000\u0874\u0875\u0005R\u0000\u0000"+ + "\u0875\u0876\u0005I\u0000\u0000\u0876\u0877\u0005B\u0000\u0000\u0877\u0878"+ + "\u0005U\u0000\u0000\u0878\u0879\u0005T\u0000\u0000\u0879\u087a\u0005E"+ + "\u0000\u0000\u087a\u087b\u0005D\u0000\u0000\u087b\u0110\u0001\u0000\u0000"+ + "\u0000\u087c\u087d\u0005D\u0000\u0000\u087d\u087e\u0005I\u0000\u0000\u087e"+ + "\u087f\u0005S\u0000\u0000\u087f\u0880\u0005T\u0000\u0000\u0880\u0881\u0005"+ + "R\u0000\u0000\u0881\u0882\u0005I\u0000\u0000\u0882\u0883\u0005B\u0000"+ + "\u0000\u0883\u0884\u0005U\u0000\u0000\u0884\u0885\u0005T\u0000\u0000\u0885"+ + "\u0886\u0005I\u0000\u0000\u0886\u0887\u0005O\u0000\u0000\u0887\u0888\u0005"+ + "N\u0000\u0000\u0888\u0112\u0001\u0000\u0000\u0000\u0889\u088a\u0005D\u0000"+ + "\u0000\u088a\u088b\u0005I\u0000\u0000\u088b\u088c\u0005V\u0000\u0000\u088c"+ + "\u0114\u0001\u0000\u0000\u0000\u088d\u088e\u0005D\u0000\u0000\u088e\u088f"+ + "\u0005O\u0000\u0000\u088f\u0116\u0001\u0000\u0000\u0000\u0890\u0891\u0005"+ + "D\u0000\u0000\u0891\u0892\u0005O\u0000\u0000\u0892\u0893\u0005R\u0000"+ + "\u0000\u0893\u0894\u0005I\u0000\u0000\u0894\u0895\u0005S\u0000\u0000\u0895"+ + "\u0896\u0005_\u0000\u0000\u0896\u0897\u0005I\u0000\u0000\u0897\u0898\u0005"+ + "N\u0000\u0000\u0898\u0899\u0005T\u0000\u0000\u0899\u089a\u0005E\u0000"+ + "\u0000\u089a\u089b\u0005R\u0000\u0000\u089b\u089c\u0005N\u0000\u0000\u089c"+ + "\u089d\u0005A\u0000\u0000\u089d\u089e\u0005L\u0000\u0000\u089e\u089f\u0005"+ + "_\u0000\u0000\u089f\u08a0\u0005T\u0000\u0000\u08a0\u08a1\u0005A\u0000"+ + "\u0000\u08a1\u08a2\u0005B\u0000\u0000\u08a2\u08a3\u0005L\u0000\u0000\u08a3"+ + "\u08a4\u0005E\u0000\u0000\u08a4\u08a5\u0005_\u0000\u0000\u08a5\u08a6\u0005"+ + "I\u0000\u0000\u08a6\u08a7\u0005D\u0000\u0000\u08a7\u0118\u0001\u0000\u0000"+ + "\u0000\u08a8\u08a9\u0005D\u0000\u0000\u08a9\u08aa\u0005O\u0000\u0000\u08aa"+ + "\u08ab\u0005U\u0000\u0000\u08ab\u08ac\u0005B\u0000\u0000\u08ac\u08ad\u0005"+ + "L\u0000\u0000\u08ad\u08ae\u0005E\u0000\u0000\u08ae\u011a\u0001\u0000\u0000"+ + "\u0000\u08af\u08b0\u0005D\u0000\u0000\u08b0\u08b1\u0005R\u0000\u0000\u08b1"+ + "\u08b2\u0005O\u0000\u0000\u08b2\u08b3\u0005P\u0000\u0000\u08b3\u011c\u0001"+ + "\u0000\u0000\u0000\u08b4\u08b5\u0005D\u0000\u0000\u08b5\u08b6\u0005R\u0000"+ + "\u0000\u08b6\u08b7\u0005O\u0000\u0000\u08b7\u08b8\u0005P\u0000\u0000\u08b8"+ + "\u08b9\u0005P\u0000\u0000\u08b9\u011e\u0001\u0000\u0000\u0000\u08ba\u08bb"+ + "\u0005D\u0000\u0000\u08bb\u08bc\u0005U\u0000\u0000\u08bc\u08bd\u0005A"+ + "\u0000\u0000\u08bd\u08be\u0005L\u0000\u0000\u08be\u0120\u0001\u0000\u0000"+ + "\u0000\u08bf\u08c0\u0005D\u0000\u0000\u08c0\u08c1\u0005U\u0000\u0000\u08c1"+ + "\u08c2\u0005M\u0000\u0000\u08c2\u08c3\u0005P\u0000\u0000\u08c3\u0122\u0001"+ + "\u0000\u0000\u0000\u08c4\u08c5\u0005D\u0000\u0000\u08c5\u08c6\u0005U\u0000"+ + "\u0000\u08c6\u08c7\u0005P\u0000\u0000\u08c7\u08c8\u0005L\u0000\u0000\u08c8"+ + "\u08c9\u0005I\u0000\u0000\u08c9\u08ca\u0005C\u0000\u0000\u08ca\u08cb\u0005"+ + "A\u0000\u0000\u08cb\u08cc\u0005T\u0000\u0000\u08cc\u08cd\u0005E\u0000"+ + "\u0000\u08cd\u0124\u0001\u0000\u0000\u0000\u08ce\u08cf\u0005D\u0000\u0000"+ + "\u08cf\u08d0\u0005Y\u0000\u0000\u08d0\u08d1\u0005N\u0000\u0000\u08d1\u08d2"+ + "\u0005A\u0000\u0000\u08d2\u08d3\u0005M\u0000\u0000\u08d3\u08d4\u0005I"+ + "\u0000\u0000\u08d4\u08d5\u0005C\u0000\u0000\u08d5\u0126\u0001\u0000\u0000"+ + "\u0000\u08d6\u08d7\u0005E\u0000\u0000\u08d7\u0128\u0001\u0000\u0000\u0000"+ + "\u08d8\u08d9\u0005E\u0000\u0000\u08d9\u08da\u0005L\u0000\u0000\u08da\u08db"+ + "\u0005S\u0000\u0000\u08db\u08dc\u0005E\u0000\u0000\u08dc\u012a\u0001\u0000"+ + "\u0000\u0000\u08dd\u08de\u0005E\u0000\u0000\u08de\u08df\u0005N\u0000\u0000"+ + "\u08df\u08e0\u0005A\u0000\u0000\u08e0\u08e1\u0005B\u0000\u0000\u08e1\u08e2"+ + "\u0005L\u0000\u0000\u08e2\u08e3\u0005E\u0000\u0000\u08e3\u012c\u0001\u0000"+ + "\u0000\u0000\u08e4\u08e5\u0005E\u0000\u0000\u08e5\u08e6\u0005N\u0000\u0000"+ + "\u08e6\u08e7\u0005C\u0000\u0000\u08e7\u08e8\u0005R\u0000\u0000\u08e8\u08e9"+ + "\u0005Y\u0000\u0000\u08e9\u08ea\u0005P\u0000\u0000\u08ea\u08eb\u0005T"+ + "\u0000\u0000\u08eb\u08ec\u0005K\u0000\u0000\u08ec\u08ed\u0005E\u0000\u0000"+ + "\u08ed\u08ee\u0005Y\u0000\u0000\u08ee\u012e\u0001\u0000\u0000\u0000\u08ef"+ + "\u08f0\u0005E\u0000\u0000\u08f0\u08f1\u0005N\u0000\u0000\u08f1\u08f2\u0005"+ + "C\u0000\u0000\u08f2\u08f3\u0005R\u0000\u0000\u08f3\u08f4\u0005Y\u0000"+ + "\u0000\u08f4\u08f5\u0005P\u0000\u0000\u08f5\u08f6\u0005T\u0000\u0000\u08f6"+ + "\u08f7\u0005K\u0000\u0000\u08f7\u08f8\u0005E\u0000\u0000\u08f8\u08f9\u0005"+ + "Y\u0000\u0000\u08f9\u08fa\u0005S\u0000\u0000\u08fa\u0130\u0001\u0000\u0000"+ + "\u0000\u08fb\u08fc\u0005E\u0000\u0000\u08fc\u08fd\u0005N\u0000\u0000\u08fd"+ + "\u08fe\u0005D\u0000\u0000\u08fe\u0132\u0001\u0000\u0000\u0000\u08ff\u0900"+ + "\u0005E\u0000\u0000\u0900\u0901\u0005N\u0000\u0000\u0901\u0902\u0005D"+ + "\u0000\u0000\u0902\u0903\u0005S\u0000\u0000\u0903\u0134\u0001\u0000\u0000"+ + "\u0000\u0904\u0905\u0005E\u0000\u0000\u0905\u0906\u0005N\u0000\u0000\u0906"+ + "\u0907\u0005G\u0000\u0000\u0907\u0908\u0005I\u0000\u0000\u0908\u0909\u0005"+ + "N\u0000\u0000\u0909\u090a\u0005E\u0000\u0000\u090a\u0136\u0001\u0000\u0000"+ + "\u0000\u090b\u090c\u0005E\u0000\u0000\u090c\u090d\u0005N\u0000\u0000\u090d"+ + "\u090e\u0005G\u0000\u0000\u090e\u090f\u0005I\u0000\u0000\u090f\u0910\u0005"+ + "N\u0000\u0000\u0910\u0911\u0005E\u0000\u0000\u0911\u0912\u0005S\u0000"+ + "\u0000\u0912\u0138\u0001\u0000\u0000\u0000\u0913\u0914\u0005E\u0000\u0000"+ + "\u0914\u0915\u0005N\u0000\u0000\u0915\u0916\u0005T\u0000\u0000\u0916\u0917"+ + "\u0005E\u0000\u0000\u0917\u0918\u0005R\u0000\u0000\u0918\u013a\u0001\u0000"+ + "\u0000\u0000\u0919\u091a\u0005E\u0000\u0000\u091a\u091b\u0005R\u0000\u0000"+ + "\u091b\u091c\u0005R\u0000\u0000\u091c\u091d\u0005O\u0000\u0000\u091d\u091e"+ + "\u0005R\u0000\u0000\u091e\u091f\u0005S\u0000\u0000\u091f\u013c\u0001\u0000"+ + "\u0000\u0000\u0920\u0921\u0005E\u0000\u0000\u0921\u0922\u0005V\u0000\u0000"+ + "\u0922\u0923\u0005E\u0000\u0000\u0923\u0924\u0005N\u0000\u0000\u0924\u0925"+ + "\u0005T\u0000\u0000\u0925\u0926\u0005S\u0000\u0000\u0926\u013e\u0001\u0000"+ + "\u0000\u0000\u0927\u0928\u0005E\u0000\u0000\u0928\u0929\u0005V\u0000\u0000"+ + "\u0929\u092a\u0005E\u0000\u0000\u092a\u092b\u0005R\u0000\u0000\u092b\u092c"+ + "\u0005Y\u0000\u0000\u092c\u0140\u0001\u0000\u0000\u0000\u092d\u092e\u0005"+ + "E\u0000\u0000\u092e\u092f\u0005X\u0000\u0000\u092f\u0930\u0005C\u0000"+ + "\u0000\u0930\u0931\u0005E\u0000\u0000\u0931\u0932\u0005P\u0000\u0000\u0932"+ + "\u0933\u0005T\u0000\u0000\u0933\u0142\u0001\u0000\u0000\u0000\u0934\u0935"+ + "\u0005E\u0000\u0000\u0935\u0936\u0005X\u0000\u0000\u0936\u0937\u0005C"+ + "\u0000\u0000\u0937\u0938\u0005L\u0000\u0000\u0938\u0939\u0005U\u0000\u0000"+ + "\u0939\u093a\u0005D\u0000\u0000\u093a\u093b\u0005E\u0000\u0000\u093b\u0144"+ + "\u0001\u0000\u0000\u0000\u093c\u093d\u0005E\u0000\u0000\u093d\u093e\u0005"+ + "X\u0000\u0000\u093e\u093f\u0005E\u0000\u0000\u093f\u0940\u0005C\u0000"+ + "\u0000\u0940\u0941\u0005U\u0000\u0000\u0941\u0942\u0005T\u0000\u0000\u0942"+ + "\u0943\u0005E\u0000\u0000\u0943\u0146\u0001\u0000\u0000\u0000\u0944\u0945"+ + "\u0005E\u0000\u0000\u0945\u0946\u0005X\u0000\u0000\u0946\u0947\u0005I"+ + "\u0000\u0000\u0947\u0948\u0005S\u0000\u0000\u0948\u0949\u0005T\u0000\u0000"+ + "\u0949\u094a\u0005S\u0000\u0000\u094a\u0148\u0001\u0000\u0000\u0000\u094b"+ + "\u094c\u0005E\u0000\u0000\u094c\u094d\u0005X\u0000\u0000\u094d\u094e\u0005"+ + "P\u0000\u0000\u094e\u094f\u0005I\u0000\u0000\u094f\u0950\u0005R\u0000"+ + "\u0000\u0950\u0951\u0005E\u0000\u0000\u0951\u0952\u0005D\u0000\u0000\u0952"+ + "\u014a\u0001\u0000\u0000\u0000\u0953\u0954\u0005E\u0000\u0000\u0954\u0955"+ + "\u0005X\u0000\u0000\u0955\u0956\u0005P\u0000\u0000\u0956\u0957\u0005L"+ + "\u0000\u0000\u0957\u0958\u0005A\u0000\u0000\u0958\u0959\u0005I\u0000\u0000"+ + "\u0959\u095a\u0005N\u0000\u0000\u095a\u014c\u0001\u0000\u0000\u0000\u095b"+ + "\u095c\u0005E\u0000\u0000\u095c\u095d\u0005X\u0000\u0000\u095d\u095e\u0005"+ + "P\u0000\u0000\u095e\u095f\u0005O\u0000\u0000\u095f\u0960\u0005R\u0000"+ + "\u0000\u0960\u0961\u0005T\u0000\u0000\u0961\u014e\u0001\u0000\u0000\u0000"+ + "\u0962\u0963\u0005E\u0000\u0000\u0963\u0964\u0005X\u0000\u0000\u0964\u0965"+ + "\u0005T\u0000\u0000\u0965\u0966\u0005E\u0000\u0000\u0966\u0967\u0005N"+ + "\u0000\u0000\u0967\u0968\u0005D\u0000\u0000\u0968\u0969\u0005E\u0000\u0000"+ + "\u0969\u096a\u0005D\u0000\u0000\u096a\u0150\u0001\u0000\u0000\u0000\u096b"+ + "\u096c\u0005E\u0000\u0000\u096c\u096d\u0005X\u0000\u0000\u096d\u096e\u0005"+ + "T\u0000\u0000\u096e\u096f\u0005E\u0000\u0000\u096f\u0970\u0005R\u0000"+ + "\u0000\u0970\u0971\u0005N\u0000\u0000\u0971\u0972\u0005A\u0000\u0000\u0972"+ + "\u0973\u0005L\u0000\u0000\u0973\u0152\u0001\u0000\u0000\u0000\u0974\u0975"+ + "\u0005E\u0000\u0000\u0975\u0976\u0005X\u0000\u0000\u0976\u0977\u0005T"+ + "\u0000\u0000\u0977\u0978\u0005R\u0000\u0000\u0978\u0979\u0005A\u0000\u0000"+ + "\u0979\u097a\u0005C\u0000\u0000\u097a\u097b\u0005T\u0000\u0000\u097b\u0154"+ + "\u0001\u0000\u0000\u0000\u097c\u097d\u0005F\u0000\u0000\u097d\u097e\u0005"+ + "A\u0000\u0000\u097e\u097f\u0005I\u0000\u0000\u097f\u0980\u0005L\u0000"+ + "\u0000\u0980\u0981\u0005E\u0000\u0000\u0981\u0982\u0005D\u0000\u0000\u0982"+ + "\u0983\u0005_\u0000\u0000\u0983\u0984\u0005L\u0000\u0000\u0984\u0985\u0005"+ + "O\u0000\u0000\u0985\u0986\u0005G\u0000\u0000\u0986\u0987\u0005I\u0000"+ + "\u0000\u0987\u0988\u0005N\u0000\u0000\u0988\u0989\u0005_\u0000\u0000\u0989"+ + "\u098a\u0005A\u0000\u0000\u098a\u098b\u0005T\u0000\u0000\u098b\u098c\u0005"+ + "T\u0000\u0000\u098c\u098d\u0005E\u0000\u0000\u098d\u098e\u0005M\u0000"+ + "\u0000\u098e\u098f\u0005P\u0000\u0000\u098f\u0990\u0005T\u0000\u0000\u0990"+ + "\u0991\u0005S\u0000\u0000\u0991\u0156\u0001\u0000\u0000\u0000\u0992\u0993"+ + "\u0005F\u0000\u0000\u0993\u0994\u0005A\u0000\u0000\u0994\u0995\u0005L"+ + "\u0000\u0000\u0995\u0996\u0005S\u0000\u0000\u0996\u0997\u0005E\u0000\u0000"+ + "\u0997\u0158\u0001\u0000\u0000\u0000\u0998\u0999\u0005F\u0000\u0000\u0999"+ + "\u099a\u0005A\u0000\u0000\u099a\u099b\u0005S\u0000\u0000\u099b\u099c\u0005"+ + "T\u0000\u0000\u099c\u015a\u0001\u0000\u0000\u0000\u099d\u099e\u0005F\u0000"+ + "\u0000\u099e\u099f\u0005E\u0000\u0000\u099f\u09a0\u0005A\u0000\u0000\u09a0"+ + "\u09a1\u0005T\u0000\u0000\u09a1\u09a2\u0005U\u0000\u0000\u09a2\u09a3\u0005"+ + "R\u0000\u0000\u09a3\u09a4\u0005E\u0000\u0000\u09a4\u015c\u0001\u0000\u0000"+ + "\u0000\u09a5\u09a6\u0005F\u0000\u0000\u09a6\u09a7\u0005I\u0000\u0000\u09a7"+ + "\u09a8\u0005E\u0000\u0000\u09a8\u09a9\u0005L\u0000\u0000\u09a9\u09aa\u0005"+ + "D\u0000\u0000\u09aa\u09ab\u0005S\u0000\u0000\u09ab\u015e\u0001\u0000\u0000"+ + "\u0000\u09ac\u09ad\u0005F\u0000\u0000\u09ad\u09ae\u0005I\u0000\u0000\u09ae"+ + "\u09af\u0005L\u0000\u0000\u09af\u09b0\u0005E\u0000\u0000\u09b0\u0160\u0001"+ + "\u0000\u0000\u0000\u09b1\u09b2\u0005F\u0000\u0000\u09b2\u09b3\u0005I\u0000"+ + "\u0000\u09b3\u09b4\u0005L\u0000\u0000\u09b4\u09b5\u0005T\u0000\u0000\u09b5"+ + "\u09b6\u0005E\u0000\u0000\u09b6\u09b7\u0005R\u0000\u0000\u09b7\u0162\u0001"+ + "\u0000\u0000\u0000\u09b8\u09b9\u0005F\u0000\u0000\u09b9\u09ba\u0005I\u0000"+ + "\u0000\u09ba\u09bb\u0005R\u0000\u0000\u09bb\u09bc\u0005S\u0000\u0000\u09bc"+ + "\u09bd\u0005T\u0000\u0000\u09bd\u0164\u0001\u0000\u0000\u0000\u09be\u09bf"+ + "\u0005F\u0000\u0000\u09bf\u09c0\u0005L\u0000\u0000\u09c0\u09c1\u0005O"+ + "\u0000\u0000\u09c1\u09c2\u0005A\u0000\u0000\u09c2\u09c3\u0005T\u0000\u0000"+ + "\u09c3\u0166\u0001\u0000\u0000\u0000\u09c4\u09c5\u0005F\u0000\u0000\u09c5"+ + "\u09c6\u0005O\u0000\u0000\u09c6\u09c7\u0005L\u0000\u0000\u09c7\u09c8\u0005"+ + "L\u0000\u0000\u09c8\u09c9\u0005O\u0000\u0000\u09c9\u09ca\u0005W\u0000"+ + "\u0000\u09ca\u09cb\u0005E\u0000\u0000\u09cb\u09cc\u0005R\u0000\u0000\u09cc"+ + "\u0168\u0001\u0000\u0000\u0000\u09cd\u09ce\u0005F\u0000\u0000\u09ce\u09cf"+ + "\u0005O\u0000\u0000\u09cf\u09d0\u0005L\u0000\u0000\u09d0\u09d1\u0005L"+ + "\u0000\u0000\u09d1\u09d2\u0005O\u0000\u0000\u09d2\u09d3\u0005W\u0000\u0000"+ + "\u09d3\u09d4\u0005I\u0000\u0000\u09d4\u09d5\u0005N\u0000\u0000\u09d5\u09d6"+ + "\u0005G\u0000\u0000\u09d6\u016a\u0001\u0000\u0000\u0000\u09d7\u09d8\u0005"+ + "F\u0000\u0000\u09d8\u09d9\u0005O\u0000\u0000\u09d9\u09da\u0005R\u0000"+ + "\u0000\u09da\u016c\u0001\u0000\u0000\u0000\u09db\u09dc\u0005F\u0000\u0000"+ + "\u09dc\u09dd\u0005O\u0000\u0000\u09dd\u09de\u0005R\u0000\u0000\u09de\u09df"+ + "\u0005E\u0000\u0000\u09df\u09e0\u0005I\u0000\u0000\u09e0\u09e1\u0005G"+ + "\u0000\u0000\u09e1\u09e2\u0005N\u0000\u0000\u09e2\u016e\u0001\u0000\u0000"+ + "\u0000\u09e3\u09e4\u0005F\u0000\u0000\u09e4\u09e5\u0005O\u0000\u0000\u09e5"+ + "\u09e6\u0005R\u0000\u0000\u09e6\u09e7\u0005C\u0000\u0000\u09e7\u09e8\u0005"+ + "E\u0000\u0000\u09e8\u0170\u0001\u0000\u0000\u0000\u09e9\u09ea\u0005F\u0000"+ + "\u0000\u09ea\u09eb\u0005O\u0000\u0000\u09eb\u09ec\u0005R\u0000\u0000\u09ec"+ + "\u09ed\u0005M\u0000\u0000\u09ed\u09ee\u0005A\u0000\u0000\u09ee\u09ef\u0005"+ + "T\u0000\u0000\u09ef\u0172\u0001\u0000\u0000\u0000\u09f0\u09f1\u0005F\u0000"+ + "\u0000\u09f1\u09f2\u0005R\u0000\u0000\u09f2\u09f3\u0005E\u0000\u0000\u09f3"+ + "\u09f4\u0005E\u0000\u0000\u09f4\u0174\u0001\u0000\u0000\u0000\u09f5\u09f6"+ + "\u0005F\u0000\u0000\u09f6\u09f7\u0005R\u0000\u0000\u09f7\u09f8\u0005O"+ + "\u0000\u0000\u09f8\u09f9\u0005M\u0000\u0000\u09f9\u0176\u0001\u0000\u0000"+ + "\u0000\u09fa\u09fb\u0005F\u0000\u0000\u09fb\u09fc\u0005R\u0000\u0000\u09fc"+ + "\u09fd\u0005O\u0000\u0000\u09fd\u09fe\u0005N\u0000\u0000\u09fe\u09ff\u0005"+ + "T\u0000\u0000\u09ff\u0a00\u0005E\u0000\u0000\u0a00\u0a01\u0005N\u0000"+ + "\u0000\u0a01\u0a02\u0005D\u0000\u0000\u0a02\u0178\u0001\u0000\u0000\u0000"+ + "\u0a03\u0a04\u0005F\u0000\u0000\u0a04\u0a05\u0005R\u0000\u0000\u0a05\u0a06"+ + "\u0005O\u0000\u0000\u0a06\u0a07\u0005N\u0000\u0000\u0a07\u0a08\u0005T"+ + "\u0000\u0000\u0a08\u0a09\u0005E\u0000\u0000\u0a09\u0a0a\u0005N\u0000\u0000"+ + "\u0a0a\u0a0b\u0005D\u0000\u0000\u0a0b\u0a0c\u0005S\u0000\u0000\u0a0c\u017a"+ + "\u0001\u0000\u0000\u0000\u0a0d\u0a0e\u0005F\u0000\u0000\u0a0e\u0a0f\u0005"+ + "U\u0000\u0000\u0a0f\u0a10\u0005L\u0000\u0000\u0a10\u0a11\u0005L\u0000"+ + "\u0000\u0a11\u017c\u0001\u0000\u0000\u0000\u0a12\u0a13\u0005F\u0000\u0000"+ + "\u0a13\u0a14\u0005U\u0000\u0000\u0a14\u0a15\u0005N\u0000\u0000\u0a15\u0a16"+ + "\u0005C\u0000\u0000\u0a16\u0a17\u0005T\u0000\u0000\u0a17\u0a18\u0005I"+ + "\u0000\u0000\u0a18\u0a19\u0005O\u0000\u0000\u0a19\u0a1a\u0005N\u0000\u0000"+ + "\u0a1a\u017e\u0001\u0000\u0000\u0000\u0a1b\u0a1c\u0005F\u0000\u0000\u0a1c"+ + "\u0a1d\u0005U\u0000\u0000\u0a1d\u0a1e\u0005N\u0000\u0000\u0a1e\u0a1f\u0005"+ + "C\u0000\u0000\u0a1f\u0a20\u0005T\u0000\u0000\u0a20\u0a21\u0005I\u0000"+ + "\u0000\u0a21\u0a22\u0005O\u0000\u0000\u0a22\u0a23\u0005N\u0000\u0000\u0a23"+ + "\u0a24\u0005S\u0000\u0000\u0a24\u0180\u0001\u0000\u0000\u0000\u0a25\u0a26"+ + "\u0005G\u0000\u0000\u0a26\u0a27\u0005E\u0000\u0000\u0a27\u0a28\u0005N"+ + "\u0000\u0000\u0a28\u0a29\u0005E\u0000\u0000\u0a29\u0a2a\u0005R\u0000\u0000"+ + "\u0a2a\u0a2b\u0005A\u0000\u0000\u0a2b\u0a2c\u0005T\u0000\u0000\u0a2c\u0a2d"+ + "\u0005E\u0000\u0000\u0a2d\u0a2e\u0005D\u0000\u0000\u0a2e\u0182\u0001\u0000"+ + "\u0000\u0000\u0a2f\u0a30\u0005G\u0000\u0000\u0a30\u0a31\u0005E\u0000\u0000"+ + "\u0a31\u0a32\u0005N\u0000\u0000\u0a32\u0a33\u0005E\u0000\u0000\u0a33\u0a34"+ + "\u0005R\u0000\u0000\u0a34\u0a35\u0005I\u0000\u0000\u0a35\u0a36\u0005C"+ + "\u0000\u0000\u0a36\u0184\u0001\u0000\u0000\u0000\u0a37\u0a38\u0005G\u0000"+ + "\u0000\u0a38\u0a39\u0005L\u0000\u0000\u0a39\u0a3a\u0005O\u0000\u0000\u0a3a"+ + "\u0a3b\u0005B\u0000\u0000\u0a3b\u0a3c\u0005A\u0000\u0000\u0a3c\u0a3d\u0005"+ + "L\u0000\u0000\u0a3d\u0186\u0001\u0000\u0000\u0000\u0a3e\u0a3f\u0005G\u0000"+ + "\u0000\u0a3f\u0a40\u0005R\u0000\u0000\u0a40\u0a41\u0005A\u0000\u0000\u0a41"+ + "\u0a42\u0005N\u0000\u0000\u0a42\u0a43\u0005T\u0000\u0000\u0a43\u0188\u0001"+ + "\u0000\u0000\u0000\u0a44\u0a45\u0005G\u0000\u0000\u0a45\u0a46\u0005R\u0000"+ + "\u0000\u0a46\u0a47\u0005A\u0000\u0000\u0a47\u0a48\u0005N\u0000\u0000\u0a48"+ + "\u0a49\u0005T\u0000\u0000\u0a49\u0a4a\u0005S\u0000\u0000\u0a4a\u018a\u0001"+ + "\u0000\u0000\u0000\u0a4b\u0a4c\u0005G\u0000\u0000\u0a4c\u0a4d\u0005R\u0000"+ + "\u0000\u0a4d\u0a4e\u0005A\u0000\u0000\u0a4e\u0a4f\u0005P\u0000\u0000\u0a4f"+ + "\u0a50\u0005H\u0000\u0000\u0a50\u018c\u0001\u0000\u0000\u0000\u0a51\u0a52"+ + "\u0005G\u0000\u0000\u0a52\u0a53\u0005R\u0000\u0000\u0a53\u0a54\u0005O"+ + "\u0000\u0000\u0a54\u0a55\u0005U\u0000\u0000\u0a55\u0a56\u0005P\u0000\u0000"+ + "\u0a56\u018e\u0001\u0000\u0000\u0000\u0a57\u0a58\u0005G\u0000\u0000\u0a58"+ + "\u0a59\u0005R\u0000\u0000\u0a59\u0a5a\u0005O\u0000\u0000\u0a5a\u0a5b\u0005"+ + "U\u0000\u0000\u0a5b\u0a5c\u0005P\u0000\u0000\u0a5c\u0a5d\u0005I\u0000"+ + "\u0000\u0a5d\u0a5e\u0005N\u0000\u0000\u0a5e\u0a5f\u0005G\u0000\u0000\u0a5f"+ + "\u0190\u0001\u0000\u0000\u0000\u0a60\u0a61\u0005G\u0000\u0000\u0a61\u0a62"+ + "\u0005R\u0000\u0000\u0a62\u0a63\u0005O\u0000\u0000\u0a63\u0a64\u0005U"+ + "\u0000\u0000\u0a64\u0a65\u0005P\u0000\u0000\u0a65\u0a66\u0005S\u0000\u0000"+ + "\u0a66\u0192\u0001\u0000\u0000\u0000\u0a67\u0a68\u0005H\u0000\u0000\u0a68"+ + "\u0a69\u0005A\u0000\u0000\u0a69\u0a6a\u0005S\u0000\u0000\u0a6a\u0a6b\u0005"+ + "H\u0000\u0000\u0a6b\u0194\u0001\u0000\u0000\u0000\u0a6c\u0a6d\u0005H\u0000"+ + "\u0000\u0a6d\u0a6e\u0005A\u0000\u0000\u0a6e\u0a6f\u0005V\u0000\u0000\u0a6f"+ + "\u0a70\u0005I\u0000\u0000\u0a70\u0a71\u0005N\u0000\u0000\u0a71\u0a72\u0005"+ + "G\u0000\u0000\u0a72\u0196\u0001\u0000\u0000\u0000\u0a73\u0a74\u0005H\u0000"+ + "\u0000\u0a74\u0a75\u0005D\u0000\u0000\u0a75\u0a76\u0005F\u0000\u0000\u0a76"+ + "\u0a77\u0005S\u0000\u0000\u0a77\u0198\u0001\u0000\u0000\u0000\u0a78\u0a79"+ + "\u0005H\u0000\u0000\u0a79\u0a7a\u0005E\u0000\u0000\u0a7a\u0a7b\u0005L"+ + "\u0000\u0000\u0a7b\u0a7c\u0005P\u0000\u0000\u0a7c\u019a\u0001\u0000\u0000"+ + "\u0000\u0a7d\u0a7e\u0005H\u0000\u0000\u0a7e\u0a7f\u0005I\u0000\u0000\u0a7f"+ + "\u0a80\u0005S\u0000\u0000\u0a80\u0a81\u0005T\u0000\u0000\u0a81\u0a82\u0005"+ + "O\u0000\u0000\u0a82\u0a83\u0005G\u0000\u0000\u0a83\u0a84\u0005R\u0000"+ + "\u0000\u0a84\u0a85\u0005A\u0000\u0000\u0a85\u0a86\u0005M\u0000\u0000\u0a86"+ + "\u019c\u0001\u0000\u0000\u0000\u0a87\u0a88\u0005H\u0000\u0000\u0a88\u0a89"+ + "\u0005L\u0000\u0000\u0a89\u0a8a\u0005L\u0000\u0000\u0a8a\u019e\u0001\u0000"+ + "\u0000\u0000\u0a8b\u0a8c\u0005H\u0000\u0000\u0a8c\u0a8d\u0005L\u0000\u0000"+ + "\u0a8d\u0a8e\u0005L\u0000\u0000\u0a8e\u0a8f\u0005_\u0000\u0000\u0a8f\u0a90"+ + "\u0005U\u0000\u0000\u0a90\u0a91\u0005N\u0000\u0000\u0a91\u0a92\u0005I"+ + "\u0000\u0000\u0a92\u0a93\u0005O\u0000\u0000\u0a93\u0a94\u0005N\u0000\u0000"+ + "\u0a94\u01a0\u0001\u0000\u0000\u0000\u0a95\u0a96\u0005H\u0000\u0000\u0a96"+ + "\u0a97\u0005O\u0000\u0000\u0a97\u0a98\u0005S\u0000\u0000\u0a98\u0a99\u0005"+ + "T\u0000\u0000\u0a99\u0a9a\u0005N\u0000\u0000\u0a9a\u0a9b\u0005A\u0000"+ + "\u0000\u0a9b\u0a9c\u0005M\u0000\u0000\u0a9c\u0a9d\u0005E\u0000\u0000\u0a9d"+ + "\u01a2\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0005H\u0000\u0000\u0a9f\u0aa0"+ + "\u0005O\u0000\u0000\u0aa0\u0aa1\u0005T\u0000\u0000\u0aa1\u0aa2\u0005S"+ + "\u0000\u0000\u0aa2\u0aa3\u0005P\u0000\u0000\u0aa3\u0aa4\u0005O\u0000\u0000"+ + "\u0aa4\u0aa5\u0005T\u0000\u0000\u0aa5\u01a4\u0001\u0000\u0000\u0000\u0aa6"+ + "\u0aa7\u0005H\u0000\u0000\u0aa7\u0aa8\u0005O\u0000\u0000\u0aa8\u0aa9\u0005"+ + "U\u0000\u0000\u0aa9\u0aaa\u0005R\u0000\u0000\u0aaa\u01a6\u0001\u0000\u0000"+ + "\u0000\u0aab\u0aac\u0005H\u0000\u0000\u0aac\u0aad\u0005U\u0000\u0000\u0aad"+ + "\u0aae\u0005B\u0000\u0000\u0aae\u01a8\u0001\u0000\u0000\u0000\u0aaf\u0ab0"+ + "\u0005I\u0000\u0000\u0ab0\u0ab1\u0005D\u0000\u0000\u0ab1\u0ab2\u0005E"+ + "\u0000\u0000\u0ab2\u0ab3\u0005N\u0000\u0000\u0ab3\u0ab4\u0005T\u0000\u0000"+ + "\u0ab4\u0ab5\u0005I\u0000\u0000\u0ab5\u0ab6\u0005F\u0000\u0000\u0ab6\u0ab7"+ + "\u0005I\u0000\u0000\u0ab7\u0ab8\u0005E\u0000\u0000\u0ab8\u0ab9\u0005D"+ + "\u0000\u0000\u0ab9\u01aa\u0001\u0000\u0000\u0000\u0aba\u0abb\u0005I\u0000"+ + "\u0000\u0abb\u0abc\u0005F\u0000\u0000\u0abc\u01ac\u0001\u0000\u0000\u0000"+ + "\u0abd\u0abe\u0005I\u0000\u0000\u0abe\u0abf\u0005G\u0000\u0000\u0abf\u0ac0"+ + "\u0005N\u0000\u0000\u0ac0\u0ac1\u0005O\u0000\u0000\u0ac1\u0ac2\u0005R"+ + "\u0000\u0000\u0ac2\u0ac3\u0005E\u0000\u0000\u0ac3\u01ae\u0001\u0000\u0000"+ + "\u0000\u0ac4\u0ac5\u0005I\u0000\u0000\u0ac5\u0ac6\u0005M\u0000\u0000\u0ac6"+ + "\u0ac7\u0005M\u0000\u0000\u0ac7\u0ac8\u0005E\u0000\u0000\u0ac8\u0ac9\u0005"+ + "D\u0000\u0000\u0ac9\u0aca\u0005I\u0000\u0000\u0aca\u0acb\u0005A\u0000"+ + "\u0000\u0acb\u0acc\u0005T\u0000\u0000\u0acc\u0acd\u0005E\u0000\u0000\u0acd"+ + "\u01b0\u0001\u0000\u0000\u0000\u0ace\u0acf\u0005I\u0000\u0000\u0acf\u0ad0"+ + "\u0005N\u0000\u0000\u0ad0\u01b2\u0001\u0000\u0000\u0000\u0ad1\u0ad2\u0005"+ + "I\u0000\u0000\u0ad2\u0ad3\u0005N\u0000\u0000\u0ad3\u0ad4\u0005C\u0000"+ + "\u0000\u0ad4\u0ad5\u0005R\u0000\u0000\u0ad5\u0ad6\u0005E\u0000\u0000\u0ad6"+ + "\u0ad7\u0005M\u0000\u0000\u0ad7\u0ad8\u0005E\u0000\u0000\u0ad8\u0ad9\u0005"+ + "N\u0000\u0000\u0ad9\u0ada\u0005T\u0000\u0000\u0ada\u0adb\u0005A\u0000"+ + "\u0000\u0adb\u0adc\u0005L\u0000\u0000\u0adc\u01b4\u0001\u0000\u0000\u0000"+ + "\u0add\u0ade\u0005I\u0000\u0000\u0ade\u0adf\u0005N\u0000\u0000\u0adf\u0ae0"+ + "\u0005D\u0000\u0000\u0ae0\u0ae1\u0005E\u0000\u0000\u0ae1\u0ae2\u0005X"+ + "\u0000\u0000\u0ae2\u01b6\u0001\u0000\u0000\u0000\u0ae3\u0ae4\u0005I\u0000"+ + "\u0000\u0ae4\u0ae5\u0005N\u0000\u0000\u0ae5\u0ae6\u0005D\u0000\u0000\u0ae6"+ + "\u0ae7\u0005E\u0000\u0000\u0ae7\u0ae8\u0005X\u0000\u0000\u0ae8\u0ae9\u0005"+ + "E\u0000\u0000\u0ae9\u0aea\u0005S\u0000\u0000\u0aea\u01b8\u0001\u0000\u0000"+ + "\u0000\u0aeb\u0aec\u0005I\u0000\u0000\u0aec\u0aed\u0005N\u0000\u0000\u0aed"+ + "\u0aee\u0005F\u0000\u0000\u0aee\u0aef\u0005I\u0000\u0000\u0aef\u0af0\u0005"+ + "L\u0000\u0000\u0af0\u0af1\u0005E\u0000\u0000\u0af1\u01ba\u0001\u0000\u0000"+ + "\u0000\u0af2\u0af3\u0005I\u0000\u0000\u0af3\u0af4\u0005N\u0000\u0000\u0af4"+ + "\u0af5\u0005N\u0000\u0000\u0af5\u0af6\u0005E\u0000\u0000\u0af6\u0af7\u0005"+ + "R\u0000\u0000\u0af7\u01bc\u0001\u0000\u0000\u0000\u0af8\u0af9\u0005I\u0000"+ + "\u0000\u0af9\u0afa\u0005N\u0000\u0000\u0afa\u0afb\u0005S\u0000\u0000\u0afb"+ + "\u0afc\u0005E\u0000\u0000\u0afc\u0afd\u0005R\u0000\u0000\u0afd\u0afe\u0005"+ + "T\u0000\u0000\u0afe\u01be\u0001\u0000\u0000\u0000\u0aff\u0b00\u0005I\u0000"+ + "\u0000\u0b00\u0b01\u0005N\u0000\u0000\u0b01\u0b02\u0005S\u0000\u0000\u0b02"+ + "\u0b03\u0005T\u0000\u0000\u0b03\u0b04\u0005A\u0000\u0000\u0b04\u0b05\u0005"+ + "L\u0000\u0000\u0b05\u0b06\u0005L\u0000\u0000\u0b06\u01c0\u0001\u0000\u0000"+ + "\u0000\u0b07\u0b08\u0005I\u0000\u0000\u0b08\u0b09\u0005N\u0000\u0000\u0b09"+ + "\u0b0a\u0005T\u0000\u0000\u0b0a\u01c2\u0001\u0000\u0000\u0000\u0b0b\u0b0c"+ + "\u0005I\u0000\u0000\u0b0c\u0b0d\u0005N\u0000\u0000\u0b0d\u0b0e\u0005T"+ + "\u0000\u0000\u0b0e\u0b0f\u0005E\u0000\u0000\u0b0f\u0b10\u0005G\u0000\u0000"+ + "\u0b10\u0b11\u0005E\u0000\u0000\u0b11\u0b12\u0005R\u0000\u0000\u0b12\u01c4"+ + "\u0001\u0000\u0000\u0000\u0b13\u0b14\u0005I\u0000\u0000\u0b14\u0b15\u0005"+ + "N\u0000\u0000\u0b15\u0b16\u0005T\u0000\u0000\u0b16\u0b17\u0005E\u0000"+ + "\u0000\u0b17\u0b18\u0005R\u0000\u0000\u0b18\u0b19\u0005M\u0000\u0000\u0b19"+ + "\u0b1a\u0005E\u0000\u0000\u0b1a\u0b1b\u0005D\u0000\u0000\u0b1b\u0b1c\u0005"+ + "I\u0000\u0000\u0b1c\u0b1d\u0005A\u0000\u0000\u0b1d\u0b1e\u0005T\u0000"+ + "\u0000\u0b1e\u0b1f\u0005E\u0000\u0000\u0b1f\u01c6\u0001\u0000\u0000\u0000"+ + "\u0b20\u0b21\u0005I\u0000\u0000\u0b21\u0b22\u0005N\u0000\u0000\u0b22\u0b23"+ + "\u0005T\u0000\u0000\u0b23\u0b24\u0005E\u0000\u0000\u0b24\u0b25\u0005R"+ + "\u0000\u0000\u0b25\u0b26\u0005S\u0000\u0000\u0b26\u0b27\u0005E\u0000\u0000"+ + "\u0b27\u0b28\u0005C\u0000\u0000\u0b28\u0b29\u0005T\u0000\u0000\u0b29\u01c8"+ + "\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0005I\u0000\u0000\u0b2b\u0b2c\u0005"+ + "N\u0000\u0000\u0b2c\u0b2d\u0005T\u0000\u0000\u0b2d\u0b2e\u0005E\u0000"+ + "\u0000\u0b2e\u0b2f\u0005R\u0000\u0000\u0b2f\u0b30\u0005V\u0000\u0000\u0b30"+ + "\u0b31\u0005A\u0000\u0000\u0b31\u0b32\u0005L\u0000\u0000\u0b32\u01ca\u0001"+ + "\u0000\u0000\u0000\u0b33\u0b34\u0005I\u0000\u0000\u0b34\u0b35\u0005N\u0000"+ + "\u0000\u0b35\u0b36\u0005T\u0000\u0000\u0b36\u0b37\u0005O\u0000\u0000\u0b37"+ + "\u01cc\u0001\u0000\u0000\u0000\u0b38\u0b39\u0005I\u0000\u0000\u0b39\u0b3a"+ + "\u0005N\u0000\u0000\u0b3a\u0b3b\u0005V\u0000\u0000\u0b3b\u0b3c\u0005E"+ + "\u0000\u0000\u0b3c\u0b3d\u0005R\u0000\u0000\u0b3d\u0b3e\u0005T\u0000\u0000"+ + "\u0b3e\u0b3f\u0005E\u0000\u0000\u0b3f\u0b40\u0005D\u0000\u0000\u0b40\u01ce"+ + "\u0001\u0000\u0000\u0000\u0b41\u0b42\u0005I\u0000\u0000\u0b42\u0b43\u0005"+ + "P\u0000\u0000\u0b43\u0b44\u0005V\u0000\u0000\u0b44\u0b45\u00054\u0000"+ + "\u0000\u0b45\u01d0\u0001\u0000\u0000\u0000\u0b46\u0b47\u0005I\u0000\u0000"+ + "\u0b47\u0b48\u0005P\u0000\u0000\u0b48\u0b49\u0005V\u0000\u0000\u0b49\u0b4a"+ + "\u00056\u0000\u0000\u0b4a\u01d2\u0001\u0000\u0000\u0000\u0b4b\u0b4c\u0005"+ + "I\u0000\u0000\u0b4c\u0b4d\u0005S\u0000\u0000\u0b4d\u01d4\u0001\u0000\u0000"+ + "\u0000\u0b4e\u0b4f\u0005I\u0000\u0000\u0b4f\u0b50\u0005S\u0000\u0000\u0b50"+ + "\u0b51\u0005_\u0000\u0000\u0b51\u0b52\u0005N\u0000\u0000\u0b52\u0b53\u0005"+ + "O\u0000\u0000\u0b53\u0b54\u0005T\u0000\u0000\u0b54\u0b55\u0005_\u0000"+ + "\u0000\u0b55\u0b56\u0005N\u0000\u0000\u0b56\u0b57\u0005U\u0000\u0000\u0b57"+ + "\u0b58\u0005L\u0000\u0000\u0b58\u0b59\u0005L\u0000\u0000\u0b59\u0b5a\u0005"+ + "_\u0000\u0000\u0b5a\u0b5b\u0005P\u0000\u0000\u0b5b\u0b5c\u0005R\u0000"+ + "\u0000\u0b5c\u0b5d\u0005E\u0000\u0000\u0b5d\u0b5e\u0005D\u0000\u0000\u0b5e"+ + "\u01d6\u0001\u0000\u0000\u0000\u0b5f\u0b60\u0005I\u0000\u0000\u0b60\u0b61"+ + "\u0005S\u0000\u0000\u0b61\u0b62\u0005_\u0000\u0000\u0b62\u0b63\u0005N"+ + "\u0000\u0000\u0b63\u0b64\u0005U\u0000\u0000\u0b64\u0b65\u0005L\u0000\u0000"+ + "\u0b65\u0b66\u0005L\u0000\u0000\u0b66\u0b67\u0005_\u0000\u0000\u0b67\u0b68"+ + "\u0005P\u0000\u0000\u0b68\u0b69\u0005R\u0000\u0000\u0b69\u0b6a\u0005E"+ + "\u0000\u0000\u0b6a\u0b6b\u0005D\u0000\u0000\u0b6b\u01d8\u0001\u0000\u0000"+ + "\u0000\u0b6c\u0b6d\u0005I\u0000\u0000\u0b6d\u0b6e\u0005S\u0000\u0000\u0b6e"+ + "\u0b6f\u0005N\u0000\u0000\u0b6f\u0b70\u0005U\u0000\u0000\u0b70\u0b71\u0005"+ + "L\u0000\u0000\u0b71\u0b72\u0005L\u0000\u0000\u0b72\u01da\u0001\u0000\u0000"+ + "\u0000\u0b73\u0b74\u0005I\u0000\u0000\u0b74\u0b75\u0005S\u0000\u0000\u0b75"+ + "\u0b76\u0005O\u0000\u0000\u0b76\u0b77\u0005L\u0000\u0000\u0b77\u0b78\u0005"+ + "A\u0000\u0000\u0b78\u0b79\u0005T\u0000\u0000\u0b79\u0b7a\u0005I\u0000"+ + "\u0000\u0b7a\u0b7b\u0005O\u0000\u0000\u0b7b\u0b7c\u0005N\u0000\u0000\u0b7c"+ + "\u01dc\u0001\u0000\u0000\u0000\u0b7d\u0b7e\u0005J\u0000\u0000\u0b7e\u0b7f"+ + "\u0005O\u0000\u0000\u0b7f\u0b80\u0005B\u0000\u0000\u0b80\u01de\u0001\u0000"+ + "\u0000\u0000\u0b81\u0b82\u0005J\u0000\u0000\u0b82\u0b83\u0005O\u0000\u0000"+ + "\u0b83\u0b84\u0005B\u0000\u0000\u0b84\u0b85\u0005S\u0000\u0000\u0b85\u01e0"+ + "\u0001\u0000\u0000\u0000\u0b86\u0b87\u0005J\u0000\u0000\u0b87\u0b88\u0005"+ + "O\u0000\u0000\u0b88\u0b89\u0005I\u0000\u0000\u0b89\u0b8a\u0005N\u0000"+ + "\u0000\u0b8a\u01e2\u0001\u0000\u0000\u0000\u0b8b\u0b8c\u0005J\u0000\u0000"+ + "\u0b8c\u0b8d\u0005S\u0000\u0000\u0b8d\u0b8e\u0005O\u0000\u0000\u0b8e\u0b8f"+ + "\u0005N\u0000\u0000\u0b8f\u01e4\u0001\u0000\u0000\u0000\u0b90\u0b91\u0005"+ + "J\u0000\u0000\u0b91\u0b92\u0005S\u0000\u0000\u0b92\u0b93\u0005O\u0000"+ + "\u0000\u0b93\u0b94\u0005N\u0000\u0000\u0b94\u0b95\u0005B\u0000\u0000\u0b95"+ + "\u01e6\u0001\u0000\u0000\u0000\u0b96\u0b97\u0005K\u0000\u0000\u0b97\u0b98"+ + "\u0005E\u0000\u0000\u0b98\u0b99\u0005Y\u0000\u0000\u0b99\u01e8\u0001\u0000"+ + "\u0000\u0000\u0b9a\u0b9b\u0005K\u0000\u0000\u0b9b\u0b9c\u0005E\u0000\u0000"+ + "\u0b9c\u0b9d\u0005Y\u0000\u0000\u0b9d\u0b9e\u0005S\u0000\u0000\u0b9e\u01ea"+ + "\u0001\u0000\u0000\u0000\u0b9f\u0ba0\u0005K\u0000\u0000\u0ba0\u0ba1\u0005"+ + "I\u0000\u0000\u0ba1\u0ba2\u0005L\u0000\u0000\u0ba2\u0ba3\u0005L\u0000"+ + "\u0000\u0ba3\u01ec\u0001\u0000\u0000\u0000\u0ba4\u0ba5\u0005L\u0000\u0000"+ + "\u0ba5\u0ba6\u0005A\u0000\u0000\u0ba6\u0ba7\u0005B\u0000\u0000\u0ba7\u0ba8"+ + "\u0005E\u0000\u0000\u0ba8\u0ba9\u0005L\u0000\u0000\u0ba9\u01ee\u0001\u0000"+ + "\u0000\u0000\u0baa\u0bab\u0005L\u0000\u0000\u0bab\u0bac\u0005A\u0000\u0000"+ + "\u0bac\u0bad\u0005R\u0000\u0000\u0bad\u0bae\u0005G\u0000\u0000\u0bae\u0baf"+ + "\u0005E\u0000\u0000\u0baf\u0bb0\u0005I\u0000\u0000\u0bb0\u0bb1\u0005N"+ + "\u0000\u0000\u0bb1\u0bb2\u0005T\u0000\u0000\u0bb2\u01f0\u0001\u0000\u0000"+ + "\u0000\u0bb3\u0bb4\u0005L\u0000\u0000\u0bb4\u0bb5\u0005A\u0000\u0000\u0bb5"+ + "\u0bb6\u0005S\u0000\u0000\u0bb6\u0bb7\u0005T\u0000\u0000\u0bb7\u01f2\u0001"+ + "\u0000\u0000\u0000\u0bb8\u0bb9\u0005L\u0000\u0000\u0bb9\u0bba\u0005A\u0000"+ + "\u0000\u0bba\u0bbb\u0005T\u0000\u0000\u0bbb\u0bbc\u0005E\u0000\u0000\u0bbc"+ + "\u0bbd\u0005R\u0000\u0000\u0bbd\u0bbe\u0005A\u0000\u0000\u0bbe\u0bbf\u0005"+ + "L\u0000\u0000\u0bbf\u01f4\u0001\u0000\u0000\u0000\u0bc0\u0bc1\u0005L\u0000"+ + "\u0000\u0bc1\u0bc2\u0005D\u0000\u0000\u0bc2\u0bc3\u0005A\u0000\u0000\u0bc3"+ + "\u0bc4\u0005P\u0000\u0000\u0bc4\u01f6\u0001\u0000\u0000\u0000\u0bc5\u0bc6"+ + "\u0005L\u0000\u0000\u0bc6\u0bc7\u0005D\u0000\u0000\u0bc7\u0bc8\u0005A"+ + "\u0000\u0000\u0bc8\u0bc9\u0005P\u0000\u0000\u0bc9\u0bca\u0005_\u0000\u0000"+ + "\u0bca\u0bcb\u0005A\u0000\u0000\u0bcb\u0bcc\u0005D\u0000\u0000\u0bcc\u0bcd"+ + "\u0005M\u0000\u0000\u0bcd\u0bce\u0005I\u0000\u0000\u0bce\u0bcf\u0005N"+ + "\u0000\u0000\u0bcf\u0bd0\u0005_\u0000\u0000\u0bd0\u0bd1\u0005P\u0000\u0000"+ + "\u0bd1\u0bd2\u0005A\u0000\u0000\u0bd2\u0bd3\u0005S\u0000\u0000\u0bd3\u0bd4"+ + "\u0005S\u0000\u0000\u0bd4\u0bd5\u0005W\u0000\u0000\u0bd5\u0bd6\u0005O"+ + "\u0000\u0000\u0bd6\u0bd7\u0005R\u0000\u0000\u0bd7\u0bd8\u0005D\u0000\u0000"+ + "\u0bd8\u01f8\u0001\u0000\u0000\u0000\u0bd9\u0bda\u0005L\u0000\u0000\u0bda"+ + "\u0bdb\u0005E\u0000\u0000\u0bdb\u0bdc\u0005F\u0000\u0000\u0bdc\u0bdd\u0005"+ + "T\u0000\u0000\u0bdd\u01fa\u0001\u0000\u0000\u0000\u0bde\u0bdf\u0005L\u0000"+ + "\u0000\u0bdf\u0be0\u0005E\u0000\u0000\u0be0\u0be1\u0005S\u0000\u0000\u0be1"+ + "\u0be2\u0005S\u0000\u0000\u0be2\u01fc\u0001\u0000\u0000\u0000\u0be3\u0be4"+ + "\u0005L\u0000\u0000\u0be4\u0be5\u0005E\u0000\u0000\u0be5\u0be6\u0005V"+ + "\u0000\u0000\u0be6\u0be7\u0005E\u0000\u0000\u0be7\u0be8\u0005L\u0000\u0000"+ + "\u0be8\u01fe\u0001\u0000\u0000\u0000\u0be9\u0bea\u0005L\u0000\u0000\u0bea"+ + "\u0beb\u0005I\u0000\u0000\u0beb\u0bec\u0005K\u0000\u0000\u0bec\u0bed\u0005"+ + "E\u0000\u0000\u0bed\u0200\u0001\u0000\u0000\u0000\u0bee\u0bef\u0005L\u0000"+ + "\u0000\u0bef\u0bf0\u0005I\u0000\u0000\u0bf0\u0bf1\u0005M\u0000\u0000\u0bf1"+ + "\u0bf2\u0005I\u0000\u0000\u0bf2\u0bf3\u0005T\u0000\u0000\u0bf3\u0202\u0001"+ + "\u0000\u0000\u0000\u0bf4\u0bf5\u0005L\u0000\u0000\u0bf5\u0bf6\u0005I\u0000"+ + "\u0000\u0bf6\u0bf7\u0005N\u0000\u0000\u0bf7\u0bf8\u0005E\u0000\u0000\u0bf8"+ + "\u0bf9\u0005S\u0000\u0000\u0bf9\u0204\u0001\u0000\u0000\u0000\u0bfa\u0bfb"+ + "\u0005L\u0000\u0000\u0bfb\u0bfc\u0005I\u0000\u0000\u0bfc\u0bfd\u0005N"+ + "\u0000\u0000\u0bfd\u0bfe\u0005K\u0000\u0000\u0bfe\u0206\u0001\u0000\u0000"+ + "\u0000\u0bff\u0c00\u0005L\u0000\u0000\u0c00\u0c01\u0005I\u0000\u0000\u0c01"+ + "\u0c02\u0005S\u0000\u0000\u0c02\u0c03\u0005T\u0000\u0000\u0c03\u0208\u0001"+ + "\u0000\u0000\u0000\u0c04\u0c05\u0005L\u0000\u0000\u0c05\u0c06\u0005O\u0000"+ + "\u0000\u0c06\u0c07\u0005A\u0000\u0000\u0c07\u0c08\u0005D\u0000\u0000\u0c08"+ + "\u020a\u0001\u0000\u0000\u0000\u0c09\u0c0a\u0005L\u0000\u0000\u0c0a\u0c0b"+ + "\u0005O\u0000\u0000\u0c0b\u0c0c\u0005C\u0000\u0000\u0c0c\u0c0d\u0005A"+ + "\u0000\u0000\u0c0d\u0c0e\u0005L\u0000\u0000\u0c0e\u020c\u0001\u0000\u0000"+ + "\u0000\u0c0f\u0c10\u0005L\u0000\u0000\u0c10\u0c11\u0005O\u0000\u0000\u0c11"+ + "\u0c12\u0005C\u0000\u0000\u0c12\u0c13\u0005A\u0000\u0000\u0c13\u0c14\u0005"+ + "L\u0000\u0000\u0c14\u0c15\u0005T\u0000\u0000\u0c15\u0c16\u0005I\u0000"+ + "\u0000\u0c16\u0c17\u0005M\u0000\u0000\u0c17\u0c18\u0005E\u0000\u0000\u0c18"+ + "\u020e\u0001\u0000\u0000\u0000\u0c19\u0c1a\u0005L\u0000\u0000\u0c1a\u0c1b"+ + "\u0005O\u0000\u0000\u0c1b\u0c1c\u0005C\u0000\u0000\u0c1c\u0c1d\u0005A"+ + "\u0000\u0000\u0c1d\u0c1e\u0005L\u0000\u0000\u0c1e\u0c1f\u0005T\u0000\u0000"+ + "\u0c1f\u0c20\u0005I\u0000\u0000\u0c20\u0c21\u0005M\u0000\u0000\u0c21\u0c22"+ + "\u0005E\u0000\u0000\u0c22\u0c23\u0005S\u0000\u0000\u0c23\u0c24\u0005T"+ + "\u0000\u0000\u0c24\u0c25\u0005A\u0000\u0000\u0c25\u0c26\u0005M\u0000\u0000"+ + "\u0c26\u0c27\u0005P\u0000\u0000\u0c27\u0210\u0001\u0000\u0000\u0000\u0c28"+ + "\u0c29\u0005L\u0000\u0000\u0c29\u0c2a\u0005O\u0000\u0000\u0c2a\u0c2b\u0005"+ + "C\u0000\u0000\u0c2b\u0c2c\u0005A\u0000\u0000\u0c2c\u0c2d\u0005T\u0000"+ + "\u0000\u0c2d\u0c2e\u0005I\u0000\u0000\u0c2e\u0c2f\u0005O\u0000\u0000\u0c2f"+ + "\u0c30\u0005N\u0000\u0000\u0c30\u0212\u0001\u0000\u0000\u0000\u0c31\u0c32"+ + "\u0005L\u0000\u0000\u0c32\u0c33\u0005O\u0000\u0000\u0c33\u0c34\u0005C"+ + "\u0000\u0000\u0c34\u0c35\u0005K\u0000\u0000\u0c35\u0214\u0001\u0000\u0000"+ + "\u0000\u0c36\u0c37\u0005L\u0000\u0000\u0c37\u0c38\u0005O\u0000\u0000\u0c38"+ + "\u0c39\u0005G\u0000\u0000\u0c39\u0c3a\u0005I\u0000\u0000\u0c3a\u0c3b\u0005"+ + "C\u0000\u0000\u0c3b\u0c3c\u0005A\u0000\u0000\u0c3c\u0c3d\u0005L\u0000"+ + "\u0000\u0c3d\u0216\u0001\u0000\u0000\u0000\u0c3e\u0c3f\u0005L\u0000\u0000"+ + "\u0c3f\u0c40\u0005O\u0000\u0000\u0c40\u0c41\u0005W\u0000\u0000\u0c41\u0c42"+ + "\u0005_\u0000\u0000\u0c42\u0c43\u0005P\u0000\u0000\u0c43\u0c44\u0005R"+ + "\u0000\u0000\u0c44\u0c45\u0005I\u0000\u0000\u0c45\u0c46\u0005O\u0000\u0000"+ + "\u0c46\u0c47\u0005R\u0000\u0000\u0c47\u0c48\u0005I\u0000\u0000\u0c48\u0c49"+ + "\u0005T\u0000\u0000\u0c49\u0c4a\u0005Y\u0000\u0000\u0c4a\u0218\u0001\u0000"+ + "\u0000\u0000\u0c4b\u0c4c\u0005M\u0000\u0000\u0c4c\u0c4d\u0005A\u0000\u0000"+ + "\u0c4d\u0c4e\u0005N\u0000\u0000\u0c4e\u0c4f\u0005U\u0000\u0000\u0c4f\u0c50"+ + "\u0005A\u0000\u0000\u0c50\u0c51\u0005L\u0000\u0000\u0c51\u021a\u0001\u0000"+ + "\u0000\u0000\u0c52\u0c53\u0005M\u0000\u0000\u0c53\u0c54\u0005A\u0000\u0000"+ + "\u0c54\u0c55\u0005P\u0000\u0000\u0c55\u021c\u0001\u0000\u0000\u0000\u0c56"+ + "\u0c57\u0005M\u0000\u0000\u0c57\u0c58\u0005A\u0000\u0000\u0c58\u0c59\u0005"+ + "T\u0000\u0000\u0c59\u0c5a\u0005C\u0000\u0000\u0c5a\u0c5b\u0005H\u0000"+ + "\u0000\u0c5b\u021e\u0001\u0000\u0000\u0000\u0c5c\u0c5d\u0005M\u0000\u0000"+ + "\u0c5d\u0c5e\u0005A\u0000\u0000\u0c5e\u0c5f\u0005T\u0000\u0000\u0c5f\u0c60"+ + "\u0005C\u0000\u0000\u0c60\u0c61\u0005H\u0000\u0000\u0c61\u0c62\u0005_"+ + "\u0000\u0000\u0c62\u0c63\u0005A\u0000\u0000\u0c63\u0c64\u0005L\u0000\u0000"+ + "\u0c64\u0c65\u0005L\u0000\u0000\u0c65\u0220\u0001\u0000\u0000\u0000\u0c66"+ + "\u0c67\u0005M\u0000\u0000\u0c67\u0c68\u0005A\u0000\u0000\u0c68\u0c69\u0005"+ + "T\u0000\u0000\u0c69\u0c6a\u0005C\u0000\u0000\u0c6a\u0c6b\u0005H\u0000"+ + "\u0000\u0c6b\u0c6c\u0005_\u0000\u0000\u0c6c\u0c6d\u0005A\u0000\u0000\u0c6d"+ + "\u0c6e\u0005N\u0000\u0000\u0c6e\u0c6f\u0005Y\u0000\u0000\u0c6f\u0222\u0001"+ + "\u0000\u0000\u0000\u0c70\u0c71\u0005M\u0000\u0000\u0c71\u0c72\u0005A\u0000"+ + "\u0000\u0c72\u0c73\u0005T\u0000\u0000\u0c73\u0c74\u0005C\u0000\u0000\u0c74"+ + "\u0c75\u0005H\u0000\u0000\u0c75\u0c76\u0005_\u0000\u0000\u0c76\u0c77\u0005"+ + "P\u0000\u0000\u0c77\u0c78\u0005H\u0000\u0000\u0c78\u0c79\u0005R\u0000"+ + "\u0000\u0c79\u0c7a\u0005A\u0000\u0000\u0c7a\u0c7b\u0005S\u0000\u0000\u0c7b"+ + "\u0c7c\u0005E\u0000\u0000\u0c7c\u0224\u0001\u0000\u0000\u0000\u0c7d\u0c7e"+ + "\u0005M\u0000\u0000\u0c7e\u0c7f\u0005A\u0000\u0000\u0c7f\u0c80\u0005T"+ + "\u0000\u0000\u0c80\u0c81\u0005C\u0000\u0000\u0c81\u0c82\u0005H\u0000\u0000"+ + "\u0c82\u0c83\u0005_\u0000\u0000\u0c83\u0c84\u0005P\u0000\u0000\u0c84\u0c85"+ + "\u0005H\u0000\u0000\u0c85\u0c86\u0005R\u0000\u0000\u0c86\u0c87\u0005A"+ + "\u0000\u0000\u0c87\u0c88\u0005S\u0000\u0000\u0c88\u0c89\u0005E\u0000\u0000"+ + "\u0c89\u0c8a\u0005_\u0000\u0000\u0c8a\u0c8b\u0005E\u0000\u0000\u0c8b\u0c8c"+ + "\u0005D\u0000\u0000\u0c8c\u0c8d\u0005G\u0000\u0000\u0c8d\u0c8e\u0005E"+ + "\u0000\u0000\u0c8e\u0226\u0001\u0000\u0000\u0000\u0c8f\u0c90\u0005M\u0000"+ + "\u0000\u0c90\u0c91\u0005A\u0000\u0000\u0c91\u0c92\u0005T\u0000\u0000\u0c92"+ + "\u0c93\u0005C\u0000\u0000\u0c93\u0c94\u0005H\u0000\u0000\u0c94\u0c95\u0005"+ + "_\u0000\u0000\u0c95\u0c96\u0005P\u0000\u0000\u0c96\u0c97\u0005H\u0000"+ + "\u0000\u0c97\u0c98\u0005R\u0000\u0000\u0c98\u0c99\u0005A\u0000\u0000\u0c99"+ + "\u0c9a\u0005S\u0000\u0000\u0c9a\u0c9b\u0005E\u0000\u0000\u0c9b\u0c9c\u0005"+ + "_\u0000\u0000\u0c9c\u0c9d\u0005P\u0000\u0000\u0c9d\u0c9e\u0005R\u0000"+ + "\u0000\u0c9e\u0c9f\u0005E\u0000\u0000\u0c9f\u0ca0\u0005F\u0000\u0000\u0ca0"+ + "\u0ca1\u0005I\u0000\u0000\u0ca1\u0ca2\u0005X\u0000\u0000\u0ca2\u0228\u0001"+ + "\u0000\u0000\u0000\u0ca3\u0ca4\u0005M\u0000\u0000\u0ca4\u0ca5\u0005A\u0000"+ + "\u0000\u0ca5\u0ca6\u0005T\u0000\u0000\u0ca6\u0ca7\u0005C\u0000\u0000\u0ca7"+ + "\u0ca8\u0005H\u0000\u0000\u0ca8\u0ca9\u0005_\u0000\u0000\u0ca9\u0caa\u0005"+ + "R\u0000\u0000\u0caa\u0cab\u0005E\u0000\u0000\u0cab\u0cac\u0005G\u0000"+ + "\u0000\u0cac\u0cad\u0005E\u0000\u0000\u0cad\u0cae\u0005X\u0000\u0000\u0cae"+ + "\u0caf\u0005P\u0000\u0000\u0caf\u022a\u0001\u0000\u0000\u0000\u0cb0\u0cb1"+ + "\u0005M\u0000\u0000\u0cb1\u0cb2\u0005A\u0000\u0000\u0cb2\u0cb3\u0005T"+ + "\u0000\u0000\u0cb3\u0cb4\u0005C\u0000\u0000\u0cb4\u0cb5\u0005H\u0000\u0000"+ + "\u0cb5\u0cb6\u0005_\u0000\u0000\u0cb6\u0cb7\u0005N\u0000\u0000\u0cb7\u0cb8"+ + "\u0005A\u0000\u0000\u0cb8\u0cb9\u0005M\u0000\u0000\u0cb9\u0cba\u0005E"+ + "\u0000\u0000\u0cba\u022c\u0001\u0000\u0000\u0000\u0cbb\u0cbc\u0005M\u0000"+ + "\u0000\u0cbc\u0cbd\u0005A\u0000\u0000\u0cbd\u0cbe\u0005T\u0000\u0000\u0cbe"+ + "\u0cbf\u0005C\u0000\u0000\u0cbf\u0cc0\u0005H\u0000\u0000\u0cc0\u0cc1\u0005"+ + "_\u0000\u0000\u0cc1\u0cc2\u0005N\u0000\u0000\u0cc2\u0cc3\u0005A\u0000"+ + "\u0000\u0cc3\u0cc4\u0005M\u0000\u0000\u0cc4\u0cc5\u0005E\u0000\u0000\u0cc5"+ + "\u0cc6\u0005_\u0000\u0000\u0cc6\u0cc7\u0005G\u0000\u0000\u0cc7\u0cc8\u0005"+ + "L\u0000\u0000\u0cc8\u0cc9\u0005O\u0000\u0000\u0cc9\u0cca\u0005B\u0000"+ + "\u0000\u0cca\u022e\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0005M\u0000\u0000"+ + "\u0ccc\u0ccd\u0005A\u0000\u0000\u0ccd\u0cce\u0005T\u0000\u0000\u0cce\u0ccf"+ + "\u0005E\u0000\u0000\u0ccf\u0cd0\u0005R\u0000\u0000\u0cd0\u0cd1\u0005I"+ + "\u0000\u0000\u0cd1\u0cd2\u0005A\u0000\u0000\u0cd2\u0cd3\u0005L\u0000\u0000"+ + "\u0cd3\u0cd4\u0005I\u0000\u0000\u0cd4\u0cd5\u0005Z\u0000\u0000\u0cd5\u0cd6"+ + "\u0005E\u0000\u0000\u0cd6\u0cd7\u0005D\u0000\u0000\u0cd7\u0230\u0001\u0000"+ + "\u0000\u0000\u0cd8\u0cd9\u0005M\u0000\u0000\u0cd9\u0cda\u0005A\u0000\u0000"+ + "\u0cda\u0cdb\u0005X\u0000\u0000\u0cdb\u0232\u0001\u0000\u0000\u0000\u0cdc"+ + "\u0cdd\u0005M\u0000\u0000\u0cdd\u0cde\u0005A\u0000\u0000\u0cde\u0cdf\u0005"+ + "X\u0000\u0000\u0cdf\u0ce0\u0005V\u0000\u0000\u0ce0\u0ce1\u0005A\u0000"+ + "\u0000\u0ce1\u0ce2\u0005L\u0000\u0000\u0ce2\u0ce3\u0005U\u0000\u0000\u0ce3"+ + "\u0ce4\u0005E\u0000\u0000\u0ce4\u0234\u0001\u0000\u0000\u0000\u0ce5\u0ce6"+ + "\u0005M\u0000\u0000\u0ce6\u0ce7\u0005E\u0000\u0000\u0ce7\u0ce8\u0005M"+ + "\u0000\u0000\u0ce8\u0ce9\u0005O\u0000\u0000\u0ce9\u0236\u0001\u0000\u0000"+ + "\u0000\u0cea\u0ceb\u0005M\u0000\u0000\u0ceb\u0cec\u0005E\u0000\u0000\u0cec"+ + "\u0ced\u0005R\u0000\u0000\u0ced\u0cee\u0005G\u0000\u0000\u0cee\u0cef\u0005"+ + "E\u0000\u0000\u0cef\u0238\u0001\u0000\u0000\u0000\u0cf0\u0cf1\u0005M\u0000"+ + "\u0000\u0cf1\u0cf2\u0005I\u0000\u0000\u0cf2\u0cf3\u0005G\u0000\u0000\u0cf3"+ + "\u0cf4\u0005R\u0000\u0000\u0cf4\u0cf5\u0005A\u0000\u0000\u0cf5\u0cf6\u0005"+ + "T\u0000\u0000\u0cf6\u0cf7\u0005E\u0000\u0000\u0cf7\u023a\u0001\u0000\u0000"+ + "\u0000\u0cf8\u0cf9\u0005M\u0000\u0000\u0cf9\u0cfa\u0005I\u0000\u0000\u0cfa"+ + "\u0cfb\u0005G\u0000\u0000\u0cfb\u0cfc\u0005R\u0000\u0000\u0cfc\u0cfd\u0005"+ + "A\u0000\u0000\u0cfd\u0cfe\u0005T\u0000\u0000\u0cfe\u0cff\u0005I\u0000"+ + "\u0000\u0cff\u0d00\u0005O\u0000\u0000\u0d00\u0d01\u0005N\u0000\u0000\u0d01"+ + "\u0d02\u0005S\u0000\u0000\u0d02\u023c\u0001\u0000\u0000\u0000\u0d03\u0d04"+ + "\u0005M\u0000\u0000\u0d04\u0d05\u0005I\u0000\u0000\u0d05\u0d06\u0005N"+ + "\u0000\u0000\u0d06\u023e\u0001\u0000\u0000\u0000\u0d07\u0d08\u0005M\u0000"+ + "\u0000\u0d08\u0d09\u0005I\u0000\u0000\u0d09\u0d0a\u0005N\u0000\u0000\u0d0a"+ + "\u0d0b\u0005U\u0000\u0000\u0d0b\u0d0c\u0005S\u0000\u0000\u0d0c\u0240\u0001"+ + "\u0000\u0000\u0000\u0d0d\u0d0e\u0005M\u0000\u0000\u0d0e\u0d0f\u0005I\u0000"+ + "\u0000\u0d0f\u0d10\u0005N\u0000\u0000\u0d10\u0d11\u0005U\u0000\u0000\u0d11"+ + "\u0d12\u0005T\u0000\u0000\u0d12\u0d13\u0005E\u0000\u0000\u0d13\u0242\u0001"+ + "\u0000\u0000\u0000\u0d14\u0d15\u0005M\u0000\u0000\u0d15\u0d16\u0005O\u0000"+ + "\u0000\u0d16\u0d17\u0005D\u0000\u0000\u0d17\u0d18\u0005I\u0000\u0000\u0d18"+ + "\u0d19\u0005F\u0000\u0000\u0d19\u0d1a\u0005Y\u0000\u0000\u0d1a\u0244\u0001"+ + "\u0000\u0000\u0000\u0d1b\u0d1c\u0005M\u0000\u0000\u0d1c\u0d1d\u0005O\u0000"+ + "\u0000\u0d1d\u0d1e\u0005N\u0000\u0000\u0d1e\u0d1f\u0005T\u0000\u0000\u0d1f"+ + "\u0d20\u0005H\u0000\u0000\u0d20\u0246\u0001\u0000\u0000\u0000\u0d21\u0d22"+ + "\u0005M\u0000\u0000\u0d22\u0d23\u0005T\u0000\u0000\u0d23\u0d24\u0005M"+ + "\u0000\u0000\u0d24\u0d25\u0005V\u0000\u0000\u0d25\u0248\u0001\u0000\u0000"+ + "\u0000\u0d26\u0d27\u0005N\u0000\u0000\u0d27\u0d28\u0005A\u0000\u0000\u0d28"+ + "\u0d29\u0005M\u0000\u0000\u0d29\u0d2a\u0005E\u0000\u0000\u0d2a\u024a\u0001"+ + "\u0000\u0000\u0000\u0d2b\u0d2c\u0005N\u0000\u0000\u0d2c\u0d2d\u0005A\u0000"+ + "\u0000\u0d2d\u0d2e\u0005M\u0000\u0000\u0d2e\u0d2f\u0005E\u0000\u0000\u0d2f"+ + "\u0d30\u0005S\u0000\u0000\u0d30\u024c\u0001\u0000\u0000\u0000\u0d31\u0d32"+ + "\u0005N\u0000\u0000\u0d32\u0d33\u0005A\u0000\u0000\u0d33\u0d34\u0005T"+ + "\u0000\u0000\u0d34\u0d35\u0005U\u0000\u0000\u0d35\u0d36\u0005R\u0000\u0000"+ + "\u0d36\u0d37\u0005A\u0000\u0000\u0d37\u0d38\u0005L\u0000\u0000\u0d38\u024e"+ + "\u0001\u0000\u0000\u0000\u0d39\u0d3a\u0005N\u0000\u0000\u0d3a\u0d3b\u0005"+ + "E\u0000\u0000\u0d3b\u0d3c\u0005G\u0000\u0000\u0d3c\u0d3d\u0005A\u0000"+ + "\u0000\u0d3d\u0d3e\u0005T\u0000\u0000\u0d3e\u0d3f\u0005I\u0000\u0000\u0d3f"+ + "\u0d40\u0005V\u0000\u0000\u0d40\u0d41\u0005E\u0000\u0000\u0d41\u0250\u0001"+ + "\u0000\u0000\u0000\u0d42\u0d43\u0005N\u0000\u0000\u0d43\u0d44\u0005E\u0000"+ + "\u0000\u0d44\u0d45\u0005V\u0000\u0000\u0d45\u0d46\u0005E\u0000\u0000\u0d46"+ + "\u0d47\u0005R\u0000\u0000\u0d47\u0252\u0001\u0000\u0000\u0000\u0d48\u0d49"+ + "\u0005N\u0000\u0000\u0d49\u0d4a\u0005E\u0000\u0000\u0d4a\u0d4b\u0005X"+ + "\u0000\u0000\u0d4b\u0d4c\u0005T\u0000\u0000\u0d4c\u0254\u0001\u0000\u0000"+ + "\u0000\u0d4d\u0d4e\u0005N\u0000\u0000\u0d4e\u0d4f\u0005G\u0000\u0000\u0d4f"+ + "\u0d50\u0005R\u0000\u0000\u0d50\u0d51\u0005A\u0000\u0000\u0d51\u0d52\u0005"+ + "M\u0000\u0000\u0d52\u0d53\u0005_\u0000\u0000\u0d53\u0d54\u0005B\u0000"+ + "\u0000\u0d54\u0d55\u0005F\u0000\u0000\u0d55\u0256\u0001\u0000\u0000\u0000"+ + "\u0d56\u0d57\u0005N\u0000\u0000\u0d57\u0d58\u0005O\u0000\u0000\u0d58\u0258"+ + "\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0005N\u0000\u0000\u0d5a\u0d5b\u0005"+ + "O\u0000\u0000\u0d5b\u0d5c\u0005_\u0000\u0000\u0d5c\u0d5d\u0005U\u0000"+ + "\u0000\u0d5d\u0d5e\u0005S\u0000\u0000\u0d5e\u0d5f\u0005E\u0000\u0000\u0d5f"+ + "\u0d60\u0005_\u0000\u0000\u0d60\u0d61\u0005M\u0000\u0000\u0d61\u0d62\u0005"+ + "V\u0000\u0000\u0d62\u025a\u0001\u0000\u0000\u0000\u0d63\u0d64\u0005N\u0000"+ + "\u0000\u0d64\u0d65\u0005O\u0000\u0000\u0d65\u0d66\u0005N\u0000\u0000\u0d66"+ + "\u0d67\u0005_\u0000\u0000\u0d67\u0d68\u0005N\u0000\u0000\u0d68\u0d69\u0005"+ + "U\u0000\u0000\u0d69\u0d6a\u0005L\u0000\u0000\u0d6a\u0d6b\u0005L\u0000"+ + "\u0000\u0d6b\u0d6c\u0005A\u0000\u0000\u0d6c\u0d6d\u0005B\u0000\u0000\u0d6d"+ + "\u0d6e\u0005L\u0000\u0000\u0d6e\u0d6f\u0005E\u0000\u0000\u0d6f\u025c\u0001"+ + "\u0000\u0000\u0000\u0d70\u0d71\u0005N\u0000\u0000\u0d71\u0d72\u0005O\u0000"+ + "\u0000\u0d72\u0d73\u0005T\u0000\u0000\u0d73\u025e\u0001\u0000\u0000\u0000"+ + "\u0d74\u0d75\u0005N\u0000\u0000\u0d75\u0d76\u0005U\u0000\u0000\u0d76\u0d77"+ + "\u0005L\u0000\u0000\u0d77\u0d78\u0005L\u0000\u0000\u0d78\u0260\u0001\u0000"+ + "\u0000\u0000\u0d79\u0d7a\u0005N\u0000\u0000\u0d7a\u0d7b\u0005U\u0000\u0000"+ + "\u0d7b\u0d7c\u0005L\u0000\u0000\u0d7c\u0d7d\u0005L\u0000\u0000\u0d7d\u0d7e"+ + "\u0005S\u0000\u0000\u0d7e\u0262\u0001\u0000\u0000\u0000\u0d7f\u0d80\u0005"+ + "O\u0000\u0000\u0d80\u0d81\u0005B\u0000\u0000\u0d81\u0d82\u0005S\u0000"+ + "\u0000\u0d82\u0d83\u0005E\u0000\u0000\u0d83\u0d84\u0005R\u0000\u0000\u0d84"+ + "\u0d85\u0005V\u0000\u0000\u0d85\u0d86\u0005E\u0000\u0000\u0d86\u0d87\u0005"+ + "R\u0000\u0000\u0d87\u0264\u0001\u0000\u0000\u0000\u0d88\u0d89\u0005O\u0000"+ + "\u0000\u0d89\u0d8a\u0005F\u0000\u0000\u0d8a\u0266\u0001\u0000\u0000\u0000"+ + "\u0d8b\u0d8c\u0005O\u0000\u0000\u0d8c\u0d8d\u0005F\u0000\u0000\u0d8d\u0d8e"+ + "\u0005F\u0000\u0000\u0d8e\u0d8f\u0005S\u0000\u0000\u0d8f\u0d90\u0005E"+ + "\u0000\u0000\u0d90\u0d91\u0005T\u0000\u0000\u0d91\u0268\u0001\u0000\u0000"+ + "\u0000\u0d92\u0d93\u0005O\u0000\u0000\u0d93\u0d94\u0005N\u0000\u0000\u0d94"+ + "\u026a\u0001\u0000\u0000\u0000\u0d95\u0d96\u0005O\u0000\u0000\u0d96\u0d97"+ + "\u0005N\u0000\u0000\u0d97\u0d98\u0005L\u0000\u0000\u0d98\u0d99\u0005Y"+ + "\u0000\u0000\u0d99\u026c\u0001\u0000\u0000\u0000\u0d9a\u0d9b\u0005O\u0000"+ + "\u0000\u0d9b\u0d9c\u0005P\u0000\u0000\u0d9c\u0d9d\u0005E\u0000\u0000\u0d9d"+ + "\u0d9e\u0005N\u0000\u0000\u0d9e\u026e\u0001\u0000\u0000\u0000\u0d9f\u0da0"+ + "\u0005O\u0000\u0000\u0da0\u0da1\u0005P\u0000\u0000\u0da1\u0da2\u0005T"+ + "\u0000\u0000\u0da2\u0da3\u0005I\u0000\u0000\u0da3\u0da4\u0005M\u0000\u0000"+ + "\u0da4\u0da5\u0005I\u0000\u0000\u0da5\u0da6\u0005Z\u0000\u0000\u0da6\u0da7"+ + "\u0005E\u0000\u0000\u0da7\u0da8\u0005D\u0000\u0000\u0da8\u0270\u0001\u0000"+ + "\u0000\u0000\u0da9\u0daa\u0005O\u0000\u0000\u0daa\u0dab\u0005R\u0000\u0000"+ + "\u0dab\u0272\u0001\u0000\u0000\u0000\u0dac\u0dad\u0005O\u0000\u0000\u0dad"+ + "\u0dae\u0005R\u0000\u0000\u0dae\u0daf\u0005D\u0000\u0000\u0daf\u0db0\u0005"+ + "E\u0000\u0000\u0db0\u0db1\u0005R\u0000\u0000\u0db1\u0274\u0001\u0000\u0000"+ + "\u0000\u0db2\u0db3\u0005O\u0000\u0000\u0db3\u0db4\u0005U\u0000\u0000\u0db4"+ + "\u0db5\u0005T\u0000\u0000\u0db5\u0db6\u0005E\u0000\u0000\u0db6\u0db7\u0005"+ + "R\u0000\u0000\u0db7\u0276\u0001\u0000\u0000\u0000\u0db8\u0db9\u0005O\u0000"+ + "\u0000\u0db9\u0dba\u0005U\u0000\u0000\u0dba\u0dbb\u0005T\u0000\u0000\u0dbb"+ + "\u0dbc\u0005F\u0000\u0000\u0dbc\u0dbd\u0005I\u0000\u0000\u0dbd\u0dbe\u0005"+ + "L\u0000\u0000\u0dbe\u0dbf\u0005E\u0000\u0000\u0dbf\u0278\u0001\u0000\u0000"+ + "\u0000\u0dc0\u0dc1\u0005O\u0000\u0000\u0dc1\u0dc2\u0005V\u0000\u0000\u0dc2"+ + "\u0dc3\u0005E\u0000\u0000\u0dc3\u0dc4\u0005R\u0000\u0000\u0dc4\u027a\u0001"+ + "\u0000\u0000\u0000\u0dc5\u0dc6\u0005O\u0000\u0000\u0dc6\u0dc7\u0005V\u0000"+ + "\u0000\u0dc7\u0dc8\u0005E\u0000\u0000\u0dc8\u0dc9\u0005R\u0000\u0000\u0dc9"+ + "\u0dca\u0005W\u0000\u0000\u0dca\u0dcb\u0005R\u0000\u0000\u0dcb\u0dcc\u0005"+ + "I\u0000\u0000\u0dcc\u0dcd\u0005T\u0000\u0000\u0dcd\u0dce\u0005E\u0000"+ + "\u0000\u0dce\u027c\u0001\u0000\u0000\u0000\u0dcf\u0dd0\u0005P\u0000\u0000"+ + "\u0dd0\u0dd1\u0005A\u0000\u0000\u0dd1\u0dd2\u0005R\u0000\u0000\u0dd2\u0dd3"+ + "\u0005A\u0000\u0000\u0dd3\u0dd4\u0005M\u0000\u0000\u0dd4\u0dd5\u0005E"+ + "\u0000\u0000\u0dd5\u0dd6\u0005T\u0000\u0000\u0dd6\u0dd7\u0005E\u0000\u0000"+ + "\u0dd7\u0dd8\u0005R\u0000\u0000\u0dd8\u027e\u0001\u0000\u0000\u0000\u0dd9"+ + "\u0dda\u0005P\u0000\u0000\u0dda\u0ddb\u0005A\u0000\u0000\u0ddb\u0ddc\u0005"+ + "R\u0000\u0000\u0ddc\u0ddd\u0005S\u0000\u0000\u0ddd\u0dde\u0005E\u0000"+ + "\u0000\u0dde\u0ddf\u0005D\u0000\u0000\u0ddf\u0280\u0001\u0000\u0000\u0000"+ + "\u0de0\u0de1\u0005P\u0000\u0000\u0de1\u0de2\u0005A\u0000\u0000\u0de2\u0de3"+ + "\u0005R\u0000\u0000\u0de3\u0de4\u0005T\u0000\u0000\u0de4\u0de5\u0005I"+ + "\u0000\u0000\u0de5\u0de6\u0005T\u0000\u0000\u0de6\u0de7\u0005I\u0000\u0000"+ + "\u0de7\u0de8\u0005O\u0000\u0000\u0de8\u0de9\u0005N\u0000\u0000\u0de9\u0282"+ + "\u0001\u0000\u0000\u0000\u0dea\u0deb\u0005P\u0000\u0000\u0deb\u0dec\u0005"+ + "A\u0000\u0000\u0dec\u0ded\u0005R\u0000\u0000\u0ded\u0dee\u0005T\u0000"+ + "\u0000\u0dee\u0def\u0005I\u0000\u0000\u0def\u0df0\u0005T\u0000\u0000\u0df0"+ + "\u0df1\u0005I\u0000\u0000\u0df1\u0df2\u0005O\u0000\u0000\u0df2\u0df3\u0005"+ + "N\u0000\u0000\u0df3\u0df4\u0005S\u0000\u0000\u0df4\u0284\u0001\u0000\u0000"+ + "\u0000\u0df5\u0df6\u0005P\u0000\u0000\u0df6\u0df7\u0005A\u0000\u0000\u0df7"+ + "\u0df8\u0005S\u0000\u0000\u0df8\u0df9\u0005S\u0000\u0000\u0df9\u0dfa\u0005"+ + "W\u0000\u0000\u0dfa\u0dfb\u0005O\u0000\u0000\u0dfb\u0dfc\u0005R\u0000"+ + "\u0000\u0dfc\u0dfd\u0005D\u0000\u0000\u0dfd\u0286\u0001\u0000\u0000\u0000"+ + "\u0dfe\u0dff\u0005P\u0000\u0000\u0dff\u0e00\u0005A\u0000\u0000\u0e00\u0e01"+ + "\u0005S\u0000\u0000\u0e01\u0e02\u0005S\u0000\u0000\u0e02\u0e03\u0005W"+ + "\u0000\u0000\u0e03\u0e04\u0005O\u0000\u0000\u0e04\u0e05\u0005R\u0000\u0000"+ + "\u0e05\u0e06\u0005D\u0000\u0000\u0e06\u0e07\u0005_\u0000\u0000\u0e07\u0e08"+ + "\u0005E\u0000\u0000\u0e08\u0e09\u0005X\u0000\u0000\u0e09\u0e0a\u0005P"+ + "\u0000\u0000\u0e0a\u0e0b\u0005I\u0000\u0000\u0e0b\u0e0c\u0005R\u0000\u0000"+ + "\u0e0c\u0e0d\u0005E\u0000\u0000\u0e0d\u0288\u0001\u0000\u0000\u0000\u0e0e"+ + "\u0e0f\u0005P\u0000\u0000\u0e0f\u0e10\u0005A\u0000\u0000\u0e10\u0e11\u0005"+ + "S\u0000\u0000\u0e11\u0e12\u0005S\u0000\u0000\u0e12\u0e13\u0005W\u0000"+ + "\u0000\u0e13\u0e14\u0005O\u0000\u0000\u0e14\u0e15\u0005R\u0000\u0000\u0e15"+ + "\u0e16\u0005D\u0000\u0000\u0e16\u0e17\u0005_\u0000\u0000\u0e17\u0e18\u0005"+ + "H\u0000\u0000\u0e18\u0e19\u0005I\u0000\u0000\u0e19\u0e1a\u0005S\u0000"+ + "\u0000\u0e1a\u0e1b\u0005T\u0000\u0000\u0e1b\u0e1c\u0005O\u0000\u0000\u0e1c"+ + "\u0e1d\u0005R\u0000\u0000\u0e1d\u0e1e\u0005Y\u0000\u0000\u0e1e\u028a\u0001"+ + "\u0000\u0000\u0000\u0e1f\u0e20\u0005P\u0000\u0000\u0e20\u0e21\u0005A\u0000"+ + "\u0000\u0e21\u0e22\u0005S\u0000\u0000\u0e22\u0e23\u0005S\u0000\u0000\u0e23"+ + "\u0e24\u0005W\u0000\u0000\u0e24\u0e25\u0005O\u0000\u0000\u0e25\u0e26\u0005"+ + "R\u0000\u0000\u0e26\u0e27\u0005D\u0000\u0000\u0e27\u0e28\u0005_\u0000"+ + "\u0000\u0e28\u0e29\u0005L\u0000\u0000\u0e29\u0e2a\u0005O\u0000\u0000\u0e2a"+ + "\u0e2b\u0005C\u0000\u0000\u0e2b\u0e2c\u0005K\u0000\u0000\u0e2c\u0e2d\u0005"+ + "_\u0000\u0000\u0e2d\u0e2e\u0005T\u0000\u0000\u0e2e\u0e2f\u0005I\u0000"+ + "\u0000\u0e2f\u0e30\u0005M\u0000\u0000\u0e30\u0e31\u0005E\u0000\u0000\u0e31"+ + "\u028c\u0001\u0000\u0000\u0000\u0e32\u0e33\u0005P\u0000\u0000\u0e33\u0e34"+ + "\u0005A\u0000\u0000\u0e34\u0e35\u0005S\u0000\u0000\u0e35\u0e36\u0005S"+ + "\u0000\u0000\u0e36\u0e37\u0005W\u0000\u0000\u0e37\u0e38\u0005O\u0000\u0000"+ + "\u0e38\u0e39\u0005R\u0000\u0000\u0e39\u0e3a\u0005D\u0000\u0000\u0e3a\u0e3b"+ + "\u0005_\u0000\u0000\u0e3b\u0e3c\u0005R\u0000\u0000\u0e3c\u0e3d\u0005E"+ + "\u0000\u0000\u0e3d\u0e3e\u0005U\u0000\u0000\u0e3e\u0e3f\u0005S\u0000\u0000"+ + "\u0e3f\u0e40\u0005E\u0000\u0000\u0e40\u028e\u0001\u0000\u0000\u0000\u0e41"+ + "\u0e42\u0005P\u0000\u0000\u0e42\u0e43\u0005A\u0000\u0000\u0e43\u0e44\u0005"+ + "T\u0000\u0000\u0e44\u0e45\u0005H\u0000\u0000\u0e45\u0290\u0001\u0000\u0000"+ + "\u0000\u0e46\u0e47\u0005P\u0000\u0000\u0e47\u0e48\u0005A\u0000\u0000\u0e48"+ + "\u0e49\u0005U\u0000\u0000\u0e49\u0e4a\u0005S\u0000\u0000\u0e4a\u0e4b\u0005"+ + "E\u0000\u0000\u0e4b\u0292\u0001\u0000\u0000\u0000\u0e4c\u0e4d\u0005P\u0000"+ + "\u0000\u0e4d\u0e4e\u0005E\u0000\u0000\u0e4e\u0e4f\u0005R\u0000\u0000\u0e4f"+ + "\u0e50\u0005C\u0000\u0000\u0e50\u0e51\u0005E\u0000\u0000\u0e51\u0e52\u0005"+ + "N\u0000\u0000\u0e52\u0e53\u0005T\u0000\u0000\u0e53\u0294\u0001\u0000\u0000"+ + "\u0000\u0e54\u0e55\u0005P\u0000\u0000\u0e55\u0e56\u0005E\u0000\u0000\u0e56"+ + "\u0e57\u0005R\u0000\u0000\u0e57\u0e58\u0005I\u0000\u0000\u0e58\u0e59\u0005"+ + "O\u0000\u0000\u0e59\u0e5a\u0005D\u0000\u0000\u0e5a\u0296\u0001\u0000\u0000"+ + "\u0000\u0e5b\u0e5c\u0005P\u0000\u0000\u0e5c\u0e5d\u0005E\u0000\u0000\u0e5d"+ + "\u0e5e\u0005R\u0000\u0000\u0e5e\u0e5f\u0005M\u0000\u0000\u0e5f\u0e60\u0005"+ + "I\u0000\u0000\u0e60\u0e61\u0005S\u0000\u0000\u0e61\u0e62\u0005S\u0000"+ + "\u0000\u0e62\u0e63\u0005I\u0000\u0000\u0e63\u0e64\u0005V\u0000\u0000\u0e64"+ + "\u0e65\u0005E\u0000\u0000\u0e65\u0298\u0001\u0000\u0000\u0000\u0e66\u0e67"+ + "\u0005P\u0000\u0000\u0e67\u0e68\u0005H\u0000\u0000\u0e68\u0e69\u0005Y"+ + "\u0000\u0000\u0e69\u0e6a\u0005S\u0000\u0000\u0e6a\u0e6b\u0005I\u0000\u0000"+ + "\u0e6b\u0e6c\u0005C\u0000\u0000\u0e6c\u0e6d\u0005A\u0000\u0000\u0e6d\u0e6e"+ + "\u0005L\u0000\u0000\u0e6e\u029a\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0005"+ + "P\u0000\u0000\u0e70\u0e71\u0005I\u0000\u0000\u0e71\u029c\u0001\u0000\u0000"+ + "\u0000\u0e72\u0e73\u0005?\u0000\u0000\u0e73\u029e\u0001\u0000\u0000\u0000"+ + "\u0e74\u0e75\u0005P\u0000\u0000\u0e75\u0e76\u0005L\u0000\u0000\u0e76\u0e77"+ + "\u0005A\u0000\u0000\u0e77\u0e78\u0005N\u0000\u0000\u0e78\u02a0\u0001\u0000"+ + "\u0000\u0000\u0e79\u0e7a\u0005P\u0000\u0000\u0e7a\u0e7b\u0005L\u0000\u0000"+ + "\u0e7b\u0e7c\u0005A\u0000\u0000\u0e7c\u0e7d\u0005Y\u0000\u0000\u0e7d\u02a2"+ + "\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0005P\u0000\u0000\u0e7f\u0e80\u0005"+ + "R\u0000\u0000\u0e80\u0e81\u0005I\u0000\u0000\u0e81\u0e82\u0005V\u0000"+ + "\u0000\u0e82\u0e83\u0005I\u0000\u0000\u0e83\u0e84\u0005L\u0000\u0000\u0e84"+ + "\u0e85\u0005E\u0000\u0000\u0e85\u0e86\u0005G\u0000\u0000\u0e86\u0e87\u0005"+ + "E\u0000\u0000\u0e87\u0e88\u0005S\u0000\u0000\u0e88\u02a4\u0001\u0000\u0000"+ + "\u0000\u0e89\u0e8a\u0005P\u0000\u0000\u0e8a\u0e8b\u0005R\u0000\u0000\u0e8b"+ + "\u0e8c\u0005O\u0000\u0000\u0e8c\u0e8d\u0005C\u0000\u0000\u0e8d\u0e8e\u0005"+ + "E\u0000\u0000\u0e8e\u0e8f\u0005S\u0000\u0000\u0e8f\u0e90\u0005S\u0000"+ + "\u0000\u0e90\u02a6\u0001\u0000\u0000\u0000\u0e91\u0e92\u0005P\u0000\u0000"+ + "\u0e92\u0e93\u0005L\u0000\u0000\u0e93\u0e94\u0005U\u0000\u0000\u0e94\u0e95"+ + "\u0005G\u0000\u0000\u0e95\u0e96\u0005I\u0000\u0000\u0e96\u0e97\u0005N"+ + "\u0000\u0000\u0e97\u02a8\u0001\u0000\u0000\u0000\u0e98\u0e99\u0005P\u0000"+ + "\u0000\u0e99\u0e9a\u0005L\u0000\u0000\u0e9a\u0e9b\u0005U\u0000\u0000\u0e9b"+ + "\u0e9c\u0005G\u0000\u0000\u0e9c\u0e9d\u0005I\u0000\u0000\u0e9d\u0e9e\u0005"+ + "N\u0000\u0000\u0e9e\u0e9f\u0005S\u0000\u0000\u0e9f\u02aa\u0001\u0000\u0000"+ + "\u0000\u0ea0\u0ea1\u0005P\u0000\u0000\u0ea1\u0ea2\u0005O\u0000\u0000\u0ea2"+ + "\u0ea3\u0005L\u0000\u0000\u0ea3\u0ea4\u0005I\u0000\u0000\u0ea4\u0ea5\u0005"+ + "C\u0000\u0000\u0ea5\u0ea6\u0005Y\u0000\u0000\u0ea6\u02ac\u0001\u0000\u0000"+ + "\u0000\u0ea7\u0ea8\u0005P\u0000\u0000\u0ea8\u0ea9\u0005R\u0000\u0000\u0ea9"+ + "\u0eaa\u0005E\u0000\u0000\u0eaa\u0eab\u0005C\u0000\u0000\u0eab\u0eac\u0005"+ + "E\u0000\u0000\u0eac\u0ead\u0005D\u0000\u0000\u0ead\u0eae\u0005I\u0000"+ + "\u0000\u0eae\u0eaf\u0005N\u0000\u0000\u0eaf\u0eb0\u0005G\u0000\u0000\u0eb0"+ + "\u02ae\u0001\u0000\u0000\u0000\u0eb1\u0eb2\u0005P\u0000\u0000\u0eb2\u0eb3"+ + "\u0005R\u0000\u0000\u0eb3\u0eb4\u0005E\u0000\u0000\u0eb4\u0eb5\u0005P"+ + "\u0000\u0000\u0eb5\u0eb6\u0005A\u0000\u0000\u0eb6\u0eb7\u0005R\u0000\u0000"+ + "\u0eb7\u0eb8\u0005E\u0000\u0000\u0eb8\u02b0\u0001\u0000\u0000\u0000\u0eb9"+ + "\u0eba\u0005P\u0000\u0000\u0eba\u0ebb\u0005R\u0000\u0000\u0ebb\u0ebc\u0005"+ + "I\u0000\u0000\u0ebc\u0ebd\u0005M\u0000\u0000\u0ebd\u0ebe\u0005A\u0000"+ + "\u0000\u0ebe\u0ebf\u0005R\u0000\u0000\u0ebf\u0ec0\u0005Y\u0000\u0000\u0ec0"+ + "\u02b2\u0001\u0000\u0000\u0000\u0ec1\u0ec2\u0005P\u0000\u0000\u0ec2\u0ec3"+ + "\u0005R\u0000\u0000\u0ec3\u0ec4\u0005O\u0000\u0000\u0ec4\u0ec5\u0005C"+ + "\u0000\u0000\u0ec5\u02b4\u0001\u0000\u0000\u0000\u0ec6\u0ec7\u0005P\u0000"+ + "\u0000\u0ec7\u0ec8\u0005R\u0000\u0000\u0ec8\u0ec9\u0005O\u0000\u0000\u0ec9"+ + "\u0eca\u0005C\u0000\u0000\u0eca\u0ecb\u0005E\u0000\u0000\u0ecb\u0ecc\u0005"+ + "D\u0000\u0000\u0ecc\u0ecd\u0005U\u0000\u0000\u0ecd\u0ece\u0005R\u0000"+ + "\u0000\u0ece\u0ecf\u0005E\u0000\u0000\u0ecf\u02b6\u0001\u0000\u0000\u0000"+ + "\u0ed0\u0ed1\u0005P\u0000\u0000\u0ed1\u0ed2\u0005R\u0000\u0000\u0ed2\u0ed3"+ + "\u0005O\u0000\u0000\u0ed3\u0ed4\u0005C\u0000\u0000\u0ed4\u0ed5\u0005E"+ + "\u0000\u0000\u0ed5\u0ed6\u0005S\u0000\u0000\u0ed6\u0ed7\u0005S\u0000\u0000"+ + "\u0ed7\u0ed8\u0005L\u0000\u0000\u0ed8\u0ed9\u0005I\u0000\u0000\u0ed9\u0eda"+ + "\u0005S\u0000\u0000\u0eda\u0edb\u0005T\u0000\u0000\u0edb\u02b8\u0001\u0000"+ + "\u0000\u0000\u0edc\u0edd\u0005P\u0000\u0000\u0edd\u0ede\u0005R\u0000\u0000"+ + "\u0ede\u0edf\u0005O\u0000\u0000\u0edf\u0ee0\u0005F\u0000\u0000\u0ee0\u0ee1"+ + "\u0005I\u0000\u0000\u0ee1\u0ee2\u0005L\u0000\u0000\u0ee2\u0ee3\u0005E"+ + "\u0000\u0000\u0ee3\u02ba\u0001\u0000\u0000\u0000\u0ee4\u0ee5\u0005P\u0000"+ + "\u0000\u0ee5\u0ee6\u0005R\u0000\u0000\u0ee6\u0ee7\u0005O\u0000\u0000\u0ee7"+ + "\u0ee8\u0005P\u0000\u0000\u0ee8\u0ee9\u0005E\u0000\u0000\u0ee9\u0eea\u0005"+ + "R\u0000\u0000\u0eea\u0eeb\u0005T\u0000\u0000\u0eeb\u0eec\u0005I\u0000"+ + "\u0000\u0eec\u0eed\u0005E\u0000\u0000\u0eed\u0eee\u0005S\u0000\u0000\u0eee"+ + "\u02bc\u0001\u0000\u0000\u0000\u0eef\u0ef0\u0005P\u0000\u0000\u0ef0\u0ef1"+ + "\u0005R\u0000\u0000\u0ef1\u0ef2\u0005O\u0000\u0000\u0ef2\u0ef3\u0005P"+ + "\u0000\u0000\u0ef3\u0ef4\u0005E\u0000\u0000\u0ef4\u0ef5\u0005R\u0000\u0000"+ + "\u0ef5\u0ef6\u0005T\u0000\u0000\u0ef6\u0ef7\u0005Y\u0000\u0000\u0ef7\u02be"+ + "\u0001\u0000\u0000\u0000\u0ef8\u0ef9\u0005Q\u0000\u0000\u0ef9\u0efa\u0005"+ + "U\u0000\u0000\u0efa\u0efb\u0005A\u0000\u0000\u0efb\u0efc\u0005N\u0000"+ + "\u0000\u0efc\u0efd\u0005T\u0000\u0000\u0efd\u0efe\u0005I\u0000\u0000\u0efe"+ + "\u0eff\u0005L\u0000\u0000\u0eff\u0f00\u0005E\u0000\u0000\u0f00\u0f01\u0005"+ + "_\u0000\u0000\u0f01\u0f02\u0005S\u0000\u0000\u0f02\u0f03\u0005T\u0000"+ + "\u0000\u0f03\u0f04\u0005A\u0000\u0000\u0f04\u0f05\u0005T\u0000\u0000\u0f05"+ + "\u0f06\u0005E\u0000\u0000\u0f06\u02c0\u0001\u0000\u0000\u0000\u0f07\u0f08"+ + "\u0005Q\u0000\u0000\u0f08\u0f09\u0005U\u0000\u0000\u0f09\u0f0a\u0005A"+ + "\u0000\u0000\u0f0a\u0f0b\u0005N\u0000\u0000\u0f0b\u0f0c\u0005T\u0000\u0000"+ + "\u0f0c\u0f0d\u0005I\u0000\u0000\u0f0d\u0f0e\u0005L\u0000\u0000\u0f0e\u0f0f"+ + "\u0005E\u0000\u0000\u0f0f\u0f10\u0005_\u0000\u0000\u0f10\u0f11\u0005U"+ + "\u0000\u0000\u0f11\u0f12\u0005N\u0000\u0000\u0f12\u0f13\u0005I\u0000\u0000"+ + "\u0f13\u0f14\u0005O\u0000\u0000\u0f14\u0f15\u0005N\u0000\u0000\u0f15\u02c2"+ + "\u0001\u0000\u0000\u0000\u0f16\u0f17\u0005Q\u0000\u0000\u0f17\u0f18\u0005"+ + "U\u0000\u0000\u0f18\u0f19\u0005E\u0000\u0000\u0f19\u0f1a\u0005R\u0000"+ + "\u0000\u0f1a\u0f1b\u0005Y\u0000\u0000\u0f1b\u02c4\u0001\u0000\u0000\u0000"+ + "\u0f1c\u0f1d\u0005Q\u0000\u0000\u0f1d\u0f1e\u0005U\u0000\u0000\u0f1e\u0f1f"+ + "\u0005E\u0000\u0000\u0f1f\u0f20\u0005U\u0000\u0000\u0f20\u0f21\u0005E"+ + "\u0000\u0000\u0f21\u0f22\u0005D\u0000\u0000\u0f22\u02c6\u0001\u0000\u0000"+ + "\u0000\u0f23\u0f24\u0005Q\u0000\u0000\u0f24\u0f25\u0005U\u0000\u0000\u0f25"+ + "\u0f26\u0005O\u0000\u0000\u0f26\u0f27\u0005T\u0000\u0000\u0f27\u0f28\u0005"+ + "A\u0000\u0000\u0f28\u02c8\u0001\u0000\u0000\u0000\u0f29\u0f2a\u0005Q\u0000"+ + "\u0000\u0f2a\u0f2b\u0005U\u0000\u0000\u0f2b\u0f2c\u0005A\u0000\u0000\u0f2c"+ + "\u0f2d\u0005L\u0000\u0000\u0f2d\u0f2e\u0005I\u0000\u0000\u0f2e\u0f2f\u0005"+ + "F\u0000\u0000\u0f2f\u0f30\u0005Y\u0000\u0000\u0f30\u02ca\u0001\u0000\u0000"+ + "\u0000\u0f31\u0f32\u0005Q\u0000\u0000\u0f32\u0f33\u0005U\u0000\u0000\u0f33"+ + "\u0f34\u0005A\u0000\u0000\u0f34\u0f35\u0005R\u0000\u0000\u0f35\u0f36\u0005"+ + "T\u0000\u0000\u0f36\u0f37\u0005E\u0000\u0000\u0f37\u0f38\u0005R\u0000"+ + "\u0000\u0f38\u02cc\u0001\u0000\u0000\u0000\u0f39\u0f3a\u0005R\u0000\u0000"+ + "\u0f3a\u0f3b\u0005A\u0000\u0000\u0f3b\u0f3c\u0005N\u0000\u0000\u0f3c\u0f3d"+ + "\u0005D\u0000\u0000\u0f3d\u0f3e\u0005O\u0000\u0000\u0f3e\u0f3f\u0005M"+ + "\u0000\u0000\u0f3f\u02ce\u0001\u0000\u0000\u0000\u0f40\u0f41\u0005R\u0000"+ + "\u0000\u0f41\u0f42\u0005A\u0000\u0000\u0f42\u0f43\u0005N\u0000\u0000\u0f43"+ + "\u0f44\u0005G\u0000\u0000\u0f44\u0f45\u0005E\u0000\u0000\u0f45\u02d0\u0001"+ + "\u0000\u0000\u0000\u0f46\u0f47\u0005R\u0000\u0000\u0f47\u0f48\u0005E\u0000"+ + "\u0000\u0f48\u0f49\u0005A\u0000\u0000\u0f49\u0f4a\u0005D\u0000\u0000\u0f4a"+ + "\u02d2\u0001\u0000\u0000\u0000\u0f4b\u0f4c\u0005R\u0000\u0000\u0f4c\u0f4d"+ + "\u0005E\u0000\u0000\u0f4d\u0f4e\u0005A\u0000\u0000\u0f4e\u0f4f\u0005L"+ + "\u0000\u0000\u0f4f\u02d4\u0001\u0000\u0000\u0000\u0f50\u0f51\u0005R\u0000"+ + "\u0000\u0f51\u0f52\u0005E\u0000\u0000\u0f52\u0f53\u0005B\u0000\u0000\u0f53"+ + "\u0f54\u0005A\u0000\u0000\u0f54\u0f55\u0005L\u0000\u0000\u0f55\u0f56\u0005"+ + "A\u0000\u0000\u0f56\u0f57\u0005N\u0000\u0000\u0f57\u0f58\u0005C\u0000"+ + "\u0000\u0f58\u0f59\u0005E\u0000\u0000\u0f59\u02d6\u0001\u0000\u0000\u0000"+ + "\u0f5a\u0f5b\u0005R\u0000\u0000\u0f5b\u0f5c\u0005E\u0000\u0000\u0f5c\u0f5d"+ + "\u0005C\u0000\u0000\u0f5d\u0f5e\u0005E\u0000\u0000\u0f5e\u0f5f\u0005N"+ + "\u0000\u0000\u0f5f\u0f60\u0005T\u0000\u0000\u0f60\u02d8\u0001\u0000\u0000"+ + "\u0000\u0f61\u0f62\u0005R\u0000\u0000\u0f62\u0f63\u0005E\u0000\u0000\u0f63"+ + "\u0f64\u0005C\u0000\u0000\u0f64\u0f65\u0005O\u0000\u0000\u0f65\u0f66\u0005"+ + "V\u0000\u0000\u0f66\u0f67\u0005E\u0000\u0000\u0f67\u0f68\u0005R\u0000"+ + "\u0000\u0f68\u02da\u0001\u0000\u0000\u0000\u0f69\u0f6a\u0005R\u0000\u0000"+ + "\u0f6a\u0f6b\u0005E\u0000\u0000\u0f6b\u0f6c\u0005C\u0000\u0000\u0f6c\u0f6d"+ + "\u0005Y\u0000\u0000\u0f6d\u0f6e\u0005C\u0000\u0000\u0f6e\u0f6f\u0005L"+ + "\u0000\u0000\u0f6f\u0f70\u0005E\u0000\u0000\u0f70\u02dc\u0001\u0000\u0000"+ + "\u0000\u0f71\u0f72\u0005R\u0000\u0000\u0f72\u0f73\u0005E\u0000\u0000\u0f73"+ + "\u0f74\u0005F\u0000\u0000\u0f74\u0f75\u0005R\u0000\u0000\u0f75\u0f76\u0005"+ + "E\u0000\u0000\u0f76\u0f77\u0005S\u0000\u0000\u0f77\u0f78\u0005H\u0000"+ + "\u0000\u0f78\u02de\u0001\u0000\u0000\u0000\u0f79\u0f7a\u0005R\u0000\u0000"+ + "\u0f7a\u0f7b\u0005E\u0000\u0000\u0f7b\u0f7c\u0005F\u0000\u0000\u0f7c\u0f7d"+ + "\u0005E\u0000\u0000\u0f7d\u0f7e\u0005R\u0000\u0000\u0f7e\u0f7f\u0005E"+ + "\u0000\u0000\u0f7f\u0f80\u0005N\u0000\u0000\u0f80\u0f81\u0005C\u0000\u0000"+ + "\u0f81\u0f82\u0005E\u0000\u0000\u0f82\u0f83\u0005S\u0000\u0000\u0f83\u02e0"+ + "\u0001\u0000\u0000\u0000\u0f84\u0f85\u0005R\u0000\u0000\u0f85\u0f86\u0005"+ + "E\u0000\u0000\u0f86\u0f87\u0005G\u0000\u0000\u0f87\u0f88\u0005E\u0000"+ + "\u0000\u0f88\u0f89\u0005X\u0000\u0000\u0f89\u0f8a\u0005P\u0000\u0000\u0f8a"+ + "\u02e2\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0005R\u0000\u0000\u0f8c\u0f8d"+ + "\u0005E\u0000\u0000\u0f8d\u0f8e\u0005L\u0000\u0000\u0f8e\u0f8f\u0005E"+ + "\u0000\u0000\u0f8f\u0f90\u0005A\u0000\u0000\u0f90\u0f91\u0005S\u0000\u0000"+ + "\u0f91\u0f92\u0005E\u0000\u0000\u0f92\u02e4\u0001\u0000\u0000\u0000\u0f93"+ + "\u0f94\u0005R\u0000\u0000\u0f94\u0f95\u0005E\u0000\u0000\u0f95\u0f96\u0005"+ + "N\u0000\u0000\u0f96\u0f97\u0005A\u0000\u0000\u0f97\u0f98\u0005M\u0000"+ + "\u0000\u0f98\u0f99\u0005E\u0000\u0000\u0f99\u02e6\u0001\u0000\u0000\u0000"+ + "\u0f9a\u0f9b\u0005R\u0000\u0000\u0f9b\u0f9c\u0005E\u0000\u0000\u0f9c\u0f9d"+ + "\u0005P\u0000\u0000\u0f9d\u0f9e\u0005A\u0000\u0000\u0f9e\u0f9f\u0005I"+ + "\u0000\u0000\u0f9f\u0fa0\u0005R\u0000\u0000\u0fa0\u02e8\u0001\u0000\u0000"+ + "\u0000\u0fa1\u0fa2\u0005R\u0000\u0000\u0fa2\u0fa3\u0005E\u0000\u0000\u0fa3"+ + "\u0fa4\u0005P\u0000\u0000\u0fa4\u0fa5\u0005E\u0000\u0000\u0fa5\u0fa6\u0005"+ + "A\u0000\u0000\u0fa6\u0fa7\u0005T\u0000\u0000\u0fa7\u0fa8\u0005A\u0000"+ + "\u0000\u0fa8\u0fa9\u0005B\u0000\u0000\u0fa9\u0faa\u0005L\u0000\u0000\u0faa"+ + "\u0fab\u0005E\u0000\u0000\u0fab\u02ea\u0001\u0000\u0000\u0000\u0fac\u0fad"+ + "\u0005R\u0000\u0000\u0fad\u0fae\u0005E\u0000\u0000\u0fae\u0faf\u0005P"+ + "\u0000\u0000\u0faf\u0fb0\u0005L\u0000\u0000\u0fb0\u0fb1\u0005A\u0000\u0000"+ + "\u0fb1\u0fb2\u0005C\u0000\u0000\u0fb2\u0fb3\u0005E\u0000\u0000\u0fb3\u02ec"+ + "\u0001\u0000\u0000\u0000\u0fb4\u0fb5\u0005R\u0000\u0000\u0fb5\u0fb6\u0005"+ + "E\u0000\u0000\u0fb6\u0fb7\u0005P\u0000\u0000\u0fb7\u0fb8\u0005L\u0000"+ + "\u0000\u0fb8\u0fb9\u0005A\u0000\u0000\u0fb9\u0fba\u0005C\u0000\u0000\u0fba"+ + "\u0fbb\u0005E\u0000\u0000\u0fbb\u0fbc\u0005_\u0000\u0000\u0fbc\u0fbd\u0005"+ + "I\u0000\u0000\u0fbd\u0fbe\u0005F\u0000\u0000\u0fbe\u0fbf\u0005_\u0000"+ + "\u0000\u0fbf\u0fc0\u0005N\u0000\u0000\u0fc0\u0fc1\u0005O\u0000\u0000\u0fc1"+ + "\u0fc2\u0005T\u0000\u0000\u0fc2\u0fc3\u0005_\u0000\u0000\u0fc3\u0fc4\u0005"+ + "N\u0000\u0000\u0fc4\u0fc5\u0005U\u0000\u0000\u0fc5\u0fc6\u0005L\u0000"+ + "\u0000\u0fc6\u0fc7\u0005L\u0000\u0000\u0fc7\u02ee\u0001\u0000\u0000\u0000"+ + "\u0fc8\u0fc9\u0005R\u0000\u0000\u0fc9\u0fca\u0005E\u0000\u0000\u0fca\u0fcb"+ + "\u0005P\u0000\u0000\u0fcb\u0fcc\u0005L\u0000\u0000\u0fcc\u0fcd\u0005A"+ + "\u0000\u0000\u0fcd\u0fce\u0005Y\u0000\u0000\u0fce\u0fcf\u0005E\u0000\u0000"+ + "\u0fcf\u0fd0\u0005R\u0000\u0000\u0fd0\u02f0\u0001\u0000\u0000\u0000\u0fd1"+ + "\u0fd2\u0005R\u0000\u0000\u0fd2\u0fd3\u0005E\u0000\u0000\u0fd3\u0fd4\u0005"+ + "P\u0000\u0000\u0fd4\u0fd5\u0005L\u0000\u0000\u0fd5\u0fd6\u0005I\u0000"+ + "\u0000\u0fd6\u0fd7\u0005C\u0000\u0000\u0fd7\u0fd8\u0005A\u0000\u0000\u0fd8"+ + "\u02f2\u0001\u0000\u0000\u0000\u0fd9\u0fda\u0005R\u0000\u0000\u0fda\u0fdb"+ + "\u0005E\u0000\u0000\u0fdb\u0fdc\u0005P\u0000\u0000\u0fdc\u0fdd\u0005O"+ + "\u0000\u0000\u0fdd\u0fde\u0005S\u0000\u0000\u0fde\u0fdf\u0005I\u0000\u0000"+ + "\u0fdf\u0fe0\u0005T\u0000\u0000\u0fe0\u0fe1\u0005O\u0000\u0000\u0fe1\u0fe2"+ + "\u0005R\u0000\u0000\u0fe2\u0fe3\u0005I\u0000\u0000\u0fe3\u0fe4\u0005E"+ + "\u0000\u0000\u0fe4\u0fe5\u0005S\u0000\u0000\u0fe5\u02f4\u0001\u0000\u0000"+ + "\u0000\u0fe6\u0fe7\u0005R\u0000\u0000\u0fe7\u0fe8\u0005E\u0000\u0000\u0fe8"+ + "\u0fe9\u0005P\u0000\u0000\u0fe9\u0fea\u0005O\u0000\u0000\u0fea\u0feb\u0005"+ + "S\u0000\u0000\u0feb\u0fec\u0005I\u0000\u0000\u0fec\u0fed\u0005T\u0000"+ + "\u0000\u0fed\u0fee\u0005O\u0000\u0000\u0fee\u0fef\u0005R\u0000\u0000\u0fef"+ + "\u0ff0\u0005Y\u0000\u0000\u0ff0\u02f6\u0001\u0000\u0000\u0000\u0ff1\u0ff2"+ + "\u0005R\u0000\u0000\u0ff2\u0ff3\u0005E\u0000\u0000\u0ff3\u0ff4\u0005S"+ + "\u0000\u0000\u0ff4\u0ff5\u0005O\u0000\u0000\u0ff5\u0ff6\u0005U\u0000\u0000"+ + "\u0ff6\u0ff7\u0005R\u0000\u0000\u0ff7\u0ff8\u0005C\u0000\u0000\u0ff8\u0ff9"+ + "\u0005E\u0000\u0000\u0ff9\u02f8\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0005"+ + "R\u0000\u0000\u0ffb\u0ffc\u0005E\u0000\u0000\u0ffc\u0ffd\u0005S\u0000"+ + "\u0000\u0ffd\u0ffe\u0005O\u0000\u0000\u0ffe\u0fff\u0005U\u0000\u0000\u0fff"+ + "\u1000\u0005R\u0000\u0000\u1000\u1001\u0005C\u0000\u0000\u1001\u1002\u0005"+ + "E\u0000\u0000\u1002\u1003\u0005S\u0000\u0000\u1003\u02fa\u0001\u0000\u0000"+ + "\u0000\u1004\u1005\u0005R\u0000\u0000\u1005\u1006\u0005E\u0000\u0000\u1006"+ + "\u1007\u0005S\u0000\u0000\u1007\u1008\u0005T\u0000\u0000\u1008\u1009\u0005"+ + "O\u0000\u0000\u1009\u100a\u0005R\u0000\u0000\u100a\u100b\u0005E\u0000"+ + "\u0000\u100b\u02fc\u0001\u0000\u0000\u0000\u100c\u100d\u0005R\u0000\u0000"+ + "\u100d\u100e\u0005E\u0000\u0000\u100e\u100f\u0005S\u0000\u0000\u100f\u1010"+ + "\u0005T\u0000\u0000\u1010\u1011\u0005R\u0000\u0000\u1011\u1012\u0005I"+ + "\u0000\u0000\u1012\u1013\u0005C\u0000\u0000\u1013\u1014\u0005T\u0000\u0000"+ + "\u1014\u1015\u0005I\u0000\u0000\u1015\u1016\u0005V\u0000\u0000\u1016\u1017"+ + "\u0005E\u0000\u0000\u1017\u02fe\u0001\u0000\u0000\u0000\u1018\u1019\u0005"+ + "R\u0000\u0000\u1019\u101a\u0005E\u0000\u0000\u101a\u101b\u0005S\u0000"+ + "\u0000\u101b\u101c\u0005U\u0000\u0000\u101c\u101d\u0005M\u0000\u0000\u101d"+ + "\u101e\u0005E\u0000\u0000\u101e\u0300\u0001\u0000\u0000\u0000\u101f\u1020"+ + "\u0005R\u0000\u0000\u1020\u1021\u0005E\u0000\u0000\u1021\u1022\u0005T"+ + "\u0000\u0000\u1022\u1023\u0005U\u0000\u0000\u1023\u1024\u0005R\u0000\u0000"+ + "\u1024\u1025\u0005N\u0000\u0000\u1025\u1026\u0005S\u0000\u0000\u1026\u0302"+ + "\u0001\u0000\u0000\u0000\u1027\u1028\u0005R\u0000\u0000\u1028\u1029\u0005"+ + "E\u0000\u0000\u1029\u102a\u0005V\u0000\u0000\u102a\u102b\u0005O\u0000"+ + "\u0000\u102b\u102c\u0005K\u0000\u0000\u102c\u102d\u0005E\u0000\u0000\u102d"+ + "\u0304\u0001\u0000\u0000\u0000\u102e\u102f\u0005R\u0000\u0000\u102f\u1030"+ + "\u0005E\u0000\u0000\u1030\u1031\u0005W\u0000\u0000\u1031\u1032\u0005R"+ + "\u0000\u0000\u1032\u1033\u0005I\u0000\u0000\u1033\u1034\u0005T\u0000\u0000"+ + "\u1034\u1035\u0005T\u0000\u0000\u1035\u1036\u0005E\u0000\u0000\u1036\u1037"+ + "\u0005N\u0000\u0000\u1037\u0306\u0001\u0000\u0000\u0000\u1038\u1039\u0005"+ + "R\u0000\u0000\u1039\u103a\u0005I\u0000\u0000\u103a\u103b\u0005G\u0000"+ + "\u0000\u103b\u103c\u0005H\u0000\u0000\u103c\u103d\u0005T\u0000\u0000\u103d"+ + "\u0308\u0001\u0000\u0000\u0000\u103e\u103f\u0005R\u0000\u0000\u103f\u1040"+ + "\u0005L\u0000\u0000\u1040\u1041\u0005I\u0000\u0000\u1041\u1042\u0005K"+ + "\u0000\u0000\u1042\u1043\u0005E\u0000\u0000\u1043\u030a\u0001\u0000\u0000"+ + "\u0000\u1044\u1045\u0005R\u0000\u0000\u1045\u1046\u0005O\u0000\u0000\u1046"+ + "\u1047\u0005L\u0000\u0000\u1047\u1048\u0005E\u0000\u0000\u1048\u030c\u0001"+ + "\u0000\u0000\u0000\u1049\u104a\u0005R\u0000\u0000\u104a\u104b\u0005O\u0000"+ + "\u0000\u104b\u104c\u0005L\u0000\u0000\u104c\u104d\u0005E\u0000\u0000\u104d"+ + "\u104e\u0005S\u0000\u0000\u104e\u030e\u0001\u0000\u0000\u0000\u104f\u1050"+ + "\u0005R\u0000\u0000\u1050\u1051\u0005O\u0000\u0000\u1051\u1052\u0005L"+ + "\u0000\u0000\u1052\u1053\u0005L\u0000\u0000\u1053\u1054\u0005B\u0000\u0000"+ + "\u1054\u1055\u0005A\u0000\u0000\u1055\u1056\u0005C\u0000\u0000\u1056\u1057"+ + "\u0005K\u0000\u0000\u1057\u0310\u0001\u0000\u0000\u0000\u1058\u1059\u0005"+ + "R\u0000\u0000\u1059\u105a\u0005O\u0000\u0000\u105a\u105b\u0005L\u0000"+ + "\u0000\u105b\u105c\u0005L\u0000\u0000\u105c\u105d\u0005U\u0000\u0000\u105d"+ + "\u105e\u0005P\u0000\u0000\u105e\u0312\u0001\u0000\u0000\u0000\u105f\u1060"+ + "\u0005R\u0000\u0000\u1060\u1061\u0005O\u0000\u0000\u1061\u1062\u0005U"+ + "\u0000\u0000\u1062\u1063\u0005T\u0000\u0000\u1063\u1064\u0005I\u0000\u0000"+ + "\u1064\u1065\u0005N\u0000\u0000\u1065\u1066\u0005E\u0000\u0000\u1066\u0314"+ + "\u0001\u0000\u0000\u0000\u1067\u1068\u0005R\u0000\u0000\u1068\u1069\u0005"+ + "O\u0000\u0000\u1069\u106a\u0005W\u0000\u0000\u106a\u0316\u0001\u0000\u0000"+ + "\u0000\u106b\u106c\u0005R\u0000\u0000\u106c\u106d\u0005O\u0000\u0000\u106d"+ + "\u106e\u0005W\u0000\u0000\u106e\u106f\u0005S\u0000\u0000\u106f\u0318\u0001"+ + "\u0000\u0000\u0000\u1070\u1071\u0005S\u0000\u0000\u1071\u1072\u00053\u0000"+ + "\u0000\u1072\u031a\u0001\u0000\u0000\u0000\u1073\u1074\u0005S\u0000\u0000"+ + "\u1074\u1075\u0005A\u0000\u0000\u1075\u1076\u0005M\u0000\u0000\u1076\u1077"+ + "\u0005P\u0000\u0000\u1077\u1078\u0005L\u0000\u0000\u1078\u1079\u0005E"+ + "\u0000\u0000\u1079\u031c\u0001\u0000\u0000\u0000\u107a\u107b\u0005S\u0000"+ + "\u0000\u107b\u107c\u0005C\u0000\u0000\u107c\u107d\u0005H\u0000\u0000\u107d"+ + "\u107e\u0005E\u0000\u0000\u107e\u107f\u0005D\u0000\u0000\u107f\u1080\u0005"+ + "U\u0000\u0000\u1080\u1081\u0005L\u0000\u0000\u1081\u1082\u0005E\u0000"+ + "\u0000\u1082\u031e\u0001\u0000\u0000\u0000\u1083\u1084\u0005S\u0000\u0000"+ + "\u1084\u1085\u0005C\u0000\u0000\u1085\u1086\u0005H\u0000\u0000\u1086\u1087"+ + "\u0005E\u0000\u0000\u1087\u1088\u0005D\u0000\u0000\u1088\u1089\u0005U"+ + "\u0000\u0000\u1089\u108a\u0005L\u0000\u0000\u108a\u108b\u0005E\u0000\u0000"+ + "\u108b\u108c\u0005R\u0000\u0000\u108c\u0320\u0001\u0000\u0000\u0000\u108d"+ + "\u108e\u0005S\u0000\u0000\u108e\u108f\u0005C\u0000\u0000\u108f\u1090\u0005"+ + "H\u0000\u0000\u1090\u1091\u0005E\u0000\u0000\u1091\u1092\u0005M\u0000"+ + "\u0000\u1092\u1093\u0005A\u0000\u0000\u1093\u0322\u0001\u0000\u0000\u0000"+ + "\u1094\u1095\u0005S\u0000\u0000\u1095\u1096\u0005C\u0000\u0000\u1096\u1097"+ + "\u0005H\u0000\u0000\u1097\u1098\u0005E\u0000\u0000\u1098\u1099\u0005M"+ + "\u0000\u0000\u1099\u109a\u0005A\u0000\u0000\u109a\u109b\u0005S\u0000\u0000"+ + "\u109b\u0324\u0001\u0000\u0000\u0000\u109c\u109d\u0005S\u0000\u0000\u109d"+ + "\u109e\u0005E\u0000\u0000\u109e\u109f\u0005C\u0000\u0000\u109f\u10a0\u0005"+ + "O\u0000\u0000\u10a0\u10a1\u0005N\u0000\u0000\u10a1\u10a2\u0005D\u0000"+ + "\u0000\u10a2\u0326\u0001\u0000\u0000\u0000\u10a3\u10a4\u0005S\u0000\u0000"+ + "\u10a4\u10a5\u0005E\u0000\u0000\u10a5\u10a6\u0005L\u0000\u0000\u10a6\u10a7"+ + "\u0005E\u0000\u0000\u10a7\u10a8\u0005C\u0000\u0000\u10a8\u10a9\u0005T"+ + "\u0000\u0000\u10a9\u0328\u0001\u0000\u0000\u0000\u10aa\u10ab\u0005S\u0000"+ + "\u0000\u10ab\u10ac\u0005E\u0000\u0000\u10ac\u10ad\u0005M\u0000\u0000\u10ad"+ + "\u10ae\u0005I\u0000\u0000\u10ae\u032a\u0001\u0000\u0000\u0000\u10af\u10b0"+ + "\u0005S\u0000\u0000\u10b0\u10b1\u0005E\u0000\u0000\u10b1\u10b2\u0005R"+ + "\u0000\u0000\u10b2\u10b3\u0005I\u0000\u0000\u10b3\u10b4\u0005A\u0000\u0000"+ + "\u10b4\u10b5\u0005L\u0000\u0000\u10b5\u10b6\u0005I\u0000\u0000\u10b6\u10b7"+ + "\u0005Z\u0000\u0000\u10b7\u10b8\u0005A\u0000\u0000\u10b8\u10b9\u0005B"+ + "\u0000\u0000\u10b9\u10ba\u0005L\u0000\u0000\u10ba\u10bb\u0005E\u0000\u0000"+ + "\u10bb\u032c\u0001\u0000\u0000\u0000\u10bc\u10bd\u0005S\u0000\u0000\u10bd"+ + "\u10be\u0005E\u0000\u0000\u10be\u10bf\u0005S\u0000\u0000\u10bf\u10c0\u0005"+ + "S\u0000\u0000\u10c0\u10c1\u0005I\u0000\u0000\u10c1\u10c2\u0005O\u0000"+ + "\u0000\u10c2\u10c3\u0005N\u0000\u0000\u10c3\u032e\u0001\u0000\u0000\u0000"+ + "\u10c4\u10c5\u0005S\u0000\u0000\u10c5\u10c6\u0005E\u0000\u0000\u10c6\u10c7"+ + "\u0005S\u0000\u0000\u10c7\u10c8\u0005S\u0000\u0000\u10c8\u10c9\u0005I"+ + "\u0000\u0000\u10c9\u10ca\u0005O\u0000\u0000\u10ca\u10cb\u0005N\u0000\u0000"+ + "\u10cb\u10cc\u0005_\u0000\u0000\u10cc\u10cd\u0005U\u0000\u0000\u10cd\u10ce"+ + "\u0005S\u0000\u0000\u10ce\u10cf\u0005E\u0000\u0000\u10cf\u10d0\u0005R"+ + "\u0000\u0000\u10d0\u0330\u0001\u0000\u0000\u0000\u10d1\u10d2\u0005S\u0000"+ + "\u0000\u10d2\u10d3\u0005E\u0000\u0000\u10d3\u10d4\u0005T\u0000\u0000\u10d4"+ + "\u0332\u0001\u0000\u0000\u0000\u10d5\u10d6\u0005S\u0000\u0000\u10d6\u10d7"+ + "\u0005E\u0000\u0000\u10d7\u10d8\u0005T\u0000\u0000\u10d8\u10d9\u0005S"+ + "\u0000\u0000\u10d9\u0334\u0001\u0000\u0000\u0000\u10da\u10db\u0005S\u0000"+ + "\u0000\u10db\u10dc\u0005E\u0000\u0000\u10dc\u10dd\u0005T\u0000\u0000\u10dd"+ + "\u10de\u0005_\u0000\u0000\u10de\u10df\u0005S\u0000\u0000\u10df\u10e0\u0005"+ + "E\u0000\u0000\u10e0\u10e1\u0005S\u0000\u0000\u10e1\u10e2\u0005S\u0000"+ + "\u0000\u10e2\u10e3\u0005I\u0000\u0000\u10e3\u10e4\u0005O\u0000\u0000\u10e4"+ + "\u10e5\u0005N\u0000\u0000\u10e5\u10e6\u0005_\u0000\u0000\u10e6\u10e7\u0005"+ + "V\u0000\u0000\u10e7\u10e8\u0005A\u0000\u0000\u10e8\u10e9\u0005R\u0000"+ + "\u0000\u10e9\u10ea\u0005I\u0000\u0000\u10ea\u10eb\u0005A\u0000\u0000\u10eb"+ + "\u10ec\u0005B\u0000\u0000\u10ec\u10ed\u0005L\u0000\u0000\u10ed\u10ee\u0005"+ + "E\u0000\u0000\u10ee\u0336\u0001\u0000\u0000\u0000\u10ef\u10f0\u0005S\u0000"+ + "\u0000\u10f0\u10f1\u0005H\u0000\u0000\u10f1\u10f2\u0005A\u0000\u0000\u10f2"+ + "\u10f3\u0005P\u0000\u0000\u10f3\u10f4\u0005E\u0000\u0000\u10f4\u0338\u0001"+ + "\u0000\u0000\u0000\u10f5\u10f6\u0005S\u0000\u0000\u10f6\u10f7\u0005H\u0000"+ + "\u0000\u10f7\u10f8\u0005O\u0000\u0000\u10f8\u10f9\u0005W\u0000\u0000\u10f9"+ + "\u033a\u0001\u0000\u0000\u0000\u10fa\u10fb\u0005S\u0000\u0000\u10fb\u10fc"+ + "\u0005I\u0000\u0000\u10fc\u10fd\u0005G\u0000\u0000\u10fd\u10fe\u0005N"+ + "\u0000\u0000\u10fe\u10ff\u0005E\u0000\u0000\u10ff\u1100\u0005D\u0000\u0000"+ + "\u1100\u033c\u0001\u0000\u0000\u0000\u1101\u1102\u0005S\u0000\u0000\u1102"+ + "\u1103\u0005K\u0000\u0000\u1103\u1104\u0005E\u0000\u0000\u1104\u1105\u0005"+ + "W\u0000\u0000\u1105\u033e\u0001\u0000\u0000\u0000\u1106\u1107\u0005S\u0000"+ + "\u0000\u1107\u1108\u0005M\u0000\u0000\u1108\u1109\u0005A\u0000\u0000\u1109"+ + "\u110a\u0005L\u0000\u0000\u110a\u110b\u0005L\u0000\u0000\u110b\u110c\u0005"+ + "I\u0000\u0000\u110c\u110d\u0005N\u0000\u0000\u110d\u110e\u0005T\u0000"+ + "\u0000\u110e\u0340\u0001\u0000\u0000\u0000\u110f\u1110\u0005S\u0000\u0000"+ + "\u1110\u1111\u0005N\u0000\u0000\u1111\u1112\u0005A\u0000\u0000\u1112\u1113"+ + "\u0005P\u0000\u0000\u1113\u1114\u0005S\u0000\u0000\u1114\u1115\u0005H"+ + "\u0000\u0000\u1115\u1116\u0005O\u0000\u0000\u1116\u1117\u0005T\u0000\u0000"+ + "\u1117\u0342\u0001\u0000\u0000\u0000\u1118\u1119\u0005S\u0000\u0000\u1119"+ + "\u111a\u0005O\u0000\u0000\u111a\u111b\u0005N\u0000\u0000\u111b\u111c\u0005"+ + "A\u0000\u0000\u111c\u111d\u0005M\u0000\u0000\u111d\u111e\u0005E\u0000"+ + "\u0000\u111e\u0344\u0001\u0000\u0000\u0000\u111f\u1120\u0005S\u0000\u0000"+ + "\u1120\u1121\u0005P\u0000\u0000\u1121\u1122\u0005L\u0000\u0000\u1122\u1123"+ + "\u0005I\u0000\u0000\u1123\u1124\u0005T\u0000\u0000\u1124\u0346\u0001\u0000"+ + "\u0000\u0000\u1125\u1126\u0005S\u0000\u0000\u1126\u1127\u0005Q\u0000\u0000"+ + "\u1127\u1128\u0005L\u0000\u0000\u1128\u0348\u0001\u0000\u0000\u0000\u1129"+ + "\u112a\u0005S\u0000\u0000\u112a\u112b\u0005Q\u0000\u0000\u112b\u112c\u0005"+ + "L\u0000\u0000\u112c\u112d\u0005_\u0000\u0000\u112d\u112e\u0005B\u0000"+ + "\u0000\u112e\u112f\u0005L\u0000\u0000\u112f\u1130\u0005O\u0000\u0000\u1130"+ + "\u1131\u0005C\u0000\u0000\u1131\u1132\u0005K\u0000\u0000\u1132\u1133\u0005"+ + "_\u0000\u0000\u1133\u1134\u0005R\u0000\u0000\u1134\u1135\u0005U\u0000"+ + "\u0000\u1135\u1136\u0005L\u0000\u0000\u1136\u1137\u0005E\u0000\u0000\u1137"+ + "\u034a\u0001\u0000\u0000\u0000\u1138\u1139\u0005S\u0000\u0000\u1139\u113a"+ + "\u0005T\u0000\u0000\u113a\u113b\u0005A\u0000\u0000\u113b\u113c\u0005G"+ + "\u0000\u0000\u113c\u113d\u0005E\u0000\u0000\u113d\u034c\u0001\u0000\u0000"+ + "\u0000\u113e\u113f\u0005S\u0000\u0000\u113f\u1140\u0005T\u0000\u0000\u1140"+ + "\u1141\u0005A\u0000\u0000\u1141\u1142\u0005G\u0000\u0000\u1142\u1143\u0005"+ + "E\u0000\u0000\u1143\u1144\u0005S\u0000\u0000\u1144\u034e\u0001\u0000\u0000"+ + "\u0000\u1145\u1146\u0005S\u0000\u0000\u1146\u1147\u0005T\u0000\u0000\u1147"+ + "\u1148\u0005A\u0000\u0000\u1148\u1149\u0005R\u0000\u0000\u1149\u114a\u0005"+ + "T\u0000\u0000\u114a\u0350\u0001\u0000\u0000\u0000\u114b\u114c\u0005S\u0000"+ + "\u0000\u114c\u114d\u0005T\u0000\u0000\u114d\u114e\u0005A\u0000\u0000\u114e"+ + "\u114f\u0005R\u0000\u0000\u114f\u1150\u0005T\u0000\u0000\u1150\u1151\u0005"+ + "S\u0000\u0000\u1151\u0352\u0001\u0000\u0000\u0000\u1152\u1153\u0005S\u0000"+ + "\u0000\u1153\u1154\u0005T\u0000\u0000\u1154\u1155\u0005A\u0000\u0000\u1155"+ + "\u1156\u0005T\u0000\u0000\u1156\u1157\u0005S\u0000\u0000\u1157\u0354\u0001"+ + "\u0000\u0000\u0000\u1158\u1159\u0005S\u0000\u0000\u1159\u115a\u0005T\u0000"+ + "\u0000\u115a\u115b\u0005A\u0000\u0000\u115b\u115c\u0005T\u0000\u0000\u115c"+ + "\u115d\u0005U\u0000\u0000\u115d\u115e\u0005S\u0000\u0000\u115e\u0356\u0001"+ + "\u0000\u0000\u0000\u115f\u1160\u0005S\u0000\u0000\u1160\u1161\u0005T\u0000"+ + "\u0000\u1161\u1162\u0005O\u0000\u0000\u1162\u1163\u0005P\u0000\u0000\u1163"+ + "\u0358\u0001\u0000\u0000\u0000\u1164\u1165\u0005S\u0000\u0000\u1165\u1166"+ + "\u0005T\u0000\u0000\u1166\u1167\u0005O\u0000\u0000\u1167\u1168\u0005R"+ + "\u0000\u0000\u1168\u1169\u0005A\u0000\u0000\u1169\u116a\u0005G\u0000\u0000"+ + "\u116a\u116b\u0005E\u0000\u0000\u116b\u035a\u0001\u0000\u0000\u0000\u116c"+ + "\u116d\u0005S\u0000\u0000\u116d\u116e\u0005T\u0000\u0000\u116e\u116f\u0005"+ + "R\u0000\u0000\u116f\u1170\u0005E\u0000\u0000\u1170\u1171\u0005A\u0000"+ + "\u0000\u1171\u1172\u0005M\u0000\u0000\u1172\u035c\u0001\u0000\u0000\u0000"+ + "\u1173\u1174\u0005S\u0000\u0000\u1174\u1175\u0005T\u0000\u0000\u1175\u1176"+ + "\u0005R\u0000\u0000\u1176\u1177\u0005E\u0000\u0000\u1177\u1178\u0005A"+ + "\u0000\u0000\u1178\u1179\u0005M\u0000\u0000\u1179\u117a\u0005I\u0000\u0000"+ + "\u117a\u117b\u0005N\u0000\u0000\u117b\u117c\u0005G\u0000\u0000\u117c\u035e"+ + "\u0001\u0000\u0000\u0000\u117d\u117e\u0005S\u0000\u0000\u117e\u117f\u0005"+ + "T\u0000\u0000\u117f\u1180\u0005R\u0000\u0000\u1180\u1181\u0005I\u0000"+ + "\u0000\u1181\u1182\u0005N\u0000\u0000\u1182\u1183\u0005G\u0000\u0000\u1183"+ + "\u0360\u0001\u0000\u0000\u0000\u1184\u1185\u0005S\u0000\u0000\u1185\u1186"+ + "\u0005T\u0000\u0000\u1186\u1187\u0005R\u0000\u0000\u1187\u1188\u0005U"+ + "\u0000\u0000\u1188\u1189\u0005C\u0000\u0000\u1189\u118a\u0005T\u0000\u0000"+ + "\u118a\u0362\u0001\u0000\u0000\u0000\u118b\u118c\u0005S\u0000\u0000\u118c"+ + "\u118d\u0005U\u0000\u0000\u118d\u118e\u0005M\u0000\u0000\u118e\u0364\u0001"+ + "\u0000\u0000\u0000\u118f\u1190\u0005S\u0000\u0000\u1190\u1191\u0005U\u0000"+ + "\u0000\u1191\u1192\u0005P\u0000\u0000\u1192\u1193\u0005E\u0000\u0000\u1193"+ + "\u1194\u0005R\u0000\u0000\u1194\u1195\u0005U\u0000\u0000\u1195\u1196\u0005"+ + "S\u0000\u0000\u1196\u1197\u0005E\u0000\u0000\u1197\u1198\u0005R\u0000"+ + "\u0000\u1198\u0366\u0001\u0000\u0000\u0000\u1199\u119a\u0005S\u0000\u0000"+ + "\u119a\u119b\u0005W\u0000\u0000\u119b\u119c\u0005I\u0000\u0000\u119c\u119d"+ + "\u0005T\u0000\u0000\u119d\u119e\u0005C\u0000\u0000\u119e\u119f\u0005H"+ + "\u0000\u0000\u119f\u0368\u0001\u0000\u0000\u0000\u11a0\u11a1\u0005S\u0000"+ + "\u0000\u11a1\u11a2\u0005Y\u0000\u0000\u11a2\u11a3\u0005N\u0000\u0000\u11a3"+ + "\u11a4\u0005C\u0000\u0000\u11a4\u036a\u0001\u0000\u0000\u0000\u11a5\u11a6"+ + "\u0005S\u0000\u0000\u11a6\u11a7\u0005Y\u0000\u0000\u11a7\u11a8\u0005S"+ + "\u0000\u0000\u11a8\u11a9\u0005T\u0000\u0000\u11a9\u11aa\u0005E\u0000\u0000"+ + "\u11aa\u11ab\u0005M\u0000\u0000\u11ab\u036c\u0001\u0000\u0000\u0000\u11ac"+ + "\u11ad\u0005T\u0000\u0000\u11ad\u11ae\u0005A\u0000\u0000\u11ae\u11af\u0005"+ + "B\u0000\u0000\u11af\u11b0\u0005L\u0000\u0000\u11b0\u11b1\u0005E\u0000"+ + "\u0000\u11b1\u036e\u0001\u0000\u0000\u0000\u11b2\u11b3\u0005T\u0000\u0000"+ + "\u11b3\u11b4\u0005A\u0000\u0000\u11b4\u11b5\u0005B\u0000\u0000\u11b5\u11b6"+ + "\u0005L\u0000\u0000\u11b6\u11b7\u0005E\u0000\u0000\u11b7\u11b8\u0005S"+ + "\u0000\u0000\u11b8\u0370\u0001\u0000\u0000\u0000\u11b9\u11ba\u0005T\u0000"+ + "\u0000\u11ba\u11bb\u0005A\u0000\u0000\u11bb\u11bc\u0005B\u0000\u0000\u11bc"+ + "\u11bd\u0005L\u0000\u0000\u11bd\u11be\u0005E\u0000\u0000\u11be\u11bf\u0005"+ + "S\u0000\u0000\u11bf\u11c0\u0005A\u0000\u0000\u11c0\u11c1\u0005M\u0000"+ + "\u0000\u11c1\u11c2\u0005P\u0000\u0000\u11c2\u11c3\u0005L\u0000\u0000\u11c3"+ + "\u11c4\u0005E\u0000\u0000\u11c4\u0372\u0001\u0000\u0000\u0000\u11c5\u11c6"+ + "\u0005T\u0000\u0000\u11c6\u11c7\u0005A\u0000\u0000\u11c7\u11c8\u0005B"+ + "\u0000\u0000\u11c8\u11c9\u0005L\u0000\u0000\u11c9\u11ca\u0005E\u0000\u0000"+ + "\u11ca\u11cb\u0005T\u0000\u0000\u11cb\u0374\u0001\u0000\u0000\u0000\u11cc"+ + "\u11cd\u0005T\u0000\u0000\u11cd\u11ce\u0005A\u0000\u0000\u11ce\u11cf\u0005"+ + "B\u0000\u0000\u11cf\u11d0\u0005L\u0000\u0000\u11d0\u11d1\u0005E\u0000"+ + "\u0000\u11d1\u11d2\u0005T\u0000\u0000\u11d2\u11d3\u0005S\u0000\u0000\u11d3"+ + "\u0376\u0001\u0000\u0000\u0000\u11d4\u11d5\u0005T\u0000\u0000\u11d5\u11d6"+ + "\u0005A\u0000\u0000\u11d6\u11d7\u0005S\u0000\u0000\u11d7\u11d8\u0005K"+ + "\u0000\u0000\u11d8\u0378\u0001\u0000\u0000\u0000\u11d9\u11da\u0005T\u0000"+ + "\u0000\u11da\u11db\u0005A\u0000\u0000\u11db\u11dc\u0005S\u0000\u0000\u11dc"+ + "\u11dd\u0005K\u0000\u0000\u11dd\u11de\u0005S\u0000\u0000\u11de\u037a\u0001"+ + "\u0000\u0000\u0000\u11df\u11e0\u0005T\u0000\u0000\u11e0\u11e1\u0005E\u0000"+ + "\u0000\u11e1\u11e2\u0005M\u0000\u0000\u11e2\u11e3\u0005P\u0000\u0000\u11e3"+ + "\u11e4\u0005O\u0000\u0000\u11e4\u11e5\u0005R\u0000\u0000\u11e5\u11e6\u0005"+ + "A\u0000\u0000\u11e6\u11e7\u0005R\u0000\u0000\u11e7\u11e8\u0005Y\u0000"+ + "\u0000\u11e8\u037c\u0001\u0000\u0000\u0000\u11e9\u11ea\u0005T\u0000\u0000"+ + "\u11ea\u11eb\u0005E\u0000\u0000\u11eb\u11ec\u0005R\u0000\u0000\u11ec\u11ed"+ + "\u0005M\u0000\u0000\u11ed\u11ee\u0005I\u0000\u0000\u11ee\u11ef\u0005N"+ + "\u0000\u0000\u11ef\u11f0\u0005A\u0000\u0000\u11f0\u11f1\u0005T\u0000\u0000"+ + "\u11f1\u11f2\u0005E\u0000\u0000\u11f2\u11f3\u0005D\u0000\u0000\u11f3\u037e"+ + "\u0001\u0000\u0000\u0000\u11f4\u11f5\u0005T\u0000\u0000\u11f5\u11f6\u0005"+ + "E\u0000\u0000\u11f6\u11f7\u0005X\u0000\u0000\u11f7\u11f8\u0005T\u0000"+ + "\u0000\u11f8\u0380\u0001\u0000\u0000\u0000\u11f9\u11fa\u0005T\u0000\u0000"+ + "\u11fa\u11fb\u0005H\u0000\u0000\u11fb\u11fc\u0005A\u0000\u0000\u11fc\u11fd"+ + "\u0005N\u0000\u0000\u11fd\u0382\u0001\u0000\u0000\u0000\u11fe\u11ff\u0005"+ + "T\u0000\u0000\u11ff\u1200\u0005H\u0000\u0000\u1200\u1201\u0005E\u0000"+ + "\u0000\u1201\u1202\u0005N\u0000\u0000\u1202\u0384\u0001\u0000\u0000\u0000"+ + "\u1203\u1204\u0005T\u0000\u0000\u1204\u1205\u0005I\u0000\u0000\u1205\u1206"+ + "\u0005M\u0000\u0000\u1206\u1207\u0005E\u0000\u0000\u1207\u0386\u0001\u0000"+ + "\u0000\u0000\u1208\u1209\u0005T\u0000\u0000\u1209\u120a\u0005I\u0000\u0000"+ + "\u120a\u120b\u0005M\u0000\u0000\u120b\u120c\u0005E\u0000\u0000\u120c\u120d"+ + "\u0005S\u0000\u0000\u120d\u120e\u0005T\u0000\u0000\u120e\u120f\u0005A"+ + "\u0000\u0000\u120f\u1210\u0005M\u0000\u0000\u1210\u1211\u0005P\u0000\u0000"+ + "\u1211\u0388\u0001\u0000\u0000\u0000\u1212\u1213\u0005T\u0000\u0000\u1213"+ + "\u1214\u0005I\u0000\u0000\u1214\u1215\u0005N\u0000\u0000\u1215\u1216\u0005"+ + "Y\u0000\u0000\u1216\u1217\u0005I\u0000\u0000\u1217\u1218\u0005N\u0000"+ + "\u0000\u1218\u1219\u0005T\u0000\u0000\u1219\u038a\u0001\u0000\u0000\u0000"+ + "\u121a\u121b\u0005T\u0000\u0000\u121b\u121c\u0005O\u0000\u0000\u121c\u038c"+ + "\u0001\u0000\u0000\u0000\u121d\u121e\u0005T\u0000\u0000\u121e\u121f\u0005"+ + "R\u0000\u0000\u121f\u1220\u0005A\u0000\u0000\u1220\u1221\u0005N\u0000"+ + "\u0000\u1221\u1222\u0005S\u0000\u0000\u1222\u1223\u0005A\u0000\u0000\u1223"+ + "\u1224\u0005C\u0000\u0000\u1224\u1225\u0005T\u0000\u0000\u1225\u1226\u0005"+ + "I\u0000\u0000\u1226\u1227\u0005O\u0000\u0000\u1227\u1228\u0005N\u0000"+ + "\u0000\u1228\u038e\u0001\u0000\u0000\u0000\u1229\u122a\u0005T\u0000\u0000"+ + "\u122a\u122b\u0005R\u0000\u0000\u122b\u122c\u0005A\u0000\u0000\u122c\u122d"+ + "\u0005S\u0000\u0000\u122d\u122e\u0005H\u0000\u0000\u122e\u0390\u0001\u0000"+ + "\u0000\u0000\u122f\u1230\u0005T\u0000\u0000\u1230\u1231\u0005R\u0000\u0000"+ + "\u1231\u1232\u0005E\u0000\u0000\u1232\u1233\u0005E\u0000\u0000\u1233\u0392"+ + "\u0001\u0000\u0000\u0000\u1234\u1235\u0005T\u0000\u0000\u1235\u1236\u0005"+ + "R\u0000\u0000\u1236\u1237\u0005I\u0000\u0000\u1237\u1238\u0005G\u0000"+ + "\u0000\u1238\u1239\u0005G\u0000\u0000\u1239\u123a\u0005E\u0000\u0000\u123a"+ + "\u123b\u0005R\u0000\u0000\u123b\u123c\u0005S\u0000\u0000\u123c\u0394\u0001"+ + "\u0000\u0000\u0000\u123d\u123e\u0005T\u0000\u0000\u123e\u123f\u0005R\u0000"+ + "\u0000\u123f\u1240\u0005I\u0000\u0000\u1240\u1241\u0005M\u0000\u0000\u1241"+ + "\u0396\u0001\u0000\u0000\u0000\u1242\u1243\u0005T\u0000\u0000\u1243\u1244"+ + "\u0005R\u0000\u0000\u1244\u1245\u0005U\u0000\u0000\u1245\u1246\u0005E"+ + "\u0000\u0000\u1246\u0398\u0001\u0000\u0000\u0000\u1247\u1248\u0005T\u0000"+ + "\u0000\u1248\u1249\u0005R\u0000\u0000\u1249\u124a\u0005U\u0000\u0000\u124a"+ + "\u124b\u0005N\u0000\u0000\u124b\u124c\u0005C\u0000\u0000\u124c\u124d\u0005"+ + "A\u0000\u0000\u124d\u124e\u0005T\u0000\u0000\u124e\u124f\u0005E\u0000"+ + "\u0000\u124f\u039a\u0001\u0000\u0000\u0000\u1250\u1251\u0005T\u0000\u0000"+ + "\u1251\u1252\u0005Y\u0000\u0000\u1252\u1253\u0005P\u0000\u0000\u1253\u1254"+ + "\u0005E\u0000\u0000\u1254\u039c\u0001\u0000\u0000\u0000\u1255\u1256\u0005"+ + "T\u0000\u0000\u1256\u1257\u0005Y\u0000\u0000\u1257\u1258\u0005P\u0000"+ + "\u0000\u1258\u1259\u0005E\u0000\u0000\u1259\u125a\u0005_\u0000\u0000\u125a"+ + "\u125b\u0005C\u0000\u0000\u125b\u125c\u0005A\u0000\u0000\u125c\u125d\u0005"+ + "S\u0000\u0000\u125d\u125e\u0005T\u0000\u0000\u125e\u039e\u0001\u0000\u0000"+ + "\u0000\u125f\u1260\u0005T\u0000\u0000\u1260\u1261\u0005Y\u0000\u0000\u1261"+ + "\u1262\u0005P\u0000\u0000\u1262\u1263\u0005E\u0000\u0000\u1263\u1264\u0005"+ + "S\u0000\u0000\u1264\u03a0\u0001\u0000\u0000\u0000\u1265\u1266\u0005U\u0000"+ + "\u0000\u1266\u1267\u0005N\u0000\u0000\u1267\u1268\u0005B\u0000\u0000\u1268"+ + "\u1269\u0005O\u0000\u0000\u1269\u126a\u0005U\u0000\u0000\u126a\u126b\u0005"+ + "N\u0000\u0000\u126b\u126c\u0005D\u0000\u0000\u126c\u126d\u0005E\u0000"+ + "\u0000\u126d\u126e\u0005D\u0000\u0000\u126e\u03a2\u0001\u0000\u0000\u0000"+ + "\u126f\u1270\u0005U\u0000\u0000\u1270\u1271\u0005N\u0000\u0000\u1271\u1272"+ + "\u0005C\u0000\u0000\u1272\u1273\u0005O\u0000\u0000\u1273\u1274\u0005M"+ + "\u0000\u0000\u1274\u1275\u0005M\u0000\u0000\u1275\u1276\u0005I\u0000\u0000"+ + "\u1276\u1277\u0005T\u0000\u0000\u1277\u1278\u0005T\u0000\u0000\u1278\u1279"+ + "\u0005E\u0000\u0000\u1279\u127a\u0005D\u0000\u0000\u127a\u03a4\u0001\u0000"+ + "\u0000\u0000\u127b\u127c\u0005U\u0000\u0000\u127c\u127d\u0005N\u0000\u0000"+ + "\u127d\u127e\u0005I\u0000\u0000\u127e\u127f\u0005N\u0000\u0000\u127f\u1280"+ + "\u0005S\u0000\u0000\u1280\u1281\u0005T\u0000\u0000\u1281\u1282\u0005A"+ + "\u0000\u0000\u1282\u1283\u0005L\u0000\u0000\u1283\u1284\u0005L\u0000\u0000"+ + "\u1284\u03a6\u0001\u0000\u0000\u0000\u1285\u1286\u0005U\u0000\u0000\u1286"+ + "\u1287\u0005N\u0000\u0000\u1287\u1288\u0005I\u0000\u0000\u1288\u1289\u0005"+ + "O\u0000\u0000\u1289\u128a\u0005N\u0000\u0000\u128a\u03a8\u0001\u0000\u0000"+ + "\u0000\u128b\u128c\u0005U\u0000\u0000\u128c\u128d\u0005N\u0000\u0000\u128d"+ + "\u128e\u0005I\u0000\u0000\u128e\u128f\u0005Q\u0000\u0000\u128f\u1290\u0005"+ + "U\u0000\u0000\u1290\u1291\u0005E\u0000\u0000\u1291\u03aa\u0001\u0000\u0000"+ + "\u0000\u1292\u1293\u0005U\u0000\u0000\u1293\u1294\u0005N\u0000\u0000\u1294"+ + "\u1295\u0005L\u0000\u0000\u1295\u1296\u0005O\u0000\u0000\u1296\u1297\u0005"+ + "C\u0000\u0000\u1297\u1298\u0005K\u0000\u0000\u1298\u03ac\u0001\u0000\u0000"+ + "\u0000\u1299\u129a\u0005U\u0000\u0000\u129a\u129b\u0005N\u0000\u0000\u129b"+ + "\u129c\u0005S\u0000\u0000\u129c\u129d\u0005E\u0000\u0000\u129d\u129e\u0005"+ + "T\u0000\u0000\u129e\u03ae\u0001\u0000\u0000\u0000\u129f\u12a0\u0005U\u0000"+ + "\u0000\u12a0\u12a1\u0005N\u0000\u0000\u12a1\u12a2\u0005S\u0000\u0000\u12a2"+ + "\u12a3\u0005I\u0000\u0000\u12a3\u12a4\u0005G\u0000\u0000\u12a4\u12a5\u0005"+ + "N\u0000\u0000\u12a5\u12a6\u0005E\u0000\u0000\u12a6\u12a7\u0005D\u0000"+ + "\u0000\u12a7\u03b0\u0001\u0000\u0000\u0000\u12a8\u12a9\u0005U\u0000\u0000"+ + "\u12a9\u12aa\u0005P\u0000\u0000\u12aa\u03b2\u0001\u0000\u0000\u0000\u12ab"+ + "\u12ac\u0005U\u0000\u0000\u12ac\u12ad\u0005P\u0000\u0000\u12ad\u12ae\u0005"+ + "D\u0000\u0000\u12ae\u12af\u0005A\u0000\u0000\u12af\u12b0\u0005T\u0000"+ + "\u0000\u12b0\u12b1\u0005E\u0000\u0000\u12b1\u03b4\u0001\u0000\u0000\u0000"+ + "\u12b2\u12b3\u0005U\u0000\u0000\u12b3\u12b4\u0005S\u0000\u0000\u12b4\u12b5"+ + "\u0005E\u0000\u0000\u12b5\u03b6\u0001\u0000\u0000\u0000\u12b6\u12b7\u0005"+ + "U\u0000\u0000\u12b7\u12b8\u0005S\u0000\u0000\u12b8\u12b9\u0005E\u0000"+ + "\u0000\u12b9\u12ba\u0005R\u0000\u0000\u12ba\u03b8\u0001\u0000\u0000\u0000"+ + "\u12bb\u12bc\u0005U\u0000\u0000\u12bc\u12bd\u0005S\u0000\u0000\u12bd\u12be"+ + "\u0005E\u0000\u0000\u12be\u12bf\u0005_\u0000\u0000\u12bf\u12c0\u0005M"+ + "\u0000\u0000\u12c0\u12c1\u0005V\u0000\u0000\u12c1\u03ba\u0001\u0000\u0000"+ + "\u0000\u12c2\u12c3\u0005U\u0000\u0000\u12c3\u12c4\u0005S\u0000\u0000\u12c4"+ + "\u12c5\u0005I\u0000\u0000\u12c5\u12c6\u0005N\u0000\u0000\u12c6\u12c7\u0005"+ + "G\u0000\u0000\u12c7\u03bc\u0001\u0000\u0000\u0000\u12c8\u12c9\u0005V\u0000"+ + "\u0000\u12c9\u12ca\u0005A\u0000\u0000\u12ca\u12cb\u0005L\u0000\u0000\u12cb"+ + "\u12cc\u0005U\u0000\u0000\u12cc\u12cd\u0005E\u0000\u0000\u12cd\u03be\u0001"+ + "\u0000\u0000\u0000\u12ce\u12cf\u0005V\u0000\u0000\u12cf\u12d0\u0005A\u0000"+ + "\u0000\u12d0\u12d1\u0005L\u0000\u0000\u12d1\u12d2\u0005U\u0000\u0000\u12d2"+ + "\u12d3\u0005E\u0000\u0000\u12d3\u12d4\u0005S\u0000\u0000\u12d4\u03c0\u0001"+ + "\u0000\u0000\u0000\u12d5\u12d6\u0005V\u0000\u0000\u12d6\u12d7\u0005A\u0000"+ + "\u0000\u12d7\u12d8\u0005R\u0000\u0000\u12d8\u12d9\u0005C\u0000\u0000\u12d9"+ + "\u12da\u0005H\u0000\u0000\u12da\u12db\u0005A\u0000\u0000\u12db\u12dc\u0005"+ + "R\u0000\u0000\u12dc\u03c2\u0001\u0000\u0000\u0000\u12dd\u12de\u0005V\u0000"+ + "\u0000\u12de\u12df\u0005A\u0000\u0000\u12df\u12e0\u0005R\u0000\u0000\u12e0"+ + "\u12e1\u0005I\u0000\u0000\u12e1\u12e2\u0005A\u0000\u0000\u12e2\u12e3\u0005"+ + "B\u0000\u0000\u12e3\u12e4\u0005L\u0000\u0000\u12e4\u12e5\u0005E\u0000"+ + "\u0000\u12e5\u03c4\u0001\u0000\u0000\u0000\u12e6\u12e7\u0005V\u0000\u0000"+ + "\u12e7\u12e8\u0005A\u0000\u0000\u12e8\u12e9\u0005R\u0000\u0000\u12e9\u12ea"+ + "\u0005I\u0000\u0000\u12ea\u12eb\u0005A\u0000\u0000\u12eb\u12ec\u0005B"+ + "\u0000\u0000\u12ec\u12ed\u0005L\u0000\u0000\u12ed\u12ee\u0005E\u0000\u0000"+ + "\u12ee\u12ef\u0005S\u0000\u0000\u12ef\u03c6\u0001\u0000\u0000\u0000\u12f0"+ + "\u12f1\u0005V\u0000\u0000\u12f1\u12f2\u0005A\u0000\u0000\u12f2\u12f3\u0005"+ + "R\u0000\u0000\u12f3\u12f4\u0005I\u0000\u0000\u12f4\u12f5\u0005A\u0000"+ + "\u0000\u12f5\u12f6\u0005N\u0000\u0000\u12f6\u12f7\u0005T\u0000\u0000\u12f7"+ + "\u03c8\u0001\u0000\u0000\u0000\u12f8\u12f9\u0005V\u0000\u0000\u12f9\u12fa"+ + "\u0005A\u0000\u0000\u12fa\u12fb\u0005U\u0000\u0000\u12fb\u12fc\u0005L"+ + "\u0000\u0000\u12fc\u12fd\u0005T\u0000\u0000\u12fd\u03ca\u0001\u0000\u0000"+ + "\u0000\u12fe\u12ff\u0005V\u0000\u0000\u12ff\u1300\u0005A\u0000\u0000\u1300"+ + "\u1301\u0005U\u0000\u0000\u1301\u1302\u0005L\u0000\u0000\u1302\u1303\u0005"+ + "T\u0000\u0000\u1303\u1304\u0005S\u0000\u0000\u1304\u03cc\u0001\u0000\u0000"+ + "\u0000\u1305\u1306\u0005V\u0000\u0000\u1306\u1307\u0005E\u0000\u0000\u1307"+ + "\u1308\u0005R\u0000\u0000\u1308\u1309\u0005B\u0000\u0000\u1309\u130a\u0005"+ + "O\u0000\u0000\u130a\u130b\u0005S\u0000\u0000\u130b\u130c\u0005E\u0000"+ + "\u0000\u130c\u03ce\u0001\u0000\u0000\u0000\u130d\u130e\u0005V\u0000\u0000"+ + "\u130e\u130f\u0005E\u0000\u0000\u130f\u1310\u0005R\u0000\u0000\u1310\u1311"+ + "\u0005S\u0000\u0000\u1311\u1312\u0005I\u0000\u0000\u1312\u1313\u0005O"+ + "\u0000\u0000\u1313\u1314\u0005N\u0000\u0000\u1314\u03d0\u0001\u0000\u0000"+ + "\u0000\u1315\u1316\u0005V\u0000\u0000\u1316\u1317\u0005I\u0000\u0000\u1317"+ + "\u1318\u0005E\u0000\u0000\u1318\u1319\u0005W\u0000\u0000\u1319\u03d2\u0001"+ + "\u0000\u0000\u0000\u131a\u131b\u0005V\u0000\u0000\u131b\u131c\u0005I\u0000"+ + "\u0000\u131c\u131d\u0005E\u0000\u0000\u131d\u131e\u0005W\u0000\u0000\u131e"+ + "\u131f\u0005S\u0000\u0000\u131f\u03d4\u0001\u0000\u0000\u0000\u1320\u1321"+ + "\u0005W\u0000\u0000\u1321\u1322\u0005A\u0000\u0000\u1322\u1323\u0005R"+ + "\u0000\u0000\u1323\u1324\u0005M\u0000\u0000\u1324\u03d6\u0001\u0000\u0000"+ + "\u0000\u1325\u1326\u0005W\u0000\u0000\u1326\u1327\u0005A\u0000\u0000\u1327"+ + "\u1328\u0005R\u0000\u0000\u1328\u1329\u0005N\u0000\u0000\u1329\u132a\u0005"+ + "I\u0000\u0000\u132a\u132b\u0005N\u0000\u0000\u132b\u132c\u0005G\u0000"+ + "\u0000\u132c\u132d\u0005S\u0000\u0000\u132d\u03d8\u0001\u0000\u0000\u0000"+ + "\u132e\u132f\u0005W\u0000\u0000\u132f\u1330\u0005E\u0000\u0000\u1330\u1331"+ + "\u0005E\u0000\u0000\u1331\u1332\u0005K\u0000\u0000\u1332\u03da\u0001\u0000"+ + "\u0000\u0000\u1333\u1334\u0005W\u0000\u0000\u1334\u1335\u0005H\u0000\u0000"+ + "\u1335\u1336\u0005E\u0000\u0000\u1336\u1337\u0005N\u0000\u0000\u1337\u03dc"+ + "\u0001\u0000\u0000\u0000\u1338\u1339\u0005W\u0000\u0000\u1339\u133a\u0005"+ + "H\u0000\u0000\u133a\u133b\u0005E\u0000\u0000\u133b\u133c\u0005R\u0000"+ + "\u0000\u133c\u133d\u0005E\u0000\u0000\u133d\u03de\u0001\u0000\u0000\u0000"+ + "\u133e\u133f\u0005W\u0000\u0000\u133f\u1340\u0005H\u0000\u0000\u1340\u1341"+ + "\u0005I\u0000\u0000\u1341\u1342\u0005T\u0000\u0000\u1342\u1343\u0005E"+ + "\u0000\u0000\u1343\u1344\u0005L\u0000\u0000\u1344\u1345\u0005I\u0000\u0000"+ + "\u1345\u1346\u0005S\u0000\u0000\u1346\u1347\u0005T\u0000\u0000\u1347\u03e0"+ + "\u0001\u0000\u0000\u0000\u1348\u1349\u0005W\u0000\u0000\u1349\u134a\u0005"+ + "I\u0000\u0000\u134a\u134b\u0005T\u0000\u0000\u134b\u134c\u0005H\u0000"+ + "\u0000\u134c\u03e2\u0001\u0000\u0000\u0000\u134d\u134e\u0005W\u0000\u0000"+ + "\u134e\u134f\u0005O\u0000\u0000\u134f\u1350\u0005R\u0000\u0000\u1350\u1351"+ + "\u0005K\u0000\u0000\u1351\u03e4\u0001\u0000\u0000\u0000\u1352\u1353\u0005"+ + "W\u0000\u0000\u1353\u1354\u0005O\u0000\u0000\u1354\u1355\u0005R\u0000"+ + "\u0000\u1355\u1356\u0005K\u0000\u0000\u1356\u1357\u0005L\u0000\u0000\u1357"+ + "\u1358\u0005O\u0000\u0000\u1358\u1359\u0005A\u0000\u0000\u1359\u135a\u0005"+ + "D\u0000\u0000\u135a\u03e6\u0001\u0000\u0000\u0000\u135b\u135c\u0005W\u0000"+ + "\u0000\u135c\u135d\u0005R\u0000\u0000\u135d\u135e\u0005I\u0000\u0000\u135e"+ + "\u135f\u0005T\u0000\u0000\u135f\u1360\u0005E\u0000\u0000\u1360\u03e8\u0001"+ + "\u0000\u0000\u0000\u1361\u1362\u0005X\u0000\u0000\u1362\u1363\u0005O\u0000"+ + "\u0000\u1363\u1364\u0005R\u0000\u0000\u1364\u03ea\u0001\u0000\u0000\u0000"+ + "\u1365\u1366\u0005Y\u0000\u0000\u1366\u1367\u0005E\u0000\u0000\u1367\u1368"+ + "\u0005A\u0000\u0000\u1368\u1369\u0005R\u0000\u0000\u1369\u03ec\u0001\u0000"+ + "\u0000\u0000\u136a\u136e\u0005=\u0000\u0000\u136b\u136c\u0005=\u0000\u0000"+ + "\u136c\u136e\u0005=\u0000\u0000\u136d\u136a\u0001\u0000\u0000\u0000\u136d"+ + "\u136b\u0001\u0000\u0000\u0000\u136e\u03ee\u0001\u0000\u0000\u0000\u136f"+ + "\u1370\u0005<\u0000\u0000\u1370\u1371\u0005=\u0000\u0000\u1371\u1372\u0005"+ + ">\u0000\u0000\u1372\u03f0\u0001\u0000\u0000\u0000\u1373\u1374\u0005<\u0000"+ + "\u0000\u1374\u1378\u0005>\u0000\u0000\u1375\u1376\u0005!\u0000\u0000\u1376"+ + "\u1378\u0005=\u0000\u0000\u1377\u1373\u0001\u0000\u0000\u0000\u1377\u1375"+ + "\u0001\u0000\u0000\u0000\u1378\u03f2\u0001\u0000\u0000\u0000\u1379\u137a"+ + "\u0005<\u0000\u0000\u137a\u03f4\u0001\u0000\u0000\u0000\u137b\u137c\u0005"+ + "<\u0000\u0000\u137c\u1380\u0005=\u0000\u0000\u137d\u137e\u0005!\u0000"+ + "\u0000\u137e\u1380\u0005>\u0000\u0000\u137f\u137b\u0001\u0000\u0000\u0000"+ + "\u137f\u137d\u0001\u0000\u0000\u0000\u1380\u03f6\u0001\u0000\u0000\u0000"+ + "\u1381\u1382\u0005>\u0000\u0000\u1382\u03f8\u0001\u0000\u0000\u0000\u1383"+ + "\u1384\u0005>\u0000\u0000\u1384\u1388\u0005=\u0000\u0000\u1385\u1386\u0005"+ + "!\u0000\u0000\u1386\u1388\u0005<\u0000\u0000\u1387\u1383\u0001\u0000\u0000"+ + "\u0000\u1387\u1385\u0001\u0000\u0000\u0000\u1388\u03fa\u0001\u0000\u0000"+ + "\u0000\u1389\u138a\u0005+\u0000\u0000\u138a\u03fc\u0001\u0000\u0000\u0000"+ + "\u138b\u138c\u0005-\u0000\u0000\u138c\u03fe\u0001\u0000\u0000\u0000\u138d"+ + "\u138e\u0005*\u0000\u0000\u138e\u0400\u0001\u0000\u0000\u0000\u138f\u1390"+ + "\u0005/\u0000\u0000\u1390\u0402\u0001\u0000\u0000\u0000\u1391\u1392\u0005"+ + "%\u0000\u0000\u1392\u0404\u0001\u0000\u0000\u0000\u1393\u1394\u0005~\u0000"+ + "\u0000\u1394\u0406\u0001\u0000\u0000\u0000\u1395\u1396\u0005&\u0000\u0000"+ + "\u1396\u0408\u0001\u0000\u0000\u0000\u1397\u1398\u0005&\u0000\u0000\u1398"+ + "\u1399\u0005&\u0000\u0000\u1399\u040a\u0001\u0000\u0000\u0000\u139a\u139b"+ + "\u0005!\u0000\u0000\u139b\u040c\u0001\u0000\u0000\u0000\u139c\u139d\u0005"+ + "|\u0000\u0000\u139d\u040e\u0001\u0000\u0000\u0000\u139e\u139f\u0005|\u0000"+ + "\u0000\u139f\u13a0\u0005|\u0000\u0000\u13a0\u0410\u0001\u0000\u0000\u0000"+ + "\u13a1\u13a2\u0005^\u0000\u0000\u13a2\u0412\u0001\u0000\u0000\u0000\u13a3"+ + "\u13a4\u0005:\u0000\u0000\u13a4\u0414\u0001\u0000\u0000\u0000\u13a5\u13a6"+ + "\u0005-\u0000\u0000\u13a6\u13a7\u0005>\u0000\u0000\u13a7\u0416\u0001\u0000"+ + "\u0000\u0000\u13a8\u13a9\u0005/\u0000\u0000\u13a9\u13aa\u0005*\u0000\u0000"+ + "\u13aa\u13ab\u0005+\u0000\u0000\u13ab\u0418\u0001\u0000\u0000\u0000\u13ac"+ + "\u13ad\u0005*\u0000\u0000\u13ad\u13ae\u0005/\u0000\u0000\u13ae\u041a\u0001"+ + "\u0000\u0000\u0000\u13af\u13b0\u0005/\u0000\u0000\u13b0\u13b1\u0005*\u0000"+ + "\u0000\u13b1\u041c\u0001\u0000\u0000\u0000\u13b2\u13b3\u0005@\u0000\u0000"+ + "\u13b3\u041e\u0001\u0000\u0000\u0000\u13b4\u13b5\u0005@\u0000\u0000\u13b5"+ + "\u13b6\u0005@\u0000\u0000\u13b6\u0420\u0001\u0000\u0000\u0000\u13b7\u13bf"+ + "\u0005\'\u0000\u0000\u13b8\u13b9\u0005\\\u0000\u0000\u13b9\u13be\t\u0000"+ + "\u0000\u0000\u13ba\u13bb\u0005\'\u0000\u0000\u13bb\u13be\u0005\'\u0000"+ + "\u0000\u13bc\u13be\b\u0000\u0000\u0000\u13bd\u13b8\u0001\u0000\u0000\u0000"+ + "\u13bd\u13ba\u0001\u0000\u0000\u0000\u13bd\u13bc\u0001\u0000\u0000\u0000"+ + "\u13be\u13c1\u0001\u0000\u0000\u0000\u13bf\u13bd\u0001\u0000\u0000\u0000"+ + "\u13bf\u13c0\u0001\u0000\u0000\u0000\u13c0\u13c2\u0001\u0000\u0000\u0000"+ + "\u13c1\u13bf\u0001\u0000\u0000\u0000\u13c2\u13e4\u0005\'\u0000\u0000\u13c3"+ + "\u13cb\u0005\"\u0000\u0000\u13c4\u13c5\u0005\\\u0000\u0000\u13c5\u13ca"+ + "\t\u0000\u0000\u0000\u13c6\u13c7\u0005\"\u0000\u0000\u13c7\u13ca\u0005"+ + "\"\u0000\u0000\u13c8\u13ca\b\u0001\u0000\u0000\u13c9\u13c4\u0001\u0000"+ + "\u0000\u0000\u13c9\u13c6\u0001\u0000\u0000\u0000\u13c9\u13c8\u0001\u0000"+ + "\u0000\u0000\u13ca\u13cd\u0001\u0000\u0000\u0000\u13cb\u13c9\u0001\u0000"+ + "\u0000\u0000\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13ce\u0001\u0000"+ + "\u0000\u0000\u13cd\u13cb\u0001\u0000\u0000\u0000\u13ce\u13e4\u0005\"\u0000"+ + "\u0000\u13cf\u13d0\u0005R\u0000\u0000\u13d0\u13d1\u0005\'\u0000\u0000"+ + "\u13d1\u13d5\u0001\u0000\u0000\u0000\u13d2\u13d4\b\u0002\u0000\u0000\u13d3"+ + "\u13d2\u0001\u0000\u0000\u0000\u13d4\u13d7\u0001\u0000\u0000\u0000\u13d5"+ + "\u13d3\u0001\u0000\u0000\u0000\u13d5\u13d6\u0001\u0000\u0000\u0000\u13d6"+ + "\u13d8\u0001\u0000\u0000\u0000\u13d7\u13d5\u0001\u0000\u0000\u0000\u13d8"+ + "\u13e4\u0005\'\u0000\u0000\u13d9\u13da\u0005R\u0000\u0000\u13da\u13db"+ + "\u0005\"\u0000\u0000\u13db\u13df\u0001\u0000\u0000\u0000\u13dc\u13de\b"+ + "\u0003\u0000\u0000\u13dd\u13dc\u0001\u0000\u0000\u0000\u13de\u13e1\u0001"+ + "\u0000\u0000\u0000\u13df\u13dd\u0001\u0000\u0000\u0000\u13df\u13e0\u0001"+ + "\u0000\u0000\u0000\u13e0\u13e2\u0001\u0000\u0000\u0000\u13e1\u13df\u0001"+ + "\u0000\u0000\u0000\u13e2\u13e4\u0005\"\u0000\u0000\u13e3\u13b7\u0001\u0000"+ + "\u0000\u0000\u13e3\u13c3\u0001\u0000\u0000\u0000\u13e3\u13cf\u0001\u0000"+ + "\u0000\u0000\u13e3\u13d9\u0001\u0000\u0000\u0000\u13e4\u0422\u0001\u0000"+ + "\u0000\u0000\u13e5\u13ea\u0003\u0011\b\u0000\u13e6\u13ea\u0003\u0013\t"+ + "\u0000\u13e7\u13ea\u0003\r\u0006\u0000\u13e8\u13ea\u0003\u000f\u0007\u0000"+ + "\u13e9\u13e5\u0001\u0000\u0000\u0000\u13e9\u13e6\u0001\u0000\u0000\u0000"+ + "\u13e9\u13e7\u0001\u0000\u0000\u0000\u13e9\u13e8\u0001\u0000\u0000\u0000"+ + "\u13ea\u0424\u0001\u0000\u0000\u0000\u13eb\u13ed\u0003\u043b\u021d\u0000"+ + "\u13ec\u13eb\u0001\u0000\u0000\u0000\u13ed\u13ee\u0001\u0000\u0000\u0000"+ + "\u13ee\u13ec\u0001\u0000\u0000\u0000\u13ee\u13ef\u0001\u0000\u0000\u0000"+ + "\u13ef\u13f0\u0001\u0000\u0000\u0000\u13f0\u13f1\u0005L\u0000\u0000\u13f1"+ + "\u0426\u0001\u0000\u0000\u0000\u13f2\u13f4\u0003\u043b\u021d\u0000\u13f3"+ + "\u13f2\u0001\u0000\u0000\u0000\u13f4\u13f5\u0001\u0000\u0000\u0000\u13f5"+ + "\u13f3\u0001\u0000\u0000\u0000\u13f5\u13f6\u0001\u0000\u0000\u0000\u13f6"+ + "\u13f7\u0001\u0000\u0000\u0000\u13f7\u13f8\u0005S\u0000\u0000\u13f8\u0428"+ + "\u0001\u0000\u0000\u0000\u13f9\u13fb\u0003\u043b\u021d\u0000\u13fa\u13f9"+ + "\u0001\u0000\u0000\u0000\u13fb\u13fc\u0001\u0000\u0000\u0000\u13fc\u13fa"+ + "\u0001\u0000\u0000\u0000\u13fc\u13fd\u0001\u0000\u0000\u0000\u13fd\u13fe"+ + "\u0001\u0000\u0000\u0000\u13fe\u13ff\u0005Y\u0000\u0000\u13ff\u042a\u0001"+ + "\u0000\u0000\u0000\u1400\u1402\u0003\u043b\u021d\u0000\u1401\u1400\u0001"+ + "\u0000\u0000\u0000\u1402\u1403\u0001\u0000\u0000\u0000\u1403\u1401\u0001"+ + "\u0000\u0000\u0000\u1403\u1404\u0001\u0000\u0000\u0000\u1404\u042c\u0001"+ + "\u0000\u0000\u0000\u1405\u1407\u0003\u043b\u021d\u0000\u1406\u1405\u0001"+ + "\u0000\u0000\u0000\u1407\u1408\u0001\u0000\u0000\u0000\u1408\u1406\u0001"+ + "\u0000\u0000\u0000\u1408\u1409\u0001\u0000\u0000\u0000\u1409\u140a\u0001"+ + "\u0000\u0000\u0000\u140a\u140b\u0003\u0439\u021c\u0000\u140b\u1411\u0001"+ + "\u0000\u0000\u0000\u140c\u140d\u0003\u0437\u021b\u0000\u140d\u140e\u0003"+ + "\u0439\u021c\u0000\u140e\u140f\u0004\u0216\u0000\u0000\u140f\u1411\u0001"+ + "\u0000\u0000\u0000\u1410\u1406\u0001\u0000\u0000\u0000\u1410\u140c\u0001"+ + "\u0000\u0000\u0000\u1411\u042e\u0001\u0000\u0000\u0000\u1412\u1413\u0003"+ + "\u0437\u021b\u0000\u1413\u1414\u0004\u0217\u0001\u0000\u1414\u0430\u0001"+ + "\u0000\u0000\u0000\u1415\u1417\u0003\u043b\u021d\u0000\u1416\u1415\u0001"+ + "\u0000\u0000\u0000\u1417\u1418\u0001\u0000\u0000\u0000\u1418\u1416\u0001"+ + "\u0000\u0000\u0000\u1418\u1419\u0001\u0000\u0000\u0000\u1419\u141b\u0001"+ + "\u0000\u0000\u0000\u141a\u141c\u0003\u0439\u021c\u0000\u141b\u141a\u0001"+ + "\u0000\u0000\u0000\u141b\u141c\u0001\u0000\u0000\u0000\u141c\u141d\u0001"+ + "\u0000\u0000\u0000\u141d\u141e\u0005B\u0000\u0000\u141e\u141f\u0005D\u0000"+ + "\u0000\u141f\u142a\u0001\u0000\u0000\u0000\u1420\u1422\u0003\u0437\u021b"+ + "\u0000\u1421\u1423\u0003\u0439\u021c\u0000\u1422\u1421\u0001\u0000\u0000"+ + "\u0000\u1422\u1423\u0001\u0000\u0000\u0000\u1423\u1424\u0001\u0000\u0000"+ + "\u0000\u1424\u1425\u0005B\u0000\u0000\u1425\u1426\u0005D\u0000\u0000\u1426"+ + "\u1427\u0001\u0000\u0000\u0000\u1427\u1428\u0004\u0218\u0002\u0000\u1428"+ + "\u142a\u0001\u0000\u0000\u0000\u1429\u1416\u0001\u0000\u0000\u0000\u1429"+ + "\u1420\u0001\u0000\u0000\u0000\u142a\u0432\u0001\u0000\u0000\u0000\u142b"+ + "\u142f\u0003\u043d\u021e\u0000\u142c\u142f\u0003\u043b\u021d\u0000\u142d"+ + "\u142f\u0005_\u0000\u0000\u142e\u142b\u0001\u0000\u0000\u0000\u142e\u142c"+ + "\u0001\u0000\u0000\u0000\u142e\u142d\u0001\u0000\u0000\u0000\u142f\u1430"+ + "\u0001\u0000\u0000\u0000\u1430\u142e\u0001\u0000\u0000\u0000\u1430\u1431"+ + "\u0001\u0000\u0000\u0000\u1431\u0434\u0001\u0000\u0000\u0000\u1432\u1438"+ + "\u0005`\u0000\u0000\u1433\u1437\b\u0004\u0000\u0000\u1434\u1435\u0005"+ + "`\u0000\u0000\u1435\u1437\u0005`\u0000\u0000\u1436\u1433\u0001\u0000\u0000"+ + "\u0000\u1436\u1434\u0001\u0000\u0000\u0000\u1437\u143a\u0001\u0000\u0000"+ + "\u0000\u1438\u1436\u0001\u0000\u0000\u0000\u1438\u1439\u0001\u0000\u0000"+ + "\u0000\u1439\u143b\u0001\u0000\u0000\u0000\u143a\u1438\u0001\u0000\u0000"+ + "\u0000\u143b\u143c\u0005`\u0000\u0000\u143c\u0436\u0001\u0000\u0000\u0000"+ + "\u143d\u143f\u0003\u043b\u021d\u0000\u143e\u143d\u0001\u0000\u0000\u0000"+ + "\u143f\u1440\u0001\u0000\u0000\u0000\u1440\u143e\u0001\u0000\u0000\u0000"+ + "\u1440\u1441\u0001\u0000\u0000\u0000\u1441\u1442\u0001\u0000\u0000\u0000"+ + "\u1442\u1446\u0005.\u0000\u0000\u1443\u1445\u0003\u043b\u021d\u0000\u1444"+ + "\u1443\u0001\u0000\u0000\u0000\u1445\u1448\u0001\u0000\u0000\u0000\u1446"+ + "\u1444\u0001\u0000\u0000\u0000\u1446\u1447\u0001\u0000\u0000\u0000\u1447"+ + "\u1450\u0001\u0000\u0000\u0000\u1448\u1446\u0001\u0000\u0000\u0000\u1449"+ + "\u144b\u0005.\u0000\u0000\u144a\u144c\u0003\u043b\u021d\u0000\u144b\u144a"+ + "\u0001\u0000\u0000\u0000\u144c\u144d\u0001\u0000\u0000\u0000\u144d\u144b"+ + "\u0001\u0000\u0000\u0000\u144d\u144e\u0001\u0000\u0000\u0000\u144e\u1450"+ + "\u0001\u0000\u0000\u0000\u144f\u143e\u0001\u0000\u0000\u0000\u144f\u1449"+ + "\u0001\u0000\u0000\u0000\u1450\u0438\u0001\u0000\u0000\u0000\u1451\u1453"+ + "\u0005E\u0000\u0000\u1452\u1454\u0007\u0005\u0000\u0000\u1453\u1452\u0001"+ + "\u0000\u0000\u0000\u1453\u1454\u0001\u0000\u0000\u0000\u1454\u1456\u0001"+ + "\u0000\u0000\u0000\u1455\u1457\u0003\u043b\u021d\u0000\u1456\u1455\u0001"+ + "\u0000\u0000\u0000\u1457\u1458\u0001\u0000\u0000\u0000\u1458\u1456\u0001"+ + "\u0000\u0000\u0000\u1458\u1459\u0001\u0000\u0000\u0000\u1459\u043a\u0001"+ + "\u0000\u0000\u0000\u145a\u145b\u0007\u0006\u0000\u0000\u145b\u043c\u0001"+ + "\u0000\u0000\u0000\u145c\u1461\u0007\u0007\u0000\u0000\u145d\u1461\b\b"+ + "\u0000\u0000\u145e\u145f\u0007\t\u0000\u0000\u145f\u1461\u0007\n\u0000"+ + "\u0000\u1460\u145c\u0001\u0000\u0000\u0000\u1460\u145d\u0001\u0000\u0000"+ + "\u0000\u1460\u145e\u0001\u0000\u0000\u0000\u1461\u043e\u0001\u0000\u0000"+ + "\u0000\u1462\u1463\u0005-\u0000\u0000\u1463\u1464\u0005-\u0000\u0000\u1464"+ + "\u146a\u0001\u0000\u0000\u0000\u1465\u1466\u0005\\\u0000\u0000\u1466\u1469"+ + "\u0005\n\u0000\u0000\u1467\u1469\b\u000b\u0000\u0000\u1468\u1465\u0001"+ + "\u0000\u0000\u0000\u1468\u1467\u0001\u0000\u0000\u0000\u1469\u146c\u0001"+ + "\u0000\u0000\u0000\u146a\u1468\u0001\u0000\u0000\u0000\u146a\u146b\u0001"+ + "\u0000\u0000\u0000\u146b\u146e\u0001\u0000\u0000\u0000\u146c\u146a\u0001"+ + "\u0000\u0000\u0000\u146d\u146f\u0005\r\u0000\u0000\u146e\u146d\u0001\u0000"+ + "\u0000\u0000\u146e\u146f\u0001\u0000\u0000\u0000\u146f\u1471\u0001\u0000"+ + "\u0000\u0000\u1470\u1472\u0005\n\u0000\u0000\u1471\u1470\u0001\u0000\u0000"+ + "\u0000\u1471\u1472\u0001\u0000\u0000\u0000\u1472\u1473\u0001\u0000\u0000"+ + "\u0000\u1473\u1474\u0006\u021f\u0000\u0000\u1474\u0440\u0001\u0000\u0000"+ + "\u0000\u1475\u147a\u0003\u041b\u020d\u0000\u1476\u1479\u0003\u0441\u0220"+ + "\u0000\u1477\u1479\t\u0000\u0000\u0000\u1478\u1476\u0001\u0000\u0000\u0000"+ + "\u1478\u1477\u0001\u0000\u0000\u0000\u1479\u147c\u0001\u0000\u0000\u0000"+ + "\u147a\u147b\u0001\u0000\u0000\u0000\u147a\u1478\u0001\u0000\u0000\u0000"+ + "\u147b\u1481\u0001\u0000\u0000\u0000\u147c\u147a\u0001\u0000\u0000\u0000"+ + "\u147d\u147e\u0005*\u0000\u0000\u147e\u1482\u0005/\u0000\u0000\u147f\u1480"+ + "\u0006\u0220\u0001\u0000\u1480\u1482\u0005\u0000\u0000\u0001\u1481\u147d"+ + "\u0001\u0000\u0000\u0000\u1481\u147f\u0001\u0000\u0000\u0000\u1482\u1483"+ + "\u0001\u0000\u0000\u0000\u1483\u1484\u0006\u0220\u0002\u0000\u1484\u0442"+ + "\u0001\u0000\u0000\u0000\u1485\u1486\u0005F\u0000\u0000\u1486\u1487\u0005"+ + "R\u0000\u0000\u1487\u1488\u0005O\u0000\u0000\u1488\u1489\u0005M\u0000"+ + "\u0000\u1489\u148b\u0001\u0000\u0000\u0000\u148a\u148c\u0003\u0445\u0222"+ + "\u0000\u148b\u148a\u0001\u0000\u0000\u0000\u148c\u148d\u0001\u0000\u0000"+ + "\u0000\u148d\u148b\u0001\u0000\u0000\u0000\u148d\u148e\u0001\u0000\u0000"+ + "\u0000\u148e\u148f\u0001\u0000\u0000\u0000\u148f\u1490\u0005D\u0000\u0000"+ + "\u1490\u1491\u0005U\u0000\u0000\u1491\u1492\u0005A\u0000\u0000\u1492\u1493"+ + "\u0005L\u0000\u0000\u1493\u1494\u0001\u0000\u0000\u0000\u1494\u1495\u0006"+ + "\u0221\u0000\u0000\u1495\u0444\u0001\u0000"; + private static final String _serializedATNSegment2 = + "\u0000\u0000\u1496\u1498\u0007\f\u0000\u0000\u1497\u1496\u0001\u0000\u0000"+ + "\u0000\u1498\u1499\u0001\u0000\u0000\u0000\u1499\u1497\u0001\u0000\u0000"+ + "\u0000\u1499\u149a\u0001\u0000\u0000\u0000\u149a\u149b\u0001\u0000\u0000"+ + "\u0000\u149b\u149c\u0006\u0222\u0000\u0000\u149c\u0446\u0001\u0000\u0000"+ + "\u0000\u149d\u149e\t\u0000\u0000\u0000\u149e\u0448\u0001\u0000\u0000\u0000"+ + ",\u0000\u0605\u136d\u1377\u137f\u1387\u13bd\u13bf\u13c9\u13cb\u13d5\u13df"+ + "\u13e3\u13e9\u13ee\u13f5\u13fc\u1403\u1408\u1410\u1418\u141b\u1422\u1429"+ + "\u142e\u1430\u1436\u1438\u1440\u1446\u144d\u144f\u1453\u1458\u1460\u1468"+ + "\u146a\u146e\u1471\u1478\u147a\u1481\u148d\u1499\u0003\u0000\u0001\u0000"+ + "\u0001\u0220\u0000\u0000\u0002\u0000"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1, + _serializedATNSegment2 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens new file mode 100644 index 00000000000000..aca045377c7e08 --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens @@ -0,0 +1,1067 @@ +SEMICOLON=1 +LEFT_PAREN=2 +RIGHT_PAREN=3 +COMMA=4 +DOT=5 +DOTDOTDOT=6 +LEFT_BRACKET=7 +RIGHT_BRACKET=8 +LEFT_BRACE=9 +RIGHT_BRACE=10 +ACCOUNT_LOCK=11 +ACCOUNT_UNLOCK=12 +ACTIONS=13 +ADD=14 +ADMIN=15 +AFTER=16 +AGG_STATE=17 +AGGREGATE=18 +ALIAS=19 +ALL=20 +ALTER=21 +ANALYZE=22 +ANALYZED=23 +AND=24 +ANTI=25 +APPEND=26 +ARRAY=27 +AS=28 +ASC=29 +AT=30 +AUTHORS=31 +AUTO=32 +AUTO_INCREMENT=33 +ALWAYS=34 +BACKEND=35 +BACKENDS=36 +BACKUP=37 +BEGIN=38 +BELONG=39 +BETWEEN=40 +BIGINT=41 +BIN=42 +BINARY=43 +BINLOG=44 +BITAND=45 +BITMAP=46 +BITMAP_EMPTY=47 +BITMAP_UNION=48 +BITOR=49 +BITXOR=50 +BLOB=51 +BOOLEAN=52 +BRIEF=53 +BROKER=54 +BUCKETS=55 +BUILD=56 +BUILTIN=57 +BULK=58 +BY=59 +CACHE=60 +CACHED=61 +CALL=62 +CANCEL=63 +CASE=64 +CAST=65 +CATALOG=66 +CATALOGS=67 +CHAIN=68 +CHAR=69 +CHARSET=70 +CHECK=71 +CLEAN=72 +CLUSTER=73 +CLUSTERS=74 +COLLATE=75 +COLLATION=76 +COLLECT=77 +COLOCATE=78 +COLUMN=79 +COLUMNS=80 +COMMENT=81 +COMMIT=82 +COMMITTED=83 +COMPACT=84 +COMPLETE=85 +COMPRESS_TYPE=86 +COMPUTE=87 +CONDITIONS=88 +CONFIG=89 +CONNECTION=90 +CONNECTION_ID=91 +CONSISTENT=92 +CONSTRAINT=93 +CONSTRAINTS=94 +CONVERT=95 +CONVERT_LSC=96 +COPY=97 +COUNT=98 +CREATE=99 +CREATION=100 +CRON=101 +CROSS=102 +CUBE=103 +CURRENT=104 +CURRENT_CATALOG=105 +CURRENT_DATE=106 +CURRENT_TIME=107 +CURRENT_TIMESTAMP=108 +CURRENT_USER=109 +DATA=110 +DATABASE=111 +DATABASES=112 +DATE=113 +DATETIME=114 +DATETIMEV2=115 +DATEV2=116 +DATETIMEV1=117 +DATEV1=118 +DAY=119 +DECIMAL=120 +DECIMALV2=121 +DECIMALV3=122 +DECOMMISSION=123 +DEFAULT=124 +DEFERRED=125 +DELETE=126 +DEMAND=127 +DESC=128 +DESCRIBE=129 +DIAGNOSE=130 +DIAGNOSIS=131 +DISK=132 +DISTINCT=133 +DISTINCTPC=134 +DISTINCTPCSA=135 +DISTRIBUTED=136 +DISTRIBUTION=137 +DIV=138 +DO=139 +DORIS_INTERNAL_TABLE_ID=140 +DOUBLE=141 +DROP=142 +DROPP=143 +DUAL=144 +DUMP=145 +DUPLICATE=146 +DYNAMIC=147 +E=148 +ELSE=149 +ENABLE=150 +ENCRYPTKEY=151 +ENCRYPTKEYS=152 +END=153 +ENDS=154 +ENGINE=155 +ENGINES=156 +ENTER=157 +ERRORS=158 +EVENTS=159 +EVERY=160 +EXCEPT=161 +EXCLUDE=162 +EXECUTE=163 +EXISTS=164 +EXPIRED=165 +EXPLAIN=166 +EXPORT=167 +EXTENDED=168 +EXTERNAL=169 +EXTRACT=170 +FAILED_LOGIN_ATTEMPTS=171 +FALSE=172 +FAST=173 +FEATURE=174 +FIELDS=175 +FILE=176 +FILTER=177 +FIRST=178 +FLOAT=179 +FOLLOWER=180 +FOLLOWING=181 +FOR=182 +FOREIGN=183 +FORCE=184 +FORMAT=185 +FREE=186 +FROM=187 +FRONTEND=188 +FRONTENDS=189 +FULL=190 +FUNCTION=191 +FUNCTIONS=192 +GENERATED=193 +GENERIC=194 +GLOBAL=195 +GRANT=196 +GRANTS=197 +GRAPH=198 +GROUP=199 +GROUPING=200 +GROUPS=201 +HASH=202 +HAVING=203 +HDFS=204 +HELP=205 +HISTOGRAM=206 +HLL=207 +HLL_UNION=208 +HOSTNAME=209 +HOTSPOT=210 +HOUR=211 +HUB=212 +IDENTIFIED=213 +IF=214 +IGNORE=215 +IMMEDIATE=216 +IN=217 +INCREMENTAL=218 +INDEX=219 +INDEXES=220 +INFILE=221 +INNER=222 +INSERT=223 +INSTALL=224 +INT=225 +INTEGER=226 +INTERMEDIATE=227 +INTERSECT=228 +INTERVAL=229 +INTO=230 +INVERTED=231 +IPV4=232 +IPV6=233 +IS=234 +IS_NOT_NULL_PRED=235 +IS_NULL_PRED=236 +ISNULL=237 +ISOLATION=238 +JOB=239 +JOBS=240 +JOIN=241 +JSON=242 +JSONB=243 +KEY=244 +KEYS=245 +KILL=246 +LABEL=247 +LARGEINT=248 +LAST=249 +LATERAL=250 +LDAP=251 +LDAP_ADMIN_PASSWORD=252 +LEFT=253 +LESS=254 +LEVEL=255 +LIKE=256 +LIMIT=257 +LINES=258 +LINK=259 +LIST=260 +LOAD=261 +LOCAL=262 +LOCALTIME=263 +LOCALTIMESTAMP=264 +LOCATION=265 +LOCK=266 +LOGICAL=267 +LOW_PRIORITY=268 +MANUAL=269 +MAP=270 +MATCH=271 +MATCH_ALL=272 +MATCH_ANY=273 +MATCH_PHRASE=274 +MATCH_PHRASE_EDGE=275 +MATCH_PHRASE_PREFIX=276 +MATCH_REGEXP=277 +MATCH_NAME=278 +MATCH_NAME_GLOB=279 +MATERIALIZED=280 +MAX=281 +MAXVALUE=282 +MEMO=283 +MERGE=284 +MIGRATE=285 +MIGRATIONS=286 +MIN=287 +MINUS=288 +MINUTE=289 +MODIFY=290 +MONTH=291 +MTMV=292 +NAME=293 +NAMES=294 +NATURAL=295 +NEGATIVE=296 +NEVER=297 +NEXT=298 +NGRAM_BF=299 +NO=300 +NO_USE_MV=301 +NON_NULLABLE=302 +NOT=303 +NULL=304 +NULLS=305 +OBSERVER=306 +OF=307 +OFFSET=308 +ON=309 +ONLY=310 +OPEN=311 +OPTIMIZED=312 +OR=313 +ORDER=314 +OUTER=315 +OUTFILE=316 +OVER=317 +OVERWRITE=318 +PARAMETER=319 +PARSED=320 +PARTITION=321 +PARTITIONS=322 +PASSWORD=323 +PASSWORD_EXPIRE=324 +PASSWORD_HISTORY=325 +PASSWORD_LOCK_TIME=326 +PASSWORD_REUSE=327 +PATH=328 +PAUSE=329 +PERCENT=330 +PERIOD=331 +PERMISSIVE=332 +PHYSICAL=333 +PI=334 +PLACEHOLDER=335 +PLAN=336 +PLAY=337 +PRIVILEGES=338 +PROCESS=339 +PLUGIN=340 +PLUGINS=341 +POLICY=342 +PRECEDING=343 +PREPARE=344 +PRIMARY=345 +PROC=346 +PROCEDURE=347 +PROCESSLIST=348 +PROFILE=349 +PROPERTIES=350 +PROPERTY=351 +QUANTILE_STATE=352 +QUANTILE_UNION=353 +QUERY=354 +QUEUED=355 +QUOTA=356 +QUALIFY=357 +QUARTER=358 +RANDOM=359 +RANGE=360 +READ=361 +REAL=362 +REBALANCE=363 +RECENT=364 +RECOVER=365 +RECYCLE=366 +REFRESH=367 +REFERENCES=368 +REGEXP=369 +RELEASE=370 +RENAME=371 +REPAIR=372 +REPEATABLE=373 +REPLACE=374 +REPLACE_IF_NOT_NULL=375 +REPLAYER=376 +REPLICA=377 +REPOSITORIES=378 +REPOSITORY=379 +RESOURCE=380 +RESOURCES=381 +RESTORE=382 +RESTRICTIVE=383 +RESUME=384 +RETURNS=385 +REVOKE=386 +REWRITTEN=387 +RIGHT=388 +RLIKE=389 +ROLE=390 +ROLES=391 +ROLLBACK=392 +ROLLUP=393 +ROUTINE=394 +ROW=395 +ROWS=396 +S3=397 +SAMPLE=398 +SCHEDULE=399 +SCHEDULER=400 +SCHEMA=401 +SCHEMAS=402 +SECOND=403 +SELECT=404 +SEMI=405 +SERIALIZABLE=406 +SESSION=407 +SESSION_USER=408 +SET=409 +SETS=410 +SET_SESSION_VARIABLE=411 +SHAPE=412 +SHOW=413 +SIGNED=414 +SKEW=415 +SMALLINT=416 +SNAPSHOT=417 +SONAME=418 +SPLIT=419 +SQL=420 +SQL_BLOCK_RULE=421 +STAGE=422 +STAGES=423 +START=424 +STARTS=425 +STATS=426 +STATUS=427 +STOP=428 +STORAGE=429 +STREAM=430 +STREAMING=431 +STRING=432 +STRUCT=433 +SUM=434 +SUPERUSER=435 +SWITCH=436 +SYNC=437 +SYSTEM=438 +TABLE=439 +TABLES=440 +TABLESAMPLE=441 +TABLET=442 +TABLETS=443 +TASK=444 +TASKS=445 +TEMPORARY=446 +TERMINATED=447 +TEXT=448 +THAN=449 +THEN=450 +TIME=451 +TIMESTAMP=452 +TINYINT=453 +TO=454 +TRANSACTION=455 +TRASH=456 +TREE=457 +TRIGGERS=458 +TRIM=459 +TRUE=460 +TRUNCATE=461 +TYPE=462 +TYPECAST=463 +TYPES=464 +UNBOUNDED=465 +UNCOMMITTED=466 +UNINSTALL=467 +UNION=468 +UNIQUE=469 +UNLOCK=470 +UNSET=471 +UNSIGNED=472 +UP=473 +UPDATE=474 +USE=475 +USER=476 +USE_MV=477 +USING=478 +VALUE=479 +VALUES=480 +VARCHAR=481 +VARIABLE=482 +VARIABLES=483 +VARIANT=484 +VAULT=485 +VAULTS=486 +VERBOSE=487 +VERSION=488 +VIEW=489 +VIEWS=490 +WARM=491 +WARNINGS=492 +WEEK=493 +WHEN=494 +WHERE=495 +WHITELIST=496 +WITH=497 +WORK=498 +WORKLOAD=499 +WRITE=500 +XOR=501 +YEAR=502 +EQ=503 +NSEQ=504 +NEQ=505 +LT=506 +LTE=507 +GT=508 +GTE=509 +PLUS=510 +SUBTRACT=511 +ASTERISK=512 +SLASH=513 +MOD=514 +TILDE=515 +AMPERSAND=516 +LOGICALAND=517 +LOGICALNOT=518 +PIPE=519 +DOUBLEPIPES=520 +HAT=521 +COLON=522 +ARROW=523 +HINT_START=524 +HINT_END=525 +COMMENT_START=526 +ATSIGN=527 +DOUBLEATSIGN=528 +STRING_LITERAL=529 +LEADING_STRING=530 +BIGINT_LITERAL=531 +SMALLINT_LITERAL=532 +TINYINT_LITERAL=533 +INTEGER_VALUE=534 +EXPONENT_VALUE=535 +DECIMAL_VALUE=536 +BIGDECIMAL_LITERAL=537 +IDENTIFIER=538 +BACKQUOTED_IDENTIFIER=539 +SIMPLE_COMMENT=540 +BRACKETED_COMMENT=541 +FROM_DUAL=542 +WS=543 +UNRECOGNIZED=544 +';'=1 +'('=2 +')'=3 +','=4 +'.'=5 +'...'=6 +'['=7 +']'=8 +'{'=9 +'}'=10 +'ACCOUNT_LOCK'=11 +'ACCOUNT_UNLOCK'=12 +'ACTIONS'=13 +'ADD'=14 +'ADMIN'=15 +'AFTER'=16 +'AGG_STATE'=17 +'AGGREGATE'=18 +'ALIAS'=19 +'ALL'=20 +'ALTER'=21 +'ANALYZE'=22 +'ANALYZED'=23 +'AND'=24 +'ANTI'=25 +'APPEND'=26 +'ARRAY'=27 +'AS'=28 +'ASC'=29 +'AT'=30 +'AUTHORS'=31 +'AUTO'=32 +'AUTO_INCREMENT'=33 +'ALWAYS'=34 +'BACKEND'=35 +'BACKENDS'=36 +'BACKUP'=37 +'BEGIN'=38 +'BELONG'=39 +'BETWEEN'=40 +'BIGINT'=41 +'BIN'=42 +'BINARY'=43 +'BINLOG'=44 +'BITAND'=45 +'BITMAP'=46 +'BITMAP_EMPTY'=47 +'BITMAP_UNION'=48 +'BITOR'=49 +'BITXOR'=50 +'BLOB'=51 +'BOOLEAN'=52 +'BRIEF'=53 +'BROKER'=54 +'BUCKETS'=55 +'BUILD'=56 +'BUILTIN'=57 +'BULK'=58 +'BY'=59 +'CACHE'=60 +'CACHED'=61 +'CALL'=62 +'CANCEL'=63 +'CASE'=64 +'CAST'=65 +'CATALOG'=66 +'CATALOGS'=67 +'CHAIN'=68 +'CHARSET'=70 +'CHECK'=71 +'CLEAN'=72 +'CLUSTER'=73 +'CLUSTERS'=74 +'COLLATE'=75 +'COLLATION'=76 +'COLLECT'=77 +'COLOCATE'=78 +'COLUMN'=79 +'COLUMNS'=80 +'COMMENT'=81 +'COMMIT'=82 +'COMMITTED'=83 +'COMPACT'=84 +'COMPLETE'=85 +'COMPRESS_TYPE'=86 +'COMPUTE'=87 +'CONDITIONS'=88 +'CONFIG'=89 +'CONNECTION'=90 +'CONNECTION_ID'=91 +'CONSISTENT'=92 +'CONSTRAINT'=93 +'CONSTRAINTS'=94 +'CONVERT'=95 +'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'=96 +'COPY'=97 +'COUNT'=98 +'CREATE'=99 +'CREATION'=100 +'CRON'=101 +'CROSS'=102 +'CUBE'=103 +'CURRENT'=104 +'CURRENT_CATALOG'=105 +'CURRENT_DATE'=106 +'CURRENT_TIME'=107 +'CURRENT_TIMESTAMP'=108 +'CURRENT_USER'=109 +'DATA'=110 +'DATABASE'=111 +'DATABASES'=112 +'DATE'=113 +'DATETIME'=114 +'DATETIMEV2'=115 +'DATEV2'=116 +'DATETIMEV1'=117 +'DATEV1'=118 +'DAY'=119 +'DECIMAL'=120 +'DECIMALV2'=121 +'DECIMALV3'=122 +'DECOMMISSION'=123 +'DEFAULT'=124 +'DEFERRED'=125 +'DELETE'=126 +'DEMAND'=127 +'DESC'=128 +'DESCRIBE'=129 +'DIAGNOSE'=130 +'DIAGNOSIS'=131 +'DISK'=132 +'DISTINCT'=133 +'DISTINCTPC'=134 +'DISTINCTPCSA'=135 +'DISTRIBUTED'=136 +'DISTRIBUTION'=137 +'DIV'=138 +'DO'=139 +'DORIS_INTERNAL_TABLE_ID'=140 +'DOUBLE'=141 +'DROP'=142 +'DROPP'=143 +'DUAL'=144 +'DUMP'=145 +'DUPLICATE'=146 +'DYNAMIC'=147 +'E'=148 +'ELSE'=149 +'ENABLE'=150 +'ENCRYPTKEY'=151 +'ENCRYPTKEYS'=152 +'END'=153 +'ENDS'=154 +'ENGINE'=155 +'ENGINES'=156 +'ENTER'=157 +'ERRORS'=158 +'EVENTS'=159 +'EVERY'=160 +'EXCEPT'=161 +'EXCLUDE'=162 +'EXECUTE'=163 +'EXISTS'=164 +'EXPIRED'=165 +'EXPLAIN'=166 +'EXPORT'=167 +'EXTENDED'=168 +'EXTERNAL'=169 +'EXTRACT'=170 +'FAILED_LOGIN_ATTEMPTS'=171 +'FALSE'=172 +'FAST'=173 +'FEATURE'=174 +'FIELDS'=175 +'FILE'=176 +'FILTER'=177 +'FIRST'=178 +'FLOAT'=179 +'FOLLOWER'=180 +'FOLLOWING'=181 +'FOR'=182 +'FOREIGN'=183 +'FORCE'=184 +'FORMAT'=185 +'FREE'=186 +'FROM'=187 +'FRONTEND'=188 +'FRONTENDS'=189 +'FULL'=190 +'FUNCTION'=191 +'FUNCTIONS'=192 +'GENERATED'=193 +'GENERIC'=194 +'GLOBAL'=195 +'GRANT'=196 +'GRANTS'=197 +'GRAPH'=198 +'GROUP'=199 +'GROUPING'=200 +'GROUPS'=201 +'HASH'=202 +'HAVING'=203 +'HDFS'=204 +'HELP'=205 +'HISTOGRAM'=206 +'HLL'=207 +'HLL_UNION'=208 +'HOSTNAME'=209 +'HOTSPOT'=210 +'HOUR'=211 +'HUB'=212 +'IDENTIFIED'=213 +'IF'=214 +'IGNORE'=215 +'IMMEDIATE'=216 +'IN'=217 +'INCREMENTAL'=218 +'INDEX'=219 +'INDEXES'=220 +'INFILE'=221 +'INNER'=222 +'INSERT'=223 +'INSTALL'=224 +'INT'=225 +'INTEGER'=226 +'INTERMEDIATE'=227 +'INTERSECT'=228 +'INTERVAL'=229 +'INTO'=230 +'INVERTED'=231 +'IPV4'=232 +'IPV6'=233 +'IS'=234 +'IS_NOT_NULL_PRED'=235 +'IS_NULL_PRED'=236 +'ISNULL'=237 +'ISOLATION'=238 +'JOB'=239 +'JOBS'=240 +'JOIN'=241 +'JSON'=242 +'JSONB'=243 +'KEY'=244 +'KEYS'=245 +'KILL'=246 +'LABEL'=247 +'LARGEINT'=248 +'LAST'=249 +'LATERAL'=250 +'LDAP'=251 +'LDAP_ADMIN_PASSWORD'=252 +'LEFT'=253 +'LESS'=254 +'LEVEL'=255 +'LIKE'=256 +'LIMIT'=257 +'LINES'=258 +'LINK'=259 +'LIST'=260 +'LOAD'=261 +'LOCAL'=262 +'LOCALTIME'=263 +'LOCALTIMESTAMP'=264 +'LOCATION'=265 +'LOCK'=266 +'LOGICAL'=267 +'LOW_PRIORITY'=268 +'MANUAL'=269 +'MAP'=270 +'MATCH'=271 +'MATCH_ALL'=272 +'MATCH_ANY'=273 +'MATCH_PHRASE'=274 +'MATCH_PHRASE_EDGE'=275 +'MATCH_PHRASE_PREFIX'=276 +'MATCH_REGEXP'=277 +'MATCH_NAME'=278 +'MATCH_NAME_GLOB'=279 +'MATERIALIZED'=280 +'MAX'=281 +'MAXVALUE'=282 +'MEMO'=283 +'MERGE'=284 +'MIGRATE'=285 +'MIGRATIONS'=286 +'MIN'=287 +'MINUS'=288 +'MINUTE'=289 +'MODIFY'=290 +'MONTH'=291 +'MTMV'=292 +'NAME'=293 +'NAMES'=294 +'NATURAL'=295 +'NEGATIVE'=296 +'NEVER'=297 +'NEXT'=298 +'NGRAM_BF'=299 +'NO'=300 +'NO_USE_MV'=301 +'NON_NULLABLE'=302 +'NOT'=303 +'NULL'=304 +'NULLS'=305 +'OBSERVER'=306 +'OF'=307 +'OFFSET'=308 +'ON'=309 +'ONLY'=310 +'OPEN'=311 +'OPTIMIZED'=312 +'OR'=313 +'ORDER'=314 +'OUTER'=315 +'OUTFILE'=316 +'OVER'=317 +'OVERWRITE'=318 +'PARAMETER'=319 +'PARSED'=320 +'PARTITION'=321 +'PARTITIONS'=322 +'PASSWORD'=323 +'PASSWORD_EXPIRE'=324 +'PASSWORD_HISTORY'=325 +'PASSWORD_LOCK_TIME'=326 +'PASSWORD_REUSE'=327 +'PATH'=328 +'PAUSE'=329 +'PERCENT'=330 +'PERIOD'=331 +'PERMISSIVE'=332 +'PHYSICAL'=333 +'PI'=334 +'?'=335 +'PLAN'=336 +'PLAY'=337 +'PRIVILEGES'=338 +'PROCESS'=339 +'PLUGIN'=340 +'PLUGINS'=341 +'POLICY'=342 +'PRECEDING'=343 +'PREPARE'=344 +'PRIMARY'=345 +'PROC'=346 +'PROCEDURE'=347 +'PROCESSLIST'=348 +'PROFILE'=349 +'PROPERTIES'=350 +'PROPERTY'=351 +'QUANTILE_STATE'=352 +'QUANTILE_UNION'=353 +'QUERY'=354 +'QUEUED'=355 +'QUOTA'=356 +'QUALIFY'=357 +'QUARTER'=358 +'RANDOM'=359 +'RANGE'=360 +'READ'=361 +'REAL'=362 +'REBALANCE'=363 +'RECENT'=364 +'RECOVER'=365 +'RECYCLE'=366 +'REFRESH'=367 +'REFERENCES'=368 +'REGEXP'=369 +'RELEASE'=370 +'RENAME'=371 +'REPAIR'=372 +'REPEATABLE'=373 +'REPLACE'=374 +'REPLACE_IF_NOT_NULL'=375 +'REPLAYER'=376 +'REPLICA'=377 +'REPOSITORIES'=378 +'REPOSITORY'=379 +'RESOURCE'=380 +'RESOURCES'=381 +'RESTORE'=382 +'RESTRICTIVE'=383 +'RESUME'=384 +'RETURNS'=385 +'REVOKE'=386 +'REWRITTEN'=387 +'RIGHT'=388 +'RLIKE'=389 +'ROLE'=390 +'ROLES'=391 +'ROLLBACK'=392 +'ROLLUP'=393 +'ROUTINE'=394 +'ROW'=395 +'ROWS'=396 +'S3'=397 +'SAMPLE'=398 +'SCHEDULE'=399 +'SCHEDULER'=400 +'SCHEMA'=401 +'SCHEMAS'=402 +'SECOND'=403 +'SELECT'=404 +'SEMI'=405 +'SERIALIZABLE'=406 +'SESSION'=407 +'SESSION_USER'=408 +'SET'=409 +'SETS'=410 +'SET_SESSION_VARIABLE'=411 +'SHAPE'=412 +'SHOW'=413 +'SIGNED'=414 +'SKEW'=415 +'SMALLINT'=416 +'SNAPSHOT'=417 +'SONAME'=418 +'SPLIT'=419 +'SQL'=420 +'SQL_BLOCK_RULE'=421 +'STAGE'=422 +'STAGES'=423 +'START'=424 +'STARTS'=425 +'STATS'=426 +'STATUS'=427 +'STOP'=428 +'STORAGE'=429 +'STREAM'=430 +'STREAMING'=431 +'STRING'=432 +'STRUCT'=433 +'SUM'=434 +'SUPERUSER'=435 +'SWITCH'=436 +'SYNC'=437 +'SYSTEM'=438 +'TABLE'=439 +'TABLES'=440 +'TABLESAMPLE'=441 +'TABLET'=442 +'TABLETS'=443 +'TASK'=444 +'TASKS'=445 +'TEMPORARY'=446 +'TERMINATED'=447 +'TEXT'=448 +'THAN'=449 +'THEN'=450 +'TIME'=451 +'TIMESTAMP'=452 +'TINYINT'=453 +'TO'=454 +'TRANSACTION'=455 +'TRASH'=456 +'TREE'=457 +'TRIGGERS'=458 +'TRIM'=459 +'TRUE'=460 +'TRUNCATE'=461 +'TYPE'=462 +'TYPE_CAST'=463 +'TYPES'=464 +'UNBOUNDED'=465 +'UNCOMMITTED'=466 +'UNINSTALL'=467 +'UNION'=468 +'UNIQUE'=469 +'UNLOCK'=470 +'UNSET'=471 +'UNSIGNED'=472 +'UP'=473 +'UPDATE'=474 +'USE'=475 +'USER'=476 +'USE_MV'=477 +'USING'=478 +'VALUE'=479 +'VALUES'=480 +'VARCHAR'=481 +'VARIABLE'=482 +'VARIABLES'=483 +'VARIANT'=484 +'VAULT'=485 +'VAULTS'=486 +'VERBOSE'=487 +'VERSION'=488 +'VIEW'=489 +'VIEWS'=490 +'WARM'=491 +'WARNINGS'=492 +'WEEK'=493 +'WHEN'=494 +'WHERE'=495 +'WHITELIST'=496 +'WITH'=497 +'WORK'=498 +'WORKLOAD'=499 +'WRITE'=500 +'XOR'=501 +'YEAR'=502 +'<=>'=504 +'<'=506 +'>'=508 +'+'=510 +'-'=511 +'*'=512 +'/'=513 +'%'=514 +'~'=515 +'&'=516 +'&&'=517 +'!'=518 +'|'=519 +'||'=520 +'^'=521 +':'=522 +'->'=523 +'/*+'=524 +'*/'=525 +'/*'=526 +'@'=527 +'@@'=528 diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp new file mode 100644 index 00000000000000..281aee1130e097 --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp @@ -0,0 +1,1328 @@ +token literal names: +null +';' +'(' +')' +',' +'.' +'...' +'[' +']' +'{' +'}' +'ACCOUNT_LOCK' +'ACCOUNT_UNLOCK' +'ACTIONS' +'ADD' +'ADMIN' +'AFTER' +'AGG_STATE' +'AGGREGATE' +'ALIAS' +'ALL' +'ALTER' +'ANALYZE' +'ANALYZED' +'AND' +'ANTI' +'APPEND' +'ARRAY' +'AS' +'ASC' +'AT' +'AUTHORS' +'AUTO' +'AUTO_INCREMENT' +'ALWAYS' +'BACKEND' +'BACKENDS' +'BACKUP' +'BEGIN' +'BELONG' +'BETWEEN' +'BIGINT' +'BIN' +'BINARY' +'BINLOG' +'BITAND' +'BITMAP' +'BITMAP_EMPTY' +'BITMAP_UNION' +'BITOR' +'BITXOR' +'BLOB' +'BOOLEAN' +'BRIEF' +'BROKER' +'BUCKETS' +'BUILD' +'BUILTIN' +'BULK' +'BY' +'CACHE' +'CACHED' +'CALL' +'CANCEL' +'CASE' +'CAST' +'CATALOG' +'CATALOGS' +'CHAIN' +null +'CHARSET' +'CHECK' +'CLEAN' +'CLUSTER' +'CLUSTERS' +'COLLATE' +'COLLATION' +'COLLECT' +'COLOCATE' +'COLUMN' +'COLUMNS' +'COMMENT' +'COMMIT' +'COMMITTED' +'COMPACT' +'COMPLETE' +'COMPRESS_TYPE' +'COMPUTE' +'CONDITIONS' +'CONFIG' +'CONNECTION' +'CONNECTION_ID' +'CONSISTENT' +'CONSTRAINT' +'CONSTRAINTS' +'CONVERT' +'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS' +'COPY' +'COUNT' +'CREATE' +'CREATION' +'CRON' +'CROSS' +'CUBE' +'CURRENT' +'CURRENT_CATALOG' +'CURRENT_DATE' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'CURRENT_USER' +'DATA' +'DATABASE' +'DATABASES' +'DATE' +'DATETIME' +'DATETIMEV2' +'DATEV2' +'DATETIMEV1' +'DATEV1' +'DAY' +'DECIMAL' +'DECIMALV2' +'DECIMALV3' +'DECOMMISSION' +'DEFAULT' +'DEFERRED' +'DELETE' +'DEMAND' +'DESC' +'DESCRIBE' +'DIAGNOSE' +'DIAGNOSIS' +'DISK' +'DISTINCT' +'DISTINCTPC' +'DISTINCTPCSA' +'DISTRIBUTED' +'DISTRIBUTION' +'DIV' +'DO' +'DORIS_INTERNAL_TABLE_ID' +'DOUBLE' +'DROP' +'DROPP' +'DUAL' +'DUMP' +'DUPLICATE' +'DYNAMIC' +'E' +'ELSE' +'ENABLE' +'ENCRYPTKEY' +'ENCRYPTKEYS' +'END' +'ENDS' +'ENGINE' +'ENGINES' +'ENTER' +'ERRORS' +'EVENTS' +'EVERY' +'EXCEPT' +'EXCLUDE' +'EXECUTE' +'EXISTS' +'EXPIRED' +'EXPLAIN' +'EXPORT' +'EXTENDED' +'EXTERNAL' +'EXTRACT' +'FAILED_LOGIN_ATTEMPTS' +'FALSE' +'FAST' +'FEATURE' +'FIELDS' +'FILE' +'FILTER' +'FIRST' +'FLOAT' +'FOLLOWER' +'FOLLOWING' +'FOR' +'FOREIGN' +'FORCE' +'FORMAT' +'FREE' +'FROM' +'FRONTEND' +'FRONTENDS' +'FULL' +'FUNCTION' +'FUNCTIONS' +'GENERATED' +'GENERIC' +'GLOBAL' +'GRANT' +'GRANTS' +'GRAPH' +'GROUP' +'GROUPING' +'GROUPS' +'HASH' +'HAVING' +'HDFS' +'HELP' +'HISTOGRAM' +'HLL' +'HLL_UNION' +'HOSTNAME' +'HOTSPOT' +'HOUR' +'HUB' +'IDENTIFIED' +'IF' +'IGNORE' +'IMMEDIATE' +'IN' +'INCREMENTAL' +'INDEX' +'INDEXES' +'INFILE' +'INNER' +'INSERT' +'INSTALL' +'INT' +'INTEGER' +'INTERMEDIATE' +'INTERSECT' +'INTERVAL' +'INTO' +'INVERTED' +'IPV4' +'IPV6' +'IS' +'IS_NOT_NULL_PRED' +'IS_NULL_PRED' +'ISNULL' +'ISOLATION' +'JOB' +'JOBS' +'JOIN' +'JSON' +'JSONB' +'KEY' +'KEYS' +'KILL' +'LABEL' +'LARGEINT' +'LAST' +'LATERAL' +'LDAP' +'LDAP_ADMIN_PASSWORD' +'LEFT' +'LESS' +'LEVEL' +'LIKE' +'LIMIT' +'LINES' +'LINK' +'LIST' +'LOAD' +'LOCAL' +'LOCALTIME' +'LOCALTIMESTAMP' +'LOCATION' +'LOCK' +'LOGICAL' +'LOW_PRIORITY' +'MANUAL' +'MAP' +'MATCH' +'MATCH_ALL' +'MATCH_ANY' +'MATCH_PHRASE' +'MATCH_PHRASE_EDGE' +'MATCH_PHRASE_PREFIX' +'MATCH_REGEXP' +'MATCH_NAME' +'MATCH_NAME_GLOB' +'MATERIALIZED' +'MAX' +'MAXVALUE' +'MEMO' +'MERGE' +'MIGRATE' +'MIGRATIONS' +'MIN' +'MINUS' +'MINUTE' +'MODIFY' +'MONTH' +'MTMV' +'NAME' +'NAMES' +'NATURAL' +'NEGATIVE' +'NEVER' +'NEXT' +'NGRAM_BF' +'NO' +'NO_USE_MV' +'NON_NULLABLE' +'NOT' +'NULL' +'NULLS' +'OBSERVER' +'OF' +'OFFSET' +'ON' +'ONLY' +'OPEN' +'OPTIMIZED' +'OR' +'ORDER' +'OUTER' +'OUTFILE' +'OVER' +'OVERWRITE' +'PARAMETER' +'PARSED' +'PARTITION' +'PARTITIONS' +'PASSWORD' +'PASSWORD_EXPIRE' +'PASSWORD_HISTORY' +'PASSWORD_LOCK_TIME' +'PASSWORD_REUSE' +'PATH' +'PAUSE' +'PERCENT' +'PERIOD' +'PERMISSIVE' +'PHYSICAL' +'PI' +'?' +'PLAN' +'PLAY' +'PRIVILEGES' +'PROCESS' +'PLUGIN' +'PLUGINS' +'POLICY' +'PRECEDING' +'PREPARE' +'PRIMARY' +'PROC' +'PROCEDURE' +'PROCESSLIST' +'PROFILE' +'PROPERTIES' +'PROPERTY' +'QUANTILE_STATE' +'QUANTILE_UNION' +'QUERY' +'QUEUED' +'QUOTA' +'QUALIFY' +'QUARTER' +'RANDOM' +'RANGE' +'READ' +'REAL' +'REBALANCE' +'RECENT' +'RECOVER' +'RECYCLE' +'REFRESH' +'REFERENCES' +'REGEXP' +'RELEASE' +'RENAME' +'REPAIR' +'REPEATABLE' +'REPLACE' +'REPLACE_IF_NOT_NULL' +'REPLAYER' +'REPLICA' +'REPOSITORIES' +'REPOSITORY' +'RESOURCE' +'RESOURCES' +'RESTORE' +'RESTRICTIVE' +'RESUME' +'RETURNS' +'REVOKE' +'REWRITTEN' +'RIGHT' +'RLIKE' +'ROLE' +'ROLES' +'ROLLBACK' +'ROLLUP' +'ROUTINE' +'ROW' +'ROWS' +'S3' +'SAMPLE' +'SCHEDULE' +'SCHEDULER' +'SCHEMA' +'SCHEMAS' +'SECOND' +'SELECT' +'SEMI' +'SERIALIZABLE' +'SESSION' +'SESSION_USER' +'SET' +'SETS' +'SET_SESSION_VARIABLE' +'SHAPE' +'SHOW' +'SIGNED' +'SKEW' +'SMALLINT' +'SNAPSHOT' +'SONAME' +'SPLIT' +'SQL' +'SQL_BLOCK_RULE' +'STAGE' +'STAGES' +'START' +'STARTS' +'STATS' +'STATUS' +'STOP' +'STORAGE' +'STREAM' +'STREAMING' +'STRING' +'STRUCT' +'SUM' +'SUPERUSER' +'SWITCH' +'SYNC' +'SYSTEM' +'TABLE' +'TABLES' +'TABLESAMPLE' +'TABLET' +'TABLETS' +'TASK' +'TASKS' +'TEMPORARY' +'TERMINATED' +'TEXT' +'THAN' +'THEN' +'TIME' +'TIMESTAMP' +'TINYINT' +'TO' +'TRANSACTION' +'TRASH' +'TREE' +'TRIGGERS' +'TRIM' +'TRUE' +'TRUNCATE' +'TYPE' +'TYPE_CAST' +'TYPES' +'UNBOUNDED' +'UNCOMMITTED' +'UNINSTALL' +'UNION' +'UNIQUE' +'UNLOCK' +'UNSET' +'UNSIGNED' +'UP' +'UPDATE' +'USE' +'USER' +'USE_MV' +'USING' +'VALUE' +'VALUES' +'VARCHAR' +'VARIABLE' +'VARIABLES' +'VARIANT' +'VAULT' +'VAULTS' +'VERBOSE' +'VERSION' +'VIEW' +'VIEWS' +'WARM' +'WARNINGS' +'WEEK' +'WHEN' +'WHERE' +'WHITELIST' +'WITH' +'WORK' +'WORKLOAD' +'WRITE' +'XOR' +'YEAR' +null +'<=>' +null +'<' +null +'>' +null +'+' +'-' +'*' +'/' +'%' +'~' +'&' +'&&' +'!' +'|' +'||' +'^' +':' +'->' +'/*+' +'*/' +'/*' +'@' +'@@' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +SEMICOLON +LEFT_PAREN +RIGHT_PAREN +COMMA +DOT +DOTDOTDOT +LEFT_BRACKET +RIGHT_BRACKET +LEFT_BRACE +RIGHT_BRACE +ACCOUNT_LOCK +ACCOUNT_UNLOCK +ACTIONS +ADD +ADMIN +AFTER +AGG_STATE +AGGREGATE +ALIAS +ALL +ALTER +ANALYZE +ANALYZED +AND +ANTI +APPEND +ARRAY +AS +ASC +AT +AUTHORS +AUTO +AUTO_INCREMENT +ALWAYS +BACKEND +BACKENDS +BACKUP +BEGIN +BELONG +BETWEEN +BIGINT +BIN +BINARY +BINLOG +BITAND +BITMAP +BITMAP_EMPTY +BITMAP_UNION +BITOR +BITXOR +BLOB +BOOLEAN +BRIEF +BROKER +BUCKETS +BUILD +BUILTIN +BULK +BY +CACHE +CACHED +CALL +CANCEL +CASE +CAST +CATALOG +CATALOGS +CHAIN +CHAR +CHARSET +CHECK +CLEAN +CLUSTER +CLUSTERS +COLLATE +COLLATION +COLLECT +COLOCATE +COLUMN +COLUMNS +COMMENT +COMMIT +COMMITTED +COMPACT +COMPLETE +COMPRESS_TYPE +COMPUTE +CONDITIONS +CONFIG +CONNECTION +CONNECTION_ID +CONSISTENT +CONSTRAINT +CONSTRAINTS +CONVERT +CONVERT_LSC +COPY +COUNT +CREATE +CREATION +CRON +CROSS +CUBE +CURRENT +CURRENT_CATALOG +CURRENT_DATE +CURRENT_TIME +CURRENT_TIMESTAMP +CURRENT_USER +DATA +DATABASE +DATABASES +DATE +DATETIME +DATETIMEV2 +DATEV2 +DATETIMEV1 +DATEV1 +DAY +DECIMAL +DECIMALV2 +DECIMALV3 +DECOMMISSION +DEFAULT +DEFERRED +DELETE +DEMAND +DESC +DESCRIBE +DIAGNOSE +DIAGNOSIS +DISK +DISTINCT +DISTINCTPC +DISTINCTPCSA +DISTRIBUTED +DISTRIBUTION +DIV +DO +DORIS_INTERNAL_TABLE_ID +DOUBLE +DROP +DROPP +DUAL +DUMP +DUPLICATE +DYNAMIC +E +ELSE +ENABLE +ENCRYPTKEY +ENCRYPTKEYS +END +ENDS +ENGINE +ENGINES +ENTER +ERRORS +EVENTS +EVERY +EXCEPT +EXCLUDE +EXECUTE +EXISTS +EXPIRED +EXPLAIN +EXPORT +EXTENDED +EXTERNAL +EXTRACT +FAILED_LOGIN_ATTEMPTS +FALSE +FAST +FEATURE +FIELDS +FILE +FILTER +FIRST +FLOAT +FOLLOWER +FOLLOWING +FOR +FOREIGN +FORCE +FORMAT +FREE +FROM +FRONTEND +FRONTENDS +FULL +FUNCTION +FUNCTIONS +GENERATED +GENERIC +GLOBAL +GRANT +GRANTS +GRAPH +GROUP +GROUPING +GROUPS +HASH +HAVING +HDFS +HELP +HISTOGRAM +HLL +HLL_UNION +HOSTNAME +HOTSPOT +HOUR +HUB +IDENTIFIED +IF +IGNORE +IMMEDIATE +IN +INCREMENTAL +INDEX +INDEXES +INFILE +INNER +INSERT +INSTALL +INT +INTEGER +INTERMEDIATE +INTERSECT +INTERVAL +INTO +INVERTED +IPV4 +IPV6 +IS +IS_NOT_NULL_PRED +IS_NULL_PRED +ISNULL +ISOLATION +JOB +JOBS +JOIN +JSON +JSONB +KEY +KEYS +KILL +LABEL +LARGEINT +LAST +LATERAL +LDAP +LDAP_ADMIN_PASSWORD +LEFT +LESS +LEVEL +LIKE +LIMIT +LINES +LINK +LIST +LOAD +LOCAL +LOCALTIME +LOCALTIMESTAMP +LOCATION +LOCK +LOGICAL +LOW_PRIORITY +MANUAL +MAP +MATCH +MATCH_ALL +MATCH_ANY +MATCH_PHRASE +MATCH_PHRASE_EDGE +MATCH_PHRASE_PREFIX +MATCH_REGEXP +MATCH_NAME +MATCH_NAME_GLOB +MATERIALIZED +MAX +MAXVALUE +MEMO +MERGE +MIGRATE +MIGRATIONS +MIN +MINUS +MINUTE +MODIFY +MONTH +MTMV +NAME +NAMES +NATURAL +NEGATIVE +NEVER +NEXT +NGRAM_BF +NO +NO_USE_MV +NON_NULLABLE +NOT +NULL +NULLS +OBSERVER +OF +OFFSET +ON +ONLY +OPEN +OPTIMIZED +OR +ORDER +OUTER +OUTFILE +OVER +OVERWRITE +PARAMETER +PARSED +PARTITION +PARTITIONS +PASSWORD +PASSWORD_EXPIRE +PASSWORD_HISTORY +PASSWORD_LOCK_TIME +PASSWORD_REUSE +PATH +PAUSE +PERCENT +PERIOD +PERMISSIVE +PHYSICAL +PI +PLACEHOLDER +PLAN +PLAY +PRIVILEGES +PROCESS +PLUGIN +PLUGINS +POLICY +PRECEDING +PREPARE +PRIMARY +PROC +PROCEDURE +PROCESSLIST +PROFILE +PROPERTIES +PROPERTY +QUANTILE_STATE +QUANTILE_UNION +QUERY +QUEUED +QUOTA +QUALIFY +QUARTER +RANDOM +RANGE +READ +REAL +REBALANCE +RECENT +RECOVER +RECYCLE +REFRESH +REFERENCES +REGEXP +RELEASE +RENAME +REPAIR +REPEATABLE +REPLACE +REPLACE_IF_NOT_NULL +REPLAYER +REPLICA +REPOSITORIES +REPOSITORY +RESOURCE +RESOURCES +RESTORE +RESTRICTIVE +RESUME +RETURNS +REVOKE +REWRITTEN +RIGHT +RLIKE +ROLE +ROLES +ROLLBACK +ROLLUP +ROUTINE +ROW +ROWS +S3 +SAMPLE +SCHEDULE +SCHEDULER +SCHEMA +SCHEMAS +SECOND +SELECT +SEMI +SERIALIZABLE +SESSION +SESSION_USER +SET +SETS +SET_SESSION_VARIABLE +SHAPE +SHOW +SIGNED +SKEW +SMALLINT +SNAPSHOT +SONAME +SPLIT +SQL +SQL_BLOCK_RULE +STAGE +STAGES +START +STARTS +STATS +STATUS +STOP +STORAGE +STREAM +STREAMING +STRING +STRUCT +SUM +SUPERUSER +SWITCH +SYNC +SYSTEM +TABLE +TABLES +TABLESAMPLE +TABLET +TABLETS +TASK +TASKS +TEMPORARY +TERMINATED +TEXT +THAN +THEN +TIME +TIMESTAMP +TINYINT +TO +TRANSACTION +TRASH +TREE +TRIGGERS +TRIM +TRUE +TRUNCATE +TYPE +TYPECAST +TYPES +UNBOUNDED +UNCOMMITTED +UNINSTALL +UNION +UNIQUE +UNLOCK +UNSET +UNSIGNED +UP +UPDATE +USE +USER +USE_MV +USING +VALUE +VALUES +VARCHAR +VARIABLE +VARIABLES +VARIANT +VAULT +VAULTS +VERBOSE +VERSION +VIEW +VIEWS +WARM +WARNINGS +WEEK +WHEN +WHERE +WHITELIST +WITH +WORK +WORKLOAD +WRITE +XOR +YEAR +EQ +NSEQ +NEQ +LT +LTE +GT +GTE +PLUS +SUBTRACT +ASTERISK +SLASH +MOD +TILDE +AMPERSAND +LOGICALAND +LOGICALNOT +PIPE +DOUBLEPIPES +HAT +COLON +ARROW +HINT_START +HINT_END +COMMENT_START +ATSIGN +DOUBLEATSIGN +STRING_LITERAL +LEADING_STRING +BIGINT_LITERAL +SMALLINT_LITERAL +TINYINT_LITERAL +INTEGER_VALUE +EXPONENT_VALUE +DECIMAL_VALUE +BIGDECIMAL_LITERAL +IDENTIFIER +BACKQUOTED_IDENTIFIER +SIMPLE_COMMENT +BRACKETED_COMMENT +FROM_DUAL +WS +UNRECOGNIZED + +rule names: +multiStatements +singleStatement +statement +statementBase +unsupportedStatement +materializedViewStatement +supportedJobStatement +constraintStatement +supportedDmlStatement +supportedCreateStatement +supportedAlterStatement +supportedDropStatement +supportedShowStatement +supportedLoadStatement +supportedOtherStatement +unsupportedOtherStatement +warmUpItem +lockTable +unsupportedShowStatement +createRoutineLoad +unsupportedLoadStatement +loadProperty +importSequenceStatement +importDeleteOnStatement +importWhereStatement +importPrecedingFilterStatement +importColumnsStatement +importColumnDesc +channelDescriptions +channelDescription +supportedRefreshStatement +supportedCleanStatement +unsupportedRefreshStatement +unsupportedCleanStatement +supportedCancelStatement +unsupportedCancelStatement +supportedAdminStatement +supportedRecoverStatement +unsupportedAdminStatement +baseTableRef +wildWhere +unsupportedTransactionStatement +unsupportedGrantRevokeStatement +privilege +privilegeList +unsupportedAlterStatement +alterSystemClause +dropRollupClause +addRollupClause +alterTableClause +columnPosition +toRollup +fromRollup +unsupportedDropStatement +supportedStatsStatement +unsupportedStatsStatement +analyzeProperties +unsupportedCreateStatement +workloadPolicyActions +workloadPolicyAction +workloadPolicyConditions +workloadPolicyCondition +storageBackend +passwordOption +functionArguments +dataTypeList +supportedSetStatement +optionWithType +optionWithoutType +variable +transactionAccessMode +isolationLevel +supportedUnsetStatement +supportedUseStatement +unsupportedUseStatement +unsupportedDmlStatement +stageAndPattern +unsupportedKillStatement +supportedDescribeStatement +constraint +partitionSpec +partitionTable +identityOrFunctionList +identityOrFunction +dataDesc +statementScope +buildMode +refreshTrigger +refreshSchedule +refreshMethod +mvPartition +identifierOrText +identifierOrTextOrAsterisk +multipartIdentifierOrAsterisk +identifierOrAsterisk +userIdentify +grantUserIdentify +explain +explainCommand +planType +replayCommand +replayType +mergeType +preFilterClause +deleteOnClause +sequenceColClause +colFromPath +colMappingList +mappingExpr +withRemoteStorageSystem +resourceDesc +mysqlDataDesc +skipLines +outFileClause +query +queryTerm +setQuantifier +queryPrimary +querySpecification +cte +aliasQuery +columnAliases +selectClause +selectColumnClause +whereClause +fromClause +intoClause +bulkCollectClause +tableRow +relations +relation +joinRelation +distributeType +relationHint +aggClause +groupingElement +groupingSet +havingClause +qualifyClause +selectHint +hintStatement +hintAssignment +updateAssignment +updateAssignmentSeq +lateralView +queryOrganization +sortClause +sortItem +limitClause +partitionClause +joinType +joinCriteria +identifierList +identifierSeq +optScanParams +relationPrimary +materializedViewName +propertyClause +propertyItemList +propertyItem +propertyKey +propertyValue +tableAlias +multipartIdentifier +simpleColumnDefs +simpleColumnDef +columnDefs +columnDef +indexDefs +indexDef +partitionsDef +partitionDef +lessThanPartitionDef +fixedPartitionDef +stepPartitionDef +inPartitionDef +partitionValueList +partitionValueDef +rollupDefs +rollupDef +aggTypeDef +tabletList +inlineTable +namedExpression +namedExpressionSeq +expression +lambdaExpression +booleanExpression +rowConstructor +rowConstructorItem +predicate +valueExpression +primaryExpression +exceptOrReplace +castDataType +functionCallExpression +functionIdentifier +functionNameIdentifier +windowSpec +windowFrame +frameUnits +frameBoundary +qualifiedName +specifiedPartition +constant +comparisonOperator +booleanValue +whenClause +interval +unitIdentifier +dataTypeWithNullable +dataType +primitiveColType +complexColTypeList +complexColType +variantSubColTypeList +variantSubColType +variantSubColMatchType +commentSpec +sample +sampleMethod +tableSnapshot +errorCapturingIdentifier +errorCapturingIdentifierExtra +identifier +strictIdentifier +quotedIdentifier +number +nonReserved + + +atn: +[4, 1, 544, 6150, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 1, 0, 5, 0, 460, 8, 0, 10, 0, 12, 0, 463, 9, 0, 1, 0, 3, 0, 466, 8, 0, 1, 0, 4, 0, 469, 8, 0, 11, 0, 12, 0, 470, 1, 0, 5, 0, 474, 8, 0, 10, 0, 12, 0, 477, 9, 0, 1, 0, 5, 0, 480, 8, 0, 10, 0, 12, 0, 483, 9, 0, 1, 0, 1, 0, 1, 1, 5, 1, 488, 8, 1, 10, 1, 12, 1, 491, 9, 1, 1, 1, 3, 1, 494, 8, 1, 1, 1, 5, 1, 497, 8, 1, 10, 1, 12, 1, 500, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 511, 8, 2, 10, 2, 12, 2, 514, 9, 2, 3, 2, 516, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 524, 8, 2, 1, 2, 3, 2, 527, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 533, 8, 2, 10, 2, 12, 2, 536, 9, 2, 1, 2, 1, 2, 5, 2, 540, 8, 2, 10, 2, 12, 2, 543, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 549, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 558, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 565, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 572, 8, 2, 1, 2, 1, 2, 3, 2, 576, 8, 2, 3, 2, 578, 8, 2, 1, 3, 3, 3, 581, 8, 3, 1, 3, 1, 3, 3, 3, 585, 8, 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, 608, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 626, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 634, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 641, 8, 5, 1, 5, 3, 5, 644, 8, 5, 1, 5, 1, 5, 3, 5, 648, 8, 5, 1, 5, 3, 5, 651, 8, 5, 3, 5, 653, 8, 5, 1, 5, 3, 5, 656, 8, 5, 1, 5, 1, 5, 3, 5, 660, 8, 5, 1, 5, 1, 5, 3, 5, 664, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 672, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 679, 8, 5, 1, 5, 1, 5, 3, 5, 683, 8, 5, 3, 5, 685, 8, 5, 1, 5, 3, 5, 688, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 700, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 714, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 722, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 729, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 736, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 741, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 767, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 780, 8, 6, 3, 6, 782, 8, 6, 1, 6, 1, 6, 3, 6, 786, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 791, 8, 6, 3, 6, 793, 8, 6, 1, 6, 3, 6, 796, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 804, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 810, 8, 6, 1, 6, 3, 6, 813, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 818, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 823, 8, 6, 3, 6, 825, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 846, 8, 7, 1, 8, 3, 8, 849, 8, 8, 1, 8, 3, 8, 852, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 858, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 865, 8, 8, 1, 8, 3, 8, 868, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 873, 8, 8, 1, 8, 3, 8, 876, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 882, 8, 8, 1, 8, 1, 8, 3, 8, 886, 8, 8, 1, 8, 3, 8, 889, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 897, 8, 8, 1, 8, 3, 8, 900, 8, 8, 1, 8, 3, 8, 903, 8, 8, 1, 8, 3, 8, 906, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 912, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 917, 8, 8, 1, 8, 3, 8, 920, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 929, 8, 8, 10, 8, 12, 8, 932, 9, 8, 1, 8, 1, 8, 3, 8, 936, 8, 8, 1, 8, 3, 8, 939, 8, 8, 1, 8, 3, 8, 942, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 949, 8, 8, 1, 8, 3, 8, 952, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 957, 8, 8, 1, 8, 3, 8, 960, 8, 8, 1, 8, 3, 8, 963, 8, 8, 1, 9, 1, 9, 3, 9, 967, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 973, 8, 9, 1, 9, 1, 9, 3, 9, 977, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 983, 8, 9, 1, 9, 3, 9, 986, 8, 9, 1, 9, 1, 9, 3, 9, 990, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 995, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1003, 8, 9, 3, 9, 1005, 8, 9, 1, 9, 1, 9, 3, 9, 1009, 8, 9, 1, 9, 3, 9, 1012, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1019, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1024, 8, 9, 3, 9, 1026, 8, 9, 3, 9, 1028, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1035, 8, 9, 1, 9, 3, 9, 1038, 8, 9, 1, 9, 1, 9, 3, 9, 1042, 8, 9, 1, 9, 1, 9, 3, 9, 1046, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1051, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1057, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1064, 8, 9, 1, 9, 1, 9, 3, 9, 1068, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1078, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1083, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1089, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1097, 8, 9, 3, 9, 1099, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1106, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1111, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1119, 8, 9, 1, 9, 1, 9, 3, 9, 1123, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1130, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1136, 8, 9, 1, 9, 1, 9, 3, 9, 1140, 8, 9, 1, 9, 3, 9, 1143, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1151, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1162, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1175, 8, 9, 1, 9, 1, 9, 3, 9, 1179, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1187, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1194, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1202, 8, 9, 1, 9, 3, 9, 1205, 8, 9, 1, 9, 1, 9, 3, 9, 1209, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1216, 8, 9, 1, 9, 1, 9, 3, 9, 1220, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1227, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1235, 8, 9, 1, 9, 3, 9, 1238, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1244, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1249, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1256, 8, 9, 1, 9, 3, 9, 1259, 8, 9, 1, 9, 1, 9, 3, 9, 1263, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1270, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1275, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1282, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1288, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1302, 8, 10, 1, 10, 1, 10, 3, 10, 1306, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1335, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1351, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1357, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1383, 8, 10, 10, 10, 12, 10, 1386, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1396, 8, 10, 10, 10, 12, 10, 1399, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1409, 8, 10, 10, 10, 12, 10, 1412, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1430, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1444, 8, 10, 3, 10, 1446, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1460, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1467, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1474, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1481, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1489, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1497, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1504, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1512, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1520, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1530, 8, 11, 1, 11, 1, 11, 3, 11, 1534, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1540, 8, 11, 1, 11, 1, 11, 3, 11, 1544, 8, 11, 1, 11, 1, 11, 3, 11, 1548, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1553, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1558, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1566, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1572, 8, 11, 1, 12, 1, 12, 3, 12, 1576, 8, 12, 1, 12, 1, 12, 3, 12, 1580, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1596, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1602, 8, 12, 1, 12, 3, 12, 1605, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1614, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1620, 8, 12, 1, 12, 1, 12, 3, 12, 1624, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1636, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1642, 8, 12, 1, 12, 3, 12, 1645, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1658, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1668, 8, 12, 1, 12, 1, 12, 3, 12, 1672, 8, 12, 1, 12, 1, 12, 3, 12, 1676, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1683, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1700, 8, 12, 1, 12, 1, 12, 3, 12, 1704, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1717, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1723, 8, 12, 1, 12, 1, 12, 3, 12, 1727, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1734, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1739, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1747, 8, 12, 3, 12, 1749, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1755, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1767, 8, 12, 1, 12, 1, 12, 3, 12, 1771, 8, 12, 1, 12, 3, 12, 1774, 8, 12, 1, 12, 3, 12, 1777, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1790, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1809, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1814, 8, 12, 1, 12, 3, 12, 1817, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1826, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1838, 8, 12, 1, 12, 1, 12, 3, 12, 1842, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 1853, 8, 12, 10, 12, 12, 12, 1856, 9, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1868, 8, 12, 1, 12, 1, 12, 3, 12, 1872, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1879, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1885, 8, 12, 1, 12, 3, 12, 1888, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1894, 8, 12, 1, 12, 1, 12, 3, 12, 1898, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1903, 8, 12, 1, 12, 3, 12, 1906, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1913, 8, 12, 1, 12, 3, 12, 1916, 8, 12, 3, 12, 1918, 8, 12, 1, 13, 1, 13, 3, 13, 1922, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1932, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 1942, 8, 15, 10, 15, 12, 15, 1945, 9, 15, 3, 15, 1947, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1956, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1963, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 1969, 8, 15, 10, 15, 12, 15, 1972, 9, 15, 3, 15, 1974, 8, 15, 1, 15, 3, 15, 1977, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 1989, 8, 15, 10, 15, 12, 15, 1992, 9, 15, 1, 15, 1, 15, 3, 15, 1996, 8, 15, 1, 15, 3, 15, 1999, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 2011, 8, 15, 10, 15, 12, 15, 2014, 9, 15, 1, 15, 1, 15, 3, 15, 2018, 8, 15, 1, 15, 3, 15, 2021, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 2028, 8, 15, 3, 15, 2030, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 2036, 8, 16, 1, 17, 1, 17, 1, 17, 3, 17, 2041, 8, 17, 1, 17, 1, 17, 3, 17, 2045, 8, 17, 1, 17, 3, 17, 2048, 8, 17, 1, 17, 3, 17, 2051, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2060, 8, 18, 3, 18, 2062, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2072, 8, 18, 1, 18, 3, 18, 2075, 8, 18, 1, 18, 1, 18, 3, 18, 2079, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2084, 8, 18, 1, 18, 3, 18, 2087, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2097, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2103, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2108, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2114, 8, 18, 1, 18, 3, 18, 2117, 8, 18, 1, 18, 1, 18, 3, 18, 2121, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2128, 8, 18, 1, 18, 3, 18, 2131, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2138, 8, 18, 1, 18, 3, 18, 2141, 8, 18, 1, 18, 3, 18, 2144, 8, 18, 1, 18, 1, 18, 3, 18, 2148, 8, 18, 1, 18, 1, 18, 3, 18, 2152, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2157, 8, 18, 1, 18, 3, 18, 2160, 8, 18, 1, 18, 3, 18, 2163, 8, 18, 1, 18, 3, 18, 2166, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2172, 8, 18, 1, 18, 3, 18, 2175, 8, 18, 1, 18, 3, 18, 2178, 8, 18, 1, 18, 3, 18, 2181, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2190, 8, 18, 1, 18, 1, 18, 3, 18, 2194, 8, 18, 1, 18, 3, 18, 2197, 8, 18, 1, 18, 3, 18, 2200, 8, 18, 1, 18, 3, 18, 2203, 8, 18, 1, 18, 1, 18, 3, 18, 2207, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2213, 8, 18, 1, 18, 3, 18, 2216, 8, 18, 1, 18, 3, 18, 2219, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2229, 8, 18, 1, 18, 3, 18, 2232, 8, 18, 1, 18, 3, 18, 2235, 8, 18, 1, 18, 3, 18, 2238, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2244, 8, 18, 1, 18, 3, 18, 2247, 8, 18, 1, 18, 1, 18, 3, 18, 2251, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2256, 8, 18, 1, 18, 3, 18, 2259, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2264, 8, 18, 1, 18, 3, 18, 2267, 8, 18, 1, 18, 3, 18, 2270, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2276, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2283, 8, 18, 1, 18, 1, 18, 3, 18, 2287, 8, 18, 1, 18, 3, 18, 2290, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2295, 8, 18, 1, 18, 3, 18, 2298, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2303, 8, 18, 1, 18, 1, 18, 3, 18, 2307, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2313, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2321, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2327, 8, 18, 1, 18, 3, 18, 2330, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2341, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2352, 8, 18, 3, 18, 2354, 8, 18, 3, 18, 2356, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2363, 8, 18, 1, 18, 3, 18, 2366, 8, 18, 1, 18, 3, 18, 2369, 8, 18, 1, 18, 3, 18, 2372, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2378, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2386, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2392, 8, 18, 1, 18, 3, 18, 2395, 8, 18, 1, 18, 3, 18, 2398, 8, 18, 1, 18, 3, 18, 2401, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2408, 8, 18, 3, 18, 2410, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2418, 8, 19, 1, 19, 1, 19, 3, 19, 2422, 8, 19, 1, 19, 1, 19, 1, 19, 5, 19, 2427, 8, 19, 10, 19, 12, 19, 2430, 9, 19, 3, 19, 2432, 8, 19, 1, 19, 3, 19, 2435, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2443, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2452, 8, 20, 1, 20, 3, 20, 2455, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2469, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2508, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2515, 8, 20, 3, 20, 2517, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2525, 8, 20, 1, 20, 3, 20, 2528, 8, 20, 1, 20, 1, 20, 3, 20, 2532, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2544, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 2556, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 2578, 8, 26, 10, 26, 12, 26, 2581, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 3, 27, 2588, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 2594, 8, 27, 1, 27, 1, 27, 3, 27, 2598, 8, 27, 1, 28, 1, 28, 1, 28, 5, 28, 2603, 8, 28, 10, 28, 12, 28, 2606, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 2613, 8, 29, 1, 29, 3, 29, 2616, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2622, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2628, 8, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2633, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 2641, 8, 31, 1, 31, 1, 31, 3, 31, 2645, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 2652, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 2661, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 2667, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2673, 8, 34, 1, 34, 3, 34, 2676, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2682, 8, 34, 1, 34, 3, 34, 2685, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2692, 8, 34, 3, 34, 2694, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2703, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 2711, 8, 35, 10, 35, 12, 35, 2714, 9, 35, 1, 35, 3, 35, 2717, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 2728, 8, 35, 10, 35, 12, 35, 2731, 9, 35, 1, 35, 3, 35, 2734, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 2742, 8, 35, 10, 35, 12, 35, 2745, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2751, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2757, 8, 35, 3, 35, 2759, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 2775, 8, 36, 10, 36, 12, 36, 2778, 9, 36, 1, 36, 3, 36, 2781, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 2792, 8, 36, 10, 36, 12, 36, 2795, 9, 36, 1, 36, 3, 36, 2798, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2815, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2825, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2831, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2839, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 2849, 8, 36, 10, 36, 12, 36, 2852, 9, 36, 1, 36, 3, 36, 2855, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2863, 8, 36, 3, 36, 2865, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2871, 8, 37, 1, 37, 1, 37, 3, 37, 2875, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2881, 8, 37, 1, 37, 1, 37, 3, 37, 2885, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2891, 8, 37, 1, 37, 1, 37, 3, 37, 2895, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2900, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2934, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2941, 8, 38, 1, 38, 3, 38, 2944, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2953, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2960, 8, 38, 3, 38, 2962, 8, 38, 1, 39, 1, 39, 3, 39, 2966, 8, 39, 1, 39, 3, 39, 2969, 8, 39, 1, 39, 3, 39, 2972, 8, 39, 1, 39, 3, 39, 2975, 8, 39, 1, 39, 1, 39, 3, 39, 2979, 8, 39, 1, 39, 3, 39, 2982, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 2988, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 2994, 8, 41, 3, 41, 2996, 8, 41, 1, 41, 1, 41, 3, 41, 3000, 8, 41, 1, 41, 1, 41, 3, 41, 3004, 8, 41, 1, 41, 3, 41, 3007, 8, 41, 1, 41, 3, 41, 3010, 8, 41, 1, 41, 3, 41, 3013, 8, 41, 1, 41, 1, 41, 3, 41, 3017, 8, 41, 1, 41, 1, 41, 3, 41, 3021, 8, 41, 1, 41, 3, 41, 3024, 8, 41, 1, 41, 3, 41, 3027, 8, 41, 1, 41, 3, 41, 3030, 8, 41, 3, 41, 3032, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3042, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3056, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3063, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 3069, 8, 42, 10, 42, 12, 42, 3072, 9, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3084, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3098, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3105, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 3111, 8, 42, 10, 42, 12, 42, 3114, 9, 42, 1, 42, 1, 42, 3, 42, 3118, 8, 42, 1, 43, 1, 43, 3, 43, 3122, 8, 43, 1, 43, 3, 43, 3125, 8, 43, 1, 44, 1, 44, 1, 44, 5, 44, 3130, 8, 44, 10, 44, 12, 44, 3133, 9, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3148, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3165, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3173, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3185, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3191, 8, 45, 3, 45, 3193, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3200, 8, 46, 10, 46, 12, 46, 3203, 9, 46, 1, 46, 3, 46, 3206, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3213, 8, 46, 10, 46, 12, 46, 3216, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3223, 8, 46, 10, 46, 12, 46, 3226, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3246, 8, 46, 10, 46, 12, 46, 3249, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3257, 8, 46, 10, 46, 12, 46, 3260, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 3271, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3278, 8, 46, 10, 46, 12, 46, 3281, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 3293, 8, 46, 1, 47, 1, 47, 3, 47, 3297, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 3304, 8, 48, 1, 48, 3, 48, 3307, 8, 48, 1, 48, 3, 48, 3310, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3316, 8, 49, 1, 49, 3, 49, 3319, 8, 49, 1, 49, 3, 49, 3322, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3330, 8, 49, 1, 49, 3, 49, 3333, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3339, 8, 49, 1, 49, 3, 49, 3342, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3348, 8, 49, 1, 49, 3, 49, 3351, 8, 49, 1, 49, 3, 49, 3354, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3360, 8, 49, 1, 49, 3, 49, 3363, 8, 49, 1, 49, 1, 49, 3, 49, 3367, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3375, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3380, 8, 49, 3, 49, 3382, 8, 49, 3, 49, 3384, 8, 49, 1, 49, 3, 49, 3387, 8, 49, 1, 49, 1, 49, 3, 49, 3391, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3396, 8, 49, 1, 49, 1, 49, 3, 49, 3400, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3405, 8, 49, 1, 49, 1, 49, 3, 49, 3409, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3417, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3426, 8, 49, 1, 49, 1, 49, 3, 49, 3430, 8, 49, 1, 49, 3, 49, 3433, 8, 49, 1, 49, 3, 49, 3436, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3443, 8, 49, 1, 49, 3, 49, 3446, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3471, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3479, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3488, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3493, 8, 49, 3, 49, 3495, 8, 49, 3, 49, 3497, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3513, 8, 49, 1, 49, 1, 49, 3, 49, 3517, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3527, 8, 49, 1, 49, 3, 49, 3530, 8, 49, 3, 49, 3532, 8, 49, 1, 50, 1, 50, 1, 50, 3, 50, 3537, 8, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3549, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3556, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3564, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3573, 8, 53, 3, 53, 3575, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3581, 8, 53, 1, 53, 3, 53, 3584, 8, 53, 1, 54, 1, 54, 3, 54, 3588, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3593, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3600, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3607, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3614, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 3627, 8, 54, 10, 54, 12, 54, 3630, 9, 54, 1, 54, 3, 54, 3633, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3639, 8, 54, 1, 54, 3, 54, 3642, 8, 54, 1, 54, 1, 54, 5, 54, 3646, 8, 54, 10, 54, 12, 54, 3649, 9, 54, 1, 54, 3, 54, 3652, 8, 54, 3, 54, 3654, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3665, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3672, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3683, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3689, 8, 55, 1, 55, 3, 55, 3692, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3713, 8, 55, 1, 55, 3, 55, 3716, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3731, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3736, 8, 55, 1, 55, 3, 55, 3739, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3746, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 3758, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 3766, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3773, 8, 57, 1, 57, 1, 57, 3, 57, 3777, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3784, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3791, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3796, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3801, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3810, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3816, 8, 57, 1, 57, 1, 57, 3, 57, 3820, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3828, 8, 57, 1, 57, 1, 57, 3, 57, 3832, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3840, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3848, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3855, 8, 57, 1, 57, 3, 57, 3858, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3865, 8, 57, 1, 57, 1, 57, 3, 57, 3869, 8, 57, 3, 57, 3871, 8, 57, 1, 58, 1, 58, 1, 58, 5, 58, 3876, 8, 58, 10, 58, 12, 58, 3879, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 3885, 8, 59, 3, 59, 3887, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 3892, 8, 60, 10, 60, 12, 60, 3895, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 3901, 8, 61, 1, 62, 1, 62, 3, 62, 3905, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 3911, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 3916, 8, 63, 3, 63, 3918, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 3926, 8, 63, 3, 63, 3928, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 3935, 8, 63, 3, 63, 3937, 8, 63, 1, 63, 1, 63, 3, 63, 3941, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 3947, 8, 63, 3, 63, 3949, 8, 63, 1, 63, 3, 63, 3952, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 3960, 8, 64, 1, 65, 1, 65, 1, 65, 5, 65, 3965, 8, 65, 10, 65, 12, 65, 3968, 9, 65, 1, 66, 1, 66, 1, 66, 3, 66, 3973, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 3978, 8, 66, 5, 66, 3980, 8, 66, 10, 66, 12, 66, 3983, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 3996, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 4001, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 4014, 8, 66, 3, 66, 4016, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 4023, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4031, 8, 68, 1, 68, 1, 68, 3, 68, 4035, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4040, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4045, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4050, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4058, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4067, 8, 68, 1, 68, 3, 68, 4070, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 4076, 8, 69, 3, 69, 4078, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 4084, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 4091, 8, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 4105, 8, 71, 1, 72, 1, 72, 3, 72, 4109, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 4114, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 4120, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 4128, 8, 73, 1, 73, 3, 73, 4131, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 4137, 8, 74, 1, 74, 3, 74, 4140, 8, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 4149, 8, 75, 1, 75, 3, 75, 4152, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 4158, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 4168, 8, 75, 1, 75, 1, 75, 3, 75, 4172, 8, 75, 1, 75, 3, 75, 4175, 8, 75, 3, 75, 4177, 8, 75, 1, 76, 1, 76, 1, 76, 3, 76, 4182, 8, 76, 1, 76, 1, 76, 1, 76, 3, 76, 4187, 8, 76, 1, 77, 1, 77, 3, 77, 4191, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 4197, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 4204, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 4216, 8, 78, 3, 78, 4218, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 4232, 8, 79, 1, 80, 3, 80, 4235, 8, 80, 1, 80, 1, 80, 1, 80, 3, 80, 4240, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 4248, 8, 80, 1, 81, 3, 81, 4251, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 4256, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 4261, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 4269, 8, 82, 10, 82, 12, 82, 4272, 9, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 4278, 8, 83, 1, 84, 3, 84, 4281, 8, 84, 1, 84, 3, 84, 4284, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 5, 84, 4292, 8, 84, 10, 84, 12, 84, 4295, 9, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4302, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4308, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4314, 8, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4319, 8, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4324, 8, 84, 1, 84, 3, 84, 4327, 8, 84, 1, 84, 3, 84, 4330, 8, 84, 1, 84, 3, 84, 4333, 8, 84, 1, 84, 3, 84, 4336, 8, 84, 1, 84, 3, 84, 4339, 8, 84, 1, 84, 3, 84, 4342, 8, 84, 1, 84, 3, 84, 4345, 8, 84, 1, 84, 3, 84, 4348, 8, 84, 1, 84, 3, 84, 4351, 8, 84, 1, 84, 3, 84, 4354, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4365, 8, 84, 1, 84, 3, 84, 4368, 8, 84, 1, 84, 3, 84, 4371, 8, 84, 1, 84, 3, 84, 4374, 8, 84, 1, 84, 3, 84, 4377, 8, 84, 3, 84, 4379, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 4393, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 4400, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 3, 90, 4406, 8, 90, 1, 91, 1, 91, 3, 91, 4410, 8, 91, 1, 92, 1, 92, 1, 92, 3, 92, 4415, 8, 92, 1, 93, 1, 93, 1, 93, 5, 93, 4420, 8, 93, 10, 93, 12, 93, 4423, 9, 93, 1, 94, 1, 94, 3, 94, 4427, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 4436, 8, 95, 3, 95, 4438, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 4444, 8, 96, 1, 96, 3, 96, 4447, 8, 96, 1, 97, 1, 97, 3, 97, 4451, 8, 97, 1, 97, 3, 97, 4454, 8, 97, 1, 97, 3, 97, 4457, 8, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 4471, 8, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 5, 107, 4498, 8, 107, 10, 107, 12, 107, 4501, 9, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 4535, 8, 109, 3, 109, 4537, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 4546, 8, 110, 1, 111, 1, 111, 3, 111, 4550, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 4559, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 4565, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 4571, 8, 111, 1, 111, 3, 111, 4574, 8, 111, 1, 111, 3, 111, 4577, 8, 111, 1, 111, 3, 111, 4580, 8, 111, 1, 111, 3, 111, 4583, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 4591, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 4599, 8, 113, 1, 113, 3, 113, 4602, 8, 113, 1, 114, 3, 114, 4605, 8, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 4616, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 4622, 8, 115, 1, 115, 5, 115, 4625, 8, 115, 10, 115, 12, 115, 4628, 9, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 4638, 8, 117, 1, 118, 1, 118, 3, 118, 4642, 8, 118, 1, 118, 3, 118, 4645, 8, 118, 1, 118, 3, 118, 4648, 8, 118, 1, 118, 3, 118, 4651, 8, 118, 1, 118, 3, 118, 4654, 8, 118, 1, 118, 3, 118, 4657, 8, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 4666, 8, 119, 10, 119, 12, 119, 4669, 9, 119, 1, 120, 1, 120, 3, 120, 4673, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 4684, 8, 121, 10, 121, 12, 121, 4687, 9, 121, 1, 121, 1, 121, 1, 122, 1, 122, 3, 122, 4693, 8, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 3, 126, 4706, 8, 126, 1, 126, 1, 126, 1, 126, 3, 126, 4711, 8, 126, 1, 126, 1, 126, 1, 126, 3, 126, 4716, 8, 126, 5, 126, 4718, 8, 126, 10, 126, 12, 126, 4721, 9, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 5, 129, 4734, 8, 129, 10, 129, 12, 129, 4737, 9, 129, 1, 130, 1, 130, 5, 130, 4741, 8, 130, 10, 130, 12, 130, 4744, 9, 130, 1, 131, 1, 131, 1, 131, 3, 131, 4749, 8, 131, 1, 131, 1, 131, 3, 131, 4753, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 4763, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 4769, 8, 133, 10, 133, 12, 133, 4772, 9, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 4780, 8, 133, 10, 133, 12, 133, 4783, 9, 133, 1, 133, 1, 133, 3, 133, 4787, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4798, 8, 135, 10, 135, 12, 135, 4801, 9, 135, 3, 135, 4803, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4811, 8, 135, 10, 135, 12, 135, 4814, 9, 135, 3, 135, 4816, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4825, 8, 135, 10, 135, 12, 135, 4828, 9, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4835, 8, 135, 10, 135, 12, 135, 4838, 9, 135, 3, 135, 4840, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 5, 136, 4846, 8, 136, 10, 136, 12, 136, 4849, 9, 136, 3, 136, 4851, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 4863, 8, 139, 1, 139, 5, 139, 4866, 8, 139, 10, 139, 12, 139, 4869, 9, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 4877, 8, 140, 1, 140, 5, 140, 4880, 8, 140, 10, 140, 12, 140, 4883, 9, 140, 1, 140, 1, 140, 3, 140, 4887, 8, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 4894, 8, 140, 10, 140, 12, 140, 4897, 9, 140, 1, 140, 1, 140, 3, 140, 4901, 8, 140, 3, 140, 4903, 8, 140, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 4909, 8, 141, 3, 141, 4911, 8, 141, 1, 141, 3, 141, 4914, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4920, 8, 142, 1, 143, 1, 143, 1, 143, 5, 143, 4925, 8, 143, 10, 143, 12, 143, 4928, 9, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 5, 144, 4937, 8, 144, 10, 144, 12, 144, 4940, 9, 144, 3, 144, 4942, 8, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 5, 144, 4950, 8, 144, 10, 144, 12, 144, 4953, 9, 144, 1, 145, 3, 145, 4956, 8, 145, 1, 145, 3, 145, 4959, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 4966, 8, 146, 10, 146, 12, 146, 4969, 9, 146, 1, 147, 1, 147, 3, 147, 4973, 8, 147, 1, 147, 1, 147, 3, 147, 4977, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 4989, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 5, 149, 4996, 8, 149, 10, 149, 12, 149, 4999, 9, 149, 1, 150, 3, 150, 5002, 8, 150, 1, 150, 1, 150, 1, 150, 3, 150, 5007, 8, 150, 1, 150, 1, 150, 3, 150, 5011, 8, 150, 1, 150, 1, 150, 3, 150, 5015, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 5025, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 5031, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 5, 153, 5040, 8, 153, 10, 153, 12, 153, 5043, 9, 153, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 5049, 8, 154, 1, 154, 1, 154, 1, 155, 1, 155, 3, 155, 5055, 8, 155, 1, 155, 3, 155, 5058, 8, 155, 1, 155, 3, 155, 5061, 8, 155, 1, 155, 3, 155, 5064, 8, 155, 1, 155, 3, 155, 5067, 8, 155, 1, 155, 1, 155, 3, 155, 5071, 8, 155, 1, 155, 3, 155, 5074, 8, 155, 1, 155, 5, 155, 5077, 8, 155, 10, 155, 12, 155, 5080, 9, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 5087, 8, 155, 10, 155, 12, 155, 5090, 9, 155, 1, 155, 1, 155, 1, 155, 3, 155, 5095, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 5104, 8, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 5117, 8, 158, 10, 158, 12, 158, 5120, 9, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 3, 160, 5128, 8, 160, 1, 161, 1, 161, 3, 161, 5132, 8, 161, 1, 162, 3, 162, 5135, 8, 162, 1, 162, 1, 162, 3, 162, 5139, 8, 162, 3, 162, 5141, 8, 162, 1, 163, 1, 163, 1, 163, 5, 163, 5146, 8, 163, 10, 163, 12, 163, 5149, 9, 163, 1, 164, 1, 164, 1, 164, 5, 164, 5154, 8, 164, 10, 164, 12, 164, 5157, 9, 164, 1, 165, 1, 165, 1, 165, 3, 165, 5162, 8, 165, 1, 166, 1, 166, 1, 166, 5, 166, 5167, 8, 166, 10, 166, 12, 166, 5170, 9, 166, 1, 167, 1, 167, 1, 167, 3, 167, 5175, 8, 167, 1, 167, 3, 167, 5178, 8, 167, 1, 167, 1, 167, 3, 167, 5182, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5189, 8, 167, 1, 167, 3, 167, 5192, 8, 167, 1, 167, 3, 167, 5195, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5202, 8, 167, 3, 167, 5204, 8, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5209, 8, 167, 1, 167, 1, 167, 3, 167, 5213, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5226, 8, 167, 3, 167, 5228, 8, 167, 3, 167, 5230, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5239, 8, 167, 3, 167, 5241, 8, 167, 1, 167, 1, 167, 3, 167, 5245, 8, 167, 1, 168, 1, 168, 1, 168, 5, 168, 5250, 8, 168, 10, 168, 12, 168, 5253, 9, 168, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 5259, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 5265, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 5272, 8, 169, 1, 169, 1, 169, 3, 169, 5276, 8, 169, 1, 170, 1, 170, 1, 170, 5, 170, 5281, 8, 170, 10, 170, 12, 170, 5284, 9, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 5290, 8, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 5296, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 5302, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 5310, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 5316, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 5333, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 5339, 8, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 5, 175, 5348, 8, 175, 10, 175, 12, 175, 5351, 9, 175, 1, 175, 1, 175, 1, 175, 3, 175, 5356, 8, 175, 3, 175, 5358, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 5364, 8, 176, 10, 176, 12, 176, 5367, 9, 176, 1, 176, 1, 176, 1, 177, 3, 177, 5372, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 5378, 8, 177, 1, 178, 1, 178, 1, 178, 5, 178, 5383, 8, 178, 10, 178, 12, 178, 5386, 9, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 5393, 8, 179, 1, 179, 3, 179, 5396, 8, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 5405, 8, 181, 10, 181, 12, 181, 5408, 9, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 5416, 8, 182, 10, 182, 12, 182, 5419, 9, 182, 1, 183, 1, 183, 3, 183, 5423, 8, 183, 1, 183, 3, 183, 5426, 8, 183, 1, 184, 1, 184, 1, 184, 5, 184, 5431, 8, 184, 10, 184, 12, 184, 5434, 9, 184, 1, 185, 1, 185, 3, 185, 5438, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 4, 186, 5448, 8, 186, 11, 186, 12, 186, 5449, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 5456, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 5478, 8, 187, 1, 187, 1, 187, 3, 187, 5482, 8, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 5, 187, 5496, 8, 187, 10, 187, 12, 187, 5499, 9, 187, 1, 188, 1, 188, 1, 188, 1, 188, 5, 188, 5505, 8, 188, 10, 188, 12, 188, 5508, 9, 188, 3, 188, 5510, 8, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 3, 189, 5517, 8, 189, 1, 190, 3, 190, 5520, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5528, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5533, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5538, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5546, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 5553, 8, 190, 10, 190, 12, 190, 5556, 9, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5562, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5567, 8, 190, 1, 190, 3, 190, 5570, 8, 190, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 5576, 8, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 5597, 8, 191, 10, 191, 12, 191, 5600, 9, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 4, 192, 5612, 8, 192, 11, 192, 12, 192, 5613, 1, 192, 1, 192, 3, 192, 5618, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 4, 192, 5625, 8, 192, 11, 192, 12, 192, 5626, 1, 192, 1, 192, 3, 192, 5631, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 5646, 8, 192, 10, 192, 12, 192, 5649, 9, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 5655, 8, 192, 10, 192, 12, 192, 5658, 9, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 5665, 8, 192, 10, 192, 12, 192, 5668, 9, 192, 1, 192, 1, 192, 3, 192, 5672, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5700, 8, 192, 1, 192, 1, 192, 3, 192, 5704, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5715, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5723, 8, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5728, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5740, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5752, 8, 192, 5, 192, 5754, 8, 192, 10, 192, 12, 192, 5757, 9, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 5769, 8, 193, 1, 194, 1, 194, 1, 194, 3, 194, 5774, 8, 194, 3, 194, 5776, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 5781, 8, 195, 1, 195, 1, 195, 1, 195, 5, 195, 5786, 8, 195, 10, 195, 12, 195, 5789, 9, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 5, 195, 5796, 8, 195, 10, 195, 12, 195, 5799, 9, 195, 3, 195, 5801, 8, 195, 3, 195, 5803, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 5808, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 5813, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 5833, 8, 197, 1, 198, 1, 198, 3, 198, 5837, 8, 198, 1, 198, 3, 198, 5840, 8, 198, 1, 198, 3, 198, 5843, 8, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 5856, 8, 199, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 5867, 8, 201, 1, 202, 1, 202, 1, 202, 5, 202, 5872, 8, 202, 10, 202, 12, 202, 5875, 9, 202, 1, 203, 3, 203, 5878, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 5883, 8, 203, 1, 203, 3, 203, 5886, 8, 203, 1, 203, 1, 203, 3, 203, 5890, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5898, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5903, 8, 204, 1, 204, 1, 204, 5, 204, 5907, 8, 204, 10, 204, 12, 204, 5910, 9, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5918, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 5, 204, 5925, 8, 204, 10, 204, 12, 204, 5928, 9, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 5, 204, 5935, 8, 204, 10, 204, 12, 204, 5938, 9, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5943, 8, 204, 1, 205, 1, 205, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 210, 1, 210, 3, 210, 5962, 8, 210, 1, 210, 3, 210, 5965, 8, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 5, 211, 5996, 8, 211, 10, 211, 12, 211, 5999, 9, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 5, 211, 6009, 8, 211, 10, 211, 12, 211, 6012, 9, 211, 1, 211, 3, 211, 6015, 8, 211, 3, 211, 6017, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 6051, 8, 212, 1, 213, 1, 213, 1, 213, 5, 213, 6056, 8, 213, 10, 213, 12, 213, 6059, 9, 213, 1, 214, 1, 214, 1, 214, 1, 214, 3, 214, 6065, 8, 214, 1, 215, 1, 215, 1, 215, 5, 215, 6070, 8, 215, 10, 215, 12, 215, 6073, 9, 215, 1, 216, 3, 216, 6076, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 6082, 8, 216, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 3, 219, 6092, 8, 219, 1, 219, 1, 219, 1, 219, 3, 219, 6097, 8, 219, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 6103, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 6115, 8, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 4, 223, 6122, 8, 223, 11, 223, 12, 223, 6123, 1, 223, 3, 223, 6127, 8, 223, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 3, 225, 6134, 8, 225, 1, 226, 1, 226, 1, 227, 3, 227, 6139, 8, 227, 1, 227, 1, 227, 3, 227, 6143, 8, 227, 1, 227, 3, 227, 6146, 8, 227, 1, 228, 1, 228, 1, 228, 2, 534, 541, 4, 230, 374, 382, 384, 229, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 0, 61, 1, 0, 346, 347, 2, 0, 191, 191, 347, 347, 2, 0, 35, 35, 188, 188, 2, 0, 32, 32, 534, 534, 2, 0, 169, 169, 446, 446, 3, 0, 18, 18, 146, 146, 469, 469, 2, 0, 187, 187, 217, 217, 2, 0, 332, 332, 383, 383, 3, 0, 46, 46, 231, 231, 299, 299, 2, 0, 18, 18, 440, 440, 3, 0, 110, 110, 377, 377, 455, 455, 2, 0, 111, 111, 401, 401, 2, 0, 158, 158, 492, 492, 2, 0, 162, 162, 309, 309, 1, 0, 485, 486, 2, 0, 112, 112, 402, 402, 2, 0, 80, 80, 175, 175, 2, 0, 219, 220, 244, 245, 3, 0, 26, 26, 126, 126, 284, 284, 1, 0, 142, 143, 2, 0, 217, 217, 454, 454, 4, 0, 54, 54, 204, 204, 262, 262, 397, 397, 3, 0, 119, 119, 211, 211, 403, 403, 1, 0, 11, 12, 2, 0, 310, 310, 500, 500, 2, 0, 529, 529, 534, 534, 1, 0, 321, 322, 2, 0, 260, 260, 360, 360, 3, 0, 195, 195, 262, 262, 407, 407, 2, 0, 125, 125, 216, 216, 2, 0, 32, 32, 85, 85, 5, 0, 145, 145, 198, 198, 336, 336, 457, 457, 487, 487, 2, 0, 128, 129, 166, 166, 10, 0, 20, 20, 23, 23, 136, 136, 267, 267, 283, 283, 312, 312, 320, 320, 333, 333, 387, 387, 412, 412, 3, 0, 161, 161, 288, 288, 468, 468, 2, 0, 20, 20, 133, 133, 2, 0, 301, 301, 477, 477, 2, 0, 29, 29, 128, 128, 2, 0, 178, 178, 249, 249, 8, 0, 48, 48, 194, 194, 208, 208, 281, 281, 287, 287, 353, 353, 374, 375, 434, 434, 1, 0, 236, 237, 2, 0, 24, 24, 517, 517, 3, 0, 256, 256, 369, 369, 389, 389, 1, 0, 271, 277, 2, 0, 172, 172, 460, 460, 2, 0, 510, 511, 515, 515, 2, 0, 138, 138, 512, 514, 1, 0, 510, 511, 2, 0, 195, 195, 407, 407, 2, 0, 113, 113, 452, 452, 2, 0, 414, 414, 472, 472, 1, 0, 225, 226, 2, 0, 360, 360, 396, 396, 2, 0, 181, 181, 343, 343, 4, 0, 113, 113, 116, 116, 118, 118, 452, 452, 1, 0, 503, 509, 8, 0, 119, 119, 211, 211, 289, 289, 291, 291, 358, 358, 403, 403, 493, 493, 502, 502, 2, 0, 512, 512, 534, 534, 1, 0, 278, 279, 1, 0, 535, 536, 99, 0, 9, 10, 13, 13, 16, 19, 23, 23, 27, 27, 30, 31, 33, 34, 36, 39, 42, 42, 45, 58, 60, 62, 66, 71, 73, 74, 76, 78, 80, 92, 94, 98, 100, 101, 105, 110, 113, 122, 125, 125, 127, 127, 130, 131, 134, 135, 139, 140, 144, 144, 147, 148, 150, 156, 158, 160, 162, 162, 165, 165, 169, 169, 171, 171, 173, 178, 185, 186, 189, 189, 191, 191, 193, 195, 198, 198, 200, 202, 204, 206, 208, 213, 215, 216, 218, 218, 220, 220, 231, 233, 235, 240, 242, 243, 247, 247, 249, 249, 251, 252, 254, 255, 258, 259, 262, 267, 269, 270, 272, 277, 280, 281, 283, 287, 289, 294, 296, 300, 302, 302, 305, 305, 307, 308, 310, 312, 319, 320, 322, 334, 336, 336, 338, 342, 346, 346, 348, 359, 364, 367, 373, 376, 378, 385, 387, 387, 389, 389, 392, 394, 397, 401, 403, 403, 406, 408, 411, 412, 415, 415, 417, 420, 422, 434, 440, 440, 444, 446, 448, 449, 451, 452, 455, 455, 457, 458, 461, 462, 464, 464, 466, 466, 470, 471, 473, 473, 476, 476, 479, 479, 481, 493, 498, 498, 502, 502, 524, 526, 7260, 0, 461, 1, 0, 0, 0, 2, 489, 1, 0, 0, 0, 4, 577, 1, 0, 0, 0, 6, 607, 1, 0, 0, 0, 8, 625, 1, 0, 0, 0, 10, 766, 1, 0, 0, 0, 12, 824, 1, 0, 0, 0, 14, 845, 1, 0, 0, 0, 16, 962, 1, 0, 0, 0, 18, 1287, 1, 0, 0, 0, 20, 1445, 1, 0, 0, 0, 22, 1571, 1, 0, 0, 0, 24, 1917, 1, 0, 0, 0, 26, 1921, 1, 0, 0, 0, 28, 1923, 1, 0, 0, 0, 30, 2029, 1, 0, 0, 0, 32, 2031, 1, 0, 0, 0, 34, 2037, 1, 0, 0, 0, 36, 2409, 1, 0, 0, 0, 38, 2411, 1, 0, 0, 0, 40, 2543, 1, 0, 0, 0, 42, 2555, 1, 0, 0, 0, 44, 2557, 1, 0, 0, 0, 46, 2561, 1, 0, 0, 0, 48, 2565, 1, 0, 0, 0, 50, 2568, 1, 0, 0, 0, 52, 2572, 1, 0, 0, 0, 54, 2597, 1, 0, 0, 0, 56, 2599, 1, 0, 0, 0, 58, 2607, 1, 0, 0, 0, 60, 2632, 1, 0, 0, 0, 62, 2644, 1, 0, 0, 0, 64, 2646, 1, 0, 0, 0, 66, 2666, 1, 0, 0, 0, 68, 2693, 1, 0, 0, 0, 70, 2758, 1, 0, 0, 0, 72, 2864, 1, 0, 0, 0, 74, 2899, 1, 0, 0, 0, 76, 2961, 1, 0, 0, 0, 78, 2963, 1, 0, 0, 0, 80, 2987, 1, 0, 0, 0, 82, 3031, 1, 0, 0, 0, 84, 3117, 1, 0, 0, 0, 86, 3124, 1, 0, 0, 0, 88, 3126, 1, 0, 0, 0, 90, 3192, 1, 0, 0, 0, 92, 3292, 1, 0, 0, 0, 94, 3294, 1, 0, 0, 0, 96, 3298, 1, 0, 0, 0, 98, 3531, 1, 0, 0, 0, 100, 3536, 1, 0, 0, 0, 102, 3538, 1, 0, 0, 0, 104, 3541, 1, 0, 0, 0, 106, 3583, 1, 0, 0, 0, 108, 3653, 1, 0, 0, 0, 110, 3745, 1, 0, 0, 0, 112, 3765, 1, 0, 0, 0, 114, 3870, 1, 0, 0, 0, 116, 3872, 1, 0, 0, 0, 118, 3886, 1, 0, 0, 0, 120, 3888, 1, 0, 0, 0, 122, 3896, 1, 0, 0, 0, 124, 3902, 1, 0, 0, 0, 126, 3917, 1, 0, 0, 0, 128, 3959, 1, 0, 0, 0, 130, 3961, 1, 0, 0, 0, 132, 4015, 1, 0, 0, 0, 134, 4017, 1, 0, 0, 0, 136, 4069, 1, 0, 0, 0, 138, 4090, 1, 0, 0, 0, 140, 4092, 1, 0, 0, 0, 142, 4095, 1, 0, 0, 0, 144, 4119, 1, 0, 0, 0, 146, 4130, 1, 0, 0, 0, 148, 4132, 1, 0, 0, 0, 150, 4176, 1, 0, 0, 0, 152, 4178, 1, 0, 0, 0, 154, 4196, 1, 0, 0, 0, 156, 4217, 1, 0, 0, 0, 158, 4231, 1, 0, 0, 0, 160, 4247, 1, 0, 0, 0, 162, 4250, 1, 0, 0, 0, 164, 4264, 1, 0, 0, 0, 166, 4277, 1, 0, 0, 0, 168, 4378, 1, 0, 0, 0, 170, 4380, 1, 0, 0, 0, 172, 4382, 1, 0, 0, 0, 174, 4392, 1, 0, 0, 0, 176, 4394, 1, 0, 0, 0, 178, 4401, 1, 0, 0, 0, 180, 4405, 1, 0, 0, 0, 182, 4409, 1, 0, 0, 0, 184, 4414, 1, 0, 0, 0, 186, 4416, 1, 0, 0, 0, 188, 4426, 1, 0, 0, 0, 190, 4428, 1, 0, 0, 0, 192, 4439, 1, 0, 0, 0, 194, 4448, 1, 0, 0, 0, 196, 4458, 1, 0, 0, 0, 198, 4460, 1, 0, 0, 0, 200, 4462, 1, 0, 0, 0, 202, 4470, 1, 0, 0, 0, 204, 4472, 1, 0, 0, 0, 206, 4474, 1, 0, 0, 0, 208, 4478, 1, 0, 0, 0, 210, 4482, 1, 0, 0, 0, 212, 4486, 1, 0, 0, 0, 214, 4492, 1, 0, 0, 0, 216, 4504, 1, 0, 0, 0, 218, 4536, 1, 0, 0, 0, 220, 4538, 1, 0, 0, 0, 222, 4547, 1, 0, 0, 0, 224, 4590, 1, 0, 0, 0, 226, 4592, 1, 0, 0, 0, 228, 4604, 1, 0, 0, 0, 230, 4609, 1, 0, 0, 0, 232, 4629, 1, 0, 0, 0, 234, 4637, 1, 0, 0, 0, 236, 4639, 1, 0, 0, 0, 238, 4661, 1, 0, 0, 0, 240, 4670, 1, 0, 0, 0, 242, 4679, 1, 0, 0, 0, 244, 4690, 1, 0, 0, 0, 246, 4696, 1, 0, 0, 0, 248, 4698, 1, 0, 0, 0, 250, 4701, 1, 0, 0, 0, 252, 4705, 1, 0, 0, 0, 254, 4722, 1, 0, 0, 0, 256, 4725, 1, 0, 0, 0, 258, 4730, 1, 0, 0, 0, 260, 4738, 1, 0, 0, 0, 262, 4745, 1, 0, 0, 0, 264, 4762, 1, 0, 0, 0, 266, 4786, 1, 0, 0, 0, 268, 4788, 1, 0, 0, 0, 270, 4839, 1, 0, 0, 0, 272, 4841, 1, 0, 0, 0, 274, 4854, 1, 0, 0, 0, 276, 4857, 1, 0, 0, 0, 278, 4860, 1, 0, 0, 0, 280, 4902, 1, 0, 0, 0, 282, 4913, 1, 0, 0, 0, 284, 4915, 1, 0, 0, 0, 286, 4921, 1, 0, 0, 0, 288, 4929, 1, 0, 0, 0, 290, 4955, 1, 0, 0, 0, 292, 4960, 1, 0, 0, 0, 294, 4970, 1, 0, 0, 0, 296, 4988, 1, 0, 0, 0, 298, 4990, 1, 0, 0, 0, 300, 5024, 1, 0, 0, 0, 302, 5030, 1, 0, 0, 0, 304, 5032, 1, 0, 0, 0, 306, 5036, 1, 0, 0, 0, 308, 5044, 1, 0, 0, 0, 310, 5103, 1, 0, 0, 0, 312, 5105, 1, 0, 0, 0, 314, 5108, 1, 0, 0, 0, 316, 5113, 1, 0, 0, 0, 318, 5121, 1, 0, 0, 0, 320, 5127, 1, 0, 0, 0, 322, 5131, 1, 0, 0, 0, 324, 5140, 1, 0, 0, 0, 326, 5142, 1, 0, 0, 0, 328, 5150, 1, 0, 0, 0, 330, 5158, 1, 0, 0, 0, 332, 5163, 1, 0, 0, 0, 334, 5171, 1, 0, 0, 0, 336, 5246, 1, 0, 0, 0, 338, 5254, 1, 0, 0, 0, 340, 5277, 1, 0, 0, 0, 342, 5289, 1, 0, 0, 0, 344, 5297, 1, 0, 0, 0, 346, 5311, 1, 0, 0, 0, 348, 5325, 1, 0, 0, 0, 350, 5334, 1, 0, 0, 0, 352, 5359, 1, 0, 0, 0, 354, 5377, 1, 0, 0, 0, 356, 5379, 1, 0, 0, 0, 358, 5387, 1, 0, 0, 0, 360, 5397, 1, 0, 0, 0, 362, 5399, 1, 0, 0, 0, 364, 5411, 1, 0, 0, 0, 366, 5420, 1, 0, 0, 0, 368, 5427, 1, 0, 0, 0, 370, 5437, 1, 0, 0, 0, 372, 5455, 1, 0, 0, 0, 374, 5481, 1, 0, 0, 0, 376, 5500, 1, 0, 0, 0, 378, 5516, 1, 0, 0, 0, 380, 5569, 1, 0, 0, 0, 382, 5575, 1, 0, 0, 0, 384, 5727, 1, 0, 0, 0, 386, 5768, 1, 0, 0, 0, 388, 5775, 1, 0, 0, 0, 390, 5777, 1, 0, 0, 0, 392, 5812, 1, 0, 0, 0, 394, 5832, 1, 0, 0, 0, 396, 5834, 1, 0, 0, 0, 398, 5855, 1, 0, 0, 0, 400, 5857, 1, 0, 0, 0, 402, 5866, 1, 0, 0, 0, 404, 5868, 1, 0, 0, 0, 406, 5889, 1, 0, 0, 0, 408, 5942, 1, 0, 0, 0, 410, 5944, 1, 0, 0, 0, 412, 5946, 1, 0, 0, 0, 414, 5948, 1, 0, 0, 0, 416, 5953, 1, 0, 0, 0, 418, 5957, 1, 0, 0, 0, 420, 5959, 1, 0, 0, 0, 422, 6016, 1, 0, 0, 0, 424, 6050, 1, 0, 0, 0, 426, 6052, 1, 0, 0, 0, 428, 6060, 1, 0, 0, 0, 430, 6066, 1, 0, 0, 0, 432, 6075, 1, 0, 0, 0, 434, 6083, 1, 0, 0, 0, 436, 6085, 1, 0, 0, 0, 438, 6088, 1, 0, 0, 0, 440, 6102, 1, 0, 0, 0, 442, 6114, 1, 0, 0, 0, 444, 6116, 1, 0, 0, 0, 446, 6126, 1, 0, 0, 0, 448, 6128, 1, 0, 0, 0, 450, 6133, 1, 0, 0, 0, 452, 6135, 1, 0, 0, 0, 454, 6145, 1, 0, 0, 0, 456, 6147, 1, 0, 0, 0, 458, 460, 5, 1, 0, 0, 459, 458, 1, 0, 0, 0, 460, 463, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 465, 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 464, 466, 3, 4, 2, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 475, 1, 0, 0, 0, 467, 469, 5, 1, 0, 0, 468, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, 3, 4, 2, 0, 473, 468, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 480, 5, 1, 0, 0, 479, 478, 1, 0, 0, 0, 480, 483, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 484, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 484, 485, 5, 0, 0, 1, 485, 1, 1, 0, 0, 0, 486, 488, 5, 1, 0, 0, 487, 486, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 494, 3, 4, 2, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 498, 1, 0, 0, 0, 495, 497, 5, 1, 0, 0, 496, 495, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 501, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 501, 502, 5, 0, 0, 1, 502, 3, 1, 0, 0, 0, 503, 578, 3, 6, 3, 0, 504, 505, 5, 62, 0, 0, 505, 506, 3, 326, 163, 0, 506, 515, 5, 2, 0, 0, 507, 512, 3, 370, 185, 0, 508, 509, 5, 4, 0, 0, 509, 511, 3, 370, 185, 0, 510, 508, 1, 0, 0, 0, 511, 514, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 516, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 515, 507, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 5, 3, 0, 0, 518, 578, 1, 0, 0, 0, 519, 527, 5, 21, 0, 0, 520, 523, 5, 99, 0, 0, 521, 522, 5, 313, 0, 0, 522, 524, 5, 374, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 527, 5, 374, 0, 0, 526, 519, 1, 0, 0, 0, 526, 520, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 7, 0, 0, 0, 529, 530, 3, 326, 163, 0, 530, 534, 5, 2, 0, 0, 531, 533, 9, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 536, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, 537, 1, 0, 0, 0, 536, 534, 1, 0, 0, 0, 537, 541, 5, 3, 0, 0, 538, 540, 9, 0, 0, 0, 539, 538, 1, 0, 0, 0, 540, 543, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 578, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 544, 545, 5, 142, 0, 0, 545, 548, 7, 0, 0, 0, 546, 547, 5, 214, 0, 0, 547, 549, 5, 164, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 578, 3, 326, 163, 0, 551, 552, 5, 413, 0, 0, 552, 553, 7, 1, 0, 0, 553, 557, 5, 427, 0, 0, 554, 555, 5, 256, 0, 0, 555, 558, 3, 382, 191, 0, 556, 558, 3, 248, 124, 0, 557, 554, 1, 0, 0, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 578, 1, 0, 0, 0, 559, 560, 5, 413, 0, 0, 560, 561, 5, 99, 0, 0, 561, 562, 5, 347, 0, 0, 562, 578, 3, 326, 163, 0, 563, 565, 5, 15, 0, 0, 564, 563, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 5, 413, 0, 0, 567, 568, 7, 2, 0, 0, 568, 571, 5, 89, 0, 0, 569, 570, 5, 256, 0, 0, 570, 572, 3, 382, 191, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 575, 1, 0, 0, 0, 573, 574, 5, 187, 0, 0, 574, 576, 5, 534, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 578, 1, 0, 0, 0, 577, 503, 1, 0, 0, 0, 577, 504, 1, 0, 0, 0, 577, 526, 1, 0, 0, 0, 577, 544, 1, 0, 0, 0, 577, 551, 1, 0, 0, 0, 577, 559, 1, 0, 0, 0, 577, 564, 1, 0, 0, 0, 578, 5, 1, 0, 0, 0, 579, 581, 3, 194, 97, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584, 3, 228, 114, 0, 583, 585, 3, 226, 113, 0, 584, 583, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 608, 1, 0, 0, 0, 586, 608, 3, 16, 8, 0, 587, 608, 3, 18, 9, 0, 588, 608, 3, 20, 10, 0, 589, 608, 3, 10, 5, 0, 590, 608, 3, 12, 6, 0, 591, 608, 3, 14, 7, 0, 592, 608, 3, 62, 31, 0, 593, 608, 3, 156, 78, 0, 594, 608, 3, 22, 11, 0, 595, 608, 3, 132, 66, 0, 596, 608, 3, 144, 72, 0, 597, 608, 3, 60, 30, 0, 598, 608, 3, 24, 12, 0, 599, 608, 3, 26, 13, 0, 600, 608, 3, 68, 34, 0, 601, 608, 3, 74, 37, 0, 602, 608, 3, 72, 36, 0, 603, 608, 3, 146, 73, 0, 604, 608, 3, 28, 14, 0, 605, 608, 3, 108, 54, 0, 606, 608, 3, 8, 4, 0, 607, 580, 1, 0, 0, 0, 607, 586, 1, 0, 0, 0, 607, 587, 1, 0, 0, 0, 607, 588, 1, 0, 0, 0, 607, 589, 1, 0, 0, 0, 607, 590, 1, 0, 0, 0, 607, 591, 1, 0, 0, 0, 607, 592, 1, 0, 0, 0, 607, 593, 1, 0, 0, 0, 607, 594, 1, 0, 0, 0, 607, 595, 1, 0, 0, 0, 607, 596, 1, 0, 0, 0, 607, 597, 1, 0, 0, 0, 607, 598, 1, 0, 0, 0, 607, 599, 1, 0, 0, 0, 607, 600, 1, 0, 0, 0, 607, 601, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 603, 1, 0, 0, 0, 607, 604, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 7, 1, 0, 0, 0, 609, 626, 3, 148, 74, 0, 610, 626, 3, 150, 75, 0, 611, 626, 3, 154, 77, 0, 612, 626, 3, 114, 57, 0, 613, 626, 3, 106, 53, 0, 614, 626, 3, 110, 55, 0, 615, 626, 3, 90, 45, 0, 616, 626, 3, 84, 42, 0, 617, 626, 3, 76, 38, 0, 618, 626, 3, 82, 41, 0, 619, 626, 3, 70, 35, 0, 620, 626, 3, 66, 33, 0, 621, 626, 3, 64, 32, 0, 622, 626, 3, 40, 20, 0, 623, 626, 3, 36, 18, 0, 624, 626, 3, 30, 15, 0, 625, 609, 1, 0, 0, 0, 625, 610, 1, 0, 0, 0, 625, 611, 1, 0, 0, 0, 625, 612, 1, 0, 0, 0, 625, 613, 1, 0, 0, 0, 625, 614, 1, 0, 0, 0, 625, 615, 1, 0, 0, 0, 625, 616, 1, 0, 0, 0, 625, 617, 1, 0, 0, 0, 625, 618, 1, 0, 0, 0, 625, 619, 1, 0, 0, 0, 625, 620, 1, 0, 0, 0, 625, 621, 1, 0, 0, 0, 625, 622, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 624, 1, 0, 0, 0, 626, 9, 1, 0, 0, 0, 627, 628, 5, 99, 0, 0, 628, 629, 5, 280, 0, 0, 629, 633, 5, 489, 0, 0, 630, 631, 5, 214, 0, 0, 631, 632, 5, 303, 0, 0, 632, 634, 5, 164, 0, 0, 633, 630, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 640, 3, 326, 163, 0, 636, 637, 5, 2, 0, 0, 637, 638, 3, 328, 164, 0, 638, 639, 5, 3, 0, 0, 639, 641, 1, 0, 0, 0, 640, 636, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 643, 1, 0, 0, 0, 642, 644, 3, 172, 86, 0, 643, 642, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 652, 1, 0, 0, 0, 645, 647, 5, 367, 0, 0, 646, 648, 3, 178, 89, 0, 647, 646, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 1, 0, 0, 0, 649, 651, 3, 174, 87, 0, 650, 649, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 653, 1, 0, 0, 0, 652, 645, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 659, 1, 0, 0, 0, 654, 656, 5, 146, 0, 0, 655, 654, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 5, 244, 0, 0, 658, 660, 3, 304, 152, 0, 659, 655, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 662, 5, 81, 0, 0, 662, 664, 5, 529, 0, 0, 663, 661, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 671, 1, 0, 0, 0, 665, 666, 5, 321, 0, 0, 666, 667, 5, 59, 0, 0, 667, 668, 5, 2, 0, 0, 668, 669, 3, 180, 90, 0, 669, 670, 5, 3, 0, 0, 670, 672, 1, 0, 0, 0, 671, 665, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 684, 1, 0, 0, 0, 673, 674, 5, 136, 0, 0, 674, 678, 5, 59, 0, 0, 675, 676, 5, 202, 0, 0, 676, 679, 3, 304, 152, 0, 677, 679, 5, 359, 0, 0, 678, 675, 1, 0, 0, 0, 678, 677, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 681, 5, 55, 0, 0, 681, 683, 7, 3, 0, 0, 682, 680, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 685, 1, 0, 0, 0, 684, 673, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 687, 1, 0, 0, 0, 686, 688, 3, 314, 157, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 5, 28, 0, 0, 690, 691, 3, 228, 114, 0, 691, 767, 1, 0, 0, 0, 692, 693, 5, 367, 0, 0, 693, 694, 5, 280, 0, 0, 694, 695, 5, 489, 0, 0, 695, 699, 3, 326, 163, 0, 696, 700, 3, 160, 80, 0, 697, 700, 5, 85, 0, 0, 698, 700, 5, 32, 0, 0, 699, 696, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 698, 1, 0, 0, 0, 700, 767, 1, 0, 0, 0, 701, 702, 5, 21, 0, 0, 702, 703, 5, 280, 0, 0, 703, 704, 5, 489, 0, 0, 704, 728, 3, 326, 163, 0, 705, 706, 5, 371, 0, 0, 706, 729, 3, 448, 224, 0, 707, 713, 5, 367, 0, 0, 708, 714, 3, 178, 89, 0, 709, 714, 3, 174, 87, 0, 710, 711, 3, 178, 89, 0, 711, 712, 3, 174, 87, 0, 712, 714, 1, 0, 0, 0, 713, 708, 1, 0, 0, 0, 713, 709, 1, 0, 0, 0, 713, 710, 1, 0, 0, 0, 714, 729, 1, 0, 0, 0, 715, 716, 5, 374, 0, 0, 716, 717, 5, 497, 0, 0, 717, 718, 5, 280, 0, 0, 718, 719, 5, 489, 0, 0, 719, 721, 3, 448, 224, 0, 720, 722, 3, 314, 157, 0, 721, 720, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 729, 1, 0, 0, 0, 723, 724, 5, 409, 0, 0, 724, 725, 5, 2, 0, 0, 725, 726, 3, 316, 158, 0, 726, 727, 5, 3, 0, 0, 727, 729, 1, 0, 0, 0, 728, 705, 1, 0, 0, 0, 728, 707, 1, 0, 0, 0, 728, 715, 1, 0, 0, 0, 728, 723, 1, 0, 0, 0, 729, 767, 1, 0, 0, 0, 730, 731, 5, 142, 0, 0, 731, 732, 5, 280, 0, 0, 732, 735, 5, 489, 0, 0, 733, 734, 5, 214, 0, 0, 734, 736, 5, 164, 0, 0, 735, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 740, 3, 326, 163, 0, 738, 739, 5, 309, 0, 0, 739, 741, 3, 326, 163, 0, 740, 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 767, 1, 0, 0, 0, 742, 743, 5, 329, 0, 0, 743, 744, 5, 280, 0, 0, 744, 745, 5, 489, 0, 0, 745, 746, 5, 239, 0, 0, 746, 747, 5, 309, 0, 0, 747, 767, 3, 326, 163, 0, 748, 749, 5, 384, 0, 0, 749, 750, 5, 280, 0, 0, 750, 751, 5, 489, 0, 0, 751, 752, 5, 239, 0, 0, 752, 753, 5, 309, 0, 0, 753, 767, 3, 326, 163, 0, 754, 755, 5, 63, 0, 0, 755, 756, 5, 280, 0, 0, 756, 757, 5, 489, 0, 0, 757, 758, 5, 444, 0, 0, 758, 759, 5, 534, 0, 0, 759, 760, 5, 309, 0, 0, 760, 767, 3, 326, 163, 0, 761, 762, 5, 413, 0, 0, 762, 763, 5, 99, 0, 0, 763, 764, 5, 280, 0, 0, 764, 765, 5, 489, 0, 0, 765, 767, 3, 326, 163, 0, 766, 627, 1, 0, 0, 0, 766, 692, 1, 0, 0, 0, 766, 701, 1, 0, 0, 0, 766, 730, 1, 0, 0, 0, 766, 742, 1, 0, 0, 0, 766, 748, 1, 0, 0, 0, 766, 754, 1, 0, 0, 0, 766, 761, 1, 0, 0, 0, 767, 11, 1, 0, 0, 0, 768, 769, 5, 99, 0, 0, 769, 770, 5, 239, 0, 0, 770, 771, 3, 326, 163, 0, 771, 772, 5, 309, 0, 0, 772, 792, 5, 399, 0, 0, 773, 774, 5, 160, 0, 0, 774, 775, 5, 534, 0, 0, 775, 781, 3, 448, 224, 0, 776, 779, 5, 425, 0, 0, 777, 780, 5, 529, 0, 0, 778, 780, 5, 108, 0, 0, 779, 777, 1, 0, 0, 0, 779, 778, 1, 0, 0, 0, 780, 782, 1, 0, 0, 0, 781, 776, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 785, 1, 0, 0, 0, 783, 784, 5, 154, 0, 0, 784, 786, 5, 529, 0, 0, 785, 783, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 793, 1, 0, 0, 0, 787, 790, 5, 30, 0, 0, 788, 791, 5, 529, 0, 0, 789, 791, 5, 108, 0, 0, 790, 788, 1, 0, 0, 0, 790, 789, 1, 0, 0, 0, 791, 793, 1, 0, 0, 0, 792, 773, 1, 0, 0, 0, 792, 787, 1, 0, 0, 0, 793, 795, 1, 0, 0, 0, 794, 796, 3, 436, 218, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 5, 139, 0, 0, 798, 799, 3, 16, 8, 0, 799, 825, 1, 0, 0, 0, 800, 801, 5, 329, 0, 0, 801, 803, 5, 239, 0, 0, 802, 804, 3, 80, 40, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 825, 1, 0, 0, 0, 805, 806, 5, 142, 0, 0, 806, 809, 5, 239, 0, 0, 807, 808, 5, 214, 0, 0, 808, 810, 5, 164, 0, 0, 809, 807, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 812, 1, 0, 0, 0, 811, 813, 3, 80, 40, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 825, 1, 0, 0, 0, 814, 815, 5, 384, 0, 0, 815, 817, 5, 239, 0, 0, 816, 818, 3, 80, 40, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 825, 1, 0, 0, 0, 819, 820, 5, 63, 0, 0, 820, 822, 5, 444, 0, 0, 821, 823, 3, 80, 40, 0, 822, 821, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 825, 1, 0, 0, 0, 824, 768, 1, 0, 0, 0, 824, 800, 1, 0, 0, 0, 824, 805, 1, 0, 0, 0, 824, 814, 1, 0, 0, 0, 824, 819, 1, 0, 0, 0, 825, 13, 1, 0, 0, 0, 826, 827, 5, 21, 0, 0, 827, 828, 5, 439, 0, 0, 828, 829, 3, 326, 163, 0, 829, 830, 5, 14, 0, 0, 830, 831, 5, 93, 0, 0, 831, 832, 3, 444, 222, 0, 832, 833, 3, 158, 79, 0, 833, 846, 1, 0, 0, 0, 834, 835, 5, 21, 0, 0, 835, 836, 5, 439, 0, 0, 836, 837, 3, 326, 163, 0, 837, 838, 5, 142, 0, 0, 838, 839, 5, 93, 0, 0, 839, 840, 3, 444, 222, 0, 840, 846, 1, 0, 0, 0, 841, 842, 5, 413, 0, 0, 842, 843, 5, 94, 0, 0, 843, 844, 5, 187, 0, 0, 844, 846, 3, 326, 163, 0, 845, 826, 1, 0, 0, 0, 845, 834, 1, 0, 0, 0, 845, 841, 1, 0, 0, 0, 846, 15, 1, 0, 0, 0, 847, 849, 3, 194, 97, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, 1, 0, 0, 0, 850, 852, 3, 238, 119, 0, 851, 850, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 857, 5, 223, 0, 0, 854, 858, 5, 230, 0, 0, 855, 856, 5, 318, 0, 0, 856, 858, 5, 439, 0, 0, 857, 854, 1, 0, 0, 0, 857, 855, 1, 0, 0, 0, 858, 864, 1, 0, 0, 0, 859, 865, 3, 326, 163, 0, 860, 861, 5, 140, 0, 0, 861, 862, 5, 2, 0, 0, 862, 863, 5, 534, 0, 0, 863, 865, 5, 3, 0, 0, 864, 859, 1, 0, 0, 0, 864, 860, 1, 0, 0, 0, 865, 867, 1, 0, 0, 0, 866, 868, 3, 160, 80, 0, 867, 866, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 872, 1, 0, 0, 0, 869, 870, 5, 497, 0, 0, 870, 871, 5, 247, 0, 0, 871, 873, 3, 448, 224, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 875, 1, 0, 0, 0, 874, 876, 3, 304, 152, 0, 875, 874, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 881, 1, 0, 0, 0, 877, 878, 5, 7, 0, 0, 878, 879, 3, 306, 153, 0, 879, 880, 5, 8, 0, 0, 880, 882, 1, 0, 0, 0, 881, 877, 1, 0, 0, 0, 881, 882, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 963, 3, 228, 114, 0, 884, 886, 3, 194, 97, 0, 885, 884, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 888, 1, 0, 0, 0, 887, 889, 3, 238, 119, 0, 888, 887, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 891, 5, 474, 0, 0, 891, 892, 3, 326, 163, 0, 892, 893, 3, 324, 162, 0, 893, 894, 5, 409, 0, 0, 894, 896, 3, 286, 143, 0, 895, 897, 3, 250, 125, 0, 896, 895, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 899, 1, 0, 0, 0, 898, 900, 3, 248, 124, 0, 899, 898, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 963, 1, 0, 0, 0, 901, 903, 3, 194, 97, 0, 902, 901, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 905, 1, 0, 0, 0, 904, 906, 3, 238, 119, 0, 905, 904, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 908, 5, 126, 0, 0, 908, 909, 5, 187, 0, 0, 909, 911, 3, 326, 163, 0, 910, 912, 3, 160, 80, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 916, 3, 324, 162, 0, 914, 915, 5, 478, 0, 0, 915, 917, 3, 258, 129, 0, 916, 914, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 919, 1, 0, 0, 0, 918, 920, 3, 248, 124, 0, 919, 918, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 963, 1, 0, 0, 0, 921, 922, 5, 261, 0, 0, 922, 923, 5, 247, 0, 0, 923, 924, 3, 326, 163, 0, 924, 925, 5, 2, 0, 0, 925, 930, 3, 168, 84, 0, 926, 927, 5, 4, 0, 0, 927, 929, 3, 168, 84, 0, 928, 926, 1, 0, 0, 0, 929, 932, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 933, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 933, 935, 5, 3, 0, 0, 934, 936, 3, 218, 109, 0, 935, 934, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 938, 1, 0, 0, 0, 937, 939, 3, 314, 157, 0, 938, 937, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 941, 1, 0, 0, 0, 940, 942, 3, 436, 218, 0, 941, 940, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 963, 1, 0, 0, 0, 943, 944, 5, 167, 0, 0, 944, 945, 5, 439, 0, 0, 945, 948, 3, 326, 163, 0, 946, 947, 5, 321, 0, 0, 947, 949, 3, 304, 152, 0, 948, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 951, 1, 0, 0, 0, 950, 952, 3, 248, 124, 0, 951, 950, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 954, 5, 454, 0, 0, 954, 956, 5, 529, 0, 0, 955, 957, 3, 314, 157, 0, 956, 955, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 1, 0, 0, 0, 958, 960, 3, 218, 109, 0, 959, 958, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 963, 1, 0, 0, 0, 961, 963, 3, 200, 100, 0, 962, 848, 1, 0, 0, 0, 962, 885, 1, 0, 0, 0, 962, 902, 1, 0, 0, 0, 962, 921, 1, 0, 0, 0, 962, 943, 1, 0, 0, 0, 962, 961, 1, 0, 0, 0, 963, 17, 1, 0, 0, 0, 964, 966, 5, 99, 0, 0, 965, 967, 7, 4, 0, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 972, 5, 439, 0, 0, 969, 970, 5, 214, 0, 0, 970, 971, 5, 303, 0, 0, 971, 973, 5, 164, 0, 0, 972, 969, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 989, 3, 326, 163, 0, 975, 977, 3, 304, 152, 0, 976, 975, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 990, 1, 0, 0, 0, 978, 979, 5, 2, 0, 0, 979, 982, 3, 332, 166, 0, 980, 981, 5, 4, 0, 0, 981, 983, 3, 336, 168, 0, 982, 980, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 985, 1, 0, 0, 0, 984, 986, 5, 4, 0, 0, 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 5, 3, 0, 0, 988, 990, 1, 0, 0, 0, 989, 976, 1, 0, 0, 0, 989, 978, 1, 0, 0, 0, 990, 994, 1, 0, 0, 0, 991, 992, 5, 155, 0, 0, 992, 993, 5, 503, 0, 0, 993, 995, 3, 448, 224, 0, 994, 991, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 1004, 1, 0, 0, 0, 996, 997, 7, 5, 0, 0, 997, 998, 5, 244, 0, 0, 998, 1002, 3, 304, 152, 0, 999, 1000, 5, 73, 0, 0, 1000, 1001, 5, 59, 0, 0, 1001, 1003, 3, 304, 152, 0, 1002, 999, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1005, 1, 0, 0, 0, 1004, 996, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1008, 1, 0, 0, 0, 1006, 1007, 5, 81, 0, 0, 1007, 1009, 5, 529, 0, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 1, 0, 0, 0, 1010, 1012, 3, 162, 81, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1027, 1, 0, 0, 0, 1013, 1014, 5, 136, 0, 0, 1014, 1018, 5, 59, 0, 0, 1015, 1016, 5, 202, 0, 0, 1016, 1019, 3, 304, 152, 0, 1017, 1019, 5, 359, 0, 0, 1018, 1015, 1, 0, 0, 0, 1018, 1017, 1, 0, 0, 0, 1019, 1025, 1, 0, 0, 0, 1020, 1023, 5, 55, 0, 0, 1021, 1024, 5, 534, 0, 0, 1022, 1024, 5, 32, 0, 0, 1023, 1021, 1, 0, 0, 0, 1023, 1022, 1, 0, 0, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1028, 1, 0, 0, 0, 1027, 1013, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1034, 1, 0, 0, 0, 1029, 1030, 5, 393, 0, 0, 1030, 1031, 5, 2, 0, 0, 1031, 1032, 3, 356, 178, 0, 1032, 1033, 5, 3, 0, 0, 1033, 1035, 1, 0, 0, 0, 1034, 1029, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1037, 1, 0, 0, 0, 1036, 1038, 3, 314, 157, 0, 1037, 1036, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1041, 1, 0, 0, 0, 1039, 1040, 5, 54, 0, 0, 1040, 1042, 3, 314, 157, 0, 1041, 1039, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1045, 1, 0, 0, 0, 1043, 1044, 5, 28, 0, 0, 1044, 1046, 3, 228, 114, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1288, 1, 0, 0, 0, 1047, 1050, 5, 99, 0, 0, 1048, 1049, 5, 313, 0, 0, 1049, 1051, 5, 374, 0, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1056, 5, 489, 0, 0, 1053, 1054, 5, 214, 0, 0, 1054, 1055, 5, 303, 0, 0, 1055, 1057, 5, 164, 0, 0, 1056, 1053, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1063, 3, 326, 163, 0, 1059, 1060, 5, 2, 0, 0, 1060, 1061, 3, 328, 164, 0, 1061, 1062, 5, 3, 0, 0, 1062, 1064, 1, 0, 0, 0, 1063, 1059, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1067, 1, 0, 0, 0, 1065, 1066, 5, 81, 0, 0, 1066, 1068, 5, 529, 0, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1070, 5, 28, 0, 0, 1070, 1071, 3, 228, 114, 0, 1071, 1288, 1, 0, 0, 0, 1072, 1073, 5, 99, 0, 0, 1073, 1074, 5, 176, 0, 0, 1074, 1077, 5, 529, 0, 0, 1075, 1076, 7, 6, 0, 0, 1076, 1078, 3, 448, 224, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1288, 3, 314, 157, 0, 1080, 1082, 5, 99, 0, 0, 1081, 1083, 7, 4, 0, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1088, 5, 439, 0, 0, 1085, 1086, 5, 214, 0, 0, 1086, 1087, 5, 303, 0, 0, 1087, 1089, 5, 164, 0, 0, 1088, 1085, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1091, 3, 326, 163, 0, 1091, 1092, 5, 256, 0, 0, 1092, 1098, 3, 326, 163, 0, 1093, 1094, 5, 497, 0, 0, 1094, 1096, 5, 393, 0, 0, 1095, 1097, 3, 304, 152, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1099, 1, 0, 0, 0, 1098, 1093, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1288, 1, 0, 0, 0, 1100, 1101, 5, 99, 0, 0, 1101, 1105, 5, 390, 0, 0, 1102, 1103, 5, 214, 0, 0, 1103, 1104, 5, 303, 0, 0, 1104, 1106, 5, 164, 0, 0, 1105, 1102, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1110, 3, 448, 224, 0, 1108, 1109, 5, 81, 0, 0, 1109, 1111, 5, 529, 0, 0, 1110, 1108, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1288, 1, 0, 0, 0, 1112, 1113, 5, 99, 0, 0, 1113, 1114, 5, 499, 0, 0, 1114, 1118, 5, 199, 0, 0, 1115, 1116, 5, 214, 0, 0, 1116, 1117, 5, 303, 0, 0, 1117, 1119, 5, 164, 0, 0, 1118, 1115, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1122, 3, 182, 91, 0, 1121, 1123, 3, 314, 157, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1288, 1, 0, 0, 0, 1124, 1125, 5, 99, 0, 0, 1125, 1129, 5, 66, 0, 0, 1126, 1127, 5, 214, 0, 0, 1127, 1128, 5, 303, 0, 0, 1128, 1130, 5, 164, 0, 0, 1129, 1126, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1135, 3, 448, 224, 0, 1132, 1133, 5, 497, 0, 0, 1133, 1134, 5, 380, 0, 0, 1134, 1136, 3, 448, 224, 0, 1135, 1132, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1139, 1, 0, 0, 0, 1137, 1138, 5, 81, 0, 0, 1138, 1140, 5, 529, 0, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1142, 1, 0, 0, 0, 1141, 1143, 3, 314, 157, 0, 1142, 1141, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1288, 1, 0, 0, 0, 1144, 1145, 5, 99, 0, 0, 1145, 1146, 5, 395, 0, 0, 1146, 1150, 5, 342, 0, 0, 1147, 1148, 5, 214, 0, 0, 1148, 1149, 5, 303, 0, 0, 1149, 1151, 5, 164, 0, 0, 1150, 1147, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 3, 448, 224, 0, 1153, 1154, 5, 309, 0, 0, 1154, 1155, 3, 326, 163, 0, 1155, 1156, 5, 28, 0, 0, 1156, 1157, 7, 7, 0, 0, 1157, 1161, 5, 454, 0, 0, 1158, 1162, 3, 190, 95, 0, 1159, 1160, 5, 390, 0, 0, 1160, 1162, 3, 448, 224, 0, 1161, 1158, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 478, 0, 0, 1164, 1165, 5, 2, 0, 0, 1165, 1166, 3, 374, 187, 0, 1166, 1167, 5, 3, 0, 0, 1167, 1288, 1, 0, 0, 0, 1168, 1169, 5, 99, 0, 0, 1169, 1170, 5, 429, 0, 0, 1170, 1174, 5, 342, 0, 0, 1171, 1172, 5, 214, 0, 0, 1172, 1173, 5, 303, 0, 0, 1173, 1175, 5, 164, 0, 0, 1174, 1171, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1178, 3, 448, 224, 0, 1177, 1179, 3, 314, 157, 0, 1178, 1177, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1288, 1, 0, 0, 0, 1180, 1181, 5, 56, 0, 0, 1181, 1182, 5, 219, 0, 0, 1182, 1183, 3, 448, 224, 0, 1183, 1184, 5, 309, 0, 0, 1184, 1186, 3, 326, 163, 0, 1185, 1187, 3, 160, 80, 0, 1186, 1185, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1288, 1, 0, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 1193, 5, 219, 0, 0, 1190, 1191, 5, 214, 0, 0, 1191, 1192, 5, 303, 0, 0, 1192, 1194, 5, 164, 0, 0, 1193, 1190, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 3, 448, 224, 0, 1196, 1197, 5, 309, 0, 0, 1197, 1198, 3, 326, 163, 0, 1198, 1201, 3, 304, 152, 0, 1199, 1200, 5, 478, 0, 0, 1200, 1202, 7, 8, 0, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1204, 1, 0, 0, 0, 1203, 1205, 3, 314, 157, 0, 1204, 1203, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1208, 1, 0, 0, 0, 1206, 1207, 5, 81, 0, 0, 1207, 1209, 5, 529, 0, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1288, 1, 0, 0, 0, 1210, 1211, 5, 99, 0, 0, 1211, 1215, 5, 421, 0, 0, 1212, 1213, 5, 214, 0, 0, 1213, 1214, 5, 303, 0, 0, 1214, 1216, 5, 164, 0, 0, 1215, 1212, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1219, 3, 448, 224, 0, 1218, 1220, 3, 314, 157, 0, 1219, 1218, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1288, 1, 0, 0, 0, 1221, 1222, 5, 99, 0, 0, 1222, 1226, 5, 151, 0, 0, 1223, 1224, 5, 214, 0, 0, 1224, 1225, 5, 303, 0, 0, 1225, 1227, 5, 164, 0, 0, 1226, 1223, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1229, 3, 326, 163, 0, 1229, 1230, 5, 28, 0, 0, 1230, 1231, 5, 529, 0, 0, 1231, 1288, 1, 0, 0, 0, 1232, 1234, 5, 99, 0, 0, 1233, 1235, 3, 170, 85, 0, 1234, 1233, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1237, 1, 0, 0, 0, 1236, 1238, 7, 9, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1243, 5, 191, 0, 0, 1240, 1241, 5, 214, 0, 0, 1241, 1242, 5, 303, 0, 0, 1242, 1244, 5, 164, 0, 0, 1243, 1240, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, 3, 392, 196, 0, 1246, 1248, 5, 2, 0, 0, 1247, 1249, 3, 128, 64, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 5, 3, 0, 0, 1251, 1252, 5, 385, 0, 0, 1252, 1255, 3, 422, 211, 0, 1253, 1254, 5, 227, 0, 0, 1254, 1256, 3, 422, 211, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 1, 0, 0, 0, 1257, 1259, 3, 314, 157, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1288, 1, 0, 0, 0, 1260, 1262, 5, 99, 0, 0, 1261, 1263, 3, 170, 85, 0, 1262, 1261, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1265, 5, 19, 0, 0, 1265, 1269, 5, 191, 0, 0, 1266, 1267, 5, 214, 0, 0, 1267, 1268, 5, 303, 0, 0, 1268, 1270, 5, 164, 0, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 3, 392, 196, 0, 1272, 1274, 5, 2, 0, 0, 1273, 1275, 3, 128, 64, 0, 1274, 1273, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1277, 5, 3, 0, 0, 1277, 1278, 5, 497, 0, 0, 1278, 1279, 5, 319, 0, 0, 1279, 1281, 5, 2, 0, 0, 1280, 1282, 3, 306, 153, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 5, 3, 0, 0, 1284, 1285, 5, 28, 0, 0, 1285, 1286, 3, 370, 185, 0, 1286, 1288, 1, 0, 0, 0, 1287, 964, 1, 0, 0, 0, 1287, 1047, 1, 0, 0, 0, 1287, 1072, 1, 0, 0, 0, 1287, 1080, 1, 0, 0, 0, 1287, 1100, 1, 0, 0, 0, 1287, 1112, 1, 0, 0, 0, 1287, 1124, 1, 0, 0, 0, 1287, 1144, 1, 0, 0, 0, 1287, 1168, 1, 0, 0, 0, 1287, 1180, 1, 0, 0, 0, 1287, 1188, 1, 0, 0, 0, 1287, 1210, 1, 0, 0, 0, 1287, 1221, 1, 0, 0, 0, 1287, 1232, 1, 0, 0, 0, 1287, 1260, 1, 0, 0, 0, 1288, 19, 1, 0, 0, 0, 1289, 1290, 5, 21, 0, 0, 1290, 1291, 5, 438, 0, 0, 1291, 1446, 3, 92, 46, 0, 1292, 1293, 5, 21, 0, 0, 1293, 1294, 5, 489, 0, 0, 1294, 1305, 3, 326, 163, 0, 1295, 1296, 5, 290, 0, 0, 1296, 1306, 3, 436, 218, 0, 1297, 1298, 5, 2, 0, 0, 1298, 1299, 3, 328, 164, 0, 1299, 1300, 5, 3, 0, 0, 1300, 1302, 1, 0, 0, 0, 1301, 1297, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 5, 28, 0, 0, 1304, 1306, 3, 228, 114, 0, 1305, 1295, 1, 0, 0, 0, 1305, 1301, 1, 0, 0, 0, 1306, 1446, 1, 0, 0, 0, 1307, 1308, 5, 21, 0, 0, 1308, 1309, 5, 66, 0, 0, 1309, 1310, 3, 448, 224, 0, 1310, 1311, 5, 371, 0, 0, 1311, 1312, 3, 448, 224, 0, 1312, 1446, 1, 0, 0, 0, 1313, 1314, 5, 21, 0, 0, 1314, 1315, 5, 390, 0, 0, 1315, 1316, 3, 448, 224, 0, 1316, 1317, 3, 436, 218, 0, 1317, 1446, 1, 0, 0, 0, 1318, 1319, 5, 21, 0, 0, 1319, 1320, 5, 429, 0, 0, 1320, 1321, 5, 485, 0, 0, 1321, 1322, 3, 326, 163, 0, 1322, 1323, 3, 314, 157, 0, 1323, 1446, 1, 0, 0, 0, 1324, 1325, 5, 21, 0, 0, 1325, 1326, 5, 390, 0, 0, 1326, 1327, 3, 448, 224, 0, 1327, 1328, 3, 436, 218, 0, 1328, 1446, 1, 0, 0, 0, 1329, 1330, 5, 21, 0, 0, 1330, 1331, 5, 499, 0, 0, 1331, 1332, 5, 199, 0, 0, 1332, 1334, 3, 182, 91, 0, 1333, 1335, 3, 314, 157, 0, 1334, 1333, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1446, 1, 0, 0, 0, 1336, 1337, 5, 21, 0, 0, 1337, 1338, 5, 66, 0, 0, 1338, 1339, 3, 448, 224, 0, 1339, 1340, 5, 409, 0, 0, 1340, 1341, 5, 350, 0, 0, 1341, 1342, 5, 2, 0, 0, 1342, 1343, 3, 316, 158, 0, 1343, 1344, 5, 3, 0, 0, 1344, 1446, 1, 0, 0, 0, 1345, 1346, 5, 21, 0, 0, 1346, 1347, 5, 499, 0, 0, 1347, 1348, 5, 342, 0, 0, 1348, 1350, 3, 182, 91, 0, 1349, 1351, 3, 314, 157, 0, 1350, 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1446, 1, 0, 0, 0, 1352, 1353, 5, 21, 0, 0, 1353, 1354, 5, 421, 0, 0, 1354, 1356, 3, 448, 224, 0, 1355, 1357, 3, 314, 157, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1446, 1, 0, 0, 0, 1358, 1359, 5, 21, 0, 0, 1359, 1360, 5, 66, 0, 0, 1360, 1361, 3, 448, 224, 0, 1361, 1362, 5, 290, 0, 0, 1362, 1363, 5, 81, 0, 0, 1363, 1364, 5, 529, 0, 0, 1364, 1446, 1, 0, 0, 0, 1365, 1366, 5, 21, 0, 0, 1366, 1367, 5, 111, 0, 0, 1367, 1368, 3, 448, 224, 0, 1368, 1369, 5, 371, 0, 0, 1369, 1370, 3, 448, 224, 0, 1370, 1446, 1, 0, 0, 0, 1371, 1372, 5, 21, 0, 0, 1372, 1373, 5, 390, 0, 0, 1373, 1374, 3, 448, 224, 0, 1374, 1375, 3, 436, 218, 0, 1375, 1446, 1, 0, 0, 0, 1376, 1377, 5, 21, 0, 0, 1377, 1378, 5, 439, 0, 0, 1378, 1379, 3, 326, 163, 0, 1379, 1384, 3, 98, 49, 0, 1380, 1381, 5, 4, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1446, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 21, 0, 0, 1388, 1389, 5, 439, 0, 0, 1389, 1390, 3, 326, 163, 0, 1390, 1391, 5, 14, 0, 0, 1391, 1392, 5, 393, 0, 0, 1392, 1397, 3, 96, 48, 0, 1393, 1394, 5, 4, 0, 0, 1394, 1396, 3, 96, 48, 0, 1395, 1393, 1, 0, 0, 0, 1396, 1399, 1, 0, 0, 0, 1397, 1395, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1446, 1, 0, 0, 0, 1399, 1397, 1, 0, 0, 0, 1400, 1401, 5, 21, 0, 0, 1401, 1402, 5, 439, 0, 0, 1402, 1403, 3, 326, 163, 0, 1403, 1404, 5, 142, 0, 0, 1404, 1405, 5, 393, 0, 0, 1405, 1410, 3, 94, 47, 0, 1406, 1407, 5, 4, 0, 0, 1407, 1409, 3, 94, 47, 0, 1408, 1406, 1, 0, 0, 0, 1409, 1412, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1446, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1414, 5, 21, 0, 0, 1414, 1415, 5, 439, 0, 0, 1415, 1416, 3, 326, 163, 0, 1416, 1417, 5, 409, 0, 0, 1417, 1418, 5, 2, 0, 0, 1418, 1419, 3, 316, 158, 0, 1419, 1420, 5, 3, 0, 0, 1420, 1446, 1, 0, 0, 0, 1421, 1422, 5, 21, 0, 0, 1422, 1423, 5, 111, 0, 0, 1423, 1424, 3, 448, 224, 0, 1424, 1425, 5, 409, 0, 0, 1425, 1426, 7, 10, 0, 0, 1426, 1429, 5, 356, 0, 0, 1427, 1430, 3, 448, 224, 0, 1428, 1430, 5, 534, 0, 0, 1429, 1427, 1, 0, 0, 0, 1429, 1428, 1, 0, 0, 0, 1430, 1446, 1, 0, 0, 0, 1431, 1432, 5, 21, 0, 0, 1432, 1433, 5, 438, 0, 0, 1433, 1434, 5, 371, 0, 0, 1434, 1435, 5, 87, 0, 0, 1435, 1436, 5, 199, 0, 0, 1436, 1437, 3, 448, 224, 0, 1437, 1438, 3, 448, 224, 0, 1438, 1446, 1, 0, 0, 0, 1439, 1440, 5, 21, 0, 0, 1440, 1441, 5, 379, 0, 0, 1441, 1443, 3, 448, 224, 0, 1442, 1444, 3, 314, 157, 0, 1443, 1442, 1, 0, 0, 0, 1443, 1444, 1, 0, 0, 0, 1444, 1446, 1, 0, 0, 0, 1445, 1289, 1, 0, 0, 0, 1445, 1292, 1, 0, 0, 0, 1445, 1307, 1, 0, 0, 0, 1445, 1313, 1, 0, 0, 0, 1445, 1318, 1, 0, 0, 0, 1445, 1324, 1, 0, 0, 0, 1445, 1329, 1, 0, 0, 0, 1445, 1336, 1, 0, 0, 0, 1445, 1345, 1, 0, 0, 0, 1445, 1352, 1, 0, 0, 0, 1445, 1358, 1, 0, 0, 0, 1445, 1365, 1, 0, 0, 0, 1445, 1371, 1, 0, 0, 0, 1445, 1376, 1, 0, 0, 0, 1445, 1387, 1, 0, 0, 0, 1445, 1400, 1, 0, 0, 0, 1445, 1413, 1, 0, 0, 0, 1445, 1421, 1, 0, 0, 0, 1445, 1431, 1, 0, 0, 0, 1445, 1439, 1, 0, 0, 0, 1446, 21, 1, 0, 0, 0, 1447, 1448, 5, 142, 0, 0, 1448, 1449, 5, 66, 0, 0, 1449, 1450, 5, 366, 0, 0, 1450, 1451, 5, 42, 0, 0, 1451, 1452, 5, 495, 0, 0, 1452, 1453, 5, 529, 0, 0, 1453, 1454, 5, 503, 0, 0, 1454, 1572, 5, 534, 0, 0, 1455, 1456, 5, 142, 0, 0, 1456, 1459, 5, 151, 0, 0, 1457, 1458, 5, 214, 0, 0, 1458, 1460, 5, 164, 0, 0, 1459, 1457, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1572, 3, 326, 163, 0, 1462, 1463, 5, 142, 0, 0, 1463, 1466, 5, 390, 0, 0, 1464, 1465, 5, 214, 0, 0, 1465, 1467, 5, 164, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1572, 3, 448, 224, 0, 1469, 1470, 5, 142, 0, 0, 1470, 1473, 5, 421, 0, 0, 1471, 1472, 5, 214, 0, 0, 1472, 1474, 5, 164, 0, 0, 1473, 1471, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1572, 3, 306, 153, 0, 1476, 1477, 5, 142, 0, 0, 1477, 1480, 5, 476, 0, 0, 1478, 1479, 5, 214, 0, 0, 1479, 1481, 5, 164, 0, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1572, 3, 190, 95, 0, 1483, 1484, 5, 142, 0, 0, 1484, 1485, 5, 429, 0, 0, 1485, 1488, 5, 342, 0, 0, 1486, 1487, 5, 214, 0, 0, 1487, 1489, 5, 164, 0, 0, 1488, 1486, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1572, 3, 448, 224, 0, 1491, 1492, 5, 142, 0, 0, 1492, 1493, 5, 499, 0, 0, 1493, 1496, 5, 199, 0, 0, 1494, 1495, 5, 214, 0, 0, 1495, 1497, 5, 164, 0, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1572, 3, 182, 91, 0, 1499, 1500, 5, 142, 0, 0, 1500, 1503, 5, 66, 0, 0, 1501, 1502, 5, 214, 0, 0, 1502, 1504, 5, 164, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1572, 3, 448, 224, 0, 1506, 1507, 5, 142, 0, 0, 1507, 1508, 5, 176, 0, 0, 1508, 1511, 5, 529, 0, 0, 1509, 1510, 7, 6, 0, 0, 1510, 1512, 3, 448, 224, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1572, 3, 314, 157, 0, 1514, 1515, 5, 142, 0, 0, 1515, 1516, 5, 499, 0, 0, 1516, 1519, 5, 342, 0, 0, 1517, 1518, 5, 214, 0, 0, 1518, 1520, 5, 164, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 1572, 3, 182, 91, 0, 1522, 1523, 5, 142, 0, 0, 1523, 1524, 5, 379, 0, 0, 1524, 1572, 3, 448, 224, 0, 1525, 1526, 5, 142, 0, 0, 1526, 1529, 5, 439, 0, 0, 1527, 1528, 5, 214, 0, 0, 1528, 1530, 5, 164, 0, 0, 1529, 1527, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1533, 3, 326, 163, 0, 1532, 1534, 5, 184, 0, 0, 1533, 1532, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1572, 1, 0, 0, 0, 1535, 1536, 5, 142, 0, 0, 1536, 1539, 7, 11, 0, 0, 1537, 1538, 5, 214, 0, 0, 1538, 1540, 5, 164, 0, 0, 1539, 1537, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1543, 3, 326, 163, 0, 1542, 1544, 5, 184, 0, 0, 1543, 1542, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1572, 1, 0, 0, 0, 1545, 1547, 5, 142, 0, 0, 1546, 1548, 3, 170, 85, 0, 1547, 1546, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1552, 5, 191, 0, 0, 1550, 1551, 5, 214, 0, 0, 1551, 1553, 5, 164, 0, 0, 1552, 1550, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 3, 392, 196, 0, 1555, 1557, 5, 2, 0, 0, 1556, 1558, 3, 128, 64, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1560, 5, 3, 0, 0, 1560, 1572, 1, 0, 0, 0, 1561, 1562, 5, 142, 0, 0, 1562, 1565, 5, 219, 0, 0, 1563, 1564, 5, 214, 0, 0, 1564, 1566, 5, 164, 0, 0, 1565, 1563, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 3, 448, 224, 0, 1568, 1569, 5, 309, 0, 0, 1569, 1570, 3, 326, 163, 0, 1570, 1572, 1, 0, 0, 0, 1571, 1447, 1, 0, 0, 0, 1571, 1455, 1, 0, 0, 0, 1571, 1462, 1, 0, 0, 0, 1571, 1469, 1, 0, 0, 0, 1571, 1476, 1, 0, 0, 0, 1571, 1483, 1, 0, 0, 0, 1571, 1491, 1, 0, 0, 0, 1571, 1499, 1, 0, 0, 0, 1571, 1506, 1, 0, 0, 0, 1571, 1514, 1, 0, 0, 0, 1571, 1522, 1, 0, 0, 0, 1571, 1525, 1, 0, 0, 0, 1571, 1535, 1, 0, 0, 0, 1571, 1545, 1, 0, 0, 0, 1571, 1561, 1, 0, 0, 0, 1572, 23, 1, 0, 0, 0, 1573, 1575, 5, 413, 0, 0, 1574, 1576, 3, 170, 85, 0, 1575, 1574, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 1579, 5, 483, 0, 0, 1578, 1580, 3, 80, 40, 0, 1579, 1578, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1918, 1, 0, 0, 0, 1581, 1582, 5, 413, 0, 0, 1582, 1918, 5, 31, 0, 0, 1583, 1584, 5, 413, 0, 0, 1584, 1585, 5, 99, 0, 0, 1585, 1586, 7, 11, 0, 0, 1586, 1918, 3, 326, 163, 0, 1587, 1588, 5, 413, 0, 0, 1588, 1918, 5, 54, 0, 0, 1589, 1590, 5, 413, 0, 0, 1590, 1591, 5, 147, 0, 0, 1591, 1592, 5, 321, 0, 0, 1592, 1595, 5, 440, 0, 0, 1593, 1594, 7, 6, 0, 0, 1594, 1596, 3, 326, 163, 0, 1595, 1593, 1, 0, 0, 0, 1595, 1596, 1, 0, 0, 0, 1596, 1918, 1, 0, 0, 0, 1597, 1598, 5, 413, 0, 0, 1598, 1601, 5, 159, 0, 0, 1599, 1600, 7, 6, 0, 0, 1600, 1602, 3, 326, 163, 0, 1601, 1599, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 1, 0, 0, 0, 1603, 1605, 3, 80, 40, 0, 1604, 1603, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1918, 1, 0, 0, 0, 1606, 1607, 5, 413, 0, 0, 1607, 1608, 5, 249, 0, 0, 1608, 1918, 5, 223, 0, 0, 1609, 1613, 5, 413, 0, 0, 1610, 1611, 5, 69, 0, 0, 1611, 1614, 5, 409, 0, 0, 1612, 1614, 5, 70, 0, 0, 1613, 1610, 1, 0, 0, 0, 1613, 1612, 1, 0, 0, 0, 1614, 1918, 1, 0, 0, 0, 1615, 1616, 5, 413, 0, 0, 1616, 1619, 5, 126, 0, 0, 1617, 1618, 7, 6, 0, 0, 1618, 1620, 3, 326, 163, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1918, 1, 0, 0, 0, 1621, 1623, 5, 413, 0, 0, 1622, 1624, 5, 20, 0, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1918, 5, 197, 0, 0, 1626, 1627, 5, 413, 0, 0, 1627, 1628, 5, 197, 0, 0, 1628, 1629, 5, 182, 0, 0, 1629, 1918, 3, 190, 95, 0, 1630, 1631, 5, 413, 0, 0, 1631, 1632, 5, 437, 0, 0, 1632, 1635, 5, 239, 0, 0, 1633, 1634, 7, 6, 0, 0, 1634, 1636, 3, 326, 163, 0, 1635, 1633, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1918, 1, 0, 0, 0, 1637, 1638, 5, 413, 0, 0, 1638, 1639, 5, 261, 0, 0, 1639, 1641, 5, 349, 0, 0, 1640, 1642, 5, 529, 0, 0, 1641, 1640, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 1, 0, 0, 0, 1643, 1645, 3, 296, 148, 0, 1644, 1643, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1918, 1, 0, 0, 0, 1646, 1647, 5, 413, 0, 0, 1647, 1648, 5, 99, 0, 0, 1648, 1649, 5, 379, 0, 0, 1649, 1650, 5, 182, 0, 0, 1650, 1918, 3, 448, 224, 0, 1651, 1652, 5, 413, 0, 0, 1652, 1653, 5, 489, 0, 0, 1653, 1654, 7, 6, 0, 0, 1654, 1657, 3, 326, 163, 0, 1655, 1656, 7, 6, 0, 0, 1656, 1658, 3, 448, 224, 0, 1657, 1655, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1918, 1, 0, 0, 0, 1659, 1660, 5, 413, 0, 0, 1660, 1918, 5, 341, 0, 0, 1661, 1662, 5, 413, 0, 0, 1662, 1918, 5, 378, 0, 0, 1663, 1664, 5, 413, 0, 0, 1664, 1667, 5, 152, 0, 0, 1665, 1666, 7, 6, 0, 0, 1666, 1668, 3, 326, 163, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1671, 1, 0, 0, 0, 1669, 1670, 5, 256, 0, 0, 1670, 1672, 5, 529, 0, 0, 1671, 1669, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1918, 1, 0, 0, 0, 1673, 1675, 5, 413, 0, 0, 1674, 1676, 5, 53, 0, 0, 1675, 1674, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 5, 99, 0, 0, 1678, 1679, 5, 439, 0, 0, 1679, 1918, 3, 326, 163, 0, 1680, 1682, 5, 413, 0, 0, 1681, 1683, 5, 190, 0, 0, 1682, 1681, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1918, 5, 348, 0, 0, 1685, 1686, 5, 413, 0, 0, 1686, 1918, 5, 391, 0, 0, 1687, 1688, 5, 413, 0, 0, 1688, 1689, 5, 321, 0, 0, 1689, 1918, 5, 534, 0, 0, 1690, 1691, 5, 413, 0, 0, 1691, 1918, 5, 338, 0, 0, 1692, 1693, 5, 413, 0, 0, 1693, 1694, 5, 346, 0, 0, 1694, 1918, 5, 529, 0, 0, 1695, 1696, 5, 413, 0, 0, 1696, 1699, 5, 176, 0, 0, 1697, 1698, 7, 6, 0, 0, 1698, 1700, 3, 326, 163, 0, 1699, 1697, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1918, 1, 0, 0, 0, 1701, 1703, 5, 413, 0, 0, 1702, 1704, 5, 429, 0, 0, 1703, 1702, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1918, 5, 156, 0, 0, 1706, 1707, 5, 413, 0, 0, 1707, 1708, 5, 99, 0, 0, 1708, 1709, 5, 66, 0, 0, 1709, 1918, 3, 448, 224, 0, 1710, 1711, 5, 413, 0, 0, 1711, 1712, 5, 66, 0, 0, 1712, 1918, 3, 448, 224, 0, 1713, 1714, 5, 413, 0, 0, 1714, 1716, 5, 67, 0, 0, 1715, 1717, 3, 80, 40, 0, 1716, 1715, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 1918, 1, 0, 0, 0, 1718, 1719, 5, 413, 0, 0, 1719, 1722, 5, 351, 0, 0, 1720, 1721, 5, 182, 0, 0, 1721, 1723, 3, 182, 91, 0, 1722, 1720, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 0, 1724, 1725, 5, 256, 0, 0, 1725, 1727, 5, 529, 0, 0, 1726, 1724, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1918, 1, 0, 0, 0, 1728, 1729, 5, 413, 0, 0, 1729, 1730, 5, 20, 0, 0, 1730, 1733, 5, 350, 0, 0, 1731, 1732, 5, 256, 0, 0, 1732, 1734, 5, 529, 0, 0, 1733, 1731, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1918, 1, 0, 0, 0, 1735, 1736, 5, 413, 0, 0, 1736, 1738, 5, 76, 0, 0, 1737, 1739, 3, 80, 40, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1918, 1, 0, 0, 0, 1740, 1741, 5, 413, 0, 0, 1741, 1742, 5, 429, 0, 0, 1742, 1748, 5, 342, 0, 0, 1743, 1746, 5, 478, 0, 0, 1744, 1745, 5, 182, 0, 0, 1745, 1747, 3, 182, 91, 0, 1746, 1744, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1749, 1, 0, 0, 0, 1748, 1743, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1918, 1, 0, 0, 0, 1750, 1751, 5, 413, 0, 0, 1751, 1754, 5, 421, 0, 0, 1752, 1753, 5, 182, 0, 0, 1753, 1755, 3, 448, 224, 0, 1754, 1752, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1918, 1, 0, 0, 0, 1756, 1757, 5, 413, 0, 0, 1757, 1758, 5, 99, 0, 0, 1758, 1759, 5, 489, 0, 0, 1759, 1918, 3, 326, 163, 0, 1760, 1761, 5, 413, 0, 0, 1761, 1762, 5, 110, 0, 0, 1762, 1918, 5, 464, 0, 0, 1763, 1764, 5, 413, 0, 0, 1764, 1766, 5, 110, 0, 0, 1765, 1767, 5, 20, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1769, 5, 187, 0, 0, 1769, 1771, 3, 326, 163, 0, 1770, 1768, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1773, 1, 0, 0, 0, 1772, 1774, 3, 292, 146, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1776, 1, 0, 0, 0, 1775, 1777, 3, 314, 157, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1918, 1, 0, 0, 0, 1778, 1779, 5, 413, 0, 0, 1779, 1780, 5, 99, 0, 0, 1780, 1781, 5, 280, 0, 0, 1781, 1782, 5, 489, 0, 0, 1782, 1783, 3, 448, 224, 0, 1783, 1784, 5, 309, 0, 0, 1784, 1785, 3, 326, 163, 0, 1785, 1918, 1, 0, 0, 0, 1786, 1787, 5, 413, 0, 0, 1787, 1789, 7, 12, 0, 0, 1788, 1790, 3, 296, 148, 0, 1789, 1788, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1918, 1, 0, 0, 0, 1791, 1792, 5, 413, 0, 0, 1792, 1793, 5, 98, 0, 0, 1793, 1794, 5, 2, 0, 0, 1794, 1795, 5, 512, 0, 0, 1795, 1796, 5, 3, 0, 0, 1796, 1918, 7, 12, 0, 0, 1797, 1798, 5, 413, 0, 0, 1798, 1918, 5, 36, 0, 0, 1799, 1800, 5, 413, 0, 0, 1800, 1918, 5, 423, 0, 0, 1801, 1802, 5, 413, 0, 0, 1802, 1803, 5, 377, 0, 0, 1803, 1804, 5, 137, 0, 0, 1804, 1805, 5, 187, 0, 0, 1805, 1918, 3, 78, 39, 0, 1806, 1808, 5, 413, 0, 0, 1807, 1809, 5, 190, 0, 0, 1808, 1807, 1, 0, 0, 0, 1808, 1809, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 1813, 5, 458, 0, 0, 1811, 1812, 7, 6, 0, 0, 1812, 1814, 3, 326, 163, 0, 1813, 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1816, 1, 0, 0, 0, 1815, 1817, 3, 80, 40, 0, 1816, 1815, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1918, 1, 0, 0, 0, 1818, 1819, 5, 413, 0, 0, 1819, 1820, 5, 442, 0, 0, 1820, 1821, 5, 131, 0, 0, 1821, 1918, 5, 534, 0, 0, 1822, 1823, 5, 413, 0, 0, 1823, 1825, 5, 189, 0, 0, 1824, 1826, 3, 448, 224, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1918, 1, 0, 0, 0, 1827, 1828, 5, 413, 0, 0, 1828, 1829, 5, 111, 0, 0, 1829, 1918, 5, 534, 0, 0, 1830, 1831, 5, 413, 0, 0, 1831, 1832, 5, 439, 0, 0, 1832, 1918, 5, 534, 0, 0, 1833, 1834, 5, 413, 0, 0, 1834, 1837, 5, 456, 0, 0, 1835, 1836, 5, 309, 0, 0, 1836, 1838, 5, 529, 0, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1918, 1, 0, 0, 0, 1839, 1841, 5, 413, 0, 0, 1840, 1842, 3, 170, 85, 0, 1841, 1840, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1918, 5, 427, 0, 0, 1844, 1845, 5, 413, 0, 0, 1845, 1918, 5, 496, 0, 0, 1846, 1847, 5, 413, 0, 0, 1847, 1848, 5, 443, 0, 0, 1848, 1849, 5, 39, 0, 0, 1849, 1854, 5, 534, 0, 0, 1850, 1851, 5, 4, 0, 0, 1851, 1853, 5, 534, 0, 0, 1852, 1850, 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1918, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1858, 5, 413, 0, 0, 1858, 1859, 5, 110, 0, 0, 1859, 1860, 5, 415, 0, 0, 1860, 1861, 5, 187, 0, 0, 1861, 1918, 3, 78, 39, 0, 1862, 1863, 5, 413, 0, 0, 1863, 1864, 5, 439, 0, 0, 1864, 1867, 5, 100, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1868, 3, 326, 163, 0, 1867, 1865, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1870, 5, 256, 0, 0, 1870, 1872, 5, 529, 0, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1918, 1, 0, 0, 0, 1873, 1874, 5, 413, 0, 0, 1874, 1875, 5, 442, 0, 0, 1875, 1876, 5, 429, 0, 0, 1876, 1878, 5, 185, 0, 0, 1877, 1879, 5, 487, 0, 0, 1878, 1877, 1, 0, 0, 0, 1878, 1879, 1, 0, 0, 0, 1879, 1918, 1, 0, 0, 0, 1880, 1881, 5, 413, 0, 0, 1881, 1882, 5, 354, 0, 0, 1882, 1884, 5, 349, 0, 0, 1883, 1885, 5, 529, 0, 0, 1884, 1883, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1887, 1, 0, 0, 0, 1886, 1888, 3, 296, 148, 0, 1887, 1886, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1918, 1, 0, 0, 0, 1889, 1890, 5, 413, 0, 0, 1890, 1893, 5, 96, 0, 0, 1891, 1892, 7, 6, 0, 0, 1892, 1894, 3, 326, 163, 0, 1893, 1891, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1918, 1, 0, 0, 0, 1895, 1897, 5, 413, 0, 0, 1896, 1898, 5, 190, 0, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1902, 5, 440, 0, 0, 1900, 1901, 7, 6, 0, 0, 1901, 1903, 3, 326, 163, 0, 1902, 1900, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1905, 1, 0, 0, 0, 1904, 1906, 3, 80, 40, 0, 1905, 1904, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 1918, 1, 0, 0, 0, 1907, 1908, 5, 413, 0, 0, 1908, 1909, 5, 439, 0, 0, 1909, 1912, 5, 427, 0, 0, 1910, 1911, 7, 6, 0, 0, 1911, 1913, 3, 326, 163, 0, 1912, 1910, 1, 0, 0, 0, 1912, 1913, 1, 0, 0, 0, 1913, 1915, 1, 0, 0, 0, 1914, 1916, 3, 80, 40, 0, 1915, 1914, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1918, 1, 0, 0, 0, 1917, 1573, 1, 0, 0, 0, 1917, 1581, 1, 0, 0, 0, 1917, 1583, 1, 0, 0, 0, 1917, 1587, 1, 0, 0, 0, 1917, 1589, 1, 0, 0, 0, 1917, 1597, 1, 0, 0, 0, 1917, 1606, 1, 0, 0, 0, 1917, 1609, 1, 0, 0, 0, 1917, 1615, 1, 0, 0, 0, 1917, 1621, 1, 0, 0, 0, 1917, 1626, 1, 0, 0, 0, 1917, 1630, 1, 0, 0, 0, 1917, 1637, 1, 0, 0, 0, 1917, 1646, 1, 0, 0, 0, 1917, 1651, 1, 0, 0, 0, 1917, 1659, 1, 0, 0, 0, 1917, 1661, 1, 0, 0, 0, 1917, 1663, 1, 0, 0, 0, 1917, 1673, 1, 0, 0, 0, 1917, 1680, 1, 0, 0, 0, 1917, 1685, 1, 0, 0, 0, 1917, 1687, 1, 0, 0, 0, 1917, 1690, 1, 0, 0, 0, 1917, 1692, 1, 0, 0, 0, 1917, 1695, 1, 0, 0, 0, 1917, 1701, 1, 0, 0, 0, 1917, 1706, 1, 0, 0, 0, 1917, 1710, 1, 0, 0, 0, 1917, 1713, 1, 0, 0, 0, 1917, 1718, 1, 0, 0, 0, 1917, 1728, 1, 0, 0, 0, 1917, 1735, 1, 0, 0, 0, 1917, 1740, 1, 0, 0, 0, 1917, 1750, 1, 0, 0, 0, 1917, 1756, 1, 0, 0, 0, 1917, 1760, 1, 0, 0, 0, 1917, 1763, 1, 0, 0, 0, 1917, 1778, 1, 0, 0, 0, 1917, 1786, 1, 0, 0, 0, 1917, 1791, 1, 0, 0, 0, 1917, 1797, 1, 0, 0, 0, 1917, 1799, 1, 0, 0, 0, 1917, 1801, 1, 0, 0, 0, 1917, 1806, 1, 0, 0, 0, 1917, 1818, 1, 0, 0, 0, 1917, 1822, 1, 0, 0, 0, 1917, 1827, 1, 0, 0, 0, 1917, 1830, 1, 0, 0, 0, 1917, 1833, 1, 0, 0, 0, 1917, 1839, 1, 0, 0, 0, 1917, 1844, 1, 0, 0, 0, 1917, 1846, 1, 0, 0, 0, 1917, 1857, 1, 0, 0, 0, 1917, 1862, 1, 0, 0, 0, 1917, 1873, 1, 0, 0, 0, 1917, 1880, 1, 0, 0, 0, 1917, 1889, 1, 0, 0, 0, 1917, 1895, 1, 0, 0, 0, 1917, 1907, 1, 0, 0, 0, 1918, 25, 1, 0, 0, 0, 1919, 1922, 5, 437, 0, 0, 1920, 1922, 3, 38, 19, 0, 1921, 1919, 1, 0, 0, 0, 1921, 1920, 1, 0, 0, 0, 1922, 27, 1, 0, 0, 0, 1923, 1924, 5, 205, 0, 0, 1924, 1925, 3, 182, 91, 0, 1925, 29, 1, 0, 0, 0, 1926, 1927, 5, 224, 0, 0, 1927, 1928, 5, 340, 0, 0, 1928, 1929, 5, 187, 0, 0, 1929, 1931, 3, 182, 91, 0, 1930, 1932, 3, 314, 157, 0, 1931, 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 2030, 1, 0, 0, 0, 1933, 1934, 5, 467, 0, 0, 1934, 1935, 5, 340, 0, 0, 1935, 2030, 3, 182, 91, 0, 1936, 1937, 5, 266, 0, 0, 1937, 1946, 5, 440, 0, 0, 1938, 1943, 3, 34, 17, 0, 1939, 1940, 5, 4, 0, 0, 1940, 1942, 3, 34, 17, 0, 1941, 1939, 1, 0, 0, 0, 1942, 1945, 1, 0, 0, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1947, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1946, 1938, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 2030, 1, 0, 0, 0, 1948, 1949, 5, 470, 0, 0, 1949, 2030, 5, 440, 0, 0, 1950, 1951, 5, 491, 0, 0, 1951, 1955, 5, 473, 0, 0, 1952, 1956, 5, 73, 0, 0, 1953, 1954, 5, 87, 0, 0, 1954, 1956, 5, 199, 0, 0, 1955, 1952, 1, 0, 0, 0, 1955, 1953, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1958, 3, 448, 224, 0, 1958, 1973, 5, 497, 0, 0, 1959, 1963, 5, 73, 0, 0, 1960, 1961, 5, 87, 0, 0, 1961, 1963, 5, 199, 0, 0, 1962, 1959, 1, 0, 0, 0, 1962, 1960, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 1974, 3, 448, 224, 0, 1965, 1970, 3, 32, 16, 0, 1966, 1967, 5, 24, 0, 0, 1967, 1969, 3, 32, 16, 0, 1968, 1966, 1, 0, 0, 0, 1969, 1972, 1, 0, 0, 0, 1970, 1968, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1974, 1, 0, 0, 0, 1972, 1970, 1, 0, 0, 0, 1973, 1962, 1, 0, 0, 0, 1973, 1965, 1, 0, 0, 0, 1974, 1976, 1, 0, 0, 0, 1975, 1977, 5, 184, 0, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 2030, 1, 0, 0, 0, 1978, 1979, 5, 37, 0, 0, 1979, 1980, 5, 417, 0, 0, 1980, 1981, 3, 326, 163, 0, 1981, 1982, 5, 454, 0, 0, 1982, 1995, 3, 448, 224, 0, 1983, 1984, 7, 13, 0, 0, 1984, 1985, 5, 2, 0, 0, 1985, 1990, 3, 78, 39, 0, 1986, 1987, 5, 4, 0, 0, 1987, 1989, 3, 78, 39, 0, 1988, 1986, 1, 0, 0, 0, 1989, 1992, 1, 0, 0, 0, 1990, 1988, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1993, 1, 0, 0, 0, 1992, 1990, 1, 0, 0, 0, 1993, 1994, 5, 3, 0, 0, 1994, 1996, 1, 0, 0, 0, 1995, 1983, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 1, 0, 0, 0, 1997, 1999, 3, 314, 157, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2030, 1, 0, 0, 0, 2000, 2001, 5, 382, 0, 0, 2001, 2002, 5, 417, 0, 0, 2002, 2003, 3, 326, 163, 0, 2003, 2004, 5, 187, 0, 0, 2004, 2017, 3, 448, 224, 0, 2005, 2006, 7, 13, 0, 0, 2006, 2007, 5, 2, 0, 0, 2007, 2012, 3, 78, 39, 0, 2008, 2009, 5, 4, 0, 0, 2009, 2011, 3, 78, 39, 0, 2010, 2008, 1, 0, 0, 0, 2011, 2014, 1, 0, 0, 0, 2012, 2010, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2015, 2016, 5, 3, 0, 0, 2016, 2018, 1, 0, 0, 0, 2017, 2005, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2020, 1, 0, 0, 0, 2019, 2021, 3, 314, 157, 0, 2020, 2019, 1, 0, 0, 0, 2020, 2021, 1, 0, 0, 0, 2021, 2030, 1, 0, 0, 0, 2022, 2023, 5, 424, 0, 0, 2023, 2027, 5, 455, 0, 0, 2024, 2025, 5, 497, 0, 0, 2025, 2026, 5, 92, 0, 0, 2026, 2028, 5, 417, 0, 0, 2027, 2024, 1, 0, 0, 0, 2027, 2028, 1, 0, 0, 0, 2028, 2030, 1, 0, 0, 0, 2029, 1926, 1, 0, 0, 0, 2029, 1933, 1, 0, 0, 0, 2029, 1936, 1, 0, 0, 0, 2029, 1948, 1, 0, 0, 0, 2029, 1950, 1, 0, 0, 0, 2029, 1978, 1, 0, 0, 0, 2029, 2000, 1, 0, 0, 0, 2029, 2022, 1, 0, 0, 0, 2030, 31, 1, 0, 0, 0, 2031, 2032, 5, 439, 0, 0, 2032, 2035, 3, 326, 163, 0, 2033, 2034, 5, 321, 0, 0, 2034, 2036, 3, 448, 224, 0, 2035, 2033, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 33, 1, 0, 0, 0, 2037, 2040, 3, 326, 163, 0, 2038, 2039, 5, 28, 0, 0, 2039, 2041, 3, 182, 91, 0, 2040, 2038, 1, 0, 0, 0, 2040, 2041, 1, 0, 0, 0, 2041, 2050, 1, 0, 0, 0, 2042, 2044, 5, 361, 0, 0, 2043, 2045, 5, 262, 0, 0, 2044, 2043, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2051, 1, 0, 0, 0, 2046, 2048, 5, 268, 0, 0, 2047, 2046, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2051, 5, 500, 0, 0, 2050, 2042, 1, 0, 0, 0, 2050, 2047, 1, 0, 0, 0, 2051, 35, 1, 0, 0, 0, 2052, 2053, 5, 413, 0, 0, 2053, 2054, 5, 395, 0, 0, 2054, 2061, 5, 342, 0, 0, 2055, 2059, 5, 182, 0, 0, 2056, 2060, 3, 190, 95, 0, 2057, 2058, 5, 390, 0, 0, 2058, 2060, 3, 448, 224, 0, 2059, 2056, 1, 0, 0, 0, 2059, 2057, 1, 0, 0, 0, 2060, 2062, 1, 0, 0, 0, 2061, 2055, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2410, 1, 0, 0, 0, 2063, 2064, 5, 413, 0, 0, 2064, 2065, 5, 429, 0, 0, 2065, 2410, 7, 14, 0, 0, 2066, 2067, 5, 413, 0, 0, 2067, 2068, 5, 311, 0, 0, 2068, 2071, 5, 440, 0, 0, 2069, 2070, 7, 6, 0, 0, 2070, 2072, 3, 326, 163, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2074, 1, 0, 0, 0, 2073, 2075, 3, 80, 40, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2410, 1, 0, 0, 0, 2076, 2078, 5, 413, 0, 0, 2077, 2079, 5, 190, 0, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2083, 5, 490, 0, 0, 2081, 2082, 7, 6, 0, 0, 2082, 2084, 3, 326, 163, 0, 2083, 2081, 1, 0, 0, 0, 2083, 2084, 1, 0, 0, 0, 2084, 2086, 1, 0, 0, 0, 2085, 2087, 3, 80, 40, 0, 2086, 2085, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2410, 1, 0, 0, 0, 2088, 2089, 5, 413, 0, 0, 2089, 2090, 5, 99, 0, 0, 2090, 2091, 5, 280, 0, 0, 2091, 2092, 5, 489, 0, 0, 2092, 2410, 3, 326, 163, 0, 2093, 2094, 5, 413, 0, 0, 2094, 2096, 5, 99, 0, 0, 2095, 2097, 3, 170, 85, 0, 2096, 2095, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2099, 5, 191, 0, 0, 2099, 2100, 3, 392, 196, 0, 2100, 2102, 5, 2, 0, 0, 2101, 2103, 3, 128, 64, 0, 2102, 2101, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2107, 5, 3, 0, 0, 2105, 2106, 7, 6, 0, 0, 2106, 2108, 3, 326, 163, 0, 2107, 2105, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2410, 1, 0, 0, 0, 2109, 2110, 5, 413, 0, 0, 2110, 2113, 7, 15, 0, 0, 2111, 2112, 5, 187, 0, 0, 2112, 2114, 3, 448, 224, 0, 2113, 2111, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 1, 0, 0, 0, 2115, 2117, 3, 80, 40, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2410, 1, 0, 0, 0, 2118, 2120, 5, 413, 0, 0, 2119, 2121, 5, 190, 0, 0, 2120, 2119, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 7, 16, 0, 0, 2123, 2124, 7, 6, 0, 0, 2124, 2127, 3, 326, 163, 0, 2125, 2126, 7, 6, 0, 0, 2126, 2128, 3, 326, 163, 0, 2127, 2125, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2130, 1, 0, 0, 0, 2129, 2131, 3, 80, 40, 0, 2130, 2129, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2410, 1, 0, 0, 0, 2132, 2133, 5, 413, 0, 0, 2133, 2134, 5, 261, 0, 0, 2134, 2147, 5, 492, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2138, 3, 326, 163, 0, 2137, 2135, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2140, 1, 0, 0, 0, 2139, 2141, 3, 80, 40, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2143, 1, 0, 0, 0, 2142, 2144, 3, 296, 148, 0, 2143, 2142, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2148, 1, 0, 0, 0, 2145, 2146, 5, 309, 0, 0, 2146, 2148, 5, 529, 0, 0, 2147, 2137, 1, 0, 0, 0, 2147, 2145, 1, 0, 0, 0, 2148, 2410, 1, 0, 0, 0, 2149, 2151, 5, 413, 0, 0, 2150, 2152, 5, 430, 0, 0, 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2156, 5, 261, 0, 0, 2154, 2155, 7, 6, 0, 0, 2155, 2157, 3, 326, 163, 0, 2156, 2154, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2159, 1, 0, 0, 0, 2158, 2160, 3, 80, 40, 0, 2159, 2158, 1, 0, 0, 0, 2159, 2160, 1, 0, 0, 0, 2160, 2162, 1, 0, 0, 0, 2161, 2163, 3, 292, 146, 0, 2162, 2161, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2165, 1, 0, 0, 0, 2164, 2166, 3, 296, 148, 0, 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2410, 1, 0, 0, 0, 2167, 2168, 5, 413, 0, 0, 2168, 2171, 5, 167, 0, 0, 2169, 2170, 7, 6, 0, 0, 2170, 2172, 3, 326, 163, 0, 2171, 2169, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 1, 0, 0, 0, 2173, 2175, 3, 80, 40, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2177, 1, 0, 0, 0, 2176, 2178, 3, 292, 146, 0, 2177, 2176, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2180, 1, 0, 0, 0, 2179, 2181, 3, 296, 148, 0, 2180, 2179, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2410, 1, 0, 0, 0, 2182, 2183, 5, 413, 0, 0, 2183, 2184, 5, 21, 0, 0, 2184, 2189, 5, 439, 0, 0, 2185, 2190, 5, 393, 0, 0, 2186, 2187, 5, 280, 0, 0, 2187, 2190, 5, 489, 0, 0, 2188, 2190, 5, 79, 0, 0, 2189, 2185, 1, 0, 0, 0, 2189, 2186, 1, 0, 0, 0, 2189, 2188, 1, 0, 0, 0, 2190, 2193, 1, 0, 0, 0, 2191, 2192, 7, 6, 0, 0, 2192, 2194, 3, 326, 163, 0, 2193, 2191, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2196, 1, 0, 0, 0, 2195, 2197, 3, 80, 40, 0, 2196, 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2199, 1, 0, 0, 0, 2198, 2200, 3, 292, 146, 0, 2199, 2198, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2202, 1, 0, 0, 0, 2201, 2203, 3, 296, 148, 0, 2202, 2201, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2410, 1, 0, 0, 0, 2204, 2206, 5, 413, 0, 0, 2205, 2207, 5, 446, 0, 0, 2206, 2205, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 5, 322, 0, 0, 2209, 2210, 5, 187, 0, 0, 2210, 2212, 3, 326, 163, 0, 2211, 2213, 3, 80, 40, 0, 2212, 2211, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 1, 0, 0, 0, 2214, 2216, 3, 292, 146, 0, 2215, 2214, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2218, 1, 0, 0, 0, 2217, 2219, 3, 296, 148, 0, 2218, 2217, 1, 0, 0, 0, 2218, 2219, 1, 0, 0, 0, 2219, 2410, 1, 0, 0, 0, 2220, 2221, 5, 413, 0, 0, 2221, 2222, 5, 442, 0, 0, 2222, 2410, 5, 534, 0, 0, 2223, 2224, 5, 413, 0, 0, 2224, 2225, 5, 443, 0, 0, 2225, 2226, 5, 187, 0, 0, 2226, 2228, 3, 326, 163, 0, 2227, 2229, 3, 160, 80, 0, 2228, 2227, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2231, 1, 0, 0, 0, 2230, 2232, 3, 80, 40, 0, 2231, 2230, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2235, 3, 292, 146, 0, 2234, 2233, 1, 0, 0, 0, 2234, 2235, 1, 0, 0, 0, 2235, 2237, 1, 0, 0, 0, 2236, 2238, 3, 296, 148, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2410, 1, 0, 0, 0, 2239, 2240, 5, 413, 0, 0, 2240, 2243, 5, 37, 0, 0, 2241, 2242, 7, 6, 0, 0, 2242, 2244, 3, 326, 163, 0, 2243, 2241, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2246, 1, 0, 0, 0, 2245, 2247, 3, 80, 40, 0, 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2410, 1, 0, 0, 0, 2248, 2250, 5, 413, 0, 0, 2249, 2251, 5, 53, 0, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2255, 5, 382, 0, 0, 2253, 2254, 7, 6, 0, 0, 2254, 2256, 3, 326, 163, 0, 2255, 2253, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2258, 1, 0, 0, 0, 2257, 2259, 3, 80, 40, 0, 2258, 2257, 1, 0, 0, 0, 2258, 2259, 1, 0, 0, 0, 2259, 2410, 1, 0, 0, 0, 2260, 2261, 5, 413, 0, 0, 2261, 2263, 5, 381, 0, 0, 2262, 2264, 3, 80, 40, 0, 2263, 2262, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2266, 1, 0, 0, 0, 2265, 2267, 3, 292, 146, 0, 2266, 2265, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2269, 1, 0, 0, 0, 2268, 2270, 3, 296, 148, 0, 2269, 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2410, 1, 0, 0, 0, 2271, 2272, 5, 413, 0, 0, 2272, 2273, 5, 499, 0, 0, 2273, 2275, 5, 201, 0, 0, 2274, 2276, 3, 80, 40, 0, 2275, 2274, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2410, 1, 0, 0, 0, 2277, 2278, 5, 413, 0, 0, 2278, 2279, 5, 417, 0, 0, 2279, 2280, 5, 309, 0, 0, 2280, 2282, 3, 448, 224, 0, 2281, 2283, 3, 80, 40, 0, 2282, 2281, 1, 0, 0, 0, 2282, 2283, 1, 0, 0, 0, 2283, 2410, 1, 0, 0, 0, 2284, 2286, 5, 413, 0, 0, 2285, 2287, 5, 190, 0, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2289, 1, 0, 0, 0, 2288, 2290, 5, 57, 0, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2291, 1, 0, 0, 0, 2291, 2294, 5, 192, 0, 0, 2292, 2293, 7, 6, 0, 0, 2293, 2295, 3, 326, 163, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2297, 1, 0, 0, 0, 2296, 2298, 3, 80, 40, 0, 2297, 2296, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2410, 1, 0, 0, 0, 2299, 2300, 5, 413, 0, 0, 2300, 2302, 5, 195, 0, 0, 2301, 2303, 5, 190, 0, 0, 2302, 2301, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 5, 192, 0, 0, 2305, 2307, 3, 80, 40, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2410, 1, 0, 0, 0, 2308, 2309, 5, 413, 0, 0, 2309, 2312, 5, 463, 0, 0, 2310, 2311, 7, 6, 0, 0, 2311, 2313, 3, 326, 163, 0, 2312, 2310, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2410, 1, 0, 0, 0, 2314, 2315, 5, 413, 0, 0, 2315, 2316, 7, 17, 0, 0, 2316, 2317, 7, 6, 0, 0, 2317, 2320, 3, 326, 163, 0, 2318, 2319, 7, 6, 0, 0, 2319, 2321, 3, 326, 163, 0, 2320, 2318, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2410, 1, 0, 0, 0, 2322, 2323, 5, 413, 0, 0, 2323, 2326, 5, 455, 0, 0, 2324, 2325, 7, 6, 0, 0, 2325, 2327, 3, 326, 163, 0, 2326, 2324, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2329, 1, 0, 0, 0, 2328, 2330, 3, 80, 40, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2410, 1, 0, 0, 0, 2331, 2332, 5, 413, 0, 0, 2332, 2333, 5, 60, 0, 0, 2333, 2334, 5, 210, 0, 0, 2334, 2410, 5, 529, 0, 0, 2335, 2336, 5, 413, 0, 0, 2336, 2337, 5, 66, 0, 0, 2337, 2338, 5, 366, 0, 0, 2338, 2340, 5, 42, 0, 0, 2339, 2341, 3, 80, 40, 0, 2340, 2339, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2410, 1, 0, 0, 0, 2342, 2343, 5, 413, 0, 0, 2343, 2344, 5, 354, 0, 0, 2344, 2355, 5, 426, 0, 0, 2345, 2346, 5, 182, 0, 0, 2346, 2356, 3, 448, 224, 0, 2347, 2348, 5, 187, 0, 0, 2348, 2353, 3, 326, 163, 0, 2349, 2351, 5, 20, 0, 0, 2350, 2352, 5, 487, 0, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2354, 1, 0, 0, 0, 2353, 2349, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2345, 1, 0, 0, 0, 2355, 2347, 1, 0, 0, 0, 2355, 2356, 1, 0, 0, 0, 2356, 2410, 1, 0, 0, 0, 2357, 2358, 5, 413, 0, 0, 2358, 2359, 5, 56, 0, 0, 2359, 2362, 5, 219, 0, 0, 2360, 2361, 7, 6, 0, 0, 2361, 2363, 3, 326, 163, 0, 2362, 2360, 1, 0, 0, 0, 2362, 2363, 1, 0, 0, 0, 2363, 2365, 1, 0, 0, 0, 2364, 2366, 3, 80, 40, 0, 2365, 2364, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2368, 1, 0, 0, 0, 2367, 2369, 3, 292, 146, 0, 2368, 2367, 1, 0, 0, 0, 2368, 2369, 1, 0, 0, 0, 2369, 2371, 1, 0, 0, 0, 2370, 2372, 3, 296, 148, 0, 2371, 2370, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2410, 1, 0, 0, 0, 2373, 2377, 5, 413, 0, 0, 2374, 2378, 5, 74, 0, 0, 2375, 2376, 5, 87, 0, 0, 2376, 2378, 5, 201, 0, 0, 2377, 2374, 1, 0, 0, 0, 2377, 2375, 1, 0, 0, 0, 2378, 2410, 1, 0, 0, 0, 2379, 2380, 5, 413, 0, 0, 2380, 2381, 5, 377, 0, 0, 2381, 2382, 5, 427, 0, 0, 2382, 2383, 5, 187, 0, 0, 2383, 2385, 3, 78, 39, 0, 2384, 2386, 3, 80, 40, 0, 2385, 2384, 1, 0, 0, 0, 2385, 2386, 1, 0, 0, 0, 2386, 2410, 1, 0, 0, 0, 2387, 2388, 5, 413, 0, 0, 2388, 2391, 5, 97, 0, 0, 2389, 2390, 7, 6, 0, 0, 2390, 2392, 3, 326, 163, 0, 2391, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2395, 3, 248, 124, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2397, 1, 0, 0, 0, 2396, 2398, 3, 292, 146, 0, 2397, 2396, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2400, 1, 0, 0, 0, 2399, 2401, 3, 296, 148, 0, 2400, 2399, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2410, 1, 0, 0, 0, 2402, 2403, 5, 413, 0, 0, 2403, 2404, 5, 491, 0, 0, 2404, 2405, 5, 473, 0, 0, 2405, 2407, 5, 239, 0, 0, 2406, 2408, 3, 80, 40, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 1, 0, 0, 0, 2409, 2052, 1, 0, 0, 0, 2409, 2063, 1, 0, 0, 0, 2409, 2066, 1, 0, 0, 0, 2409, 2076, 1, 0, 0, 0, 2409, 2088, 1, 0, 0, 0, 2409, 2093, 1, 0, 0, 0, 2409, 2109, 1, 0, 0, 0, 2409, 2118, 1, 0, 0, 0, 2409, 2132, 1, 0, 0, 0, 2409, 2149, 1, 0, 0, 0, 2409, 2167, 1, 0, 0, 0, 2409, 2182, 1, 0, 0, 0, 2409, 2204, 1, 0, 0, 0, 2409, 2220, 1, 0, 0, 0, 2409, 2223, 1, 0, 0, 0, 2409, 2239, 1, 0, 0, 0, 2409, 2248, 1, 0, 0, 0, 2409, 2260, 1, 0, 0, 0, 2409, 2271, 1, 0, 0, 0, 2409, 2277, 1, 0, 0, 0, 2409, 2284, 1, 0, 0, 0, 2409, 2299, 1, 0, 0, 0, 2409, 2308, 1, 0, 0, 0, 2409, 2314, 1, 0, 0, 0, 2409, 2322, 1, 0, 0, 0, 2409, 2331, 1, 0, 0, 0, 2409, 2335, 1, 0, 0, 0, 2409, 2342, 1, 0, 0, 0, 2409, 2357, 1, 0, 0, 0, 2409, 2373, 1, 0, 0, 0, 2409, 2379, 1, 0, 0, 0, 2409, 2387, 1, 0, 0, 0, 2409, 2402, 1, 0, 0, 0, 2410, 37, 1, 0, 0, 0, 2411, 2412, 5, 99, 0, 0, 2412, 2413, 5, 394, 0, 0, 2413, 2414, 5, 261, 0, 0, 2414, 2417, 3, 326, 163, 0, 2415, 2416, 5, 309, 0, 0, 2416, 2418, 3, 448, 224, 0, 2417, 2415, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2421, 1, 0, 0, 0, 2419, 2420, 5, 497, 0, 0, 2420, 2422, 7, 18, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2431, 1, 0, 0, 0, 2423, 2428, 3, 42, 21, 0, 2424, 2425, 5, 4, 0, 0, 2425, 2427, 3, 42, 21, 0, 2426, 2424, 1, 0, 0, 0, 2427, 2430, 1, 0, 0, 0, 2428, 2426, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2432, 1, 0, 0, 0, 2430, 2428, 1, 0, 0, 0, 2431, 2423, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2434, 1, 0, 0, 0, 2433, 2435, 3, 314, 157, 0, 2434, 2433, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2436, 1, 0, 0, 0, 2436, 2437, 5, 187, 0, 0, 2437, 2438, 3, 448, 224, 0, 2438, 2439, 5, 2, 0, 0, 2439, 2440, 3, 316, 158, 0, 2440, 2442, 5, 3, 0, 0, 2441, 2443, 3, 436, 218, 0, 2442, 2441, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 39, 1, 0, 0, 0, 2444, 2445, 5, 261, 0, 0, 2445, 2451, 3, 222, 111, 0, 2446, 2447, 5, 350, 0, 0, 2447, 2448, 5, 2, 0, 0, 2448, 2449, 3, 316, 158, 0, 2449, 2450, 5, 3, 0, 0, 2450, 2452, 1, 0, 0, 0, 2451, 2446, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2455, 3, 436, 218, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2544, 1, 0, 0, 0, 2456, 2457, 5, 99, 0, 0, 2457, 2458, 5, 437, 0, 0, 2458, 2459, 3, 326, 163, 0, 2459, 2460, 5, 2, 0, 0, 2460, 2461, 3, 56, 28, 0, 2461, 2462, 5, 3, 0, 0, 2462, 2463, 5, 187, 0, 0, 2463, 2464, 5, 44, 0, 0, 2464, 2465, 5, 2, 0, 0, 2465, 2466, 3, 316, 158, 0, 2466, 2468, 5, 3, 0, 0, 2467, 2469, 3, 314, 157, 0, 2468, 2467, 1, 0, 0, 0, 2468, 2469, 1, 0, 0, 0, 2469, 2544, 1, 0, 0, 0, 2470, 2471, 5, 428, 0, 0, 2471, 2472, 5, 437, 0, 0, 2472, 2473, 5, 239, 0, 0, 2473, 2544, 3, 326, 163, 0, 2474, 2475, 5, 384, 0, 0, 2475, 2476, 5, 437, 0, 0, 2476, 2477, 5, 239, 0, 0, 2477, 2544, 3, 326, 163, 0, 2478, 2479, 5, 329, 0, 0, 2479, 2480, 5, 437, 0, 0, 2480, 2481, 5, 239, 0, 0, 2481, 2544, 3, 326, 163, 0, 2482, 2483, 5, 329, 0, 0, 2483, 2484, 5, 394, 0, 0, 2484, 2485, 5, 261, 0, 0, 2485, 2486, 5, 182, 0, 0, 2486, 2544, 3, 326, 163, 0, 2487, 2488, 5, 329, 0, 0, 2488, 2489, 5, 20, 0, 0, 2489, 2490, 5, 394, 0, 0, 2490, 2544, 5, 261, 0, 0, 2491, 2492, 5, 384, 0, 0, 2492, 2493, 5, 394, 0, 0, 2493, 2494, 5, 261, 0, 0, 2494, 2495, 5, 182, 0, 0, 2495, 2544, 3, 326, 163, 0, 2496, 2497, 5, 384, 0, 0, 2497, 2498, 5, 20, 0, 0, 2498, 2499, 5, 394, 0, 0, 2499, 2544, 5, 261, 0, 0, 2500, 2501, 5, 428, 0, 0, 2501, 2502, 5, 394, 0, 0, 2502, 2503, 5, 261, 0, 0, 2503, 2504, 5, 182, 0, 0, 2504, 2544, 3, 326, 163, 0, 2505, 2507, 5, 413, 0, 0, 2506, 2508, 5, 20, 0, 0, 2507, 2506, 1, 0, 0, 0, 2507, 2508, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 5, 394, 0, 0, 2510, 2516, 5, 261, 0, 0, 2511, 2512, 5, 182, 0, 0, 2512, 2517, 3, 326, 163, 0, 2513, 2515, 3, 80, 40, 0, 2514, 2513, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2511, 1, 0, 0, 0, 2516, 2514, 1, 0, 0, 0, 2517, 2544, 1, 0, 0, 0, 2518, 2519, 5, 413, 0, 0, 2519, 2520, 5, 394, 0, 0, 2520, 2521, 5, 261, 0, 0, 2521, 2524, 5, 444, 0, 0, 2522, 2523, 7, 6, 0, 0, 2523, 2525, 3, 448, 224, 0, 2524, 2522, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2527, 1, 0, 0, 0, 2526, 2528, 3, 80, 40, 0, 2527, 2526, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2544, 1, 0, 0, 0, 2529, 2531, 5, 413, 0, 0, 2530, 2532, 5, 20, 0, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 99, 0, 0, 2534, 2535, 5, 394, 0, 0, 2535, 2536, 5, 261, 0, 0, 2536, 2537, 5, 182, 0, 0, 2537, 2544, 3, 326, 163, 0, 2538, 2539, 5, 413, 0, 0, 2539, 2540, 5, 99, 0, 0, 2540, 2541, 5, 261, 0, 0, 2541, 2542, 5, 182, 0, 0, 2542, 2544, 3, 326, 163, 0, 2543, 2444, 1, 0, 0, 0, 2543, 2456, 1, 0, 0, 0, 2543, 2470, 1, 0, 0, 0, 2543, 2474, 1, 0, 0, 0, 2543, 2478, 1, 0, 0, 0, 2543, 2482, 1, 0, 0, 0, 2543, 2487, 1, 0, 0, 0, 2543, 2491, 1, 0, 0, 0, 2543, 2496, 1, 0, 0, 0, 2543, 2500, 1, 0, 0, 0, 2543, 2505, 1, 0, 0, 0, 2543, 2518, 1, 0, 0, 0, 2543, 2529, 1, 0, 0, 0, 2543, 2538, 1, 0, 0, 0, 2544, 41, 1, 0, 0, 0, 2545, 2546, 5, 80, 0, 0, 2546, 2547, 5, 447, 0, 0, 2547, 2548, 5, 59, 0, 0, 2548, 2556, 5, 529, 0, 0, 2549, 2556, 3, 52, 26, 0, 2550, 2556, 3, 50, 25, 0, 2551, 2556, 3, 48, 24, 0, 2552, 2556, 3, 46, 23, 0, 2553, 2556, 3, 44, 22, 0, 2554, 2556, 3, 160, 80, 0, 2555, 2545, 1, 0, 0, 0, 2555, 2549, 1, 0, 0, 0, 2555, 2550, 1, 0, 0, 0, 2555, 2551, 1, 0, 0, 0, 2555, 2552, 1, 0, 0, 0, 2555, 2553, 1, 0, 0, 0, 2555, 2554, 1, 0, 0, 0, 2556, 43, 1, 0, 0, 0, 2557, 2558, 5, 314, 0, 0, 2558, 2559, 5, 59, 0, 0, 2559, 2560, 3, 448, 224, 0, 2560, 45, 1, 0, 0, 0, 2561, 2562, 5, 126, 0, 0, 2562, 2563, 5, 309, 0, 0, 2563, 2564, 3, 374, 187, 0, 2564, 47, 1, 0, 0, 0, 2565, 2566, 5, 495, 0, 0, 2566, 2567, 3, 374, 187, 0, 2567, 49, 1, 0, 0, 0, 2568, 2569, 5, 343, 0, 0, 2569, 2570, 5, 177, 0, 0, 2570, 2571, 3, 374, 187, 0, 2571, 51, 1, 0, 0, 0, 2572, 2573, 5, 80, 0, 0, 2573, 2574, 5, 2, 0, 0, 2574, 2579, 3, 54, 27, 0, 2575, 2576, 5, 4, 0, 0, 2576, 2578, 3, 54, 27, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2581, 1, 0, 0, 0, 2579, 2577, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 2582, 1, 0, 0, 0, 2581, 2579, 1, 0, 0, 0, 2582, 2583, 5, 3, 0, 0, 2583, 53, 1, 0, 0, 0, 2584, 2587, 3, 448, 224, 0, 2585, 2586, 5, 503, 0, 0, 2586, 2588, 3, 374, 187, 0, 2587, 2585, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, 0, 2588, 2598, 1, 0, 0, 0, 2589, 2590, 5, 2, 0, 0, 2590, 2593, 3, 448, 224, 0, 2591, 2592, 5, 503, 0, 0, 2592, 2594, 3, 374, 187, 0, 2593, 2591, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2596, 5, 3, 0, 0, 2596, 2598, 1, 0, 0, 0, 2597, 2584, 1, 0, 0, 0, 2597, 2589, 1, 0, 0, 0, 2598, 55, 1, 0, 0, 0, 2599, 2604, 3, 58, 29, 0, 2600, 2601, 5, 4, 0, 0, 2601, 2603, 3, 58, 29, 0, 2602, 2600, 1, 0, 0, 0, 2603, 2606, 1, 0, 0, 0, 2604, 2602, 1, 0, 0, 0, 2604, 2605, 1, 0, 0, 0, 2605, 57, 1, 0, 0, 0, 2606, 2604, 1, 0, 0, 0, 2607, 2608, 5, 187, 0, 0, 2608, 2609, 3, 326, 163, 0, 2609, 2610, 5, 230, 0, 0, 2610, 2612, 3, 326, 163, 0, 2611, 2613, 3, 160, 80, 0, 2612, 2611, 1, 0, 0, 0, 2612, 2613, 1, 0, 0, 0, 2613, 2615, 1, 0, 0, 0, 2614, 2616, 3, 304, 152, 0, 2615, 2614, 1, 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 59, 1, 0, 0, 0, 2617, 2618, 5, 367, 0, 0, 2618, 2619, 5, 66, 0, 0, 2619, 2621, 3, 448, 224, 0, 2620, 2622, 3, 314, 157, 0, 2621, 2620, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2633, 1, 0, 0, 0, 2623, 2624, 5, 367, 0, 0, 2624, 2625, 5, 111, 0, 0, 2625, 2627, 3, 326, 163, 0, 2626, 2628, 3, 314, 157, 0, 2627, 2626, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2633, 1, 0, 0, 0, 2629, 2630, 5, 367, 0, 0, 2630, 2631, 5, 439, 0, 0, 2631, 2633, 3, 326, 163, 0, 2632, 2617, 1, 0, 0, 0, 2632, 2623, 1, 0, 0, 0, 2632, 2629, 1, 0, 0, 0, 2633, 61, 1, 0, 0, 0, 2634, 2635, 5, 72, 0, 0, 2635, 2636, 5, 20, 0, 0, 2636, 2645, 5, 349, 0, 0, 2637, 2638, 5, 72, 0, 0, 2638, 2640, 5, 247, 0, 0, 2639, 2641, 3, 448, 224, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2643, 7, 6, 0, 0, 2643, 2645, 3, 448, 224, 0, 2644, 2634, 1, 0, 0, 0, 2644, 2637, 1, 0, 0, 0, 2645, 63, 1, 0, 0, 0, 2646, 2647, 5, 367, 0, 0, 2647, 2651, 5, 251, 0, 0, 2648, 2652, 5, 20, 0, 0, 2649, 2650, 5, 182, 0, 0, 2650, 2652, 3, 182, 91, 0, 2651, 2648, 1, 0, 0, 0, 2651, 2649, 1, 0, 0, 0, 2652, 65, 1, 0, 0, 0, 2653, 2654, 5, 72, 0, 0, 2654, 2655, 5, 354, 0, 0, 2655, 2660, 5, 426, 0, 0, 2656, 2657, 5, 182, 0, 0, 2657, 2661, 3, 448, 224, 0, 2658, 2659, 7, 6, 0, 0, 2659, 2661, 3, 326, 163, 0, 2660, 2656, 1, 0, 0, 0, 2660, 2658, 1, 0, 0, 0, 2661, 2667, 1, 0, 0, 0, 2662, 2663, 5, 72, 0, 0, 2663, 2664, 5, 20, 0, 0, 2664, 2665, 5, 354, 0, 0, 2665, 2667, 5, 426, 0, 0, 2666, 2653, 1, 0, 0, 0, 2666, 2662, 1, 0, 0, 0, 2667, 67, 1, 0, 0, 0, 2668, 2669, 5, 63, 0, 0, 2669, 2672, 5, 261, 0, 0, 2670, 2671, 7, 6, 0, 0, 2671, 2673, 3, 448, 224, 0, 2672, 2670, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2675, 1, 0, 0, 0, 2674, 2676, 3, 80, 40, 0, 2675, 2674, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2694, 1, 0, 0, 0, 2677, 2678, 5, 63, 0, 0, 2678, 2681, 5, 167, 0, 0, 2679, 2680, 7, 6, 0, 0, 2680, 2682, 3, 448, 224, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2684, 1, 0, 0, 0, 2683, 2685, 3, 80, 40, 0, 2684, 2683, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2694, 1, 0, 0, 0, 2686, 2687, 5, 63, 0, 0, 2687, 2688, 5, 491, 0, 0, 2688, 2689, 5, 473, 0, 0, 2689, 2691, 5, 239, 0, 0, 2690, 2692, 3, 80, 40, 0, 2691, 2690, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2668, 1, 0, 0, 0, 2693, 2677, 1, 0, 0, 0, 2693, 2686, 1, 0, 0, 0, 2694, 69, 1, 0, 0, 0, 2695, 2696, 5, 63, 0, 0, 2696, 2697, 5, 21, 0, 0, 2697, 2702, 5, 439, 0, 0, 2698, 2703, 5, 393, 0, 0, 2699, 2700, 5, 280, 0, 0, 2700, 2703, 5, 489, 0, 0, 2701, 2703, 5, 79, 0, 0, 2702, 2698, 1, 0, 0, 0, 2702, 2699, 1, 0, 0, 0, 2702, 2701, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2705, 5, 187, 0, 0, 2705, 2716, 3, 326, 163, 0, 2706, 2707, 5, 2, 0, 0, 2707, 2712, 5, 534, 0, 0, 2708, 2709, 5, 4, 0, 0, 2709, 2711, 5, 534, 0, 0, 2710, 2708, 1, 0, 0, 0, 2711, 2714, 1, 0, 0, 0, 2712, 2710, 1, 0, 0, 0, 2712, 2713, 1, 0, 0, 0, 2713, 2715, 1, 0, 0, 0, 2714, 2712, 1, 0, 0, 0, 2715, 2717, 5, 3, 0, 0, 2716, 2706, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2759, 1, 0, 0, 0, 2718, 2719, 5, 63, 0, 0, 2719, 2720, 5, 56, 0, 0, 2720, 2721, 5, 219, 0, 0, 2721, 2722, 5, 309, 0, 0, 2722, 2733, 3, 326, 163, 0, 2723, 2724, 5, 2, 0, 0, 2724, 2729, 5, 534, 0, 0, 2725, 2726, 5, 4, 0, 0, 2726, 2728, 5, 534, 0, 0, 2727, 2725, 1, 0, 0, 0, 2728, 2731, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2732, 1, 0, 0, 0, 2731, 2729, 1, 0, 0, 0, 2732, 2734, 5, 3, 0, 0, 2733, 2723, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2759, 1, 0, 0, 0, 2735, 2736, 5, 63, 0, 0, 2736, 2737, 5, 123, 0, 0, 2737, 2738, 5, 35, 0, 0, 2738, 2743, 5, 529, 0, 0, 2739, 2740, 5, 4, 0, 0, 2740, 2742, 5, 529, 0, 0, 2741, 2739, 1, 0, 0, 0, 2742, 2745, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2759, 1, 0, 0, 0, 2745, 2743, 1, 0, 0, 0, 2746, 2747, 5, 63, 0, 0, 2747, 2750, 5, 37, 0, 0, 2748, 2749, 7, 6, 0, 0, 2749, 2751, 3, 448, 224, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 2759, 1, 0, 0, 0, 2752, 2753, 5, 63, 0, 0, 2753, 2756, 5, 382, 0, 0, 2754, 2755, 7, 6, 0, 0, 2755, 2757, 3, 448, 224, 0, 2756, 2754, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2759, 1, 0, 0, 0, 2758, 2695, 1, 0, 0, 0, 2758, 2718, 1, 0, 0, 0, 2758, 2735, 1, 0, 0, 0, 2758, 2746, 1, 0, 0, 0, 2758, 2752, 1, 0, 0, 0, 2759, 71, 1, 0, 0, 0, 2760, 2761, 5, 15, 0, 0, 2761, 2762, 5, 413, 0, 0, 2762, 2763, 5, 377, 0, 0, 2763, 2764, 5, 137, 0, 0, 2764, 2765, 5, 187, 0, 0, 2765, 2865, 3, 78, 39, 0, 2766, 2767, 5, 15, 0, 0, 2767, 2768, 5, 363, 0, 0, 2768, 2780, 5, 132, 0, 0, 2769, 2770, 5, 309, 0, 0, 2770, 2771, 5, 2, 0, 0, 2771, 2776, 5, 529, 0, 0, 2772, 2773, 5, 4, 0, 0, 2773, 2775, 5, 529, 0, 0, 2774, 2772, 1, 0, 0, 0, 2775, 2778, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2779, 1, 0, 0, 0, 2778, 2776, 1, 0, 0, 0, 2779, 2781, 5, 3, 0, 0, 2780, 2769, 1, 0, 0, 0, 2780, 2781, 1, 0, 0, 0, 2781, 2865, 1, 0, 0, 0, 2782, 2783, 5, 15, 0, 0, 2783, 2784, 5, 63, 0, 0, 2784, 2785, 5, 363, 0, 0, 2785, 2797, 5, 132, 0, 0, 2786, 2787, 5, 309, 0, 0, 2787, 2788, 5, 2, 0, 0, 2788, 2793, 5, 529, 0, 0, 2789, 2790, 5, 4, 0, 0, 2790, 2792, 5, 529, 0, 0, 2791, 2789, 1, 0, 0, 0, 2792, 2795, 1, 0, 0, 0, 2793, 2791, 1, 0, 0, 0, 2793, 2794, 1, 0, 0, 0, 2794, 2796, 1, 0, 0, 0, 2795, 2793, 1, 0, 0, 0, 2796, 2798, 5, 3, 0, 0, 2797, 2786, 1, 0, 0, 0, 2797, 2798, 1, 0, 0, 0, 2798, 2865, 1, 0, 0, 0, 2799, 2800, 5, 15, 0, 0, 2800, 2801, 5, 130, 0, 0, 2801, 2802, 5, 442, 0, 0, 2802, 2865, 5, 534, 0, 0, 2803, 2804, 5, 15, 0, 0, 2804, 2805, 5, 413, 0, 0, 2805, 2806, 5, 377, 0, 0, 2806, 2807, 5, 427, 0, 0, 2807, 2808, 5, 187, 0, 0, 2808, 2814, 3, 78, 39, 0, 2809, 2810, 5, 495, 0, 0, 2810, 2811, 5, 427, 0, 0, 2811, 2815, 5, 503, 0, 0, 2812, 2813, 5, 505, 0, 0, 2813, 2815, 5, 529, 0, 0, 2814, 2809, 1, 0, 0, 0, 2814, 2812, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2865, 1, 0, 0, 0, 2816, 2817, 5, 15, 0, 0, 2817, 2818, 5, 84, 0, 0, 2818, 2819, 5, 439, 0, 0, 2819, 2824, 3, 78, 39, 0, 2820, 2821, 5, 495, 0, 0, 2821, 2822, 5, 462, 0, 0, 2822, 2823, 5, 503, 0, 0, 2823, 2825, 5, 529, 0, 0, 2824, 2820, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2865, 1, 0, 0, 0, 2826, 2827, 5, 15, 0, 0, 2827, 2828, 5, 71, 0, 0, 2828, 2830, 3, 362, 181, 0, 2829, 2831, 3, 314, 157, 0, 2830, 2829, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2865, 1, 0, 0, 0, 2832, 2833, 5, 15, 0, 0, 2833, 2834, 5, 413, 0, 0, 2834, 2835, 5, 442, 0, 0, 2835, 2836, 5, 429, 0, 0, 2836, 2838, 5, 185, 0, 0, 2837, 2839, 5, 487, 0, 0, 2838, 2837, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2865, 1, 0, 0, 0, 2840, 2841, 5, 15, 0, 0, 2841, 2842, 5, 72, 0, 0, 2842, 2854, 5, 456, 0, 0, 2843, 2844, 5, 309, 0, 0, 2844, 2845, 5, 2, 0, 0, 2845, 2850, 5, 529, 0, 0, 2846, 2847, 5, 4, 0, 0, 2847, 2849, 5, 529, 0, 0, 2848, 2846, 1, 0, 0, 0, 2849, 2852, 1, 0, 0, 0, 2850, 2848, 1, 0, 0, 0, 2850, 2851, 1, 0, 0, 0, 2851, 2853, 1, 0, 0, 0, 2852, 2850, 1, 0, 0, 0, 2853, 2855, 5, 3, 0, 0, 2854, 2843, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 2865, 1, 0, 0, 0, 2856, 2857, 5, 15, 0, 0, 2857, 2858, 5, 409, 0, 0, 2858, 2859, 5, 439, 0, 0, 2859, 2860, 3, 326, 163, 0, 2860, 2862, 5, 427, 0, 0, 2861, 2863, 3, 314, 157, 0, 2862, 2861, 1, 0, 0, 0, 2862, 2863, 1, 0, 0, 0, 2863, 2865, 1, 0, 0, 0, 2864, 2760, 1, 0, 0, 0, 2864, 2766, 1, 0, 0, 0, 2864, 2782, 1, 0, 0, 0, 2864, 2799, 1, 0, 0, 0, 2864, 2803, 1, 0, 0, 0, 2864, 2816, 1, 0, 0, 0, 2864, 2826, 1, 0, 0, 0, 2864, 2832, 1, 0, 0, 0, 2864, 2840, 1, 0, 0, 0, 2864, 2856, 1, 0, 0, 0, 2865, 73, 1, 0, 0, 0, 2866, 2867, 5, 365, 0, 0, 2867, 2868, 5, 111, 0, 0, 2868, 2870, 3, 448, 224, 0, 2869, 2871, 5, 534, 0, 0, 2870, 2869, 1, 0, 0, 0, 2870, 2871, 1, 0, 0, 0, 2871, 2874, 1, 0, 0, 0, 2872, 2873, 5, 28, 0, 0, 2873, 2875, 3, 448, 224, 0, 2874, 2872, 1, 0, 0, 0, 2874, 2875, 1, 0, 0, 0, 2875, 2900, 1, 0, 0, 0, 2876, 2877, 5, 365, 0, 0, 2877, 2878, 5, 439, 0, 0, 2878, 2880, 3, 326, 163, 0, 2879, 2881, 5, 534, 0, 0, 2880, 2879, 1, 0, 0, 0, 2880, 2881, 1, 0, 0, 0, 2881, 2884, 1, 0, 0, 0, 2882, 2883, 5, 28, 0, 0, 2883, 2885, 3, 448, 224, 0, 2884, 2882, 1, 0, 0, 0, 2884, 2885, 1, 0, 0, 0, 2885, 2900, 1, 0, 0, 0, 2886, 2887, 5, 365, 0, 0, 2887, 2888, 5, 321, 0, 0, 2888, 2890, 3, 448, 224, 0, 2889, 2891, 5, 534, 0, 0, 2890, 2889, 1, 0, 0, 0, 2890, 2891, 1, 0, 0, 0, 2891, 2894, 1, 0, 0, 0, 2892, 2893, 5, 28, 0, 0, 2893, 2895, 3, 448, 224, 0, 2894, 2892, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 5, 187, 0, 0, 2897, 2898, 3, 326, 163, 0, 2898, 2900, 1, 0, 0, 0, 2899, 2866, 1, 0, 0, 0, 2899, 2876, 1, 0, 0, 0, 2899, 2886, 1, 0, 0, 0, 2900, 75, 1, 0, 0, 0, 2901, 2902, 5, 15, 0, 0, 2902, 2903, 5, 409, 0, 0, 2903, 2904, 5, 377, 0, 0, 2904, 2905, 5, 427, 0, 0, 2905, 2906, 5, 350, 0, 0, 2906, 2907, 5, 2, 0, 0, 2907, 2908, 3, 316, 158, 0, 2908, 2909, 5, 3, 0, 0, 2909, 2962, 1, 0, 0, 0, 2910, 2911, 5, 15, 0, 0, 2911, 2912, 5, 409, 0, 0, 2912, 2913, 5, 377, 0, 0, 2913, 2914, 5, 488, 0, 0, 2914, 2915, 5, 350, 0, 0, 2915, 2916, 5, 2, 0, 0, 2916, 2917, 3, 316, 158, 0, 2917, 2918, 5, 3, 0, 0, 2918, 2962, 1, 0, 0, 0, 2919, 2920, 5, 15, 0, 0, 2920, 2921, 5, 372, 0, 0, 2921, 2922, 5, 439, 0, 0, 2922, 2962, 3, 78, 39, 0, 2923, 2924, 5, 15, 0, 0, 2924, 2925, 5, 63, 0, 0, 2925, 2926, 5, 372, 0, 0, 2926, 2927, 5, 439, 0, 0, 2927, 2962, 3, 78, 39, 0, 2928, 2929, 5, 15, 0, 0, 2929, 2933, 5, 409, 0, 0, 2930, 2934, 5, 188, 0, 0, 2931, 2932, 5, 20, 0, 0, 2932, 2934, 5, 189, 0, 0, 2933, 2930, 1, 0, 0, 0, 2933, 2931, 1, 0, 0, 0, 2934, 2935, 1, 0, 0, 0, 2935, 2940, 5, 89, 0, 0, 2936, 2937, 5, 2, 0, 0, 2937, 2938, 3, 316, 158, 0, 2938, 2939, 5, 3, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2936, 1, 0, 0, 0, 2940, 2941, 1, 0, 0, 0, 2941, 2943, 1, 0, 0, 0, 2942, 2944, 5, 20, 0, 0, 2943, 2942, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2962, 1, 0, 0, 0, 2945, 2946, 5, 15, 0, 0, 2946, 2947, 5, 409, 0, 0, 2947, 2948, 5, 439, 0, 0, 2948, 2949, 3, 326, 163, 0, 2949, 2950, 5, 321, 0, 0, 2950, 2952, 5, 488, 0, 0, 2951, 2953, 3, 314, 157, 0, 2952, 2951, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2962, 1, 0, 0, 0, 2954, 2955, 5, 15, 0, 0, 2955, 2956, 5, 97, 0, 0, 2956, 2957, 5, 442, 0, 0, 2957, 2959, 5, 534, 0, 0, 2958, 2960, 3, 314, 157, 0, 2959, 2958, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, 2962, 1, 0, 0, 0, 2961, 2901, 1, 0, 0, 0, 2961, 2910, 1, 0, 0, 0, 2961, 2919, 1, 0, 0, 0, 2961, 2923, 1, 0, 0, 0, 2961, 2928, 1, 0, 0, 0, 2961, 2945, 1, 0, 0, 0, 2961, 2954, 1, 0, 0, 0, 2962, 77, 1, 0, 0, 0, 2963, 2965, 3, 326, 163, 0, 2964, 2966, 3, 308, 154, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2968, 1, 0, 0, 0, 2967, 2969, 3, 442, 221, 0, 2968, 2967, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2971, 1, 0, 0, 0, 2970, 2972, 3, 406, 203, 0, 2971, 2970, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 2974, 1, 0, 0, 0, 2973, 2975, 3, 362, 181, 0, 2974, 2973, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 2976, 1, 0, 0, 0, 2976, 2978, 3, 324, 162, 0, 2977, 2979, 3, 438, 219, 0, 2978, 2977, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 2981, 1, 0, 0, 0, 2980, 2982, 3, 266, 133, 0, 2981, 2980, 1, 0, 0, 0, 2981, 2982, 1, 0, 0, 0, 2982, 79, 1, 0, 0, 0, 2983, 2984, 5, 256, 0, 0, 2984, 2988, 5, 529, 0, 0, 2985, 2986, 5, 495, 0, 0, 2986, 2988, 3, 370, 185, 0, 2987, 2983, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 81, 1, 0, 0, 0, 2989, 2995, 5, 38, 0, 0, 2990, 2991, 5, 497, 0, 0, 2991, 2993, 5, 247, 0, 0, 2992, 2994, 3, 448, 224, 0, 2993, 2992, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2996, 1, 0, 0, 0, 2995, 2990, 1, 0, 0, 0, 2995, 2996, 1, 0, 0, 0, 2996, 3032, 1, 0, 0, 0, 2997, 2999, 5, 82, 0, 0, 2998, 3000, 5, 498, 0, 0, 2999, 2998, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3006, 1, 0, 0, 0, 3001, 3003, 5, 24, 0, 0, 3002, 3004, 5, 300, 0, 0, 3003, 3002, 1, 0, 0, 0, 3003, 3004, 1, 0, 0, 0, 3004, 3005, 1, 0, 0, 0, 3005, 3007, 5, 68, 0, 0, 3006, 3001, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3012, 1, 0, 0, 0, 3008, 3010, 5, 300, 0, 0, 3009, 3008, 1, 0, 0, 0, 3009, 3010, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3013, 5, 370, 0, 0, 3012, 3009, 1, 0, 0, 0, 3012, 3013, 1, 0, 0, 0, 3013, 3032, 1, 0, 0, 0, 3014, 3016, 5, 392, 0, 0, 3015, 3017, 5, 498, 0, 0, 3016, 3015, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3023, 1, 0, 0, 0, 3018, 3020, 5, 24, 0, 0, 3019, 3021, 5, 300, 0, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3024, 5, 68, 0, 0, 3023, 3018, 1, 0, 0, 0, 3023, 3024, 1, 0, 0, 0, 3024, 3029, 1, 0, 0, 0, 3025, 3027, 5, 300, 0, 0, 3026, 3025, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 3028, 1, 0, 0, 0, 3028, 3030, 5, 370, 0, 0, 3029, 3026, 1, 0, 0, 0, 3029, 3030, 1, 0, 0, 0, 3030, 3032, 1, 0, 0, 0, 3031, 2989, 1, 0, 0, 0, 3031, 2997, 1, 0, 0, 0, 3031, 3014, 1, 0, 0, 0, 3032, 83, 1, 0, 0, 0, 3033, 3034, 5, 196, 0, 0, 3034, 3035, 3, 88, 44, 0, 3035, 3036, 5, 309, 0, 0, 3036, 3037, 3, 186, 93, 0, 3037, 3041, 5, 454, 0, 0, 3038, 3042, 3, 190, 95, 0, 3039, 3040, 5, 390, 0, 0, 3040, 3042, 5, 529, 0, 0, 3041, 3038, 1, 0, 0, 0, 3041, 3039, 1, 0, 0, 0, 3042, 3118, 1, 0, 0, 0, 3043, 3044, 5, 196, 0, 0, 3044, 3045, 3, 88, 44, 0, 3045, 3055, 5, 309, 0, 0, 3046, 3056, 5, 380, 0, 0, 3047, 3056, 5, 73, 0, 0, 3048, 3049, 5, 87, 0, 0, 3049, 3056, 5, 199, 0, 0, 3050, 3056, 5, 422, 0, 0, 3051, 3052, 5, 429, 0, 0, 3052, 3056, 5, 485, 0, 0, 3053, 3054, 5, 499, 0, 0, 3054, 3056, 5, 199, 0, 0, 3055, 3046, 1, 0, 0, 0, 3055, 3047, 1, 0, 0, 0, 3055, 3048, 1, 0, 0, 0, 3055, 3050, 1, 0, 0, 0, 3055, 3051, 1, 0, 0, 0, 3055, 3053, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3058, 3, 184, 92, 0, 3058, 3062, 5, 454, 0, 0, 3059, 3063, 3, 190, 95, 0, 3060, 3061, 5, 390, 0, 0, 3061, 3063, 5, 529, 0, 0, 3062, 3059, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3063, 3118, 1, 0, 0, 0, 3064, 3065, 5, 196, 0, 0, 3065, 3070, 5, 529, 0, 0, 3066, 3067, 5, 4, 0, 0, 3067, 3069, 5, 529, 0, 0, 3068, 3066, 1, 0, 0, 0, 3069, 3072, 1, 0, 0, 0, 3070, 3068, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3073, 1, 0, 0, 0, 3072, 3070, 1, 0, 0, 0, 3073, 3074, 5, 454, 0, 0, 3074, 3118, 3, 190, 95, 0, 3075, 3076, 5, 386, 0, 0, 3076, 3077, 3, 88, 44, 0, 3077, 3078, 5, 309, 0, 0, 3078, 3079, 3, 186, 93, 0, 3079, 3083, 5, 187, 0, 0, 3080, 3084, 3, 190, 95, 0, 3081, 3082, 5, 390, 0, 0, 3082, 3084, 5, 529, 0, 0, 3083, 3080, 1, 0, 0, 0, 3083, 3081, 1, 0, 0, 0, 3084, 3118, 1, 0, 0, 0, 3085, 3086, 5, 386, 0, 0, 3086, 3087, 3, 88, 44, 0, 3087, 3097, 5, 309, 0, 0, 3088, 3098, 5, 380, 0, 0, 3089, 3098, 5, 73, 0, 0, 3090, 3091, 5, 87, 0, 0, 3091, 3098, 5, 199, 0, 0, 3092, 3098, 5, 422, 0, 0, 3093, 3094, 5, 429, 0, 0, 3094, 3098, 5, 485, 0, 0, 3095, 3096, 5, 499, 0, 0, 3096, 3098, 5, 199, 0, 0, 3097, 3088, 1, 0, 0, 0, 3097, 3089, 1, 0, 0, 0, 3097, 3090, 1, 0, 0, 0, 3097, 3092, 1, 0, 0, 0, 3097, 3093, 1, 0, 0, 0, 3097, 3095, 1, 0, 0, 0, 3098, 3099, 1, 0, 0, 0, 3099, 3100, 3, 184, 92, 0, 3100, 3104, 5, 187, 0, 0, 3101, 3105, 3, 190, 95, 0, 3102, 3103, 5, 390, 0, 0, 3103, 3105, 5, 529, 0, 0, 3104, 3101, 1, 0, 0, 0, 3104, 3102, 1, 0, 0, 0, 3105, 3118, 1, 0, 0, 0, 3106, 3107, 5, 386, 0, 0, 3107, 3112, 5, 529, 0, 0, 3108, 3109, 5, 4, 0, 0, 3109, 3111, 5, 529, 0, 0, 3110, 3108, 1, 0, 0, 0, 3111, 3114, 1, 0, 0, 0, 3112, 3110, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 3115, 1, 0, 0, 0, 3114, 3112, 1, 0, 0, 0, 3115, 3116, 5, 187, 0, 0, 3116, 3118, 3, 190, 95, 0, 3117, 3033, 1, 0, 0, 0, 3117, 3043, 1, 0, 0, 0, 3117, 3064, 1, 0, 0, 0, 3117, 3075, 1, 0, 0, 0, 3117, 3085, 1, 0, 0, 0, 3117, 3106, 1, 0, 0, 0, 3118, 85, 1, 0, 0, 0, 3119, 3121, 3, 448, 224, 0, 3120, 3122, 3, 304, 152, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 3125, 1, 0, 0, 0, 3123, 3125, 5, 20, 0, 0, 3124, 3119, 1, 0, 0, 0, 3124, 3123, 1, 0, 0, 0, 3125, 87, 1, 0, 0, 0, 3126, 3131, 3, 86, 43, 0, 3127, 3128, 5, 4, 0, 0, 3128, 3130, 3, 86, 43, 0, 3129, 3127, 1, 0, 0, 0, 3130, 3133, 1, 0, 0, 0, 3131, 3129, 1, 0, 0, 0, 3131, 3132, 1, 0, 0, 0, 3132, 89, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3135, 5, 21, 0, 0, 3135, 3136, 5, 111, 0, 0, 3136, 3137, 3, 448, 224, 0, 3137, 3138, 5, 409, 0, 0, 3138, 3139, 5, 350, 0, 0, 3139, 3140, 5, 2, 0, 0, 3140, 3141, 3, 316, 158, 0, 3141, 3142, 5, 3, 0, 0, 3142, 3193, 1, 0, 0, 0, 3143, 3144, 5, 21, 0, 0, 3144, 3145, 5, 380, 0, 0, 3145, 3147, 3, 182, 91, 0, 3146, 3148, 3, 314, 157, 0, 3147, 3146, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3193, 1, 0, 0, 0, 3149, 3150, 5, 21, 0, 0, 3150, 3151, 5, 78, 0, 0, 3151, 3152, 5, 199, 0, 0, 3152, 3153, 3, 326, 163, 0, 3153, 3154, 5, 409, 0, 0, 3154, 3155, 5, 2, 0, 0, 3155, 3156, 3, 316, 158, 0, 3156, 3157, 5, 3, 0, 0, 3157, 3193, 1, 0, 0, 0, 3158, 3159, 5, 21, 0, 0, 3159, 3160, 5, 394, 0, 0, 3160, 3161, 5, 261, 0, 0, 3161, 3162, 5, 182, 0, 0, 3162, 3164, 3, 326, 163, 0, 3163, 3165, 3, 314, 157, 0, 3164, 3163, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 3172, 1, 0, 0, 0, 3166, 3167, 5, 187, 0, 0, 3167, 3168, 3, 448, 224, 0, 3168, 3169, 5, 2, 0, 0, 3169, 3170, 3, 316, 158, 0, 3170, 3171, 5, 3, 0, 0, 3171, 3173, 1, 0, 0, 0, 3172, 3166, 1, 0, 0, 0, 3172, 3173, 1, 0, 0, 0, 3173, 3193, 1, 0, 0, 0, 3174, 3175, 5, 21, 0, 0, 3175, 3176, 5, 429, 0, 0, 3176, 3177, 5, 342, 0, 0, 3177, 3178, 3, 182, 91, 0, 3178, 3179, 3, 314, 157, 0, 3179, 3193, 1, 0, 0, 0, 3180, 3181, 5, 21, 0, 0, 3181, 3184, 5, 476, 0, 0, 3182, 3183, 5, 214, 0, 0, 3183, 3185, 5, 164, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3185, 1, 0, 0, 0, 3185, 3186, 1, 0, 0, 0, 3186, 3187, 3, 192, 96, 0, 3187, 3190, 3, 126, 63, 0, 3188, 3189, 5, 81, 0, 0, 3189, 3191, 5, 529, 0, 0, 3190, 3188, 1, 0, 0, 0, 3190, 3191, 1, 0, 0, 0, 3191, 3193, 1, 0, 0, 0, 3192, 3134, 1, 0, 0, 0, 3192, 3143, 1, 0, 0, 0, 3192, 3149, 1, 0, 0, 0, 3192, 3158, 1, 0, 0, 0, 3192, 3174, 1, 0, 0, 0, 3192, 3180, 1, 0, 0, 0, 3193, 91, 1, 0, 0, 0, 3194, 3195, 5, 14, 0, 0, 3195, 3196, 5, 35, 0, 0, 3196, 3201, 5, 529, 0, 0, 3197, 3198, 5, 4, 0, 0, 3198, 3200, 5, 529, 0, 0, 3199, 3197, 1, 0, 0, 0, 3200, 3203, 1, 0, 0, 0, 3201, 3199, 1, 0, 0, 0, 3201, 3202, 1, 0, 0, 0, 3202, 3205, 1, 0, 0, 0, 3203, 3201, 1, 0, 0, 0, 3204, 3206, 3, 314, 157, 0, 3205, 3204, 1, 0, 0, 0, 3205, 3206, 1, 0, 0, 0, 3206, 3293, 1, 0, 0, 0, 3207, 3208, 7, 19, 0, 0, 3208, 3209, 5, 35, 0, 0, 3209, 3214, 5, 529, 0, 0, 3210, 3211, 5, 4, 0, 0, 3211, 3213, 5, 529, 0, 0, 3212, 3210, 1, 0, 0, 0, 3213, 3216, 1, 0, 0, 0, 3214, 3212, 1, 0, 0, 0, 3214, 3215, 1, 0, 0, 0, 3215, 3293, 1, 0, 0, 0, 3216, 3214, 1, 0, 0, 0, 3217, 3218, 5, 123, 0, 0, 3218, 3219, 5, 35, 0, 0, 3219, 3224, 5, 529, 0, 0, 3220, 3221, 5, 4, 0, 0, 3221, 3223, 5, 529, 0, 0, 3222, 3220, 1, 0, 0, 0, 3223, 3226, 1, 0, 0, 0, 3224, 3222, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3293, 1, 0, 0, 0, 3226, 3224, 1, 0, 0, 0, 3227, 3228, 5, 14, 0, 0, 3228, 3229, 5, 306, 0, 0, 3229, 3293, 5, 529, 0, 0, 3230, 3231, 5, 142, 0, 0, 3231, 3232, 5, 306, 0, 0, 3232, 3293, 5, 529, 0, 0, 3233, 3234, 5, 14, 0, 0, 3234, 3235, 5, 180, 0, 0, 3235, 3293, 5, 529, 0, 0, 3236, 3237, 5, 142, 0, 0, 3237, 3238, 5, 180, 0, 0, 3238, 3293, 5, 529, 0, 0, 3239, 3240, 5, 14, 0, 0, 3240, 3241, 5, 54, 0, 0, 3241, 3242, 3, 182, 91, 0, 3242, 3247, 5, 529, 0, 0, 3243, 3244, 5, 4, 0, 0, 3244, 3246, 5, 529, 0, 0, 3245, 3243, 1, 0, 0, 0, 3246, 3249, 1, 0, 0, 0, 3247, 3245, 1, 0, 0, 0, 3247, 3248, 1, 0, 0, 0, 3248, 3293, 1, 0, 0, 0, 3249, 3247, 1, 0, 0, 0, 3250, 3251, 5, 142, 0, 0, 3251, 3252, 5, 54, 0, 0, 3252, 3253, 3, 182, 91, 0, 3253, 3258, 5, 529, 0, 0, 3254, 3255, 5, 4, 0, 0, 3255, 3257, 5, 529, 0, 0, 3256, 3254, 1, 0, 0, 0, 3257, 3260, 1, 0, 0, 0, 3258, 3256, 1, 0, 0, 0, 3258, 3259, 1, 0, 0, 0, 3259, 3293, 1, 0, 0, 0, 3260, 3258, 1, 0, 0, 0, 3261, 3262, 5, 142, 0, 0, 3262, 3263, 5, 20, 0, 0, 3263, 3264, 5, 54, 0, 0, 3264, 3293, 3, 182, 91, 0, 3265, 3266, 5, 409, 0, 0, 3266, 3267, 5, 261, 0, 0, 3267, 3268, 5, 158, 0, 0, 3268, 3270, 5, 212, 0, 0, 3269, 3271, 3, 314, 157, 0, 3270, 3269, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3293, 1, 0, 0, 0, 3272, 3273, 5, 290, 0, 0, 3273, 3274, 5, 35, 0, 0, 3274, 3279, 5, 529, 0, 0, 3275, 3276, 5, 4, 0, 0, 3276, 3278, 5, 529, 0, 0, 3277, 3275, 1, 0, 0, 0, 3278, 3281, 1, 0, 0, 0, 3279, 3277, 1, 0, 0, 0, 3279, 3280, 1, 0, 0, 0, 3280, 3282, 1, 0, 0, 0, 3281, 3279, 1, 0, 0, 0, 3282, 3283, 5, 409, 0, 0, 3283, 3284, 5, 2, 0, 0, 3284, 3285, 3, 316, 158, 0, 3285, 3286, 5, 3, 0, 0, 3286, 3293, 1, 0, 0, 0, 3287, 3288, 5, 290, 0, 0, 3288, 3289, 7, 2, 0, 0, 3289, 3290, 5, 529, 0, 0, 3290, 3291, 5, 209, 0, 0, 3291, 3293, 5, 529, 0, 0, 3292, 3194, 1, 0, 0, 0, 3292, 3207, 1, 0, 0, 0, 3292, 3217, 1, 0, 0, 0, 3292, 3227, 1, 0, 0, 0, 3292, 3230, 1, 0, 0, 0, 3292, 3233, 1, 0, 0, 0, 3292, 3236, 1, 0, 0, 0, 3292, 3239, 1, 0, 0, 0, 3292, 3250, 1, 0, 0, 0, 3292, 3261, 1, 0, 0, 0, 3292, 3265, 1, 0, 0, 0, 3292, 3272, 1, 0, 0, 0, 3292, 3287, 1, 0, 0, 0, 3293, 93, 1, 0, 0, 0, 3294, 3296, 3, 448, 224, 0, 3295, 3297, 3, 314, 157, 0, 3296, 3295, 1, 0, 0, 0, 3296, 3297, 1, 0, 0, 0, 3297, 95, 1, 0, 0, 0, 3298, 3299, 3, 448, 224, 0, 3299, 3303, 3, 304, 152, 0, 3300, 3301, 5, 146, 0, 0, 3301, 3302, 5, 244, 0, 0, 3302, 3304, 3, 304, 152, 0, 3303, 3300, 1, 0, 0, 0, 3303, 3304, 1, 0, 0, 0, 3304, 3306, 1, 0, 0, 0, 3305, 3307, 3, 104, 52, 0, 3306, 3305, 1, 0, 0, 0, 3306, 3307, 1, 0, 0, 0, 3307, 3309, 1, 0, 0, 0, 3308, 3310, 3, 314, 157, 0, 3309, 3308, 1, 0, 0, 0, 3309, 3310, 1, 0, 0, 0, 3310, 97, 1, 0, 0, 0, 3311, 3312, 5, 14, 0, 0, 3312, 3313, 5, 79, 0, 0, 3313, 3315, 3, 334, 167, 0, 3314, 3316, 3, 100, 50, 0, 3315, 3314, 1, 0, 0, 0, 3315, 3316, 1, 0, 0, 0, 3316, 3318, 1, 0, 0, 0, 3317, 3319, 3, 102, 51, 0, 3318, 3317, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3321, 1, 0, 0, 0, 3320, 3322, 3, 314, 157, 0, 3321, 3320, 1, 0, 0, 0, 3321, 3322, 1, 0, 0, 0, 3322, 3532, 1, 0, 0, 0, 3323, 3324, 5, 14, 0, 0, 3324, 3325, 5, 79, 0, 0, 3325, 3326, 5, 2, 0, 0, 3326, 3327, 3, 332, 166, 0, 3327, 3329, 5, 3, 0, 0, 3328, 3330, 3, 102, 51, 0, 3329, 3328, 1, 0, 0, 0, 3329, 3330, 1, 0, 0, 0, 3330, 3332, 1, 0, 0, 0, 3331, 3333, 3, 314, 157, 0, 3332, 3331, 1, 0, 0, 0, 3332, 3333, 1, 0, 0, 0, 3333, 3532, 1, 0, 0, 0, 3334, 3335, 5, 142, 0, 0, 3335, 3336, 5, 79, 0, 0, 3336, 3338, 3, 448, 224, 0, 3337, 3339, 3, 104, 52, 0, 3338, 3337, 1, 0, 0, 0, 3338, 3339, 1, 0, 0, 0, 3339, 3341, 1, 0, 0, 0, 3340, 3342, 3, 314, 157, 0, 3341, 3340, 1, 0, 0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 3532, 1, 0, 0, 0, 3343, 3344, 5, 290, 0, 0, 3344, 3345, 5, 79, 0, 0, 3345, 3347, 3, 334, 167, 0, 3346, 3348, 3, 100, 50, 0, 3347, 3346, 1, 0, 0, 0, 3347, 3348, 1, 0, 0, 0, 3348, 3350, 1, 0, 0, 0, 3349, 3351, 3, 104, 52, 0, 3350, 3349, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 3353, 1, 0, 0, 0, 3352, 3354, 3, 314, 157, 0, 3353, 3352, 1, 0, 0, 0, 3353, 3354, 1, 0, 0, 0, 3354, 3532, 1, 0, 0, 0, 3355, 3356, 5, 314, 0, 0, 3356, 3357, 5, 59, 0, 0, 3357, 3359, 3, 304, 152, 0, 3358, 3360, 3, 104, 52, 0, 3359, 3358, 1, 0, 0, 0, 3359, 3360, 1, 0, 0, 0, 3360, 3362, 1, 0, 0, 0, 3361, 3363, 3, 314, 157, 0, 3362, 3361, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3532, 1, 0, 0, 0, 3364, 3366, 5, 14, 0, 0, 3365, 3367, 5, 446, 0, 0, 3366, 3365, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 3383, 3, 342, 171, 0, 3369, 3370, 5, 136, 0, 0, 3370, 3374, 5, 59, 0, 0, 3371, 3372, 5, 202, 0, 0, 3372, 3375, 3, 304, 152, 0, 3373, 3375, 5, 359, 0, 0, 3374, 3371, 1, 0, 0, 0, 3374, 3373, 1, 0, 0, 0, 3375, 3381, 1, 0, 0, 0, 3376, 3379, 5, 55, 0, 0, 3377, 3380, 5, 534, 0, 0, 3378, 3380, 5, 32, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3378, 1, 0, 0, 0, 3380, 3382, 1, 0, 0, 0, 3381, 3376, 1, 0, 0, 0, 3381, 3382, 1, 0, 0, 0, 3382, 3384, 1, 0, 0, 0, 3383, 3369, 1, 0, 0, 0, 3383, 3384, 1, 0, 0, 0, 3384, 3386, 1, 0, 0, 0, 3385, 3387, 3, 314, 157, 0, 3386, 3385, 1, 0, 0, 0, 3386, 3387, 1, 0, 0, 0, 3387, 3532, 1, 0, 0, 0, 3388, 3390, 5, 142, 0, 0, 3389, 3391, 5, 446, 0, 0, 3390, 3389, 1, 0, 0, 0, 3390, 3391, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3395, 5, 321, 0, 0, 3393, 3394, 5, 214, 0, 0, 3394, 3396, 5, 164, 0, 0, 3395, 3393, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3397, 1, 0, 0, 0, 3397, 3399, 3, 448, 224, 0, 3398, 3400, 5, 184, 0, 0, 3399, 3398, 1, 0, 0, 0, 3399, 3400, 1, 0, 0, 0, 3400, 3404, 1, 0, 0, 0, 3401, 3402, 5, 187, 0, 0, 3402, 3403, 5, 219, 0, 0, 3403, 3405, 3, 448, 224, 0, 3404, 3401, 1, 0, 0, 0, 3404, 3405, 1, 0, 0, 0, 3405, 3532, 1, 0, 0, 0, 3406, 3408, 5, 290, 0, 0, 3407, 3409, 5, 446, 0, 0, 3408, 3407, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3410, 1, 0, 0, 0, 3410, 3416, 5, 321, 0, 0, 3411, 3417, 3, 448, 224, 0, 3412, 3417, 3, 304, 152, 0, 3413, 3414, 5, 2, 0, 0, 3414, 3415, 5, 512, 0, 0, 3415, 3417, 5, 3, 0, 0, 3416, 3411, 1, 0, 0, 0, 3416, 3412, 1, 0, 0, 0, 3416, 3413, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3419, 5, 409, 0, 0, 3419, 3420, 5, 2, 0, 0, 3420, 3421, 3, 316, 158, 0, 3421, 3422, 5, 3, 0, 0, 3422, 3532, 1, 0, 0, 0, 3423, 3425, 5, 374, 0, 0, 3424, 3426, 3, 160, 80, 0, 3425, 3424, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3427, 1, 0, 0, 0, 3427, 3429, 5, 497, 0, 0, 3428, 3430, 3, 160, 80, 0, 3429, 3428, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 3432, 1, 0, 0, 0, 3431, 3433, 5, 184, 0, 0, 3432, 3431, 1, 0, 0, 0, 3432, 3433, 1, 0, 0, 0, 3433, 3435, 1, 0, 0, 0, 3434, 3436, 3, 314, 157, 0, 3435, 3434, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3532, 1, 0, 0, 0, 3437, 3438, 5, 374, 0, 0, 3438, 3439, 5, 497, 0, 0, 3439, 3440, 5, 439, 0, 0, 3440, 3442, 3, 448, 224, 0, 3441, 3443, 3, 314, 157, 0, 3442, 3441, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3445, 1, 0, 0, 0, 3444, 3446, 5, 184, 0, 0, 3445, 3444, 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3532, 1, 0, 0, 0, 3447, 3448, 5, 371, 0, 0, 3448, 3532, 3, 448, 224, 0, 3449, 3450, 5, 371, 0, 0, 3450, 3451, 5, 393, 0, 0, 3451, 3452, 3, 448, 224, 0, 3452, 3453, 3, 448, 224, 0, 3453, 3532, 1, 0, 0, 0, 3454, 3455, 5, 371, 0, 0, 3455, 3456, 5, 321, 0, 0, 3456, 3457, 3, 448, 224, 0, 3457, 3458, 3, 448, 224, 0, 3458, 3532, 1, 0, 0, 0, 3459, 3460, 5, 371, 0, 0, 3460, 3461, 5, 79, 0, 0, 3461, 3462, 3, 448, 224, 0, 3462, 3463, 3, 448, 224, 0, 3463, 3532, 1, 0, 0, 0, 3464, 3465, 5, 14, 0, 0, 3465, 3532, 3, 338, 169, 0, 3466, 3467, 5, 142, 0, 0, 3467, 3470, 5, 219, 0, 0, 3468, 3469, 5, 214, 0, 0, 3469, 3471, 5, 164, 0, 0, 3470, 3468, 1, 0, 0, 0, 3470, 3471, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3532, 3, 448, 224, 0, 3473, 3474, 5, 150, 0, 0, 3474, 3475, 5, 174, 0, 0, 3475, 3478, 5, 529, 0, 0, 3476, 3477, 5, 497, 0, 0, 3477, 3479, 3, 314, 157, 0, 3478, 3476, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3532, 1, 0, 0, 0, 3480, 3481, 5, 290, 0, 0, 3481, 3496, 5, 137, 0, 0, 3482, 3483, 5, 136, 0, 0, 3483, 3487, 5, 59, 0, 0, 3484, 3485, 5, 202, 0, 0, 3485, 3488, 3, 304, 152, 0, 3486, 3488, 5, 359, 0, 0, 3487, 3484, 1, 0, 0, 0, 3487, 3486, 1, 0, 0, 0, 3488, 3494, 1, 0, 0, 0, 3489, 3492, 5, 55, 0, 0, 3490, 3493, 5, 534, 0, 0, 3491, 3493, 5, 32, 0, 0, 3492, 3490, 1, 0, 0, 0, 3492, 3491, 1, 0, 0, 0, 3493, 3495, 1, 0, 0, 0, 3494, 3489, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3497, 1, 0, 0, 0, 3496, 3482, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3532, 1, 0, 0, 0, 3498, 3499, 5, 290, 0, 0, 3499, 3500, 5, 81, 0, 0, 3500, 3532, 5, 529, 0, 0, 3501, 3502, 5, 290, 0, 0, 3502, 3503, 5, 79, 0, 0, 3503, 3504, 3, 448, 224, 0, 3504, 3505, 5, 81, 0, 0, 3505, 3506, 5, 529, 0, 0, 3506, 3532, 1, 0, 0, 0, 3507, 3508, 5, 290, 0, 0, 3508, 3509, 5, 155, 0, 0, 3509, 3510, 5, 454, 0, 0, 3510, 3512, 3, 448, 224, 0, 3511, 3513, 3, 314, 157, 0, 3512, 3511, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3532, 1, 0, 0, 0, 3514, 3516, 5, 14, 0, 0, 3515, 3517, 5, 446, 0, 0, 3516, 3515, 1, 0, 0, 0, 3516, 3517, 1, 0, 0, 0, 3517, 3518, 1, 0, 0, 0, 3518, 3519, 5, 322, 0, 0, 3519, 3520, 5, 187, 0, 0, 3520, 3521, 3, 352, 176, 0, 3521, 3522, 5, 454, 0, 0, 3522, 3523, 3, 352, 176, 0, 3523, 3524, 5, 229, 0, 0, 3524, 3526, 5, 534, 0, 0, 3525, 3527, 3, 448, 224, 0, 3526, 3525, 1, 0, 0, 0, 3526, 3527, 1, 0, 0, 0, 3527, 3529, 1, 0, 0, 0, 3528, 3530, 3, 314, 157, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3532, 1, 0, 0, 0, 3531, 3311, 1, 0, 0, 0, 3531, 3323, 1, 0, 0, 0, 3531, 3334, 1, 0, 0, 0, 3531, 3343, 1, 0, 0, 0, 3531, 3355, 1, 0, 0, 0, 3531, 3364, 1, 0, 0, 0, 3531, 3388, 1, 0, 0, 0, 3531, 3406, 1, 0, 0, 0, 3531, 3423, 1, 0, 0, 0, 3531, 3437, 1, 0, 0, 0, 3531, 3447, 1, 0, 0, 0, 3531, 3449, 1, 0, 0, 0, 3531, 3454, 1, 0, 0, 0, 3531, 3459, 1, 0, 0, 0, 3531, 3464, 1, 0, 0, 0, 3531, 3466, 1, 0, 0, 0, 3531, 3473, 1, 0, 0, 0, 3531, 3480, 1, 0, 0, 0, 3531, 3498, 1, 0, 0, 0, 3531, 3501, 1, 0, 0, 0, 3531, 3507, 1, 0, 0, 0, 3531, 3514, 1, 0, 0, 0, 3532, 99, 1, 0, 0, 0, 3533, 3537, 5, 178, 0, 0, 3534, 3535, 5, 16, 0, 0, 3535, 3537, 3, 448, 224, 0, 3536, 3533, 1, 0, 0, 0, 3536, 3534, 1, 0, 0, 0, 3537, 101, 1, 0, 0, 0, 3538, 3539, 7, 20, 0, 0, 3539, 3540, 3, 448, 224, 0, 3540, 103, 1, 0, 0, 0, 3541, 3542, 5, 187, 0, 0, 3542, 3543, 3, 448, 224, 0, 3543, 105, 1, 0, 0, 0, 3544, 3545, 5, 142, 0, 0, 3545, 3548, 5, 489, 0, 0, 3546, 3547, 5, 214, 0, 0, 3547, 3549, 5, 164, 0, 0, 3548, 3546, 1, 0, 0, 0, 3548, 3549, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 3584, 3, 326, 163, 0, 3551, 3552, 5, 142, 0, 0, 3552, 3555, 5, 380, 0, 0, 3553, 3554, 5, 214, 0, 0, 3554, 3556, 5, 164, 0, 0, 3555, 3553, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3557, 1, 0, 0, 0, 3557, 3584, 3, 182, 91, 0, 3558, 3559, 5, 142, 0, 0, 3559, 3560, 5, 395, 0, 0, 3560, 3563, 5, 342, 0, 0, 3561, 3562, 5, 214, 0, 0, 3562, 3564, 5, 164, 0, 0, 3563, 3561, 1, 0, 0, 0, 3563, 3564, 1, 0, 0, 0, 3564, 3565, 1, 0, 0, 0, 3565, 3566, 3, 448, 224, 0, 3566, 3567, 5, 309, 0, 0, 3567, 3574, 3, 326, 163, 0, 3568, 3572, 5, 182, 0, 0, 3569, 3573, 3, 190, 95, 0, 3570, 3571, 5, 390, 0, 0, 3571, 3573, 3, 448, 224, 0, 3572, 3569, 1, 0, 0, 0, 3572, 3570, 1, 0, 0, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3568, 1, 0, 0, 0, 3574, 3575, 1, 0, 0, 0, 3575, 3584, 1, 0, 0, 0, 3576, 3577, 5, 142, 0, 0, 3577, 3580, 5, 422, 0, 0, 3578, 3579, 5, 214, 0, 0, 3579, 3581, 5, 164, 0, 0, 3580, 3578, 1, 0, 0, 0, 3580, 3581, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3584, 3, 448, 224, 0, 3583, 3544, 1, 0, 0, 0, 3583, 3551, 1, 0, 0, 0, 3583, 3558, 1, 0, 0, 0, 3583, 3576, 1, 0, 0, 0, 3584, 107, 1, 0, 0, 0, 3585, 3587, 5, 413, 0, 0, 3586, 3588, 5, 32, 0, 0, 3587, 3586, 1, 0, 0, 0, 3587, 3588, 1, 0, 0, 0, 3588, 3589, 1, 0, 0, 0, 3589, 3592, 5, 22, 0, 0, 3590, 3593, 5, 534, 0, 0, 3591, 3593, 3, 326, 163, 0, 3592, 3590, 1, 0, 0, 0, 3592, 3591, 1, 0, 0, 0, 3592, 3593, 1, 0, 0, 0, 3593, 3599, 1, 0, 0, 0, 3594, 3595, 5, 495, 0, 0, 3595, 3596, 3, 448, 224, 0, 3596, 3597, 5, 503, 0, 0, 3597, 3598, 5, 529, 0, 0, 3598, 3600, 1, 0, 0, 0, 3599, 3594, 1, 0, 0, 0, 3599, 3600, 1, 0, 0, 0, 3600, 3654, 1, 0, 0, 0, 3601, 3602, 5, 413, 0, 0, 3602, 3603, 5, 355, 0, 0, 3603, 3604, 5, 22, 0, 0, 3604, 3606, 5, 240, 0, 0, 3605, 3607, 3, 326, 163, 0, 3606, 3605, 1, 0, 0, 0, 3606, 3607, 1, 0, 0, 0, 3607, 3613, 1, 0, 0, 0, 3608, 3609, 5, 495, 0, 0, 3609, 3610, 3, 448, 224, 0, 3610, 3611, 5, 503, 0, 0, 3611, 3612, 5, 529, 0, 0, 3612, 3614, 1, 0, 0, 0, 3613, 3608, 1, 0, 0, 0, 3613, 3614, 1, 0, 0, 0, 3614, 3654, 1, 0, 0, 0, 3615, 3616, 5, 413, 0, 0, 3616, 3617, 5, 79, 0, 0, 3617, 3618, 5, 206, 0, 0, 3618, 3619, 3, 326, 163, 0, 3619, 3620, 3, 304, 152, 0, 3620, 3654, 1, 0, 0, 0, 3621, 3622, 5, 22, 0, 0, 3622, 3623, 5, 111, 0, 0, 3623, 3628, 3, 326, 163, 0, 3624, 3625, 5, 497, 0, 0, 3625, 3627, 3, 112, 56, 0, 3626, 3624, 1, 0, 0, 0, 3627, 3630, 1, 0, 0, 0, 3628, 3626, 1, 0, 0, 0, 3628, 3629, 1, 0, 0, 0, 3629, 3632, 1, 0, 0, 0, 3630, 3628, 1, 0, 0, 0, 3631, 3633, 3, 314, 157, 0, 3632, 3631, 1, 0, 0, 0, 3632, 3633, 1, 0, 0, 0, 3633, 3654, 1, 0, 0, 0, 3634, 3635, 5, 22, 0, 0, 3635, 3636, 5, 439, 0, 0, 3636, 3638, 3, 326, 163, 0, 3637, 3639, 3, 160, 80, 0, 3638, 3637, 1, 0, 0, 0, 3638, 3639, 1, 0, 0, 0, 3639, 3641, 1, 0, 0, 0, 3640, 3642, 3, 304, 152, 0, 3641, 3640, 1, 0, 0, 0, 3641, 3642, 1, 0, 0, 0, 3642, 3647, 1, 0, 0, 0, 3643, 3644, 5, 497, 0, 0, 3644, 3646, 3, 112, 56, 0, 3645, 3643, 1, 0, 0, 0, 3646, 3649, 1, 0, 0, 0, 3647, 3645, 1, 0, 0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3651, 1, 0, 0, 0, 3649, 3647, 1, 0, 0, 0, 3650, 3652, 3, 314, 157, 0, 3651, 3650, 1, 0, 0, 0, 3651, 3652, 1, 0, 0, 0, 3652, 3654, 1, 0, 0, 0, 3653, 3585, 1, 0, 0, 0, 3653, 3601, 1, 0, 0, 0, 3653, 3615, 1, 0, 0, 0, 3653, 3621, 1, 0, 0, 0, 3653, 3634, 1, 0, 0, 0, 3654, 109, 1, 0, 0, 0, 3655, 3656, 5, 21, 0, 0, 3656, 3657, 5, 439, 0, 0, 3657, 3658, 3, 326, 163, 0, 3658, 3659, 5, 409, 0, 0, 3659, 3660, 5, 426, 0, 0, 3660, 3661, 5, 2, 0, 0, 3661, 3662, 3, 316, 158, 0, 3662, 3664, 5, 3, 0, 0, 3663, 3665, 3, 160, 80, 0, 3664, 3663, 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3746, 1, 0, 0, 0, 3666, 3667, 5, 21, 0, 0, 3667, 3668, 5, 439, 0, 0, 3668, 3671, 3, 326, 163, 0, 3669, 3670, 5, 219, 0, 0, 3670, 3672, 3, 448, 224, 0, 3671, 3669, 1, 0, 0, 0, 3671, 3672, 1, 0, 0, 0, 3672, 3673, 1, 0, 0, 0, 3673, 3674, 5, 290, 0, 0, 3674, 3675, 5, 79, 0, 0, 3675, 3676, 3, 448, 224, 0, 3676, 3677, 5, 409, 0, 0, 3677, 3678, 5, 426, 0, 0, 3678, 3679, 5, 2, 0, 0, 3679, 3680, 3, 316, 158, 0, 3680, 3682, 5, 3, 0, 0, 3681, 3683, 3, 160, 80, 0, 3682, 3681, 1, 0, 0, 0, 3682, 3683, 1, 0, 0, 0, 3683, 3746, 1, 0, 0, 0, 3684, 3685, 5, 142, 0, 0, 3685, 3686, 5, 426, 0, 0, 3686, 3688, 3, 326, 163, 0, 3687, 3689, 3, 304, 152, 0, 3688, 3687, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 3691, 1, 0, 0, 0, 3690, 3692, 3, 160, 80, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3746, 1, 0, 0, 0, 3693, 3694, 5, 142, 0, 0, 3694, 3695, 5, 61, 0, 0, 3695, 3696, 5, 426, 0, 0, 3696, 3746, 3, 326, 163, 0, 3697, 3698, 5, 142, 0, 0, 3698, 3699, 5, 165, 0, 0, 3699, 3746, 5, 426, 0, 0, 3700, 3701, 5, 142, 0, 0, 3701, 3702, 5, 22, 0, 0, 3702, 3703, 5, 239, 0, 0, 3703, 3746, 5, 534, 0, 0, 3704, 3705, 5, 246, 0, 0, 3705, 3706, 5, 22, 0, 0, 3706, 3746, 5, 534, 0, 0, 3707, 3708, 5, 413, 0, 0, 3708, 3709, 5, 439, 0, 0, 3709, 3710, 5, 426, 0, 0, 3710, 3712, 3, 326, 163, 0, 3711, 3713, 3, 160, 80, 0, 3712, 3711, 1, 0, 0, 0, 3712, 3713, 1, 0, 0, 0, 3713, 3715, 1, 0, 0, 0, 3714, 3716, 3, 304, 152, 0, 3715, 3714, 1, 0, 0, 0, 3715, 3716, 1, 0, 0, 0, 3716, 3746, 1, 0, 0, 0, 3717, 3718, 5, 413, 0, 0, 3718, 3719, 5, 439, 0, 0, 3719, 3720, 5, 426, 0, 0, 3720, 3746, 5, 534, 0, 0, 3721, 3722, 5, 413, 0, 0, 3722, 3723, 5, 219, 0, 0, 3723, 3724, 5, 426, 0, 0, 3724, 3725, 3, 326, 163, 0, 3725, 3726, 3, 448, 224, 0, 3726, 3746, 1, 0, 0, 0, 3727, 3728, 5, 413, 0, 0, 3728, 3730, 5, 79, 0, 0, 3729, 3731, 5, 61, 0, 0, 3730, 3729, 1, 0, 0, 0, 3730, 3731, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3733, 5, 426, 0, 0, 3733, 3735, 3, 326, 163, 0, 3734, 3736, 3, 304, 152, 0, 3735, 3734, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3738, 1, 0, 0, 0, 3737, 3739, 3, 160, 80, 0, 3738, 3737, 1, 0, 0, 0, 3738, 3739, 1, 0, 0, 0, 3739, 3746, 1, 0, 0, 0, 3740, 3741, 5, 413, 0, 0, 3741, 3742, 5, 22, 0, 0, 3742, 3743, 5, 444, 0, 0, 3743, 3744, 5, 427, 0, 0, 3744, 3746, 5, 534, 0, 0, 3745, 3655, 1, 0, 0, 0, 3745, 3666, 1, 0, 0, 0, 3745, 3684, 1, 0, 0, 0, 3745, 3693, 1, 0, 0, 0, 3745, 3697, 1, 0, 0, 0, 3745, 3700, 1, 0, 0, 0, 3745, 3704, 1, 0, 0, 0, 3745, 3707, 1, 0, 0, 0, 3745, 3717, 1, 0, 0, 0, 3745, 3721, 1, 0, 0, 0, 3745, 3727, 1, 0, 0, 0, 3745, 3740, 1, 0, 0, 0, 3746, 111, 1, 0, 0, 0, 3747, 3766, 5, 437, 0, 0, 3748, 3766, 5, 218, 0, 0, 3749, 3766, 5, 190, 0, 0, 3750, 3766, 5, 420, 0, 0, 3751, 3766, 5, 206, 0, 0, 3752, 3757, 5, 398, 0, 0, 3753, 3754, 5, 396, 0, 0, 3754, 3758, 5, 534, 0, 0, 3755, 3756, 5, 330, 0, 0, 3756, 3758, 5, 534, 0, 0, 3757, 3753, 1, 0, 0, 0, 3757, 3755, 1, 0, 0, 0, 3758, 3766, 1, 0, 0, 0, 3759, 3760, 5, 55, 0, 0, 3760, 3766, 5, 534, 0, 0, 3761, 3762, 5, 331, 0, 0, 3762, 3766, 5, 534, 0, 0, 3763, 3764, 5, 101, 0, 0, 3764, 3766, 5, 529, 0, 0, 3765, 3747, 1, 0, 0, 0, 3765, 3748, 1, 0, 0, 0, 3765, 3749, 1, 0, 0, 0, 3765, 3750, 1, 0, 0, 0, 3765, 3751, 1, 0, 0, 0, 3765, 3752, 1, 0, 0, 0, 3765, 3759, 1, 0, 0, 0, 3765, 3761, 1, 0, 0, 0, 3765, 3763, 1, 0, 0, 0, 3766, 113, 1, 0, 0, 0, 3767, 3768, 5, 99, 0, 0, 3768, 3772, 7, 11, 0, 0, 3769, 3770, 5, 214, 0, 0, 3770, 3771, 5, 303, 0, 0, 3771, 3773, 5, 164, 0, 0, 3772, 3769, 1, 0, 0, 0, 3772, 3773, 1, 0, 0, 0, 3773, 3774, 1, 0, 0, 0, 3774, 3776, 3, 326, 163, 0, 3775, 3777, 3, 314, 157, 0, 3776, 3775, 1, 0, 0, 0, 3776, 3777, 1, 0, 0, 0, 3777, 3871, 1, 0, 0, 0, 3778, 3779, 5, 99, 0, 0, 3779, 3783, 5, 476, 0, 0, 3780, 3781, 5, 214, 0, 0, 3781, 3782, 5, 303, 0, 0, 3782, 3784, 5, 164, 0, 0, 3783, 3780, 1, 0, 0, 0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3790, 3, 192, 96, 0, 3786, 3791, 5, 435, 0, 0, 3787, 3788, 5, 124, 0, 0, 3788, 3789, 5, 390, 0, 0, 3789, 3791, 5, 529, 0, 0, 3790, 3786, 1, 0, 0, 0, 3790, 3787, 1, 0, 0, 0, 3790, 3791, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3795, 3, 126, 63, 0, 3793, 3794, 5, 81, 0, 0, 3794, 3796, 5, 529, 0, 0, 3795, 3793, 1, 0, 0, 0, 3795, 3796, 1, 0, 0, 0, 3796, 3871, 1, 0, 0, 0, 3797, 3800, 5, 99, 0, 0, 3798, 3799, 5, 361, 0, 0, 3799, 3801, 5, 310, 0, 0, 3800, 3798, 1, 0, 0, 0, 3800, 3801, 1, 0, 0, 0, 3801, 3802, 1, 0, 0, 0, 3802, 3803, 5, 379, 0, 0, 3803, 3804, 3, 448, 224, 0, 3804, 3805, 5, 497, 0, 0, 3805, 3806, 3, 124, 62, 0, 3806, 3871, 1, 0, 0, 0, 3807, 3809, 5, 99, 0, 0, 3808, 3810, 5, 169, 0, 0, 3809, 3808, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3815, 5, 380, 0, 0, 3812, 3813, 5, 214, 0, 0, 3813, 3814, 5, 303, 0, 0, 3814, 3816, 5, 164, 0, 0, 3815, 3812, 1, 0, 0, 0, 3815, 3816, 1, 0, 0, 0, 3816, 3817, 1, 0, 0, 0, 3817, 3819, 3, 182, 91, 0, 3818, 3820, 3, 314, 157, 0, 3819, 3818, 1, 0, 0, 0, 3819, 3820, 1, 0, 0, 0, 3820, 3871, 1, 0, 0, 0, 3821, 3822, 5, 99, 0, 0, 3822, 3823, 5, 429, 0, 0, 3823, 3827, 5, 485, 0, 0, 3824, 3825, 5, 214, 0, 0, 3825, 3826, 5, 303, 0, 0, 3826, 3828, 5, 164, 0, 0, 3827, 3824, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3831, 3, 182, 91, 0, 3830, 3832, 3, 314, 157, 0, 3831, 3830, 1, 0, 0, 0, 3831, 3832, 1, 0, 0, 0, 3832, 3871, 1, 0, 0, 0, 3833, 3834, 5, 99, 0, 0, 3834, 3835, 5, 499, 0, 0, 3835, 3839, 5, 342, 0, 0, 3836, 3837, 5, 214, 0, 0, 3837, 3838, 5, 303, 0, 0, 3838, 3840, 5, 164, 0, 0, 3839, 3836, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 3841, 1, 0, 0, 0, 3841, 3847, 3, 182, 91, 0, 3842, 3843, 5, 88, 0, 0, 3843, 3844, 5, 2, 0, 0, 3844, 3845, 3, 120, 60, 0, 3845, 3846, 5, 3, 0, 0, 3846, 3848, 1, 0, 0, 0, 3847, 3842, 1, 0, 0, 0, 3847, 3848, 1, 0, 0, 0, 3848, 3854, 1, 0, 0, 0, 3849, 3850, 5, 13, 0, 0, 3850, 3851, 5, 2, 0, 0, 3851, 3852, 3, 116, 58, 0, 3852, 3853, 5, 3, 0, 0, 3853, 3855, 1, 0, 0, 0, 3854, 3849, 1, 0, 0, 0, 3854, 3855, 1, 0, 0, 0, 3855, 3857, 1, 0, 0, 0, 3856, 3858, 3, 314, 157, 0, 3857, 3856, 1, 0, 0, 0, 3857, 3858, 1, 0, 0, 0, 3858, 3871, 1, 0, 0, 0, 3859, 3860, 5, 99, 0, 0, 3860, 3864, 5, 422, 0, 0, 3861, 3862, 5, 214, 0, 0, 3862, 3863, 5, 303, 0, 0, 3863, 3865, 5, 164, 0, 0, 3864, 3861, 1, 0, 0, 0, 3864, 3865, 1, 0, 0, 0, 3865, 3866, 1, 0, 0, 0, 3866, 3868, 3, 448, 224, 0, 3867, 3869, 3, 314, 157, 0, 3868, 3867, 1, 0, 0, 0, 3868, 3869, 1, 0, 0, 0, 3869, 3871, 1, 0, 0, 0, 3870, 3767, 1, 0, 0, 0, 3870, 3778, 1, 0, 0, 0, 3870, 3797, 1, 0, 0, 0, 3870, 3807, 1, 0, 0, 0, 3870, 3821, 1, 0, 0, 0, 3870, 3833, 1, 0, 0, 0, 3870, 3859, 1, 0, 0, 0, 3871, 115, 1, 0, 0, 0, 3872, 3877, 3, 118, 59, 0, 3873, 3874, 5, 4, 0, 0, 3874, 3876, 3, 118, 59, 0, 3875, 3873, 1, 0, 0, 0, 3876, 3879, 1, 0, 0, 0, 3877, 3875, 1, 0, 0, 0, 3877, 3878, 1, 0, 0, 0, 3878, 117, 1, 0, 0, 0, 3879, 3877, 1, 0, 0, 0, 3880, 3881, 5, 411, 0, 0, 3881, 3887, 5, 529, 0, 0, 3882, 3884, 3, 448, 224, 0, 3883, 3885, 5, 529, 0, 0, 3884, 3883, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 3887, 1, 0, 0, 0, 3886, 3880, 1, 0, 0, 0, 3886, 3882, 1, 0, 0, 0, 3887, 119, 1, 0, 0, 0, 3888, 3893, 3, 122, 61, 0, 3889, 3890, 5, 4, 0, 0, 3890, 3892, 3, 122, 61, 0, 3891, 3889, 1, 0, 0, 0, 3892, 3895, 1, 0, 0, 0, 3893, 3891, 1, 0, 0, 0, 3893, 3894, 1, 0, 0, 0, 3894, 121, 1, 0, 0, 0, 3895, 3893, 1, 0, 0, 0, 3896, 3897, 3, 448, 224, 0, 3897, 3900, 3, 410, 205, 0, 3898, 3901, 3, 454, 227, 0, 3899, 3901, 5, 529, 0, 0, 3900, 3898, 1, 0, 0, 0, 3900, 3899, 1, 0, 0, 0, 3901, 123, 1, 0, 0, 0, 3902, 3904, 7, 21, 0, 0, 3903, 3905, 3, 448, 224, 0, 3904, 3903, 1, 0, 0, 0, 3904, 3905, 1, 0, 0, 0, 3905, 3906, 1, 0, 0, 0, 3906, 3907, 5, 309, 0, 0, 3907, 3908, 5, 265, 0, 0, 3908, 3910, 5, 529, 0, 0, 3909, 3911, 3, 314, 157, 0, 3910, 3909, 1, 0, 0, 0, 3910, 3911, 1, 0, 0, 0, 3911, 125, 1, 0, 0, 0, 3912, 3915, 5, 325, 0, 0, 3913, 3916, 5, 124, 0, 0, 3914, 3916, 5, 534, 0, 0, 3915, 3913, 1, 0, 0, 0, 3915, 3914, 1, 0, 0, 0, 3916, 3918, 1, 0, 0, 0, 3917, 3912, 1, 0, 0, 0, 3917, 3918, 1, 0, 0, 0, 3918, 3927, 1, 0, 0, 0, 3919, 3925, 5, 324, 0, 0, 3920, 3926, 5, 124, 0, 0, 3921, 3926, 5, 297, 0, 0, 3922, 3923, 5, 229, 0, 0, 3923, 3924, 5, 534, 0, 0, 3924, 3926, 7, 22, 0, 0, 3925, 3920, 1, 0, 0, 0, 3925, 3921, 1, 0, 0, 0, 3925, 3922, 1, 0, 0, 0, 3926, 3928, 1, 0, 0, 0, 3927, 3919, 1, 0, 0, 0, 3927, 3928, 1, 0, 0, 0, 3928, 3936, 1, 0, 0, 0, 3929, 3930, 5, 327, 0, 0, 3930, 3934, 5, 229, 0, 0, 3931, 3935, 5, 124, 0, 0, 3932, 3933, 5, 534, 0, 0, 3933, 3935, 5, 119, 0, 0, 3934, 3931, 1, 0, 0, 0, 3934, 3932, 1, 0, 0, 0, 3935, 3937, 1, 0, 0, 0, 3936, 3929, 1, 0, 0, 0, 3936, 3937, 1, 0, 0, 0, 3937, 3940, 1, 0, 0, 0, 3938, 3939, 5, 171, 0, 0, 3939, 3941, 5, 534, 0, 0, 3940, 3938, 1, 0, 0, 0, 3940, 3941, 1, 0, 0, 0, 3941, 3948, 1, 0, 0, 0, 3942, 3946, 5, 326, 0, 0, 3943, 3947, 5, 465, 0, 0, 3944, 3945, 5, 534, 0, 0, 3945, 3947, 7, 22, 0, 0, 3946, 3943, 1, 0, 0, 0, 3946, 3944, 1, 0, 0, 0, 3947, 3949, 1, 0, 0, 0, 3948, 3942, 1, 0, 0, 0, 3948, 3949, 1, 0, 0, 0, 3949, 3951, 1, 0, 0, 0, 3950, 3952, 7, 23, 0, 0, 3951, 3950, 1, 0, 0, 0, 3951, 3952, 1, 0, 0, 0, 3952, 127, 1, 0, 0, 0, 3953, 3960, 5, 6, 0, 0, 3954, 3960, 3, 130, 65, 0, 3955, 3956, 3, 130, 65, 0, 3956, 3957, 5, 4, 0, 0, 3957, 3958, 5, 6, 0, 0, 3958, 3960, 1, 0, 0, 0, 3959, 3953, 1, 0, 0, 0, 3959, 3954, 1, 0, 0, 0, 3959, 3955, 1, 0, 0, 0, 3960, 129, 1, 0, 0, 0, 3961, 3966, 3, 422, 211, 0, 3962, 3963, 5, 4, 0, 0, 3963, 3965, 3, 422, 211, 0, 3964, 3962, 1, 0, 0, 0, 3965, 3968, 1, 0, 0, 0, 3966, 3964, 1, 0, 0, 0, 3966, 3967, 1, 0, 0, 0, 3967, 131, 1, 0, 0, 0, 3968, 3966, 1, 0, 0, 0, 3969, 3972, 5, 409, 0, 0, 3970, 3973, 3, 134, 67, 0, 3971, 3973, 3, 136, 68, 0, 3972, 3970, 1, 0, 0, 0, 3972, 3971, 1, 0, 0, 0, 3973, 3981, 1, 0, 0, 0, 3974, 3977, 5, 4, 0, 0, 3975, 3978, 3, 134, 67, 0, 3976, 3978, 3, 136, 68, 0, 3977, 3975, 1, 0, 0, 0, 3977, 3976, 1, 0, 0, 0, 3978, 3980, 1, 0, 0, 0, 3979, 3974, 1, 0, 0, 0, 3980, 3983, 1, 0, 0, 0, 3981, 3979, 1, 0, 0, 0, 3981, 3982, 1, 0, 0, 0, 3982, 4016, 1, 0, 0, 0, 3983, 3981, 1, 0, 0, 0, 3984, 3985, 5, 409, 0, 0, 3985, 3986, 3, 448, 224, 0, 3986, 3987, 5, 28, 0, 0, 3987, 3988, 5, 124, 0, 0, 3988, 3989, 5, 429, 0, 0, 3989, 3990, 5, 485, 0, 0, 3990, 4016, 1, 0, 0, 0, 3991, 3992, 5, 409, 0, 0, 3992, 3995, 5, 351, 0, 0, 3993, 3994, 5, 182, 0, 0, 3994, 3996, 3, 182, 91, 0, 3995, 3993, 1, 0, 0, 0, 3995, 3996, 1, 0, 0, 0, 3996, 3997, 1, 0, 0, 0, 3997, 4016, 3, 316, 158, 0, 3998, 4000, 5, 409, 0, 0, 3999, 4001, 3, 170, 85, 0, 4000, 3999, 1, 0, 0, 0, 4000, 4001, 1, 0, 0, 0, 4001, 4002, 1, 0, 0, 0, 4002, 4013, 5, 455, 0, 0, 4003, 4014, 3, 140, 70, 0, 4004, 4014, 3, 142, 71, 0, 4005, 4006, 3, 140, 70, 0, 4006, 4007, 5, 4, 0, 0, 4007, 4008, 3, 142, 71, 0, 4008, 4014, 1, 0, 0, 0, 4009, 4010, 3, 142, 71, 0, 4010, 4011, 5, 4, 0, 0, 4011, 4012, 3, 140, 70, 0, 4012, 4014, 1, 0, 0, 0, 4013, 4003, 1, 0, 0, 0, 4013, 4004, 1, 0, 0, 0, 4013, 4005, 1, 0, 0, 0, 4013, 4009, 1, 0, 0, 0, 4014, 4016, 1, 0, 0, 0, 4015, 3969, 1, 0, 0, 0, 4015, 3984, 1, 0, 0, 0, 4015, 3991, 1, 0, 0, 0, 4015, 3998, 1, 0, 0, 0, 4016, 133, 1, 0, 0, 0, 4017, 4018, 3, 170, 85, 0, 4018, 4019, 3, 448, 224, 0, 4019, 4022, 5, 503, 0, 0, 4020, 4023, 3, 370, 185, 0, 4021, 4023, 5, 124, 0, 0, 4022, 4020, 1, 0, 0, 0, 4022, 4021, 1, 0, 0, 0, 4023, 135, 1, 0, 0, 0, 4024, 4025, 5, 294, 0, 0, 4025, 4026, 5, 503, 0, 0, 4026, 4070, 3, 370, 185, 0, 4027, 4028, 5, 69, 0, 0, 4028, 4031, 5, 409, 0, 0, 4029, 4031, 5, 70, 0, 0, 4030, 4027, 1, 0, 0, 0, 4030, 4029, 1, 0, 0, 0, 4031, 4034, 1, 0, 0, 0, 4032, 4035, 3, 182, 91, 0, 4033, 4035, 5, 124, 0, 0, 4034, 4032, 1, 0, 0, 0, 4034, 4033, 1, 0, 0, 0, 4035, 4070, 1, 0, 0, 0, 4036, 4039, 5, 294, 0, 0, 4037, 4040, 3, 182, 91, 0, 4038, 4040, 5, 124, 0, 0, 4039, 4037, 1, 0, 0, 0, 4039, 4038, 1, 0, 0, 0, 4040, 4044, 1, 0, 0, 0, 4041, 4042, 5, 75, 0, 0, 4042, 4045, 3, 182, 91, 0, 4043, 4045, 5, 124, 0, 0, 4044, 4041, 1, 0, 0, 0, 4044, 4043, 1, 0, 0, 0, 4044, 4045, 1, 0, 0, 0, 4045, 4070, 1, 0, 0, 0, 4046, 4049, 5, 323, 0, 0, 4047, 4048, 5, 182, 0, 0, 4048, 4050, 3, 190, 95, 0, 4049, 4047, 1, 0, 0, 0, 4049, 4050, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 4057, 5, 503, 0, 0, 4052, 4058, 5, 529, 0, 0, 4053, 4054, 5, 323, 0, 0, 4054, 4055, 5, 2, 0, 0, 4055, 4056, 5, 529, 0, 0, 4056, 4058, 5, 3, 0, 0, 4057, 4052, 1, 0, 0, 0, 4057, 4053, 1, 0, 0, 0, 4058, 4070, 1, 0, 0, 0, 4059, 4060, 5, 252, 0, 0, 4060, 4066, 5, 503, 0, 0, 4061, 4067, 5, 529, 0, 0, 4062, 4063, 5, 323, 0, 0, 4063, 4064, 5, 2, 0, 0, 4064, 4065, 5, 529, 0, 0, 4065, 4067, 5, 3, 0, 0, 4066, 4061, 1, 0, 0, 0, 4066, 4062, 1, 0, 0, 0, 4067, 4070, 1, 0, 0, 0, 4068, 4070, 3, 138, 69, 0, 4069, 4024, 1, 0, 0, 0, 4069, 4030, 1, 0, 0, 0, 4069, 4036, 1, 0, 0, 0, 4069, 4046, 1, 0, 0, 0, 4069, 4059, 1, 0, 0, 0, 4069, 4068, 1, 0, 0, 0, 4070, 137, 1, 0, 0, 0, 4071, 4075, 5, 528, 0, 0, 4072, 4073, 3, 170, 85, 0, 4073, 4074, 5, 5, 0, 0, 4074, 4076, 1, 0, 0, 0, 4075, 4072, 1, 0, 0, 0, 4075, 4076, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4071, 1, 0, 0, 0, 4077, 4078, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4080, 3, 448, 224, 0, 4080, 4083, 5, 503, 0, 0, 4081, 4084, 3, 370, 185, 0, 4082, 4084, 5, 124, 0, 0, 4083, 4081, 1, 0, 0, 0, 4083, 4082, 1, 0, 0, 0, 4084, 4091, 1, 0, 0, 0, 4085, 4086, 5, 527, 0, 0, 4086, 4087, 3, 448, 224, 0, 4087, 4088, 5, 503, 0, 0, 4088, 4089, 3, 370, 185, 0, 4089, 4091, 1, 0, 0, 0, 4090, 4077, 1, 0, 0, 0, 4090, 4085, 1, 0, 0, 0, 4091, 139, 1, 0, 0, 0, 4092, 4093, 5, 361, 0, 0, 4093, 4094, 7, 24, 0, 0, 4094, 141, 1, 0, 0, 0, 4095, 4096, 5, 238, 0, 0, 4096, 4104, 5, 255, 0, 0, 4097, 4098, 5, 361, 0, 0, 4098, 4105, 5, 466, 0, 0, 4099, 4100, 5, 361, 0, 0, 4100, 4105, 5, 83, 0, 0, 4101, 4102, 5, 373, 0, 0, 4102, 4105, 5, 361, 0, 0, 4103, 4105, 5, 406, 0, 0, 4104, 4097, 1, 0, 0, 0, 4104, 4099, 1, 0, 0, 0, 4104, 4101, 1, 0, 0, 0, 4104, 4103, 1, 0, 0, 0, 4105, 143, 1, 0, 0, 0, 4106, 4108, 5, 471, 0, 0, 4107, 4109, 3, 170, 85, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 4110, 1, 0, 0, 0, 4110, 4113, 5, 482, 0, 0, 4111, 4114, 5, 20, 0, 0, 4112, 4114, 3, 448, 224, 0, 4113, 4111, 1, 0, 0, 0, 4113, 4112, 1, 0, 0, 0, 4114, 4120, 1, 0, 0, 0, 4115, 4116, 5, 471, 0, 0, 4116, 4117, 5, 124, 0, 0, 4117, 4118, 5, 429, 0, 0, 4118, 4120, 5, 485, 0, 0, 4119, 4106, 1, 0, 0, 0, 4119, 4115, 1, 0, 0, 0, 4120, 145, 1, 0, 0, 0, 4121, 4122, 5, 436, 0, 0, 4122, 4131, 3, 448, 224, 0, 4123, 4127, 5, 475, 0, 0, 4124, 4125, 3, 448, 224, 0, 4125, 4126, 5, 5, 0, 0, 4126, 4128, 1, 0, 0, 0, 4127, 4124, 1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, 4128, 4129, 1, 0, 0, 0, 4129, 4131, 3, 448, 224, 0, 4130, 4121, 1, 0, 0, 0, 4130, 4123, 1, 0, 0, 0, 4131, 147, 1, 0, 0, 0, 4132, 4139, 5, 475, 0, 0, 4133, 4134, 3, 448, 224, 0, 4134, 4135, 5, 5, 0, 0, 4135, 4137, 1, 0, 0, 0, 4136, 4133, 1, 0, 0, 0, 4136, 4137, 1, 0, 0, 0, 4137, 4138, 1, 0, 0, 0, 4138, 4140, 3, 448, 224, 0, 4139, 4136, 1, 0, 0, 0, 4139, 4140, 1, 0, 0, 0, 4140, 4141, 1, 0, 0, 0, 4141, 4142, 5, 527, 0, 0, 4142, 4143, 3, 448, 224, 0, 4143, 149, 1, 0, 0, 0, 4144, 4145, 5, 461, 0, 0, 4145, 4146, 5, 439, 0, 0, 4146, 4148, 3, 326, 163, 0, 4147, 4149, 3, 406, 203, 0, 4148, 4147, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4151, 1, 0, 0, 0, 4150, 4152, 5, 184, 0, 0, 4151, 4150, 1, 0, 0, 0, 4151, 4152, 1, 0, 0, 0, 4152, 4177, 1, 0, 0, 0, 4153, 4154, 5, 97, 0, 0, 4154, 4155, 5, 230, 0, 0, 4155, 4157, 3, 326, 163, 0, 4156, 4158, 3, 304, 152, 0, 4157, 4156, 1, 0, 0, 0, 4157, 4158, 1, 0, 0, 0, 4158, 4159, 1, 0, 0, 0, 4159, 4171, 5, 187, 0, 0, 4160, 4172, 3, 152, 76, 0, 4161, 4162, 5, 2, 0, 0, 4162, 4163, 5, 404, 0, 0, 4163, 4164, 3, 246, 123, 0, 4164, 4165, 5, 187, 0, 0, 4165, 4167, 3, 152, 76, 0, 4166, 4168, 3, 248, 124, 0, 4167, 4166, 1, 0, 0, 0, 4167, 4168, 1, 0, 0, 0, 4168, 4169, 1, 0, 0, 0, 4169, 4170, 5, 3, 0, 0, 4170, 4172, 1, 0, 0, 0, 4171, 4160, 1, 0, 0, 0, 4171, 4161, 1, 0, 0, 0, 4172, 4174, 1, 0, 0, 0, 4173, 4175, 3, 314, 157, 0, 4174, 4173, 1, 0, 0, 0, 4174, 4175, 1, 0, 0, 0, 4175, 4177, 1, 0, 0, 0, 4176, 4144, 1, 0, 0, 0, 4176, 4153, 1, 0, 0, 0, 4177, 151, 1, 0, 0, 0, 4178, 4181, 5, 527, 0, 0, 4179, 4182, 3, 448, 224, 0, 4180, 4182, 5, 515, 0, 0, 4181, 4179, 1, 0, 0, 0, 4181, 4180, 1, 0, 0, 0, 4182, 4186, 1, 0, 0, 0, 4183, 4184, 5, 2, 0, 0, 4184, 4185, 5, 529, 0, 0, 4185, 4187, 5, 3, 0, 0, 4186, 4183, 1, 0, 0, 0, 4186, 4187, 1, 0, 0, 0, 4187, 153, 1, 0, 0, 0, 4188, 4190, 5, 246, 0, 0, 4189, 4191, 5, 90, 0, 0, 4190, 4189, 1, 0, 0, 0, 4190, 4191, 1, 0, 0, 0, 4191, 4192, 1, 0, 0, 0, 4192, 4197, 5, 534, 0, 0, 4193, 4194, 5, 246, 0, 0, 4194, 4195, 5, 354, 0, 0, 4195, 4197, 7, 25, 0, 0, 4196, 4188, 1, 0, 0, 0, 4196, 4193, 1, 0, 0, 0, 4197, 155, 1, 0, 0, 0, 4198, 4199, 3, 196, 98, 0, 4199, 4200, 5, 191, 0, 0, 4200, 4201, 3, 448, 224, 0, 4201, 4203, 5, 2, 0, 0, 4202, 4204, 3, 316, 158, 0, 4203, 4202, 1, 0, 0, 0, 4203, 4204, 1, 0, 0, 0, 4204, 4205, 1, 0, 0, 0, 4205, 4206, 5, 3, 0, 0, 4206, 4207, 3, 324, 162, 0, 4207, 4218, 1, 0, 0, 0, 4208, 4209, 3, 196, 98, 0, 4209, 4210, 3, 326, 163, 0, 4210, 4211, 5, 20, 0, 0, 4211, 4218, 1, 0, 0, 0, 4212, 4213, 3, 196, 98, 0, 4213, 4215, 3, 326, 163, 0, 4214, 4216, 3, 406, 203, 0, 4215, 4214, 1, 0, 0, 0, 4215, 4216, 1, 0, 0, 0, 4216, 4218, 1, 0, 0, 0, 4217, 4198, 1, 0, 0, 0, 4217, 4208, 1, 0, 0, 0, 4217, 4212, 1, 0, 0, 0, 4218, 157, 1, 0, 0, 0, 4219, 4220, 5, 345, 0, 0, 4220, 4221, 5, 244, 0, 0, 4221, 4232, 3, 304, 152, 0, 4222, 4223, 5, 469, 0, 0, 4223, 4232, 3, 304, 152, 0, 4224, 4225, 5, 183, 0, 0, 4225, 4226, 5, 244, 0, 0, 4226, 4227, 3, 304, 152, 0, 4227, 4228, 5, 368, 0, 0, 4228, 4229, 3, 326, 163, 0, 4229, 4230, 3, 304, 152, 0, 4230, 4232, 1, 0, 0, 0, 4231, 4219, 1, 0, 0, 0, 4231, 4222, 1, 0, 0, 0, 4231, 4224, 1, 0, 0, 0, 4232, 159, 1, 0, 0, 0, 4233, 4235, 5, 446, 0, 0, 4234, 4233, 1, 0, 0, 0, 4234, 4235, 1, 0, 0, 0, 4235, 4236, 1, 0, 0, 0, 4236, 4237, 7, 26, 0, 0, 4237, 4248, 3, 304, 152, 0, 4238, 4240, 5, 446, 0, 0, 4239, 4238, 1, 0, 0, 0, 4239, 4240, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4242, 5, 321, 0, 0, 4242, 4248, 3, 444, 222, 0, 4243, 4244, 7, 26, 0, 0, 4244, 4245, 5, 2, 0, 0, 4245, 4246, 5, 512, 0, 0, 4246, 4248, 5, 3, 0, 0, 4247, 4234, 1, 0, 0, 0, 4247, 4239, 1, 0, 0, 0, 4247, 4243, 1, 0, 0, 0, 4248, 161, 1, 0, 0, 0, 4249, 4251, 5, 32, 0, 0, 4250, 4249, 1, 0, 0, 0, 4250, 4251, 1, 0, 0, 0, 4251, 4252, 1, 0, 0, 0, 4252, 4253, 5, 321, 0, 0, 4253, 4255, 5, 59, 0, 0, 4254, 4256, 7, 27, 0, 0, 4255, 4254, 1, 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4257, 1, 0, 0, 0, 4257, 4258, 3, 164, 82, 0, 4258, 4260, 5, 2, 0, 0, 4259, 4261, 3, 340, 170, 0, 4260, 4259, 1, 0, 0, 0, 4260, 4261, 1, 0, 0, 0, 4261, 4262, 1, 0, 0, 0, 4262, 4263, 5, 3, 0, 0, 4263, 163, 1, 0, 0, 0, 4264, 4265, 5, 2, 0, 0, 4265, 4270, 3, 166, 83, 0, 4266, 4267, 5, 4, 0, 0, 4267, 4269, 3, 166, 83, 0, 4268, 4266, 1, 0, 0, 0, 4269, 4272, 1, 0, 0, 0, 4270, 4268, 1, 0, 0, 0, 4270, 4271, 1, 0, 0, 0, 4271, 4273, 1, 0, 0, 0, 4272, 4270, 1, 0, 0, 0, 4273, 4274, 5, 3, 0, 0, 4274, 165, 1, 0, 0, 0, 4275, 4278, 3, 448, 224, 0, 4276, 4278, 3, 390, 195, 0, 4277, 4275, 1, 0, 0, 0, 4277, 4276, 1, 0, 0, 0, 4278, 167, 1, 0, 0, 0, 4279, 4281, 5, 497, 0, 0, 4280, 4279, 1, 0, 0, 0, 4280, 4281, 1, 0, 0, 0, 4281, 4282, 1, 0, 0, 0, 4282, 4284, 3, 204, 102, 0, 4283, 4280, 1, 0, 0, 0, 4283, 4284, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4286, 5, 110, 0, 0, 4286, 4287, 5, 221, 0, 0, 4287, 4288, 5, 2, 0, 0, 4288, 4293, 5, 529, 0, 0, 4289, 4290, 5, 4, 0, 0, 4290, 4292, 5, 529, 0, 0, 4291, 4289, 1, 0, 0, 0, 4292, 4295, 1, 0, 0, 0, 4293, 4291, 1, 0, 0, 0, 4293, 4294, 1, 0, 0, 0, 4294, 4296, 1, 0, 0, 0, 4295, 4293, 1, 0, 0, 0, 4296, 4297, 5, 3, 0, 0, 4297, 4298, 5, 230, 0, 0, 4298, 4299, 5, 439, 0, 0, 4299, 4301, 3, 448, 224, 0, 4300, 4302, 3, 160, 80, 0, 4301, 4300, 1, 0, 0, 0, 4301, 4302, 1, 0, 0, 0, 4302, 4307, 1, 0, 0, 0, 4303, 4304, 5, 80, 0, 0, 4304, 4305, 5, 447, 0, 0, 4305, 4306, 5, 59, 0, 0, 4306, 4308, 5, 529, 0, 0, 4307, 4303, 1, 0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 4313, 1, 0, 0, 0, 4309, 4310, 5, 258, 0, 0, 4310, 4311, 5, 447, 0, 0, 4311, 4312, 5, 59, 0, 0, 4312, 4314, 5, 529, 0, 0, 4313, 4309, 1, 0, 0, 0, 4313, 4314, 1, 0, 0, 0, 4314, 4318, 1, 0, 0, 0, 4315, 4316, 5, 185, 0, 0, 4316, 4317, 5, 28, 0, 0, 4317, 4319, 3, 182, 91, 0, 4318, 4315, 1, 0, 0, 0, 4318, 4319, 1, 0, 0, 0, 4319, 4323, 1, 0, 0, 0, 4320, 4321, 5, 86, 0, 0, 4321, 4322, 5, 28, 0, 0, 4322, 4324, 3, 182, 91, 0, 4323, 4320, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 4326, 1, 0, 0, 0, 4325, 4327, 3, 304, 152, 0, 4326, 4325, 1, 0, 0, 0, 4326, 4327, 1, 0, 0, 0, 4327, 4329, 1, 0, 0, 0, 4328, 4330, 3, 212, 106, 0, 4329, 4328, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, 4332, 1, 0, 0, 0, 4331, 4333, 3, 214, 107, 0, 4332, 4331, 1, 0, 0, 0, 4332, 4333, 1, 0, 0, 0, 4333, 4335, 1, 0, 0, 0, 4334, 4336, 3, 206, 103, 0, 4335, 4334, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4338, 1, 0, 0, 0, 4337, 4339, 3, 248, 124, 0, 4338, 4337, 1, 0, 0, 0, 4338, 4339, 1, 0, 0, 0, 4339, 4341, 1, 0, 0, 0, 4340, 4342, 3, 208, 104, 0, 4341, 4340, 1, 0, 0, 0, 4341, 4342, 1, 0, 0, 0, 4342, 4344, 1, 0, 0, 0, 4343, 4345, 3, 210, 105, 0, 4344, 4343, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 4347, 1, 0, 0, 0, 4346, 4348, 3, 314, 157, 0, 4347, 4346, 1, 0, 0, 0, 4347, 4348, 1, 0, 0, 0, 4348, 4379, 1, 0, 0, 0, 4349, 4351, 5, 497, 0, 0, 4350, 4349, 1, 0, 0, 0, 4350, 4351, 1, 0, 0, 0, 4351, 4352, 1, 0, 0, 0, 4352, 4354, 3, 204, 102, 0, 4353, 4350, 1, 0, 0, 0, 4353, 4354, 1, 0, 0, 0, 4354, 4355, 1, 0, 0, 0, 4355, 4356, 5, 110, 0, 0, 4356, 4357, 5, 187, 0, 0, 4357, 4358, 5, 439, 0, 0, 4358, 4359, 3, 448, 224, 0, 4359, 4360, 5, 230, 0, 0, 4360, 4361, 5, 439, 0, 0, 4361, 4364, 3, 448, 224, 0, 4362, 4363, 5, 321, 0, 0, 4363, 4365, 3, 304, 152, 0, 4364, 4362, 1, 0, 0, 0, 4364, 4365, 1, 0, 0, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4368, 3, 214, 107, 0, 4367, 4366, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4370, 1, 0, 0, 0, 4369, 4371, 3, 248, 124, 0, 4370, 4369, 1, 0, 0, 0, 4370, 4371, 1, 0, 0, 0, 4371, 4373, 1, 0, 0, 0, 4372, 4374, 3, 208, 104, 0, 4373, 4372, 1, 0, 0, 0, 4373, 4374, 1, 0, 0, 0, 4374, 4376, 1, 0, 0, 0, 4375, 4377, 3, 314, 157, 0, 4376, 4375, 1, 0, 0, 0, 4376, 4377, 1, 0, 0, 0, 4377, 4379, 1, 0, 0, 0, 4378, 4283, 1, 0, 0, 0, 4378, 4353, 1, 0, 0, 0, 4379, 169, 1, 0, 0, 0, 4380, 4381, 7, 28, 0, 0, 4381, 171, 1, 0, 0, 0, 4382, 4383, 5, 56, 0, 0, 4383, 4384, 7, 29, 0, 0, 4384, 173, 1, 0, 0, 0, 4385, 4386, 5, 309, 0, 0, 4386, 4393, 5, 269, 0, 0, 4387, 4388, 5, 309, 0, 0, 4388, 4389, 5, 399, 0, 0, 4389, 4393, 3, 176, 88, 0, 4390, 4391, 5, 309, 0, 0, 4391, 4393, 5, 82, 0, 0, 4392, 4385, 1, 0, 0, 0, 4392, 4387, 1, 0, 0, 0, 4392, 4390, 1, 0, 0, 0, 4393, 175, 1, 0, 0, 0, 4394, 4395, 5, 160, 0, 0, 4395, 4396, 5, 534, 0, 0, 4396, 4399, 3, 448, 224, 0, 4397, 4398, 5, 425, 0, 0, 4398, 4400, 5, 529, 0, 0, 4399, 4397, 1, 0, 0, 0, 4399, 4400, 1, 0, 0, 0, 4400, 177, 1, 0, 0, 0, 4401, 4402, 7, 30, 0, 0, 4402, 179, 1, 0, 0, 0, 4403, 4406, 3, 448, 224, 0, 4404, 4406, 3, 390, 195, 0, 4405, 4403, 1, 0, 0, 0, 4405, 4404, 1, 0, 0, 0, 4406, 181, 1, 0, 0, 0, 4407, 4410, 3, 448, 224, 0, 4408, 4410, 5, 529, 0, 0, 4409, 4407, 1, 0, 0, 0, 4409, 4408, 1, 0, 0, 0, 4410, 183, 1, 0, 0, 0, 4411, 4415, 3, 448, 224, 0, 4412, 4415, 5, 529, 0, 0, 4413, 4415, 5, 512, 0, 0, 4414, 4411, 1, 0, 0, 0, 4414, 4412, 1, 0, 0, 0, 4414, 4413, 1, 0, 0, 0, 4415, 185, 1, 0, 0, 0, 4416, 4421, 3, 188, 94, 0, 4417, 4418, 5, 5, 0, 0, 4418, 4420, 3, 188, 94, 0, 4419, 4417, 1, 0, 0, 0, 4420, 4423, 1, 0, 0, 0, 4421, 4419, 1, 0, 0, 0, 4421, 4422, 1, 0, 0, 0, 4422, 187, 1, 0, 0, 0, 4423, 4421, 1, 0, 0, 0, 4424, 4427, 3, 182, 91, 0, 4425, 4427, 5, 512, 0, 0, 4426, 4424, 1, 0, 0, 0, 4426, 4425, 1, 0, 0, 0, 4427, 189, 1, 0, 0, 0, 4428, 4437, 3, 182, 91, 0, 4429, 4435, 5, 527, 0, 0, 4430, 4436, 3, 182, 91, 0, 4431, 4432, 5, 2, 0, 0, 4432, 4433, 3, 182, 91, 0, 4433, 4434, 5, 3, 0, 0, 4434, 4436, 1, 0, 0, 0, 4435, 4430, 1, 0, 0, 0, 4435, 4431, 1, 0, 0, 0, 4436, 4438, 1, 0, 0, 0, 4437, 4429, 1, 0, 0, 0, 4437, 4438, 1, 0, 0, 0, 4438, 191, 1, 0, 0, 0, 4439, 4446, 3, 190, 95, 0, 4440, 4441, 5, 213, 0, 0, 4441, 4443, 5, 59, 0, 0, 4442, 4444, 5, 323, 0, 0, 4443, 4442, 1, 0, 0, 0, 4443, 4444, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 4447, 5, 529, 0, 0, 4446, 4440, 1, 0, 0, 0, 4446, 4447, 1, 0, 0, 0, 4447, 193, 1, 0, 0, 0, 4448, 4450, 3, 196, 98, 0, 4449, 4451, 3, 198, 99, 0, 4450, 4449, 1, 0, 0, 0, 4450, 4451, 1, 0, 0, 0, 4451, 4453, 1, 0, 0, 0, 4452, 4454, 7, 31, 0, 0, 4453, 4452, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4456, 1, 0, 0, 0, 4455, 4457, 5, 339, 0, 0, 4456, 4455, 1, 0, 0, 0, 4456, 4457, 1, 0, 0, 0, 4457, 195, 1, 0, 0, 0, 4458, 4459, 7, 32, 0, 0, 4459, 197, 1, 0, 0, 0, 4460, 4461, 7, 33, 0, 0, 4461, 199, 1, 0, 0, 0, 4462, 4463, 5, 336, 0, 0, 4463, 4464, 5, 376, 0, 0, 4464, 4465, 3, 202, 101, 0, 4465, 201, 1, 0, 0, 0, 4466, 4467, 5, 145, 0, 0, 4467, 4471, 3, 228, 114, 0, 4468, 4469, 5, 337, 0, 0, 4469, 4471, 5, 529, 0, 0, 4470, 4466, 1, 0, 0, 0, 4470, 4468, 1, 0, 0, 0, 4471, 203, 1, 0, 0, 0, 4472, 4473, 7, 18, 0, 0, 4473, 205, 1, 0, 0, 0, 4474, 4475, 5, 343, 0, 0, 4475, 4476, 5, 177, 0, 0, 4476, 4477, 3, 370, 185, 0, 4477, 207, 1, 0, 0, 0, 4478, 4479, 5, 126, 0, 0, 4479, 4480, 5, 309, 0, 0, 4480, 4481, 3, 370, 185, 0, 4481, 209, 1, 0, 0, 0, 4482, 4483, 5, 314, 0, 0, 4483, 4484, 5, 59, 0, 0, 4484, 4485, 3, 448, 224, 0, 4485, 211, 1, 0, 0, 0, 4486, 4487, 5, 80, 0, 0, 4487, 4488, 5, 187, 0, 0, 4488, 4489, 5, 328, 0, 0, 4489, 4490, 5, 28, 0, 0, 4490, 4491, 3, 304, 152, 0, 4491, 213, 1, 0, 0, 0, 4492, 4493, 5, 409, 0, 0, 4493, 4494, 5, 2, 0, 0, 4494, 4499, 3, 216, 108, 0, 4495, 4496, 5, 4, 0, 0, 4496, 4498, 3, 216, 108, 0, 4497, 4495, 1, 0, 0, 0, 4498, 4501, 1, 0, 0, 0, 4499, 4497, 1, 0, 0, 0, 4499, 4500, 1, 0, 0, 0, 4500, 4502, 1, 0, 0, 0, 4501, 4499, 1, 0, 0, 0, 4502, 4503, 5, 3, 0, 0, 4503, 215, 1, 0, 0, 0, 4504, 4505, 3, 448, 224, 0, 4505, 4506, 5, 503, 0, 0, 4506, 4507, 3, 370, 185, 0, 4507, 217, 1, 0, 0, 0, 4508, 4537, 3, 220, 110, 0, 4509, 4510, 5, 497, 0, 0, 4510, 4511, 5, 397, 0, 0, 4511, 4512, 5, 2, 0, 0, 4512, 4513, 3, 316, 158, 0, 4513, 4514, 5, 3, 0, 0, 4514, 4537, 1, 0, 0, 0, 4515, 4516, 5, 497, 0, 0, 4516, 4517, 5, 204, 0, 0, 4517, 4518, 5, 2, 0, 0, 4518, 4519, 3, 316, 158, 0, 4519, 4520, 5, 3, 0, 0, 4520, 4537, 1, 0, 0, 0, 4521, 4522, 5, 497, 0, 0, 4522, 4523, 5, 262, 0, 0, 4523, 4524, 5, 2, 0, 0, 4524, 4525, 3, 316, 158, 0, 4525, 4526, 5, 3, 0, 0, 4526, 4537, 1, 0, 0, 0, 4527, 4528, 5, 497, 0, 0, 4528, 4529, 5, 54, 0, 0, 4529, 4534, 3, 182, 91, 0, 4530, 4531, 5, 2, 0, 0, 4531, 4532, 3, 316, 158, 0, 4532, 4533, 5, 3, 0, 0, 4533, 4535, 1, 0, 0, 0, 4534, 4530, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 4537, 1, 0, 0, 0, 4536, 4508, 1, 0, 0, 0, 4536, 4509, 1, 0, 0, 0, 4536, 4515, 1, 0, 0, 0, 4536, 4521, 1, 0, 0, 0, 4536, 4527, 1, 0, 0, 0, 4537, 219, 1, 0, 0, 0, 4538, 4539, 5, 497, 0, 0, 4539, 4540, 5, 380, 0, 0, 4540, 4545, 3, 182, 91, 0, 4541, 4542, 5, 2, 0, 0, 4542, 4543, 3, 316, 158, 0, 4543, 4544, 5, 3, 0, 0, 4544, 4546, 1, 0, 0, 0, 4545, 4541, 1, 0, 0, 0, 4545, 4546, 1, 0, 0, 0, 4546, 221, 1, 0, 0, 0, 4547, 4549, 5, 110, 0, 0, 4548, 4550, 5, 262, 0, 0, 4549, 4548, 1, 0, 0, 0, 4549, 4550, 1, 0, 0, 0, 4550, 4551, 1, 0, 0, 0, 4551, 4552, 5, 221, 0, 0, 4552, 4553, 5, 529, 0, 0, 4553, 4554, 5, 230, 0, 0, 4554, 4555, 5, 439, 0, 0, 4555, 4558, 3, 326, 163, 0, 4556, 4557, 5, 321, 0, 0, 4557, 4559, 3, 304, 152, 0, 4558, 4556, 1, 0, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4564, 1, 0, 0, 0, 4560, 4561, 5, 80, 0, 0, 4561, 4562, 5, 447, 0, 0, 4562, 4563, 5, 59, 0, 0, 4563, 4565, 5, 529, 0, 0, 4564, 4560, 1, 0, 0, 0, 4564, 4565, 1, 0, 0, 0, 4565, 4570, 1, 0, 0, 0, 4566, 4567, 5, 258, 0, 0, 4567, 4568, 5, 447, 0, 0, 4568, 4569, 5, 59, 0, 0, 4569, 4571, 5, 529, 0, 0, 4570, 4566, 1, 0, 0, 0, 4570, 4571, 1, 0, 0, 0, 4571, 4573, 1, 0, 0, 0, 4572, 4574, 3, 224, 112, 0, 4573, 4572, 1, 0, 0, 0, 4573, 4574, 1, 0, 0, 0, 4574, 4576, 1, 0, 0, 0, 4575, 4577, 3, 304, 152, 0, 4576, 4575, 1, 0, 0, 0, 4576, 4577, 1, 0, 0, 0, 4577, 4579, 1, 0, 0, 0, 4578, 4580, 3, 214, 107, 0, 4579, 4578, 1, 0, 0, 0, 4579, 4580, 1, 0, 0, 0, 4580, 4582, 1, 0, 0, 0, 4581, 4583, 3, 314, 157, 0, 4582, 4581, 1, 0, 0, 0, 4582, 4583, 1, 0, 0, 0, 4583, 223, 1, 0, 0, 0, 4584, 4585, 5, 215, 0, 0, 4585, 4586, 5, 534, 0, 0, 4586, 4591, 5, 258, 0, 0, 4587, 4588, 5, 215, 0, 0, 4588, 4589, 5, 534, 0, 0, 4589, 4591, 5, 396, 0, 0, 4590, 4584, 1, 0, 0, 0, 4590, 4587, 1, 0, 0, 0, 4591, 225, 1, 0, 0, 0, 4592, 4593, 5, 230, 0, 0, 4593, 4594, 5, 316, 0, 0, 4594, 4598, 3, 408, 204, 0, 4595, 4596, 5, 185, 0, 0, 4596, 4597, 5, 28, 0, 0, 4597, 4599, 3, 448, 224, 0, 4598, 4595, 1, 0, 0, 0, 4598, 4599, 1, 0, 0, 0, 4599, 4601, 1, 0, 0, 0, 4600, 4602, 3, 314, 157, 0, 4601, 4600, 1, 0, 0, 0, 4601, 4602, 1, 0, 0, 0, 4602, 227, 1, 0, 0, 0, 4603, 4605, 3, 238, 119, 0, 4604, 4603, 1, 0, 0, 0, 4604, 4605, 1, 0, 0, 0, 4605, 4606, 1, 0, 0, 0, 4606, 4607, 3, 230, 115, 0, 4607, 4608, 3, 290, 145, 0, 4608, 229, 1, 0, 0, 0, 4609, 4610, 6, 115, -1, 0, 4610, 4611, 3, 234, 117, 0, 4611, 4626, 1, 0, 0, 0, 4612, 4613, 10, 2, 0, 0, 4613, 4615, 5, 228, 0, 0, 4614, 4616, 3, 232, 116, 0, 4615, 4614, 1, 0, 0, 0, 4615, 4616, 1, 0, 0, 0, 4616, 4617, 1, 0, 0, 0, 4617, 4625, 3, 230, 115, 3, 4618, 4619, 10, 1, 0, 0, 4619, 4621, 7, 34, 0, 0, 4620, 4622, 3, 232, 116, 0, 4621, 4620, 1, 0, 0, 0, 4621, 4622, 1, 0, 0, 0, 4622, 4623, 1, 0, 0, 0, 4623, 4625, 3, 230, 115, 2, 4624, 4612, 1, 0, 0, 0, 4624, 4618, 1, 0, 0, 0, 4625, 4628, 1, 0, 0, 0, 4626, 4624, 1, 0, 0, 0, 4626, 4627, 1, 0, 0, 0, 4627, 231, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4629, 4630, 7, 35, 0, 0, 4630, 233, 1, 0, 0, 0, 4631, 4638, 3, 236, 118, 0, 4632, 4633, 5, 2, 0, 0, 4633, 4634, 3, 228, 114, 0, 4634, 4635, 5, 3, 0, 0, 4635, 4638, 1, 0, 0, 0, 4636, 4638, 3, 364, 182, 0, 4637, 4631, 1, 0, 0, 0, 4637, 4632, 1, 0, 0, 0, 4637, 4636, 1, 0, 0, 0, 4638, 235, 1, 0, 0, 0, 4639, 4641, 3, 244, 122, 0, 4640, 4642, 3, 252, 126, 0, 4641, 4640, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4644, 1, 0, 0, 0, 4643, 4645, 3, 250, 125, 0, 4644, 4643, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4647, 1, 0, 0, 0, 4646, 4648, 3, 248, 124, 0, 4647, 4646, 1, 0, 0, 0, 4647, 4648, 1, 0, 0, 0, 4648, 4650, 1, 0, 0, 0, 4649, 4651, 3, 268, 134, 0, 4650, 4649, 1, 0, 0, 0, 4650, 4651, 1, 0, 0, 0, 4651, 4653, 1, 0, 0, 0, 4652, 4654, 3, 274, 137, 0, 4653, 4652, 1, 0, 0, 0, 4653, 4654, 1, 0, 0, 0, 4654, 4656, 1, 0, 0, 0, 4655, 4657, 3, 276, 138, 0, 4656, 4655, 1, 0, 0, 0, 4656, 4657, 1, 0, 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4659, 4, 118, 2, 0, 4659, 4660, 3, 290, 145, 0, 4660, 237, 1, 0, 0, 0, 4661, 4662, 5, 497, 0, 0, 4662, 4667, 3, 240, 120, 0, 4663, 4664, 5, 4, 0, 0, 4664, 4666, 3, 240, 120, 0, 4665, 4663, 1, 0, 0, 0, 4666, 4669, 1, 0, 0, 0, 4667, 4665, 1, 0, 0, 0, 4667, 4668, 1, 0, 0, 0, 4668, 239, 1, 0, 0, 0, 4669, 4667, 1, 0, 0, 0, 4670, 4672, 3, 448, 224, 0, 4671, 4673, 3, 242, 121, 0, 4672, 4671, 1, 0, 0, 0, 4672, 4673, 1, 0, 0, 0, 4673, 4674, 1, 0, 0, 0, 4674, 4675, 5, 28, 0, 0, 4675, 4676, 5, 2, 0, 0, 4676, 4677, 3, 228, 114, 0, 4677, 4678, 5, 3, 0, 0, 4678, 241, 1, 0, 0, 0, 4679, 4680, 5, 2, 0, 0, 4680, 4685, 3, 448, 224, 0, 4681, 4682, 5, 4, 0, 0, 4682, 4684, 3, 448, 224, 0, 4683, 4681, 1, 0, 0, 0, 4684, 4687, 1, 0, 0, 0, 4685, 4683, 1, 0, 0, 0, 4685, 4686, 1, 0, 0, 0, 4686, 4688, 1, 0, 0, 0, 4687, 4685, 1, 0, 0, 0, 4688, 4689, 5, 3, 0, 0, 4689, 243, 1, 0, 0, 0, 4690, 4692, 5, 404, 0, 0, 4691, 4693, 7, 35, 0, 0, 4692, 4691, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4694, 1, 0, 0, 0, 4694, 4695, 3, 246, 123, 0, 4695, 245, 1, 0, 0, 0, 4696, 4697, 3, 368, 184, 0, 4697, 247, 1, 0, 0, 0, 4698, 4699, 5, 495, 0, 0, 4699, 4700, 3, 374, 187, 0, 4700, 249, 1, 0, 0, 0, 4701, 4702, 5, 187, 0, 0, 4702, 4703, 3, 258, 129, 0, 4703, 251, 1, 0, 0, 0, 4704, 4706, 3, 254, 127, 0, 4705, 4704, 1, 0, 0, 0, 4705, 4706, 1, 0, 0, 0, 4706, 4707, 1, 0, 0, 0, 4707, 4710, 5, 230, 0, 0, 4708, 4711, 3, 256, 128, 0, 4709, 4711, 3, 448, 224, 0, 4710, 4708, 1, 0, 0, 0, 4710, 4709, 1, 0, 0, 0, 4711, 4719, 1, 0, 0, 0, 4712, 4715, 5, 4, 0, 0, 4713, 4716, 3, 256, 128, 0, 4714, 4716, 3, 448, 224, 0, 4715, 4713, 1, 0, 0, 0, 4715, 4714, 1, 0, 0, 0, 4716, 4718, 1, 0, 0, 0, 4717, 4712, 1, 0, 0, 0, 4718, 4721, 1, 0, 0, 0, 4719, 4717, 1, 0, 0, 0, 4719, 4720, 1, 0, 0, 0, 4720, 253, 1, 0, 0, 0, 4721, 4719, 1, 0, 0, 0, 4722, 4723, 5, 58, 0, 0, 4723, 4724, 5, 77, 0, 0, 4724, 255, 1, 0, 0, 0, 4725, 4726, 3, 448, 224, 0, 4726, 4727, 5, 2, 0, 0, 4727, 4728, 5, 534, 0, 0, 4728, 4729, 5, 3, 0, 0, 4729, 257, 1, 0, 0, 0, 4730, 4735, 3, 260, 130, 0, 4731, 4732, 5, 4, 0, 0, 4732, 4734, 3, 260, 130, 0, 4733, 4731, 1, 0, 0, 0, 4734, 4737, 1, 0, 0, 0, 4735, 4733, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 259, 1, 0, 0, 0, 4737, 4735, 1, 0, 0, 0, 4738, 4742, 3, 310, 155, 0, 4739, 4741, 3, 262, 131, 0, 4740, 4739, 1, 0, 0, 0, 4741, 4744, 1, 0, 0, 0, 4742, 4740, 1, 0, 0, 0, 4742, 4743, 1, 0, 0, 0, 4743, 261, 1, 0, 0, 0, 4744, 4742, 1, 0, 0, 0, 4745, 4746, 3, 300, 150, 0, 4746, 4748, 5, 241, 0, 0, 4747, 4749, 3, 264, 132, 0, 4748, 4747, 1, 0, 0, 0, 4748, 4749, 1, 0, 0, 0, 4749, 4750, 1, 0, 0, 0, 4750, 4752, 3, 310, 155, 0, 4751, 4753, 3, 302, 151, 0, 4752, 4751, 1, 0, 0, 0, 4752, 4753, 1, 0, 0, 0, 4753, 263, 1, 0, 0, 0, 4754, 4755, 5, 7, 0, 0, 4755, 4756, 3, 448, 224, 0, 4756, 4757, 5, 8, 0, 0, 4757, 4763, 1, 0, 0, 0, 4758, 4759, 5, 524, 0, 0, 4759, 4760, 3, 448, 224, 0, 4760, 4761, 5, 525, 0, 0, 4761, 4763, 1, 0, 0, 0, 4762, 4754, 1, 0, 0, 0, 4762, 4758, 1, 0, 0, 0, 4763, 265, 1, 0, 0, 0, 4764, 4765, 5, 7, 0, 0, 4765, 4770, 3, 448, 224, 0, 4766, 4767, 5, 4, 0, 0, 4767, 4769, 3, 448, 224, 0, 4768, 4766, 1, 0, 0, 0, 4769, 4772, 1, 0, 0, 0, 4770, 4768, 1, 0, 0, 0, 4770, 4771, 1, 0, 0, 0, 4771, 4773, 1, 0, 0, 0, 4772, 4770, 1, 0, 0, 0, 4773, 4774, 5, 8, 0, 0, 4774, 4787, 1, 0, 0, 0, 4775, 4776, 5, 524, 0, 0, 4776, 4781, 3, 448, 224, 0, 4777, 4778, 5, 4, 0, 0, 4778, 4780, 3, 448, 224, 0, 4779, 4777, 1, 0, 0, 0, 4780, 4783, 1, 0, 0, 0, 4781, 4779, 1, 0, 0, 0, 4781, 4782, 1, 0, 0, 0, 4782, 4784, 1, 0, 0, 0, 4783, 4781, 1, 0, 0, 0, 4784, 4785, 5, 525, 0, 0, 4785, 4787, 1, 0, 0, 0, 4786, 4764, 1, 0, 0, 0, 4786, 4775, 1, 0, 0, 0, 4787, 267, 1, 0, 0, 0, 4788, 4789, 5, 199, 0, 0, 4789, 4790, 5, 59, 0, 0, 4790, 4791, 3, 270, 135, 0, 4791, 269, 1, 0, 0, 0, 4792, 4793, 5, 393, 0, 0, 4793, 4802, 5, 2, 0, 0, 4794, 4799, 3, 370, 185, 0, 4795, 4796, 5, 4, 0, 0, 4796, 4798, 3, 370, 185, 0, 4797, 4795, 1, 0, 0, 0, 4798, 4801, 1, 0, 0, 0, 4799, 4797, 1, 0, 0, 0, 4799, 4800, 1, 0, 0, 0, 4800, 4803, 1, 0, 0, 0, 4801, 4799, 1, 0, 0, 0, 4802, 4794, 1, 0, 0, 0, 4802, 4803, 1, 0, 0, 0, 4803, 4804, 1, 0, 0, 0, 4804, 4840, 5, 3, 0, 0, 4805, 4806, 5, 103, 0, 0, 4806, 4815, 5, 2, 0, 0, 4807, 4812, 3, 370, 185, 0, 4808, 4809, 5, 4, 0, 0, 4809, 4811, 3, 370, 185, 0, 4810, 4808, 1, 0, 0, 0, 4811, 4814, 1, 0, 0, 0, 4812, 4810, 1, 0, 0, 0, 4812, 4813, 1, 0, 0, 0, 4813, 4816, 1, 0, 0, 0, 4814, 4812, 1, 0, 0, 0, 4815, 4807, 1, 0, 0, 0, 4815, 4816, 1, 0, 0, 0, 4816, 4817, 1, 0, 0, 0, 4817, 4840, 5, 3, 0, 0, 4818, 4819, 5, 200, 0, 0, 4819, 4820, 5, 410, 0, 0, 4820, 4821, 5, 2, 0, 0, 4821, 4826, 3, 272, 136, 0, 4822, 4823, 5, 4, 0, 0, 4823, 4825, 3, 272, 136, 0, 4824, 4822, 1, 0, 0, 0, 4825, 4828, 1, 0, 0, 0, 4826, 4824, 1, 0, 0, 0, 4826, 4827, 1, 0, 0, 0, 4827, 4829, 1, 0, 0, 0, 4828, 4826, 1, 0, 0, 0, 4829, 4830, 5, 3, 0, 0, 4830, 4840, 1, 0, 0, 0, 4831, 4836, 3, 370, 185, 0, 4832, 4833, 5, 4, 0, 0, 4833, 4835, 3, 370, 185, 0, 4834, 4832, 1, 0, 0, 0, 4835, 4838, 1, 0, 0, 0, 4836, 4834, 1, 0, 0, 0, 4836, 4837, 1, 0, 0, 0, 4837, 4840, 1, 0, 0, 0, 4838, 4836, 1, 0, 0, 0, 4839, 4792, 1, 0, 0, 0, 4839, 4805, 1, 0, 0, 0, 4839, 4818, 1, 0, 0, 0, 4839, 4831, 1, 0, 0, 0, 4840, 271, 1, 0, 0, 0, 4841, 4850, 5, 2, 0, 0, 4842, 4847, 3, 370, 185, 0, 4843, 4844, 5, 4, 0, 0, 4844, 4846, 3, 370, 185, 0, 4845, 4843, 1, 0, 0, 0, 4846, 4849, 1, 0, 0, 0, 4847, 4845, 1, 0, 0, 0, 4847, 4848, 1, 0, 0, 0, 4848, 4851, 1, 0, 0, 0, 4849, 4847, 1, 0, 0, 0, 4850, 4842, 1, 0, 0, 0, 4850, 4851, 1, 0, 0, 0, 4851, 4852, 1, 0, 0, 0, 4852, 4853, 5, 3, 0, 0, 4853, 273, 1, 0, 0, 0, 4854, 4855, 5, 203, 0, 0, 4855, 4856, 3, 374, 187, 0, 4856, 275, 1, 0, 0, 0, 4857, 4858, 5, 357, 0, 0, 4858, 4859, 3, 374, 187, 0, 4859, 277, 1, 0, 0, 0, 4860, 4867, 3, 280, 140, 0, 4861, 4863, 5, 4, 0, 0, 4862, 4861, 1, 0, 0, 0, 4862, 4863, 1, 0, 0, 0, 4863, 4864, 1, 0, 0, 0, 4864, 4866, 3, 280, 140, 0, 4865, 4862, 1, 0, 0, 0, 4866, 4869, 1, 0, 0, 0, 4867, 4865, 1, 0, 0, 0, 4867, 4868, 1, 0, 0, 0, 4868, 4870, 1, 0, 0, 0, 4869, 4867, 1, 0, 0, 0, 4870, 4871, 5, 525, 0, 0, 4871, 279, 1, 0, 0, 0, 4872, 4886, 3, 448, 224, 0, 4873, 4874, 5, 2, 0, 0, 4874, 4881, 3, 282, 141, 0, 4875, 4877, 5, 4, 0, 0, 4876, 4875, 1, 0, 0, 0, 4876, 4877, 1, 0, 0, 0, 4877, 4878, 1, 0, 0, 0, 4878, 4880, 3, 282, 141, 0, 4879, 4876, 1, 0, 0, 0, 4880, 4883, 1, 0, 0, 0, 4881, 4879, 1, 0, 0, 0, 4881, 4882, 1, 0, 0, 0, 4882, 4884, 1, 0, 0, 0, 4883, 4881, 1, 0, 0, 0, 4884, 4885, 5, 3, 0, 0, 4885, 4887, 1, 0, 0, 0, 4886, 4873, 1, 0, 0, 0, 4886, 4887, 1, 0, 0, 0, 4887, 4903, 1, 0, 0, 0, 4888, 4900, 7, 36, 0, 0, 4889, 4890, 5, 2, 0, 0, 4890, 4895, 3, 326, 163, 0, 4891, 4892, 5, 4, 0, 0, 4892, 4894, 3, 326, 163, 0, 4893, 4891, 1, 0, 0, 0, 4894, 4897, 1, 0, 0, 0, 4895, 4893, 1, 0, 0, 0, 4895, 4896, 1, 0, 0, 0, 4896, 4898, 1, 0, 0, 0, 4897, 4895, 1, 0, 0, 0, 4898, 4899, 5, 3, 0, 0, 4899, 4901, 1, 0, 0, 0, 4900, 4889, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4903, 1, 0, 0, 0, 4902, 4872, 1, 0, 0, 0, 4902, 4888, 1, 0, 0, 0, 4903, 281, 1, 0, 0, 0, 4904, 4910, 3, 182, 91, 0, 4905, 4908, 5, 503, 0, 0, 4906, 4909, 3, 408, 204, 0, 4907, 4909, 3, 448, 224, 0, 4908, 4906, 1, 0, 0, 0, 4908, 4907, 1, 0, 0, 0, 4909, 4911, 1, 0, 0, 0, 4910, 4905, 1, 0, 0, 0, 4910, 4911, 1, 0, 0, 0, 4911, 4914, 1, 0, 0, 0, 4912, 4914, 3, 408, 204, 0, 4913, 4904, 1, 0, 0, 0, 4913, 4912, 1, 0, 0, 0, 4914, 283, 1, 0, 0, 0, 4915, 4916, 3, 326, 163, 0, 4916, 4919, 5, 503, 0, 0, 4917, 4920, 3, 370, 185, 0, 4918, 4920, 5, 124, 0, 0, 4919, 4917, 1, 0, 0, 0, 4919, 4918, 1, 0, 0, 0, 4920, 285, 1, 0, 0, 0, 4921, 4926, 3, 284, 142, 0, 4922, 4923, 5, 4, 0, 0, 4923, 4925, 3, 284, 142, 0, 4924, 4922, 1, 0, 0, 0, 4925, 4928, 1, 0, 0, 0, 4926, 4924, 1, 0, 0, 0, 4926, 4927, 1, 0, 0, 0, 4927, 287, 1, 0, 0, 0, 4928, 4926, 1, 0, 0, 0, 4929, 4930, 5, 250, 0, 0, 4930, 4931, 5, 489, 0, 0, 4931, 4932, 3, 448, 224, 0, 4932, 4941, 5, 2, 0, 0, 4933, 4938, 3, 370, 185, 0, 4934, 4935, 5, 4, 0, 0, 4935, 4937, 3, 370, 185, 0, 4936, 4934, 1, 0, 0, 0, 4937, 4940, 1, 0, 0, 0, 4938, 4936, 1, 0, 0, 0, 4938, 4939, 1, 0, 0, 0, 4939, 4942, 1, 0, 0, 0, 4940, 4938, 1, 0, 0, 0, 4941, 4933, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 4943, 1, 0, 0, 0, 4943, 4944, 5, 3, 0, 0, 4944, 4945, 3, 448, 224, 0, 4945, 4946, 5, 28, 0, 0, 4946, 4951, 3, 448, 224, 0, 4947, 4948, 5, 4, 0, 0, 4948, 4950, 3, 448, 224, 0, 4949, 4947, 1, 0, 0, 0, 4950, 4953, 1, 0, 0, 0, 4951, 4949, 1, 0, 0, 0, 4951, 4952, 1, 0, 0, 0, 4952, 289, 1, 0, 0, 0, 4953, 4951, 1, 0, 0, 0, 4954, 4956, 3, 292, 146, 0, 4955, 4954, 1, 0, 0, 0, 4955, 4956, 1, 0, 0, 0, 4956, 4958, 1, 0, 0, 0, 4957, 4959, 3, 296, 148, 0, 4958, 4957, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 291, 1, 0, 0, 0, 4960, 4961, 5, 314, 0, 0, 4961, 4962, 5, 59, 0, 0, 4962, 4967, 3, 294, 147, 0, 4963, 4964, 5, 4, 0, 0, 4964, 4966, 3, 294, 147, 0, 4965, 4963, 1, 0, 0, 0, 4966, 4969, 1, 0, 0, 0, 4967, 4965, 1, 0, 0, 0, 4967, 4968, 1, 0, 0, 0, 4968, 293, 1, 0, 0, 0, 4969, 4967, 1, 0, 0, 0, 4970, 4972, 3, 370, 185, 0, 4971, 4973, 7, 37, 0, 0, 4972, 4971, 1, 0, 0, 0, 4972, 4973, 1, 0, 0, 0, 4973, 4976, 1, 0, 0, 0, 4974, 4975, 5, 305, 0, 0, 4975, 4977, 7, 38, 0, 0, 4976, 4974, 1, 0, 0, 0, 4976, 4977, 1, 0, 0, 0, 4977, 295, 1, 0, 0, 0, 4978, 4979, 5, 257, 0, 0, 4979, 4989, 5, 534, 0, 0, 4980, 4981, 5, 257, 0, 0, 4981, 4982, 5, 534, 0, 0, 4982, 4983, 5, 308, 0, 0, 4983, 4989, 5, 534, 0, 0, 4984, 4985, 5, 257, 0, 0, 4985, 4986, 5, 534, 0, 0, 4986, 4987, 5, 4, 0, 0, 4987, 4989, 5, 534, 0, 0, 4988, 4978, 1, 0, 0, 0, 4988, 4980, 1, 0, 0, 0, 4988, 4984, 1, 0, 0, 0, 4989, 297, 1, 0, 0, 0, 4990, 4991, 5, 321, 0, 0, 4991, 4992, 5, 59, 0, 0, 4992, 4997, 3, 370, 185, 0, 4993, 4994, 5, 4, 0, 0, 4994, 4996, 3, 370, 185, 0, 4995, 4993, 1, 0, 0, 0, 4996, 4999, 1, 0, 0, 0, 4997, 4995, 1, 0, 0, 0, 4997, 4998, 1, 0, 0, 0, 4998, 299, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 5002, 5, 222, 0, 0, 5001, 5000, 1, 0, 0, 0, 5001, 5002, 1, 0, 0, 0, 5002, 5025, 1, 0, 0, 0, 5003, 5025, 5, 102, 0, 0, 5004, 5006, 5, 253, 0, 0, 5005, 5007, 5, 315, 0, 0, 5006, 5005, 1, 0, 0, 0, 5006, 5007, 1, 0, 0, 0, 5007, 5025, 1, 0, 0, 0, 5008, 5010, 5, 388, 0, 0, 5009, 5011, 5, 315, 0, 0, 5010, 5009, 1, 0, 0, 0, 5010, 5011, 1, 0, 0, 0, 5011, 5025, 1, 0, 0, 0, 5012, 5014, 5, 190, 0, 0, 5013, 5015, 5, 315, 0, 0, 5014, 5013, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5025, 1, 0, 0, 0, 5016, 5017, 5, 253, 0, 0, 5017, 5025, 5, 405, 0, 0, 5018, 5019, 5, 388, 0, 0, 5019, 5025, 5, 405, 0, 0, 5020, 5021, 5, 253, 0, 0, 5021, 5025, 5, 25, 0, 0, 5022, 5023, 5, 388, 0, 0, 5023, 5025, 5, 25, 0, 0, 5024, 5001, 1, 0, 0, 0, 5024, 5003, 1, 0, 0, 0, 5024, 5004, 1, 0, 0, 0, 5024, 5008, 1, 0, 0, 0, 5024, 5012, 1, 0, 0, 0, 5024, 5016, 1, 0, 0, 0, 5024, 5018, 1, 0, 0, 0, 5024, 5020, 1, 0, 0, 0, 5024, 5022, 1, 0, 0, 0, 5025, 301, 1, 0, 0, 0, 5026, 5027, 5, 309, 0, 0, 5027, 5031, 3, 374, 187, 0, 5028, 5029, 5, 478, 0, 0, 5029, 5031, 3, 304, 152, 0, 5030, 5026, 1, 0, 0, 0, 5030, 5028, 1, 0, 0, 0, 5031, 303, 1, 0, 0, 0, 5032, 5033, 5, 2, 0, 0, 5033, 5034, 3, 306, 153, 0, 5034, 5035, 5, 3, 0, 0, 5035, 305, 1, 0, 0, 0, 5036, 5041, 3, 444, 222, 0, 5037, 5038, 5, 4, 0, 0, 5038, 5040, 3, 444, 222, 0, 5039, 5037, 1, 0, 0, 0, 5040, 5043, 1, 0, 0, 0, 5041, 5039, 1, 0, 0, 0, 5041, 5042, 1, 0, 0, 0, 5042, 307, 1, 0, 0, 0, 5043, 5041, 1, 0, 0, 0, 5044, 5045, 5, 527, 0, 0, 5045, 5046, 3, 448, 224, 0, 5046, 5048, 5, 2, 0, 0, 5047, 5049, 3, 316, 158, 0, 5048, 5047, 1, 0, 0, 0, 5048, 5049, 1, 0, 0, 0, 5049, 5050, 1, 0, 0, 0, 5050, 5051, 5, 3, 0, 0, 5051, 309, 1, 0, 0, 0, 5052, 5054, 3, 326, 163, 0, 5053, 5055, 3, 308, 154, 0, 5054, 5053, 1, 0, 0, 0, 5054, 5055, 1, 0, 0, 0, 5055, 5057, 1, 0, 0, 0, 5056, 5058, 3, 312, 156, 0, 5057, 5056, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, 5060, 1, 0, 0, 0, 5059, 5061, 3, 442, 221, 0, 5060, 5059, 1, 0, 0, 0, 5060, 5061, 1, 0, 0, 0, 5061, 5063, 1, 0, 0, 0, 5062, 5064, 3, 406, 203, 0, 5063, 5062, 1, 0, 0, 0, 5063, 5064, 1, 0, 0, 0, 5064, 5066, 1, 0, 0, 0, 5065, 5067, 3, 362, 181, 0, 5066, 5065, 1, 0, 0, 0, 5066, 5067, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5070, 3, 324, 162, 0, 5069, 5071, 3, 438, 219, 0, 5070, 5069, 1, 0, 0, 0, 5070, 5071, 1, 0, 0, 0, 5071, 5073, 1, 0, 0, 0, 5072, 5074, 3, 266, 133, 0, 5073, 5072, 1, 0, 0, 0, 5073, 5074, 1, 0, 0, 0, 5074, 5078, 1, 0, 0, 0, 5075, 5077, 3, 288, 144, 0, 5076, 5075, 1, 0, 0, 0, 5077, 5080, 1, 0, 0, 0, 5078, 5076, 1, 0, 0, 0, 5078, 5079, 1, 0, 0, 0, 5079, 5104, 1, 0, 0, 0, 5080, 5078, 1, 0, 0, 0, 5081, 5082, 5, 2, 0, 0, 5082, 5083, 3, 228, 114, 0, 5083, 5084, 5, 3, 0, 0, 5084, 5088, 3, 324, 162, 0, 5085, 5087, 3, 288, 144, 0, 5086, 5085, 1, 0, 0, 0, 5087, 5090, 1, 0, 0, 0, 5088, 5086, 1, 0, 0, 0, 5088, 5089, 1, 0, 0, 0, 5089, 5104, 1, 0, 0, 0, 5090, 5088, 1, 0, 0, 0, 5091, 5092, 3, 448, 224, 0, 5092, 5094, 5, 2, 0, 0, 5093, 5095, 3, 316, 158, 0, 5094, 5093, 1, 0, 0, 0, 5094, 5095, 1, 0, 0, 0, 5095, 5096, 1, 0, 0, 0, 5096, 5097, 5, 3, 0, 0, 5097, 5098, 3, 324, 162, 0, 5098, 5104, 1, 0, 0, 0, 5099, 5100, 5, 2, 0, 0, 5100, 5101, 3, 258, 129, 0, 5101, 5102, 5, 3, 0, 0, 5102, 5104, 1, 0, 0, 0, 5103, 5052, 1, 0, 0, 0, 5103, 5081, 1, 0, 0, 0, 5103, 5091, 1, 0, 0, 0, 5103, 5099, 1, 0, 0, 0, 5104, 311, 1, 0, 0, 0, 5105, 5106, 5, 219, 0, 0, 5106, 5107, 3, 448, 224, 0, 5107, 313, 1, 0, 0, 0, 5108, 5109, 5, 350, 0, 0, 5109, 5110, 5, 2, 0, 0, 5110, 5111, 3, 316, 158, 0, 5111, 5112, 5, 3, 0, 0, 5112, 315, 1, 0, 0, 0, 5113, 5118, 3, 318, 159, 0, 5114, 5115, 5, 4, 0, 0, 5115, 5117, 3, 318, 159, 0, 5116, 5114, 1, 0, 0, 0, 5117, 5120, 1, 0, 0, 0, 5118, 5116, 1, 0, 0, 0, 5118, 5119, 1, 0, 0, 0, 5119, 317, 1, 0, 0, 0, 5120, 5118, 1, 0, 0, 0, 5121, 5122, 3, 320, 160, 0, 5122, 5123, 5, 503, 0, 0, 5123, 5124, 3, 322, 161, 0, 5124, 319, 1, 0, 0, 0, 5125, 5128, 3, 448, 224, 0, 5126, 5128, 3, 408, 204, 0, 5127, 5125, 1, 0, 0, 0, 5127, 5126, 1, 0, 0, 0, 5128, 321, 1, 0, 0, 0, 5129, 5132, 3, 448, 224, 0, 5130, 5132, 3, 408, 204, 0, 5131, 5129, 1, 0, 0, 0, 5131, 5130, 1, 0, 0, 0, 5132, 323, 1, 0, 0, 0, 5133, 5135, 5, 28, 0, 0, 5134, 5133, 1, 0, 0, 0, 5134, 5135, 1, 0, 0, 0, 5135, 5136, 1, 0, 0, 0, 5136, 5138, 3, 450, 225, 0, 5137, 5139, 3, 304, 152, 0, 5138, 5137, 1, 0, 0, 0, 5138, 5139, 1, 0, 0, 0, 5139, 5141, 1, 0, 0, 0, 5140, 5134, 1, 0, 0, 0, 5140, 5141, 1, 0, 0, 0, 5141, 325, 1, 0, 0, 0, 5142, 5147, 3, 444, 222, 0, 5143, 5144, 5, 5, 0, 0, 5144, 5146, 3, 444, 222, 0, 5145, 5143, 1, 0, 0, 0, 5146, 5149, 1, 0, 0, 0, 5147, 5145, 1, 0, 0, 0, 5147, 5148, 1, 0, 0, 0, 5148, 327, 1, 0, 0, 0, 5149, 5147, 1, 0, 0, 0, 5150, 5155, 3, 330, 165, 0, 5151, 5152, 5, 4, 0, 0, 5152, 5154, 3, 330, 165, 0, 5153, 5151, 1, 0, 0, 0, 5154, 5157, 1, 0, 0, 0, 5155, 5153, 1, 0, 0, 0, 5155, 5156, 1, 0, 0, 0, 5156, 329, 1, 0, 0, 0, 5157, 5155, 1, 0, 0, 0, 5158, 5161, 3, 448, 224, 0, 5159, 5160, 5, 81, 0, 0, 5160, 5162, 5, 529, 0, 0, 5161, 5159, 1, 0, 0, 0, 5161, 5162, 1, 0, 0, 0, 5162, 331, 1, 0, 0, 0, 5163, 5168, 3, 334, 167, 0, 5164, 5165, 5, 4, 0, 0, 5165, 5167, 3, 334, 167, 0, 5166, 5164, 1, 0, 0, 0, 5167, 5170, 1, 0, 0, 0, 5168, 5166, 1, 0, 0, 0, 5168, 5169, 1, 0, 0, 0, 5169, 333, 1, 0, 0, 0, 5170, 5168, 1, 0, 0, 0, 5171, 5172, 3, 448, 224, 0, 5172, 5174, 3, 422, 211, 0, 5173, 5175, 5, 244, 0, 0, 5174, 5173, 1, 0, 0, 0, 5174, 5175, 1, 0, 0, 0, 5175, 5177, 1, 0, 0, 0, 5176, 5178, 3, 360, 180, 0, 5177, 5176, 1, 0, 0, 0, 5177, 5178, 1, 0, 0, 0, 5178, 5188, 1, 0, 0, 0, 5179, 5180, 5, 193, 0, 0, 5180, 5182, 5, 34, 0, 0, 5181, 5179, 1, 0, 0, 0, 5181, 5182, 1, 0, 0, 0, 5182, 5183, 1, 0, 0, 0, 5183, 5184, 5, 28, 0, 0, 5184, 5185, 5, 2, 0, 0, 5185, 5186, 3, 370, 185, 0, 5186, 5187, 5, 3, 0, 0, 5187, 5189, 1, 0, 0, 0, 5188, 5181, 1, 0, 0, 0, 5188, 5189, 1, 0, 0, 0, 5189, 5194, 1, 0, 0, 0, 5190, 5192, 5, 303, 0, 0, 5191, 5190, 1, 0, 0, 0, 5191, 5192, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5195, 5, 304, 0, 0, 5194, 5191, 1, 0, 0, 0, 5194, 5195, 1, 0, 0, 0, 5195, 5203, 1, 0, 0, 0, 5196, 5201, 5, 33, 0, 0, 5197, 5198, 5, 2, 0, 0, 5198, 5199, 3, 454, 227, 0, 5199, 5200, 5, 3, 0, 0, 5200, 5202, 1, 0, 0, 0, 5201, 5197, 1, 0, 0, 0, 5201, 5202, 1, 0, 0, 0, 5202, 5204, 1, 0, 0, 0, 5203, 5196, 1, 0, 0, 0, 5203, 5204, 1, 0, 0, 0, 5204, 5229, 1, 0, 0, 0, 5205, 5227, 5, 124, 0, 0, 5206, 5228, 5, 304, 0, 0, 5207, 5209, 5, 511, 0, 0, 5208, 5207, 1, 0, 0, 0, 5208, 5209, 1, 0, 0, 0, 5209, 5210, 1, 0, 0, 0, 5210, 5228, 5, 534, 0, 0, 5211, 5213, 5, 511, 0, 0, 5212, 5211, 1, 0, 0, 0, 5212, 5213, 1, 0, 0, 0, 5213, 5214, 1, 0, 0, 0, 5214, 5228, 5, 536, 0, 0, 5215, 5228, 5, 334, 0, 0, 5216, 5228, 5, 148, 0, 0, 5217, 5228, 5, 47, 0, 0, 5218, 5228, 5, 529, 0, 0, 5219, 5228, 5, 106, 0, 0, 5220, 5225, 5, 108, 0, 0, 5221, 5222, 5, 2, 0, 0, 5222, 5223, 3, 454, 227, 0, 5223, 5224, 5, 3, 0, 0, 5224, 5226, 1, 0, 0, 0, 5225, 5221, 1, 0, 0, 0, 5225, 5226, 1, 0, 0, 0, 5226, 5228, 1, 0, 0, 0, 5227, 5206, 1, 0, 0, 0, 5227, 5208, 1, 0, 0, 0, 5227, 5212, 1, 0, 0, 0, 5227, 5215, 1, 0, 0, 0, 5227, 5216, 1, 0, 0, 0, 5227, 5217, 1, 0, 0, 0, 5227, 5218, 1, 0, 0, 0, 5227, 5219, 1, 0, 0, 0, 5227, 5220, 1, 0, 0, 0, 5228, 5230, 1, 0, 0, 0, 5229, 5205, 1, 0, 0, 0, 5229, 5230, 1, 0, 0, 0, 5230, 5240, 1, 0, 0, 0, 5231, 5232, 5, 309, 0, 0, 5232, 5233, 5, 474, 0, 0, 5233, 5238, 5, 108, 0, 0, 5234, 5235, 5, 2, 0, 0, 5235, 5236, 3, 454, 227, 0, 5236, 5237, 5, 3, 0, 0, 5237, 5239, 1, 0, 0, 0, 5238, 5234, 1, 0, 0, 0, 5238, 5239, 1, 0, 0, 0, 5239, 5241, 1, 0, 0, 0, 5240, 5231, 1, 0, 0, 0, 5240, 5241, 1, 0, 0, 0, 5241, 5244, 1, 0, 0, 0, 5242, 5243, 5, 81, 0, 0, 5243, 5245, 5, 529, 0, 0, 5244, 5242, 1, 0, 0, 0, 5244, 5245, 1, 0, 0, 0, 5245, 335, 1, 0, 0, 0, 5246, 5251, 3, 338, 169, 0, 5247, 5248, 5, 4, 0, 0, 5248, 5250, 3, 338, 169, 0, 5249, 5247, 1, 0, 0, 0, 5250, 5253, 1, 0, 0, 0, 5251, 5249, 1, 0, 0, 0, 5251, 5252, 1, 0, 0, 0, 5252, 337, 1, 0, 0, 0, 5253, 5251, 1, 0, 0, 0, 5254, 5258, 5, 219, 0, 0, 5255, 5256, 5, 214, 0, 0, 5256, 5257, 5, 303, 0, 0, 5257, 5259, 5, 164, 0, 0, 5258, 5255, 1, 0, 0, 0, 5258, 5259, 1, 0, 0, 0, 5259, 5260, 1, 0, 0, 0, 5260, 5261, 3, 448, 224, 0, 5261, 5264, 3, 304, 152, 0, 5262, 5263, 5, 478, 0, 0, 5263, 5265, 7, 8, 0, 0, 5264, 5262, 1, 0, 0, 0, 5264, 5265, 1, 0, 0, 0, 5265, 5271, 1, 0, 0, 0, 5266, 5267, 5, 350, 0, 0, 5267, 5268, 5, 2, 0, 0, 5268, 5269, 3, 316, 158, 0, 5269, 5270, 5, 3, 0, 0, 5270, 5272, 1, 0, 0, 0, 5271, 5266, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5275, 1, 0, 0, 0, 5273, 5274, 5, 81, 0, 0, 5274, 5276, 5, 529, 0, 0, 5275, 5273, 1, 0, 0, 0, 5275, 5276, 1, 0, 0, 0, 5276, 339, 1, 0, 0, 0, 5277, 5282, 3, 342, 171, 0, 5278, 5279, 5, 4, 0, 0, 5279, 5281, 3, 342, 171, 0, 5280, 5278, 1, 0, 0, 0, 5281, 5284, 1, 0, 0, 0, 5282, 5280, 1, 0, 0, 0, 5282, 5283, 1, 0, 0, 0, 5283, 341, 1, 0, 0, 0, 5284, 5282, 1, 0, 0, 0, 5285, 5290, 3, 344, 172, 0, 5286, 5290, 3, 346, 173, 0, 5287, 5290, 3, 348, 174, 0, 5288, 5290, 3, 350, 175, 0, 5289, 5285, 1, 0, 0, 0, 5289, 5286, 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5289, 5288, 1, 0, 0, 0, 5290, 5295, 1, 0, 0, 0, 5291, 5292, 5, 2, 0, 0, 5292, 5293, 3, 316, 158, 0, 5293, 5294, 5, 3, 0, 0, 5294, 5296, 1, 0, 0, 0, 5295, 5291, 1, 0, 0, 0, 5295, 5296, 1, 0, 0, 0, 5296, 343, 1, 0, 0, 0, 5297, 5301, 5, 321, 0, 0, 5298, 5299, 5, 214, 0, 0, 5299, 5300, 5, 303, 0, 0, 5300, 5302, 5, 164, 0, 0, 5301, 5298, 1, 0, 0, 0, 5301, 5302, 1, 0, 0, 0, 5302, 5303, 1, 0, 0, 0, 5303, 5304, 3, 448, 224, 0, 5304, 5305, 5, 480, 0, 0, 5305, 5306, 5, 254, 0, 0, 5306, 5309, 5, 449, 0, 0, 5307, 5310, 5, 282, 0, 0, 5308, 5310, 3, 352, 176, 0, 5309, 5307, 1, 0, 0, 0, 5309, 5308, 1, 0, 0, 0, 5310, 345, 1, 0, 0, 0, 5311, 5315, 5, 321, 0, 0, 5312, 5313, 5, 214, 0, 0, 5313, 5314, 5, 303, 0, 0, 5314, 5316, 5, 164, 0, 0, 5315, 5312, 1, 0, 0, 0, 5315, 5316, 1, 0, 0, 0, 5316, 5317, 1, 0, 0, 0, 5317, 5318, 3, 448, 224, 0, 5318, 5319, 5, 480, 0, 0, 5319, 5320, 5, 7, 0, 0, 5320, 5321, 3, 352, 176, 0, 5321, 5322, 5, 4, 0, 0, 5322, 5323, 3, 352, 176, 0, 5323, 5324, 5, 3, 0, 0, 5324, 347, 1, 0, 0, 0, 5325, 5326, 5, 187, 0, 0, 5326, 5327, 3, 352, 176, 0, 5327, 5328, 5, 454, 0, 0, 5328, 5329, 3, 352, 176, 0, 5329, 5330, 5, 229, 0, 0, 5330, 5332, 5, 534, 0, 0, 5331, 5333, 3, 418, 209, 0, 5332, 5331, 1, 0, 0, 0, 5332, 5333, 1, 0, 0, 0, 5333, 349, 1, 0, 0, 0, 5334, 5338, 5, 321, 0, 0, 5335, 5336, 5, 214, 0, 0, 5336, 5337, 5, 303, 0, 0, 5337, 5339, 5, 164, 0, 0, 5338, 5335, 1, 0, 0, 0, 5338, 5339, 1, 0, 0, 0, 5339, 5340, 1, 0, 0, 0, 5340, 5357, 3, 448, 224, 0, 5341, 5342, 5, 480, 0, 0, 5342, 5355, 5, 217, 0, 0, 5343, 5344, 5, 2, 0, 0, 5344, 5349, 3, 352, 176, 0, 5345, 5346, 5, 4, 0, 0, 5346, 5348, 3, 352, 176, 0, 5347, 5345, 1, 0, 0, 0, 5348, 5351, 1, 0, 0, 0, 5349, 5347, 1, 0, 0, 0, 5349, 5350, 1, 0, 0, 0, 5350, 5352, 1, 0, 0, 0, 5351, 5349, 1, 0, 0, 0, 5352, 5353, 5, 3, 0, 0, 5353, 5356, 1, 0, 0, 0, 5354, 5356, 3, 352, 176, 0, 5355, 5343, 1, 0, 0, 0, 5355, 5354, 1, 0, 0, 0, 5356, 5358, 1, 0, 0, 0, 5357, 5341, 1, 0, 0, 0, 5357, 5358, 1, 0, 0, 0, 5358, 351, 1, 0, 0, 0, 5359, 5360, 5, 2, 0, 0, 5360, 5365, 3, 354, 177, 0, 5361, 5362, 5, 4, 0, 0, 5362, 5364, 3, 354, 177, 0, 5363, 5361, 1, 0, 0, 0, 5364, 5367, 1, 0, 0, 0, 5365, 5363, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5368, 1, 0, 0, 0, 5367, 5365, 1, 0, 0, 0, 5368, 5369, 5, 3, 0, 0, 5369, 353, 1, 0, 0, 0, 5370, 5372, 5, 511, 0, 0, 5371, 5370, 1, 0, 0, 0, 5371, 5372, 1, 0, 0, 0, 5372, 5373, 1, 0, 0, 0, 5373, 5378, 5, 534, 0, 0, 5374, 5378, 5, 529, 0, 0, 5375, 5378, 5, 282, 0, 0, 5376, 5378, 5, 304, 0, 0, 5377, 5371, 1, 0, 0, 0, 5377, 5374, 1, 0, 0, 0, 5377, 5375, 1, 0, 0, 0, 5377, 5376, 1, 0, 0, 0, 5378, 355, 1, 0, 0, 0, 5379, 5384, 3, 358, 179, 0, 5380, 5381, 5, 4, 0, 0, 5381, 5383, 3, 358, 179, 0, 5382, 5380, 1, 0, 0, 0, 5383, 5386, 1, 0, 0, 0, 5384, 5382, 1, 0, 0, 0, 5384, 5385, 1, 0, 0, 0, 5385, 357, 1, 0, 0, 0, 5386, 5384, 1, 0, 0, 0, 5387, 5388, 3, 448, 224, 0, 5388, 5392, 3, 304, 152, 0, 5389, 5390, 5, 146, 0, 0, 5390, 5391, 5, 244, 0, 0, 5391, 5393, 3, 304, 152, 0, 5392, 5389, 1, 0, 0, 0, 5392, 5393, 1, 0, 0, 0, 5393, 5395, 1, 0, 0, 0, 5394, 5396, 3, 314, 157, 0, 5395, 5394, 1, 0, 0, 0, 5395, 5396, 1, 0, 0, 0, 5396, 359, 1, 0, 0, 0, 5397, 5398, 7, 39, 0, 0, 5398, 361, 1, 0, 0, 0, 5399, 5400, 5, 442, 0, 0, 5400, 5401, 5, 2, 0, 0, 5401, 5406, 5, 534, 0, 0, 5402, 5403, 5, 4, 0, 0, 5403, 5405, 5, 534, 0, 0, 5404, 5402, 1, 0, 0, 0, 5405, 5408, 1, 0, 0, 0, 5406, 5404, 1, 0, 0, 0, 5406, 5407, 1, 0, 0, 0, 5407, 5409, 1, 0, 0, 0, 5408, 5406, 1, 0, 0, 0, 5409, 5410, 5, 3, 0, 0, 5410, 363, 1, 0, 0, 0, 5411, 5412, 5, 480, 0, 0, 5412, 5417, 3, 376, 188, 0, 5413, 5414, 5, 4, 0, 0, 5414, 5416, 3, 376, 188, 0, 5415, 5413, 1, 0, 0, 0, 5416, 5419, 1, 0, 0, 0, 5417, 5415, 1, 0, 0, 0, 5417, 5418, 1, 0, 0, 0, 5418, 365, 1, 0, 0, 0, 5419, 5417, 1, 0, 0, 0, 5420, 5425, 3, 370, 185, 0, 5421, 5423, 5, 28, 0, 0, 5422, 5421, 1, 0, 0, 0, 5422, 5423, 1, 0, 0, 0, 5423, 5424, 1, 0, 0, 0, 5424, 5426, 3, 182, 91, 0, 5425, 5422, 1, 0, 0, 0, 5425, 5426, 1, 0, 0, 0, 5426, 367, 1, 0, 0, 0, 5427, 5432, 3, 366, 183, 0, 5428, 5429, 5, 4, 0, 0, 5429, 5431, 3, 366, 183, 0, 5430, 5428, 1, 0, 0, 0, 5431, 5434, 1, 0, 0, 0, 5432, 5430, 1, 0, 0, 0, 5432, 5433, 1, 0, 0, 0, 5433, 369, 1, 0, 0, 0, 5434, 5432, 1, 0, 0, 0, 5435, 5438, 3, 374, 187, 0, 5436, 5438, 3, 372, 186, 0, 5437, 5435, 1, 0, 0, 0, 5437, 5436, 1, 0, 0, 0, 5438, 371, 1, 0, 0, 0, 5439, 5440, 3, 444, 222, 0, 5440, 5441, 5, 523, 0, 0, 5441, 5442, 3, 374, 187, 0, 5442, 5456, 1, 0, 0, 0, 5443, 5444, 5, 2, 0, 0, 5444, 5447, 3, 444, 222, 0, 5445, 5446, 5, 4, 0, 0, 5446, 5448, 3, 444, 222, 0, 5447, 5445, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, 5447, 1, 0, 0, 0, 5449, 5450, 1, 0, 0, 0, 5450, 5451, 1, 0, 0, 0, 5451, 5452, 5, 3, 0, 0, 5452, 5453, 5, 523, 0, 0, 5453, 5454, 3, 374, 187, 0, 5454, 5456, 1, 0, 0, 0, 5455, 5439, 1, 0, 0, 0, 5455, 5443, 1, 0, 0, 0, 5456, 373, 1, 0, 0, 0, 5457, 5458, 6, 187, -1, 0, 5458, 5459, 5, 518, 0, 0, 5459, 5482, 3, 374, 187, 10, 5460, 5461, 5, 164, 0, 0, 5461, 5462, 5, 2, 0, 0, 5462, 5463, 3, 228, 114, 0, 5463, 5464, 5, 3, 0, 0, 5464, 5482, 1, 0, 0, 0, 5465, 5466, 7, 40, 0, 0, 5466, 5467, 5, 2, 0, 0, 5467, 5468, 3, 382, 191, 0, 5468, 5469, 5, 3, 0, 0, 5469, 5482, 1, 0, 0, 0, 5470, 5471, 5, 235, 0, 0, 5471, 5472, 5, 2, 0, 0, 5472, 5473, 3, 382, 191, 0, 5473, 5474, 5, 3, 0, 0, 5474, 5482, 1, 0, 0, 0, 5475, 5477, 3, 382, 191, 0, 5476, 5478, 3, 380, 190, 0, 5477, 5476, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 5482, 1, 0, 0, 0, 5479, 5480, 5, 303, 0, 0, 5480, 5482, 3, 374, 187, 5, 5481, 5457, 1, 0, 0, 0, 5481, 5460, 1, 0, 0, 0, 5481, 5465, 1, 0, 0, 0, 5481, 5470, 1, 0, 0, 0, 5481, 5475, 1, 0, 0, 0, 5481, 5479, 1, 0, 0, 0, 5482, 5497, 1, 0, 0, 0, 5483, 5484, 10, 4, 0, 0, 5484, 5485, 7, 41, 0, 0, 5485, 5496, 3, 374, 187, 5, 5486, 5487, 10, 3, 0, 0, 5487, 5488, 5, 501, 0, 0, 5488, 5496, 3, 374, 187, 4, 5489, 5490, 10, 2, 0, 0, 5490, 5491, 5, 313, 0, 0, 5491, 5496, 3, 374, 187, 3, 5492, 5493, 10, 1, 0, 0, 5493, 5494, 5, 520, 0, 0, 5494, 5496, 3, 374, 187, 2, 5495, 5483, 1, 0, 0, 0, 5495, 5486, 1, 0, 0, 0, 5495, 5489, 1, 0, 0, 0, 5495, 5492, 1, 0, 0, 0, 5496, 5499, 1, 0, 0, 0, 5497, 5495, 1, 0, 0, 0, 5497, 5498, 1, 0, 0, 0, 5498, 375, 1, 0, 0, 0, 5499, 5497, 1, 0, 0, 0, 5500, 5509, 5, 2, 0, 0, 5501, 5506, 3, 378, 189, 0, 5502, 5503, 5, 4, 0, 0, 5503, 5505, 3, 378, 189, 0, 5504, 5502, 1, 0, 0, 0, 5505, 5508, 1, 0, 0, 0, 5506, 5504, 1, 0, 0, 0, 5506, 5507, 1, 0, 0, 0, 5507, 5510, 1, 0, 0, 0, 5508, 5506, 1, 0, 0, 0, 5509, 5501, 1, 0, 0, 0, 5509, 5510, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5512, 5, 3, 0, 0, 5512, 377, 1, 0, 0, 0, 5513, 5517, 3, 408, 204, 0, 5514, 5517, 5, 124, 0, 0, 5515, 5517, 3, 366, 183, 0, 5516, 5513, 1, 0, 0, 0, 5516, 5514, 1, 0, 0, 0, 5516, 5515, 1, 0, 0, 0, 5517, 379, 1, 0, 0, 0, 5518, 5520, 5, 303, 0, 0, 5519, 5518, 1, 0, 0, 0, 5519, 5520, 1, 0, 0, 0, 5520, 5521, 1, 0, 0, 0, 5521, 5522, 5, 40, 0, 0, 5522, 5523, 3, 382, 191, 0, 5523, 5524, 5, 24, 0, 0, 5524, 5525, 3, 382, 191, 0, 5525, 5570, 1, 0, 0, 0, 5526, 5528, 5, 303, 0, 0, 5527, 5526, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5529, 1, 0, 0, 0, 5529, 5530, 7, 42, 0, 0, 5530, 5570, 3, 382, 191, 0, 5531, 5533, 5, 303, 0, 0, 5532, 5531, 1, 0, 0, 0, 5532, 5533, 1, 0, 0, 0, 5533, 5534, 1, 0, 0, 0, 5534, 5535, 7, 43, 0, 0, 5535, 5570, 3, 382, 191, 0, 5536, 5538, 5, 303, 0, 0, 5537, 5536, 1, 0, 0, 0, 5537, 5538, 1, 0, 0, 0, 5538, 5539, 1, 0, 0, 0, 5539, 5540, 5, 217, 0, 0, 5540, 5541, 5, 2, 0, 0, 5541, 5542, 3, 228, 114, 0, 5542, 5543, 5, 3, 0, 0, 5543, 5570, 1, 0, 0, 0, 5544, 5546, 5, 303, 0, 0, 5545, 5544, 1, 0, 0, 0, 5545, 5546, 1, 0, 0, 0, 5546, 5547, 1, 0, 0, 0, 5547, 5548, 5, 217, 0, 0, 5548, 5549, 5, 2, 0, 0, 5549, 5554, 3, 370, 185, 0, 5550, 5551, 5, 4, 0, 0, 5551, 5553, 3, 370, 185, 0, 5552, 5550, 1, 0, 0, 0, 5553, 5556, 1, 0, 0, 0, 5554, 5552, 1, 0, 0, 0, 5554, 5555, 1, 0, 0, 0, 5555, 5557, 1, 0, 0, 0, 5556, 5554, 1, 0, 0, 0, 5557, 5558, 5, 3, 0, 0, 5558, 5570, 1, 0, 0, 0, 5559, 5561, 5, 234, 0, 0, 5560, 5562, 5, 303, 0, 0, 5561, 5560, 1, 0, 0, 0, 5561, 5562, 1, 0, 0, 0, 5562, 5563, 1, 0, 0, 0, 5563, 5570, 5, 304, 0, 0, 5564, 5566, 5, 234, 0, 0, 5565, 5567, 5, 303, 0, 0, 5566, 5565, 1, 0, 0, 0, 5566, 5567, 1, 0, 0, 0, 5567, 5568, 1, 0, 0, 0, 5568, 5570, 7, 44, 0, 0, 5569, 5519, 1, 0, 0, 0, 5569, 5527, 1, 0, 0, 0, 5569, 5532, 1, 0, 0, 0, 5569, 5537, 1, 0, 0, 0, 5569, 5545, 1, 0, 0, 0, 5569, 5559, 1, 0, 0, 0, 5569, 5564, 1, 0, 0, 0, 5570, 381, 1, 0, 0, 0, 5571, 5572, 6, 191, -1, 0, 5572, 5576, 3, 384, 192, 0, 5573, 5574, 7, 45, 0, 0, 5574, 5576, 3, 382, 191, 7, 5575, 5571, 1, 0, 0, 0, 5575, 5573, 1, 0, 0, 0, 5576, 5598, 1, 0, 0, 0, 5577, 5578, 10, 6, 0, 0, 5578, 5579, 5, 521, 0, 0, 5579, 5597, 3, 382, 191, 7, 5580, 5581, 10, 5, 0, 0, 5581, 5582, 7, 46, 0, 0, 5582, 5597, 3, 382, 191, 6, 5583, 5584, 10, 4, 0, 0, 5584, 5585, 7, 47, 0, 0, 5585, 5597, 3, 382, 191, 5, 5586, 5587, 10, 3, 0, 0, 5587, 5588, 5, 516, 0, 0, 5588, 5597, 3, 382, 191, 4, 5589, 5590, 10, 2, 0, 0, 5590, 5591, 5, 519, 0, 0, 5591, 5597, 3, 382, 191, 3, 5592, 5593, 10, 1, 0, 0, 5593, 5594, 3, 410, 205, 0, 5594, 5595, 3, 382, 191, 2, 5595, 5597, 1, 0, 0, 0, 5596, 5577, 1, 0, 0, 0, 5596, 5580, 1, 0, 0, 0, 5596, 5583, 1, 0, 0, 0, 5596, 5586, 1, 0, 0, 0, 5596, 5589, 1, 0, 0, 0, 5596, 5592, 1, 0, 0, 0, 5597, 5600, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5598, 5599, 1, 0, 0, 0, 5599, 383, 1, 0, 0, 0, 5600, 5598, 1, 0, 0, 0, 5601, 5602, 6, 192, -1, 0, 5602, 5728, 5, 106, 0, 0, 5603, 5728, 5, 107, 0, 0, 5604, 5728, 5, 108, 0, 0, 5605, 5728, 5, 263, 0, 0, 5606, 5728, 5, 264, 0, 0, 5607, 5728, 5, 109, 0, 0, 5608, 5728, 5, 408, 0, 0, 5609, 5611, 5, 64, 0, 0, 5610, 5612, 3, 414, 207, 0, 5611, 5610, 1, 0, 0, 0, 5612, 5613, 1, 0, 0, 0, 5613, 5611, 1, 0, 0, 0, 5613, 5614, 1, 0, 0, 0, 5614, 5617, 1, 0, 0, 0, 5615, 5616, 5, 149, 0, 0, 5616, 5618, 3, 370, 185, 0, 5617, 5615, 1, 0, 0, 0, 5617, 5618, 1, 0, 0, 0, 5618, 5619, 1, 0, 0, 0, 5619, 5620, 5, 153, 0, 0, 5620, 5728, 1, 0, 0, 0, 5621, 5622, 5, 64, 0, 0, 5622, 5624, 3, 370, 185, 0, 5623, 5625, 3, 414, 207, 0, 5624, 5623, 1, 0, 0, 0, 5625, 5626, 1, 0, 0, 0, 5626, 5624, 1, 0, 0, 0, 5626, 5627, 1, 0, 0, 0, 5627, 5630, 1, 0, 0, 0, 5628, 5629, 5, 149, 0, 0, 5629, 5631, 3, 370, 185, 0, 5630, 5628, 1, 0, 0, 0, 5630, 5631, 1, 0, 0, 0, 5631, 5632, 1, 0, 0, 0, 5632, 5633, 5, 153, 0, 0, 5633, 5728, 1, 0, 0, 0, 5634, 5635, 5, 65, 0, 0, 5635, 5636, 5, 2, 0, 0, 5636, 5637, 3, 370, 185, 0, 5637, 5638, 5, 28, 0, 0, 5638, 5639, 3, 388, 194, 0, 5639, 5640, 5, 3, 0, 0, 5640, 5728, 1, 0, 0, 0, 5641, 5728, 3, 408, 204, 0, 5642, 5728, 3, 416, 208, 0, 5643, 5647, 5, 512, 0, 0, 5644, 5646, 3, 386, 193, 0, 5645, 5644, 1, 0, 0, 0, 5646, 5649, 1, 0, 0, 0, 5647, 5645, 1, 0, 0, 0, 5647, 5648, 1, 0, 0, 0, 5648, 5728, 1, 0, 0, 0, 5649, 5647, 1, 0, 0, 0, 5650, 5651, 3, 404, 202, 0, 5651, 5652, 5, 5, 0, 0, 5652, 5656, 5, 512, 0, 0, 5653, 5655, 3, 386, 193, 0, 5654, 5653, 1, 0, 0, 0, 5655, 5658, 1, 0, 0, 0, 5656, 5654, 1, 0, 0, 0, 5656, 5657, 1, 0, 0, 0, 5657, 5728, 1, 0, 0, 0, 5658, 5656, 1, 0, 0, 0, 5659, 5660, 5, 69, 0, 0, 5660, 5661, 5, 2, 0, 0, 5661, 5666, 3, 370, 185, 0, 5662, 5663, 5, 4, 0, 0, 5663, 5665, 3, 370, 185, 0, 5664, 5662, 1, 0, 0, 0, 5665, 5668, 1, 0, 0, 0, 5666, 5664, 1, 0, 0, 0, 5666, 5667, 1, 0, 0, 0, 5667, 5671, 1, 0, 0, 0, 5668, 5666, 1, 0, 0, 0, 5669, 5670, 5, 478, 0, 0, 5670, 5672, 3, 182, 91, 0, 5671, 5669, 1, 0, 0, 0, 5671, 5672, 1, 0, 0, 0, 5672, 5673, 1, 0, 0, 0, 5673, 5674, 5, 3, 0, 0, 5674, 5728, 1, 0, 0, 0, 5675, 5676, 5, 95, 0, 0, 5676, 5677, 5, 2, 0, 0, 5677, 5678, 3, 370, 185, 0, 5678, 5679, 5, 478, 0, 0, 5679, 5680, 3, 182, 91, 0, 5680, 5681, 5, 3, 0, 0, 5681, 5728, 1, 0, 0, 0, 5682, 5683, 5, 95, 0, 0, 5683, 5684, 5, 2, 0, 0, 5684, 5685, 3, 370, 185, 0, 5685, 5686, 5, 4, 0, 0, 5686, 5687, 3, 388, 194, 0, 5687, 5688, 5, 3, 0, 0, 5688, 5728, 1, 0, 0, 0, 5689, 5728, 3, 390, 195, 0, 5690, 5691, 5, 2, 0, 0, 5691, 5692, 3, 228, 114, 0, 5692, 5693, 5, 3, 0, 0, 5693, 5728, 1, 0, 0, 0, 5694, 5695, 5, 527, 0, 0, 5695, 5728, 3, 182, 91, 0, 5696, 5699, 5, 528, 0, 0, 5697, 5698, 7, 48, 0, 0, 5698, 5700, 5, 5, 0, 0, 5699, 5697, 1, 0, 0, 0, 5699, 5700, 1, 0, 0, 0, 5700, 5701, 1, 0, 0, 0, 5701, 5728, 3, 448, 224, 0, 5702, 5704, 5, 43, 0, 0, 5703, 5702, 1, 0, 0, 0, 5703, 5704, 1, 0, 0, 0, 5704, 5705, 1, 0, 0, 0, 5705, 5728, 3, 448, 224, 0, 5706, 5707, 5, 2, 0, 0, 5707, 5708, 3, 370, 185, 0, 5708, 5709, 5, 3, 0, 0, 5709, 5728, 1, 0, 0, 0, 5710, 5714, 5, 244, 0, 0, 5711, 5712, 3, 448, 224, 0, 5712, 5713, 5, 5, 0, 0, 5713, 5715, 1, 0, 0, 0, 5714, 5711, 1, 0, 0, 0, 5714, 5715, 1, 0, 0, 0, 5715, 5716, 1, 0, 0, 0, 5716, 5728, 3, 448, 224, 0, 5717, 5718, 5, 170, 0, 0, 5718, 5719, 5, 2, 0, 0, 5719, 5720, 3, 448, 224, 0, 5720, 5722, 5, 187, 0, 0, 5721, 5723, 7, 49, 0, 0, 5722, 5721, 1, 0, 0, 0, 5722, 5723, 1, 0, 0, 0, 5723, 5724, 1, 0, 0, 0, 5724, 5725, 3, 382, 191, 0, 5725, 5726, 5, 3, 0, 0, 5726, 5728, 1, 0, 0, 0, 5727, 5601, 1, 0, 0, 0, 5727, 5603, 1, 0, 0, 0, 5727, 5604, 1, 0, 0, 0, 5727, 5605, 1, 0, 0, 0, 5727, 5606, 1, 0, 0, 0, 5727, 5607, 1, 0, 0, 0, 5727, 5608, 1, 0, 0, 0, 5727, 5609, 1, 0, 0, 0, 5727, 5621, 1, 0, 0, 0, 5727, 5634, 1, 0, 0, 0, 5727, 5641, 1, 0, 0, 0, 5727, 5642, 1, 0, 0, 0, 5727, 5643, 1, 0, 0, 0, 5727, 5650, 1, 0, 0, 0, 5727, 5659, 1, 0, 0, 0, 5727, 5675, 1, 0, 0, 0, 5727, 5682, 1, 0, 0, 0, 5727, 5689, 1, 0, 0, 0, 5727, 5690, 1, 0, 0, 0, 5727, 5694, 1, 0, 0, 0, 5727, 5696, 1, 0, 0, 0, 5727, 5703, 1, 0, 0, 0, 5727, 5706, 1, 0, 0, 0, 5727, 5710, 1, 0, 0, 0, 5727, 5717, 1, 0, 0, 0, 5728, 5755, 1, 0, 0, 0, 5729, 5730, 10, 11, 0, 0, 5730, 5731, 5, 7, 0, 0, 5731, 5732, 3, 382, 191, 0, 5732, 5733, 5, 8, 0, 0, 5733, 5754, 1, 0, 0, 0, 5734, 5735, 10, 10, 0, 0, 5735, 5736, 5, 7, 0, 0, 5736, 5737, 3, 382, 191, 0, 5737, 5739, 5, 522, 0, 0, 5738, 5740, 3, 382, 191, 0, 5739, 5738, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 5741, 1, 0, 0, 0, 5741, 5742, 5, 8, 0, 0, 5742, 5754, 1, 0, 0, 0, 5743, 5744, 10, 5, 0, 0, 5744, 5745, 5, 5, 0, 0, 5745, 5754, 3, 448, 224, 0, 5746, 5747, 10, 1, 0, 0, 5747, 5751, 5, 75, 0, 0, 5748, 5752, 3, 448, 224, 0, 5749, 5752, 5, 529, 0, 0, 5750, 5752, 5, 124, 0, 0, 5751, 5748, 1, 0, 0, 0, 5751, 5749, 1, 0, 0, 0, 5751, 5750, 1, 0, 0, 0, 5752, 5754, 1, 0, 0, 0, 5753, 5729, 1, 0, 0, 0, 5753, 5734, 1, 0, 0, 0, 5753, 5743, 1, 0, 0, 0, 5753, 5746, 1, 0, 0, 0, 5754, 5757, 1, 0, 0, 0, 5755, 5753, 1, 0, 0, 0, 5755, 5756, 1, 0, 0, 0, 5756, 385, 1, 0, 0, 0, 5757, 5755, 1, 0, 0, 0, 5758, 5759, 5, 161, 0, 0, 5759, 5760, 5, 2, 0, 0, 5760, 5761, 3, 368, 184, 0, 5761, 5762, 5, 3, 0, 0, 5762, 5769, 1, 0, 0, 0, 5763, 5764, 5, 374, 0, 0, 5764, 5765, 5, 2, 0, 0, 5765, 5766, 3, 368, 184, 0, 5766, 5767, 5, 3, 0, 0, 5767, 5769, 1, 0, 0, 0, 5768, 5758, 1, 0, 0, 0, 5768, 5763, 1, 0, 0, 0, 5769, 387, 1, 0, 0, 0, 5770, 5776, 3, 422, 211, 0, 5771, 5773, 7, 50, 0, 0, 5772, 5774, 7, 51, 0, 0, 5773, 5772, 1, 0, 0, 0, 5773, 5774, 1, 0, 0, 0, 5774, 5776, 1, 0, 0, 0, 5775, 5770, 1, 0, 0, 0, 5775, 5771, 1, 0, 0, 0, 5776, 389, 1, 0, 0, 0, 5777, 5778, 3, 392, 196, 0, 5778, 5802, 5, 2, 0, 0, 5779, 5781, 7, 35, 0, 0, 5780, 5779, 1, 0, 0, 0, 5780, 5781, 1, 0, 0, 0, 5781, 5782, 1, 0, 0, 0, 5782, 5787, 3, 370, 185, 0, 5783, 5784, 5, 4, 0, 0, 5784, 5786, 3, 370, 185, 0, 5785, 5783, 1, 0, 0, 0, 5786, 5789, 1, 0, 0, 0, 5787, 5785, 1, 0, 0, 0, 5787, 5788, 1, 0, 0, 0, 5788, 5800, 1, 0, 0, 0, 5789, 5787, 1, 0, 0, 0, 5790, 5791, 5, 314, 0, 0, 5791, 5792, 5, 59, 0, 0, 5792, 5797, 3, 294, 147, 0, 5793, 5794, 5, 4, 0, 0, 5794, 5796, 3, 294, 147, 0, 5795, 5793, 1, 0, 0, 0, 5796, 5799, 1, 0, 0, 0, 5797, 5795, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 5801, 1, 0, 0, 0, 5799, 5797, 1, 0, 0, 0, 5800, 5790, 1, 0, 0, 0, 5800, 5801, 1, 0, 0, 0, 5801, 5803, 1, 0, 0, 0, 5802, 5780, 1, 0, 0, 0, 5802, 5803, 1, 0, 0, 0, 5803, 5804, 1, 0, 0, 0, 5804, 5807, 5, 3, 0, 0, 5805, 5806, 5, 317, 0, 0, 5806, 5808, 3, 396, 198, 0, 5807, 5805, 1, 0, 0, 0, 5807, 5808, 1, 0, 0, 0, 5808, 391, 1, 0, 0, 0, 5809, 5810, 3, 448, 224, 0, 5810, 5811, 5, 5, 0, 0, 5811, 5813, 1, 0, 0, 0, 5812, 5809, 1, 0, 0, 0, 5812, 5813, 1, 0, 0, 0, 5813, 5814, 1, 0, 0, 0, 5814, 5815, 3, 394, 197, 0, 5815, 393, 1, 0, 0, 0, 5816, 5833, 3, 448, 224, 0, 5817, 5833, 5, 14, 0, 0, 5818, 5833, 5, 91, 0, 0, 5819, 5833, 5, 105, 0, 0, 5820, 5833, 5, 109, 0, 0, 5821, 5833, 5, 111, 0, 0, 5822, 5833, 5, 214, 0, 0, 5823, 5833, 5, 253, 0, 0, 5824, 5833, 5, 256, 0, 0, 5825, 5833, 5, 323, 0, 0, 5826, 5833, 5, 369, 0, 0, 5827, 5833, 5, 388, 0, 0, 5828, 5833, 5, 401, 0, 0, 5829, 5833, 5, 408, 0, 0, 5830, 5833, 5, 459, 0, 0, 5831, 5833, 5, 476, 0, 0, 5832, 5816, 1, 0, 0, 0, 5832, 5817, 1, 0, 0, 0, 5832, 5818, 1, 0, 0, 0, 5832, 5819, 1, 0, 0, 0, 5832, 5820, 1, 0, 0, 0, 5832, 5821, 1, 0, 0, 0, 5832, 5822, 1, 0, 0, 0, 5832, 5823, 1, 0, 0, 0, 5832, 5824, 1, 0, 0, 0, 5832, 5825, 1, 0, 0, 0, 5832, 5826, 1, 0, 0, 0, 5832, 5827, 1, 0, 0, 0, 5832, 5828, 1, 0, 0, 0, 5832, 5829, 1, 0, 0, 0, 5832, 5830, 1, 0, 0, 0, 5832, 5831, 1, 0, 0, 0, 5833, 395, 1, 0, 0, 0, 5834, 5836, 5, 2, 0, 0, 5835, 5837, 3, 298, 149, 0, 5836, 5835, 1, 0, 0, 0, 5836, 5837, 1, 0, 0, 0, 5837, 5839, 1, 0, 0, 0, 5838, 5840, 3, 292, 146, 0, 5839, 5838, 1, 0, 0, 0, 5839, 5840, 1, 0, 0, 0, 5840, 5842, 1, 0, 0, 0, 5841, 5843, 3, 398, 199, 0, 5842, 5841, 1, 0, 0, 0, 5842, 5843, 1, 0, 0, 0, 5843, 5844, 1, 0, 0, 0, 5844, 5845, 5, 3, 0, 0, 5845, 397, 1, 0, 0, 0, 5846, 5847, 3, 400, 200, 0, 5847, 5848, 3, 402, 201, 0, 5848, 5856, 1, 0, 0, 0, 5849, 5850, 3, 400, 200, 0, 5850, 5851, 5, 40, 0, 0, 5851, 5852, 3, 402, 201, 0, 5852, 5853, 5, 24, 0, 0, 5853, 5854, 3, 402, 201, 0, 5854, 5856, 1, 0, 0, 0, 5855, 5846, 1, 0, 0, 0, 5855, 5849, 1, 0, 0, 0, 5856, 399, 1, 0, 0, 0, 5857, 5858, 7, 52, 0, 0, 5858, 401, 1, 0, 0, 0, 5859, 5860, 5, 465, 0, 0, 5860, 5867, 7, 53, 0, 0, 5861, 5862, 5, 104, 0, 0, 5862, 5867, 5, 395, 0, 0, 5863, 5864, 3, 370, 185, 0, 5864, 5865, 7, 53, 0, 0, 5865, 5867, 1, 0, 0, 0, 5866, 5859, 1, 0, 0, 0, 5866, 5861, 1, 0, 0, 0, 5866, 5863, 1, 0, 0, 0, 5867, 403, 1, 0, 0, 0, 5868, 5873, 3, 448, 224, 0, 5869, 5870, 5, 5, 0, 0, 5870, 5872, 3, 448, 224, 0, 5871, 5869, 1, 0, 0, 0, 5872, 5875, 1, 0, 0, 0, 5873, 5871, 1, 0, 0, 0, 5873, 5874, 1, 0, 0, 0, 5874, 405, 1, 0, 0, 0, 5875, 5873, 1, 0, 0, 0, 5876, 5878, 5, 446, 0, 0, 5877, 5876, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 5879, 1, 0, 0, 0, 5879, 5882, 5, 321, 0, 0, 5880, 5883, 3, 448, 224, 0, 5881, 5883, 3, 304, 152, 0, 5882, 5880, 1, 0, 0, 0, 5882, 5881, 1, 0, 0, 0, 5883, 5890, 1, 0, 0, 0, 5884, 5886, 5, 446, 0, 0, 5885, 5884, 1, 0, 0, 0, 5885, 5886, 1, 0, 0, 0, 5886, 5887, 1, 0, 0, 0, 5887, 5888, 5, 322, 0, 0, 5888, 5890, 3, 304, 152, 0, 5889, 5877, 1, 0, 0, 0, 5889, 5885, 1, 0, 0, 0, 5890, 407, 1, 0, 0, 0, 5891, 5943, 5, 304, 0, 0, 5892, 5893, 7, 54, 0, 0, 5893, 5943, 5, 529, 0, 0, 5894, 5943, 3, 454, 227, 0, 5895, 5943, 3, 412, 206, 0, 5896, 5898, 5, 43, 0, 0, 5897, 5896, 1, 0, 0, 0, 5897, 5898, 1, 0, 0, 0, 5898, 5899, 1, 0, 0, 0, 5899, 5943, 5, 529, 0, 0, 5900, 5902, 5, 7, 0, 0, 5901, 5903, 3, 408, 204, 0, 5902, 5901, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, 5903, 5908, 1, 0, 0, 0, 5904, 5905, 5, 4, 0, 0, 5905, 5907, 3, 408, 204, 0, 5906, 5904, 1, 0, 0, 0, 5907, 5910, 1, 0, 0, 0, 5908, 5906, 1, 0, 0, 0, 5908, 5909, 1, 0, 0, 0, 5909, 5911, 1, 0, 0, 0, 5910, 5908, 1, 0, 0, 0, 5911, 5943, 5, 8, 0, 0, 5912, 5917, 5, 9, 0, 0, 5913, 5914, 3, 408, 204, 0, 5914, 5915, 5, 522, 0, 0, 5915, 5916, 3, 408, 204, 0, 5916, 5918, 1, 0, 0, 0, 5917, 5913, 1, 0, 0, 0, 5917, 5918, 1, 0, 0, 0, 5918, 5926, 1, 0, 0, 0, 5919, 5920, 5, 4, 0, 0, 5920, 5921, 3, 408, 204, 0, 5921, 5922, 5, 522, 0, 0, 5922, 5923, 3, 408, 204, 0, 5923, 5925, 1, 0, 0, 0, 5924, 5919, 1, 0, 0, 0, 5925, 5928, 1, 0, 0, 0, 5926, 5924, 1, 0, 0, 0, 5926, 5927, 1, 0, 0, 0, 5927, 5929, 1, 0, 0, 0, 5928, 5926, 1, 0, 0, 0, 5929, 5943, 5, 10, 0, 0, 5930, 5931, 5, 9, 0, 0, 5931, 5936, 3, 408, 204, 0, 5932, 5933, 5, 4, 0, 0, 5933, 5935, 3, 408, 204, 0, 5934, 5932, 1, 0, 0, 0, 5935, 5938, 1, 0, 0, 0, 5936, 5934, 1, 0, 0, 0, 5936, 5937, 1, 0, 0, 0, 5937, 5939, 1, 0, 0, 0, 5938, 5936, 1, 0, 0, 0, 5939, 5940, 5, 10, 0, 0, 5940, 5943, 1, 0, 0, 0, 5941, 5943, 5, 335, 0, 0, 5942, 5891, 1, 0, 0, 0, 5942, 5892, 1, 0, 0, 0, 5942, 5894, 1, 0, 0, 0, 5942, 5895, 1, 0, 0, 0, 5942, 5897, 1, 0, 0, 0, 5942, 5900, 1, 0, 0, 0, 5942, 5912, 1, 0, 0, 0, 5942, 5930, 1, 0, 0, 0, 5942, 5941, 1, 0, 0, 0, 5943, 409, 1, 0, 0, 0, 5944, 5945, 7, 55, 0, 0, 5945, 411, 1, 0, 0, 0, 5946, 5947, 7, 44, 0, 0, 5947, 413, 1, 0, 0, 0, 5948, 5949, 5, 494, 0, 0, 5949, 5950, 3, 370, 185, 0, 5950, 5951, 5, 450, 0, 0, 5951, 5952, 3, 370, 185, 0, 5952, 415, 1, 0, 0, 0, 5953, 5954, 5, 229, 0, 0, 5954, 5955, 3, 370, 185, 0, 5955, 5956, 3, 418, 209, 0, 5956, 417, 1, 0, 0, 0, 5957, 5958, 7, 56, 0, 0, 5958, 419, 1, 0, 0, 0, 5959, 5964, 3, 422, 211, 0, 5960, 5962, 5, 303, 0, 0, 5961, 5960, 1, 0, 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5963, 1, 0, 0, 0, 5963, 5965, 5, 304, 0, 0, 5964, 5961, 1, 0, 0, 0, 5964, 5965, 1, 0, 0, 0, 5965, 421, 1, 0, 0, 0, 5966, 5967, 5, 27, 0, 0, 5967, 5968, 5, 506, 0, 0, 5968, 5969, 3, 422, 211, 0, 5969, 5970, 5, 508, 0, 0, 5970, 6017, 1, 0, 0, 0, 5971, 5972, 5, 270, 0, 0, 5972, 5973, 5, 506, 0, 0, 5973, 5974, 3, 422, 211, 0, 5974, 5975, 5, 4, 0, 0, 5975, 5976, 3, 422, 211, 0, 5976, 5977, 5, 508, 0, 0, 5977, 6017, 1, 0, 0, 0, 5978, 5979, 5, 433, 0, 0, 5979, 5980, 5, 506, 0, 0, 5980, 5981, 3, 426, 213, 0, 5981, 5982, 5, 508, 0, 0, 5982, 6017, 1, 0, 0, 0, 5983, 5984, 5, 484, 0, 0, 5984, 5985, 5, 506, 0, 0, 5985, 5986, 3, 430, 215, 0, 5986, 5987, 5, 508, 0, 0, 5987, 6017, 1, 0, 0, 0, 5988, 5989, 5, 17, 0, 0, 5989, 5990, 5, 506, 0, 0, 5990, 5991, 3, 394, 197, 0, 5991, 5992, 5, 2, 0, 0, 5992, 5997, 3, 420, 210, 0, 5993, 5994, 5, 4, 0, 0, 5994, 5996, 3, 420, 210, 0, 5995, 5993, 1, 0, 0, 0, 5996, 5999, 1, 0, 0, 0, 5997, 5995, 1, 0, 0, 0, 5997, 5998, 1, 0, 0, 0, 5998, 6000, 1, 0, 0, 0, 5999, 5997, 1, 0, 0, 0, 6000, 6001, 5, 3, 0, 0, 6001, 6002, 5, 508, 0, 0, 6002, 6017, 1, 0, 0, 0, 6003, 6014, 3, 424, 212, 0, 6004, 6005, 5, 2, 0, 0, 6005, 6010, 7, 57, 0, 0, 6006, 6007, 5, 4, 0, 0, 6007, 6009, 5, 534, 0, 0, 6008, 6006, 1, 0, 0, 0, 6009, 6012, 1, 0, 0, 0, 6010, 6008, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 6013, 1, 0, 0, 0, 6012, 6010, 1, 0, 0, 0, 6013, 6015, 5, 3, 0, 0, 6014, 6004, 1, 0, 0, 0, 6014, 6015, 1, 0, 0, 0, 6015, 6017, 1, 0, 0, 0, 6016, 5966, 1, 0, 0, 0, 6016, 5971, 1, 0, 0, 0, 6016, 5978, 1, 0, 0, 0, 6016, 5983, 1, 0, 0, 0, 6016, 5988, 1, 0, 0, 0, 6016, 6003, 1, 0, 0, 0, 6017, 423, 1, 0, 0, 0, 6018, 6051, 5, 453, 0, 0, 6019, 6051, 5, 416, 0, 0, 6020, 6051, 7, 51, 0, 0, 6021, 6051, 5, 41, 0, 0, 6022, 6051, 5, 248, 0, 0, 6023, 6051, 5, 52, 0, 0, 6024, 6051, 5, 179, 0, 0, 6025, 6051, 5, 141, 0, 0, 6026, 6051, 5, 113, 0, 0, 6027, 6051, 5, 114, 0, 0, 6028, 6051, 5, 451, 0, 0, 6029, 6051, 5, 116, 0, 0, 6030, 6051, 5, 115, 0, 0, 6031, 6051, 5, 118, 0, 0, 6032, 6051, 5, 117, 0, 0, 6033, 6051, 5, 46, 0, 0, 6034, 6051, 5, 352, 0, 0, 6035, 6051, 5, 207, 0, 0, 6036, 6051, 5, 17, 0, 0, 6037, 6051, 5, 432, 0, 0, 6038, 6051, 5, 242, 0, 0, 6039, 6051, 5, 243, 0, 0, 6040, 6051, 5, 448, 0, 0, 6041, 6051, 5, 481, 0, 0, 6042, 6051, 5, 69, 0, 0, 6043, 6051, 5, 120, 0, 0, 6044, 6051, 5, 121, 0, 0, 6045, 6051, 5, 122, 0, 0, 6046, 6051, 5, 232, 0, 0, 6047, 6051, 5, 233, 0, 0, 6048, 6051, 5, 484, 0, 0, 6049, 6051, 5, 20, 0, 0, 6050, 6018, 1, 0, 0, 0, 6050, 6019, 1, 0, 0, 0, 6050, 6020, 1, 0, 0, 0, 6050, 6021, 1, 0, 0, 0, 6050, 6022, 1, 0, 0, 0, 6050, 6023, 1, 0, 0, 0, 6050, 6024, 1, 0, 0, 0, 6050, 6025, 1, 0, 0, 0, 6050, 6026, 1, 0, 0, 0, 6050, 6027, 1, 0, 0, 0, 6050, 6028, 1, 0, 0, 0, 6050, 6029, 1, 0, 0, 0, 6050, 6030, 1, 0, 0, 0, 6050, 6031, 1, 0, 0, 0, 6050, 6032, 1, 0, 0, 0, 6050, 6033, 1, 0, 0, 0, 6050, 6034, 1, 0, 0, 0, 6050, 6035, 1, 0, 0, 0, 6050, 6036, 1, 0, 0, 0, 6050, 6037, 1, 0, 0, 0, 6050, 6038, 1, 0, 0, 0, 6050, 6039, 1, 0, 0, 0, 6050, 6040, 1, 0, 0, 0, 6050, 6041, 1, 0, 0, 0, 6050, 6042, 1, 0, 0, 0, 6050, 6043, 1, 0, 0, 0, 6050, 6044, 1, 0, 0, 0, 6050, 6045, 1, 0, 0, 0, 6050, 6046, 1, 0, 0, 0, 6050, 6047, 1, 0, 0, 0, 6050, 6048, 1, 0, 0, 0, 6050, 6049, 1, 0, 0, 0, 6051, 425, 1, 0, 0, 0, 6052, 6057, 3, 428, 214, 0, 6053, 6054, 5, 4, 0, 0, 6054, 6056, 3, 428, 214, 0, 6055, 6053, 1, 0, 0, 0, 6056, 6059, 1, 0, 0, 0, 6057, 6055, 1, 0, 0, 0, 6057, 6058, 1, 0, 0, 0, 6058, 427, 1, 0, 0, 0, 6059, 6057, 1, 0, 0, 0, 6060, 6061, 3, 448, 224, 0, 6061, 6062, 5, 522, 0, 0, 6062, 6064, 3, 422, 211, 0, 6063, 6065, 3, 436, 218, 0, 6064, 6063, 1, 0, 0, 0, 6064, 6065, 1, 0, 0, 0, 6065, 429, 1, 0, 0, 0, 6066, 6071, 3, 432, 216, 0, 6067, 6068, 5, 4, 0, 0, 6068, 6070, 3, 432, 216, 0, 6069, 6067, 1, 0, 0, 0, 6070, 6073, 1, 0, 0, 0, 6071, 6069, 1, 0, 0, 0, 6071, 6072, 1, 0, 0, 0, 6072, 431, 1, 0, 0, 0, 6073, 6071, 1, 0, 0, 0, 6074, 6076, 3, 434, 217, 0, 6075, 6074, 1, 0, 0, 0, 6075, 6076, 1, 0, 0, 0, 6076, 6077, 1, 0, 0, 0, 6077, 6078, 5, 529, 0, 0, 6078, 6079, 5, 522, 0, 0, 6079, 6081, 3, 422, 211, 0, 6080, 6082, 3, 436, 218, 0, 6081, 6080, 1, 0, 0, 0, 6081, 6082, 1, 0, 0, 0, 6082, 433, 1, 0, 0, 0, 6083, 6084, 7, 58, 0, 0, 6084, 435, 1, 0, 0, 0, 6085, 6086, 5, 81, 0, 0, 6086, 6087, 5, 529, 0, 0, 6087, 437, 1, 0, 0, 0, 6088, 6089, 5, 441, 0, 0, 6089, 6091, 5, 2, 0, 0, 6090, 6092, 3, 440, 220, 0, 6091, 6090, 1, 0, 0, 0, 6091, 6092, 1, 0, 0, 0, 6092, 6093, 1, 0, 0, 0, 6093, 6096, 5, 3, 0, 0, 6094, 6095, 5, 373, 0, 0, 6095, 6097, 5, 534, 0, 0, 6096, 6094, 1, 0, 0, 0, 6096, 6097, 1, 0, 0, 0, 6097, 439, 1, 0, 0, 0, 6098, 6099, 5, 534, 0, 0, 6099, 6103, 5, 330, 0, 0, 6100, 6101, 5, 534, 0, 0, 6101, 6103, 5, 396, 0, 0, 6102, 6098, 1, 0, 0, 0, 6102, 6100, 1, 0, 0, 0, 6103, 441, 1, 0, 0, 0, 6104, 6105, 5, 182, 0, 0, 6105, 6106, 5, 488, 0, 0, 6106, 6107, 5, 28, 0, 0, 6107, 6108, 5, 307, 0, 0, 6108, 6115, 5, 534, 0, 0, 6109, 6110, 5, 182, 0, 0, 6110, 6111, 5, 451, 0, 0, 6111, 6112, 5, 28, 0, 0, 6112, 6113, 5, 307, 0, 0, 6113, 6115, 5, 529, 0, 0, 6114, 6104, 1, 0, 0, 0, 6114, 6109, 1, 0, 0, 0, 6115, 443, 1, 0, 0, 0, 6116, 6117, 3, 448, 224, 0, 6117, 6118, 3, 446, 223, 0, 6118, 445, 1, 0, 0, 0, 6119, 6120, 5, 511, 0, 0, 6120, 6122, 3, 448, 224, 0, 6121, 6119, 1, 0, 0, 0, 6122, 6123, 1, 0, 0, 0, 6123, 6121, 1, 0, 0, 0, 6123, 6124, 1, 0, 0, 0, 6124, 6127, 1, 0, 0, 0, 6125, 6127, 1, 0, 0, 0, 6126, 6121, 1, 0, 0, 0, 6126, 6125, 1, 0, 0, 0, 6127, 447, 1, 0, 0, 0, 6128, 6129, 3, 450, 225, 0, 6129, 449, 1, 0, 0, 0, 6130, 6134, 5, 538, 0, 0, 6131, 6134, 3, 452, 226, 0, 6132, 6134, 3, 456, 228, 0, 6133, 6130, 1, 0, 0, 0, 6133, 6131, 1, 0, 0, 0, 6133, 6132, 1, 0, 0, 0, 6134, 451, 1, 0, 0, 0, 6135, 6136, 5, 539, 0, 0, 6136, 453, 1, 0, 0, 0, 6137, 6139, 5, 511, 0, 0, 6138, 6137, 1, 0, 0, 0, 6138, 6139, 1, 0, 0, 0, 6139, 6140, 1, 0, 0, 0, 6140, 6146, 5, 534, 0, 0, 6141, 6143, 5, 511, 0, 0, 6142, 6141, 1, 0, 0, 0, 6142, 6143, 1, 0, 0, 0, 6143, 6144, 1, 0, 0, 0, 6144, 6146, 7, 59, 0, 0, 6145, 6138, 1, 0, 0, 0, 6145, 6142, 1, 0, 0, 0, 6146, 455, 1, 0, 0, 0, 6147, 6148, 7, 60, 0, 0, 6148, 457, 1, 0, 0, 0, 881, 461, 465, 470, 475, 481, 489, 493, 498, 512, 515, 523, 526, 534, 541, 548, 557, 564, 571, 575, 577, 580, 584, 607, 625, 633, 640, 643, 647, 650, 652, 655, 659, 663, 671, 678, 682, 684, 687, 699, 713, 721, 728, 735, 740, 766, 779, 781, 785, 790, 792, 795, 803, 809, 812, 817, 822, 824, 845, 848, 851, 857, 864, 867, 872, 875, 881, 885, 888, 896, 899, 902, 905, 911, 916, 919, 930, 935, 938, 941, 948, 951, 956, 959, 962, 966, 972, 976, 982, 985, 989, 994, 1002, 1004, 1008, 1011, 1018, 1023, 1025, 1027, 1034, 1037, 1041, 1045, 1050, 1056, 1063, 1067, 1077, 1082, 1088, 1096, 1098, 1105, 1110, 1118, 1122, 1129, 1135, 1139, 1142, 1150, 1161, 1174, 1178, 1186, 1193, 1201, 1204, 1208, 1215, 1219, 1226, 1234, 1237, 1243, 1248, 1255, 1258, 1262, 1269, 1274, 1281, 1287, 1301, 1305, 1334, 1350, 1356, 1384, 1397, 1410, 1429, 1443, 1445, 1459, 1466, 1473, 1480, 1488, 1496, 1503, 1511, 1519, 1529, 1533, 1539, 1543, 1547, 1552, 1557, 1565, 1571, 1575, 1579, 1595, 1601, 1604, 1613, 1619, 1623, 1635, 1641, 1644, 1657, 1667, 1671, 1675, 1682, 1699, 1703, 1716, 1722, 1726, 1733, 1738, 1746, 1748, 1754, 1766, 1770, 1773, 1776, 1789, 1808, 1813, 1816, 1825, 1837, 1841, 1854, 1867, 1871, 1878, 1884, 1887, 1893, 1897, 1902, 1905, 1912, 1915, 1917, 1921, 1931, 1943, 1946, 1955, 1962, 1970, 1973, 1976, 1990, 1995, 1998, 2012, 2017, 2020, 2027, 2029, 2035, 2040, 2044, 2047, 2050, 2059, 2061, 2071, 2074, 2078, 2083, 2086, 2096, 2102, 2107, 2113, 2116, 2120, 2127, 2130, 2137, 2140, 2143, 2147, 2151, 2156, 2159, 2162, 2165, 2171, 2174, 2177, 2180, 2189, 2193, 2196, 2199, 2202, 2206, 2212, 2215, 2218, 2228, 2231, 2234, 2237, 2243, 2246, 2250, 2255, 2258, 2263, 2266, 2269, 2275, 2282, 2286, 2289, 2294, 2297, 2302, 2306, 2312, 2320, 2326, 2329, 2340, 2351, 2353, 2355, 2362, 2365, 2368, 2371, 2377, 2385, 2391, 2394, 2397, 2400, 2407, 2409, 2417, 2421, 2428, 2431, 2434, 2442, 2451, 2454, 2468, 2507, 2514, 2516, 2524, 2527, 2531, 2543, 2555, 2579, 2587, 2593, 2597, 2604, 2612, 2615, 2621, 2627, 2632, 2640, 2644, 2651, 2660, 2666, 2672, 2675, 2681, 2684, 2691, 2693, 2702, 2712, 2716, 2729, 2733, 2743, 2750, 2756, 2758, 2776, 2780, 2793, 2797, 2814, 2824, 2830, 2838, 2850, 2854, 2862, 2864, 2870, 2874, 2880, 2884, 2890, 2894, 2899, 2933, 2940, 2943, 2952, 2959, 2961, 2965, 2968, 2971, 2974, 2978, 2981, 2987, 2993, 2995, 2999, 3003, 3006, 3009, 3012, 3016, 3020, 3023, 3026, 3029, 3031, 3041, 3055, 3062, 3070, 3083, 3097, 3104, 3112, 3117, 3121, 3124, 3131, 3147, 3164, 3172, 3184, 3190, 3192, 3201, 3205, 3214, 3224, 3247, 3258, 3270, 3279, 3292, 3296, 3303, 3306, 3309, 3315, 3318, 3321, 3329, 3332, 3338, 3341, 3347, 3350, 3353, 3359, 3362, 3366, 3374, 3379, 3381, 3383, 3386, 3390, 3395, 3399, 3404, 3408, 3416, 3425, 3429, 3432, 3435, 3442, 3445, 3470, 3478, 3487, 3492, 3494, 3496, 3512, 3516, 3526, 3529, 3531, 3536, 3548, 3555, 3563, 3572, 3574, 3580, 3583, 3587, 3592, 3599, 3606, 3613, 3628, 3632, 3638, 3641, 3647, 3651, 3653, 3664, 3671, 3682, 3688, 3691, 3712, 3715, 3730, 3735, 3738, 3745, 3757, 3765, 3772, 3776, 3783, 3790, 3795, 3800, 3809, 3815, 3819, 3827, 3831, 3839, 3847, 3854, 3857, 3864, 3868, 3870, 3877, 3884, 3886, 3893, 3900, 3904, 3910, 3915, 3917, 3925, 3927, 3934, 3936, 3940, 3946, 3948, 3951, 3959, 3966, 3972, 3977, 3981, 3995, 4000, 4013, 4015, 4022, 4030, 4034, 4039, 4044, 4049, 4057, 4066, 4069, 4075, 4077, 4083, 4090, 4104, 4108, 4113, 4119, 4127, 4130, 4136, 4139, 4148, 4151, 4157, 4167, 4171, 4174, 4176, 4181, 4186, 4190, 4196, 4203, 4215, 4217, 4231, 4234, 4239, 4247, 4250, 4255, 4260, 4270, 4277, 4280, 4283, 4293, 4301, 4307, 4313, 4318, 4323, 4326, 4329, 4332, 4335, 4338, 4341, 4344, 4347, 4350, 4353, 4364, 4367, 4370, 4373, 4376, 4378, 4392, 4399, 4405, 4409, 4414, 4421, 4426, 4435, 4437, 4443, 4446, 4450, 4453, 4456, 4470, 4499, 4534, 4536, 4545, 4549, 4558, 4564, 4570, 4573, 4576, 4579, 4582, 4590, 4598, 4601, 4604, 4615, 4621, 4624, 4626, 4637, 4641, 4644, 4647, 4650, 4653, 4656, 4667, 4672, 4685, 4692, 4705, 4710, 4715, 4719, 4735, 4742, 4748, 4752, 4762, 4770, 4781, 4786, 4799, 4802, 4812, 4815, 4826, 4836, 4839, 4847, 4850, 4862, 4867, 4876, 4881, 4886, 4895, 4900, 4902, 4908, 4910, 4913, 4919, 4926, 4938, 4941, 4951, 4955, 4958, 4967, 4972, 4976, 4988, 4997, 5001, 5006, 5010, 5014, 5024, 5030, 5041, 5048, 5054, 5057, 5060, 5063, 5066, 5070, 5073, 5078, 5088, 5094, 5103, 5118, 5127, 5131, 5134, 5138, 5140, 5147, 5155, 5161, 5168, 5174, 5177, 5181, 5188, 5191, 5194, 5201, 5203, 5208, 5212, 5225, 5227, 5229, 5238, 5240, 5244, 5251, 5258, 5264, 5271, 5275, 5282, 5289, 5295, 5301, 5309, 5315, 5332, 5338, 5349, 5355, 5357, 5365, 5371, 5377, 5384, 5392, 5395, 5406, 5417, 5422, 5425, 5432, 5437, 5449, 5455, 5477, 5481, 5495, 5497, 5506, 5509, 5516, 5519, 5527, 5532, 5537, 5545, 5554, 5561, 5566, 5569, 5575, 5596, 5598, 5613, 5617, 5626, 5630, 5647, 5656, 5666, 5671, 5699, 5703, 5714, 5722, 5727, 5739, 5751, 5753, 5755, 5768, 5773, 5775, 5780, 5787, 5797, 5800, 5802, 5807, 5812, 5832, 5836, 5839, 5842, 5855, 5866, 5873, 5877, 5882, 5885, 5889, 5897, 5902, 5908, 5917, 5926, 5936, 5942, 5961, 5964, 5997, 6010, 6014, 6016, 6050, 6057, 6064, 6071, 6075, 6081, 6091, 6096, 6102, 6114, 6123, 6126, 6133, 6138, 6142, 6145] \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java new file mode 100644 index 00000000000000..43aa66b4252be2 --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java @@ -0,0 +1,53737 @@ +// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 by ANTLR 4.13.1 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) +public class DorisParser extends Parser { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + SEMICOLON=1, LEFT_PAREN=2, RIGHT_PAREN=3, COMMA=4, DOT=5, DOTDOTDOT=6, + LEFT_BRACKET=7, RIGHT_BRACKET=8, LEFT_BRACE=9, RIGHT_BRACE=10, ACCOUNT_LOCK=11, + ACCOUNT_UNLOCK=12, ACTIONS=13, ADD=14, ADMIN=15, AFTER=16, AGG_STATE=17, + AGGREGATE=18, ALIAS=19, ALL=20, ALTER=21, ANALYZE=22, ANALYZED=23, AND=24, + ANTI=25, APPEND=26, ARRAY=27, AS=28, ASC=29, AT=30, AUTHORS=31, AUTO=32, + AUTO_INCREMENT=33, ALWAYS=34, BACKEND=35, BACKENDS=36, BACKUP=37, BEGIN=38, + BELONG=39, BETWEEN=40, BIGINT=41, BIN=42, BINARY=43, BINLOG=44, BITAND=45, + BITMAP=46, BITMAP_EMPTY=47, BITMAP_UNION=48, BITOR=49, BITXOR=50, BLOB=51, + BOOLEAN=52, BRIEF=53, BROKER=54, BUCKETS=55, BUILD=56, BUILTIN=57, BULK=58, + BY=59, CACHE=60, CACHED=61, CALL=62, CANCEL=63, CASE=64, CAST=65, CATALOG=66, + CATALOGS=67, CHAIN=68, CHAR=69, CHARSET=70, CHECK=71, CLEAN=72, CLUSTER=73, + CLUSTERS=74, COLLATE=75, COLLATION=76, COLLECT=77, COLOCATE=78, COLUMN=79, + COLUMNS=80, COMMENT=81, COMMIT=82, COMMITTED=83, COMPACT=84, COMPLETE=85, + COMPRESS_TYPE=86, COMPUTE=87, CONDITIONS=88, CONFIG=89, CONNECTION=90, + CONNECTION_ID=91, CONSISTENT=92, CONSTRAINT=93, CONSTRAINTS=94, CONVERT=95, + CONVERT_LSC=96, COPY=97, COUNT=98, CREATE=99, CREATION=100, CRON=101, + CROSS=102, CUBE=103, CURRENT=104, CURRENT_CATALOG=105, CURRENT_DATE=106, + CURRENT_TIME=107, CURRENT_TIMESTAMP=108, CURRENT_USER=109, DATA=110, DATABASE=111, + DATABASES=112, DATE=113, DATETIME=114, DATETIMEV2=115, DATEV2=116, DATETIMEV1=117, + DATEV1=118, DAY=119, DECIMAL=120, DECIMALV2=121, DECIMALV3=122, DECOMMISSION=123, + DEFAULT=124, DEFERRED=125, DELETE=126, DEMAND=127, DESC=128, DESCRIBE=129, + DIAGNOSE=130, DIAGNOSIS=131, DISK=132, DISTINCT=133, DISTINCTPC=134, DISTINCTPCSA=135, + DISTRIBUTED=136, DISTRIBUTION=137, DIV=138, DO=139, DORIS_INTERNAL_TABLE_ID=140, + DOUBLE=141, DROP=142, DROPP=143, DUAL=144, DUMP=145, DUPLICATE=146, DYNAMIC=147, + E=148, ELSE=149, ENABLE=150, ENCRYPTKEY=151, ENCRYPTKEYS=152, END=153, + ENDS=154, ENGINE=155, ENGINES=156, ENTER=157, ERRORS=158, EVENTS=159, + EVERY=160, EXCEPT=161, EXCLUDE=162, EXECUTE=163, EXISTS=164, EXPIRED=165, + EXPLAIN=166, EXPORT=167, EXTENDED=168, EXTERNAL=169, EXTRACT=170, FAILED_LOGIN_ATTEMPTS=171, + FALSE=172, FAST=173, FEATURE=174, FIELDS=175, FILE=176, FILTER=177, FIRST=178, + FLOAT=179, FOLLOWER=180, FOLLOWING=181, FOR=182, FOREIGN=183, FORCE=184, + FORMAT=185, FREE=186, FROM=187, FRONTEND=188, FRONTENDS=189, FULL=190, + FUNCTION=191, FUNCTIONS=192, GENERATED=193, GENERIC=194, GLOBAL=195, GRANT=196, + GRANTS=197, GRAPH=198, GROUP=199, GROUPING=200, GROUPS=201, HASH=202, + HAVING=203, HDFS=204, HELP=205, HISTOGRAM=206, HLL=207, HLL_UNION=208, + HOSTNAME=209, HOTSPOT=210, HOUR=211, HUB=212, IDENTIFIED=213, IF=214, + IGNORE=215, IMMEDIATE=216, IN=217, INCREMENTAL=218, INDEX=219, INDEXES=220, + INFILE=221, INNER=222, INSERT=223, INSTALL=224, INT=225, INTEGER=226, + INTERMEDIATE=227, INTERSECT=228, INTERVAL=229, INTO=230, INVERTED=231, + IPV4=232, IPV6=233, IS=234, IS_NOT_NULL_PRED=235, IS_NULL_PRED=236, ISNULL=237, + ISOLATION=238, JOB=239, JOBS=240, JOIN=241, JSON=242, JSONB=243, KEY=244, + KEYS=245, KILL=246, LABEL=247, LARGEINT=248, LAST=249, LATERAL=250, LDAP=251, + LDAP_ADMIN_PASSWORD=252, LEFT=253, LESS=254, LEVEL=255, LIKE=256, LIMIT=257, + LINES=258, LINK=259, LIST=260, LOAD=261, LOCAL=262, LOCALTIME=263, LOCALTIMESTAMP=264, + LOCATION=265, LOCK=266, LOGICAL=267, LOW_PRIORITY=268, MANUAL=269, MAP=270, + MATCH=271, MATCH_ALL=272, MATCH_ANY=273, MATCH_PHRASE=274, MATCH_PHRASE_EDGE=275, + MATCH_PHRASE_PREFIX=276, MATCH_REGEXP=277, MATCH_NAME=278, MATCH_NAME_GLOB=279, + MATERIALIZED=280, MAX=281, MAXVALUE=282, MEMO=283, MERGE=284, MIGRATE=285, + MIGRATIONS=286, MIN=287, MINUS=288, MINUTE=289, MODIFY=290, MONTH=291, + MTMV=292, NAME=293, NAMES=294, NATURAL=295, NEGATIVE=296, NEVER=297, NEXT=298, + NGRAM_BF=299, NO=300, NO_USE_MV=301, NON_NULLABLE=302, NOT=303, NULL=304, + NULLS=305, OBSERVER=306, OF=307, OFFSET=308, ON=309, ONLY=310, OPEN=311, + OPTIMIZED=312, OR=313, ORDER=314, OUTER=315, OUTFILE=316, OVER=317, OVERWRITE=318, + PARAMETER=319, PARSED=320, PARTITION=321, PARTITIONS=322, PASSWORD=323, + PASSWORD_EXPIRE=324, PASSWORD_HISTORY=325, PASSWORD_LOCK_TIME=326, PASSWORD_REUSE=327, + PATH=328, PAUSE=329, PERCENT=330, PERIOD=331, PERMISSIVE=332, PHYSICAL=333, + PI=334, PLACEHOLDER=335, PLAN=336, PLAY=337, PRIVILEGES=338, PROCESS=339, + PLUGIN=340, PLUGINS=341, POLICY=342, PRECEDING=343, PREPARE=344, PRIMARY=345, + PROC=346, PROCEDURE=347, PROCESSLIST=348, PROFILE=349, PROPERTIES=350, + PROPERTY=351, QUANTILE_STATE=352, QUANTILE_UNION=353, QUERY=354, QUEUED=355, + QUOTA=356, QUALIFY=357, QUARTER=358, RANDOM=359, RANGE=360, READ=361, + REAL=362, REBALANCE=363, RECENT=364, RECOVER=365, RECYCLE=366, REFRESH=367, + REFERENCES=368, REGEXP=369, RELEASE=370, RENAME=371, REPAIR=372, REPEATABLE=373, + REPLACE=374, REPLACE_IF_NOT_NULL=375, REPLAYER=376, REPLICA=377, REPOSITORIES=378, + REPOSITORY=379, RESOURCE=380, RESOURCES=381, RESTORE=382, RESTRICTIVE=383, + RESUME=384, RETURNS=385, REVOKE=386, REWRITTEN=387, RIGHT=388, RLIKE=389, + ROLE=390, ROLES=391, ROLLBACK=392, ROLLUP=393, ROUTINE=394, ROW=395, ROWS=396, + S3=397, SAMPLE=398, SCHEDULE=399, SCHEDULER=400, SCHEMA=401, SCHEMAS=402, + SECOND=403, SELECT=404, SEMI=405, SERIALIZABLE=406, SESSION=407, SESSION_USER=408, + SET=409, SETS=410, SET_SESSION_VARIABLE=411, SHAPE=412, SHOW=413, SIGNED=414, + SKEW=415, SMALLINT=416, SNAPSHOT=417, SONAME=418, SPLIT=419, SQL=420, + SQL_BLOCK_RULE=421, STAGE=422, STAGES=423, START=424, STARTS=425, STATS=426, + STATUS=427, STOP=428, STORAGE=429, STREAM=430, STREAMING=431, STRING=432, + STRUCT=433, SUM=434, SUPERUSER=435, SWITCH=436, SYNC=437, SYSTEM=438, + TABLE=439, TABLES=440, TABLESAMPLE=441, TABLET=442, TABLETS=443, TASK=444, + TASKS=445, TEMPORARY=446, TERMINATED=447, TEXT=448, THAN=449, THEN=450, + TIME=451, TIMESTAMP=452, TINYINT=453, TO=454, TRANSACTION=455, TRASH=456, + TREE=457, TRIGGERS=458, TRIM=459, TRUE=460, TRUNCATE=461, TYPE=462, TYPECAST=463, + TYPES=464, UNBOUNDED=465, UNCOMMITTED=466, UNINSTALL=467, UNION=468, UNIQUE=469, + UNLOCK=470, UNSET=471, UNSIGNED=472, UP=473, UPDATE=474, USE=475, USER=476, + USE_MV=477, USING=478, VALUE=479, VALUES=480, VARCHAR=481, VARIABLE=482, + VARIABLES=483, VARIANT=484, VAULT=485, VAULTS=486, VERBOSE=487, VERSION=488, + VIEW=489, VIEWS=490, WARM=491, WARNINGS=492, WEEK=493, WHEN=494, WHERE=495, + WHITELIST=496, WITH=497, WORK=498, WORKLOAD=499, WRITE=500, XOR=501, YEAR=502, + EQ=503, NSEQ=504, NEQ=505, LT=506, LTE=507, GT=508, GTE=509, PLUS=510, + SUBTRACT=511, ASTERISK=512, SLASH=513, MOD=514, TILDE=515, AMPERSAND=516, + LOGICALAND=517, LOGICALNOT=518, PIPE=519, DOUBLEPIPES=520, HAT=521, COLON=522, + ARROW=523, HINT_START=524, HINT_END=525, COMMENT_START=526, ATSIGN=527, + DOUBLEATSIGN=528, STRING_LITERAL=529, LEADING_STRING=530, BIGINT_LITERAL=531, + SMALLINT_LITERAL=532, TINYINT_LITERAL=533, INTEGER_VALUE=534, EXPONENT_VALUE=535, + DECIMAL_VALUE=536, BIGDECIMAL_LITERAL=537, IDENTIFIER=538, BACKQUOTED_IDENTIFIER=539, + SIMPLE_COMMENT=540, BRACKETED_COMMENT=541, FROM_DUAL=542, WS=543, UNRECOGNIZED=544; + public static final int + RULE_multiStatements = 0, RULE_singleStatement = 1, RULE_statement = 2, + RULE_statementBase = 3, RULE_unsupportedStatement = 4, RULE_materializedViewStatement = 5, + RULE_supportedJobStatement = 6, RULE_constraintStatement = 7, RULE_supportedDmlStatement = 8, + RULE_supportedCreateStatement = 9, RULE_supportedAlterStatement = 10, + RULE_supportedDropStatement = 11, RULE_supportedShowStatement = 12, RULE_supportedLoadStatement = 13, + RULE_supportedOtherStatement = 14, RULE_unsupportedOtherStatement = 15, + RULE_warmUpItem = 16, RULE_lockTable = 17, RULE_unsupportedShowStatement = 18, + RULE_createRoutineLoad = 19, RULE_unsupportedLoadStatement = 20, RULE_loadProperty = 21, + RULE_importSequenceStatement = 22, RULE_importDeleteOnStatement = 23, + RULE_importWhereStatement = 24, RULE_importPrecedingFilterStatement = 25, + RULE_importColumnsStatement = 26, RULE_importColumnDesc = 27, RULE_channelDescriptions = 28, + RULE_channelDescription = 29, RULE_supportedRefreshStatement = 30, RULE_supportedCleanStatement = 31, + RULE_unsupportedRefreshStatement = 32, RULE_unsupportedCleanStatement = 33, + RULE_supportedCancelStatement = 34, RULE_unsupportedCancelStatement = 35, + RULE_supportedAdminStatement = 36, RULE_supportedRecoverStatement = 37, + RULE_unsupportedAdminStatement = 38, RULE_baseTableRef = 39, RULE_wildWhere = 40, + RULE_unsupportedTransactionStatement = 41, RULE_unsupportedGrantRevokeStatement = 42, + RULE_privilege = 43, RULE_privilegeList = 44, RULE_unsupportedAlterStatement = 45, + RULE_alterSystemClause = 46, RULE_dropRollupClause = 47, RULE_addRollupClause = 48, + RULE_alterTableClause = 49, RULE_columnPosition = 50, RULE_toRollup = 51, + RULE_fromRollup = 52, RULE_unsupportedDropStatement = 53, RULE_supportedStatsStatement = 54, + RULE_unsupportedStatsStatement = 55, RULE_analyzeProperties = 56, RULE_unsupportedCreateStatement = 57, + RULE_workloadPolicyActions = 58, RULE_workloadPolicyAction = 59, RULE_workloadPolicyConditions = 60, + RULE_workloadPolicyCondition = 61, RULE_storageBackend = 62, RULE_passwordOption = 63, + RULE_functionArguments = 64, RULE_dataTypeList = 65, RULE_supportedSetStatement = 66, + RULE_optionWithType = 67, RULE_optionWithoutType = 68, RULE_variable = 69, + RULE_transactionAccessMode = 70, RULE_isolationLevel = 71, RULE_supportedUnsetStatement = 72, + RULE_supportedUseStatement = 73, RULE_unsupportedUseStatement = 74, RULE_unsupportedDmlStatement = 75, + RULE_stageAndPattern = 76, RULE_unsupportedKillStatement = 77, RULE_supportedDescribeStatement = 78, + RULE_constraint = 79, RULE_partitionSpec = 80, RULE_partitionTable = 81, + RULE_identityOrFunctionList = 82, RULE_identityOrFunction = 83, RULE_dataDesc = 84, + RULE_statementScope = 85, RULE_buildMode = 86, RULE_refreshTrigger = 87, + RULE_refreshSchedule = 88, RULE_refreshMethod = 89, RULE_mvPartition = 90, + RULE_identifierOrText = 91, RULE_identifierOrTextOrAsterisk = 92, RULE_multipartIdentifierOrAsterisk = 93, + RULE_identifierOrAsterisk = 94, RULE_userIdentify = 95, RULE_grantUserIdentify = 96, + RULE_explain = 97, RULE_explainCommand = 98, RULE_planType = 99, RULE_replayCommand = 100, + RULE_replayType = 101, RULE_mergeType = 102, RULE_preFilterClause = 103, + RULE_deleteOnClause = 104, RULE_sequenceColClause = 105, RULE_colFromPath = 106, + RULE_colMappingList = 107, RULE_mappingExpr = 108, RULE_withRemoteStorageSystem = 109, + RULE_resourceDesc = 110, RULE_mysqlDataDesc = 111, RULE_skipLines = 112, + RULE_outFileClause = 113, RULE_query = 114, RULE_queryTerm = 115, RULE_setQuantifier = 116, + RULE_queryPrimary = 117, RULE_querySpecification = 118, RULE_cte = 119, + RULE_aliasQuery = 120, RULE_columnAliases = 121, RULE_selectClause = 122, + RULE_selectColumnClause = 123, RULE_whereClause = 124, RULE_fromClause = 125, + RULE_intoClause = 126, RULE_bulkCollectClause = 127, RULE_tableRow = 128, + RULE_relations = 129, RULE_relation = 130, RULE_joinRelation = 131, RULE_distributeType = 132, + RULE_relationHint = 133, RULE_aggClause = 134, RULE_groupingElement = 135, + RULE_groupingSet = 136, RULE_havingClause = 137, RULE_qualifyClause = 138, + RULE_selectHint = 139, RULE_hintStatement = 140, RULE_hintAssignment = 141, + RULE_updateAssignment = 142, RULE_updateAssignmentSeq = 143, RULE_lateralView = 144, + RULE_queryOrganization = 145, RULE_sortClause = 146, RULE_sortItem = 147, + RULE_limitClause = 148, RULE_partitionClause = 149, RULE_joinType = 150, + RULE_joinCriteria = 151, RULE_identifierList = 152, RULE_identifierSeq = 153, + RULE_optScanParams = 154, RULE_relationPrimary = 155, RULE_materializedViewName = 156, + RULE_propertyClause = 157, RULE_propertyItemList = 158, RULE_propertyItem = 159, + RULE_propertyKey = 160, RULE_propertyValue = 161, RULE_tableAlias = 162, + RULE_multipartIdentifier = 163, RULE_simpleColumnDefs = 164, RULE_simpleColumnDef = 165, + RULE_columnDefs = 166, RULE_columnDef = 167, RULE_indexDefs = 168, RULE_indexDef = 169, + RULE_partitionsDef = 170, RULE_partitionDef = 171, RULE_lessThanPartitionDef = 172, + RULE_fixedPartitionDef = 173, RULE_stepPartitionDef = 174, RULE_inPartitionDef = 175, + RULE_partitionValueList = 176, RULE_partitionValueDef = 177, RULE_rollupDefs = 178, + RULE_rollupDef = 179, RULE_aggTypeDef = 180, RULE_tabletList = 181, RULE_inlineTable = 182, + RULE_namedExpression = 183, RULE_namedExpressionSeq = 184, RULE_expression = 185, + RULE_lambdaExpression = 186, RULE_booleanExpression = 187, RULE_rowConstructor = 188, + RULE_rowConstructorItem = 189, RULE_predicate = 190, RULE_valueExpression = 191, + RULE_primaryExpression = 192, RULE_exceptOrReplace = 193, RULE_castDataType = 194, + RULE_functionCallExpression = 195, RULE_functionIdentifier = 196, RULE_functionNameIdentifier = 197, + RULE_windowSpec = 198, RULE_windowFrame = 199, RULE_frameUnits = 200, + RULE_frameBoundary = 201, RULE_qualifiedName = 202, RULE_specifiedPartition = 203, + RULE_constant = 204, RULE_comparisonOperator = 205, RULE_booleanValue = 206, + RULE_whenClause = 207, RULE_interval = 208, RULE_unitIdentifier = 209, + RULE_dataTypeWithNullable = 210, RULE_dataType = 211, RULE_primitiveColType = 212, + RULE_complexColTypeList = 213, RULE_complexColType = 214, RULE_variantSubColTypeList = 215, + RULE_variantSubColType = 216, RULE_variantSubColMatchType = 217, RULE_commentSpec = 218, + RULE_sample = 219, RULE_sampleMethod = 220, RULE_tableSnapshot = 221, + RULE_errorCapturingIdentifier = 222, RULE_errorCapturingIdentifierExtra = 223, + RULE_identifier = 224, RULE_strictIdentifier = 225, RULE_quotedIdentifier = 226, + RULE_number = 227, RULE_nonReserved = 228; + private static String[] makeRuleNames() { + return new String[] { + "multiStatements", "singleStatement", "statement", "statementBase", "unsupportedStatement", + "materializedViewStatement", "supportedJobStatement", "constraintStatement", + "supportedDmlStatement", "supportedCreateStatement", "supportedAlterStatement", + "supportedDropStatement", "supportedShowStatement", "supportedLoadStatement", + "supportedOtherStatement", "unsupportedOtherStatement", "warmUpItem", + "lockTable", "unsupportedShowStatement", "createRoutineLoad", "unsupportedLoadStatement", + "loadProperty", "importSequenceStatement", "importDeleteOnStatement", + "importWhereStatement", "importPrecedingFilterStatement", "importColumnsStatement", + "importColumnDesc", "channelDescriptions", "channelDescription", "supportedRefreshStatement", + "supportedCleanStatement", "unsupportedRefreshStatement", "unsupportedCleanStatement", + "supportedCancelStatement", "unsupportedCancelStatement", "supportedAdminStatement", + "supportedRecoverStatement", "unsupportedAdminStatement", "baseTableRef", + "wildWhere", "unsupportedTransactionStatement", "unsupportedGrantRevokeStatement", + "privilege", "privilegeList", "unsupportedAlterStatement", "alterSystemClause", + "dropRollupClause", "addRollupClause", "alterTableClause", "columnPosition", + "toRollup", "fromRollup", "unsupportedDropStatement", "supportedStatsStatement", + "unsupportedStatsStatement", "analyzeProperties", "unsupportedCreateStatement", + "workloadPolicyActions", "workloadPolicyAction", "workloadPolicyConditions", + "workloadPolicyCondition", "storageBackend", "passwordOption", "functionArguments", + "dataTypeList", "supportedSetStatement", "optionWithType", "optionWithoutType", + "variable", "transactionAccessMode", "isolationLevel", "supportedUnsetStatement", + "supportedUseStatement", "unsupportedUseStatement", "unsupportedDmlStatement", + "stageAndPattern", "unsupportedKillStatement", "supportedDescribeStatement", + "constraint", "partitionSpec", "partitionTable", "identityOrFunctionList", + "identityOrFunction", "dataDesc", "statementScope", "buildMode", "refreshTrigger", + "refreshSchedule", "refreshMethod", "mvPartition", "identifierOrText", + "identifierOrTextOrAsterisk", "multipartIdentifierOrAsterisk", "identifierOrAsterisk", + "userIdentify", "grantUserIdentify", "explain", "explainCommand", "planType", + "replayCommand", "replayType", "mergeType", "preFilterClause", "deleteOnClause", + "sequenceColClause", "colFromPath", "colMappingList", "mappingExpr", + "withRemoteStorageSystem", "resourceDesc", "mysqlDataDesc", "skipLines", + "outFileClause", "query", "queryTerm", "setQuantifier", "queryPrimary", + "querySpecification", "cte", "aliasQuery", "columnAliases", "selectClause", + "selectColumnClause", "whereClause", "fromClause", "intoClause", "bulkCollectClause", + "tableRow", "relations", "relation", "joinRelation", "distributeType", + "relationHint", "aggClause", "groupingElement", "groupingSet", "havingClause", + "qualifyClause", "selectHint", "hintStatement", "hintAssignment", "updateAssignment", + "updateAssignmentSeq", "lateralView", "queryOrganization", "sortClause", + "sortItem", "limitClause", "partitionClause", "joinType", "joinCriteria", + "identifierList", "identifierSeq", "optScanParams", "relationPrimary", + "materializedViewName", "propertyClause", "propertyItemList", "propertyItem", + "propertyKey", "propertyValue", "tableAlias", "multipartIdentifier", + "simpleColumnDefs", "simpleColumnDef", "columnDefs", "columnDef", "indexDefs", + "indexDef", "partitionsDef", "partitionDef", "lessThanPartitionDef", + "fixedPartitionDef", "stepPartitionDef", "inPartitionDef", "partitionValueList", + "partitionValueDef", "rollupDefs", "rollupDef", "aggTypeDef", "tabletList", + "inlineTable", "namedExpression", "namedExpressionSeq", "expression", + "lambdaExpression", "booleanExpression", "rowConstructor", "rowConstructorItem", + "predicate", "valueExpression", "primaryExpression", "exceptOrReplace", + "castDataType", "functionCallExpression", "functionIdentifier", "functionNameIdentifier", + "windowSpec", "windowFrame", "frameUnits", "frameBoundary", "qualifiedName", + "specifiedPartition", "constant", "comparisonOperator", "booleanValue", + "whenClause", "interval", "unitIdentifier", "dataTypeWithNullable", "dataType", + "primitiveColType", "complexColTypeList", "complexColType", "variantSubColTypeList", + "variantSubColType", "variantSubColMatchType", "commentSpec", "sample", + "sampleMethod", "tableSnapshot", "errorCapturingIdentifier", "errorCapturingIdentifierExtra", + "identifier", "strictIdentifier", "quotedIdentifier", "number", "nonReserved" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "';'", "'('", "')'", "','", "'.'", "'...'", "'['", "']'", "'{'", + "'}'", "'ACCOUNT_LOCK'", "'ACCOUNT_UNLOCK'", "'ACTIONS'", "'ADD'", "'ADMIN'", + "'AFTER'", "'AGG_STATE'", "'AGGREGATE'", "'ALIAS'", "'ALL'", "'ALTER'", + "'ANALYZE'", "'ANALYZED'", "'AND'", "'ANTI'", "'APPEND'", "'ARRAY'", + "'AS'", "'ASC'", "'AT'", "'AUTHORS'", "'AUTO'", "'AUTO_INCREMENT'", "'ALWAYS'", + "'BACKEND'", "'BACKENDS'", "'BACKUP'", "'BEGIN'", "'BELONG'", "'BETWEEN'", + "'BIGINT'", "'BIN'", "'BINARY'", "'BINLOG'", "'BITAND'", "'BITMAP'", + "'BITMAP_EMPTY'", "'BITMAP_UNION'", "'BITOR'", "'BITXOR'", "'BLOB'", + "'BOOLEAN'", "'BRIEF'", "'BROKER'", "'BUCKETS'", "'BUILD'", "'BUILTIN'", + "'BULK'", "'BY'", "'CACHE'", "'CACHED'", "'CALL'", "'CANCEL'", "'CASE'", + "'CAST'", "'CATALOG'", "'CATALOGS'", "'CHAIN'", null, "'CHARSET'", "'CHECK'", + "'CLEAN'", "'CLUSTER'", "'CLUSTERS'", "'COLLATE'", "'COLLATION'", "'COLLECT'", + "'COLOCATE'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", + "'COMPACT'", "'COMPLETE'", "'COMPRESS_TYPE'", "'COMPUTE'", "'CONDITIONS'", + "'CONFIG'", "'CONNECTION'", "'CONNECTION_ID'", "'CONSISTENT'", "'CONSTRAINT'", + "'CONSTRAINTS'", "'CONVERT'", "'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'", + "'COPY'", "'COUNT'", "'CREATE'", "'CREATION'", "'CRON'", "'CROSS'", "'CUBE'", + "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_TIME'", + "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATABASE'", "'DATABASES'", + "'DATE'", "'DATETIME'", "'DATETIMEV2'", "'DATEV2'", "'DATETIMEV1'", "'DATEV1'", + "'DAY'", "'DECIMAL'", "'DECIMALV2'", "'DECIMALV3'", "'DECOMMISSION'", + "'DEFAULT'", "'DEFERRED'", "'DELETE'", "'DEMAND'", "'DESC'", "'DESCRIBE'", + "'DIAGNOSE'", "'DIAGNOSIS'", "'DISK'", "'DISTINCT'", "'DISTINCTPC'", + "'DISTINCTPCSA'", "'DISTRIBUTED'", "'DISTRIBUTION'", "'DIV'", "'DO'", + "'DORIS_INTERNAL_TABLE_ID'", "'DOUBLE'", "'DROP'", "'DROPP'", "'DUAL'", + "'DUMP'", "'DUPLICATE'", "'DYNAMIC'", "'E'", "'ELSE'", "'ENABLE'", "'ENCRYPTKEY'", + "'ENCRYPTKEYS'", "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ENTER'", + "'ERRORS'", "'EVENTS'", "'EVERY'", "'EXCEPT'", "'EXCLUDE'", "'EXECUTE'", + "'EXISTS'", "'EXPIRED'", "'EXPLAIN'", "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", + "'EXTRACT'", "'FAILED_LOGIN_ATTEMPTS'", "'FALSE'", "'FAST'", "'FEATURE'", + "'FIELDS'", "'FILE'", "'FILTER'", "'FIRST'", "'FLOAT'", "'FOLLOWER'", + "'FOLLOWING'", "'FOR'", "'FOREIGN'", "'FORCE'", "'FORMAT'", "'FREE'", + "'FROM'", "'FRONTEND'", "'FRONTENDS'", "'FULL'", "'FUNCTION'", "'FUNCTIONS'", + "'GENERATED'", "'GENERIC'", "'GLOBAL'", "'GRANT'", "'GRANTS'", "'GRAPH'", + "'GROUP'", "'GROUPING'", "'GROUPS'", "'HASH'", "'HAVING'", "'HDFS'", + "'HELP'", "'HISTOGRAM'", "'HLL'", "'HLL_UNION'", "'HOSTNAME'", "'HOTSPOT'", + "'HOUR'", "'HUB'", "'IDENTIFIED'", "'IF'", "'IGNORE'", "'IMMEDIATE'", + "'IN'", "'INCREMENTAL'", "'INDEX'", "'INDEXES'", "'INFILE'", "'INNER'", + "'INSERT'", "'INSTALL'", "'INT'", "'INTEGER'", "'INTERMEDIATE'", "'INTERSECT'", + "'INTERVAL'", "'INTO'", "'INVERTED'", "'IPV4'", "'IPV6'", "'IS'", "'IS_NOT_NULL_PRED'", + "'IS_NULL_PRED'", "'ISNULL'", "'ISOLATION'", "'JOB'", "'JOBS'", "'JOIN'", + "'JSON'", "'JSONB'", "'KEY'", "'KEYS'", "'KILL'", "'LABEL'", "'LARGEINT'", + "'LAST'", "'LATERAL'", "'LDAP'", "'LDAP_ADMIN_PASSWORD'", "'LEFT'", "'LESS'", + "'LEVEL'", "'LIKE'", "'LIMIT'", "'LINES'", "'LINK'", "'LIST'", "'LOAD'", + "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", "'LOCATION'", "'LOCK'", + "'LOGICAL'", "'LOW_PRIORITY'", "'MANUAL'", "'MAP'", "'MATCH'", "'MATCH_ALL'", + "'MATCH_ANY'", "'MATCH_PHRASE'", "'MATCH_PHRASE_EDGE'", "'MATCH_PHRASE_PREFIX'", + "'MATCH_REGEXP'", "'MATCH_NAME'", "'MATCH_NAME_GLOB'", "'MATERIALIZED'", + "'MAX'", "'MAXVALUE'", "'MEMO'", "'MERGE'", "'MIGRATE'", "'MIGRATIONS'", + "'MIN'", "'MINUS'", "'MINUTE'", "'MODIFY'", "'MONTH'", "'MTMV'", "'NAME'", + "'NAMES'", "'NATURAL'", "'NEGATIVE'", "'NEVER'", "'NEXT'", "'NGRAM_BF'", + "'NO'", "'NO_USE_MV'", "'NON_NULLABLE'", "'NOT'", "'NULL'", "'NULLS'", + "'OBSERVER'", "'OF'", "'OFFSET'", "'ON'", "'ONLY'", "'OPEN'", "'OPTIMIZED'", + "'OR'", "'ORDER'", "'OUTER'", "'OUTFILE'", "'OVER'", "'OVERWRITE'", "'PARAMETER'", + "'PARSED'", "'PARTITION'", "'PARTITIONS'", "'PASSWORD'", "'PASSWORD_EXPIRE'", + "'PASSWORD_HISTORY'", "'PASSWORD_LOCK_TIME'", "'PASSWORD_REUSE'", "'PATH'", + "'PAUSE'", "'PERCENT'", "'PERIOD'", "'PERMISSIVE'", "'PHYSICAL'", "'PI'", + "'?'", "'PLAN'", "'PLAY'", "'PRIVILEGES'", "'PROCESS'", "'PLUGIN'", "'PLUGINS'", + "'POLICY'", "'PRECEDING'", "'PREPARE'", "'PRIMARY'", "'PROC'", "'PROCEDURE'", + "'PROCESSLIST'", "'PROFILE'", "'PROPERTIES'", "'PROPERTY'", "'QUANTILE_STATE'", + "'QUANTILE_UNION'", "'QUERY'", "'QUEUED'", "'QUOTA'", "'QUALIFY'", "'QUARTER'", + "'RANDOM'", "'RANGE'", "'READ'", "'REAL'", "'REBALANCE'", "'RECENT'", + "'RECOVER'", "'RECYCLE'", "'REFRESH'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", + "'RENAME'", "'REPAIR'", "'REPEATABLE'", "'REPLACE'", "'REPLACE_IF_NOT_NULL'", + "'REPLAYER'", "'REPLICA'", "'REPOSITORIES'", "'REPOSITORY'", "'RESOURCE'", + "'RESOURCES'", "'RESTORE'", "'RESTRICTIVE'", "'RESUME'", "'RETURNS'", + "'REVOKE'", "'REWRITTEN'", "'RIGHT'", "'RLIKE'", "'ROLE'", "'ROLES'", + "'ROLLBACK'", "'ROLLUP'", "'ROUTINE'", "'ROW'", "'ROWS'", "'S3'", "'SAMPLE'", + "'SCHEDULE'", "'SCHEDULER'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SELECT'", + "'SEMI'", "'SERIALIZABLE'", "'SESSION'", "'SESSION_USER'", "'SET'", "'SETS'", + "'SET_SESSION_VARIABLE'", "'SHAPE'", "'SHOW'", "'SIGNED'", "'SKEW'", + "'SMALLINT'", "'SNAPSHOT'", "'SONAME'", "'SPLIT'", "'SQL'", "'SQL_BLOCK_RULE'", + "'STAGE'", "'STAGES'", "'START'", "'STARTS'", "'STATS'", "'STATUS'", + "'STOP'", "'STORAGE'", "'STREAM'", "'STREAMING'", "'STRING'", "'STRUCT'", + "'SUM'", "'SUPERUSER'", "'SWITCH'", "'SYNC'", "'SYSTEM'", "'TABLE'", + "'TABLES'", "'TABLESAMPLE'", "'TABLET'", "'TABLETS'", "'TASK'", "'TASKS'", + "'TEMPORARY'", "'TERMINATED'", "'TEXT'", "'THAN'", "'THEN'", "'TIME'", + "'TIMESTAMP'", "'TINYINT'", "'TO'", "'TRANSACTION'", "'TRASH'", "'TREE'", + "'TRIGGERS'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", "'TYPE_CAST'", + "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNINSTALL'", "'UNION'", + "'UNIQUE'", "'UNLOCK'", "'UNSET'", "'UNSIGNED'", "'UP'", "'UPDATE'", + "'USE'", "'USER'", "'USE_MV'", "'USING'", "'VALUE'", "'VALUES'", "'VARCHAR'", + "'VARIABLE'", "'VARIABLES'", "'VARIANT'", "'VAULT'", "'VAULTS'", "'VERBOSE'", + "'VERSION'", "'VIEW'", "'VIEWS'", "'WARM'", "'WARNINGS'", "'WEEK'", "'WHEN'", + "'WHERE'", "'WHITELIST'", "'WITH'", "'WORK'", "'WORKLOAD'", "'WRITE'", + "'XOR'", "'YEAR'", null, "'<=>'", null, "'<'", null, "'>'", null, "'+'", + "'-'", "'*'", "'/'", "'%'", "'~'", "'&'", "'&&'", "'!'", "'|'", "'||'", + "'^'", "':'", "'->'", "'/*+'", "'*/'", "'/*'", "'@'", "'@@'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "SEMICOLON", "LEFT_PAREN", "RIGHT_PAREN", "COMMA", "DOT", "DOTDOTDOT", + "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "ACCOUNT_LOCK", + "ACCOUNT_UNLOCK", "ACTIONS", "ADD", "ADMIN", "AFTER", "AGG_STATE", "AGGREGATE", + "ALIAS", "ALL", "ALTER", "ANALYZE", "ANALYZED", "AND", "ANTI", "APPEND", + "ARRAY", "AS", "ASC", "AT", "AUTHORS", "AUTO", "AUTO_INCREMENT", "ALWAYS", + "BACKEND", "BACKENDS", "BACKUP", "BEGIN", "BELONG", "BETWEEN", "BIGINT", + "BIN", "BINARY", "BINLOG", "BITAND", "BITMAP", "BITMAP_EMPTY", "BITMAP_UNION", + "BITOR", "BITXOR", "BLOB", "BOOLEAN", "BRIEF", "BROKER", "BUCKETS", "BUILD", + "BUILTIN", "BULK", "BY", "CACHE", "CACHED", "CALL", "CANCEL", "CASE", + "CAST", "CATALOG", "CATALOGS", "CHAIN", "CHAR", "CHARSET", "CHECK", "CLEAN", + "CLUSTER", "CLUSTERS", "COLLATE", "COLLATION", "COLLECT", "COLOCATE", + "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETE", + "COMPRESS_TYPE", "COMPUTE", "CONDITIONS", "CONFIG", "CONNECTION", "CONNECTION_ID", + "CONSISTENT", "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CONVERT_LSC", + "COPY", "COUNT", "CREATE", "CREATION", "CRON", "CROSS", "CUBE", "CURRENT", + "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", + "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", + "DATETIMEV2", "DATEV2", "DATETIMEV1", "DATEV1", "DAY", "DECIMAL", "DECIMALV2", + "DECIMALV3", "DECOMMISSION", "DEFAULT", "DEFERRED", "DELETE", "DEMAND", + "DESC", "DESCRIBE", "DIAGNOSE", "DIAGNOSIS", "DISK", "DISTINCT", "DISTINCTPC", + "DISTINCTPCSA", "DISTRIBUTED", "DISTRIBUTION", "DIV", "DO", "DORIS_INTERNAL_TABLE_ID", + "DOUBLE", "DROP", "DROPP", "DUAL", "DUMP", "DUPLICATE", "DYNAMIC", "E", + "ELSE", "ENABLE", "ENCRYPTKEY", "ENCRYPTKEYS", "END", "ENDS", "ENGINE", + "ENGINES", "ENTER", "ERRORS", "EVENTS", "EVERY", "EXCEPT", "EXCLUDE", + "EXECUTE", "EXISTS", "EXPIRED", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", + "EXTRACT", "FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FEATURE", "FIELDS", + "FILE", "FILTER", "FIRST", "FLOAT", "FOLLOWER", "FOLLOWING", "FOR", "FOREIGN", + "FORCE", "FORMAT", "FREE", "FROM", "FRONTEND", "FRONTENDS", "FULL", "FUNCTION", + "FUNCTIONS", "GENERATED", "GENERIC", "GLOBAL", "GRANT", "GRANTS", "GRAPH", + "GROUP", "GROUPING", "GROUPS", "HASH", "HAVING", "HDFS", "HELP", "HISTOGRAM", + "HLL", "HLL_UNION", "HOSTNAME", "HOTSPOT", "HOUR", "HUB", "IDENTIFIED", + "IF", "IGNORE", "IMMEDIATE", "IN", "INCREMENTAL", "INDEX", "INDEXES", + "INFILE", "INNER", "INSERT", "INSTALL", "INT", "INTEGER", "INTERMEDIATE", + "INTERSECT", "INTERVAL", "INTO", "INVERTED", "IPV4", "IPV6", "IS", "IS_NOT_NULL_PRED", + "IS_NULL_PRED", "ISNULL", "ISOLATION", "JOB", "JOBS", "JOIN", "JSON", + "JSONB", "KEY", "KEYS", "KILL", "LABEL", "LARGEINT", "LAST", "LATERAL", + "LDAP", "LDAP_ADMIN_PASSWORD", "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", + "LINES", "LINK", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", + "LOCATION", "LOCK", "LOGICAL", "LOW_PRIORITY", "MANUAL", "MAP", "MATCH", + "MATCH_ALL", "MATCH_ANY", "MATCH_PHRASE", "MATCH_PHRASE_EDGE", "MATCH_PHRASE_PREFIX", + "MATCH_REGEXP", "MATCH_NAME", "MATCH_NAME_GLOB", "MATERIALIZED", "MAX", + "MAXVALUE", "MEMO", "MERGE", "MIGRATE", "MIGRATIONS", "MIN", "MINUS", + "MINUTE", "MODIFY", "MONTH", "MTMV", "NAME", "NAMES", "NATURAL", "NEGATIVE", + "NEVER", "NEXT", "NGRAM_BF", "NO", "NO_USE_MV", "NON_NULLABLE", "NOT", + "NULL", "NULLS", "OBSERVER", "OF", "OFFSET", "ON", "ONLY", "OPEN", "OPTIMIZED", + "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "OVERWRITE", "PARAMETER", + "PARSED", "PARTITION", "PARTITIONS", "PASSWORD", "PASSWORD_EXPIRE", "PASSWORD_HISTORY", + "PASSWORD_LOCK_TIME", "PASSWORD_REUSE", "PATH", "PAUSE", "PERCENT", "PERIOD", + "PERMISSIVE", "PHYSICAL", "PI", "PLACEHOLDER", "PLAN", "PLAY", "PRIVILEGES", + "PROCESS", "PLUGIN", "PLUGINS", "POLICY", "PRECEDING", "PREPARE", "PRIMARY", + "PROC", "PROCEDURE", "PROCESSLIST", "PROFILE", "PROPERTIES", "PROPERTY", + "QUANTILE_STATE", "QUANTILE_UNION", "QUERY", "QUEUED", "QUOTA", "QUALIFY", + "QUARTER", "RANDOM", "RANGE", "READ", "REAL", "REBALANCE", "RECENT", + "RECOVER", "RECYCLE", "REFRESH", "REFERENCES", "REGEXP", "RELEASE", "RENAME", + "REPAIR", "REPEATABLE", "REPLACE", "REPLACE_IF_NOT_NULL", "REPLAYER", + "REPLICA", "REPOSITORIES", "REPOSITORY", "RESOURCE", "RESOURCES", "RESTORE", + "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITTEN", "RIGHT", "RLIKE", + "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW", "ROWS", "S3", + "SAMPLE", "SCHEDULE", "SCHEDULER", "SCHEMA", "SCHEMAS", "SECOND", "SELECT", + "SEMI", "SERIALIZABLE", "SESSION", "SESSION_USER", "SET", "SETS", "SET_SESSION_VARIABLE", + "SHAPE", "SHOW", "SIGNED", "SKEW", "SMALLINT", "SNAPSHOT", "SONAME", + "SPLIT", "SQL", "SQL_BLOCK_RULE", "STAGE", "STAGES", "START", "STARTS", + "STATS", "STATUS", "STOP", "STORAGE", "STREAM", "STREAMING", "STRING", + "STRUCT", "SUM", "SUPERUSER", "SWITCH", "SYNC", "SYSTEM", "TABLE", "TABLES", + "TABLESAMPLE", "TABLET", "TABLETS", "TASK", "TASKS", "TEMPORARY", "TERMINATED", + "TEXT", "THAN", "THEN", "TIME", "TIMESTAMP", "TINYINT", "TO", "TRANSACTION", + "TRASH", "TREE", "TRIGGERS", "TRIM", "TRUE", "TRUNCATE", "TYPE", "TYPECAST", + "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNINSTALL", "UNION", "UNIQUE", + "UNLOCK", "UNSET", "UNSIGNED", "UP", "UPDATE", "USE", "USER", "USE_MV", + "USING", "VALUE", "VALUES", "VARCHAR", "VARIABLE", "VARIABLES", "VARIANT", + "VAULT", "VAULTS", "VERBOSE", "VERSION", "VIEW", "VIEWS", "WARM", "WARNINGS", + "WEEK", "WHEN", "WHERE", "WHITELIST", "WITH", "WORK", "WORKLOAD", "WRITE", + "XOR", "YEAR", "EQ", "NSEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", + "SUBTRACT", "ASTERISK", "SLASH", "MOD", "TILDE", "AMPERSAND", "LOGICALAND", + "LOGICALNOT", "PIPE", "DOUBLEPIPES", "HAT", "COLON", "ARROW", "HINT_START", + "HINT_END", "COMMENT_START", "ATSIGN", "DOUBLEATSIGN", "STRING_LITERAL", + "LEADING_STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", + "INTEGER_VALUE", "EXPONENT_VALUE", "DECIMAL_VALUE", "BIGDECIMAL_LITERAL", + "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "FROM_DUAL", "WS", "UNRECOGNIZED" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "DorisParser.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + + public boolean doris_legacy_SQL_syntax = true; + + public DorisParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @SuppressWarnings("CheckReturnValue") + public static class MultiStatementsContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(DorisParser.EOF, 0); } + public List SEMICOLON() { return getTokens(DorisParser.SEMICOLON); } + public TerminalNode SEMICOLON(int i) { + return getToken(DorisParser.SEMICOLON, i); + } + public List statement() { + return getRuleContexts(StatementContext.class); + } + public StatementContext statement(int i) { + return getRuleContext(StatementContext.class,i); + } + public MultiStatementsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multiStatements; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMultiStatements(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMultiStatements(this); + } + } + + public final MultiStatementsContext multiStatements() throws RecognitionException { + MultiStatementsContext _localctx = new MultiStatementsContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_multiStatements); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(461); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,0,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(458); + match(SEMICOLON); + } + } + } + setState(463); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,0,_ctx); + } + setState(465); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -4539628012066275324L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 234187180791038977L) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & -9205357638294962175L) != 0) || ((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & 9070979317763L) != 0) || ((((_la - 329)) & ~0x3f) == 0 && ((1L << (_la - 329)) & -9034185324535742335L) != 0) || ((((_la - 404)) & ~0x3f) == 0 && ((1L << (_la - 404)) & -9079256835876191711L) != 0) || ((((_la - 470)) & ~0x3f) == 0 && ((1L << (_la - 470)) & 136315955L) != 0)) { + { + setState(464); + statement(); + } + } + + setState(475); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,3,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(468); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(467); + match(SEMICOLON); + } + } + setState(470); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==SEMICOLON ); + setState(472); + statement(); + } + } + } + setState(477); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,3,_ctx); + } + setState(481); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==SEMICOLON) { + { + { + setState(478); + match(SEMICOLON); + } + } + setState(483); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(484); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SingleStatementContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(DorisParser.EOF, 0); } + public List SEMICOLON() { return getTokens(DorisParser.SEMICOLON); } + public TerminalNode SEMICOLON(int i) { + return getToken(DorisParser.SEMICOLON, i); + } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public SingleStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_singleStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSingleStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSingleStatement(this); + } + } + + public final SingleStatementContext singleStatement() throws RecognitionException { + SingleStatementContext _localctx = new SingleStatementContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_singleStatement); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(489); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,5,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(486); + match(SEMICOLON); + } + } + } + setState(491); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,5,_ctx); + } + setState(493); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -4539628012066275324L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 234187180791038977L) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & -9205357638294962175L) != 0) || ((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & 9070979317763L) != 0) || ((((_la - 329)) & ~0x3f) == 0 && ((1L << (_la - 329)) & -9034185324535742335L) != 0) || ((((_la - 404)) & ~0x3f) == 0 && ((1L << (_la - 404)) & -9079256835876191711L) != 0) || ((((_la - 470)) & ~0x3f) == 0 && ((1L << (_la - 470)) & 136315955L) != 0)) { + { + setState(492); + statement(); + } + } + + setState(498); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==SEMICOLON) { + { + { + setState(495); + match(SEMICOLON); + } + } + setState(500); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(501); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementContext extends ParserRuleContext { + public StatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement; } + + public StatementContext() { } + public void copyFrom(StatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateProcedureContext extends StatementContext { + public MultipartIdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateProcedureContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateProcedure(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateProcedure(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StatementBaseAliasContext extends StatementContext { + public StatementBaseContext statementBase() { + return getRuleContext(StatementBaseContext.class,0); + } + public StatementBaseAliasContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStatementBaseAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStatementBaseAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowProcedureStatusContext extends StatementContext { + public ValueExpressionContext pattern; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public ShowProcedureStatusContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowProcedureStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowProcedureStatus(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateProcedureContext extends StatementContext { + public MultipartIdentifierContext name; + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } + public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode OR() { return getToken(DorisParser.OR, 0); } + public CreateProcedureContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateProcedure(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateProcedure(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowConfigContext extends StatementContext { + public Token type; + public ValueExpressionContext pattern; + public Token backendId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CONFIG() { return getToken(DorisParser.CONFIG, 0); } + public TerminalNode FRONTEND() { return getToken(DorisParser.FRONTEND, 0); } + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowConfigContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowConfig(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowConfig(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CallProcedureContext extends StatementContext { + public MultipartIdentifierContext name; + public TerminalNode CALL() { return getToken(DorisParser.CALL, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CallProcedureContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCallProcedure(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCallProcedure(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropProcedureContext extends StatementContext { + public MultipartIdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } + public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropProcedureContext(StatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropProcedure(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropProcedure(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_statement); + int _la; + try { + int _alt; + setState(577); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + _localctx = new StatementBaseAliasContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(503); + statementBase(); + } + break; + case 2: + _localctx = new CallProcedureContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(504); + match(CALL); + setState(505); + ((CallProcedureContext)_localctx).name = multipartIdentifier(); + setState(506); + match(LEFT_PAREN); + setState(515); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(507); + expression(); + setState(512); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(508); + match(COMMA); + setState(509); + expression(); + } + } + setState(514); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(517); + match(RIGHT_PAREN); + } + break; + case 3: + _localctx = new CreateProcedureContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(526); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ALTER: + { + setState(519); + match(ALTER); + } + break; + case CREATE: + { + setState(520); + match(CREATE); + setState(523); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(521); + match(OR); + setState(522); + match(REPLACE); + } + } + + } + break; + case REPLACE: + { + setState(525); + match(REPLACE); + } + break; + default: + throw new NoViableAltException(this); + } + setState(528); + _la = _input.LA(1); + if ( !(_la==PROC || _la==PROCEDURE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(529); + ((CreateProcedureContext)_localctx).name = multipartIdentifier(); + setState(530); + match(LEFT_PAREN); + setState(534); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,12,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(531); + matchWildcard(); + } + } + } + setState(536); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,12,_ctx); + } + setState(537); + match(RIGHT_PAREN); + setState(541); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,13,_ctx); + while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1+1 ) { + { + { + setState(538); + matchWildcard(); + } + } + } + setState(543); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,13,_ctx); + } + } + break; + case 4: + _localctx = new DropProcedureContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(544); + match(DROP); + setState(545); + _la = _input.LA(1); + if ( !(_la==PROC || _la==PROCEDURE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(548); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(546); + match(IF); + setState(547); + match(EXISTS); + } + } + + setState(550); + ((DropProcedureContext)_localctx).name = multipartIdentifier(); + } + break; + case 5: + _localctx = new ShowProcedureStatusContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(551); + match(SHOW); + setState(552); + _la = _input.LA(1); + if ( !(_la==FUNCTION || _la==PROCEDURE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(553); + match(STATUS); + setState(557); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LIKE: + { + setState(554); + match(LIKE); + setState(555); + ((ShowProcedureStatusContext)_localctx).pattern = valueExpression(0); + } + break; + case WHERE: + { + setState(556); + whereClause(); + } + break; + case EOF: + case SEMICOLON: + break; + default: + break; + } + } + break; + case 6: + _localctx = new ShowCreateProcedureContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(559); + match(SHOW); + setState(560); + match(CREATE); + setState(561); + match(PROCEDURE); + setState(562); + ((ShowCreateProcedureContext)_localctx).name = multipartIdentifier(); + } + break; + case 7: + _localctx = new ShowConfigContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(564); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ADMIN) { + { + setState(563); + match(ADMIN); + } + } + + setState(566); + match(SHOW); + setState(567); + ((ShowConfigContext)_localctx).type = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==BACKEND || _la==FRONTEND) ) { + ((ShowConfigContext)_localctx).type = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(568); + match(CONFIG); + setState(571); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(569); + match(LIKE); + setState(570); + ((ShowConfigContext)_localctx).pattern = valueExpression(0); + } + } + + setState(575); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(573); + match(FROM); + setState(574); + ((ShowConfigContext)_localctx).backendId = match(INTEGER_VALUE); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementBaseContext extends ParserRuleContext { + public StatementBaseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementBase; } + + public StatementBaseContext() { } + public void copyFrom(StatementBaseContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedSetStatementAliasContext extends StatementBaseContext { + public SupportedSetStatementContext supportedSetStatement() { + return getRuleContext(SupportedSetStatementContext.class,0); + } + public SupportedSetStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedSetStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedSetStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedDmlStatementAliasContext extends StatementBaseContext { + public SupportedDmlStatementContext supportedDmlStatement() { + return getRuleContext(SupportedDmlStatementContext.class,0); + } + public SupportedDmlStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedDmlStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedDmlStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedLoadStatementAliasContext extends StatementBaseContext { + public SupportedLoadStatementContext supportedLoadStatement() { + return getRuleContext(SupportedLoadStatementContext.class,0); + } + public SupportedLoadStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedLoadStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedLoadStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ConstraintStatementAliasContext extends StatementBaseContext { + public ConstraintStatementContext constraintStatement() { + return getRuleContext(ConstraintStatementContext.class,0); + } + public ConstraintStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConstraintStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConstraintStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedAlterStatementAliasContext extends StatementBaseContext { + public SupportedAlterStatementContext supportedAlterStatement() { + return getRuleContext(SupportedAlterStatementContext.class,0); + } + public SupportedAlterStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedAlterStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedAlterStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedCleanStatementAliasContext extends StatementBaseContext { + public SupportedCleanStatementContext supportedCleanStatement() { + return getRuleContext(SupportedCleanStatementContext.class,0); + } + public SupportedCleanStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedCleanStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedCleanStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedRecoverStatementAliasContext extends StatementBaseContext { + public SupportedRecoverStatementContext supportedRecoverStatement() { + return getRuleContext(SupportedRecoverStatementContext.class,0); + } + public SupportedRecoverStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedRecoverStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedRecoverStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedUnsetStatementAliasContext extends StatementBaseContext { + public SupportedUnsetStatementContext supportedUnsetStatement() { + return getRuleContext(SupportedUnsetStatementContext.class,0); + } + public SupportedUnsetStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedUnsetStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedUnsetStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedJobStatementAliasContext extends StatementBaseContext { + public SupportedJobStatementContext supportedJobStatement() { + return getRuleContext(SupportedJobStatementContext.class,0); + } + public SupportedJobStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedJobStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedJobStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedUseStatementAliasContext extends StatementBaseContext { + public SupportedUseStatementContext supportedUseStatement() { + return getRuleContext(SupportedUseStatementContext.class,0); + } + public SupportedUseStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedUseStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedUseStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedContext extends StatementBaseContext { + public UnsupportedStatementContext unsupportedStatement() { + return getRuleContext(UnsupportedStatementContext.class,0); + } + public UnsupportedContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnsupported(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnsupported(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class MaterializedViewStatementAliasContext extends StatementBaseContext { + public MaterializedViewStatementContext materializedViewStatement() { + return getRuleContext(MaterializedViewStatementContext.class,0); + } + public MaterializedViewStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMaterializedViewStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMaterializedViewStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StatementDefaultContext extends StatementBaseContext { + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public ExplainContext explain() { + return getRuleContext(ExplainContext.class,0); + } + public OutFileClauseContext outFileClause() { + return getRuleContext(OutFileClauseContext.class,0); + } + public StatementDefaultContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStatementDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStatementDefault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedAdminStatementAliasContext extends StatementBaseContext { + public SupportedAdminStatementContext supportedAdminStatement() { + return getRuleContext(SupportedAdminStatementContext.class,0); + } + public SupportedAdminStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedAdminStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedAdminStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedStatsStatementAliasContext extends StatementBaseContext { + public SupportedStatsStatementContext supportedStatsStatement() { + return getRuleContext(SupportedStatsStatementContext.class,0); + } + public SupportedStatsStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedStatsStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedStatsStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedDescribeStatementAliasContext extends StatementBaseContext { + public SupportedDescribeStatementContext supportedDescribeStatement() { + return getRuleContext(SupportedDescribeStatementContext.class,0); + } + public SupportedDescribeStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedDescribeStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedDescribeStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedDropStatementAliasContext extends StatementBaseContext { + public SupportedDropStatementContext supportedDropStatement() { + return getRuleContext(SupportedDropStatementContext.class,0); + } + public SupportedDropStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedDropStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedDropStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedCancelStatementAliasContext extends StatementBaseContext { + public SupportedCancelStatementContext supportedCancelStatement() { + return getRuleContext(SupportedCancelStatementContext.class,0); + } + public SupportedCancelStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedCancelStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedCancelStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedOtherStatementAliasContext extends StatementBaseContext { + public SupportedOtherStatementContext supportedOtherStatement() { + return getRuleContext(SupportedOtherStatementContext.class,0); + } + public SupportedOtherStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedOtherStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedOtherStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedCreateStatementAliasContext extends StatementBaseContext { + public SupportedCreateStatementContext supportedCreateStatement() { + return getRuleContext(SupportedCreateStatementContext.class,0); + } + public SupportedCreateStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedCreateStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedCreateStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedShowStatementAliasContext extends StatementBaseContext { + public SupportedShowStatementContext supportedShowStatement() { + return getRuleContext(SupportedShowStatementContext.class,0); + } + public SupportedShowStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedShowStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedShowStatementAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SupportedRefreshStatementAliasContext extends StatementBaseContext { + public SupportedRefreshStatementContext supportedRefreshStatement() { + return getRuleContext(SupportedRefreshStatementContext.class,0); + } + public SupportedRefreshStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedRefreshStatementAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedRefreshStatementAlias(this); + } + } + + public final StatementBaseContext statementBase() throws RecognitionException { + StatementBaseContext _localctx = new StatementBaseContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_statementBase); + int _la; + try { + setState(607); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { + case 1: + _localctx = new StatementDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(580); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { + { + setState(579); + explain(); + } + } + + setState(582); + query(); + setState(584); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTO) { + { + setState(583); + outFileClause(); + } + } + + } + break; + case 2: + _localctx = new SupportedDmlStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(586); + supportedDmlStatement(); + } + break; + case 3: + _localctx = new SupportedCreateStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(587); + supportedCreateStatement(); + } + break; + case 4: + _localctx = new SupportedAlterStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(588); + supportedAlterStatement(); + } + break; + case 5: + _localctx = new MaterializedViewStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(589); + materializedViewStatement(); + } + break; + case 6: + _localctx = new SupportedJobStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(590); + supportedJobStatement(); + } + break; + case 7: + _localctx = new ConstraintStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(591); + constraintStatement(); + } + break; + case 8: + _localctx = new SupportedCleanStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(592); + supportedCleanStatement(); + } + break; + case 9: + _localctx = new SupportedDescribeStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(593); + supportedDescribeStatement(); + } + break; + case 10: + _localctx = new SupportedDropStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(594); + supportedDropStatement(); + } + break; + case 11: + _localctx = new SupportedSetStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(595); + supportedSetStatement(); + } + break; + case 12: + _localctx = new SupportedUnsetStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(596); + supportedUnsetStatement(); + } + break; + case 13: + _localctx = new SupportedRefreshStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(597); + supportedRefreshStatement(); + } + break; + case 14: + _localctx = new SupportedShowStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(598); + supportedShowStatement(); + } + break; + case 15: + _localctx = new SupportedLoadStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(599); + supportedLoadStatement(); + } + break; + case 16: + _localctx = new SupportedCancelStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(600); + supportedCancelStatement(); + } + break; + case 17: + _localctx = new SupportedRecoverStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(601); + supportedRecoverStatement(); + } + break; + case 18: + _localctx = new SupportedAdminStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(602); + supportedAdminStatement(); + } + break; + case 19: + _localctx = new SupportedUseStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(603); + supportedUseStatement(); + } + break; + case 20: + _localctx = new SupportedOtherStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(604); + supportedOtherStatement(); + } + break; + case 21: + _localctx = new SupportedStatsStatementAliasContext(_localctx); + enterOuterAlt(_localctx, 21); + { + setState(605); + supportedStatsStatement(); + } + break; + case 22: + _localctx = new UnsupportedContext(_localctx); + enterOuterAlt(_localctx, 22); + { + setState(606); + unsupportedStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedStatementContext extends ParserRuleContext { + public UnsupportedUseStatementContext unsupportedUseStatement() { + return getRuleContext(UnsupportedUseStatementContext.class,0); + } + public UnsupportedDmlStatementContext unsupportedDmlStatement() { + return getRuleContext(UnsupportedDmlStatementContext.class,0); + } + public UnsupportedKillStatementContext unsupportedKillStatement() { + return getRuleContext(UnsupportedKillStatementContext.class,0); + } + public UnsupportedCreateStatementContext unsupportedCreateStatement() { + return getRuleContext(UnsupportedCreateStatementContext.class,0); + } + public UnsupportedDropStatementContext unsupportedDropStatement() { + return getRuleContext(UnsupportedDropStatementContext.class,0); + } + public UnsupportedStatsStatementContext unsupportedStatsStatement() { + return getRuleContext(UnsupportedStatsStatementContext.class,0); + } + public UnsupportedAlterStatementContext unsupportedAlterStatement() { + return getRuleContext(UnsupportedAlterStatementContext.class,0); + } + public UnsupportedGrantRevokeStatementContext unsupportedGrantRevokeStatement() { + return getRuleContext(UnsupportedGrantRevokeStatementContext.class,0); + } + public UnsupportedAdminStatementContext unsupportedAdminStatement() { + return getRuleContext(UnsupportedAdminStatementContext.class,0); + } + public UnsupportedTransactionStatementContext unsupportedTransactionStatement() { + return getRuleContext(UnsupportedTransactionStatementContext.class,0); + } + public UnsupportedCancelStatementContext unsupportedCancelStatement() { + return getRuleContext(UnsupportedCancelStatementContext.class,0); + } + public UnsupportedCleanStatementContext unsupportedCleanStatement() { + return getRuleContext(UnsupportedCleanStatementContext.class,0); + } + public UnsupportedRefreshStatementContext unsupportedRefreshStatement() { + return getRuleContext(UnsupportedRefreshStatementContext.class,0); + } + public UnsupportedLoadStatementContext unsupportedLoadStatement() { + return getRuleContext(UnsupportedLoadStatementContext.class,0); + } + public UnsupportedShowStatementContext unsupportedShowStatement() { + return getRuleContext(UnsupportedShowStatementContext.class,0); + } + public UnsupportedOtherStatementContext unsupportedOtherStatement() { + return getRuleContext(UnsupportedOtherStatementContext.class,0); + } + public UnsupportedStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnsupportedStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnsupportedStatement(this); + } + } + + public final UnsupportedStatementContext unsupportedStatement() throws RecognitionException { + UnsupportedStatementContext _localctx = new UnsupportedStatementContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_unsupportedStatement); + try { + setState(625); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(609); + unsupportedUseStatement(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(610); + unsupportedDmlStatement(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(611); + unsupportedKillStatement(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(612); + unsupportedCreateStatement(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(613); + unsupportedDropStatement(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(614); + unsupportedStatsStatement(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(615); + unsupportedAlterStatement(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(616); + unsupportedGrantRevokeStatement(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(617); + unsupportedAdminStatement(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(618); + unsupportedTransactionStatement(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(619); + unsupportedCancelStatement(); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(620); + unsupportedCleanStatement(); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(621); + unsupportedRefreshStatement(); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(622); + unsupportedLoadStatement(); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(623); + unsupportedShowStatement(); + } + break; + case 16: + enterOuterAlt(_localctx, 16); + { + setState(624); + unsupportedOtherStatement(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MaterializedViewStatementContext extends ParserRuleContext { + public MaterializedViewStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_materializedViewStatement; } + + public MaterializedViewStatementContext() { } + public void copyFrom(MaterializedViewStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RefreshMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode COMPLETE() { return getToken(DorisParser.COMPLETE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public RefreshMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshMTMV(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public IdentifierContext newName; + public PropertyItemListContext fileProperties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public List MATERIALIZED() { return getTokens(DorisParser.MATERIALIZED); } + public TerminalNode MATERIALIZED(int i) { + return getToken(DorisParser.MATERIALIZED, i); + } + public List VIEW() { return getTokens(DorisParser.VIEW); } + public TerminalNode VIEW(int i) { + return getToken(DorisParser.VIEW, i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public RefreshMethodContext refreshMethod() { + return getRuleContext(RefreshMethodContext.class,0); + } + public RefreshTriggerContext refreshTrigger() { + return getRuleContext(RefreshTriggerContext.class,0); + } + public AlterMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterMTMV(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public SimpleColumnDefsContext cols; + public IdentifierListContext keys; + public IdentifierListContext hashKeys; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public BuildModeContext buildMode() { + return getRuleContext(BuildModeContext.class,0); + } + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public List BY() { return getTokens(DorisParser.BY); } + public TerminalNode BY(int i) { + return getToken(DorisParser.BY, i); + } + public MvPartitionContext mvPartition() { + return getRuleContext(MvPartitionContext.class,0); + } + public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public SimpleColumnDefsContext simpleColumnDefs() { + return getRuleContext(SimpleColumnDefsContext.class,0); + } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } + public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } + public RefreshMethodContext refreshMethod() { + return getRuleContext(RefreshMethodContext.class,0); + } + public RefreshTriggerContext refreshTrigger() { + return getRuleContext(RefreshTriggerContext.class,0); + } + public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } + public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public CreateMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateMTMV(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ResumeMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ResumeMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeMTMV(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateMTMV(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelMTMVTaskContext extends MaterializedViewStatementContext { + public Token taskId; + public MultipartIdentifierContext mvName; + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public CancelMTMVTaskContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelMTMVTask(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelMTMVTask(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PauseMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PauseMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseMTMV(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropMTMVContext extends MaterializedViewStatementContext { + public MultipartIdentifierContext mvName; + public MultipartIdentifierContext tableName; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public DropMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropMTMV(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropMTMV(this); + } + } + + public final MaterializedViewStatementContext materializedViewStatement() throws RecognitionException { + MaterializedViewStatementContext _localctx = new MaterializedViewStatementContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_materializedViewStatement); + int _la; + try { + setState(766); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CREATE: + _localctx = new CreateMTMVContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(627); + match(CREATE); + setState(628); + match(MATERIALIZED); + setState(629); + match(VIEW); + setState(633); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(630); + match(IF); + setState(631); + match(NOT); + setState(632); + match(EXISTS); + } + } + + setState(635); + ((CreateMTMVContext)_localctx).mvName = multipartIdentifier(); + setState(640); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(636); + match(LEFT_PAREN); + setState(637); + ((CreateMTMVContext)_localctx).cols = simpleColumnDefs(); + setState(638); + match(RIGHT_PAREN); + } + } + + setState(643); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BUILD) { + { + setState(642); + buildMode(); + } + } + + setState(652); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==REFRESH) { + { + setState(645); + match(REFRESH); + setState(647); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AUTO || _la==COMPLETE) { + { + setState(646); + refreshMethod(); + } + } + + setState(650); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(649); + refreshTrigger(); + } + } + + } + } + + setState(659); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DUPLICATE || _la==KEY) { + { + setState(655); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DUPLICATE) { + { + setState(654); + match(DUPLICATE); + } + } + + setState(657); + match(KEY); + setState(658); + ((CreateMTMVContext)_localctx).keys = identifierList(); + } + } + + setState(663); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(661); + match(COMMENT); + setState(662); + match(STRING_LITERAL); + } + } + + setState(671); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(665); + match(PARTITION); + setState(666); + match(BY); + setState(667); + match(LEFT_PAREN); + setState(668); + mvPartition(); + setState(669); + match(RIGHT_PAREN); + } + } + + setState(684); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DISTRIBUTED) { + { + setState(673); + match(DISTRIBUTED); + setState(674); + match(BY); + setState(678); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HASH: + { + setState(675); + match(HASH); + setState(676); + ((CreateMTMVContext)_localctx).hashKeys = identifierList(); + } + break; + case RANDOM: + { + setState(677); + match(RANDOM); + } + break; + default: + throw new NoViableAltException(this); + } + setState(682); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BUCKETS) { + { + setState(680); + match(BUCKETS); + setState(681); + _la = _input.LA(1); + if ( !(_la==AUTO || _la==INTEGER_VALUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + } + } + + setState(687); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(686); + propertyClause(); + } + } + + setState(689); + match(AS); + setState(690); + query(); + } + break; + case REFRESH: + _localctx = new RefreshMTMVContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(692); + match(REFRESH); + setState(693); + match(MATERIALIZED); + setState(694); + match(VIEW); + setState(695); + ((RefreshMTMVContext)_localctx).mvName = multipartIdentifier(); + setState(699); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PARTITION: + case PARTITIONS: + case TEMPORARY: + { + setState(696); + partitionSpec(); + } + break; + case COMPLETE: + { + setState(697); + match(COMPLETE); + } + break; + case AUTO: + { + setState(698); + match(AUTO); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case ALTER: + _localctx = new AlterMTMVContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(701); + match(ALTER); + setState(702); + match(MATERIALIZED); + setState(703); + match(VIEW); + setState(704); + ((AlterMTMVContext)_localctx).mvName = multipartIdentifier(); + setState(728); + _errHandler.sync(this); + switch (_input.LA(1)) { + case RENAME: + { + { + setState(705); + match(RENAME); + setState(706); + ((AlterMTMVContext)_localctx).newName = identifier(); + } + } + break; + case REFRESH: + { + { + setState(707); + match(REFRESH); + setState(713); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) { + case 1: + { + setState(708); + refreshMethod(); + } + break; + case 2: + { + setState(709); + refreshTrigger(); + } + break; + case 3: + { + setState(710); + refreshMethod(); + setState(711); + refreshTrigger(); + } + break; + } + } + } + break; + case REPLACE: + { + setState(715); + match(REPLACE); + setState(716); + match(WITH); + setState(717); + match(MATERIALIZED); + setState(718); + match(VIEW); + setState(719); + ((AlterMTMVContext)_localctx).newName = identifier(); + setState(721); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(720); + propertyClause(); + } + } + + } + break; + case SET: + { + { + setState(723); + match(SET); + setState(724); + match(LEFT_PAREN); + setState(725); + ((AlterMTMVContext)_localctx).fileProperties = propertyItemList(); + setState(726); + match(RIGHT_PAREN); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case DROP: + _localctx = new DropMTMVContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(730); + match(DROP); + setState(731); + match(MATERIALIZED); + setState(732); + match(VIEW); + setState(735); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(733); + match(IF); + setState(734); + match(EXISTS); + } + } + + setState(737); + ((DropMTMVContext)_localctx).mvName = multipartIdentifier(); + setState(740); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(738); + match(ON); + setState(739); + ((DropMTMVContext)_localctx).tableName = multipartIdentifier(); + } + } + + } + break; + case PAUSE: + _localctx = new PauseMTMVContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(742); + match(PAUSE); + setState(743); + match(MATERIALIZED); + setState(744); + match(VIEW); + setState(745); + match(JOB); + setState(746); + match(ON); + setState(747); + ((PauseMTMVContext)_localctx).mvName = multipartIdentifier(); + } + break; + case RESUME: + _localctx = new ResumeMTMVContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(748); + match(RESUME); + setState(749); + match(MATERIALIZED); + setState(750); + match(VIEW); + setState(751); + match(JOB); + setState(752); + match(ON); + setState(753); + ((ResumeMTMVContext)_localctx).mvName = multipartIdentifier(); + } + break; + case CANCEL: + _localctx = new CancelMTMVTaskContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(754); + match(CANCEL); + setState(755); + match(MATERIALIZED); + setState(756); + match(VIEW); + setState(757); + match(TASK); + setState(758); + ((CancelMTMVTaskContext)_localctx).taskId = match(INTEGER_VALUE); + setState(759); + match(ON); + setState(760); + ((CancelMTMVTaskContext)_localctx).mvName = multipartIdentifier(); + } + break; + case SHOW: + _localctx = new ShowCreateMTMVContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(761); + match(SHOW); + setState(762); + match(CREATE); + setState(763); + match(MATERIALIZED); + setState(764); + match(VIEW); + setState(765); + ((ShowCreateMTMVContext)_localctx).mvName = multipartIdentifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedJobStatementContext extends ParserRuleContext { + public SupportedJobStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedJobStatement; } + + public SupportedJobStatementContext() { } + public void copyFrom(SupportedJobStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelJobTaskContext extends SupportedJobStatementContext { + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public CancelJobTaskContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelJobTask(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelJobTask(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ResumeJobContext extends SupportedJobStatementContext { + public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ResumeJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropJobContext extends SupportedJobStatementContext { + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public DropJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateScheduledJobContext extends SupportedJobStatementContext { + public MultipartIdentifierContext label; + public Token timeInterval; + public IdentifierContext timeUnit; + public Token startTime; + public Token endsTime; + public Token atTime; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode SCHEDULE() { return getToken(DorisParser.SCHEDULE, 0); } + public TerminalNode DO() { return getToken(DorisParser.DO, 0); } + public SupportedDmlStatementContext supportedDmlStatement() { + return getRuleContext(SupportedDmlStatementContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public TerminalNode EVERY() { return getToken(DorisParser.EVERY, 0); } + public TerminalNode AT() { return getToken(DorisParser.AT, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode CURRENT_TIMESTAMP() { return getToken(DorisParser.CURRENT_TIMESTAMP, 0); } + public TerminalNode STARTS() { return getToken(DorisParser.STARTS, 0); } + public TerminalNode ENDS() { return getToken(DorisParser.ENDS, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public CreateScheduledJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateScheduledJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateScheduledJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PauseJobContext extends SupportedJobStatementContext { + public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public PauseJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseJob(this); + } + } + + public final SupportedJobStatementContext supportedJobStatement() throws RecognitionException { + SupportedJobStatementContext _localctx = new SupportedJobStatementContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_supportedJobStatement); + int _la; + try { + setState(824); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CREATE: + _localctx = new CreateScheduledJobContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(768); + match(CREATE); + setState(769); + match(JOB); + setState(770); + ((CreateScheduledJobContext)_localctx).label = multipartIdentifier(); + setState(771); + match(ON); + setState(772); + match(SCHEDULE); + setState(792); + _errHandler.sync(this); + switch (_input.LA(1)) { + case EVERY: + { + { + setState(773); + match(EVERY); + setState(774); + ((CreateScheduledJobContext)_localctx).timeInterval = match(INTEGER_VALUE); + setState(775); + ((CreateScheduledJobContext)_localctx).timeUnit = identifier(); + setState(781); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STARTS) { + { + setState(776); + match(STARTS); + setState(779); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING_LITERAL: + { + setState(777); + ((CreateScheduledJobContext)_localctx).startTime = match(STRING_LITERAL); + } + break; + case CURRENT_TIMESTAMP: + { + setState(778); + match(CURRENT_TIMESTAMP); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + setState(785); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ENDS) { + { + setState(783); + match(ENDS); + setState(784); + ((CreateScheduledJobContext)_localctx).endsTime = match(STRING_LITERAL); + } + } + + } + } + break; + case AT: + { + { + setState(787); + match(AT); + setState(790); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING_LITERAL: + { + setState(788); + ((CreateScheduledJobContext)_localctx).atTime = match(STRING_LITERAL); + } + break; + case CURRENT_TIMESTAMP: + { + setState(789); + match(CURRENT_TIMESTAMP); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(795); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(794); + commentSpec(); + } + } + + setState(797); + match(DO); + setState(798); + supportedDmlStatement(); + } + break; + case PAUSE: + _localctx = new PauseJobContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(800); + match(PAUSE); + setState(801); + match(JOB); + setState(803); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(802); + wildWhere(); + } + } + + } + break; + case DROP: + _localctx = new DropJobContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(805); + match(DROP); + setState(806); + match(JOB); + setState(809); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(807); + match(IF); + setState(808); + match(EXISTS); + } + } + + setState(812); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(811); + wildWhere(); + } + } + + } + break; + case RESUME: + _localctx = new ResumeJobContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(814); + match(RESUME); + setState(815); + match(JOB); + setState(817); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(816); + wildWhere(); + } + } + + } + break; + case CANCEL: + _localctx = new CancelJobTaskContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(819); + match(CANCEL); + setState(820); + match(TASK); + setState(822); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(821); + wildWhere(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstraintStatementContext extends ParserRuleContext { + public ConstraintStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constraintStatement; } + + public ConstraintStatementContext() { } + public void copyFrom(ConstraintStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowConstraintContext extends ConstraintStatementContext { + public MultipartIdentifierContext table; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CONSTRAINTS() { return getToken(DorisParser.CONSTRAINTS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowConstraintContext(ConstraintStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowConstraint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowConstraint(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropConstraintContext extends ConstraintStatementContext { + public MultipartIdentifierContext table; + public ErrorCapturingIdentifierContext constraintName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode CONSTRAINT() { return getToken(DorisParser.CONSTRAINT, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public DropConstraintContext(ConstraintStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropConstraint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropConstraint(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddConstraintContext extends ConstraintStatementContext { + public MultipartIdentifierContext table; + public ErrorCapturingIdentifierContext constraintName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode CONSTRAINT() { return getToken(DorisParser.CONSTRAINT, 0); } + public ConstraintContext constraint() { + return getRuleContext(ConstraintContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public AddConstraintContext(ConstraintStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddConstraint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddConstraint(this); + } + } + + public final ConstraintStatementContext constraintStatement() throws RecognitionException { + ConstraintStatementContext _localctx = new ConstraintStatementContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_constraintStatement); + try { + setState(845); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) { + case 1: + _localctx = new AddConstraintContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(826); + match(ALTER); + setState(827); + match(TABLE); + setState(828); + ((AddConstraintContext)_localctx).table = multipartIdentifier(); + setState(829); + match(ADD); + setState(830); + match(CONSTRAINT); + setState(831); + ((AddConstraintContext)_localctx).constraintName = errorCapturingIdentifier(); + setState(832); + constraint(); + } + break; + case 2: + _localctx = new DropConstraintContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(834); + match(ALTER); + setState(835); + match(TABLE); + setState(836); + ((DropConstraintContext)_localctx).table = multipartIdentifier(); + setState(837); + match(DROP); + setState(838); + match(CONSTRAINT); + setState(839); + ((DropConstraintContext)_localctx).constraintName = errorCapturingIdentifier(); + } + break; + case 3: + _localctx = new ShowConstraintContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(841); + match(SHOW); + setState(842); + match(CONSTRAINTS); + setState(843); + match(FROM); + setState(844); + ((ShowConstraintContext)_localctx).table = multipartIdentifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedDmlStatementContext extends ParserRuleContext { + public SupportedDmlStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedDmlStatement; } + + public SupportedDmlStatementContext() { } + public void copyFrom(SupportedDmlStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class InsertTableContext extends SupportedDmlStatementContext { + public MultipartIdentifierContext tableName; + public Token tableId; + public IdentifierContext labelName; + public IdentifierListContext cols; + public IdentifierSeqContext hints; + public TerminalNode INSERT() { return getToken(DorisParser.INSERT, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public TerminalNode OVERWRITE() { return getToken(DorisParser.OVERWRITE, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode DORIS_INTERNAL_TABLE_ID() { return getToken(DorisParser.DORIS_INTERNAL_TABLE_ID, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ExplainContext explain() { + return getRuleContext(ExplainContext.class,0); + } + public CteContext cte() { + return getRuleContext(CteContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public InsertTableContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInsertTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInsertTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class LoadContext extends SupportedDmlStatementContext { + public MultipartIdentifierContext lableName; + public DataDescContext dataDesc; + public List dataDescs = new ArrayList(); + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List dataDesc() { + return getRuleContexts(DataDescContext.class); + } + public DataDescContext dataDesc(int i) { + return getRuleContext(DataDescContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public WithRemoteStorageSystemContext withRemoteStorageSystem() { + return getRuleContext(WithRemoteStorageSystemContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public LoadContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UpdateContext extends SupportedDmlStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode UPDATE() { return getToken(DorisParser.UPDATE, 0); } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public UpdateAssignmentSeqContext updateAssignmentSeq() { + return getRuleContext(UpdateAssignmentSeqContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ExplainContext explain() { + return getRuleContext(ExplainContext.class,0); + } + public CteContext cte() { + return getRuleContext(CteContext.class,0); + } + public FromClauseContext fromClause() { + return getRuleContext(FromClauseContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public UpdateContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUpdate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUpdate(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ReplayContext extends SupportedDmlStatementContext { + public ReplayCommandContext replayCommand() { + return getRuleContext(ReplayCommandContext.class,0); + } + public ReplayContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplay(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplay(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DeleteContext extends SupportedDmlStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ExplainContext explain() { + return getRuleContext(ExplainContext.class,0); + } + public CteContext cte() { + return getRuleContext(CteContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public RelationsContext relations() { + return getRuleContext(RelationsContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public DeleteContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDelete(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDelete(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ExportContext extends SupportedDmlStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierListContext partition; + public Token filePath; + public TerminalNode EXPORT() { return getToken(DorisParser.EXPORT, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public WithRemoteStorageSystemContext withRemoteStorageSystem() { + return getRuleContext(WithRemoteStorageSystemContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ExportContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExport(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExport(this); + } + } + + public final SupportedDmlStatementContext supportedDmlStatement() throws RecognitionException { + SupportedDmlStatementContext _localctx = new SupportedDmlStatementContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_supportedDmlStatement); + int _la; + try { + setState(962); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) { + case 1: + _localctx = new InsertTableContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(848); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { + { + setState(847); + explain(); + } + } + + setState(851); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(850); + cte(); + } + } + + setState(853); + match(INSERT); + setState(857); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTO: + { + setState(854); + match(INTO); + } + break; + case OVERWRITE: + { + setState(855); + match(OVERWRITE); + setState(856); + match(TABLE); + } + break; + default: + throw new NoViableAltException(this); + } + setState(864); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { + case 1: + { + setState(859); + ((InsertTableContext)_localctx).tableName = multipartIdentifier(); + } + break; + case 2: + { + setState(860); + match(DORIS_INTERNAL_TABLE_ID); + setState(861); + match(LEFT_PAREN); + setState(862); + ((InsertTableContext)_localctx).tableId = match(INTEGER_VALUE); + setState(863); + match(RIGHT_PAREN); + } + break; + } + setState(867); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(866); + partitionSpec(); + } + } + + setState(872); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { + case 1: + { + setState(869); + match(WITH); + setState(870); + match(LABEL); + setState(871); + ((InsertTableContext)_localctx).labelName = identifier(); + } + break; + } + setState(875); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) { + case 1: + { + setState(874); + ((InsertTableContext)_localctx).cols = identifierList(); + } + break; + } + setState(881); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_BRACKET) { + { + setState(877); + match(LEFT_BRACKET); + setState(878); + ((InsertTableContext)_localctx).hints = identifierSeq(); + setState(879); + match(RIGHT_BRACKET); + } + } + + setState(883); + query(); + } + break; + case 2: + _localctx = new UpdateContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(885); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { + { + setState(884); + explain(); + } + } + + setState(888); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(887); + cte(); + } + } + + setState(890); + match(UPDATE); + setState(891); + ((UpdateContext)_localctx).tableName = multipartIdentifier(); + setState(892); + tableAlias(); + setState(893); + match(SET); + setState(894); + updateAssignmentSeq(); + setState(896); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(895); + fromClause(); + } + } + + setState(899); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(898); + whereClause(); + } + } + + } + break; + case 3: + _localctx = new DeleteContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(902); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { + { + setState(901); + explain(); + } + } + + setState(905); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(904); + cte(); + } + } + + setState(907); + match(DELETE); + setState(908); + match(FROM); + setState(909); + ((DeleteContext)_localctx).tableName = multipartIdentifier(); + setState(911); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) { + case 1: + { + setState(910); + partitionSpec(); + } + break; + } + setState(913); + tableAlias(); + setState(916); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(914); + match(USING); + setState(915); + relations(); + } + } + + setState(919); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(918); + whereClause(); + } + } + + } + break; + case 4: + _localctx = new LoadContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(921); + match(LOAD); + setState(922); + match(LABEL); + setState(923); + ((LoadContext)_localctx).lableName = multipartIdentifier(); + setState(924); + match(LEFT_PAREN); + setState(925); + ((LoadContext)_localctx).dataDesc = dataDesc(); + ((LoadContext)_localctx).dataDescs.add(((LoadContext)_localctx).dataDesc); + setState(930); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(926); + match(COMMA); + setState(927); + ((LoadContext)_localctx).dataDesc = dataDesc(); + ((LoadContext)_localctx).dataDescs.add(((LoadContext)_localctx).dataDesc); + } + } + setState(932); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(933); + match(RIGHT_PAREN); + setState(935); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(934); + withRemoteStorageSystem(); + } + } + + setState(938); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(937); + propertyClause(); + } + } + + setState(941); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(940); + commentSpec(); + } + } + + } + break; + case 5: + _localctx = new ExportContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(943); + match(EXPORT); + setState(944); + match(TABLE); + setState(945); + ((ExportContext)_localctx).tableName = multipartIdentifier(); + setState(948); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(946); + match(PARTITION); + setState(947); + ((ExportContext)_localctx).partition = identifierList(); + } + } + + setState(951); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(950); + whereClause(); + } + } + + setState(953); + match(TO); + setState(954); + ((ExportContext)_localctx).filePath = match(STRING_LITERAL); + setState(956); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(955); + propertyClause(); + } + } + + setState(959); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(958); + withRemoteStorageSystem(); + } + } + + } + break; + case 6: + _localctx = new ReplayContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(961); + replayCommand(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedCreateStatementContext extends ParserRuleContext { + public SupportedCreateStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedCreateStatement; } + + public SupportedCreateStatementContext() { } + public void copyFrom(SupportedCreateStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateTableContext extends SupportedCreateStatementContext { + public MultipartIdentifierContext name; + public IdentifierListContext ctasCols; + public IdentifierContext engine; + public IdentifierListContext keys; + public IdentifierListContext clusterKeys; + public PartitionTableContext partition; + public IdentifierListContext hashKeys; + public Token autoBucket; + public PropertyClauseContext properties; + public PropertyClauseContext extProperties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode ENGINE() { return getToken(DorisParser.ENGINE, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } + public List BY() { return getTokens(DorisParser.BY); } + public TerminalNode BY(int i) { + return getToken(DorisParser.BY, i); + } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public RollupDefsContext rollupDefs() { + return getRuleContext(RollupDefsContext.class,0); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public ColumnDefsContext columnDefs() { + return getRuleContext(ColumnDefsContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode AGGREGATE() { return getToken(DorisParser.AGGREGATE, 0); } + public TerminalNode UNIQUE() { return getToken(DorisParser.UNIQUE, 0); } + public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public PartitionTableContext partitionTable() { + return getRuleContext(PartitionTableContext.class,0); + } + public List propertyClause() { + return getRuleContexts(PropertyClauseContext.class); + } + public PropertyClauseContext propertyClause(int i) { + return getRuleContext(PropertyClauseContext.class,i); + } + public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } + public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } + public TerminalNode CLUSTER() { return getToken(DorisParser.CLUSTER, 0); } + public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public IndexDefsContext indexDefs() { + return getRuleContext(IndexDefsContext.class,0); + } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public CreateTableContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateWorkloadGroupContext extends SupportedCreateStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateWorkloadGroupContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateWorkloadGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateWorkloadGroup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateUserDefineFunctionContext extends SupportedCreateStatementContext { + public DataTypeContext returnType; + public DataTypeContext intermediateType; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public FunctionIdentifierContext functionIdentifier() { + return getRuleContext(FunctionIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode RETURNS() { return getToken(DorisParser.RETURNS, 0); } + public List dataType() { + return getRuleContexts(DataTypeContext.class); + } + public DataTypeContext dataType(int i) { + return getRuleContext(DataTypeContext.class,i); + } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public FunctionArgumentsContext functionArguments() { + return getRuleContext(FunctionArgumentsContext.class,0); + } + public TerminalNode INTERMEDIATE() { return getToken(DorisParser.INTERMEDIATE, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public TerminalNode AGGREGATE() { return getToken(DorisParser.AGGREGATE, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateUserDefineFunctionContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateUserDefineFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateUserDefineFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateStoragePolicyContext extends SupportedCreateStatementContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateStoragePolicyContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateStoragePolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateStoragePolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateTableLikeContext extends SupportedCreateStatementContext { + public MultipartIdentifierContext name; + public MultipartIdentifierContext existedTable; + public IdentifierListContext rollupNames; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public CreateTableLikeContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateTableLike(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateTableLike(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateRoleContext extends SupportedCreateStatementContext { + public IdentifierContext name; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public CreateRoleContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRole(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateIndexContext extends SupportedCreateStatementContext { + public IdentifierContext name; + public MultipartIdentifierContext tableName; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } + public TerminalNode NGRAM_BF() { return getToken(DorisParser.NGRAM_BF, 0); } + public TerminalNode INVERTED() { return getToken(DorisParser.INVERTED, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateIndexContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateIndex(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateFileContext extends SupportedCreateStatementContext { + public Token name; + public IdentifierContext database; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public CreateFileContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateFile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateFile(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateRowPolicyContext extends SupportedCreateStatementContext { + public IdentifierContext name; + public MultipartIdentifierContext table; + public Token type; + public UserIdentifyContext user; + public IdentifierContext roleName; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode RESTRICTIVE() { return getToken(DorisParser.RESTRICTIVE, 0); } + public TerminalNode PERMISSIVE() { return getToken(DorisParser.PERMISSIVE, 0); } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public CreateRowPolicyContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRowPolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRowPolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateEncryptkeyContext extends SupportedCreateStatementContext { + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode ENCRYPTKEY() { return getToken(DorisParser.ENCRYPTKEY, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public CreateEncryptkeyContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateEncryptkey(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateEncryptkey(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BuildIndexContext extends SupportedCreateStatementContext { + public IdentifierContext name; + public MultipartIdentifierContext tableName; + public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public BuildIndexContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBuildIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBuildIndex(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateCatalogContext extends SupportedCreateStatementContext { + public IdentifierContext catalogName; + public IdentifierContext resourceName; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateCatalogContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateCatalog(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateCatalog(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateViewContext extends SupportedCreateStatementContext { + public MultipartIdentifierContext name; + public SimpleColumnDefsContext cols; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode OR() { return getToken(DorisParser.OR, 0); } + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public SimpleColumnDefsContext simpleColumnDefs() { + return getRuleContext(SimpleColumnDefsContext.class,0); + } + public CreateViewContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateView(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateAliasFunctionContext extends SupportedCreateStatementContext { + public IdentifierSeqContext parameters; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode ALIAS() { return getToken(DorisParser.ALIAS, 0); } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public FunctionIdentifierContext functionIdentifier() { + return getRuleContext(FunctionIdentifierContext.class,0); + } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode PARAMETER() { return getToken(DorisParser.PARAMETER, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public FunctionArgumentsContext functionArguments() { + return getRuleContext(FunctionArgumentsContext.class,0); + } + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public CreateAliasFunctionContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateAliasFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateAliasFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateSqlBlockRuleContext extends SupportedCreateStatementContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateSqlBlockRuleContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateSqlBlockRule(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateSqlBlockRule(this); + } + } + + public final SupportedCreateStatementContext supportedCreateStatement() throws RecognitionException { + SupportedCreateStatementContext _localctx = new SupportedCreateStatementContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_supportedCreateStatement); + int _la; + try { + setState(1287); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,142,_ctx) ) { + case 1: + _localctx = new CreateTableContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(964); + match(CREATE); + setState(966); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTERNAL || _la==TEMPORARY) { + { + setState(965); + _la = _input.LA(1); + if ( !(_la==EXTERNAL || _la==TEMPORARY) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(968); + match(TABLE); + setState(972); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(969); + match(IF); + setState(970); + match(NOT); + setState(971); + match(EXISTS); + } + } + + setState(974); + ((CreateTableContext)_localctx).name = multipartIdentifier(); + setState(989); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) { + case 1: + { + setState(976); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(975); + ((CreateTableContext)_localctx).ctasCols = identifierList(); + } + } + + } + break; + case 2: + { + { + setState(978); + match(LEFT_PAREN); + setState(979); + columnDefs(); + setState(982); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { + case 1: + { + setState(980); + match(COMMA); + setState(981); + indexDefs(); + } + break; + } + setState(985); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(984); + match(COMMA); + } + } + + setState(987); + match(RIGHT_PAREN); + } + } + break; + } + setState(994); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ENGINE) { + { + setState(991); + match(ENGINE); + setState(992); + match(EQ); + setState(993); + ((CreateTableContext)_localctx).engine = identifier(); + } + } + + setState(1004); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AGGREGATE || _la==DUPLICATE || _la==UNIQUE) { + { + setState(996); + _la = _input.LA(1); + if ( !(_la==AGGREGATE || _la==DUPLICATE || _la==UNIQUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(997); + match(KEY); + setState(998); + ((CreateTableContext)_localctx).keys = identifierList(); + setState(1002); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CLUSTER) { + { + setState(999); + match(CLUSTER); + setState(1000); + match(BY); + setState(1001); + ((CreateTableContext)_localctx).clusterKeys = identifierList(); + } + } + + } + } + + setState(1008); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(1006); + match(COMMENT); + setState(1007); + match(STRING_LITERAL); + } + } + + setState(1011); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AUTO || _la==PARTITION) { + { + setState(1010); + ((CreateTableContext)_localctx).partition = partitionTable(); + } + } + + setState(1027); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DISTRIBUTED) { + { + setState(1013); + match(DISTRIBUTED); + setState(1014); + match(BY); + setState(1018); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HASH: + { + setState(1015); + match(HASH); + setState(1016); + ((CreateTableContext)_localctx).hashKeys = identifierList(); + } + break; + case RANDOM: + { + setState(1017); + match(RANDOM); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1025); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BUCKETS) { + { + setState(1020); + match(BUCKETS); + setState(1023); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTEGER_VALUE: + { + setState(1021); + match(INTEGER_VALUE); + } + break; + case AUTO: + { + setState(1022); + ((CreateTableContext)_localctx).autoBucket = match(AUTO); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + } + } + + setState(1034); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ROLLUP) { + { + setState(1029); + match(ROLLUP); + setState(1030); + match(LEFT_PAREN); + setState(1031); + rollupDefs(); + setState(1032); + match(RIGHT_PAREN); + } + } + + setState(1037); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1036); + ((CreateTableContext)_localctx).properties = propertyClause(); + } + } + + setState(1041); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BROKER) { + { + setState(1039); + match(BROKER); + setState(1040); + ((CreateTableContext)_localctx).extProperties = propertyClause(); + } + } + + setState(1045); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(1043); + match(AS); + setState(1044); + query(); + } + } + + } + break; + case 2: + _localctx = new CreateViewContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1047); + match(CREATE); + setState(1050); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OR) { + { + setState(1048); + match(OR); + setState(1049); + match(REPLACE); + } + } + + setState(1052); + match(VIEW); + setState(1056); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1053); + match(IF); + setState(1054); + match(NOT); + setState(1055); + match(EXISTS); + } + } + + setState(1058); + ((CreateViewContext)_localctx).name = multipartIdentifier(); + setState(1063); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(1059); + match(LEFT_PAREN); + setState(1060); + ((CreateViewContext)_localctx).cols = simpleColumnDefs(); + setState(1061); + match(RIGHT_PAREN); + } + } + + setState(1067); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(1065); + match(COMMENT); + setState(1066); + match(STRING_LITERAL); + } + } + + setState(1069); + match(AS); + setState(1070); + query(); + } + break; + case 3: + _localctx = new CreateFileContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1072); + match(CREATE); + setState(1073); + match(FILE); + setState(1074); + ((CreateFileContext)_localctx).name = match(STRING_LITERAL); + setState(1077); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1075); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1076); + ((CreateFileContext)_localctx).database = identifier(); + } + } + + setState(1079); + ((CreateFileContext)_localctx).properties = propertyClause(); + } + break; + case 4: + _localctx = new CreateTableLikeContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1080); + match(CREATE); + setState(1082); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTERNAL || _la==TEMPORARY) { + { + setState(1081); + _la = _input.LA(1); + if ( !(_la==EXTERNAL || _la==TEMPORARY) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(1084); + match(TABLE); + setState(1088); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1085); + match(IF); + setState(1086); + match(NOT); + setState(1087); + match(EXISTS); + } + } + + setState(1090); + ((CreateTableLikeContext)_localctx).name = multipartIdentifier(); + setState(1091); + match(LIKE); + setState(1092); + ((CreateTableLikeContext)_localctx).existedTable = multipartIdentifier(); + setState(1098); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(1093); + match(WITH); + setState(1094); + match(ROLLUP); + setState(1096); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(1095); + ((CreateTableLikeContext)_localctx).rollupNames = identifierList(); + } + } + + } + } + + } + break; + case 5: + _localctx = new CreateRoleContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1100); + match(CREATE); + setState(1101); + match(ROLE); + setState(1105); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1102); + match(IF); + setState(1103); + match(NOT); + setState(1104); + match(EXISTS); + } + } + + setState(1107); + ((CreateRoleContext)_localctx).name = identifier(); + setState(1110); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(1108); + match(COMMENT); + setState(1109); + match(STRING_LITERAL); + } + } + + } + break; + case 6: + _localctx = new CreateWorkloadGroupContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(1112); + match(CREATE); + setState(1113); + match(WORKLOAD); + setState(1114); + match(GROUP); + setState(1118); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1115); + match(IF); + setState(1116); + match(NOT); + setState(1117); + match(EXISTS); + } + } + + setState(1120); + ((CreateWorkloadGroupContext)_localctx).name = identifierOrText(); + setState(1122); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1121); + ((CreateWorkloadGroupContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 7: + _localctx = new CreateCatalogContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(1124); + match(CREATE); + setState(1125); + match(CATALOG); + setState(1129); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1126); + match(IF); + setState(1127); + match(NOT); + setState(1128); + match(EXISTS); + } + } + + setState(1131); + ((CreateCatalogContext)_localctx).catalogName = identifier(); + setState(1135); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(1132); + match(WITH); + setState(1133); + match(RESOURCE); + setState(1134); + ((CreateCatalogContext)_localctx).resourceName = identifier(); + } + } + + setState(1139); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(1137); + match(COMMENT); + setState(1138); + match(STRING_LITERAL); + } + } + + setState(1142); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1141); + ((CreateCatalogContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 8: + _localctx = new CreateRowPolicyContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(1144); + match(CREATE); + setState(1145); + match(ROW); + setState(1146); + match(POLICY); + setState(1150); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1147); + match(IF); + setState(1148); + match(NOT); + setState(1149); + match(EXISTS); + } + } + + setState(1152); + ((CreateRowPolicyContext)_localctx).name = identifier(); + setState(1153); + match(ON); + setState(1154); + ((CreateRowPolicyContext)_localctx).table = multipartIdentifier(); + setState(1155); + match(AS); + setState(1156); + ((CreateRowPolicyContext)_localctx).type = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==PERMISSIVE || _la==RESTRICTIVE) ) { + ((CreateRowPolicyContext)_localctx).type = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1157); + match(TO); + setState(1161); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(1158); + ((CreateRowPolicyContext)_localctx).user = userIdentify(); + } + break; + case ROLE: + { + setState(1159); + match(ROLE); + setState(1160); + ((CreateRowPolicyContext)_localctx).roleName = identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1163); + match(USING); + setState(1164); + match(LEFT_PAREN); + setState(1165); + booleanExpression(0); + setState(1166); + match(RIGHT_PAREN); + } + break; + case 9: + _localctx = new CreateStoragePolicyContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(1168); + match(CREATE); + setState(1169); + match(STORAGE); + setState(1170); + match(POLICY); + setState(1174); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1171); + match(IF); + setState(1172); + match(NOT); + setState(1173); + match(EXISTS); + } + } + + setState(1176); + ((CreateStoragePolicyContext)_localctx).name = identifier(); + setState(1178); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1177); + ((CreateStoragePolicyContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 10: + _localctx = new BuildIndexContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(1180); + match(BUILD); + setState(1181); + match(INDEX); + setState(1182); + ((BuildIndexContext)_localctx).name = identifier(); + setState(1183); + match(ON); + setState(1184); + ((BuildIndexContext)_localctx).tableName = multipartIdentifier(); + setState(1186); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(1185); + partitionSpec(); + } + } + + } + break; + case 11: + _localctx = new CreateIndexContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(1188); + match(CREATE); + setState(1189); + match(INDEX); + setState(1193); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1190); + match(IF); + setState(1191); + match(NOT); + setState(1192); + match(EXISTS); + } + } + + setState(1195); + ((CreateIndexContext)_localctx).name = identifier(); + setState(1196); + match(ON); + setState(1197); + ((CreateIndexContext)_localctx).tableName = multipartIdentifier(); + setState(1198); + identifierList(); + setState(1201); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(1199); + match(USING); + setState(1200); + _la = _input.LA(1); + if ( !(_la==BITMAP || _la==INVERTED || _la==NGRAM_BF) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(1204); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1203); + ((CreateIndexContext)_localctx).properties = propertyClause(); + } + } + + setState(1208); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(1206); + match(COMMENT); + setState(1207); + match(STRING_LITERAL); + } + } + + } + break; + case 12: + _localctx = new CreateSqlBlockRuleContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(1210); + match(CREATE); + setState(1211); + match(SQL_BLOCK_RULE); + setState(1215); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1212); + match(IF); + setState(1213); + match(NOT); + setState(1214); + match(EXISTS); + } + } + + setState(1217); + ((CreateSqlBlockRuleContext)_localctx).name = identifier(); + setState(1219); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1218); + ((CreateSqlBlockRuleContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 13: + _localctx = new CreateEncryptkeyContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(1221); + match(CREATE); + setState(1222); + match(ENCRYPTKEY); + setState(1226); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1223); + match(IF); + setState(1224); + match(NOT); + setState(1225); + match(EXISTS); + } + } + + setState(1228); + multipartIdentifier(); + setState(1229); + match(AS); + setState(1230); + match(STRING_LITERAL); + } + break; + case 14: + _localctx = new CreateUserDefineFunctionContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(1232); + match(CREATE); + setState(1234); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(1233); + statementScope(); + } + } + + setState(1237); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AGGREGATE || _la==TABLES) { + { + setState(1236); + _la = _input.LA(1); + if ( !(_la==AGGREGATE || _la==TABLES) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(1239); + match(FUNCTION); + setState(1243); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) { + case 1: + { + setState(1240); + match(IF); + setState(1241); + match(NOT); + setState(1242); + match(EXISTS); + } + break; + } + setState(1245); + functionIdentifier(); + setState(1246); + match(LEFT_PAREN); + setState(1248); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { + { + setState(1247); + functionArguments(); + } + } + + setState(1250); + match(RIGHT_PAREN); + setState(1251); + match(RETURNS); + setState(1252); + ((CreateUserDefineFunctionContext)_localctx).returnType = dataType(); + setState(1255); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTERMEDIATE) { + { + setState(1253); + match(INTERMEDIATE); + setState(1254); + ((CreateUserDefineFunctionContext)_localctx).intermediateType = dataType(); + } + } + + setState(1258); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1257); + ((CreateUserDefineFunctionContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 15: + _localctx = new CreateAliasFunctionContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(1260); + match(CREATE); + setState(1262); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(1261); + statementScope(); + } + } + + setState(1264); + match(ALIAS); + setState(1265); + match(FUNCTION); + setState(1269); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,139,_ctx) ) { + case 1: + { + setState(1266); + match(IF); + setState(1267); + match(NOT); + setState(1268); + match(EXISTS); + } + break; + } + setState(1271); + functionIdentifier(); + setState(1272); + match(LEFT_PAREN); + setState(1274); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { + { + setState(1273); + functionArguments(); + } + } + + setState(1276); + match(RIGHT_PAREN); + setState(1277); + match(WITH); + setState(1278); + match(PARAMETER); + setState(1279); + match(LEFT_PAREN); + setState(1281); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(1280); + ((CreateAliasFunctionContext)_localctx).parameters = identifierSeq(); + } + } + + setState(1283); + match(RIGHT_PAREN); + setState(1284); + match(AS); + setState(1285); + expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedAlterStatementContext extends ParserRuleContext { + public SupportedAlterStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedAlterStatement; } + + public SupportedAlterStatementContext() { } + public void copyFrom(SupportedAlterStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterSystemRenameComputeGroupContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public IdentifierContext newName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode SYSTEM() { return getToken(DorisParser.SYSTEM, 0); } + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public AlterSystemRenameComputeGroupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterSystemRenameComputeGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterSystemRenameComputeGroup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterSystemContext extends SupportedAlterStatementContext { + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode SYSTEM() { return getToken(DorisParser.SYSTEM, 0); } + public AlterSystemClauseContext alterSystemClause() { + return getRuleContext(AlterSystemClauseContext.class,0); + } + public AlterSystemContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterSystem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterSystem(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterCatalogRenameContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public IdentifierContext newName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public AlterCatalogRenameContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterCatalogRename(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterCatalogRename(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterDatabaseSetQuotaContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public IdentifierContext quota; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode QUOTA() { return getToken(DorisParser.QUOTA, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public AlterDatabaseSetQuotaContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterDatabaseSetQuota(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterDatabaseSetQuota(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterStorageVaultContext extends SupportedAlterStatementContext { + public MultipartIdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterStorageVaultContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterStorageVault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterStorageVault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterWorkloadGroupContext extends SupportedAlterStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterWorkloadGroupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterWorkloadGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterWorkloadGroup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterTableDropRollupContext extends SupportedAlterStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public List dropRollupClause() { + return getRuleContexts(DropRollupClauseContext.class); + } + public DropRollupClauseContext dropRollupClause(int i) { + return getRuleContext(DropRollupClauseContext.class,i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AlterTableDropRollupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableDropRollup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableDropRollup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterTablePropertiesContext extends SupportedAlterStatementContext { + public MultipartIdentifierContext name; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public AlterTablePropertiesContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableProperties(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterRoleContext extends SupportedAlterStatementContext { + public IdentifierContext role; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AlterRoleContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterRole(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterWorkloadPolicyContext extends SupportedAlterStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterWorkloadPolicyContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterWorkloadPolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterWorkloadPolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterDatabaseRenameContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public IdentifierContext newName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public AlterDatabaseRenameContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterDatabaseRename(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterDatabaseRename(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterCatalogPropertiesContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AlterCatalogPropertiesContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterCatalogProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterCatalogProperties(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterCatalogCommentContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public Token comment; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AlterCatalogCommentContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterCatalogComment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterCatalogComment(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterViewContext extends SupportedAlterStatementContext { + public MultipartIdentifierContext name; + public SimpleColumnDefsContext cols; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public SimpleColumnDefsContext simpleColumnDefs() { + return getRuleContext(SimpleColumnDefsContext.class,0); + } + public AlterViewContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterView(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterSqlBlockRuleContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterSqlBlockRuleContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterSqlBlockRule(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterSqlBlockRule(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterTableAddRollupContext extends SupportedAlterStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public List addRollupClause() { + return getRuleContexts(AddRollupClauseContext.class); + } + public AddRollupClauseContext addRollupClause(int i) { + return getRuleContext(AddRollupClauseContext.class,i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AlterTableAddRollupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableAddRollup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableAddRollup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterRepositoryContext extends SupportedAlterStatementContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterRepositoryContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterRepository(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterRepository(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterTableContext extends SupportedAlterStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public List alterTableClause() { + return getRuleContexts(AlterTableClauseContext.class); + } + public AlterTableClauseContext alterTableClause(int i) { + return getRuleContext(AlterTableClauseContext.class,i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AlterTableContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTable(this); + } + } + + public final SupportedAlterStatementContext supportedAlterStatement() throws RecognitionException { + SupportedAlterStatementContext _localctx = new SupportedAlterStatementContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_supportedAlterStatement); + int _la; + try { + setState(1445); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,153,_ctx) ) { + case 1: + _localctx = new AlterSystemContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1289); + match(ALTER); + setState(1290); + match(SYSTEM); + setState(1291); + alterSystemClause(); + } + break; + case 2: + _localctx = new AlterViewContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1292); + match(ALTER); + setState(1293); + match(VIEW); + setState(1294); + ((AlterViewContext)_localctx).name = multipartIdentifier(); + setState(1305); + _errHandler.sync(this); + switch (_input.LA(1)) { + case MODIFY: + { + { + setState(1295); + match(MODIFY); + setState(1296); + commentSpec(); + } + } + break; + case LEFT_PAREN: + case AS: + { + { + setState(1301); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(1297); + match(LEFT_PAREN); + setState(1298); + ((AlterViewContext)_localctx).cols = simpleColumnDefs(); + setState(1299); + match(RIGHT_PAREN); + } + } + + setState(1303); + match(AS); + setState(1304); + query(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 3: + _localctx = new AlterCatalogRenameContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1307); + match(ALTER); + setState(1308); + match(CATALOG); + setState(1309); + ((AlterCatalogRenameContext)_localctx).name = identifier(); + setState(1310); + match(RENAME); + setState(1311); + ((AlterCatalogRenameContext)_localctx).newName = identifier(); + } + break; + case 4: + _localctx = new AlterRoleContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1313); + match(ALTER); + setState(1314); + match(ROLE); + setState(1315); + ((AlterRoleContext)_localctx).role = identifier(); + setState(1316); + commentSpec(); + } + break; + case 5: + _localctx = new AlterStorageVaultContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1318); + match(ALTER); + setState(1319); + match(STORAGE); + setState(1320); + match(VAULT); + setState(1321); + ((AlterStorageVaultContext)_localctx).name = multipartIdentifier(); + setState(1322); + ((AlterStorageVaultContext)_localctx).properties = propertyClause(); + } + break; + case 6: + _localctx = new AlterRoleContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(1324); + match(ALTER); + setState(1325); + match(ROLE); + setState(1326); + ((AlterRoleContext)_localctx).role = identifier(); + setState(1327); + commentSpec(); + } + break; + case 7: + _localctx = new AlterWorkloadGroupContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(1329); + match(ALTER); + setState(1330); + match(WORKLOAD); + setState(1331); + match(GROUP); + setState(1332); + ((AlterWorkloadGroupContext)_localctx).name = identifierOrText(); + setState(1334); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1333); + ((AlterWorkloadGroupContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 8: + _localctx = new AlterCatalogPropertiesContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(1336); + match(ALTER); + setState(1337); + match(CATALOG); + setState(1338); + ((AlterCatalogPropertiesContext)_localctx).name = identifier(); + setState(1339); + match(SET); + setState(1340); + match(PROPERTIES); + setState(1341); + match(LEFT_PAREN); + setState(1342); + propertyItemList(); + setState(1343); + match(RIGHT_PAREN); + } + break; + case 9: + _localctx = new AlterWorkloadPolicyContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(1345); + match(ALTER); + setState(1346); + match(WORKLOAD); + setState(1347); + match(POLICY); + setState(1348); + ((AlterWorkloadPolicyContext)_localctx).name = identifierOrText(); + setState(1350); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1349); + ((AlterWorkloadPolicyContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 10: + _localctx = new AlterSqlBlockRuleContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(1352); + match(ALTER); + setState(1353); + match(SQL_BLOCK_RULE); + setState(1354); + ((AlterSqlBlockRuleContext)_localctx).name = identifier(); + setState(1356); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1355); + ((AlterSqlBlockRuleContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 11: + _localctx = new AlterCatalogCommentContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(1358); + match(ALTER); + setState(1359); + match(CATALOG); + setState(1360); + ((AlterCatalogCommentContext)_localctx).name = identifier(); + setState(1361); + match(MODIFY); + setState(1362); + match(COMMENT); + setState(1363); + ((AlterCatalogCommentContext)_localctx).comment = match(STRING_LITERAL); + } + break; + case 12: + _localctx = new AlterDatabaseRenameContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(1365); + match(ALTER); + setState(1366); + match(DATABASE); + setState(1367); + ((AlterDatabaseRenameContext)_localctx).name = identifier(); + setState(1368); + match(RENAME); + setState(1369); + ((AlterDatabaseRenameContext)_localctx).newName = identifier(); + } + break; + case 13: + _localctx = new AlterRoleContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(1371); + match(ALTER); + setState(1372); + match(ROLE); + setState(1373); + ((AlterRoleContext)_localctx).role = identifier(); + setState(1374); + commentSpec(); + } + break; + case 14: + _localctx = new AlterTableContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(1376); + match(ALTER); + setState(1377); + match(TABLE); + setState(1378); + ((AlterTableContext)_localctx).tableName = multipartIdentifier(); + setState(1379); + alterTableClause(); + setState(1384); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1380); + match(COMMA); + setState(1381); + alterTableClause(); + } + } + setState(1386); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 15: + _localctx = new AlterTableAddRollupContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(1387); + match(ALTER); + setState(1388); + match(TABLE); + setState(1389); + ((AlterTableAddRollupContext)_localctx).tableName = multipartIdentifier(); + setState(1390); + match(ADD); + setState(1391); + match(ROLLUP); + setState(1392); + addRollupClause(); + setState(1397); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1393); + match(COMMA); + setState(1394); + addRollupClause(); + } + } + setState(1399); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 16: + _localctx = new AlterTableDropRollupContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(1400); + match(ALTER); + setState(1401); + match(TABLE); + setState(1402); + ((AlterTableDropRollupContext)_localctx).tableName = multipartIdentifier(); + setState(1403); + match(DROP); + setState(1404); + match(ROLLUP); + setState(1405); + dropRollupClause(); + setState(1410); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1406); + match(COMMA); + setState(1407); + dropRollupClause(); + } + } + setState(1412); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 17: + _localctx = new AlterTablePropertiesContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(1413); + match(ALTER); + setState(1414); + match(TABLE); + setState(1415); + ((AlterTablePropertiesContext)_localctx).name = multipartIdentifier(); + setState(1416); + match(SET); + setState(1417); + match(LEFT_PAREN); + setState(1418); + propertyItemList(); + setState(1419); + match(RIGHT_PAREN); + } + break; + case 18: + _localctx = new AlterDatabaseSetQuotaContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(1421); + match(ALTER); + setState(1422); + match(DATABASE); + setState(1423); + ((AlterDatabaseSetQuotaContext)_localctx).name = identifier(); + setState(1424); + match(SET); + setState(1425); + _la = _input.LA(1); + if ( !(_la==DATA || _la==REPLICA || _la==TRANSACTION) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1426); + match(QUOTA); + setState(1429); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(1427); + ((AlterDatabaseSetQuotaContext)_localctx).quota = identifier(); + } + break; + case INTEGER_VALUE: + { + setState(1428); + match(INTEGER_VALUE); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 19: + _localctx = new AlterSystemRenameComputeGroupContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(1431); + match(ALTER); + setState(1432); + match(SYSTEM); + setState(1433); + match(RENAME); + setState(1434); + match(COMPUTE); + setState(1435); + match(GROUP); + setState(1436); + ((AlterSystemRenameComputeGroupContext)_localctx).name = identifier(); + setState(1437); + ((AlterSystemRenameComputeGroupContext)_localctx).newName = identifier(); + } + break; + case 20: + _localctx = new AlterRepositoryContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(1439); + match(ALTER); + setState(1440); + match(REPOSITORY); + setState(1441); + ((AlterRepositoryContext)_localctx).name = identifier(); + setState(1443); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1442); + ((AlterRepositoryContext)_localctx).properties = propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedDropStatementContext extends ParserRuleContext { + public SupportedDropStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedDropStatement; } + + public SupportedDropStatementContext() { } + public void copyFrom(SupportedDropStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropUserContext extends SupportedDropStatementContext { + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode USER() { return getToken(DorisParser.USER, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropUserContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropUser(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropDatabaseContext extends SupportedDropStatementContext { + public MultipartIdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public DropDatabaseContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropDatabase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropWorkloadPolicyContext extends SupportedDropStatementContext { + public IdentifierOrTextContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropWorkloadPolicyContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropWorkloadPolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropWorkloadPolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropFunctionContext extends SupportedDropStatementContext { + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public FunctionIdentifierContext functionIdentifier() { + return getRuleContext(FunctionIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public FunctionArgumentsContext functionArguments() { + return getRuleContext(FunctionArgumentsContext.class,0); + } + public DropFunctionContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropWorkloadGroupContext extends SupportedDropStatementContext { + public IdentifierOrTextContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropWorkloadGroupContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropWorkloadGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropWorkloadGroup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropSqlBlockRuleContext extends SupportedDropStatementContext { + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropSqlBlockRuleContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropSqlBlockRule(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropSqlBlockRule(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropIndexContext extends SupportedDropStatementContext { + public IdentifierContext name; + public MultipartIdentifierContext tableName; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropIndexContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropIndex(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropEncryptkeyContext extends SupportedDropStatementContext { + public MultipartIdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode ENCRYPTKEY() { return getToken(DorisParser.ENCRYPTKEY, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropEncryptkeyContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropEncryptkey(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropEncryptkey(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropRepositoryContext extends SupportedDropStatementContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DropRepositoryContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRepository(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRepository(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropRoleContext extends SupportedDropStatementContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropRoleContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRole(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropFileContext extends SupportedDropStatementContext { + public Token name; + public IdentifierContext database; + public PropertyClauseContext properties; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DropFileContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropFile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropFile(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropCatalogContext extends SupportedDropStatementContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropCatalogContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropCatalog(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropCatalog(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropCatalogRecycleBinContext extends SupportedDropStatementContext { + public Token idType; + public Token id; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public TerminalNode RECYCLE() { return getToken(DorisParser.RECYCLE, 0); } + public TerminalNode BIN() { return getToken(DorisParser.BIN, 0); } + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public DropCatalogRecycleBinContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropCatalogRecycleBin(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropCatalogRecycleBin(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropTableContext extends SupportedDropStatementContext { + public MultipartIdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public DropTableContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropStoragePolicyContext extends SupportedDropStatementContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropStoragePolicyContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropStoragePolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropStoragePolicy(this); + } + } + + public final SupportedDropStatementContext supportedDropStatement() throws RecognitionException { + SupportedDropStatementContext _localctx = new SupportedDropStatementContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_supportedDropStatement); + int _la; + try { + setState(1571); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) { + case 1: + _localctx = new DropCatalogRecycleBinContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1447); + match(DROP); + setState(1448); + match(CATALOG); + setState(1449); + match(RECYCLE); + setState(1450); + match(BIN); + setState(1451); + match(WHERE); + setState(1452); + ((DropCatalogRecycleBinContext)_localctx).idType = match(STRING_LITERAL); + setState(1453); + match(EQ); + setState(1454); + ((DropCatalogRecycleBinContext)_localctx).id = match(INTEGER_VALUE); + } + break; + case 2: + _localctx = new DropEncryptkeyContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1455); + match(DROP); + setState(1456); + match(ENCRYPTKEY); + setState(1459); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1457); + match(IF); + setState(1458); + match(EXISTS); + } + } + + setState(1461); + ((DropEncryptkeyContext)_localctx).name = multipartIdentifier(); + } + break; + case 3: + _localctx = new DropRoleContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1462); + match(DROP); + setState(1463); + match(ROLE); + setState(1466); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1464); + match(IF); + setState(1465); + match(EXISTS); + } + } + + setState(1468); + ((DropRoleContext)_localctx).name = identifier(); + } + break; + case 4: + _localctx = new DropSqlBlockRuleContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1469); + match(DROP); + setState(1470); + match(SQL_BLOCK_RULE); + setState(1473); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1471); + match(IF); + setState(1472); + match(EXISTS); + } + } + + setState(1475); + identifierSeq(); + } + break; + case 5: + _localctx = new DropUserContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1476); + match(DROP); + setState(1477); + match(USER); + setState(1480); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1478); + match(IF); + setState(1479); + match(EXISTS); + } + } + + setState(1482); + userIdentify(); + } + break; + case 6: + _localctx = new DropStoragePolicyContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(1483); + match(DROP); + setState(1484); + match(STORAGE); + setState(1485); + match(POLICY); + setState(1488); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1486); + match(IF); + setState(1487); + match(EXISTS); + } + } + + setState(1490); + ((DropStoragePolicyContext)_localctx).name = identifier(); + } + break; + case 7: + _localctx = new DropWorkloadGroupContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(1491); + match(DROP); + setState(1492); + match(WORKLOAD); + setState(1493); + match(GROUP); + setState(1496); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1494); + match(IF); + setState(1495); + match(EXISTS); + } + } + + setState(1498); + ((DropWorkloadGroupContext)_localctx).name = identifierOrText(); + } + break; + case 8: + _localctx = new DropCatalogContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(1499); + match(DROP); + setState(1500); + match(CATALOG); + setState(1503); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1501); + match(IF); + setState(1502); + match(EXISTS); + } + } + + setState(1505); + ((DropCatalogContext)_localctx).name = identifier(); + } + break; + case 9: + _localctx = new DropFileContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(1506); + match(DROP); + setState(1507); + match(FILE); + setState(1508); + ((DropFileContext)_localctx).name = match(STRING_LITERAL); + setState(1511); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1509); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1510); + ((DropFileContext)_localctx).database = identifier(); + } + } + + setState(1513); + ((DropFileContext)_localctx).properties = propertyClause(); + } + break; + case 10: + _localctx = new DropWorkloadPolicyContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(1514); + match(DROP); + setState(1515); + match(WORKLOAD); + setState(1516); + match(POLICY); + setState(1519); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1517); + match(IF); + setState(1518); + match(EXISTS); + } + } + + setState(1521); + ((DropWorkloadPolicyContext)_localctx).name = identifierOrText(); + } + break; + case 11: + _localctx = new DropRepositoryContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(1522); + match(DROP); + setState(1523); + match(REPOSITORY); + setState(1524); + ((DropRepositoryContext)_localctx).name = identifier(); + } + break; + case 12: + _localctx = new DropTableContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(1525); + match(DROP); + setState(1526); + match(TABLE); + setState(1529); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1527); + match(IF); + setState(1528); + match(EXISTS); + } + } + + setState(1531); + ((DropTableContext)_localctx).name = multipartIdentifier(); + setState(1533); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(1532); + match(FORCE); + } + } + + } + break; + case 13: + _localctx = new DropDatabaseContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(1535); + match(DROP); + setState(1536); + _la = _input.LA(1); + if ( !(_la==DATABASE || _la==SCHEMA) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1539); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1537); + match(IF); + setState(1538); + match(EXISTS); + } + } + + setState(1541); + ((DropDatabaseContext)_localctx).name = multipartIdentifier(); + setState(1543); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(1542); + match(FORCE); + } + } + + } + break; + case 14: + _localctx = new DropFunctionContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(1545); + match(DROP); + setState(1547); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(1546); + statementScope(); + } + } + + setState(1549); + match(FUNCTION); + setState(1552); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) { + case 1: + { + setState(1550); + match(IF); + setState(1551); + match(EXISTS); + } + break; + } + setState(1554); + functionIdentifier(); + setState(1555); + match(LEFT_PAREN); + setState(1557); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { + { + setState(1556); + functionArguments(); + } + } + + setState(1559); + match(RIGHT_PAREN); + } + break; + case 15: + _localctx = new DropIndexContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(1561); + match(DROP); + setState(1562); + match(INDEX); + setState(1565); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(1563); + match(IF); + setState(1564); + match(EXISTS); + } + } + + setState(1567); + ((DropIndexContext)_localctx).name = identifier(); + setState(1568); + match(ON); + setState(1569); + ((DropIndexContext)_localctx).tableName = multipartIdentifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedShowStatementContext extends ParserRuleContext { + public SupportedShowStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedShowStatement; } + + public SupportedShowStatementContext() { } + public void copyFrom(SupportedShowStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowRepositoriesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode REPOSITORIES() { return getToken(DorisParser.REPOSITORIES, 0); } + public ShowRepositoriesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRepositories(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRepositories(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDataContext extends SupportedShowStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowDataContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowData(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowData(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDynamicPartitionContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DYNAMIC() { return getToken(DorisParser.DYNAMIC, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowDynamicPartitionContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDynamicPartition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDynamicPartition(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTableStatusContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTableStatusContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableStatus(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowGrantsForUserContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode GRANTS() { return getToken(DorisParser.GRANTS, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public ShowGrantsForUserContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowGrantsForUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowGrantsForUser(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowViewContext extends SupportedShowStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public List FROM() { return getTokens(DorisParser.FROM); } + public TerminalNode FROM(int i) { + return getToken(DorisParser.FROM, i); + } + public List IN() { return getTokens(DorisParser.IN); } + public TerminalNode IN(int i) { + return getToken(DorisParser.IN, i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowViewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowView(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTablesContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTablesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTables(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowAuthorsContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode AUTHORS() { return getToken(DorisParser.AUTHORS, 0); } + public ShowAuthorsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAuthors(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAuthors(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowStorageEnginesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ENGINES() { return getToken(DorisParser.ENGINES, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public ShowStorageEnginesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStorageEngines(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStorageEngines(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowWarningErrorsContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } + public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public ShowWarningErrorsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWarningErrors(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWarningErrors(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCatalogsContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CATALOGS() { return getToken(DorisParser.CATALOGS, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowCatalogsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCatalogs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCatalogs(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowRolesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ROLES() { return getToken(DorisParser.ROLES, 0); } + public ShowRolesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRoles(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRoles(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTabletsBelongContext extends SupportedShowStatementContext { + public Token INTEGER_VALUE; + public List tabletIds = new ArrayList(); + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLETS() { return getToken(DorisParser.TABLETS, 0); } + public TerminalNode BELONG() { return getToken(DorisParser.BELONG, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ShowTabletsBelongContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletsBelong(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletsBelong(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTriggersContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TRIGGERS() { return getToken(DorisParser.TRIGGERS, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTriggersContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTriggers(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTriggers(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateTableContext extends SupportedShowStatementContext { + public MultipartIdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode BRIEF() { return getToken(DorisParser.BRIEF, 0); } + public ShowCreateTableContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCatalogContext extends SupportedShowStatementContext { + public IdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowCatalogContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCatalog(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCatalog(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowVariablesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode VARIABLES() { return getToken(DorisParser.VARIABLES, 0); } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowVariablesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowVariables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowVariables(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowSyncJobContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowSyncJobContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSyncJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSyncJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowEventsContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode EVENTS() { return getToken(DorisParser.EVENTS, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowEventsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowEvents(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowEvents(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowPluginsContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PLUGINS() { return getToken(DorisParser.PLUGINS, 0); } + public ShowPluginsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPlugins(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPlugins(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowAllPropertiesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowAllPropertiesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAllProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAllProperties(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDataSkewContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode SKEW() { return getToken(DorisParser.SKEW, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public ShowDataSkewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDataSkew(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDataSkew(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowConvertLscContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CONVERT_LSC() { return getToken(DorisParser.CONVERT_LSC, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowConvertLscContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowConvertLsc(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowConvertLsc(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowSqlBlockRuleContext extends SupportedShowStatementContext { + public IdentifierContext ruleName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowSqlBlockRuleContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSqlBlockRule(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSqlBlockRule(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTableCreationContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode CREATION() { return getToken(DorisParser.CREATION, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTableCreationContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableCreation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableCreation(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowWarningErrorCountContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode COUNT() { return getToken(DorisParser.COUNT, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } + public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } + public ShowWarningErrorCountContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWarningErrorCount(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWarningErrorCount(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDeleteContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowDeleteContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDelete(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDelete(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowStagesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode STAGES() { return getToken(DorisParser.STAGES, 0); } + public ShowStagesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStages(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStages(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowBrokerContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public ShowBrokerContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBroker(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBroker(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowGrantsContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode GRANTS() { return getToken(DorisParser.GRANTS, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public ShowGrantsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowGrants(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowGrants(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowReplicaDistributionContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public TerminalNode DISTRIBUTION() { return getToken(DorisParser.DISTRIBUTION, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public ShowReplicaDistributionContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowReplicaDistribution(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowReplicaDistribution(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTabletStorageFormatContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } + public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } + public ShowTabletStorageFormatContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletStorageFormat(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletStorageFormat(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCharsetContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CHARSET() { return getToken(DorisParser.CHARSET, 0); } + public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public ShowCharsetContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCharset(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCharset(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowProcContext extends SupportedShowStatementContext { + public Token path; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowProcContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowProc(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowProc(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateViewContext extends SupportedShowStatementContext { + public MultipartIdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateViewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateView(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateDatabaseContext extends SupportedShowStatementContext { + public MultipartIdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateDatabaseContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateDatabase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowQueryProfileContext extends SupportedShowStatementContext { + public Token queryIdPath; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } + public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowQueryProfileContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowQueryProfile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowQueryProfile(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowStoragePolicyContext extends SupportedShowStatementContext { + public IdentifierOrTextContext policy; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public ShowStoragePolicyContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStoragePolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStoragePolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowEncryptKeysContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ENCRYPTKEYS() { return getToken(DorisParser.ENCRYPTKEYS, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowEncryptKeysContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowEncryptKeys(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowEncryptKeys(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTrashContext extends SupportedShowStatementContext { + public Token backend; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TRASH() { return getToken(DorisParser.TRASH, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowTrashContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTrash(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTrash(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowFrontendsContext extends SupportedShowStatementContext { + public IdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode FRONTENDS() { return getToken(DorisParser.FRONTENDS, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowFrontendsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowFrontends(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowFrontends(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowLoadProfileContext extends SupportedShowStatementContext { + public Token loadIdPath; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowLoadProfileContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLoadProfile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLoadProfile(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowPartitionIdContext extends SupportedShowStatementContext { + public Token partitionId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowPartitionIdContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPartitionId(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPartitionId(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCollationContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode COLLATION() { return getToken(DorisParser.COLLATION, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowCollationContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCollation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCollation(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowBackendsContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode BACKENDS() { return getToken(DorisParser.BACKENDS, 0); } + public ShowBackendsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBackends(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBackends(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowPrivilegesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PRIVILEGES() { return getToken(DorisParser.PRIVILEGES, 0); } + public ShowPrivilegesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPrivileges(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPrivileges(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTableIdContext extends SupportedShowStatementContext { + public Token tableId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowTableIdContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableId(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableId(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowSmallFilesContext extends SupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowSmallFilesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSmallFiles(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSmallFiles(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowStatusContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public ShowStatusContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStatus(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowUserPropertiesContext extends SupportedShowStatementContext { + public IdentifierOrTextContext user; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PROPERTY() { return getToken(DorisParser.PROPERTY, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public ShowUserPropertiesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowUserProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowUserProperties(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowLastInsertContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode LAST() { return getToken(DorisParser.LAST, 0); } + public TerminalNode INSERT() { return getToken(DorisParser.INSERT, 0); } + public ShowLastInsertContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLastInsert(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLastInsert(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateCatalogContext extends SupportedShowStatementContext { + public IdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowCreateCatalogContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateCatalog(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateCatalog(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateMaterializedViewContext extends SupportedShowStatementContext { + public IdentifierContext mvName; + public MultipartIdentifierContext tableName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateMaterializedViewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateMaterializedView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateMaterializedView(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowProcessListContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PROCESSLIST() { return getToken(DorisParser.PROCESSLIST, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public ShowProcessListContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowProcessList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowProcessList(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDataTypesContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode TYPES() { return getToken(DorisParser.TYPES, 0); } + public ShowDataTypesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDataTypes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDataTypes(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDiagnoseTabletContext extends SupportedShowStatementContext { + public Token tabletId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode DIAGNOSIS() { return getToken(DorisParser.DIAGNOSIS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowDiagnoseTabletContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDiagnoseTablet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDiagnoseTablet(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowWhitelistContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode WHITELIST() { return getToken(DorisParser.WHITELIST, 0); } + public ShowWhitelistContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWhitelist(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWhitelist(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDatabaseIdContext extends SupportedShowStatementContext { + public Token databaseId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowDatabaseIdContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDatabaseId(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDatabaseId(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateRepositoryContext extends SupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowCreateRepositoryContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateRepository(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateRepository(this); + } + } + + public final SupportedShowStatementContext supportedShowStatement() throws RecognitionException { + SupportedShowStatementContext _localctx = new SupportedShowStatementContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_supportedShowStatement); + int _la; + try { + setState(1917); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,221,_ctx) ) { + case 1: + _localctx = new ShowVariablesContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1573); + match(SHOW); + setState(1575); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(1574); + statementScope(); + } + } + + setState(1577); + match(VARIABLES); + setState(1579); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1578); + wildWhere(); + } + } + + } + break; + case 2: + _localctx = new ShowAuthorsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1581); + match(SHOW); + setState(1582); + match(AUTHORS); + } + break; + case 3: + _localctx = new ShowCreateDatabaseContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1583); + match(SHOW); + setState(1584); + match(CREATE); + setState(1585); + _la = _input.LA(1); + if ( !(_la==DATABASE || _la==SCHEMA) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1586); + ((ShowCreateDatabaseContext)_localctx).name = multipartIdentifier(); + } + break; + case 4: + _localctx = new ShowBrokerContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1587); + match(SHOW); + setState(1588); + match(BROKER); + } + break; + case 5: + _localctx = new ShowDynamicPartitionContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1589); + match(SHOW); + setState(1590); + match(DYNAMIC); + setState(1591); + match(PARTITION); + setState(1592); + match(TABLES); + setState(1595); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1593); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1594); + ((ShowDynamicPartitionContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 6: + _localctx = new ShowEventsContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(1597); + match(SHOW); + setState(1598); + match(EVENTS); + setState(1601); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1599); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1600); + ((ShowEventsContext)_localctx).database = multipartIdentifier(); + } + } + + setState(1604); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1603); + wildWhere(); + } + } + + } + break; + case 7: + _localctx = new ShowLastInsertContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(1606); + match(SHOW); + setState(1607); + match(LAST); + setState(1608); + match(INSERT); + } + break; + case 8: + _localctx = new ShowCharsetContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(1609); + match(SHOW); + setState(1613); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CHAR: + { + { + setState(1610); + match(CHAR); + setState(1611); + match(SET); + } + } + break; + case CHARSET: + { + setState(1612); + match(CHARSET); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 9: + _localctx = new ShowDeleteContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(1615); + match(SHOW); + setState(1616); + match(DELETE); + setState(1619); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1617); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1618); + ((ShowDeleteContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 10: + _localctx = new ShowGrantsContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(1621); + match(SHOW); + setState(1623); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL) { + { + setState(1622); + match(ALL); + } + } + + setState(1625); + match(GRANTS); + } + break; + case 11: + _localctx = new ShowGrantsForUserContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(1626); + match(SHOW); + setState(1627); + match(GRANTS); + setState(1628); + match(FOR); + setState(1629); + userIdentify(); + } + break; + case 12: + _localctx = new ShowSyncJobContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(1630); + match(SHOW); + setState(1631); + match(SYNC); + setState(1632); + match(JOB); + setState(1635); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1633); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1634); + ((ShowSyncJobContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 13: + _localctx = new ShowLoadProfileContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(1637); + match(SHOW); + setState(1638); + match(LOAD); + setState(1639); + match(PROFILE); + setState(1641); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STRING_LITERAL) { + { + setState(1640); + ((ShowLoadProfileContext)_localctx).loadIdPath = match(STRING_LITERAL); + } + } + + setState(1644); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(1643); + limitClause(); + } + } + + } + break; + case 14: + _localctx = new ShowCreateRepositoryContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(1646); + match(SHOW); + setState(1647); + match(CREATE); + setState(1648); + match(REPOSITORY); + setState(1649); + match(FOR); + setState(1650); + identifier(); + } + break; + case 15: + _localctx = new ShowViewContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(1651); + match(SHOW); + setState(1652); + match(VIEW); + setState(1653); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1654); + ((ShowViewContext)_localctx).tableName = multipartIdentifier(); + setState(1657); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1655); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1656); + ((ShowViewContext)_localctx).database = identifier(); + } + } + + } + break; + case 16: + _localctx = new ShowPluginsContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(1659); + match(SHOW); + setState(1660); + match(PLUGINS); + } + break; + case 17: + _localctx = new ShowRepositoriesContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(1661); + match(SHOW); + setState(1662); + match(REPOSITORIES); + } + break; + case 18: + _localctx = new ShowEncryptKeysContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(1663); + match(SHOW); + setState(1664); + match(ENCRYPTKEYS); + setState(1667); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1665); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1666); + ((ShowEncryptKeysContext)_localctx).database = multipartIdentifier(); + } + } + + setState(1671); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(1669); + match(LIKE); + setState(1670); + match(STRING_LITERAL); + } + } + + } + break; + case 19: + _localctx = new ShowCreateTableContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(1673); + match(SHOW); + setState(1675); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BRIEF) { + { + setState(1674); + match(BRIEF); + } + } + + setState(1677); + match(CREATE); + setState(1678); + match(TABLE); + setState(1679); + ((ShowCreateTableContext)_localctx).name = multipartIdentifier(); + } + break; + case 20: + _localctx = new ShowProcessListContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(1680); + match(SHOW); + setState(1682); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(1681); + match(FULL); + } + } + + setState(1684); + match(PROCESSLIST); + } + break; + case 21: + _localctx = new ShowRolesContext(_localctx); + enterOuterAlt(_localctx, 21); + { + setState(1685); + match(SHOW); + setState(1686); + match(ROLES); + } + break; + case 22: + _localctx = new ShowPartitionIdContext(_localctx); + enterOuterAlt(_localctx, 22); + { + setState(1687); + match(SHOW); + setState(1688); + match(PARTITION); + setState(1689); + ((ShowPartitionIdContext)_localctx).partitionId = match(INTEGER_VALUE); + } + break; + case 23: + _localctx = new ShowPrivilegesContext(_localctx); + enterOuterAlt(_localctx, 23); + { + setState(1690); + match(SHOW); + setState(1691); + match(PRIVILEGES); + } + break; + case 24: + _localctx = new ShowProcContext(_localctx); + enterOuterAlt(_localctx, 24); + { + setState(1692); + match(SHOW); + setState(1693); + match(PROC); + setState(1694); + ((ShowProcContext)_localctx).path = match(STRING_LITERAL); + } + break; + case 25: + _localctx = new ShowSmallFilesContext(_localctx); + enterOuterAlt(_localctx, 25); + { + setState(1695); + match(SHOW); + setState(1696); + match(FILE); + setState(1699); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1697); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1698); + ((ShowSmallFilesContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 26: + _localctx = new ShowStorageEnginesContext(_localctx); + enterOuterAlt(_localctx, 26); + { + setState(1701); + match(SHOW); + setState(1703); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STORAGE) { + { + setState(1702); + match(STORAGE); + } + } + + setState(1705); + match(ENGINES); + } + break; + case 27: + _localctx = new ShowCreateCatalogContext(_localctx); + enterOuterAlt(_localctx, 27); + { + setState(1706); + match(SHOW); + setState(1707); + match(CREATE); + setState(1708); + match(CATALOG); + setState(1709); + ((ShowCreateCatalogContext)_localctx).name = identifier(); + } + break; + case 28: + _localctx = new ShowCatalogContext(_localctx); + enterOuterAlt(_localctx, 28); + { + setState(1710); + match(SHOW); + setState(1711); + match(CATALOG); + setState(1712); + ((ShowCatalogContext)_localctx).name = identifier(); + } + break; + case 29: + _localctx = new ShowCatalogsContext(_localctx); + enterOuterAlt(_localctx, 29); + { + setState(1713); + match(SHOW); + setState(1714); + match(CATALOGS); + setState(1716); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1715); + wildWhere(); + } + } + + } + break; + case 30: + _localctx = new ShowUserPropertiesContext(_localctx); + enterOuterAlt(_localctx, 30); + { + setState(1718); + match(SHOW); + setState(1719); + match(PROPERTY); + setState(1722); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(1720); + match(FOR); + setState(1721); + ((ShowUserPropertiesContext)_localctx).user = identifierOrText(); + } + } + + setState(1726); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(1724); + match(LIKE); + setState(1725); + match(STRING_LITERAL); + } + } + + } + break; + case 31: + _localctx = new ShowAllPropertiesContext(_localctx); + enterOuterAlt(_localctx, 31); + { + setState(1728); + match(SHOW); + setState(1729); + match(ALL); + setState(1730); + match(PROPERTIES); + setState(1733); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(1731); + match(LIKE); + setState(1732); + match(STRING_LITERAL); + } + } + + } + break; + case 32: + _localctx = new ShowCollationContext(_localctx); + enterOuterAlt(_localctx, 32); + { + setState(1735); + match(SHOW); + setState(1736); + match(COLLATION); + setState(1738); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1737); + wildWhere(); + } + } + + } + break; + case 33: + _localctx = new ShowStoragePolicyContext(_localctx); + enterOuterAlt(_localctx, 33); + { + setState(1740); + match(SHOW); + setState(1741); + match(STORAGE); + setState(1742); + match(POLICY); + setState(1748); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(1743); + match(USING); + setState(1746); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(1744); + match(FOR); + setState(1745); + ((ShowStoragePolicyContext)_localctx).policy = identifierOrText(); + } + } + + } + } + + } + break; + case 34: + _localctx = new ShowSqlBlockRuleContext(_localctx); + enterOuterAlt(_localctx, 34); + { + setState(1750); + match(SHOW); + setState(1751); + match(SQL_BLOCK_RULE); + setState(1754); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(1752); + match(FOR); + setState(1753); + ((ShowSqlBlockRuleContext)_localctx).ruleName = identifier(); + } + } + + } + break; + case 35: + _localctx = new ShowCreateViewContext(_localctx); + enterOuterAlt(_localctx, 35); + { + setState(1756); + match(SHOW); + setState(1757); + match(CREATE); + setState(1758); + match(VIEW); + setState(1759); + ((ShowCreateViewContext)_localctx).name = multipartIdentifier(); + } + break; + case 36: + _localctx = new ShowDataTypesContext(_localctx); + enterOuterAlt(_localctx, 36); + { + setState(1760); + match(SHOW); + setState(1761); + match(DATA); + setState(1762); + match(TYPES); + } + break; + case 37: + _localctx = new ShowDataContext(_localctx); + enterOuterAlt(_localctx, 37); + { + setState(1763); + match(SHOW); + setState(1764); + match(DATA); + setState(1766); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL) { + { + setState(1765); + match(ALL); + } + } + + setState(1770); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(1768); + match(FROM); + setState(1769); + ((ShowDataContext)_localctx).tableName = multipartIdentifier(); + } + } + + setState(1773); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(1772); + sortClause(); + } + } + + setState(1776); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1775); + propertyClause(); + } + } + + } + break; + case 38: + _localctx = new ShowCreateMaterializedViewContext(_localctx); + enterOuterAlt(_localctx, 38); + { + setState(1778); + match(SHOW); + setState(1779); + match(CREATE); + setState(1780); + match(MATERIALIZED); + setState(1781); + match(VIEW); + setState(1782); + ((ShowCreateMaterializedViewContext)_localctx).mvName = identifier(); + setState(1783); + match(ON); + setState(1784); + ((ShowCreateMaterializedViewContext)_localctx).tableName = multipartIdentifier(); + } + break; + case 39: + _localctx = new ShowWarningErrorsContext(_localctx); + enterOuterAlt(_localctx, 39); + { + setState(1786); + match(SHOW); + setState(1787); + _la = _input.LA(1); + if ( !(_la==ERRORS || _la==WARNINGS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1789); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(1788); + limitClause(); + } + } + + } + break; + case 40: + _localctx = new ShowWarningErrorCountContext(_localctx); + enterOuterAlt(_localctx, 40); + { + setState(1791); + match(SHOW); + setState(1792); + match(COUNT); + setState(1793); + match(LEFT_PAREN); + setState(1794); + match(ASTERISK); + setState(1795); + match(RIGHT_PAREN); + setState(1796); + _la = _input.LA(1); + if ( !(_la==ERRORS || _la==WARNINGS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 41: + _localctx = new ShowBackendsContext(_localctx); + enterOuterAlt(_localctx, 41); + { + setState(1797); + match(SHOW); + setState(1798); + match(BACKENDS); + } + break; + case 42: + _localctx = new ShowStagesContext(_localctx); + enterOuterAlt(_localctx, 42); + { + setState(1799); + match(SHOW); + setState(1800); + match(STAGES); + } + break; + case 43: + _localctx = new ShowReplicaDistributionContext(_localctx); + enterOuterAlt(_localctx, 43); + { + setState(1801); + match(SHOW); + setState(1802); + match(REPLICA); + setState(1803); + match(DISTRIBUTION); + setState(1804); + match(FROM); + setState(1805); + baseTableRef(); + } + break; + case 44: + _localctx = new ShowTriggersContext(_localctx); + enterOuterAlt(_localctx, 44); + { + setState(1806); + match(SHOW); + setState(1808); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(1807); + match(FULL); + } + } + + setState(1810); + match(TRIGGERS); + setState(1813); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1811); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1812); + ((ShowTriggersContext)_localctx).database = multipartIdentifier(); + } + } + + setState(1816); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1815); + wildWhere(); + } + } + + } + break; + case 45: + _localctx = new ShowDiagnoseTabletContext(_localctx); + enterOuterAlt(_localctx, 45); + { + setState(1818); + match(SHOW); + setState(1819); + match(TABLET); + setState(1820); + match(DIAGNOSIS); + setState(1821); + ((ShowDiagnoseTabletContext)_localctx).tabletId = match(INTEGER_VALUE); + } + break; + case 46: + _localctx = new ShowFrontendsContext(_localctx); + enterOuterAlt(_localctx, 46); + { + setState(1822); + match(SHOW); + setState(1823); + match(FRONTENDS); + setState(1825); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(1824); + ((ShowFrontendsContext)_localctx).name = identifier(); + } + } + + } + break; + case 47: + _localctx = new ShowDatabaseIdContext(_localctx); + enterOuterAlt(_localctx, 47); + { + setState(1827); + match(SHOW); + setState(1828); + match(DATABASE); + setState(1829); + ((ShowDatabaseIdContext)_localctx).databaseId = match(INTEGER_VALUE); + } + break; + case 48: + _localctx = new ShowTableIdContext(_localctx); + enterOuterAlt(_localctx, 48); + { + setState(1830); + match(SHOW); + setState(1831); + match(TABLE); + setState(1832); + ((ShowTableIdContext)_localctx).tableId = match(INTEGER_VALUE); + } + break; + case 49: + _localctx = new ShowTrashContext(_localctx); + enterOuterAlt(_localctx, 49); + { + setState(1833); + match(SHOW); + setState(1834); + match(TRASH); + setState(1837); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(1835); + match(ON); + setState(1836); + ((ShowTrashContext)_localctx).backend = match(STRING_LITERAL); + } + } + + } + break; + case 50: + _localctx = new ShowStatusContext(_localctx); + enterOuterAlt(_localctx, 50); + { + setState(1839); + match(SHOW); + setState(1841); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(1840); + statementScope(); + } + } + + setState(1843); + match(STATUS); + } + break; + case 51: + _localctx = new ShowWhitelistContext(_localctx); + enterOuterAlt(_localctx, 51); + { + setState(1844); + match(SHOW); + setState(1845); + match(WHITELIST); + } + break; + case 52: + _localctx = new ShowTabletsBelongContext(_localctx); + enterOuterAlt(_localctx, 52); + { + setState(1846); + match(SHOW); + setState(1847); + match(TABLETS); + setState(1848); + match(BELONG); + setState(1849); + ((ShowTabletsBelongContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((ShowTabletsBelongContext)_localctx).tabletIds.add(((ShowTabletsBelongContext)_localctx).INTEGER_VALUE); + setState(1854); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1850); + match(COMMA); + setState(1851); + ((ShowTabletsBelongContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((ShowTabletsBelongContext)_localctx).tabletIds.add(((ShowTabletsBelongContext)_localctx).INTEGER_VALUE); + } + } + setState(1856); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 53: + _localctx = new ShowDataSkewContext(_localctx); + enterOuterAlt(_localctx, 53); + { + setState(1857); + match(SHOW); + setState(1858); + match(DATA); + setState(1859); + match(SKEW); + setState(1860); + match(FROM); + setState(1861); + baseTableRef(); + } + break; + case 54: + _localctx = new ShowTableCreationContext(_localctx); + enterOuterAlt(_localctx, 54); + { + setState(1862); + match(SHOW); + setState(1863); + match(TABLE); + setState(1864); + match(CREATION); + setState(1867); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1865); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1866); + ((ShowTableCreationContext)_localctx).database = multipartIdentifier(); + } + } + + setState(1871); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE) { + { + setState(1869); + match(LIKE); + setState(1870); + match(STRING_LITERAL); + } + } + + } + break; + case 55: + _localctx = new ShowTabletStorageFormatContext(_localctx); + enterOuterAlt(_localctx, 55); + { + setState(1873); + match(SHOW); + setState(1874); + match(TABLET); + setState(1875); + match(STORAGE); + setState(1876); + match(FORMAT); + setState(1878); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==VERBOSE) { + { + setState(1877); + match(VERBOSE); + } + } + + } + break; + case 56: + _localctx = new ShowQueryProfileContext(_localctx); + enterOuterAlt(_localctx, 56); + { + setState(1880); + match(SHOW); + setState(1881); + match(QUERY); + setState(1882); + match(PROFILE); + setState(1884); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STRING_LITERAL) { + { + setState(1883); + ((ShowQueryProfileContext)_localctx).queryIdPath = match(STRING_LITERAL); + } + } + + setState(1887); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(1886); + limitClause(); + } + } + + } + break; + case 57: + _localctx = new ShowConvertLscContext(_localctx); + enterOuterAlt(_localctx, 57); + { + setState(1889); + match(SHOW); + setState(1890); + match(CONVERT_LSC); + setState(1893); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1891); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1892); + ((ShowConvertLscContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 58: + _localctx = new ShowTablesContext(_localctx); + enterOuterAlt(_localctx, 58); + { + setState(1895); + match(SHOW); + setState(1897); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(1896); + match(FULL); + } + } + + setState(1899); + match(TABLES); + setState(1902); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1900); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1901); + ((ShowTablesContext)_localctx).database = multipartIdentifier(); + } + } + + setState(1905); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1904); + wildWhere(); + } + } + + } + break; + case 59: + _localctx = new ShowTableStatusContext(_localctx); + enterOuterAlt(_localctx, 59); + { + setState(1907); + match(SHOW); + setState(1908); + match(TABLE); + setState(1909); + match(STATUS); + setState(1912); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(1910); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1911); + ((ShowTableStatusContext)_localctx).database = multipartIdentifier(); + } + } + + setState(1915); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(1914); + wildWhere(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedLoadStatementContext extends ParserRuleContext { + public SupportedLoadStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedLoadStatement; } + + public SupportedLoadStatementContext() { } + public void copyFrom(SupportedLoadStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateRoutineLoadAliasContext extends SupportedLoadStatementContext { + public CreateRoutineLoadContext createRoutineLoad() { + return getRuleContext(CreateRoutineLoadContext.class,0); + } + public CreateRoutineLoadAliasContext(SupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRoutineLoadAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRoutineLoadAlias(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SyncContext extends SupportedLoadStatementContext { + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public SyncContext(SupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSync(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSync(this); + } + } + + public final SupportedLoadStatementContext supportedLoadStatement() throws RecognitionException { + SupportedLoadStatementContext _localctx = new SupportedLoadStatementContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_supportedLoadStatement); + try { + setState(1921); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SYNC: + _localctx = new SyncContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1919); + match(SYNC); + } + break; + case CREATE: + _localctx = new CreateRoutineLoadAliasContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1920); + createRoutineLoad(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedOtherStatementContext extends ParserRuleContext { + public SupportedOtherStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedOtherStatement; } + + public SupportedOtherStatementContext() { } + public void copyFrom(SupportedOtherStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class HelpContext extends SupportedOtherStatementContext { + public IdentifierOrTextContext mark; + public TerminalNode HELP() { return getToken(DorisParser.HELP, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public HelpContext(SupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHelp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHelp(this); + } + } + + public final SupportedOtherStatementContext supportedOtherStatement() throws RecognitionException { + SupportedOtherStatementContext _localctx = new SupportedOtherStatementContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_supportedOtherStatement); + try { + _localctx = new HelpContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1923); + match(HELP); + setState(1924); + ((HelpContext)_localctx).mark = identifierOrText(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedOtherStatementContext extends ParserRuleContext { + public UnsupportedOtherStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedOtherStatement; } + + public UnsupportedOtherStatementContext() { } + public void copyFrom(UnsupportedOtherStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UninstallPluginContext extends UnsupportedOtherStatementContext { + public IdentifierOrTextContext name; + public TerminalNode UNINSTALL() { return getToken(DorisParser.UNINSTALL, 0); } + public TerminalNode PLUGIN() { return getToken(DorisParser.PLUGIN, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public UninstallPluginContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUninstallPlugin(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUninstallPlugin(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UnlockTablesContext extends UnsupportedOtherStatementContext { + public TerminalNode UNLOCK() { return getToken(DorisParser.UNLOCK, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public UnlockTablesContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnlockTables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnlockTables(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BackupContext extends UnsupportedOtherStatementContext { + public MultipartIdentifierContext label; + public IdentifierContext repo; + public PropertyClauseContext properties; + public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } + public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public List baseTableRef() { + return getRuleContexts(BaseTableRefContext.class); + } + public BaseTableRefContext baseTableRef(int i) { + return getRuleContext(BaseTableRefContext.class,i); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode EXCLUDE() { return getToken(DorisParser.EXCLUDE, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public BackupContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBackup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBackup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class LockTablesContext extends UnsupportedOtherStatementContext { + public TerminalNode LOCK() { return getToken(DorisParser.LOCK, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public List lockTable() { + return getRuleContexts(LockTableContext.class); + } + public LockTableContext lockTable(int i) { + return getRuleContext(LockTableContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public LockTablesContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLockTables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLockTables(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RestoreContext extends UnsupportedOtherStatementContext { + public MultipartIdentifierContext label; + public IdentifierContext repo; + public PropertyClauseContext properties; + public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } + public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public List baseTableRef() { + return getRuleContexts(BaseTableRefContext.class); + } + public BaseTableRefContext baseTableRef(int i) { + return getRuleContext(BaseTableRefContext.class,i); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode EXCLUDE() { return getToken(DorisParser.EXCLUDE, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public RestoreContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRestore(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRestore(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class InstallPluginContext extends UnsupportedOtherStatementContext { + public IdentifierOrTextContext source; + public PropertyClauseContext properties; + public TerminalNode INSTALL() { return getToken(DorisParser.INSTALL, 0); } + public TerminalNode PLUGIN() { return getToken(DorisParser.PLUGIN, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public InstallPluginContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInstallPlugin(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInstallPlugin(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class WarmUpClusterContext extends UnsupportedOtherStatementContext { + public IdentifierContext destination; + public IdentifierContext source; + public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } + public TerminalNode UP() { return getToken(DorisParser.UP, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List CLUSTER() { return getTokens(DorisParser.CLUSTER); } + public TerminalNode CLUSTER(int i) { + return getToken(DorisParser.CLUSTER, i); + } + public List COMPUTE() { return getTokens(DorisParser.COMPUTE); } + public TerminalNode COMPUTE(int i) { + return getToken(DorisParser.COMPUTE, i); + } + public List GROUP() { return getTokens(DorisParser.GROUP); } + public TerminalNode GROUP(int i) { + return getToken(DorisParser.GROUP, i); + } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public List warmUpItem() { + return getRuleContexts(WarmUpItemContext.class); + } + public WarmUpItemContext warmUpItem(int i) { + return getRuleContext(WarmUpItemContext.class,i); + } + public List AND() { return getTokens(DorisParser.AND); } + public TerminalNode AND(int i) { + return getToken(DorisParser.AND, i); + } + public WarmUpClusterContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWarmUpCluster(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWarmUpCluster(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedStartTransactionContext extends UnsupportedOtherStatementContext { + public TerminalNode START() { return getToken(DorisParser.START, 0); } + public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode CONSISTENT() { return getToken(DorisParser.CONSISTENT, 0); } + public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } + public UnsupportedStartTransactionContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnsupportedStartTransaction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnsupportedStartTransaction(this); + } + } + + public final UnsupportedOtherStatementContext unsupportedOtherStatement() throws RecognitionException { + UnsupportedOtherStatementContext _localctx = new UnsupportedOtherStatementContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_unsupportedOtherStatement); + int _la; + try { + setState(2029); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INSTALL: + _localctx = new InstallPluginContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(1926); + match(INSTALL); + setState(1927); + match(PLUGIN); + setState(1928); + match(FROM); + setState(1929); + ((InstallPluginContext)_localctx).source = identifierOrText(); + setState(1931); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1930); + ((InstallPluginContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case UNINSTALL: + _localctx = new UninstallPluginContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(1933); + match(UNINSTALL); + setState(1934); + match(PLUGIN); + setState(1935); + ((UninstallPluginContext)_localctx).name = identifierOrText(); + } + break; + case LOCK: + _localctx = new LockTablesContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(1936); + match(LOCK); + setState(1937); + match(TABLES); + setState(1946); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(1938); + lockTable(); + setState(1943); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1939); + match(COMMA); + setState(1940); + lockTable(); + } + } + setState(1945); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + } + break; + case UNLOCK: + _localctx = new UnlockTablesContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(1948); + match(UNLOCK); + setState(1949); + match(TABLES); + } + break; + case WARM: + _localctx = new WarmUpClusterContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(1950); + match(WARM); + setState(1951); + match(UP); + setState(1955); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLUSTER: + { + setState(1952); + match(CLUSTER); + } + break; + case COMPUTE: + { + setState(1953); + match(COMPUTE); + setState(1954); + match(GROUP); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1957); + ((WarmUpClusterContext)_localctx).destination = identifier(); + setState(1958); + match(WITH); + setState(1973); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLUSTER: + case COMPUTE: + { + setState(1962); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLUSTER: + { + setState(1959); + match(CLUSTER); + } + break; + case COMPUTE: + { + setState(1960); + match(COMPUTE); + setState(1961); + match(GROUP); + } + break; + default: + throw new NoViableAltException(this); + } + setState(1964); + ((WarmUpClusterContext)_localctx).source = identifier(); + } + break; + case TABLE: + { + { + setState(1965); + warmUpItem(); + setState(1970); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==AND) { + { + { + setState(1966); + match(AND); + setState(1967); + warmUpItem(); + } + } + setState(1972); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(1976); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(1975); + match(FORCE); + } + } + + } + break; + case BACKUP: + _localctx = new BackupContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(1978); + match(BACKUP); + setState(1979); + match(SNAPSHOT); + setState(1980); + ((BackupContext)_localctx).label = multipartIdentifier(); + setState(1981); + match(TO); + setState(1982); + ((BackupContext)_localctx).repo = identifier(); + setState(1995); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXCLUDE || _la==ON) { + { + setState(1983); + _la = _input.LA(1); + if ( !(_la==EXCLUDE || _la==ON) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(1984); + match(LEFT_PAREN); + setState(1985); + baseTableRef(); + setState(1990); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(1986); + match(COMMA); + setState(1987); + baseTableRef(); + } + } + setState(1992); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1993); + match(RIGHT_PAREN); + } + } + + setState(1998); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(1997); + ((BackupContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case RESTORE: + _localctx = new RestoreContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2000); + match(RESTORE); + setState(2001); + match(SNAPSHOT); + setState(2002); + ((RestoreContext)_localctx).label = multipartIdentifier(); + setState(2003); + match(FROM); + setState(2004); + ((RestoreContext)_localctx).repo = identifier(); + setState(2017); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXCLUDE || _la==ON) { + { + setState(2005); + _la = _input.LA(1); + if ( !(_la==EXCLUDE || _la==ON) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2006); + match(LEFT_PAREN); + setState(2007); + baseTableRef(); + setState(2012); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2008); + match(COMMA); + setState(2009); + baseTableRef(); + } + } + setState(2014); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2015); + match(RIGHT_PAREN); + } + } + + setState(2020); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2019); + ((RestoreContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case START: + _localctx = new UnsupportedStartTransactionContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(2022); + match(START); + setState(2023); + match(TRANSACTION); + setState(2027); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(2024); + match(WITH); + setState(2025); + match(CONSISTENT); + setState(2026); + match(SNAPSHOT); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WarmUpItemContext extends ParserRuleContext { + public MultipartIdentifierContext tableName; + public IdentifierContext partitionName; + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public WarmUpItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_warmUpItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWarmUpItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWarmUpItem(this); + } + } + + public final WarmUpItemContext warmUpItem() throws RecognitionException { + WarmUpItemContext _localctx = new WarmUpItemContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_warmUpItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2031); + match(TABLE); + setState(2032); + ((WarmUpItemContext)_localctx).tableName = multipartIdentifier(); + setState(2035); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(2033); + match(PARTITION); + setState(2034); + ((WarmUpItemContext)_localctx).partitionName = identifier(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LockTableContext extends ParserRuleContext { + public MultipartIdentifierContext name; + public IdentifierOrTextContext alias; + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode READ() { return getToken(DorisParser.READ, 0); } + public TerminalNode WRITE() { return getToken(DorisParser.WRITE, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } + public TerminalNode LOW_PRIORITY() { return getToken(DorisParser.LOW_PRIORITY, 0); } + public LockTableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lockTable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLockTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLockTable(this); + } + } + + public final LockTableContext lockTable() throws RecognitionException { + LockTableContext _localctx = new LockTableContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_lockTable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2037); + ((LockTableContext)_localctx).name = multipartIdentifier(); + setState(2040); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(2038); + match(AS); + setState(2039); + ((LockTableContext)_localctx).alias = identifierOrText(); + } + } + + setState(2050); + _errHandler.sync(this); + switch (_input.LA(1)) { + case READ: + { + setState(2042); + match(READ); + setState(2044); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOCAL) { + { + setState(2043); + match(LOCAL); + } + } + + } + break; + case LOW_PRIORITY: + case WRITE: + { + setState(2047); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOW_PRIORITY) { + { + setState(2046); + match(LOW_PRIORITY); + } + } + + setState(2049); + match(WRITE); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedShowStatementContext extends ParserRuleContext { + public UnsupportedShowStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedShowStatement; } + + public UnsupportedShowStatementContext() { } + public void copyFrom(UnsupportedShowStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowOpenTablesContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode OPEN() { return getToken(DorisParser.OPEN, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowOpenTablesContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowOpenTables(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowOpenTables(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowQueryStatsContext extends UnsupportedShowStatementContext { + public IdentifierContext database; + public MultipartIdentifierContext tableName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } + public ShowQueryStatsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowQueryStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowQueryStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowIndexContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext tableName; + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public TerminalNode KEYS() { return getToken(DorisParser.KEYS, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public TerminalNode INDEXES() { return getToken(DorisParser.INDEXES, 0); } + public List FROM() { return getTokens(DorisParser.FROM); } + public TerminalNode FROM(int i) { + return getToken(DorisParser.FROM, i); + } + public List IN() { return getTokens(DorisParser.IN); } + public TerminalNode IN(int i) { + return getToken(DorisParser.IN, i); + } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public ShowIndexContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowIndex(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowBackupContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowBackupContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBackup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBackup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowLoadContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode STREAM() { return getToken(DorisParser.STREAM, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowLoadContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowClustersContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CLUSTERS() { return getToken(DorisParser.CLUSTERS, 0); } + public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } + public TerminalNode GROUPS() { return getToken(DorisParser.GROUPS, 0); } + public ShowClustersContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowClusters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowClusters(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateFunctionContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public FunctionIdentifierContext functionIdentifier() { + return getRuleContext(FunctionIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public FunctionArgumentsContext functionArguments() { + return getRuleContext(FunctionArgumentsContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateFunctionContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowPartitionsContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public ShowPartitionsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPartitions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPartitions(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCacheHotSpotContext extends UnsupportedShowStatementContext { + public Token tablePath; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CACHE() { return getToken(DorisParser.CACHE, 0); } + public TerminalNode HOTSPOT() { return getToken(DorisParser.HOTSPOT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowCacheHotSpotContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCacheHotSpot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCacheHotSpot(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowGlobalFunctionsContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } + public TerminalNode FUNCTIONS() { return getToken(DorisParser.FUNCTIONS, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowGlobalFunctionsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowGlobalFunctions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowGlobalFunctions(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowMaterializedViewContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext name; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowMaterializedViewContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowMaterializedView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowMaterializedView(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowExportContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode EXPORT() { return getToken(DorisParser.EXPORT, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowExportContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowExport(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowExport(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowSnapshotContext extends UnsupportedShowStatementContext { + public IdentifierContext repo; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowSnapshotContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSnapshot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSnapshot(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCatalogRecycleBinContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public TerminalNode RECYCLE() { return getToken(DorisParser.RECYCLE, 0); } + public TerminalNode BIN() { return getToken(DorisParser.BIN, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowCatalogRecycleBinContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCatalogRecycleBin(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCatalogRecycleBin(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCopyContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCopyContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCopy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCopy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowRowPolicyContext extends UnsupportedShowStatementContext { + public IdentifierContext role; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowRowPolicyContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRowPolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRowPolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTypeCastContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TYPECAST() { return getToken(DorisParser.TYPECAST, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTypeCastContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTypeCast(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTypeCast(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowRestoreContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } + public TerminalNode BRIEF() { return getToken(DorisParser.BRIEF, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowRestoreContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRestore(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRestore(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowLoadWaringsContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public Token url; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowLoadWaringsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLoadWarings(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLoadWarings(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowColumnsContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext tableName; + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public TerminalNode FIELDS() { return getToken(DorisParser.FIELDS, 0); } + public List FROM() { return getTokens(DorisParser.FROM); } + public TerminalNode FROM(int i) { + return getToken(DorisParser.FROM, i); + } + public List IN() { return getTokens(DorisParser.IN); } + public TerminalNode IN(int i) { + return getToken(DorisParser.IN, i); + } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowColumnsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowColumns(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowAlterTableContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowAlterTableContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAlterTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAlterTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowBuildIndexContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowBuildIndexContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBuildIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBuildIndex(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowDatabasesContext extends UnsupportedShowStatementContext { + public IdentifierContext catalog; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode DATABASES() { return getToken(DorisParser.DATABASES, 0); } + public TerminalNode SCHEMAS() { return getToken(DorisParser.SCHEMAS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowDatabasesContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDatabases(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDatabases(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTabletIdContext extends UnsupportedShowStatementContext { + public Token tabletId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowTabletIdContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletId(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletId(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowStorageVaultContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public TerminalNode VAULTS() { return getToken(DorisParser.VAULTS, 0); } + public ShowStorageVaultContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStorageVault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStorageVault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowWarmUpJobContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } + public TerminalNode UP() { return getToken(DorisParser.UP, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowWarmUpJobContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWarmUpJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWarmUpJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowReplicaStatusContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowReplicaStatusContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowReplicaStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowReplicaStatus(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTabletsFromTableContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLETS() { return getToken(DorisParser.TABLETS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public ShowTabletsFromTableContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletsFromTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletsFromTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowViewsContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode VIEWS() { return getToken(DorisParser.VIEWS, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowViewsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowViews(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowViews(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTransactionContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowTransactionContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTransaction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTransaction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowResourcesContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode RESOURCES() { return getToken(DorisParser.RESOURCES, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public ShowResourcesContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowResources(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowResources(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowFunctionsContext extends UnsupportedShowStatementContext { + public MultipartIdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode FUNCTIONS() { return getToken(DorisParser.FUNCTIONS, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public TerminalNode BUILTIN() { return getToken(DorisParser.BUILTIN, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowFunctionsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowFunctions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowFunctions(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowWorkloadGroupsContext extends UnsupportedShowStatementContext { + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode GROUPS() { return getToken(DorisParser.GROUPS, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowWorkloadGroupsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWorkloadGroups(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWorkloadGroups(this); + } + } + + public final UnsupportedShowStatementContext unsupportedShowStatement() throws RecognitionException { + UnsupportedShowStatementContext _localctx = new UnsupportedShowStatementContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_unsupportedShowStatement); + int _la; + try { + setState(2409); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,320,_ctx) ) { + case 1: + _localctx = new ShowRowPolicyContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2052); + match(SHOW); + setState(2053); + match(ROW); + setState(2054); + match(POLICY); + setState(2061); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(2055); + match(FOR); + setState(2059); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(2056); + userIdentify(); + } + break; + case ROLE: + { + { + setState(2057); + match(ROLE); + setState(2058); + ((ShowRowPolicyContext)_localctx).role = identifier(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + } + break; + case 2: + _localctx = new ShowStorageVaultContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2063); + match(SHOW); + setState(2064); + match(STORAGE); + setState(2065); + _la = _input.LA(1); + if ( !(_la==VAULT || _la==VAULTS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case 3: + _localctx = new ShowOpenTablesContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2066); + match(SHOW); + setState(2067); + match(OPEN); + setState(2068); + match(TABLES); + setState(2071); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2069); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2070); + ((ShowOpenTablesContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2074); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2073); + wildWhere(); + } + } + + } + break; + case 4: + _localctx = new ShowViewsContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2076); + match(SHOW); + setState(2078); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(2077); + match(FULL); + } + } + + setState(2080); + match(VIEWS); + setState(2083); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2081); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2082); + ((ShowViewsContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2086); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2085); + wildWhere(); + } + } + + } + break; + case 5: + _localctx = new ShowMaterializedViewContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2088); + match(SHOW); + setState(2089); + match(CREATE); + setState(2090); + match(MATERIALIZED); + setState(2091); + match(VIEW); + setState(2092); + ((ShowMaterializedViewContext)_localctx).name = multipartIdentifier(); + } + break; + case 6: + _localctx = new ShowCreateFunctionContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2093); + match(SHOW); + setState(2094); + match(CREATE); + setState(2096); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(2095); + statementScope(); + } + } + + setState(2098); + match(FUNCTION); + setState(2099); + functionIdentifier(); + setState(2100); + match(LEFT_PAREN); + setState(2102); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { + { + setState(2101); + functionArguments(); + } + } + + setState(2104); + match(RIGHT_PAREN); + setState(2107); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2105); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2106); + ((ShowCreateFunctionContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 7: + _localctx = new ShowDatabasesContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2109); + match(SHOW); + setState(2110); + _la = _input.LA(1); + if ( !(_la==DATABASES || _la==SCHEMAS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2113); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(2111); + match(FROM); + setState(2112); + ((ShowDatabasesContext)_localctx).catalog = identifier(); + } + } + + setState(2116); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2115); + wildWhere(); + } + } + + } + break; + case 8: + _localctx = new ShowColumnsContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(2118); + match(SHOW); + setState(2120); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(2119); + match(FULL); + } + } + + setState(2122); + _la = _input.LA(1); + if ( !(_la==COLUMNS || _la==FIELDS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2123); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2124); + ((ShowColumnsContext)_localctx).tableName = multipartIdentifier(); + setState(2127); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2125); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2126); + ((ShowColumnsContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2130); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2129); + wildWhere(); + } + } + + } + break; + case 9: + _localctx = new ShowLoadWaringsContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(2132); + match(SHOW); + setState(2133); + match(LOAD); + setState(2134); + match(WARNINGS); + setState(2147); + _errHandler.sync(this); + switch (_input.LA(1)) { + case EOF: + case SEMICOLON: + case FROM: + case IN: + case LIKE: + case LIMIT: + case WHERE: + { + { + setState(2137); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2135); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2136); + ((ShowLoadWaringsContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2140); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2139); + wildWhere(); + } + } + + setState(2143); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2142); + limitClause(); + } + } + + } + } + break; + case ON: + { + { + setState(2145); + match(ON); + setState(2146); + ((ShowLoadWaringsContext)_localctx).url = match(STRING_LITERAL); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 10: + _localctx = new ShowLoadContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(2149); + match(SHOW); + setState(2151); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STREAM) { + { + setState(2150); + match(STREAM); + } + } + + setState(2153); + match(LOAD); + setState(2156); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2154); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2155); + ((ShowLoadContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2159); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2158); + wildWhere(); + } + } + + setState(2162); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2161); + sortClause(); + } + } + + setState(2165); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2164); + limitClause(); + } + } + + } + break; + case 11: + _localctx = new ShowExportContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(2167); + match(SHOW); + setState(2168); + match(EXPORT); + setState(2171); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2169); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2170); + ((ShowExportContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2174); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2173); + wildWhere(); + } + } + + setState(2177); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2176); + sortClause(); + } + } + + setState(2180); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2179); + limitClause(); + } + } + + } + break; + case 12: + _localctx = new ShowAlterTableContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(2182); + match(SHOW); + setState(2183); + match(ALTER); + setState(2184); + match(TABLE); + setState(2189); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ROLLUP: + { + setState(2185); + match(ROLLUP); + } + break; + case MATERIALIZED: + { + { + setState(2186); + match(MATERIALIZED); + setState(2187); + match(VIEW); + } + } + break; + case COLUMN: + { + setState(2188); + match(COLUMN); + } + break; + default: + throw new NoViableAltException(this); + } + setState(2193); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2191); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2192); + ((ShowAlterTableContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2196); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2195); + wildWhere(); + } + } + + setState(2199); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2198); + sortClause(); + } + } + + setState(2202); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2201); + limitClause(); + } + } + + } + break; + case 13: + _localctx = new ShowPartitionsContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(2204); + match(SHOW); + setState(2206); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(2205); + match(TEMPORARY); + } + } + + setState(2208); + match(PARTITIONS); + setState(2209); + match(FROM); + setState(2210); + ((ShowPartitionsContext)_localctx).tableName = multipartIdentifier(); + setState(2212); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2211); + wildWhere(); + } + } + + setState(2215); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2214); + sortClause(); + } + } + + setState(2218); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2217); + limitClause(); + } + } + + } + break; + case 14: + _localctx = new ShowTabletIdContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(2220); + match(SHOW); + setState(2221); + match(TABLET); + setState(2222); + ((ShowTabletIdContext)_localctx).tabletId = match(INTEGER_VALUE); + } + break; + case 15: + _localctx = new ShowTabletsFromTableContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(2223); + match(SHOW); + setState(2224); + match(TABLETS); + setState(2225); + match(FROM); + setState(2226); + ((ShowTabletsFromTableContext)_localctx).tableName = multipartIdentifier(); + setState(2228); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(2227); + partitionSpec(); + } + } + + setState(2231); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2230); + wildWhere(); + } + } + + setState(2234); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2233); + sortClause(); + } + } + + setState(2237); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2236); + limitClause(); + } + } + + } + break; + case 16: + _localctx = new ShowBackupContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(2239); + match(SHOW); + setState(2240); + match(BACKUP); + setState(2243); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2241); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2242); + ((ShowBackupContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2246); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2245); + wildWhere(); + } + } + + } + break; + case 17: + _localctx = new ShowRestoreContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(2248); + match(SHOW); + setState(2250); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BRIEF) { + { + setState(2249); + match(BRIEF); + } + } + + setState(2252); + match(RESTORE); + setState(2255); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2253); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2254); + ((ShowRestoreContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2258); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2257); + wildWhere(); + } + } + + } + break; + case 18: + _localctx = new ShowResourcesContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(2260); + match(SHOW); + setState(2261); + match(RESOURCES); + setState(2263); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2262); + wildWhere(); + } + } + + setState(2266); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2265); + sortClause(); + } + } + + setState(2269); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2268); + limitClause(); + } + } + + } + break; + case 19: + _localctx = new ShowWorkloadGroupsContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(2271); + match(SHOW); + setState(2272); + match(WORKLOAD); + setState(2273); + match(GROUPS); + setState(2275); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2274); + wildWhere(); + } + } + + } + break; + case 20: + _localctx = new ShowSnapshotContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(2277); + match(SHOW); + setState(2278); + match(SNAPSHOT); + setState(2279); + match(ON); + setState(2280); + ((ShowSnapshotContext)_localctx).repo = identifier(); + setState(2282); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2281); + wildWhere(); + } + } + + } + break; + case 21: + _localctx = new ShowFunctionsContext(_localctx); + enterOuterAlt(_localctx, 21); + { + setState(2284); + match(SHOW); + setState(2286); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(2285); + match(FULL); + } + } + + setState(2289); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BUILTIN) { + { + setState(2288); + match(BUILTIN); + } + } + + setState(2291); + match(FUNCTIONS); + setState(2294); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2292); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2293); + ((ShowFunctionsContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2297); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2296); + wildWhere(); + } + } + + } + break; + case 22: + _localctx = new ShowGlobalFunctionsContext(_localctx); + enterOuterAlt(_localctx, 22); + { + setState(2299); + match(SHOW); + setState(2300); + match(GLOBAL); + setState(2302); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FULL) { + { + setState(2301); + match(FULL); + } + } + + setState(2304); + match(FUNCTIONS); + setState(2306); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2305); + wildWhere(); + } + } + + } + break; + case 23: + _localctx = new ShowTypeCastContext(_localctx); + enterOuterAlt(_localctx, 23); + { + setState(2308); + match(SHOW); + setState(2309); + match(TYPECAST); + setState(2312); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2310); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2311); + ((ShowTypeCastContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 24: + _localctx = new ShowIndexContext(_localctx); + enterOuterAlt(_localctx, 24); + { + setState(2314); + match(SHOW); + setState(2315); + _la = _input.LA(1); + if ( !(((((_la - 219)) & ~0x3f) == 0 && ((1L << (_la - 219)) & 100663299L) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2316); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2317); + ((ShowIndexContext)_localctx).tableName = multipartIdentifier(); + setState(2320); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2318); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2319); + ((ShowIndexContext)_localctx).database = multipartIdentifier(); + } + } + + } + break; + case 25: + _localctx = new ShowTransactionContext(_localctx); + enterOuterAlt(_localctx, 25); + { + setState(2322); + match(SHOW); + setState(2323); + match(TRANSACTION); + setState(2326); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2324); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2325); + ((ShowTransactionContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2329); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2328); + wildWhere(); + } + } + + } + break; + case 26: + _localctx = new ShowCacheHotSpotContext(_localctx); + enterOuterAlt(_localctx, 26); + { + setState(2331); + match(SHOW); + setState(2332); + match(CACHE); + setState(2333); + match(HOTSPOT); + setState(2334); + ((ShowCacheHotSpotContext)_localctx).tablePath = match(STRING_LITERAL); + } + break; + case 27: + _localctx = new ShowCatalogRecycleBinContext(_localctx); + enterOuterAlt(_localctx, 27); + { + setState(2335); + match(SHOW); + setState(2336); + match(CATALOG); + setState(2337); + match(RECYCLE); + setState(2338); + match(BIN); + setState(2340); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2339); + wildWhere(); + } + } + + } + break; + case 28: + _localctx = new ShowQueryStatsContext(_localctx); + enterOuterAlt(_localctx, 28); + { + setState(2342); + match(SHOW); + setState(2343); + match(QUERY); + setState(2344); + match(STATS); + setState(2355); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + { + { + setState(2345); + match(FOR); + setState(2346); + ((ShowQueryStatsContext)_localctx).database = identifier(); + } + } + break; + case FROM: + { + { + setState(2347); + match(FROM); + setState(2348); + ((ShowQueryStatsContext)_localctx).tableName = multipartIdentifier(); + setState(2353); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL) { + { + setState(2349); + match(ALL); + setState(2351); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==VERBOSE) { + { + setState(2350); + match(VERBOSE); + } + } + + } + } + + } + } + break; + case EOF: + case SEMICOLON: + break; + default: + break; + } + } + break; + case 29: + _localctx = new ShowBuildIndexContext(_localctx); + enterOuterAlt(_localctx, 29); + { + setState(2357); + match(SHOW); + setState(2358); + match(BUILD); + setState(2359); + match(INDEX); + setState(2362); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2360); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2361); + ((ShowBuildIndexContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2365); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2364); + wildWhere(); + } + } + + setState(2368); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2367); + sortClause(); + } + } + + setState(2371); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2370); + limitClause(); + } + } + + } + break; + case 30: + _localctx = new ShowClustersContext(_localctx); + enterOuterAlt(_localctx, 30); + { + setState(2373); + match(SHOW); + setState(2377); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CLUSTERS: + { + setState(2374); + match(CLUSTERS); + } + break; + case COMPUTE: + { + { + setState(2375); + match(COMPUTE); + setState(2376); + match(GROUPS); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 31: + _localctx = new ShowReplicaStatusContext(_localctx); + enterOuterAlt(_localctx, 31); + { + setState(2379); + match(SHOW); + setState(2380); + match(REPLICA); + setState(2381); + match(STATUS); + setState(2382); + match(FROM); + setState(2383); + baseTableRef(); + setState(2385); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2384); + wildWhere(); + } + } + + } + break; + case 32: + _localctx = new ShowCopyContext(_localctx); + enterOuterAlt(_localctx, 32); + { + setState(2387); + match(SHOW); + setState(2388); + match(COPY); + setState(2391); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2389); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2390); + ((ShowCopyContext)_localctx).database = multipartIdentifier(); + } + } + + setState(2394); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(2393); + whereClause(); + } + } + + setState(2397); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(2396); + sortClause(); + } + } + + setState(2400); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIMIT) { + { + setState(2399); + limitClause(); + } + } + + } + break; + case 33: + _localctx = new ShowWarmUpJobContext(_localctx); + enterOuterAlt(_localctx, 33); + { + setState(2402); + match(SHOW); + setState(2403); + match(WARM); + setState(2404); + match(UP); + setState(2405); + match(JOB); + setState(2407); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2406); + wildWhere(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CreateRoutineLoadContext extends ParserRuleContext { + public MultipartIdentifierContext label; + public IdentifierContext table; + public IdentifierContext type; + public PropertyItemListContext customProperties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public List loadProperty() { + return getRuleContexts(LoadPropertyContext.class); + } + public LoadPropertyContext loadProperty(int i) { + return getRuleContext(LoadPropertyContext.class,i); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public TerminalNode APPEND() { return getToken(DorisParser.APPEND, 0); } + public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } + public TerminalNode MERGE() { return getToken(DorisParser.MERGE, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CreateRoutineLoadContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_createRoutineLoad; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRoutineLoad(this); + } + } + + public final CreateRoutineLoadContext createRoutineLoad() throws RecognitionException { + CreateRoutineLoadContext _localctx = new CreateRoutineLoadContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_createRoutineLoad); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2411); + match(CREATE); + setState(2412); + match(ROUTINE); + setState(2413); + match(LOAD); + setState(2414); + ((CreateRoutineLoadContext)_localctx).label = multipartIdentifier(); + setState(2417); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(2415); + match(ON); + setState(2416); + ((CreateRoutineLoadContext)_localctx).table = identifier(); + } + } + + setState(2421); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(2419); + match(WITH); + setState(2420); + _la = _input.LA(1); + if ( !(_la==APPEND || _la==DELETE || _la==MERGE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(2431); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLUMNS || _la==DELETE || ((((_la - 314)) & ~0x3f) == 0 && ((1L << (_la - 314)) & 536871297L) != 0) || _la==TEMPORARY || _la==WHERE) { + { + setState(2423); + loadProperty(); + setState(2428); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2424); + match(COMMA); + setState(2425); + loadProperty(); + } + } + setState(2430); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(2434); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2433); + propertyClause(); + } + } + + setState(2436); + match(FROM); + setState(2437); + ((CreateRoutineLoadContext)_localctx).type = identifier(); + setState(2438); + match(LEFT_PAREN); + setState(2439); + ((CreateRoutineLoadContext)_localctx).customProperties = propertyItemList(); + setState(2440); + match(RIGHT_PAREN); + setState(2442); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(2441); + commentSpec(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedLoadStatementContext extends ParserRuleContext { + public UnsupportedLoadStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedLoadStatement; } + + public UnsupportedLoadStatementContext() { } + public void copyFrom(UnsupportedLoadStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowRoutineLoadContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public ShowRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ResumeRoutineLoadContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ResumeRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateLoadContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ShowCreateLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateDataSyncJobContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public ChannelDescriptionsContext channelDescriptions() { + return getRuleContext(ChannelDescriptionsContext.class,0); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode BINLOG() { return getToken(DorisParser.BINLOG, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateDataSyncJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateDataSyncJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PauseDataSyncJobContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext name; + public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PauseDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseDataSyncJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseDataSyncJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ResumeDataSyncJobContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext name; + public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ResumeDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeDataSyncJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeDataSyncJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PauseAllRoutineLoadContext extends UnsupportedLoadStatementContext { + public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public PauseAllRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseAllRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseAllRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StopDataSyncJobContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext name; + public TerminalNode STOP() { return getToken(DorisParser.STOP, 0); } + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public StopDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStopDataSyncJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStopDataSyncJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class MysqlLoadContext extends UnsupportedLoadStatementContext { + public PropertyItemListContext properties; + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public MysqlDataDescContext mysqlDataDesc() { + return getRuleContext(MysqlDataDescContext.class,0); + } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public MysqlLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMysqlLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMysqlLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowCreateRoutineLoadContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public ShowCreateRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PauseRoutineLoadContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PauseRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowRoutineLoadTaskContext extends UnsupportedLoadStatementContext { + public IdentifierContext database; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowRoutineLoadTaskContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRoutineLoadTask(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRoutineLoadTask(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ResumeAllRoutineLoadContext extends UnsupportedLoadStatementContext { + public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public ResumeAllRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeAllRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeAllRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StopRoutineLoadContext extends UnsupportedLoadStatementContext { + public MultipartIdentifierContext label; + public TerminalNode STOP() { return getToken(DorisParser.STOP, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public StopRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStopRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStopRoutineLoad(this); + } + } + + public final UnsupportedLoadStatementContext unsupportedLoadStatement() throws RecognitionException { + UnsupportedLoadStatementContext _localctx = new UnsupportedLoadStatementContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_unsupportedLoadStatement); + int _la; + try { + setState(2543); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,336,_ctx) ) { + case 1: + _localctx = new MysqlLoadContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2444); + match(LOAD); + setState(2445); + mysqlDataDesc(); + setState(2451); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2446); + match(PROPERTIES); + setState(2447); + match(LEFT_PAREN); + setState(2448); + ((MysqlLoadContext)_localctx).properties = propertyItemList(); + setState(2449); + match(RIGHT_PAREN); + } + } + + setState(2454); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(2453); + commentSpec(); + } + } + + } + break; + case 2: + _localctx = new CreateDataSyncJobContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2456); + match(CREATE); + setState(2457); + match(SYNC); + setState(2458); + ((CreateDataSyncJobContext)_localctx).label = multipartIdentifier(); + setState(2459); + match(LEFT_PAREN); + setState(2460); + channelDescriptions(); + setState(2461); + match(RIGHT_PAREN); + setState(2462); + match(FROM); + setState(2463); + match(BINLOG); + setState(2464); + match(LEFT_PAREN); + setState(2465); + propertyItemList(); + setState(2466); + match(RIGHT_PAREN); + setState(2468); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2467); + ((CreateDataSyncJobContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 3: + _localctx = new StopDataSyncJobContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2470); + match(STOP); + setState(2471); + match(SYNC); + setState(2472); + match(JOB); + setState(2473); + ((StopDataSyncJobContext)_localctx).name = multipartIdentifier(); + } + break; + case 4: + _localctx = new ResumeDataSyncJobContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2474); + match(RESUME); + setState(2475); + match(SYNC); + setState(2476); + match(JOB); + setState(2477); + ((ResumeDataSyncJobContext)_localctx).name = multipartIdentifier(); + } + break; + case 5: + _localctx = new PauseDataSyncJobContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2478); + match(PAUSE); + setState(2479); + match(SYNC); + setState(2480); + match(JOB); + setState(2481); + ((PauseDataSyncJobContext)_localctx).name = multipartIdentifier(); + } + break; + case 6: + _localctx = new PauseRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2482); + match(PAUSE); + setState(2483); + match(ROUTINE); + setState(2484); + match(LOAD); + setState(2485); + match(FOR); + setState(2486); + ((PauseRoutineLoadContext)_localctx).label = multipartIdentifier(); + } + break; + case 7: + _localctx = new PauseAllRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2487); + match(PAUSE); + setState(2488); + match(ALL); + setState(2489); + match(ROUTINE); + setState(2490); + match(LOAD); + } + break; + case 8: + _localctx = new ResumeRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(2491); + match(RESUME); + setState(2492); + match(ROUTINE); + setState(2493); + match(LOAD); + setState(2494); + match(FOR); + setState(2495); + ((ResumeRoutineLoadContext)_localctx).label = multipartIdentifier(); + } + break; + case 9: + _localctx = new ResumeAllRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(2496); + match(RESUME); + setState(2497); + match(ALL); + setState(2498); + match(ROUTINE); + setState(2499); + match(LOAD); + } + break; + case 10: + _localctx = new StopRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(2500); + match(STOP); + setState(2501); + match(ROUTINE); + setState(2502); + match(LOAD); + setState(2503); + match(FOR); + setState(2504); + ((StopRoutineLoadContext)_localctx).label = multipartIdentifier(); + } + break; + case 11: + _localctx = new ShowRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(2505); + match(SHOW); + setState(2507); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL) { + { + setState(2506); + match(ALL); + } + } + + setState(2509); + match(ROUTINE); + setState(2510); + match(LOAD); + setState(2516); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + { + { + setState(2511); + match(FOR); + setState(2512); + ((ShowRoutineLoadContext)_localctx).label = multipartIdentifier(); + } + } + break; + case EOF: + case SEMICOLON: + case LIKE: + case WHERE: + { + setState(2514); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2513); + wildWhere(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 12: + _localctx = new ShowRoutineLoadTaskContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(2518); + match(SHOW); + setState(2519); + match(ROUTINE); + setState(2520); + match(LOAD); + setState(2521); + match(TASK); + setState(2524); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2522); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2523); + ((ShowRoutineLoadTaskContext)_localctx).database = identifier(); + } + } + + setState(2527); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2526); + wildWhere(); + } + } + + } + break; + case 13: + _localctx = new ShowCreateRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(2529); + match(SHOW); + setState(2531); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL) { + { + setState(2530); + match(ALL); + } + } + + setState(2533); + match(CREATE); + setState(2534); + match(ROUTINE); + setState(2535); + match(LOAD); + setState(2536); + match(FOR); + setState(2537); + ((ShowCreateRoutineLoadContext)_localctx).label = multipartIdentifier(); + } + break; + case 14: + _localctx = new ShowCreateLoadContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(2538); + match(SHOW); + setState(2539); + match(CREATE); + setState(2540); + match(LOAD); + setState(2541); + match(FOR); + setState(2542); + ((ShowCreateLoadContext)_localctx).label = multipartIdentifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LoadPropertyContext extends ParserRuleContext { + public LoadPropertyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_loadProperty; } + + public LoadPropertyContext() { } + public void copyFrom(LoadPropertyContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ImportPrecedingFilterContext extends LoadPropertyContext { + public ImportPrecedingFilterStatementContext importPrecedingFilterStatement() { + return getRuleContext(ImportPrecedingFilterStatementContext.class,0); + } + public ImportPrecedingFilterContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportPrecedingFilter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportPrecedingFilter(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ImportSequenceContext extends LoadPropertyContext { + public ImportSequenceStatementContext importSequenceStatement() { + return getRuleContext(ImportSequenceStatementContext.class,0); + } + public ImportSequenceContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportSequence(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportSequence(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ImportColumnsContext extends LoadPropertyContext { + public ImportColumnsStatementContext importColumnsStatement() { + return getRuleContext(ImportColumnsStatementContext.class,0); + } + public ImportColumnsContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportColumns(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportColumns(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ImportWhereContext extends LoadPropertyContext { + public ImportWhereStatementContext importWhereStatement() { + return getRuleContext(ImportWhereStatementContext.class,0); + } + public ImportWhereContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportWhere(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportWhere(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SeparatorContext extends LoadPropertyContext { + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public TerminalNode TERMINATED() { return getToken(DorisParser.TERMINATED, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public SeparatorContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSeparator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSeparator(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ImportPartitionsContext extends LoadPropertyContext { + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public ImportPartitionsContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportPartitions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportPartitions(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ImportDeleteOnContext extends LoadPropertyContext { + public ImportDeleteOnStatementContext importDeleteOnStatement() { + return getRuleContext(ImportDeleteOnStatementContext.class,0); + } + public ImportDeleteOnContext(LoadPropertyContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportDeleteOn(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportDeleteOn(this); + } + } + + public final LoadPropertyContext loadProperty() throws RecognitionException { + LoadPropertyContext _localctx = new LoadPropertyContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_loadProperty); + try { + setState(2555); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,337,_ctx) ) { + case 1: + _localctx = new SeparatorContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2545); + match(COLUMNS); + setState(2546); + match(TERMINATED); + setState(2547); + match(BY); + setState(2548); + match(STRING_LITERAL); + } + break; + case 2: + _localctx = new ImportColumnsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2549); + importColumnsStatement(); + } + break; + case 3: + _localctx = new ImportPrecedingFilterContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2550); + importPrecedingFilterStatement(); + } + break; + case 4: + _localctx = new ImportWhereContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2551); + importWhereStatement(); + } + break; + case 5: + _localctx = new ImportDeleteOnContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2552); + importDeleteOnStatement(); + } + break; + case 6: + _localctx = new ImportSequenceContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2553); + importSequenceStatement(); + } + break; + case 7: + _localctx = new ImportPartitionsContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2554); + partitionSpec(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportSequenceStatementContext extends ParserRuleContext { + public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ImportSequenceStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importSequenceStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportSequenceStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportSequenceStatement(this); + } + } + + public final ImportSequenceStatementContext importSequenceStatement() throws RecognitionException { + ImportSequenceStatementContext _localctx = new ImportSequenceStatementContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_importSequenceStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(2557); + match(ORDER); + setState(2558); + match(BY); + setState(2559); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportDeleteOnStatementContext extends ParserRuleContext { + public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public ImportDeleteOnStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importDeleteOnStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportDeleteOnStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportDeleteOnStatement(this); + } + } + + public final ImportDeleteOnStatementContext importDeleteOnStatement() throws RecognitionException { + ImportDeleteOnStatementContext _localctx = new ImportDeleteOnStatementContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_importDeleteOnStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(2561); + match(DELETE); + setState(2562); + match(ON); + setState(2563); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportWhereStatementContext extends ParserRuleContext { + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public ImportWhereStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importWhereStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportWhereStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportWhereStatement(this); + } + } + + public final ImportWhereStatementContext importWhereStatement() throws RecognitionException { + ImportWhereStatementContext _localctx = new ImportWhereStatementContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_importWhereStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(2565); + match(WHERE); + setState(2566); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportPrecedingFilterStatementContext extends ParserRuleContext { + public TerminalNode PRECEDING() { return getToken(DorisParser.PRECEDING, 0); } + public TerminalNode FILTER() { return getToken(DorisParser.FILTER, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public ImportPrecedingFilterStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importPrecedingFilterStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportPrecedingFilterStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportPrecedingFilterStatement(this); + } + } + + public final ImportPrecedingFilterStatementContext importPrecedingFilterStatement() throws RecognitionException { + ImportPrecedingFilterStatementContext _localctx = new ImportPrecedingFilterStatementContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_importPrecedingFilterStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(2568); + match(PRECEDING); + setState(2569); + match(FILTER); + setState(2570); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportColumnsStatementContext extends ParserRuleContext { + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public List importColumnDesc() { + return getRuleContexts(ImportColumnDescContext.class); + } + public ImportColumnDescContext importColumnDesc(int i) { + return getRuleContext(ImportColumnDescContext.class,i); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ImportColumnsStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importColumnsStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportColumnsStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportColumnsStatement(this); + } + } + + public final ImportColumnsStatementContext importColumnsStatement() throws RecognitionException { + ImportColumnsStatementContext _localctx = new ImportColumnsStatementContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_importColumnsStatement); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2572); + match(COLUMNS); + setState(2573); + match(LEFT_PAREN); + setState(2574); + importColumnDesc(); + setState(2579); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2575); + match(COMMA); + setState(2576); + importColumnDesc(); + } + } + setState(2581); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2582); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ImportColumnDescContext extends ParserRuleContext { + public IdentifierContext name; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ImportColumnDescContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importColumnDesc; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportColumnDesc(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportColumnDesc(this); + } + } + + public final ImportColumnDescContext importColumnDesc() throws RecognitionException { + ImportColumnDescContext _localctx = new ImportColumnDescContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_importColumnDesc); + int _la; + try { + setState(2597); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(2584); + ((ImportColumnDescContext)_localctx).name = identifier(); + setState(2587); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQ) { + { + setState(2585); + match(EQ); + setState(2586); + booleanExpression(0); + } + } + + } + break; + case LEFT_PAREN: + enterOuterAlt(_localctx, 2); + { + setState(2589); + match(LEFT_PAREN); + setState(2590); + ((ImportColumnDescContext)_localctx).name = identifier(); + setState(2593); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQ) { + { + setState(2591); + match(EQ); + setState(2592); + booleanExpression(0); + } + } + + setState(2595); + match(RIGHT_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ChannelDescriptionsContext extends ParserRuleContext { + public List channelDescription() { + return getRuleContexts(ChannelDescriptionContext.class); + } + public ChannelDescriptionContext channelDescription(int i) { + return getRuleContext(ChannelDescriptionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ChannelDescriptionsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_channelDescriptions; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterChannelDescriptions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitChannelDescriptions(this); + } + } + + public final ChannelDescriptionsContext channelDescriptions() throws RecognitionException { + ChannelDescriptionsContext _localctx = new ChannelDescriptionsContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_channelDescriptions); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2599); + channelDescription(); + setState(2604); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2600); + match(COMMA); + setState(2601); + channelDescription(); + } + } + setState(2606); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ChannelDescriptionContext extends ParserRuleContext { + public MultipartIdentifierContext source; + public MultipartIdentifierContext destination; + public IdentifierListContext columnList; + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ChannelDescriptionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_channelDescription; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterChannelDescription(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitChannelDescription(this); + } + } + + public final ChannelDescriptionContext channelDescription() throws RecognitionException { + ChannelDescriptionContext _localctx = new ChannelDescriptionContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_channelDescription); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2607); + match(FROM); + setState(2608); + ((ChannelDescriptionContext)_localctx).source = multipartIdentifier(); + setState(2609); + match(INTO); + setState(2610); + ((ChannelDescriptionContext)_localctx).destination = multipartIdentifier(); + setState(2612); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(2611); + partitionSpec(); + } + } + + setState(2615); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(2614); + ((ChannelDescriptionContext)_localctx).columnList = identifierList(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedRefreshStatementContext extends ParserRuleContext { + public SupportedRefreshStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedRefreshStatement; } + + public SupportedRefreshStatementContext() { } + public void copyFrom(SupportedRefreshStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RefreshCatalogContext extends SupportedRefreshStatementContext { + public IdentifierContext name; + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public RefreshCatalogContext(SupportedRefreshStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshCatalog(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshCatalog(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RefreshDatabaseContext extends SupportedRefreshStatementContext { + public MultipartIdentifierContext name; + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public RefreshDatabaseContext(SupportedRefreshStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshDatabase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RefreshTableContext extends SupportedRefreshStatementContext { + public MultipartIdentifierContext name; + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public RefreshTableContext(SupportedRefreshStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshTable(this); + } + } + + public final SupportedRefreshStatementContext supportedRefreshStatement() throws RecognitionException { + SupportedRefreshStatementContext _localctx = new SupportedRefreshStatementContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_supportedRefreshStatement); + int _la; + try { + setState(2632); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,347,_ctx) ) { + case 1: + _localctx = new RefreshCatalogContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2617); + match(REFRESH); + setState(2618); + match(CATALOG); + setState(2619); + ((RefreshCatalogContext)_localctx).name = identifier(); + setState(2621); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2620); + propertyClause(); + } + } + + } + break; + case 2: + _localctx = new RefreshDatabaseContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2623); + match(REFRESH); + setState(2624); + match(DATABASE); + setState(2625); + ((RefreshDatabaseContext)_localctx).name = multipartIdentifier(); + setState(2627); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2626); + propertyClause(); + } + } + + } + break; + case 3: + _localctx = new RefreshTableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2629); + match(REFRESH); + setState(2630); + match(TABLE); + setState(2631); + ((RefreshTableContext)_localctx).name = multipartIdentifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedCleanStatementContext extends ParserRuleContext { + public SupportedCleanStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedCleanStatement; } + + public SupportedCleanStatementContext() { } + public void copyFrom(SupportedCleanStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CleanLabelContext extends SupportedCleanStatementContext { + public IdentifierContext label; + public IdentifierContext database; + public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } + public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public CleanLabelContext(SupportedCleanStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanLabel(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanLabel(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CleanAllProfileContext extends SupportedCleanStatementContext { + public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } + public CleanAllProfileContext(SupportedCleanStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanAllProfile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanAllProfile(this); + } + } + + public final SupportedCleanStatementContext supportedCleanStatement() throws RecognitionException { + SupportedCleanStatementContext _localctx = new SupportedCleanStatementContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_supportedCleanStatement); + int _la; + try { + setState(2644); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,349,_ctx) ) { + case 1: + _localctx = new CleanAllProfileContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2634); + match(CLEAN); + setState(2635); + match(ALL); + setState(2636); + match(PROFILE); + } + break; + case 2: + _localctx = new CleanLabelContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2637); + match(CLEAN); + setState(2638); + match(LABEL); + setState(2640); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(2639); + ((CleanLabelContext)_localctx).label = identifier(); + } + } + + setState(2642); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2643); + ((CleanLabelContext)_localctx).database = identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedRefreshStatementContext extends ParserRuleContext { + public UnsupportedRefreshStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedRefreshStatement; } + + public UnsupportedRefreshStatementContext() { } + public void copyFrom(UnsupportedRefreshStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RefreshLdapContext extends UnsupportedRefreshStatementContext { + public IdentifierOrTextContext user; + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode LDAP() { return getToken(DorisParser.LDAP, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public RefreshLdapContext(UnsupportedRefreshStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshLdap(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshLdap(this); + } + } + + public final UnsupportedRefreshStatementContext unsupportedRefreshStatement() throws RecognitionException { + UnsupportedRefreshStatementContext _localctx = new UnsupportedRefreshStatementContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_unsupportedRefreshStatement); + try { + _localctx = new RefreshLdapContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2646); + match(REFRESH); + setState(2647); + match(LDAP); + setState(2651); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ALL: + { + setState(2648); + match(ALL); + } + break; + case FOR: + { + { + setState(2649); + match(FOR); + setState(2650); + ((RefreshLdapContext)_localctx).user = identifierOrText(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedCleanStatementContext extends ParserRuleContext { + public UnsupportedCleanStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedCleanStatement; } + + public UnsupportedCleanStatementContext() { } + public void copyFrom(UnsupportedCleanStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CleanQueryStatsContext extends UnsupportedCleanStatementContext { + public IdentifierContext database; + public MultipartIdentifierContext table; + public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } + public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public CleanQueryStatsContext(UnsupportedCleanStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanQueryStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanQueryStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CleanAllQueryStatsContext extends UnsupportedCleanStatementContext { + public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public CleanAllQueryStatsContext(UnsupportedCleanStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanAllQueryStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanAllQueryStats(this); + } + } + + public final UnsupportedCleanStatementContext unsupportedCleanStatement() throws RecognitionException { + UnsupportedCleanStatementContext _localctx = new UnsupportedCleanStatementContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_unsupportedCleanStatement); + int _la; + try { + setState(2666); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,352,_ctx) ) { + case 1: + _localctx = new CleanQueryStatsContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2653); + match(CLEAN); + setState(2654); + match(QUERY); + setState(2655); + match(STATS); + setState(2660); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + { + { + setState(2656); + match(FOR); + setState(2657); + ((CleanQueryStatsContext)_localctx).database = identifier(); + } + } + break; + case FROM: + case IN: + { + { + setState(2658); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2659); + ((CleanQueryStatsContext)_localctx).table = multipartIdentifier(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 2: + _localctx = new CleanAllQueryStatsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2662); + match(CLEAN); + setState(2663); + match(ALL); + setState(2664); + match(QUERY); + setState(2665); + match(STATS); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedCancelStatementContext extends ParserRuleContext { + public SupportedCancelStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedCancelStatement; } + + public SupportedCancelStatementContext() { } + public void copyFrom(SupportedCancelStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelWarmUpJobContext extends SupportedCancelStatementContext { + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } + public TerminalNode UP() { return getToken(DorisParser.UP, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public CancelWarmUpJobContext(SupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelWarmUpJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelWarmUpJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelExportContext extends SupportedCancelStatementContext { + public IdentifierContext database; + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode EXPORT() { return getToken(DorisParser.EXPORT, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public CancelExportContext(SupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelExport(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelExport(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelLoadContext extends SupportedCancelStatementContext { + public IdentifierContext database; + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public WildWhereContext wildWhere() { + return getRuleContext(WildWhereContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public CancelLoadContext(SupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelLoad(this); + } + } + + public final SupportedCancelStatementContext supportedCancelStatement() throws RecognitionException { + SupportedCancelStatementContext _localctx = new SupportedCancelStatementContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_supportedCancelStatement); + int _la; + try { + setState(2693); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,358,_ctx) ) { + case 1: + _localctx = new CancelLoadContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2668); + match(CANCEL); + setState(2669); + match(LOAD); + setState(2672); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2670); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2671); + ((CancelLoadContext)_localctx).database = identifier(); + } + } + + setState(2675); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2674); + wildWhere(); + } + } + + } + break; + case 2: + _localctx = new CancelExportContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2677); + match(CANCEL); + setState(2678); + match(EXPORT); + setState(2681); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2679); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2680); + ((CancelExportContext)_localctx).database = identifier(); + } + } + + setState(2684); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2683); + wildWhere(); + } + } + + } + break; + case 3: + _localctx = new CancelWarmUpJobContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2686); + match(CANCEL); + setState(2687); + match(WARM); + setState(2688); + match(UP); + setState(2689); + match(JOB); + setState(2691); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIKE || _la==WHERE) { + { + setState(2690); + wildWhere(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedCancelStatementContext extends ParserRuleContext { + public UnsupportedCancelStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedCancelStatement; } + + public UnsupportedCancelStatementContext() { } + public void copyFrom(UnsupportedCancelStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelBackupContext extends UnsupportedCancelStatementContext { + public IdentifierContext database; + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public CancelBackupContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelBackup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelBackup(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelBuildIndexContext extends UnsupportedCancelStatementContext { + public MultipartIdentifierContext tableName; + public Token INTEGER_VALUE; + public List jobIds = new ArrayList(); + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CancelBuildIndexContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelBuildIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelBuildIndex(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelRestoreContext extends UnsupportedCancelStatementContext { + public IdentifierContext database; + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public CancelRestoreContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelRestore(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelRestore(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelAlterTableContext extends UnsupportedCancelStatementContext { + public MultipartIdentifierContext tableName; + public Token INTEGER_VALUE; + public List jobIds = new ArrayList(); + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CancelAlterTableContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelAlterTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelAlterTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CancelDecommisionBackendContext extends UnsupportedCancelStatementContext { + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode DECOMMISSION() { return getToken(DorisParser.DECOMMISSION, 0); } + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CancelDecommisionBackendContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelDecommisionBackend(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelDecommisionBackend(this); + } + } + + public final UnsupportedCancelStatementContext unsupportedCancelStatement() throws RecognitionException { + UnsupportedCancelStatementContext _localctx = new UnsupportedCancelStatementContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_unsupportedCancelStatement); + int _la; + try { + setState(2758); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,367,_ctx) ) { + case 1: + _localctx = new CancelAlterTableContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2695); + match(CANCEL); + setState(2696); + match(ALTER); + setState(2697); + match(TABLE); + setState(2702); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ROLLUP: + { + setState(2698); + match(ROLLUP); + } + break; + case MATERIALIZED: + { + { + setState(2699); + match(MATERIALIZED); + setState(2700); + match(VIEW); + } + } + break; + case COLUMN: + { + setState(2701); + match(COLUMN); + } + break; + default: + throw new NoViableAltException(this); + } + setState(2704); + match(FROM); + setState(2705); + ((CancelAlterTableContext)_localctx).tableName = multipartIdentifier(); + setState(2716); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(2706); + match(LEFT_PAREN); + setState(2707); + ((CancelAlterTableContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((CancelAlterTableContext)_localctx).jobIds.add(((CancelAlterTableContext)_localctx).INTEGER_VALUE); + setState(2712); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2708); + match(COMMA); + setState(2709); + ((CancelAlterTableContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((CancelAlterTableContext)_localctx).jobIds.add(((CancelAlterTableContext)_localctx).INTEGER_VALUE); + } + } + setState(2714); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2715); + match(RIGHT_PAREN); + } + } + + } + break; + case 2: + _localctx = new CancelBuildIndexContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2718); + match(CANCEL); + setState(2719); + match(BUILD); + setState(2720); + match(INDEX); + setState(2721); + match(ON); + setState(2722); + ((CancelBuildIndexContext)_localctx).tableName = multipartIdentifier(); + setState(2733); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(2723); + match(LEFT_PAREN); + setState(2724); + ((CancelBuildIndexContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((CancelBuildIndexContext)_localctx).jobIds.add(((CancelBuildIndexContext)_localctx).INTEGER_VALUE); + setState(2729); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2725); + match(COMMA); + setState(2726); + ((CancelBuildIndexContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((CancelBuildIndexContext)_localctx).jobIds.add(((CancelBuildIndexContext)_localctx).INTEGER_VALUE); + } + } + setState(2731); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2732); + match(RIGHT_PAREN); + } + } + + } + break; + case 3: + _localctx = new CancelDecommisionBackendContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2735); + match(CANCEL); + setState(2736); + match(DECOMMISSION); + setState(2737); + match(BACKEND); + setState(2738); + ((CancelDecommisionBackendContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((CancelDecommisionBackendContext)_localctx).hostPorts.add(((CancelDecommisionBackendContext)_localctx).STRING_LITERAL); + setState(2743); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2739); + match(COMMA); + setState(2740); + ((CancelDecommisionBackendContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((CancelDecommisionBackendContext)_localctx).hostPorts.add(((CancelDecommisionBackendContext)_localctx).STRING_LITERAL); + } + } + setState(2745); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 4: + _localctx = new CancelBackupContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2746); + match(CANCEL); + setState(2747); + match(BACKUP); + setState(2750); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2748); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2749); + ((CancelBackupContext)_localctx).database = identifier(); + } + } + + } + break; + case 5: + _localctx = new CancelRestoreContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2752); + match(CANCEL); + setState(2753); + match(RESTORE); + setState(2756); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==IN) { + { + setState(2754); + _la = _input.LA(1); + if ( !(_la==FROM || _la==IN) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(2755); + ((CancelRestoreContext)_localctx).database = identifier(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedAdminStatementContext extends ParserRuleContext { + public SupportedAdminStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedAdminStatement; } + + public SupportedAdminStatementContext() { } + public void copyFrom(SupportedAdminStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminShowReplicaDistributionContext extends SupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public TerminalNode DISTRIBUTION() { return getToken(DorisParser.DISTRIBUTION, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public AdminShowReplicaDistributionContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminShowReplicaDistribution(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminShowReplicaDistribution(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminShowTabletStorageFormatContext extends SupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } + public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } + public AdminShowTabletStorageFormatContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminShowTabletStorageFormat(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminShowTabletStorageFormat(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminCheckTabletsContext extends SupportedAdminStatementContext { + public PropertyClauseContext properties; + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode CHECK() { return getToken(DorisParser.CHECK, 0); } + public TabletListContext tabletList() { + return getRuleContext(TabletListContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AdminCheckTabletsContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCheckTablets(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCheckTablets(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminRebalanceDiskContext extends SupportedAdminStatementContext { + public Token STRING_LITERAL; + public List backends = new ArrayList(); + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode REBALANCE() { return getToken(DorisParser.REBALANCE, 0); } + public TerminalNode DISK() { return getToken(DorisParser.DISK, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AdminRebalanceDiskContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminRebalanceDisk(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminRebalanceDisk(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminSetTableStatusContext extends SupportedAdminStatementContext { + public MultipartIdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AdminSetTableStatusContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetTableStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetTableStatus(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminCleanTrashContext extends SupportedAdminStatementContext { + public Token STRING_LITERAL; + public List backends = new ArrayList(); + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } + public TerminalNode TRASH() { return getToken(DorisParser.TRASH, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AdminCleanTrashContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCleanTrash(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCleanTrash(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminCompactTableContext extends SupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode COMPACT() { return getToken(DorisParser.COMPACT, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public TerminalNode TYPE() { return getToken(DorisParser.TYPE, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AdminCompactTableContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCompactTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCompactTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminDiagnoseTabletContext extends SupportedAdminStatementContext { + public Token tabletId; + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode DIAGNOSE() { return getToken(DorisParser.DIAGNOSE, 0); } + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public AdminDiagnoseTabletContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminDiagnoseTablet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminDiagnoseTablet(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminCancelRebalanceDiskContext extends SupportedAdminStatementContext { + public Token STRING_LITERAL; + public List backends = new ArrayList(); + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode REBALANCE() { return getToken(DorisParser.REBALANCE, 0); } + public TerminalNode DISK() { return getToken(DorisParser.DISK, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AdminCancelRebalanceDiskContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCancelRebalanceDisk(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCancelRebalanceDisk(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminShowReplicaStatusContext extends SupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public List STATUS() { return getTokens(DorisParser.STATUS); } + public TerminalNode STATUS(int i) { + return getToken(DorisParser.STATUS, i); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode NEQ() { return getToken(DorisParser.NEQ, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AdminShowReplicaStatusContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminShowReplicaStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminShowReplicaStatus(this); + } + } + + public final SupportedAdminStatementContext supportedAdminStatement() throws RecognitionException { + SupportedAdminStatementContext _localctx = new SupportedAdminStatementContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_supportedAdminStatement); + int _la; + try { + setState(2864); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) { + case 1: + _localctx = new AdminShowReplicaDistributionContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2760); + match(ADMIN); + setState(2761); + match(SHOW); + setState(2762); + match(REPLICA); + setState(2763); + match(DISTRIBUTION); + setState(2764); + match(FROM); + setState(2765); + baseTableRef(); + } + break; + case 2: + _localctx = new AdminRebalanceDiskContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2766); + match(ADMIN); + setState(2767); + match(REBALANCE); + setState(2768); + match(DISK); + setState(2780); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(2769); + match(ON); + setState(2770); + match(LEFT_PAREN); + setState(2771); + ((AdminRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AdminRebalanceDiskContext)_localctx).backends.add(((AdminRebalanceDiskContext)_localctx).STRING_LITERAL); + setState(2776); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2772); + match(COMMA); + setState(2773); + ((AdminRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AdminRebalanceDiskContext)_localctx).backends.add(((AdminRebalanceDiskContext)_localctx).STRING_LITERAL); + } + } + setState(2778); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2779); + match(RIGHT_PAREN); + } + } + + } + break; + case 3: + _localctx = new AdminCancelRebalanceDiskContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2782); + match(ADMIN); + setState(2783); + match(CANCEL); + setState(2784); + match(REBALANCE); + setState(2785); + match(DISK); + setState(2797); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(2786); + match(ON); + setState(2787); + match(LEFT_PAREN); + setState(2788); + ((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AdminCancelRebalanceDiskContext)_localctx).backends.add(((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL); + setState(2793); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2789); + match(COMMA); + setState(2790); + ((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AdminCancelRebalanceDiskContext)_localctx).backends.add(((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL); + } + } + setState(2795); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2796); + match(RIGHT_PAREN); + } + } + + } + break; + case 4: + _localctx = new AdminDiagnoseTabletContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2799); + match(ADMIN); + setState(2800); + match(DIAGNOSE); + setState(2801); + match(TABLET); + setState(2802); + ((AdminDiagnoseTabletContext)_localctx).tabletId = match(INTEGER_VALUE); + } + break; + case 5: + _localctx = new AdminShowReplicaStatusContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2803); + match(ADMIN); + setState(2804); + match(SHOW); + setState(2805); + match(REPLICA); + setState(2806); + match(STATUS); + setState(2807); + match(FROM); + setState(2808); + baseTableRef(); + setState(2814); + _errHandler.sync(this); + switch (_input.LA(1)) { + case WHERE: + { + setState(2809); + match(WHERE); + setState(2810); + match(STATUS); + setState(2811); + match(EQ); + } + break; + case NEQ: + { + setState(2812); + match(NEQ); + setState(2813); + match(STRING_LITERAL); + } + break; + case EOF: + case SEMICOLON: + break; + default: + break; + } + } + break; + case 6: + _localctx = new AdminCompactTableContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2816); + match(ADMIN); + setState(2817); + match(COMPACT); + setState(2818); + match(TABLE); + setState(2819); + baseTableRef(); + setState(2824); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(2820); + match(WHERE); + setState(2821); + match(TYPE); + setState(2822); + match(EQ); + setState(2823); + match(STRING_LITERAL); + } + } + + } + break; + case 7: + _localctx = new AdminCheckTabletsContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2826); + match(ADMIN); + setState(2827); + match(CHECK); + setState(2828); + tabletList(); + setState(2830); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2829); + ((AdminCheckTabletsContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 8: + _localctx = new AdminShowTabletStorageFormatContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(2832); + match(ADMIN); + setState(2833); + match(SHOW); + setState(2834); + match(TABLET); + setState(2835); + match(STORAGE); + setState(2836); + match(FORMAT); + setState(2838); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==VERBOSE) { + { + setState(2837); + match(VERBOSE); + } + } + + } + break; + case 9: + _localctx = new AdminCleanTrashContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(2840); + match(ADMIN); + setState(2841); + match(CLEAN); + setState(2842); + match(TRASH); + setState(2854); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(2843); + match(ON); + setState(2844); + match(LEFT_PAREN); + setState(2845); + ((AdminCleanTrashContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AdminCleanTrashContext)_localctx).backends.add(((AdminCleanTrashContext)_localctx).STRING_LITERAL); + setState(2850); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(2846); + match(COMMA); + setState(2847); + ((AdminCleanTrashContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AdminCleanTrashContext)_localctx).backends.add(((AdminCleanTrashContext)_localctx).STRING_LITERAL); + } + } + setState(2852); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(2853); + match(RIGHT_PAREN); + } + } + + } + break; + case 10: + _localctx = new AdminSetTableStatusContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(2856); + match(ADMIN); + setState(2857); + match(SET); + setState(2858); + match(TABLE); + setState(2859); + ((AdminSetTableStatusContext)_localctx).name = multipartIdentifier(); + setState(2860); + match(STATUS); + setState(2862); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2861); + ((AdminSetTableStatusContext)_localctx).properties = propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedRecoverStatementContext extends ParserRuleContext { + public SupportedRecoverStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedRecoverStatement; } + + public SupportedRecoverStatementContext() { } + public void copyFrom(SupportedRecoverStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RecoverPartitionContext extends SupportedRecoverStatementContext { + public IdentifierContext name; + public Token id; + public IdentifierContext alias; + public MultipartIdentifierContext tableName; + public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public RecoverPartitionContext(SupportedRecoverStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRecoverPartition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRecoverPartition(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RecoverTableContext extends SupportedRecoverStatementContext { + public MultipartIdentifierContext name; + public Token id; + public IdentifierContext alias; + public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public RecoverTableContext(SupportedRecoverStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRecoverTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRecoverTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RecoverDatabaseContext extends SupportedRecoverStatementContext { + public IdentifierContext name; + public Token id; + public IdentifierContext alias; + public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public RecoverDatabaseContext(SupportedRecoverStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRecoverDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRecoverDatabase(this); + } + } + + public final SupportedRecoverStatementContext supportedRecoverStatement() throws RecognitionException { + SupportedRecoverStatementContext _localctx = new SupportedRecoverStatementContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_supportedRecoverStatement); + int _la; + try { + setState(2899); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,386,_ctx) ) { + case 1: + _localctx = new RecoverDatabaseContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2866); + match(RECOVER); + setState(2867); + match(DATABASE); + setState(2868); + ((RecoverDatabaseContext)_localctx).name = identifier(); + setState(2870); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTEGER_VALUE) { + { + setState(2869); + ((RecoverDatabaseContext)_localctx).id = match(INTEGER_VALUE); + } + } + + setState(2874); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(2872); + match(AS); + setState(2873); + ((RecoverDatabaseContext)_localctx).alias = identifier(); + } + } + + } + break; + case 2: + _localctx = new RecoverTableContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2876); + match(RECOVER); + setState(2877); + match(TABLE); + setState(2878); + ((RecoverTableContext)_localctx).name = multipartIdentifier(); + setState(2880); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTEGER_VALUE) { + { + setState(2879); + ((RecoverTableContext)_localctx).id = match(INTEGER_VALUE); + } + } + + setState(2884); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(2882); + match(AS); + setState(2883); + ((RecoverTableContext)_localctx).alias = identifier(); + } + } + + } + break; + case 3: + _localctx = new RecoverPartitionContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2886); + match(RECOVER); + setState(2887); + match(PARTITION); + setState(2888); + ((RecoverPartitionContext)_localctx).name = identifier(); + setState(2890); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTEGER_VALUE) { + { + setState(2889); + ((RecoverPartitionContext)_localctx).id = match(INTEGER_VALUE); + } + } + + setState(2894); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(2892); + match(AS); + setState(2893); + ((RecoverPartitionContext)_localctx).alias = identifier(); + } + } + + setState(2896); + match(FROM); + setState(2897); + ((RecoverPartitionContext)_localctx).tableName = multipartIdentifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedAdminStatementContext extends ParserRuleContext { + public UnsupportedAdminStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedAdminStatement; } + + public UnsupportedAdminStatementContext() { } + public void copyFrom(UnsupportedAdminStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminSetFrontendConfigContext extends UnsupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode CONFIG() { return getToken(DorisParser.CONFIG, 0); } + public TerminalNode FRONTEND() { return getToken(DorisParser.FRONTEND, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List ALL() { return getTokens(DorisParser.ALL); } + public TerminalNode ALL(int i) { + return getToken(DorisParser.ALL, i); + } + public TerminalNode FRONTENDS() { return getToken(DorisParser.FRONTENDS, 0); } + public AdminSetFrontendConfigContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetFrontendConfig(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetFrontendConfig(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminSetReplicaStatusContext extends UnsupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public AdminSetReplicaStatusContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetReplicaStatus(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetReplicaStatus(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminSetReplicaVersionContext extends UnsupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } + public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public AdminSetReplicaVersionContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetReplicaVersion(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetReplicaVersion(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminSetPartitionVersionContext extends UnsupportedAdminStatementContext { + public MultipartIdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AdminSetPartitionVersionContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetPartitionVersion(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetPartitionVersion(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminCancelRepairTableContext extends UnsupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } + public TerminalNode REPAIR() { return getToken(DorisParser.REPAIR, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public AdminCancelRepairTableContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCancelRepairTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCancelRepairTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminCopyTabletContext extends UnsupportedAdminStatementContext { + public Token tabletId; + public PropertyClauseContext properties; + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AdminCopyTabletContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCopyTablet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCopyTablet(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AdminRepairTableContext extends UnsupportedAdminStatementContext { + public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } + public TerminalNode REPAIR() { return getToken(DorisParser.REPAIR, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public BaseTableRefContext baseTableRef() { + return getRuleContext(BaseTableRefContext.class,0); + } + public AdminRepairTableContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminRepairTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminRepairTable(this); + } + } + + public final UnsupportedAdminStatementContext unsupportedAdminStatement() throws RecognitionException { + UnsupportedAdminStatementContext _localctx = new UnsupportedAdminStatementContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_unsupportedAdminStatement); + int _la; + try { + setState(2961); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,392,_ctx) ) { + case 1: + _localctx = new AdminSetReplicaStatusContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2901); + match(ADMIN); + setState(2902); + match(SET); + setState(2903); + match(REPLICA); + setState(2904); + match(STATUS); + setState(2905); + match(PROPERTIES); + setState(2906); + match(LEFT_PAREN); + setState(2907); + propertyItemList(); + setState(2908); + match(RIGHT_PAREN); + } + break; + case 2: + _localctx = new AdminSetReplicaVersionContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2910); + match(ADMIN); + setState(2911); + match(SET); + setState(2912); + match(REPLICA); + setState(2913); + match(VERSION); + setState(2914); + match(PROPERTIES); + setState(2915); + match(LEFT_PAREN); + setState(2916); + propertyItemList(); + setState(2917); + match(RIGHT_PAREN); + } + break; + case 3: + _localctx = new AdminRepairTableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(2919); + match(ADMIN); + setState(2920); + match(REPAIR); + setState(2921); + match(TABLE); + setState(2922); + baseTableRef(); + } + break; + case 4: + _localctx = new AdminCancelRepairTableContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(2923); + match(ADMIN); + setState(2924); + match(CANCEL); + setState(2925); + match(REPAIR); + setState(2926); + match(TABLE); + setState(2927); + baseTableRef(); + } + break; + case 5: + _localctx = new AdminSetFrontendConfigContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(2928); + match(ADMIN); + setState(2929); + match(SET); + setState(2933); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FRONTEND: + { + setState(2930); + match(FRONTEND); + } + break; + case ALL: + { + { + setState(2931); + match(ALL); + setState(2932); + match(FRONTENDS); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(2935); + match(CONFIG); + setState(2940); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(2936); + match(LEFT_PAREN); + setState(2937); + propertyItemList(); + setState(2938); + match(RIGHT_PAREN); + } + } + + setState(2943); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL) { + { + setState(2942); + match(ALL); + } + } + + } + break; + case 6: + _localctx = new AdminSetPartitionVersionContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(2945); + match(ADMIN); + setState(2946); + match(SET); + setState(2947); + match(TABLE); + setState(2948); + ((AdminSetPartitionVersionContext)_localctx).name = multipartIdentifier(); + setState(2949); + match(PARTITION); + setState(2950); + match(VERSION); + setState(2952); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2951); + ((AdminSetPartitionVersionContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 7: + _localctx = new AdminCopyTabletContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(2954); + match(ADMIN); + setState(2955); + match(COPY); + setState(2956); + match(TABLET); + setState(2957); + ((AdminCopyTabletContext)_localctx).tabletId = match(INTEGER_VALUE); + setState(2959); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(2958); + ((AdminCopyTabletContext)_localctx).properties = propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BaseTableRefContext extends ParserRuleContext { + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public OptScanParamsContext optScanParams() { + return getRuleContext(OptScanParamsContext.class,0); + } + public TableSnapshotContext tableSnapshot() { + return getRuleContext(TableSnapshotContext.class,0); + } + public SpecifiedPartitionContext specifiedPartition() { + return getRuleContext(SpecifiedPartitionContext.class,0); + } + public TabletListContext tabletList() { + return getRuleContext(TabletListContext.class,0); + } + public SampleContext sample() { + return getRuleContext(SampleContext.class,0); + } + public RelationHintContext relationHint() { + return getRuleContext(RelationHintContext.class,0); + } + public BaseTableRefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_baseTableRef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBaseTableRef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBaseTableRef(this); + } + } + + public final BaseTableRefContext baseTableRef() throws RecognitionException { + BaseTableRefContext _localctx = new BaseTableRefContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_baseTableRef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(2963); + multipartIdentifier(); + setState(2965); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ATSIGN) { + { + setState(2964); + optScanParams(); + } + } + + setState(2968); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(2967); + tableSnapshot(); + } + } + + setState(2971); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,395,_ctx) ) { + case 1: + { + setState(2970); + specifiedPartition(); + } + break; + } + setState(2974); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TABLET) { + { + setState(2973); + tabletList(); + } + } + + setState(2976); + tableAlias(); + setState(2978); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TABLESAMPLE) { + { + setState(2977); + sample(); + } + } + + setState(2981); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_BRACKET || _la==HINT_START) { + { + setState(2980); + relationHint(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WildWhereContext extends ParserRuleContext { + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public WildWhereContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_wildWhere; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWildWhere(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWildWhere(this); + } + } + + public final WildWhereContext wildWhere() throws RecognitionException { + WildWhereContext _localctx = new WildWhereContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_wildWhere); + try { + setState(2987); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LIKE: + enterOuterAlt(_localctx, 1); + { + setState(2983); + match(LIKE); + setState(2984); + match(STRING_LITERAL); + } + break; + case WHERE: + enterOuterAlt(_localctx, 2); + { + setState(2985); + match(WHERE); + setState(2986); + expression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedTransactionStatementContext extends ParserRuleContext { + public UnsupportedTransactionStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedTransactionStatement; } + + public UnsupportedTransactionStatementContext() { } + public void copyFrom(UnsupportedTransactionStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TranscationCommitContext extends UnsupportedTransactionStatementContext { + public TerminalNode COMMIT() { return getToken(DorisParser.COMMIT, 0); } + public TerminalNode WORK() { return getToken(DorisParser.WORK, 0); } + public TerminalNode AND() { return getToken(DorisParser.AND, 0); } + public TerminalNode CHAIN() { return getToken(DorisParser.CHAIN, 0); } + public TerminalNode RELEASE() { return getToken(DorisParser.RELEASE, 0); } + public List NO() { return getTokens(DorisParser.NO); } + public TerminalNode NO(int i) { + return getToken(DorisParser.NO, i); + } + public TranscationCommitContext(UnsupportedTransactionStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTranscationCommit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTranscationCommit(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TransactionRollbackContext extends UnsupportedTransactionStatementContext { + public TerminalNode ROLLBACK() { return getToken(DorisParser.ROLLBACK, 0); } + public TerminalNode WORK() { return getToken(DorisParser.WORK, 0); } + public TerminalNode AND() { return getToken(DorisParser.AND, 0); } + public TerminalNode CHAIN() { return getToken(DorisParser.CHAIN, 0); } + public TerminalNode RELEASE() { return getToken(DorisParser.RELEASE, 0); } + public List NO() { return getTokens(DorisParser.NO); } + public TerminalNode NO(int i) { + return getToken(DorisParser.NO, i); + } + public TransactionRollbackContext(UnsupportedTransactionStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTransactionRollback(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTransactionRollback(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TransactionBeginContext extends UnsupportedTransactionStatementContext { + public TerminalNode BEGIN() { return getToken(DorisParser.BEGIN, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TransactionBeginContext(UnsupportedTransactionStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTransactionBegin(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTransactionBegin(this); + } + } + + public final UnsupportedTransactionStatementContext unsupportedTransactionStatement() throws RecognitionException { + UnsupportedTransactionStatementContext _localctx = new UnsupportedTransactionStatementContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_unsupportedTransactionStatement); + int _la; + try { + setState(3031); + _errHandler.sync(this); + switch (_input.LA(1)) { + case BEGIN: + _localctx = new TransactionBeginContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(2989); + match(BEGIN); + setState(2995); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(2990); + match(WITH); + setState(2991); + match(LABEL); + setState(2993); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(2992); + identifier(); + } + } + + } + } + + } + break; + case COMMIT: + _localctx = new TranscationCommitContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(2997); + match(COMMIT); + setState(2999); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WORK) { + { + setState(2998); + match(WORK); + } + } + + setState(3006); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AND) { + { + setState(3001); + match(AND); + setState(3003); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO) { + { + setState(3002); + match(NO); + } + } + + setState(3005); + match(CHAIN); + } + } + + setState(3012); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO || _la==RELEASE) { + { + setState(3009); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO) { + { + setState(3008); + match(NO); + } + } + + setState(3011); + match(RELEASE); + } + } + + } + break; + case ROLLBACK: + _localctx = new TransactionRollbackContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3014); + match(ROLLBACK); + setState(3016); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WORK) { + { + setState(3015); + match(WORK); + } + } + + setState(3023); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AND) { + { + setState(3018); + match(AND); + setState(3020); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO) { + { + setState(3019); + match(NO); + } + } + + setState(3022); + match(CHAIN); + } + } + + setState(3029); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO || _la==RELEASE) { + { + setState(3026); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NO) { + { + setState(3025); + match(NO); + } + } + + setState(3028); + match(RELEASE); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedGrantRevokeStatementContext extends ParserRuleContext { + public UnsupportedGrantRevokeStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedGrantRevokeStatement; } + + public UnsupportedGrantRevokeStatementContext() { } + public void copyFrom(UnsupportedGrantRevokeStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class GrantResourcePrivilegeContext extends UnsupportedGrantRevokeStatementContext { + public TerminalNode GRANT() { return getToken(DorisParser.GRANT, 0); } + public PrivilegeListContext privilegeList() { + return getRuleContext(PrivilegeListContext.class,0); + } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public IdentifierOrTextOrAsteriskContext identifierOrTextOrAsterisk() { + return getRuleContext(IdentifierOrTextOrAsteriskContext.class,0); + } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public TerminalNode CLUSTER() { return getToken(DorisParser.CLUSTER, 0); } + public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode REVOKE() { return getToken(DorisParser.REVOKE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public GrantResourcePrivilegeContext(UnsupportedGrantRevokeStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantResourcePrivilege(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantResourcePrivilege(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class GrantTablePrivilegeContext extends UnsupportedGrantRevokeStatementContext { + public TerminalNode GRANT() { return getToken(DorisParser.GRANT, 0); } + public PrivilegeListContext privilegeList() { + return getRuleContext(PrivilegeListContext.class,0); + } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public MultipartIdentifierOrAsteriskContext multipartIdentifierOrAsterisk() { + return getRuleContext(MultipartIdentifierOrAsteriskContext.class,0); + } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode REVOKE() { return getToken(DorisParser.REVOKE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public GrantTablePrivilegeContext(UnsupportedGrantRevokeStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantTablePrivilege(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantTablePrivilege(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class GrantRoleContext extends UnsupportedGrantRevokeStatementContext { + public Token STRING_LITERAL; + public List roles = new ArrayList(); + public TerminalNode GRANT() { return getToken(DorisParser.GRANT, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TerminalNode REVOKE() { return getToken(DorisParser.REVOKE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public GrantRoleContext(UnsupportedGrantRevokeStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantRole(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantRole(this); + } + } + + public final UnsupportedGrantRevokeStatementContext unsupportedGrantRevokeStatement() throws RecognitionException { + UnsupportedGrantRevokeStatementContext _localctx = new UnsupportedGrantRevokeStatementContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_unsupportedGrantRevokeStatement); + int _la; + try { + setState(3117); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,421,_ctx) ) { + case 1: + _localctx = new GrantTablePrivilegeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3033); + match(GRANT); + setState(3034); + privilegeList(); + setState(3035); + match(ON); + setState(3036); + multipartIdentifierOrAsterisk(); + setState(3037); + match(TO); + setState(3041); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(3038); + userIdentify(); + } + break; + case ROLE: + { + setState(3039); + match(ROLE); + setState(3040); + match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 2: + _localctx = new GrantResourcePrivilegeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3043); + match(GRANT); + setState(3044); + privilegeList(); + setState(3045); + match(ON); + setState(3055); + _errHandler.sync(this); + switch (_input.LA(1)) { + case RESOURCE: + { + setState(3046); + match(RESOURCE); + } + break; + case CLUSTER: + { + setState(3047); + match(CLUSTER); + } + break; + case COMPUTE: + { + setState(3048); + match(COMPUTE); + setState(3049); + match(GROUP); + } + break; + case STAGE: + { + setState(3050); + match(STAGE); + } + break; + case STORAGE: + { + setState(3051); + match(STORAGE); + setState(3052); + match(VAULT); + } + break; + case WORKLOAD: + { + setState(3053); + match(WORKLOAD); + setState(3054); + match(GROUP); + } + break; + default: + throw new NoViableAltException(this); + } + setState(3057); + identifierOrTextOrAsterisk(); + setState(3058); + match(TO); + setState(3062); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(3059); + userIdentify(); + } + break; + case ROLE: + { + setState(3060); + match(ROLE); + setState(3061); + match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 3: + _localctx = new GrantRoleContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3064); + match(GRANT); + setState(3065); + ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); + setState(3070); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3066); + match(COMMA); + setState(3067); + ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); + } + } + setState(3072); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(3073); + match(TO); + setState(3074); + userIdentify(); + } + break; + case 4: + _localctx = new GrantTablePrivilegeContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3075); + match(REVOKE); + setState(3076); + privilegeList(); + setState(3077); + match(ON); + setState(3078); + multipartIdentifierOrAsterisk(); + setState(3079); + match(FROM); + setState(3083); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(3080); + userIdentify(); + } + break; + case ROLE: + { + setState(3081); + match(ROLE); + setState(3082); + match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 5: + _localctx = new GrantResourcePrivilegeContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3085); + match(REVOKE); + setState(3086); + privilegeList(); + setState(3087); + match(ON); + setState(3097); + _errHandler.sync(this); + switch (_input.LA(1)) { + case RESOURCE: + { + setState(3088); + match(RESOURCE); + } + break; + case CLUSTER: + { + setState(3089); + match(CLUSTER); + } + break; + case COMPUTE: + { + setState(3090); + match(COMPUTE); + setState(3091); + match(GROUP); + } + break; + case STAGE: + { + setState(3092); + match(STAGE); + } + break; + case STORAGE: + { + setState(3093); + match(STORAGE); + setState(3094); + match(VAULT); + } + break; + case WORKLOAD: + { + setState(3095); + match(WORKLOAD); + setState(3096); + match(GROUP); + } + break; + default: + throw new NoViableAltException(this); + } + setState(3099); + identifierOrTextOrAsterisk(); + setState(3100); + match(FROM); + setState(3104); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(3101); + userIdentify(); + } + break; + case ROLE: + { + setState(3102); + match(ROLE); + setState(3103); + match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 6: + _localctx = new GrantRoleContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(3106); + match(REVOKE); + setState(3107); + ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); + setState(3112); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3108); + match(COMMA); + setState(3109); + ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); + } + } + setState(3114); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(3115); + match(FROM); + setState(3116); + userIdentify(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrivilegeContext extends ParserRuleContext { + public IdentifierContext name; + public IdentifierListContext columns; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public PrivilegeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_privilege; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrivilege(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrivilege(this); + } + } + + public final PrivilegeContext privilege() throws RecognitionException { + PrivilegeContext _localctx = new PrivilegeContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_privilege); + int _la; + try { + setState(3124); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(3119); + ((PrivilegeContext)_localctx).name = identifier(); + setState(3121); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(3120); + ((PrivilegeContext)_localctx).columns = identifierList(); + } + } + + } + break; + case ALL: + enterOuterAlt(_localctx, 2); + { + setState(3123); + match(ALL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrivilegeListContext extends ParserRuleContext { + public List privilege() { + return getRuleContexts(PrivilegeContext.class); + } + public PrivilegeContext privilege(int i) { + return getRuleContext(PrivilegeContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PrivilegeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_privilegeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrivilegeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrivilegeList(this); + } + } + + public final PrivilegeListContext privilegeList() throws RecognitionException { + PrivilegeListContext _localctx = new PrivilegeListContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_privilegeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3126); + privilege(); + setState(3131); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3127); + match(COMMA); + setState(3128); + privilege(); + } + } + setState(3133); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedAlterStatementContext extends ParserRuleContext { + public UnsupportedAlterStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedAlterStatement; } + + public UnsupportedAlterStatementContext() { } + public void copyFrom(UnsupportedAlterStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterStoragePlicyContext extends UnsupportedAlterStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterStoragePlicyContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterStoragePlicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterStoragePlicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterResourceContext extends UnsupportedAlterStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterResourceContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterResource(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterRoutineLoadContext extends UnsupportedAlterStatementContext { + public MultipartIdentifierContext name; + public PropertyClauseContext properties; + public IdentifierContext type; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AlterRoutineLoadContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterRoutineLoad(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterRoutineLoad(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterUserContext extends UnsupportedAlterStatementContext { + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode USER() { return getToken(DorisParser.USER, 0); } + public GrantUserIdentifyContext grantUserIdentify() { + return getRuleContext(GrantUserIdentifyContext.class,0); + } + public PasswordOptionContext passwordOption() { + return getRuleContext(PasswordOptionContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AlterUserContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterUser(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterDatabasePropertiesContext extends UnsupportedAlterStatementContext { + public IdentifierContext name; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public AlterDatabasePropertiesContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterDatabaseProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterDatabaseProperties(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterColocateGroupContext extends UnsupportedAlterStatementContext { + public MultipartIdentifierContext name; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode COLOCATE() { return getToken(DorisParser.COLOCATE, 0); } + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public AlterColocateGroupContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterColocateGroup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterColocateGroup(this); + } + } + + public final UnsupportedAlterStatementContext unsupportedAlterStatement() throws RecognitionException { + UnsupportedAlterStatementContext _localctx = new UnsupportedAlterStatementContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_unsupportedAlterStatement); + int _la; + try { + setState(3192); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,430,_ctx) ) { + case 1: + _localctx = new AlterDatabasePropertiesContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3134); + match(ALTER); + setState(3135); + match(DATABASE); + setState(3136); + ((AlterDatabasePropertiesContext)_localctx).name = identifier(); + setState(3137); + match(SET); + setState(3138); + match(PROPERTIES); + setState(3139); + match(LEFT_PAREN); + setState(3140); + propertyItemList(); + setState(3141); + match(RIGHT_PAREN); + } + break; + case 2: + _localctx = new AlterResourceContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3143); + match(ALTER); + setState(3144); + match(RESOURCE); + setState(3145); + ((AlterResourceContext)_localctx).name = identifierOrText(); + setState(3147); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3146); + ((AlterResourceContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 3: + _localctx = new AlterColocateGroupContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3149); + match(ALTER); + setState(3150); + match(COLOCATE); + setState(3151); + match(GROUP); + setState(3152); + ((AlterColocateGroupContext)_localctx).name = multipartIdentifier(); + setState(3153); + match(SET); + setState(3154); + match(LEFT_PAREN); + setState(3155); + propertyItemList(); + setState(3156); + match(RIGHT_PAREN); + } + break; + case 4: + _localctx = new AlterRoutineLoadContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3158); + match(ALTER); + setState(3159); + match(ROUTINE); + setState(3160); + match(LOAD); + setState(3161); + match(FOR); + setState(3162); + ((AlterRoutineLoadContext)_localctx).name = multipartIdentifier(); + setState(3164); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3163); + ((AlterRoutineLoadContext)_localctx).properties = propertyClause(); + } + } + + setState(3172); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(3166); + match(FROM); + setState(3167); + ((AlterRoutineLoadContext)_localctx).type = identifier(); + setState(3168); + match(LEFT_PAREN); + setState(3169); + propertyItemList(); + setState(3170); + match(RIGHT_PAREN); + } + } + + } + break; + case 5: + _localctx = new AlterStoragePlicyContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3174); + match(ALTER); + setState(3175); + match(STORAGE); + setState(3176); + match(POLICY); + setState(3177); + ((AlterStoragePlicyContext)_localctx).name = identifierOrText(); + setState(3178); + ((AlterStoragePlicyContext)_localctx).properties = propertyClause(); + } + break; + case 6: + _localctx = new AlterUserContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(3180); + match(ALTER); + setState(3181); + match(USER); + setState(3184); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3182); + match(IF); + setState(3183); + match(EXISTS); + } + } + + setState(3186); + grantUserIdentify(); + setState(3187); + passwordOption(); + setState(3190); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(3188); + match(COMMENT); + setState(3189); + match(STRING_LITERAL); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AlterSystemClauseContext extends ParserRuleContext { + public AlterSystemClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alterSystemClause; } + + public AlterSystemClauseContext() { } + public void copyFrom(AlterSystemClauseContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropBrokerClauseContext extends AlterSystemClauseContext { + public IdentifierOrTextContext name; + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public DropBrokerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropBrokerClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropBrokerClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyFrontendOrBackendHostNameClauseContext extends AlterSystemClauseContext { + public Token hostPort; + public Token hostName; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode HOSTNAME() { return getToken(DorisParser.HOSTNAME, 0); } + public TerminalNode FRONTEND() { return getToken(DorisParser.FRONTEND, 0); } + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public ModifyFrontendOrBackendHostNameClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyFrontendOrBackendHostNameClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyFrontendOrBackendHostNameClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropObserverClauseContext extends AlterSystemClauseContext { + public Token hostPort; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode OBSERVER() { return getToken(DorisParser.OBSERVER, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public DropObserverClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropObserverClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropObserverClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddFollowerClauseContext extends AlterSystemClauseContext { + public Token hostPort; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode FOLLOWER() { return getToken(DorisParser.FOLLOWER, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AddFollowerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddFollowerClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddFollowerClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropFollowerClauseContext extends AlterSystemClauseContext { + public Token hostPort; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode FOLLOWER() { return getToken(DorisParser.FOLLOWER, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public DropFollowerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropFollowerClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropFollowerClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropAllBrokerClauseContext extends AlterSystemClauseContext { + public IdentifierOrTextContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public DropAllBrokerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropAllBrokerClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropAllBrokerClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropBackendClauseContext extends AlterSystemClauseContext { + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode DROPP() { return getToken(DorisParser.DROPP, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public DropBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropBackendClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropBackendClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterLoadErrorUrlClauseContext extends AlterSystemClauseContext { + public PropertyClauseContext properties; + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } + public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } + public TerminalNode HUB() { return getToken(DorisParser.HUB, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterLoadErrorUrlClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterLoadErrorUrlClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterLoadErrorUrlClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyBackendClauseContext extends AlterSystemClauseContext { + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ModifyBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyBackendClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyBackendClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddBrokerClauseContext extends AlterSystemClauseContext { + public IdentifierOrTextContext name; + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AddBrokerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddBrokerClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddBrokerClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddObserverClauseContext extends AlterSystemClauseContext { + public Token hostPort; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode OBSERVER() { return getToken(DorisParser.OBSERVER, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AddObserverClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddObserverClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddObserverClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DecommissionBackendClauseContext extends AlterSystemClauseContext { + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public TerminalNode DECOMMISSION() { return getToken(DorisParser.DECOMMISSION, 0); } + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public DecommissionBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDecommissionBackendClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDecommissionBackendClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddBackendClauseContext extends AlterSystemClauseContext { + public Token STRING_LITERAL; + public List hostPorts = new ArrayList(); + public PropertyClauseContext properties; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AddBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddBackendClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddBackendClause(this); + } + } + + public final AlterSystemClauseContext alterSystemClause() throws RecognitionException { + AlterSystemClauseContext _localctx = new AlterSystemClauseContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_alterSystemClause); + int _la; + try { + setState(3292); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,439,_ctx) ) { + case 1: + _localctx = new AddBackendClauseContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3194); + match(ADD); + setState(3195); + match(BACKEND); + setState(3196); + ((AddBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AddBackendClauseContext)_localctx).hostPorts.add(((AddBackendClauseContext)_localctx).STRING_LITERAL); + setState(3201); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3197); + match(COMMA); + setState(3198); + ((AddBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AddBackendClauseContext)_localctx).hostPorts.add(((AddBackendClauseContext)_localctx).STRING_LITERAL); + } + } + setState(3203); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(3205); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3204); + ((AddBackendClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 2: + _localctx = new DropBackendClauseContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3207); + _la = _input.LA(1); + if ( !(_la==DROP || _la==DROPP) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(3208); + match(BACKEND); + setState(3209); + ((DropBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DropBackendClauseContext)_localctx).hostPorts.add(((DropBackendClauseContext)_localctx).STRING_LITERAL); + setState(3214); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3210); + match(COMMA); + setState(3211); + ((DropBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DropBackendClauseContext)_localctx).hostPorts.add(((DropBackendClauseContext)_localctx).STRING_LITERAL); + } + } + setState(3216); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 3: + _localctx = new DecommissionBackendClauseContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3217); + match(DECOMMISSION); + setState(3218); + match(BACKEND); + setState(3219); + ((DecommissionBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DecommissionBackendClauseContext)_localctx).hostPorts.add(((DecommissionBackendClauseContext)_localctx).STRING_LITERAL); + setState(3224); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3220); + match(COMMA); + setState(3221); + ((DecommissionBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DecommissionBackendClauseContext)_localctx).hostPorts.add(((DecommissionBackendClauseContext)_localctx).STRING_LITERAL); + } + } + setState(3226); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 4: + _localctx = new AddObserverClauseContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3227); + match(ADD); + setState(3228); + match(OBSERVER); + setState(3229); + ((AddObserverClauseContext)_localctx).hostPort = match(STRING_LITERAL); + } + break; + case 5: + _localctx = new DropObserverClauseContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3230); + match(DROP); + setState(3231); + match(OBSERVER); + setState(3232); + ((DropObserverClauseContext)_localctx).hostPort = match(STRING_LITERAL); + } + break; + case 6: + _localctx = new AddFollowerClauseContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(3233); + match(ADD); + setState(3234); + match(FOLLOWER); + setState(3235); + ((AddFollowerClauseContext)_localctx).hostPort = match(STRING_LITERAL); + } + break; + case 7: + _localctx = new DropFollowerClauseContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(3236); + match(DROP); + setState(3237); + match(FOLLOWER); + setState(3238); + ((DropFollowerClauseContext)_localctx).hostPort = match(STRING_LITERAL); + } + break; + case 8: + _localctx = new AddBrokerClauseContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(3239); + match(ADD); + setState(3240); + match(BROKER); + setState(3241); + ((AddBrokerClauseContext)_localctx).name = identifierOrText(); + setState(3242); + ((AddBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AddBrokerClauseContext)_localctx).hostPorts.add(((AddBrokerClauseContext)_localctx).STRING_LITERAL); + setState(3247); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3243); + match(COMMA); + setState(3244); + ((AddBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((AddBrokerClauseContext)_localctx).hostPorts.add(((AddBrokerClauseContext)_localctx).STRING_LITERAL); + } + } + setState(3249); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 9: + _localctx = new DropBrokerClauseContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(3250); + match(DROP); + setState(3251); + match(BROKER); + setState(3252); + ((DropBrokerClauseContext)_localctx).name = identifierOrText(); + setState(3253); + ((DropBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DropBrokerClauseContext)_localctx).hostPorts.add(((DropBrokerClauseContext)_localctx).STRING_LITERAL); + setState(3258); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3254); + match(COMMA); + setState(3255); + ((DropBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DropBrokerClauseContext)_localctx).hostPorts.add(((DropBrokerClauseContext)_localctx).STRING_LITERAL); + } + } + setState(3260); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 10: + _localctx = new DropAllBrokerClauseContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(3261); + match(DROP); + setState(3262); + match(ALL); + setState(3263); + match(BROKER); + setState(3264); + ((DropAllBrokerClauseContext)_localctx).name = identifierOrText(); + } + break; + case 11: + _localctx = new AlterLoadErrorUrlClauseContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(3265); + match(SET); + setState(3266); + match(LOAD); + setState(3267); + match(ERRORS); + setState(3268); + match(HUB); + setState(3270); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3269); + ((AlterLoadErrorUrlClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 12: + _localctx = new ModifyBackendClauseContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(3272); + match(MODIFY); + setState(3273); + match(BACKEND); + setState(3274); + ((ModifyBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((ModifyBackendClauseContext)_localctx).hostPorts.add(((ModifyBackendClauseContext)_localctx).STRING_LITERAL); + setState(3279); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3275); + match(COMMA); + setState(3276); + ((ModifyBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((ModifyBackendClauseContext)_localctx).hostPorts.add(((ModifyBackendClauseContext)_localctx).STRING_LITERAL); + } + } + setState(3281); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(3282); + match(SET); + setState(3283); + match(LEFT_PAREN); + setState(3284); + propertyItemList(); + setState(3285); + match(RIGHT_PAREN); + } + break; + case 13: + _localctx = new ModifyFrontendOrBackendHostNameClauseContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(3287); + match(MODIFY); + setState(3288); + _la = _input.LA(1); + if ( !(_la==BACKEND || _la==FRONTEND) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(3289); + ((ModifyFrontendOrBackendHostNameClauseContext)_localctx).hostPort = match(STRING_LITERAL); + setState(3290); + match(HOSTNAME); + setState(3291); + ((ModifyFrontendOrBackendHostNameClauseContext)_localctx).hostName = match(STRING_LITERAL); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DropRollupClauseContext extends ParserRuleContext { + public IdentifierContext rollupName; + public PropertyClauseContext properties; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public DropRollupClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dropRollupClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRollupClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRollupClause(this); + } + } + + public final DropRollupClauseContext dropRollupClause() throws RecognitionException { + DropRollupClauseContext _localctx = new DropRollupClauseContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_dropRollupClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3294); + ((DropRollupClauseContext)_localctx).rollupName = identifier(); + setState(3296); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3295); + ((DropRollupClauseContext)_localctx).properties = propertyClause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AddRollupClauseContext extends ParserRuleContext { + public IdentifierContext rollupName; + public IdentifierListContext columns; + public IdentifierListContext dupKeys; + public PropertyClauseContext properties; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public FromRollupContext fromRollup() { + return getRuleContext(FromRollupContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AddRollupClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_addRollupClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddRollupClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddRollupClause(this); + } + } + + public final AddRollupClauseContext addRollupClause() throws RecognitionException { + AddRollupClauseContext _localctx = new AddRollupClauseContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_addRollupClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3298); + ((AddRollupClauseContext)_localctx).rollupName = identifier(); + setState(3299); + ((AddRollupClauseContext)_localctx).columns = identifierList(); + setState(3303); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DUPLICATE) { + { + setState(3300); + match(DUPLICATE); + setState(3301); + match(KEY); + setState(3302); + ((AddRollupClauseContext)_localctx).dupKeys = identifierList(); + } + } + + setState(3306); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(3305); + fromRollup(); + } + } + + setState(3309); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3308); + ((AddRollupClauseContext)_localctx).properties = propertyClause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AlterTableClauseContext extends ParserRuleContext { + public AlterTableClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_alterTableClause; } + + public AlterTableClauseContext() { } + public void copyFrom(AlterTableClauseContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddPartitionClauseContext extends AlterTableClauseContext { + public IdentifierListContext hashKeys; + public Token autoBucket; + public PropertyClauseContext properties; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public PartitionDefContext partitionDef() { + return getRuleContext(PartitionDefContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } + public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public AddPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddPartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddPartitionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyDistributionClauseContext extends AlterTableClauseContext { + public IdentifierListContext hashKeys; + public Token autoBucket; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode DISTRIBUTION() { return getToken(DorisParser.DISTRIBUTION, 0); } + public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } + public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public ModifyDistributionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyDistributionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyDistributionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddColumnClauseContext extends AlterTableClauseContext { + public PropertyClauseContext properties; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public ColumnDefContext columnDef() { + return getRuleContext(ColumnDefContext.class,0); + } + public ColumnPositionContext columnPosition() { + return getRuleContext(ColumnPositionContext.class,0); + } + public ToRollupContext toRollup() { + return getRuleContext(ToRollupContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AddColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddColumnClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddColumnClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyColumnClauseContext extends AlterTableClauseContext { + public PropertyClauseContext properties; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public ColumnDefContext columnDef() { + return getRuleContext(ColumnDefContext.class,0); + } + public ColumnPositionContext columnPosition() { + return getRuleContext(ColumnPositionContext.class,0); + } + public FromRollupContext fromRollup() { + return getRuleContext(FromRollupContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public ModifyColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyColumnClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyColumnClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RenameRollupClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public IdentifierContext newName; + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public RenameRollupClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenameRollupClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenameRollupClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddColumnsClauseContext extends AlterTableClauseContext { + public PropertyClauseContext properties; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public ColumnDefsContext columnDefs() { + return getRuleContext(ColumnDefsContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ToRollupContext toRollup() { + return getRuleContext(ToRollupContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AddColumnsClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddColumnsClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddColumnsClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ReplaceTableClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public ReplaceTableClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplaceTableClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplaceTableClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RenamePartitionClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public IdentifierContext newName; + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public RenamePartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenamePartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenamePartitionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropIndexClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropIndexClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropIndexClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropIndexClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropColumnClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FromRollupContext fromRollup() { + return getRuleContext(FromRollupContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public DropColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropColumnClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropColumnClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropPartitionClauseContext extends AlterTableClauseContext { + public IdentifierContext partitionName; + public IdentifierContext indexName; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public DropPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropPartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropPartitionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ReplacePartitionClauseContext extends AlterTableClauseContext { + public PartitionSpecContext partitions; + public PartitionSpecContext tempPartitions; + public PropertyClauseContext properties; + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public List partitionSpec() { + return getRuleContexts(PartitionSpecContext.class); + } + public PartitionSpecContext partitionSpec(int i) { + return getRuleContext(PartitionSpecContext.class,i); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public ReplacePartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplacePartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplacePartitionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RenameClauseContext extends AlterTableClauseContext { + public IdentifierContext newName; + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public RenameClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenameClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenameClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyTableCommentClauseContext extends AlterTableClauseContext { + public Token comment; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ModifyTableCommentClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyTableCommentClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyTableCommentClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyPartitionClauseContext extends AlterTableClauseContext { + public IdentifierContext partitionName; + public IdentifierListContext partitionNames; + public PropertyItemListContext partitionProperties; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ModifyPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyPartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyPartitionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyEngineClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode ENGINE() { return getToken(DorisParser.ENGINE, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public ModifyEngineClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyEngineClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyEngineClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ReorderColumnsClauseContext extends AlterTableClauseContext { + public PropertyClauseContext properties; + public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public FromRollupContext fromRollup() { + return getRuleContext(FromRollupContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public ReorderColumnsClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReorderColumnsClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReorderColumnsClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddIndexClauseContext extends AlterTableClauseContext { + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public IndexDefContext indexDef() { + return getRuleContext(IndexDefContext.class,0); + } + public AddIndexClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddIndexClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddIndexClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ModifyColumnCommentClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public Token comment; + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ModifyColumnCommentClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyColumnCommentClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyColumnCommentClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterMultiPartitionClauseContext extends AlterTableClauseContext { + public PartitionValueListContext from; + public PartitionValueListContext to; + public IdentifierContext unit; + public PropertyClauseContext properties; + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public TerminalNode INTERVAL() { return getToken(DorisParser.INTERVAL, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public List partitionValueList() { + return getRuleContexts(PartitionValueListContext.class); + } + public PartitionValueListContext partitionValueList(int i) { + return getRuleContext(PartitionValueListContext.class,i); + } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AlterMultiPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterMultiPartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterMultiPartitionClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RenameColumnClauseContext extends AlterTableClauseContext { + public IdentifierContext name; + public IdentifierContext newName; + public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public RenameColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenameColumnClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenameColumnClause(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class EnableFeatureClauseContext extends AlterTableClauseContext { + public Token name; + public PropertyClauseContext properties; + public TerminalNode ENABLE() { return getToken(DorisParser.ENABLE, 0); } + public TerminalNode FEATURE() { return getToken(DorisParser.FEATURE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public EnableFeatureClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterEnableFeatureClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitEnableFeatureClause(this); + } + } + + public final AlterTableClauseContext alterTableClause() throws RecognitionException { + AlterTableClauseContext _localctx = new AlterTableClauseContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_alterTableClause); + int _la; + try { + setState(3531); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,484,_ctx) ) { + case 1: + _localctx = new AddColumnClauseContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3311); + match(ADD); + setState(3312); + match(COLUMN); + setState(3313); + columnDef(); + setState(3315); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AFTER || _la==FIRST) { + { + setState(3314); + columnPosition(); + } + } + + setState(3318); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IN || _la==TO) { + { + setState(3317); + toRollup(); + } + } + + setState(3321); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3320); + ((AddColumnClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 2: + _localctx = new AddColumnsClauseContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3323); + match(ADD); + setState(3324); + match(COLUMN); + setState(3325); + match(LEFT_PAREN); + setState(3326); + columnDefs(); + setState(3327); + match(RIGHT_PAREN); + setState(3329); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IN || _la==TO) { + { + setState(3328); + toRollup(); + } + } + + setState(3332); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3331); + ((AddColumnsClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 3: + _localctx = new DropColumnClauseContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3334); + match(DROP); + setState(3335); + match(COLUMN); + setState(3336); + ((DropColumnClauseContext)_localctx).name = identifier(); + setState(3338); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(3337); + fromRollup(); + } + } + + setState(3341); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3340); + ((DropColumnClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 4: + _localctx = new ModifyColumnClauseContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3343); + match(MODIFY); + setState(3344); + match(COLUMN); + setState(3345); + columnDef(); + setState(3347); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AFTER || _la==FIRST) { + { + setState(3346); + columnPosition(); + } + } + + setState(3350); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(3349); + fromRollup(); + } + } + + setState(3353); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3352); + ((ModifyColumnClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 5: + _localctx = new ReorderColumnsClauseContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3355); + match(ORDER); + setState(3356); + match(BY); + setState(3357); + identifierList(); + setState(3359); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(3358); + fromRollup(); + } + } + + setState(3362); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3361); + ((ReorderColumnsClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 6: + _localctx = new AddPartitionClauseContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(3364); + match(ADD); + setState(3366); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(3365); + match(TEMPORARY); + } + } + + setState(3368); + partitionDef(); + setState(3383); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DISTRIBUTED) { + { + setState(3369); + match(DISTRIBUTED); + setState(3370); + match(BY); + setState(3374); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HASH: + { + setState(3371); + match(HASH); + setState(3372); + ((AddPartitionClauseContext)_localctx).hashKeys = identifierList(); + } + break; + case RANDOM: + { + setState(3373); + match(RANDOM); + } + break; + default: + throw new NoViableAltException(this); + } + setState(3381); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BUCKETS) { + { + setState(3376); + match(BUCKETS); + setState(3379); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTEGER_VALUE: + { + setState(3377); + match(INTEGER_VALUE); + } + break; + case AUTO: + { + setState(3378); + ((AddPartitionClauseContext)_localctx).autoBucket = match(AUTO); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + } + } + + setState(3386); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3385); + ((AddPartitionClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 7: + _localctx = new DropPartitionClauseContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(3388); + match(DROP); + setState(3390); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(3389); + match(TEMPORARY); + } + } + + setState(3392); + match(PARTITION); + setState(3395); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3393); + match(IF); + setState(3394); + match(EXISTS); + } + } + + setState(3397); + ((DropPartitionClauseContext)_localctx).partitionName = identifier(); + setState(3399); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(3398); + match(FORCE); + } + } + + setState(3404); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM) { + { + setState(3401); + match(FROM); + setState(3402); + match(INDEX); + setState(3403); + ((DropPartitionClauseContext)_localctx).indexName = identifier(); + } + } + + } + break; + case 8: + _localctx = new ModifyPartitionClauseContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(3406); + match(MODIFY); + setState(3408); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(3407); + match(TEMPORARY); + } + } + + setState(3410); + match(PARTITION); + setState(3416); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,467,_ctx) ) { + case 1: + { + setState(3411); + ((ModifyPartitionClauseContext)_localctx).partitionName = identifier(); + } + break; + case 2: + { + setState(3412); + ((ModifyPartitionClauseContext)_localctx).partitionNames = identifierList(); + } + break; + case 3: + { + setState(3413); + match(LEFT_PAREN); + setState(3414); + match(ASTERISK); + setState(3415); + match(RIGHT_PAREN); + } + break; + } + setState(3418); + match(SET); + setState(3419); + match(LEFT_PAREN); + setState(3420); + ((ModifyPartitionClauseContext)_localctx).partitionProperties = propertyItemList(); + setState(3421); + match(RIGHT_PAREN); + } + break; + case 9: + _localctx = new ReplacePartitionClauseContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(3423); + match(REPLACE); + setState(3425); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3424); + ((ReplacePartitionClauseContext)_localctx).partitions = partitionSpec(); + } + } + + setState(3427); + match(WITH); + setState(3429); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3428); + ((ReplacePartitionClauseContext)_localctx).tempPartitions = partitionSpec(); + } + } + + setState(3432); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(3431); + match(FORCE); + } + } + + setState(3435); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3434); + ((ReplacePartitionClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 10: + _localctx = new ReplaceTableClauseContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(3437); + match(REPLACE); + setState(3438); + match(WITH); + setState(3439); + match(TABLE); + setState(3440); + ((ReplaceTableClauseContext)_localctx).name = identifier(); + setState(3442); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3441); + ((ReplaceTableClauseContext)_localctx).properties = propertyClause(); + } + } + + setState(3445); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(3444); + match(FORCE); + } + } + + } + break; + case 11: + _localctx = new RenameClauseContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(3447); + match(RENAME); + setState(3448); + ((RenameClauseContext)_localctx).newName = identifier(); + } + break; + case 12: + _localctx = new RenameRollupClauseContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(3449); + match(RENAME); + setState(3450); + match(ROLLUP); + setState(3451); + ((RenameRollupClauseContext)_localctx).name = identifier(); + setState(3452); + ((RenameRollupClauseContext)_localctx).newName = identifier(); + } + break; + case 13: + _localctx = new RenamePartitionClauseContext(_localctx); + enterOuterAlt(_localctx, 13); + { + setState(3454); + match(RENAME); + setState(3455); + match(PARTITION); + setState(3456); + ((RenamePartitionClauseContext)_localctx).name = identifier(); + setState(3457); + ((RenamePartitionClauseContext)_localctx).newName = identifier(); + } + break; + case 14: + _localctx = new RenameColumnClauseContext(_localctx); + enterOuterAlt(_localctx, 14); + { + setState(3459); + match(RENAME); + setState(3460); + match(COLUMN); + setState(3461); + ((RenameColumnClauseContext)_localctx).name = identifier(); + setState(3462); + ((RenameColumnClauseContext)_localctx).newName = identifier(); + } + break; + case 15: + _localctx = new AddIndexClauseContext(_localctx); + enterOuterAlt(_localctx, 15); + { + setState(3464); + match(ADD); + setState(3465); + indexDef(); + } + break; + case 16: + _localctx = new DropIndexClauseContext(_localctx); + enterOuterAlt(_localctx, 16); + { + setState(3466); + match(DROP); + setState(3467); + match(INDEX); + setState(3470); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3468); + match(IF); + setState(3469); + match(EXISTS); + } + } + + setState(3472); + ((DropIndexClauseContext)_localctx).name = identifier(); + } + break; + case 17: + _localctx = new EnableFeatureClauseContext(_localctx); + enterOuterAlt(_localctx, 17); + { + setState(3473); + match(ENABLE); + setState(3474); + match(FEATURE); + setState(3475); + ((EnableFeatureClauseContext)_localctx).name = match(STRING_LITERAL); + setState(3478); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(3476); + match(WITH); + setState(3477); + ((EnableFeatureClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 18: + _localctx = new ModifyDistributionClauseContext(_localctx); + enterOuterAlt(_localctx, 18); + { + setState(3480); + match(MODIFY); + setState(3481); + match(DISTRIBUTION); + setState(3496); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DISTRIBUTED) { + { + setState(3482); + match(DISTRIBUTED); + setState(3483); + match(BY); + setState(3487); + _errHandler.sync(this); + switch (_input.LA(1)) { + case HASH: + { + setState(3484); + match(HASH); + setState(3485); + ((ModifyDistributionClauseContext)_localctx).hashKeys = identifierList(); + } + break; + case RANDOM: + { + setState(3486); + match(RANDOM); + } + break; + default: + throw new NoViableAltException(this); + } + setState(3494); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BUCKETS) { + { + setState(3489); + match(BUCKETS); + setState(3492); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTEGER_VALUE: + { + setState(3490); + match(INTEGER_VALUE); + } + break; + case AUTO: + { + setState(3491); + ((ModifyDistributionClauseContext)_localctx).autoBucket = match(AUTO); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + } + } + + } + break; + case 19: + _localctx = new ModifyTableCommentClauseContext(_localctx); + enterOuterAlt(_localctx, 19); + { + setState(3498); + match(MODIFY); + setState(3499); + match(COMMENT); + setState(3500); + ((ModifyTableCommentClauseContext)_localctx).comment = match(STRING_LITERAL); + } + break; + case 20: + _localctx = new ModifyColumnCommentClauseContext(_localctx); + enterOuterAlt(_localctx, 20); + { + setState(3501); + match(MODIFY); + setState(3502); + match(COLUMN); + setState(3503); + ((ModifyColumnCommentClauseContext)_localctx).name = identifier(); + setState(3504); + match(COMMENT); + setState(3505); + ((ModifyColumnCommentClauseContext)_localctx).comment = match(STRING_LITERAL); + } + break; + case 21: + _localctx = new ModifyEngineClauseContext(_localctx); + enterOuterAlt(_localctx, 21); + { + setState(3507); + match(MODIFY); + setState(3508); + match(ENGINE); + setState(3509); + match(TO); + setState(3510); + ((ModifyEngineClauseContext)_localctx).name = identifier(); + setState(3512); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3511); + ((ModifyEngineClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 22: + _localctx = new AlterMultiPartitionClauseContext(_localctx); + enterOuterAlt(_localctx, 22); + { + setState(3514); + match(ADD); + setState(3516); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(3515); + match(TEMPORARY); + } + } + + setState(3518); + match(PARTITIONS); + setState(3519); + match(FROM); + setState(3520); + ((AlterMultiPartitionClauseContext)_localctx).from = partitionValueList(); + setState(3521); + match(TO); + setState(3522); + ((AlterMultiPartitionClauseContext)_localctx).to = partitionValueList(); + setState(3523); + match(INTERVAL); + setState(3524); + match(INTEGER_VALUE); + setState(3526); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,482,_ctx) ) { + case 1: + { + setState(3525); + ((AlterMultiPartitionClauseContext)_localctx).unit = identifier(); + } + break; + } + setState(3529); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3528); + ((AlterMultiPartitionClauseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ColumnPositionContext extends ParserRuleContext { + public IdentifierContext position; + public TerminalNode FIRST() { return getToken(DorisParser.FIRST, 0); } + public TerminalNode AFTER() { return getToken(DorisParser.AFTER, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ColumnPositionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_columnPosition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnPosition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnPosition(this); + } + } + + public final ColumnPositionContext columnPosition() throws RecognitionException { + ColumnPositionContext _localctx = new ColumnPositionContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_columnPosition); + try { + setState(3536); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FIRST: + enterOuterAlt(_localctx, 1); + { + setState(3533); + match(FIRST); + } + break; + case AFTER: + enterOuterAlt(_localctx, 2); + { + setState(3534); + match(AFTER); + setState(3535); + ((ColumnPositionContext)_localctx).position = identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ToRollupContext extends ParserRuleContext { + public IdentifierContext rollup; + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ToRollupContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_toRollup; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterToRollup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitToRollup(this); + } + } + + public final ToRollupContext toRollup() throws RecognitionException { + ToRollupContext _localctx = new ToRollupContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_toRollup); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3538); + _la = _input.LA(1); + if ( !(_la==IN || _la==TO) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(3539); + ((ToRollupContext)_localctx).rollup = identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FromRollupContext extends ParserRuleContext { + public IdentifierContext rollup; + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FromRollupContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fromRollup; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFromRollup(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFromRollup(this); + } + } + + public final FromRollupContext fromRollup() throws RecognitionException { + FromRollupContext _localctx = new FromRollupContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_fromRollup); + try { + enterOuterAlt(_localctx, 1); + { + setState(3541); + match(FROM); + setState(3542); + ((FromRollupContext)_localctx).rollup = identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedDropStatementContext extends ParserRuleContext { + public UnsupportedDropStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedDropStatement; } + + public UnsupportedDropStatementContext() { } + public void copyFrom(UnsupportedDropStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropStageContext extends UnsupportedDropStatementContext { + public IdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropStageContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropStage(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropStage(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropRowPolicyContext extends UnsupportedDropStatementContext { + public IdentifierContext policyName; + public MultipartIdentifierContext tableName; + public IdentifierContext roleName; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public DropRowPolicyContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRowPolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRowPolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropResourceContext extends UnsupportedDropStatementContext { + public IdentifierOrTextContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropResourceContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropResource(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropViewContext extends UnsupportedDropStatementContext { + public MultipartIdentifierContext name; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public DropViewContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropView(this); + } + } + + public final UnsupportedDropStatementContext unsupportedDropStatement() throws RecognitionException { + UnsupportedDropStatementContext _localctx = new UnsupportedDropStatementContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_unsupportedDropStatement); + int _la; + try { + setState(3583); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,492,_ctx) ) { + case 1: + _localctx = new DropViewContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3544); + match(DROP); + setState(3545); + match(VIEW); + setState(3548); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3546); + match(IF); + setState(3547); + match(EXISTS); + } + } + + setState(3550); + ((DropViewContext)_localctx).name = multipartIdentifier(); + } + break; + case 2: + _localctx = new DropResourceContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3551); + match(DROP); + setState(3552); + match(RESOURCE); + setState(3555); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3553); + match(IF); + setState(3554); + match(EXISTS); + } + } + + setState(3557); + ((DropResourceContext)_localctx).name = identifierOrText(); + } + break; + case 3: + _localctx = new DropRowPolicyContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3558); + match(DROP); + setState(3559); + match(ROW); + setState(3560); + match(POLICY); + setState(3563); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3561); + match(IF); + setState(3562); + match(EXISTS); + } + } + + setState(3565); + ((DropRowPolicyContext)_localctx).policyName = identifier(); + setState(3566); + match(ON); + setState(3567); + ((DropRowPolicyContext)_localctx).tableName = multipartIdentifier(); + setState(3574); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(3568); + match(FOR); + setState(3572); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(3569); + userIdentify(); + } + break; + case ROLE: + { + setState(3570); + match(ROLE); + setState(3571); + ((DropRowPolicyContext)_localctx).roleName = identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + } + break; + case 4: + _localctx = new DropStageContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3576); + match(DROP); + setState(3577); + match(STAGE); + setState(3580); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3578); + match(IF); + setState(3579); + match(EXISTS); + } + } + + setState(3582); + ((DropStageContext)_localctx).name = identifier(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedStatsStatementContext extends ParserRuleContext { + public SupportedStatsStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedStatsStatement; } + + public SupportedStatsStatementContext() { } + public void copyFrom(SupportedStatsStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowAnalyzeContext extends SupportedStatsStatementContext { + public Token jobId; + public MultipartIdentifierContext tableName; + public IdentifierContext stateKey; + public Token stateValue; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowAnalyzeContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAnalyze(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAnalyze(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AnalyzeDatabaseContext extends SupportedStatsStatementContext { + public MultipartIdentifierContext name; + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List WITH() { return getTokens(DorisParser.WITH); } + public TerminalNode WITH(int i) { + return getToken(DorisParser.WITH, i); + } + public List analyzeProperties() { + return getRuleContexts(AnalyzePropertiesContext.class); + } + public AnalyzePropertiesContext analyzeProperties(int i) { + return getRuleContext(AnalyzePropertiesContext.class,i); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public AnalyzeDatabaseContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAnalyzeDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAnalyzeDatabase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowQueuedAnalyzeJobsContext extends SupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierContext stateKey; + public Token stateValue; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode QUEUED() { return getToken(DorisParser.QUEUED, 0); } + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode JOBS() { return getToken(DorisParser.JOBS, 0); } + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ShowQueuedAnalyzeJobsContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowQueuedAnalyzeJobs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowQueuedAnalyzeJobs(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AnalyzeTableContext extends SupportedStatsStatementContext { + public MultipartIdentifierContext name; + public IdentifierListContext columns; + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public List WITH() { return getTokens(DorisParser.WITH); } + public TerminalNode WITH(int i) { + return getToken(DorisParser.WITH, i); + } + public List analyzeProperties() { + return getRuleContexts(AnalyzePropertiesContext.class); + } + public AnalyzePropertiesContext analyzeProperties(int i) { + return getRuleContext(AnalyzePropertiesContext.class,i); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public AnalyzeTableContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAnalyzeTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAnalyzeTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowColumnHistogramStatsContext extends SupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierListContext columnList; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public TerminalNode HISTOGRAM() { return getToken(DorisParser.HISTOGRAM, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ShowColumnHistogramStatsContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowColumnHistogramStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowColumnHistogramStats(this); + } + } + + public final SupportedStatsStatementContext supportedStatsStatement() throws RecognitionException { + SupportedStatsStatementContext _localctx = new SupportedStatsStatementContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_supportedStatsStatement); + int _la; + try { + setState(3653); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,504,_ctx) ) { + case 1: + _localctx = new ShowAnalyzeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3585); + match(SHOW); + setState(3587); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AUTO) { + { + setState(3586); + match(AUTO); + } + } + + setState(3589); + match(ANALYZE); + setState(3592); + _errHandler.sync(this); + switch (_input.LA(1)) { + case INTEGER_VALUE: + { + setState(3590); + ((ShowAnalyzeContext)_localctx).jobId = match(INTEGER_VALUE); + } + break; + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(3591); + ((ShowAnalyzeContext)_localctx).tableName = multipartIdentifier(); + } + break; + case EOF: + case SEMICOLON: + case WHERE: + break; + default: + break; + } + setState(3599); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(3594); + match(WHERE); + { + setState(3595); + ((ShowAnalyzeContext)_localctx).stateKey = identifier(); + } + setState(3596); + match(EQ); + { + setState(3597); + ((ShowAnalyzeContext)_localctx).stateValue = match(STRING_LITERAL); + } + } + } + + } + break; + case 2: + _localctx = new ShowQueuedAnalyzeJobsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3601); + match(SHOW); + setState(3602); + match(QUEUED); + setState(3603); + match(ANALYZE); + setState(3604); + match(JOBS); + setState(3606); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(3605); + ((ShowQueuedAnalyzeJobsContext)_localctx).tableName = multipartIdentifier(); + } + } + + setState(3613); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(3608); + match(WHERE); + { + setState(3609); + ((ShowQueuedAnalyzeJobsContext)_localctx).stateKey = identifier(); + } + setState(3610); + match(EQ); + { + setState(3611); + ((ShowQueuedAnalyzeJobsContext)_localctx).stateValue = match(STRING_LITERAL); + } + } + } + + } + break; + case 3: + _localctx = new ShowColumnHistogramStatsContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3615); + match(SHOW); + setState(3616); + match(COLUMN); + setState(3617); + match(HISTOGRAM); + setState(3618); + ((ShowColumnHistogramStatsContext)_localctx).tableName = multipartIdentifier(); + setState(3619); + ((ShowColumnHistogramStatsContext)_localctx).columnList = identifierList(); + } + break; + case 4: + _localctx = new AnalyzeDatabaseContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3621); + match(ANALYZE); + setState(3622); + match(DATABASE); + setState(3623); + ((AnalyzeDatabaseContext)_localctx).name = multipartIdentifier(); + setState(3628); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==WITH) { + { + { + setState(3624); + match(WITH); + setState(3625); + analyzeProperties(); + } + } + setState(3630); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(3632); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3631); + propertyClause(); + } + } + + } + break; + case 5: + _localctx = new AnalyzeTableContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3634); + match(ANALYZE); + setState(3635); + match(TABLE); + setState(3636); + ((AnalyzeTableContext)_localctx).name = multipartIdentifier(); + setState(3638); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3637); + partitionSpec(); + } + } + + setState(3641); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(3640); + ((AnalyzeTableContext)_localctx).columns = identifierList(); + } + } + + setState(3647); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==WITH) { + { + { + setState(3643); + match(WITH); + setState(3644); + analyzeProperties(); + } + } + setState(3649); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(3651); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3650); + propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedStatsStatementContext extends ParserRuleContext { + public UnsupportedStatsStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedStatsStatement; } + + public UnsupportedStatsStatementContext() { } + public void copyFrom(UnsupportedStatsStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class KillAnalyzeJobContext extends UnsupportedStatsStatementContext { + public Token jobId; + public TerminalNode KILL() { return getToken(DorisParser.KILL, 0); } + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public KillAnalyzeJobContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterKillAnalyzeJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitKillAnalyzeJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowTableStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierListContext columnList; + public Token tableId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowTableStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropAanalyzeJobContext extends UnsupportedStatsStatementContext { + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public DropAanalyzeJobContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropAanalyzeJob(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropAanalyzeJob(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowColumnStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierListContext columnList; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode CACHED() { return getToken(DorisParser.CACHED, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ShowColumnStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowColumnStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowColumnStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterColumnStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext name; + public IdentifierContext indexName; + public IdentifierContext columnName; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public AlterColumnStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterColumnStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterColumnStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropExpiredStatsContext extends UnsupportedStatsStatementContext { + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode EXPIRED() { return getToken(DorisParser.EXPIRED, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public DropExpiredStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropExpiredStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropExpiredStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowAnalyzeTaskContext extends UnsupportedStatsStatementContext { + public Token jobId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } + public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public ShowAnalyzeTaskContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAnalyzeTask(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAnalyzeTask(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ShowIndexStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierContext indexId; + public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ShowIndexStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowIndexStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowIndexStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AlterTableStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext name; + public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public AlterTableStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public IdentifierListContext columns; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public DropStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropStats(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DropCachedStatsContext extends UnsupportedStatsStatementContext { + public MultipartIdentifierContext tableName; + public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } + public TerminalNode CACHED() { return getToken(DorisParser.CACHED, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public DropCachedStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropCachedStats(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropCachedStats(this); + } + } + + public final UnsupportedStatsStatementContext unsupportedStatsStatement() throws RecognitionException { + UnsupportedStatsStatementContext _localctx = new UnsupportedStatsStatementContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_unsupportedStatsStatement); + int _la; + try { + setState(3745); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,515,_ctx) ) { + case 1: + _localctx = new AlterTableStatsContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3655); + match(ALTER); + setState(3656); + match(TABLE); + setState(3657); + ((AlterTableStatsContext)_localctx).name = multipartIdentifier(); + setState(3658); + match(SET); + setState(3659); + match(STATS); + setState(3660); + match(LEFT_PAREN); + setState(3661); + propertyItemList(); + setState(3662); + match(RIGHT_PAREN); + setState(3664); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3663); + partitionSpec(); + } + } + + } + break; + case 2: + _localctx = new AlterColumnStatsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3666); + match(ALTER); + setState(3667); + match(TABLE); + setState(3668); + ((AlterColumnStatsContext)_localctx).name = multipartIdentifier(); + setState(3671); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INDEX) { + { + setState(3669); + match(INDEX); + setState(3670); + ((AlterColumnStatsContext)_localctx).indexName = identifier(); + } + } + + setState(3673); + match(MODIFY); + setState(3674); + match(COLUMN); + setState(3675); + ((AlterColumnStatsContext)_localctx).columnName = identifier(); + setState(3676); + match(SET); + setState(3677); + match(STATS); + setState(3678); + match(LEFT_PAREN); + setState(3679); + propertyItemList(); + setState(3680); + match(RIGHT_PAREN); + setState(3682); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3681); + partitionSpec(); + } + } + + } + break; + case 3: + _localctx = new DropStatsContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3684); + match(DROP); + setState(3685); + match(STATS); + setState(3686); + ((DropStatsContext)_localctx).tableName = multipartIdentifier(); + setState(3688); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(3687); + ((DropStatsContext)_localctx).columns = identifierList(); + } + } + + setState(3691); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3690); + partitionSpec(); + } + } + + } + break; + case 4: + _localctx = new DropCachedStatsContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3693); + match(DROP); + setState(3694); + match(CACHED); + setState(3695); + match(STATS); + setState(3696); + ((DropCachedStatsContext)_localctx).tableName = multipartIdentifier(); + } + break; + case 5: + _localctx = new DropExpiredStatsContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3697); + match(DROP); + setState(3698); + match(EXPIRED); + setState(3699); + match(STATS); + } + break; + case 6: + _localctx = new DropAanalyzeJobContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(3700); + match(DROP); + setState(3701); + match(ANALYZE); + setState(3702); + match(JOB); + setState(3703); + match(INTEGER_VALUE); + } + break; + case 7: + _localctx = new KillAnalyzeJobContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(3704); + match(KILL); + setState(3705); + match(ANALYZE); + setState(3706); + ((KillAnalyzeJobContext)_localctx).jobId = match(INTEGER_VALUE); + } + break; + case 8: + _localctx = new ShowTableStatsContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(3707); + match(SHOW); + setState(3708); + match(TABLE); + setState(3709); + match(STATS); + setState(3710); + ((ShowTableStatsContext)_localctx).tableName = multipartIdentifier(); + setState(3712); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3711); + partitionSpec(); + } + } + + setState(3715); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(3714); + ((ShowTableStatsContext)_localctx).columnList = identifierList(); + } + } + + } + break; + case 9: + _localctx = new ShowTableStatsContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(3717); + match(SHOW); + setState(3718); + match(TABLE); + setState(3719); + match(STATS); + setState(3720); + ((ShowTableStatsContext)_localctx).tableId = match(INTEGER_VALUE); + } + break; + case 10: + _localctx = new ShowIndexStatsContext(_localctx); + enterOuterAlt(_localctx, 10); + { + setState(3721); + match(SHOW); + setState(3722); + match(INDEX); + setState(3723); + match(STATS); + setState(3724); + ((ShowIndexStatsContext)_localctx).tableName = multipartIdentifier(); + setState(3725); + ((ShowIndexStatsContext)_localctx).indexId = identifier(); + } + break; + case 11: + _localctx = new ShowColumnStatsContext(_localctx); + enterOuterAlt(_localctx, 11); + { + setState(3727); + match(SHOW); + setState(3728); + match(COLUMN); + setState(3730); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CACHED) { + { + setState(3729); + match(CACHED); + } + } + + setState(3732); + match(STATS); + setState(3733); + ((ShowColumnStatsContext)_localctx).tableName = multipartIdentifier(); + setState(3735); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(3734); + ((ShowColumnStatsContext)_localctx).columnList = identifierList(); + } + } + + setState(3738); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(3737); + partitionSpec(); + } + } + + } + break; + case 12: + _localctx = new ShowAnalyzeTaskContext(_localctx); + enterOuterAlt(_localctx, 12); + { + setState(3740); + match(SHOW); + setState(3741); + match(ANALYZE); + setState(3742); + match(TASK); + setState(3743); + match(STATUS); + setState(3744); + ((ShowAnalyzeTaskContext)_localctx).jobId = match(INTEGER_VALUE); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AnalyzePropertiesContext extends ParserRuleContext { + public Token rows; + public Token percent; + public Token bucket; + public Token periodInSecond; + public Token crontabExpr; + public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } + public TerminalNode INCREMENTAL() { return getToken(DorisParser.INCREMENTAL, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public TerminalNode SQL() { return getToken(DorisParser.SQL, 0); } + public TerminalNode HISTOGRAM() { return getToken(DorisParser.HISTOGRAM, 0); } + public TerminalNode SAMPLE() { return getToken(DorisParser.SAMPLE, 0); } + public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } + public TerminalNode PERCENT() { return getToken(DorisParser.PERCENT, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } + public TerminalNode PERIOD() { return getToken(DorisParser.PERIOD, 0); } + public TerminalNode CRON() { return getToken(DorisParser.CRON, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public AnalyzePropertiesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_analyzeProperties; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAnalyzeProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAnalyzeProperties(this); + } + } + + public final AnalyzePropertiesContext analyzeProperties() throws RecognitionException { + AnalyzePropertiesContext _localctx = new AnalyzePropertiesContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_analyzeProperties); + try { + setState(3765); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SYNC: + enterOuterAlt(_localctx, 1); + { + setState(3747); + match(SYNC); + } + break; + case INCREMENTAL: + enterOuterAlt(_localctx, 2); + { + setState(3748); + match(INCREMENTAL); + } + break; + case FULL: + enterOuterAlt(_localctx, 3); + { + setState(3749); + match(FULL); + } + break; + case SQL: + enterOuterAlt(_localctx, 4); + { + setState(3750); + match(SQL); + } + break; + case HISTOGRAM: + enterOuterAlt(_localctx, 5); + { + setState(3751); + match(HISTOGRAM); + } + break; + case SAMPLE: + enterOuterAlt(_localctx, 6); + { + { + setState(3752); + match(SAMPLE); + setState(3757); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ROWS: + { + { + setState(3753); + match(ROWS); + setState(3754); + ((AnalyzePropertiesContext)_localctx).rows = match(INTEGER_VALUE); + } + } + break; + case PERCENT: + { + { + setState(3755); + match(PERCENT); + setState(3756); + ((AnalyzePropertiesContext)_localctx).percent = match(INTEGER_VALUE); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + break; + case BUCKETS: + enterOuterAlt(_localctx, 7); + { + { + setState(3759); + match(BUCKETS); + setState(3760); + ((AnalyzePropertiesContext)_localctx).bucket = match(INTEGER_VALUE); + } + } + break; + case PERIOD: + enterOuterAlt(_localctx, 8); + { + { + setState(3761); + match(PERIOD); + setState(3762); + ((AnalyzePropertiesContext)_localctx).periodInSecond = match(INTEGER_VALUE); + } + } + break; + case CRON: + enterOuterAlt(_localctx, 9); + { + { + setState(3763); + match(CRON); + setState(3764); + ((AnalyzePropertiesContext)_localctx).crontabExpr = match(STRING_LITERAL); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedCreateStatementContext extends ParserRuleContext { + public UnsupportedCreateStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedCreateStatement; } + + public UnsupportedCreateStatementContext() { } + public void copyFrom(UnsupportedCreateStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateRepositoryContext extends UnsupportedCreateStatementContext { + public IdentifierContext name; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public StorageBackendContext storageBackend() { + return getRuleContext(StorageBackendContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode READ() { return getToken(DorisParser.READ, 0); } + public TerminalNode ONLY() { return getToken(DorisParser.ONLY, 0); } + public CreateRepositoryContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRepository(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRepository(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateDatabaseContext extends UnsupportedCreateStatementContext { + public MultipartIdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateDatabaseContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateDatabase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateStorageVaultContext extends UnsupportedCreateStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateStorageVaultContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateStorageVault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateStorageVault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateWorkloadPolicyContext extends UnsupportedCreateStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode CONDITIONS() { return getToken(DorisParser.CONDITIONS, 0); } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public WorkloadPolicyConditionsContext workloadPolicyConditions() { + return getRuleContext(WorkloadPolicyConditionsContext.class,0); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public TerminalNode ACTIONS() { return getToken(DorisParser.ACTIONS, 0); } + public WorkloadPolicyActionsContext workloadPolicyActions() { + return getRuleContext(WorkloadPolicyActionsContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateWorkloadPolicyContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateWorkloadPolicy(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateWorkloadPolicy(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateResourceContext extends UnsupportedCreateStatementContext { + public IdentifierOrTextContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateResourceContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateResource(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateResource(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateStageContext extends UnsupportedCreateStatementContext { + public IdentifierContext name; + public PropertyClauseContext properties; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public CreateStageContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateStage(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateStage(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CreateUserContext extends UnsupportedCreateStatementContext { + public Token role; + public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } + public TerminalNode USER() { return getToken(DorisParser.USER, 0); } + public GrantUserIdentifyContext grantUserIdentify() { + return getRuleContext(GrantUserIdentifyContext.class,0); + } + public PasswordOptionContext passwordOption() { + return getRuleContext(PasswordOptionContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode SUPERUSER() { return getToken(DorisParser.SUPERUSER, 0); } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public CreateUserContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateUser(this); + } + } + + public final UnsupportedCreateStatementContext unsupportedCreateStatement() throws RecognitionException { + UnsupportedCreateStatementContext _localctx = new UnsupportedCreateStatementContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_unsupportedCreateStatement); + int _la; + try { + setState(3870); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,535,_ctx) ) { + case 1: + _localctx = new CreateDatabaseContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3767); + match(CREATE); + setState(3768); + _la = _input.LA(1); + if ( !(_la==DATABASE || _la==SCHEMA) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(3772); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3769); + match(IF); + setState(3770); + match(NOT); + setState(3771); + match(EXISTS); + } + } + + setState(3774); + ((CreateDatabaseContext)_localctx).name = multipartIdentifier(); + setState(3776); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3775); + ((CreateDatabaseContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 2: + _localctx = new CreateUserContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3778); + match(CREATE); + setState(3779); + match(USER); + setState(3783); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3780); + match(IF); + setState(3781); + match(NOT); + setState(3782); + match(EXISTS); + } + } + + setState(3785); + grantUserIdentify(); + setState(3790); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SUPERUSER: + { + setState(3786); + match(SUPERUSER); + } + break; + case DEFAULT: + { + setState(3787); + match(DEFAULT); + setState(3788); + match(ROLE); + setState(3789); + ((CreateUserContext)_localctx).role = match(STRING_LITERAL); + } + break; + case EOF: + case SEMICOLON: + case ACCOUNT_LOCK: + case ACCOUNT_UNLOCK: + case COMMENT: + case FAILED_LOGIN_ATTEMPTS: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + break; + default: + break; + } + setState(3792); + passwordOption(); + setState(3795); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(3793); + match(COMMENT); + setState(3794); + match(STRING_LITERAL); + } + } + + } + break; + case 3: + _localctx = new CreateRepositoryContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3797); + match(CREATE); + setState(3800); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==READ) { + { + setState(3798); + match(READ); + setState(3799); + match(ONLY); + } + } + + setState(3802); + match(REPOSITORY); + setState(3803); + ((CreateRepositoryContext)_localctx).name = identifier(); + setState(3804); + match(WITH); + setState(3805); + storageBackend(); + } + break; + case 4: + _localctx = new CreateResourceContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3807); + match(CREATE); + setState(3809); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EXTERNAL) { + { + setState(3808); + match(EXTERNAL); + } + } + + setState(3811); + match(RESOURCE); + setState(3815); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3812); + match(IF); + setState(3813); + match(NOT); + setState(3814); + match(EXISTS); + } + } + + setState(3817); + ((CreateResourceContext)_localctx).name = identifierOrText(); + setState(3819); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3818); + ((CreateResourceContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 5: + _localctx = new CreateStorageVaultContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(3821); + match(CREATE); + setState(3822); + match(STORAGE); + setState(3823); + match(VAULT); + setState(3827); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3824); + match(IF); + setState(3825); + match(NOT); + setState(3826); + match(EXISTS); + } + } + + setState(3829); + ((CreateStorageVaultContext)_localctx).name = identifierOrText(); + setState(3831); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3830); + ((CreateStorageVaultContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 6: + _localctx = new CreateWorkloadPolicyContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(3833); + match(CREATE); + setState(3834); + match(WORKLOAD); + setState(3835); + match(POLICY); + setState(3839); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3836); + match(IF); + setState(3837); + match(NOT); + setState(3838); + match(EXISTS); + } + } + + setState(3841); + ((CreateWorkloadPolicyContext)_localctx).name = identifierOrText(); + setState(3847); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CONDITIONS) { + { + setState(3842); + match(CONDITIONS); + setState(3843); + match(LEFT_PAREN); + setState(3844); + workloadPolicyConditions(); + setState(3845); + match(RIGHT_PAREN); + } + } + + setState(3854); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ACTIONS) { + { + setState(3849); + match(ACTIONS); + setState(3850); + match(LEFT_PAREN); + setState(3851); + workloadPolicyActions(); + setState(3852); + match(RIGHT_PAREN); + } + } + + setState(3857); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3856); + ((CreateWorkloadPolicyContext)_localctx).properties = propertyClause(); + } + } + + } + break; + case 7: + _localctx = new CreateStageContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(3859); + match(CREATE); + setState(3860); + match(STAGE); + setState(3864); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(3861); + match(IF); + setState(3862); + match(NOT); + setState(3863); + match(EXISTS); + } + } + + setState(3866); + ((CreateStageContext)_localctx).name = identifier(); + setState(3868); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3867); + ((CreateStageContext)_localctx).properties = propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WorkloadPolicyActionsContext extends ParserRuleContext { + public List workloadPolicyAction() { + return getRuleContexts(WorkloadPolicyActionContext.class); + } + public WorkloadPolicyActionContext workloadPolicyAction(int i) { + return getRuleContext(WorkloadPolicyActionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public WorkloadPolicyActionsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_workloadPolicyActions; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyActions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyActions(this); + } + } + + public final WorkloadPolicyActionsContext workloadPolicyActions() throws RecognitionException { + WorkloadPolicyActionsContext _localctx = new WorkloadPolicyActionsContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_workloadPolicyActions); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3872); + workloadPolicyAction(); + setState(3877); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3873); + match(COMMA); + setState(3874); + workloadPolicyAction(); + } + } + setState(3879); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WorkloadPolicyActionContext extends ParserRuleContext { + public TerminalNode SET_SESSION_VARIABLE() { return getToken(DorisParser.SET_SESSION_VARIABLE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public WorkloadPolicyActionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_workloadPolicyAction; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyAction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyAction(this); + } + } + + public final WorkloadPolicyActionContext workloadPolicyAction() throws RecognitionException { + WorkloadPolicyActionContext _localctx = new WorkloadPolicyActionContext(_ctx, getState()); + enterRule(_localctx, 118, RULE_workloadPolicyAction); + int _la; + try { + setState(3886); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,538,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(3880); + match(SET_SESSION_VARIABLE); + setState(3881); + match(STRING_LITERAL); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(3882); + identifier(); + setState(3884); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STRING_LITERAL) { + { + setState(3883); + match(STRING_LITERAL); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WorkloadPolicyConditionsContext extends ParserRuleContext { + public List workloadPolicyCondition() { + return getRuleContexts(WorkloadPolicyConditionContext.class); + } + public WorkloadPolicyConditionContext workloadPolicyCondition(int i) { + return getRuleContext(WorkloadPolicyConditionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public WorkloadPolicyConditionsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_workloadPolicyConditions; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyConditions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyConditions(this); + } + } + + public final WorkloadPolicyConditionsContext workloadPolicyConditions() throws RecognitionException { + WorkloadPolicyConditionsContext _localctx = new WorkloadPolicyConditionsContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_workloadPolicyConditions); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3888); + workloadPolicyCondition(); + setState(3893); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3889); + match(COMMA); + setState(3890); + workloadPolicyCondition(); + } + } + setState(3895); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WorkloadPolicyConditionContext extends ParserRuleContext { + public IdentifierContext metricName; + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public WorkloadPolicyConditionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_workloadPolicyCondition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyCondition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyCondition(this); + } + } + + public final WorkloadPolicyConditionContext workloadPolicyCondition() throws RecognitionException { + WorkloadPolicyConditionContext _localctx = new WorkloadPolicyConditionContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_workloadPolicyCondition); + try { + enterOuterAlt(_localctx, 1); + { + setState(3896); + ((WorkloadPolicyConditionContext)_localctx).metricName = identifier(); + setState(3897); + comparisonOperator(); + setState(3900); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SUBTRACT: + case INTEGER_VALUE: + case EXPONENT_VALUE: + case DECIMAL_VALUE: + { + setState(3898); + number(); + } + break; + case STRING_LITERAL: + { + setState(3899); + match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StorageBackendContext extends ParserRuleContext { + public IdentifierContext brokerName; + public PropertyClauseContext properties; + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode LOCATION() { return getToken(DorisParser.LOCATION, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public TerminalNode S3() { return getToken(DorisParser.S3, 0); } + public TerminalNode HDFS() { return getToken(DorisParser.HDFS, 0); } + public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public StorageBackendContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_storageBackend; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStorageBackend(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStorageBackend(this); + } + } + + public final StorageBackendContext storageBackend() throws RecognitionException { + StorageBackendContext _localctx = new StorageBackendContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_storageBackend); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3902); + _la = _input.LA(1); + if ( !(_la==BROKER || _la==HDFS || _la==LOCAL || _la==S3) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(3904); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(3903); + ((StorageBackendContext)_localctx).brokerName = identifier(); + } + } + + setState(3906); + match(ON); + setState(3907); + match(LOCATION); + setState(3908); + match(STRING_LITERAL); + setState(3910); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(3909); + ((StorageBackendContext)_localctx).properties = propertyClause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PasswordOptionContext extends ParserRuleContext { + public Token historyDefault; + public Token historyValue; + public Token expireDefault; + public Token expireNever; + public Token expireValue; + public Token expireTimeUnit; + public Token reuseDefault; + public Token reuseValue; + public Token attemptsValue; + public Token lockUnbounded; + public Token lockValue; + public Token lockTimeUint; + public TerminalNode PASSWORD_HISTORY() { return getToken(DorisParser.PASSWORD_HISTORY, 0); } + public TerminalNode PASSWORD_EXPIRE() { return getToken(DorisParser.PASSWORD_EXPIRE, 0); } + public TerminalNode PASSWORD_REUSE() { return getToken(DorisParser.PASSWORD_REUSE, 0); } + public List INTERVAL() { return getTokens(DorisParser.INTERVAL); } + public TerminalNode INTERVAL(int i) { + return getToken(DorisParser.INTERVAL, i); + } + public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(DorisParser.FAILED_LOGIN_ATTEMPTS, 0); } + public TerminalNode PASSWORD_LOCK_TIME() { return getToken(DorisParser.PASSWORD_LOCK_TIME, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public TerminalNode ACCOUNT_LOCK() { return getToken(DorisParser.ACCOUNT_LOCK, 0); } + public TerminalNode ACCOUNT_UNLOCK() { return getToken(DorisParser.ACCOUNT_UNLOCK, 0); } + public List DAY() { return getTokens(DorisParser.DAY); } + public TerminalNode DAY(int i) { + return getToken(DorisParser.DAY, i); + } + public List DEFAULT() { return getTokens(DorisParser.DEFAULT); } + public TerminalNode DEFAULT(int i) { + return getToken(DorisParser.DEFAULT, i); + } + public TerminalNode NEVER() { return getToken(DorisParser.NEVER, 0); } + public TerminalNode UNBOUNDED() { return getToken(DorisParser.UNBOUNDED, 0); } + public List HOUR() { return getTokens(DorisParser.HOUR); } + public TerminalNode HOUR(int i) { + return getToken(DorisParser.HOUR, i); + } + public List SECOND() { return getTokens(DorisParser.SECOND); } + public TerminalNode SECOND(int i) { + return getToken(DorisParser.SECOND, i); + } + public PasswordOptionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_passwordOption; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPasswordOption(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPasswordOption(this); + } + } + + public final PasswordOptionContext passwordOption() throws RecognitionException { + PasswordOptionContext _localctx = new PasswordOptionContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_passwordOption); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(3917); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PASSWORD_HISTORY) { + { + setState(3912); + match(PASSWORD_HISTORY); + setState(3915); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DEFAULT: + { + setState(3913); + ((PasswordOptionContext)_localctx).historyDefault = match(DEFAULT); + } + break; + case INTEGER_VALUE: + { + setState(3914); + ((PasswordOptionContext)_localctx).historyValue = match(INTEGER_VALUE); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + setState(3927); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PASSWORD_EXPIRE) { + { + setState(3919); + match(PASSWORD_EXPIRE); + setState(3925); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DEFAULT: + { + setState(3920); + ((PasswordOptionContext)_localctx).expireDefault = match(DEFAULT); + } + break; + case NEVER: + { + setState(3921); + ((PasswordOptionContext)_localctx).expireNever = match(NEVER); + } + break; + case INTERVAL: + { + setState(3922); + match(INTERVAL); + setState(3923); + ((PasswordOptionContext)_localctx).expireValue = match(INTEGER_VALUE); + setState(3924); + ((PasswordOptionContext)_localctx).expireTimeUnit = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==DAY || _la==HOUR || _la==SECOND) ) { + ((PasswordOptionContext)_localctx).expireTimeUnit = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + setState(3936); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PASSWORD_REUSE) { + { + setState(3929); + match(PASSWORD_REUSE); + setState(3930); + match(INTERVAL); + setState(3934); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DEFAULT: + { + setState(3931); + ((PasswordOptionContext)_localctx).reuseDefault = match(DEFAULT); + } + break; + case INTEGER_VALUE: + { + setState(3932); + ((PasswordOptionContext)_localctx).reuseValue = match(INTEGER_VALUE); + setState(3933); + match(DAY); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + setState(3940); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FAILED_LOGIN_ATTEMPTS) { + { + setState(3938); + match(FAILED_LOGIN_ATTEMPTS); + setState(3939); + ((PasswordOptionContext)_localctx).attemptsValue = match(INTEGER_VALUE); + } + } + + setState(3948); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PASSWORD_LOCK_TIME) { + { + setState(3942); + match(PASSWORD_LOCK_TIME); + setState(3946); + _errHandler.sync(this); + switch (_input.LA(1)) { + case UNBOUNDED: + { + setState(3943); + ((PasswordOptionContext)_localctx).lockUnbounded = match(UNBOUNDED); + } + break; + case INTEGER_VALUE: + { + setState(3944); + ((PasswordOptionContext)_localctx).lockValue = match(INTEGER_VALUE); + setState(3945); + ((PasswordOptionContext)_localctx).lockTimeUint = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==DAY || _la==HOUR || _la==SECOND) ) { + ((PasswordOptionContext)_localctx).lockTimeUint = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + setState(3951); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ACCOUNT_LOCK || _la==ACCOUNT_UNLOCK) { + { + setState(3950); + _la = _input.LA(1); + if ( !(_la==ACCOUNT_LOCK || _la==ACCOUNT_UNLOCK) ) { + _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 FunctionArgumentsContext extends ParserRuleContext { + public TerminalNode DOTDOTDOT() { return getToken(DorisParser.DOTDOTDOT, 0); } + public DataTypeListContext dataTypeList() { + return getRuleContext(DataTypeListContext.class,0); + } + public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } + public FunctionArgumentsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionArguments; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionArguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionArguments(this); + } + } + + public final FunctionArgumentsContext functionArguments() throws RecognitionException { + FunctionArgumentsContext _localctx = new FunctionArgumentsContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_functionArguments); + try { + setState(3959); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,553,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(3953); + match(DOTDOTDOT); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(3954); + dataTypeList(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(3955); + dataTypeList(); + setState(3956); + match(COMMA); + setState(3957); + match(DOTDOTDOT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DataTypeListContext extends ParserRuleContext { + public List dataType() { + return getRuleContexts(DataTypeContext.class); + } + public DataTypeContext dataType(int i) { + return getRuleContext(DataTypeContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public DataTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dataTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDataTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDataTypeList(this); + } + } + + public final DataTypeListContext dataTypeList() throws RecognitionException { + DataTypeListContext _localctx = new DataTypeListContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_dataTypeList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(3961); + dataType(); + setState(3966); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,554,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(3962); + match(COMMA); + setState(3963); + dataType(); + } + } + } + setState(3968); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,554,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedSetStatementContext extends ParserRuleContext { + public SupportedSetStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedSetStatement; } + + public SupportedSetStatementContext() { } + public void copyFrom(SupportedSetStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetTransactionContext extends SupportedSetStatementContext { + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } + public TransactionAccessModeContext transactionAccessMode() { + return getRuleContext(TransactionAccessModeContext.class,0); + } + public IsolationLevelContext isolationLevel() { + return getRuleContext(IsolationLevelContext.class,0); + } + public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public SetTransactionContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetTransaction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetTransaction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetUserPropertiesContext extends SupportedSetStatementContext { + public IdentifierOrTextContext user; + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode PROPERTY() { return getToken(DorisParser.PROPERTY, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public SetUserPropertiesContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetUserProperties(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetUserProperties(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetDefaultStorageVaultContext extends SupportedSetStatementContext { + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public SetDefaultStorageVaultContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetDefaultStorageVault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetDefaultStorageVault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetOptionsContext extends SupportedSetStatementContext { + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public List optionWithType() { + return getRuleContexts(OptionWithTypeContext.class); + } + public OptionWithTypeContext optionWithType(int i) { + return getRuleContext(OptionWithTypeContext.class,i); + } + public List optionWithoutType() { + return getRuleContexts(OptionWithoutTypeContext.class); + } + public OptionWithoutTypeContext optionWithoutType(int i) { + return getRuleContext(OptionWithoutTypeContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public SetOptionsContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetOptions(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetOptions(this); + } + } + + public final SupportedSetStatementContext supportedSetStatement() throws RecognitionException { + SupportedSetStatementContext _localctx = new SupportedSetStatementContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_supportedSetStatement); + int _la; + try { + setState(4015); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,561,_ctx) ) { + case 1: + _localctx = new SetOptionsContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(3969); + match(SET); + setState(3972); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,555,_ctx) ) { + case 1: + { + setState(3970); + optionWithType(); + } + break; + case 2: + { + setState(3971); + optionWithoutType(); + } + break; + } + setState(3981); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(3974); + match(COMMA); + setState(3977); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) { + case 1: + { + setState(3975); + optionWithType(); + } + break; + case 2: + { + setState(3976); + optionWithoutType(); + } + break; + } + } + } + setState(3983); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case 2: + _localctx = new SetDefaultStorageVaultContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(3984); + match(SET); + setState(3985); + identifier(); + setState(3986); + match(AS); + setState(3987); + match(DEFAULT); + setState(3988); + match(STORAGE); + setState(3989); + match(VAULT); + } + break; + case 3: + _localctx = new SetUserPropertiesContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(3991); + match(SET); + setState(3992); + match(PROPERTY); + setState(3995); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(3993); + match(FOR); + setState(3994); + ((SetUserPropertiesContext)_localctx).user = identifierOrText(); + } + } + + setState(3997); + propertyItemList(); + } + break; + case 4: + _localctx = new SetTransactionContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(3998); + match(SET); + setState(4000); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(3999); + statementScope(); + } + } + + setState(4002); + match(TRANSACTION); + setState(4013); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,560,_ctx) ) { + case 1: + { + setState(4003); + transactionAccessMode(); + } + break; + case 2: + { + setState(4004); + isolationLevel(); + } + break; + case 3: + { + setState(4005); + transactionAccessMode(); + setState(4006); + match(COMMA); + setState(4007); + isolationLevel(); + } + break; + case 4: + { + setState(4009); + isolationLevel(); + setState(4010); + match(COMMA); + setState(4011); + transactionAccessMode(); + } + break; + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class OptionWithTypeContext extends ParserRuleContext { + public OptionWithTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_optionWithType; } + + public OptionWithTypeContext() { } + public void copyFrom(OptionWithTypeContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetVariableWithTypeContext extends OptionWithTypeContext { + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public SetVariableWithTypeContext(OptionWithTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetVariableWithType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetVariableWithType(this); + } + } + + public final OptionWithTypeContext optionWithType() throws RecognitionException { + OptionWithTypeContext _localctx = new OptionWithTypeContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_optionWithType); + try { + _localctx = new SetVariableWithTypeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4017); + statementScope(); + setState(4018); + identifier(); + setState(4019); + match(EQ); + setState(4022); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_PAREN: + case LEFT_BRACKET: + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case ADD: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BINARY: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CASE: + case CAST: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATABASE: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXISTS: + case EXPIRED: + case EXTERNAL: + case EXTRACT: + case FAILED_LOGIN_ATTEMPTS: + case FALSE: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IF: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INTERVAL: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case KEY: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LEFT: + case LESS: + case LEVEL: + case LIKE: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NOT: + case NULL: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLACEHOLDER: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REGEXP: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RIGHT: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRIM: + case TRUE: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case PLUS: + case SUBTRACT: + case ASTERISK: + case TILDE: + case LOGICALNOT: + case HINT_START: + case HINT_END: + case COMMENT_START: + case ATSIGN: + case DOUBLEATSIGN: + case STRING_LITERAL: + case INTEGER_VALUE: + case EXPONENT_VALUE: + case DECIMAL_VALUE: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4020); + expression(); + } + break; + case DEFAULT: + { + setState(4021); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class OptionWithoutTypeContext extends ParserRuleContext { + public OptionWithoutTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_optionWithoutType; } + + public OptionWithoutTypeContext() { } + public void copyFrom(OptionWithoutTypeContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetNamesContext extends OptionWithoutTypeContext { + public TerminalNode NAMES() { return getToken(DorisParser.NAMES, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SetNamesContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetNames(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetNames(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetCharsetContext extends OptionWithoutTypeContext { + public IdentifierOrTextContext charsetName; + public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode CHARSET() { return getToken(DorisParser.CHARSET, 0); } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public SetCharsetContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetCharset(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetCharset(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetCollateContext extends OptionWithoutTypeContext { + public IdentifierOrTextContext charsetName; + public IdentifierOrTextContext collateName; + public TerminalNode NAMES() { return getToken(DorisParser.NAMES, 0); } + public List DEFAULT() { return getTokens(DorisParser.DEFAULT); } + public TerminalNode DEFAULT(int i) { + return getToken(DorisParser.DEFAULT, i); + } + public List identifierOrText() { + return getRuleContexts(IdentifierOrTextContext.class); + } + public IdentifierOrTextContext identifierOrText(int i) { + return getRuleContext(IdentifierOrTextContext.class,i); + } + public TerminalNode COLLATE() { return getToken(DorisParser.COLLATE, 0); } + public SetCollateContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetCollate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetCollate(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetPasswordContext extends OptionWithoutTypeContext { + public Token pwd; + public Token isPlain; + public List PASSWORD() { return getTokens(DorisParser.PASSWORD); } + public TerminalNode PASSWORD(int i) { + return getToken(DorisParser.PASSWORD, i); + } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public SetPasswordContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetPassword(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetPassword(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetVariableWithoutTypeContext extends OptionWithoutTypeContext { + public VariableContext variable() { + return getRuleContext(VariableContext.class,0); + } + public SetVariableWithoutTypeContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetVariableWithoutType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetVariableWithoutType(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetLdapAdminPasswordContext extends OptionWithoutTypeContext { + public Token pwd; + public TerminalNode LDAP_ADMIN_PASSWORD() { return getToken(DorisParser.LDAP_ADMIN_PASSWORD, 0); } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public SetLdapAdminPasswordContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetLdapAdminPassword(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetLdapAdminPassword(this); + } + } + + public final OptionWithoutTypeContext optionWithoutType() throws RecognitionException { + OptionWithoutTypeContext _localctx = new OptionWithoutTypeContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_optionWithoutType); + int _la; + try { + setState(4069); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,570,_ctx) ) { + case 1: + _localctx = new SetNamesContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4024); + match(NAMES); + setState(4025); + match(EQ); + setState(4026); + expression(); + } + break; + case 2: + _localctx = new SetCharsetContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4030); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CHAR: + { + setState(4027); + match(CHAR); + setState(4028); + match(SET); + } + break; + case CHARSET: + { + setState(4029); + match(CHARSET); + } + break; + default: + throw new NoViableAltException(this); + } + setState(4034); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4032); + ((SetCharsetContext)_localctx).charsetName = identifierOrText(); + } + break; + case DEFAULT: + { + setState(4033); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 3: + _localctx = new SetCollateContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(4036); + match(NAMES); + setState(4039); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4037); + ((SetCollateContext)_localctx).charsetName = identifierOrText(); + } + break; + case DEFAULT: + { + setState(4038); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + setState(4044); + _errHandler.sync(this); + switch (_input.LA(1)) { + case COLLATE: + { + setState(4041); + match(COLLATE); + setState(4042); + ((SetCollateContext)_localctx).collateName = identifierOrText(); + } + break; + case DEFAULT: + { + setState(4043); + match(DEFAULT); + } + break; + case EOF: + case SEMICOLON: + case COMMA: + break; + default: + break; + } + } + break; + case 4: + _localctx = new SetPasswordContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(4046); + match(PASSWORD); + setState(4049); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(4047); + match(FOR); + setState(4048); + userIdentify(); + } + } + + setState(4051); + match(EQ); + setState(4057); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING_LITERAL: + { + setState(4052); + ((SetPasswordContext)_localctx).pwd = match(STRING_LITERAL); + } + break; + case PASSWORD: + { + { + setState(4053); + ((SetPasswordContext)_localctx).isPlain = match(PASSWORD); + setState(4054); + match(LEFT_PAREN); + setState(4055); + ((SetPasswordContext)_localctx).pwd = match(STRING_LITERAL); + setState(4056); + match(RIGHT_PAREN); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 5: + _localctx = new SetLdapAdminPasswordContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(4059); + match(LDAP_ADMIN_PASSWORD); + setState(4060); + match(EQ); + setState(4066); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING_LITERAL: + { + setState(4061); + ((SetLdapAdminPasswordContext)_localctx).pwd = match(STRING_LITERAL); + } + break; + case PASSWORD: + { + { + setState(4062); + match(PASSWORD); + setState(4063); + match(LEFT_PAREN); + setState(4064); + ((SetLdapAdminPasswordContext)_localctx).pwd = match(STRING_LITERAL); + setState(4065); + match(RIGHT_PAREN); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 6: + _localctx = new SetVariableWithoutTypeContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(4068); + variable(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariableContext extends ParserRuleContext { + public VariableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variable; } + + public VariableContext() { } + public void copyFrom(VariableContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetUserVariableContext extends VariableContext { + public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SetUserVariableContext(VariableContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetUserVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetUserVariable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetSystemVariableContext extends VariableContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public TerminalNode DOUBLEATSIGN() { return getToken(DorisParser.DOUBLEATSIGN, 0); } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public SetSystemVariableContext(VariableContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetSystemVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetSystemVariable(this); + } + } + + public final VariableContext variable() throws RecognitionException { + VariableContext _localctx = new VariableContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_variable); + int _la; + try { + setState(4090); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case DOUBLEATSIGN: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + _localctx = new SetSystemVariableContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4077); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DOUBLEATSIGN) { + { + setState(4071); + match(DOUBLEATSIGN); + setState(4075); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,571,_ctx) ) { + case 1: + { + setState(4072); + statementScope(); + setState(4073); + match(DOT); + } + break; + } + } + } + + setState(4079); + identifier(); + setState(4080); + match(EQ); + setState(4083); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_PAREN: + case LEFT_BRACKET: + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case ADD: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BINARY: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CASE: + case CAST: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATABASE: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXISTS: + case EXPIRED: + case EXTERNAL: + case EXTRACT: + case FAILED_LOGIN_ATTEMPTS: + case FALSE: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IF: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INTERVAL: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case KEY: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LEFT: + case LESS: + case LEVEL: + case LIKE: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NOT: + case NULL: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLACEHOLDER: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REGEXP: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RIGHT: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRIM: + case TRUE: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case PLUS: + case SUBTRACT: + case ASTERISK: + case TILDE: + case LOGICALNOT: + case HINT_START: + case HINT_END: + case COMMENT_START: + case ATSIGN: + case DOUBLEATSIGN: + case STRING_LITERAL: + case INTEGER_VALUE: + case EXPONENT_VALUE: + case DECIMAL_VALUE: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4081); + expression(); + } + break; + case DEFAULT: + { + setState(4082); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case ATSIGN: + _localctx = new SetUserVariableContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4085); + match(ATSIGN); + setState(4086); + identifier(); + setState(4087); + match(EQ); + setState(4088); + expression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TransactionAccessModeContext extends ParserRuleContext { + public TerminalNode READ() { return getToken(DorisParser.READ, 0); } + public TerminalNode ONLY() { return getToken(DorisParser.ONLY, 0); } + public TerminalNode WRITE() { return getToken(DorisParser.WRITE, 0); } + public TransactionAccessModeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_transactionAccessMode; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTransactionAccessMode(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTransactionAccessMode(this); + } + } + + public final TransactionAccessModeContext transactionAccessMode() throws RecognitionException { + TransactionAccessModeContext _localctx = new TransactionAccessModeContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_transactionAccessMode); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4092); + match(READ); + setState(4093); + _la = _input.LA(1); + if ( !(_la==ONLY || _la==WRITE) ) { + _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 IsolationLevelContext extends ParserRuleContext { + public TerminalNode ISOLATION() { return getToken(DorisParser.ISOLATION, 0); } + public TerminalNode LEVEL() { return getToken(DorisParser.LEVEL, 0); } + public TerminalNode READ() { return getToken(DorisParser.READ, 0); } + public TerminalNode UNCOMMITTED() { return getToken(DorisParser.UNCOMMITTED, 0); } + public TerminalNode COMMITTED() { return getToken(DorisParser.COMMITTED, 0); } + public TerminalNode REPEATABLE() { return getToken(DorisParser.REPEATABLE, 0); } + public TerminalNode SERIALIZABLE() { return getToken(DorisParser.SERIALIZABLE, 0); } + public IsolationLevelContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_isolationLevel; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIsolationLevel(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIsolationLevel(this); + } + } + + public final IsolationLevelContext isolationLevel() throws RecognitionException { + IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_isolationLevel); + try { + enterOuterAlt(_localctx, 1); + { + setState(4095); + match(ISOLATION); + setState(4096); + match(LEVEL); + setState(4104); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,575,_ctx) ) { + case 1: + { + { + setState(4097); + match(READ); + setState(4098); + match(UNCOMMITTED); + } + } + break; + case 2: + { + { + setState(4099); + match(READ); + setState(4100); + match(COMMITTED); + } + } + break; + case 3: + { + { + setState(4101); + match(REPEATABLE); + setState(4102); + match(READ); + } + } + break; + case 4: + { + { + setState(4103); + match(SERIALIZABLE); + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedUnsetStatementContext extends ParserRuleContext { + public TerminalNode UNSET() { return getToken(DorisParser.UNSET, 0); } + public TerminalNode VARIABLE() { return getToken(DorisParser.VARIABLE, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public StatementScopeContext statementScope() { + return getRuleContext(StatementScopeContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public SupportedUnsetStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedUnsetStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedUnsetStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedUnsetStatement(this); + } + } + + public final SupportedUnsetStatementContext supportedUnsetStatement() throws RecognitionException { + SupportedUnsetStatementContext _localctx = new SupportedUnsetStatementContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_supportedUnsetStatement); + int _la; + try { + setState(4119); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,578,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4106); + match(UNSET); + setState(4108); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { + { + setState(4107); + statementScope(); + } + } + + setState(4110); + match(VARIABLE); + setState(4113); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ALL: + { + setState(4111); + match(ALL); + } + break; + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4112); + identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4115); + match(UNSET); + setState(4116); + match(DEFAULT); + setState(4117); + match(STORAGE); + setState(4118); + match(VAULT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SupportedUseStatementContext extends ParserRuleContext { + public SupportedUseStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedUseStatement; } + + public SupportedUseStatementContext() { } + public void copyFrom(SupportedUseStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UseDatabaseContext extends SupportedUseStatementContext { + public IdentifierContext catalog; + public IdentifierContext database; + public TerminalNode USE() { return getToken(DorisParser.USE, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public UseDatabaseContext(SupportedUseStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUseDatabase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUseDatabase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SwitchCatalogContext extends SupportedUseStatementContext { + public IdentifierContext catalog; + public TerminalNode SWITCH() { return getToken(DorisParser.SWITCH, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public SwitchCatalogContext(SupportedUseStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSwitchCatalog(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSwitchCatalog(this); + } + } + + public final SupportedUseStatementContext supportedUseStatement() throws RecognitionException { + SupportedUseStatementContext _localctx = new SupportedUseStatementContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_supportedUseStatement); + try { + setState(4130); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SWITCH: + _localctx = new SwitchCatalogContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4121); + match(SWITCH); + setState(4122); + ((SwitchCatalogContext)_localctx).catalog = identifier(); + } + break; + case USE: + _localctx = new UseDatabaseContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4123); + match(USE); + setState(4127); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,579,_ctx) ) { + case 1: + { + setState(4124); + ((UseDatabaseContext)_localctx).catalog = identifier(); + setState(4125); + match(DOT); + } + break; + } + setState(4129); + ((UseDatabaseContext)_localctx).database = identifier(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedUseStatementContext extends ParserRuleContext { + public UnsupportedUseStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedUseStatement; } + + public UnsupportedUseStatementContext() { } + public void copyFrom(UnsupportedUseStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UseCloudClusterContext extends UnsupportedUseStatementContext { + public IdentifierContext catalog; + public IdentifierContext database; + public IdentifierContext cluster; + public TerminalNode USE() { return getToken(DorisParser.USE, 0); } + public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public UseCloudClusterContext(UnsupportedUseStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUseCloudCluster(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUseCloudCluster(this); + } + } + + public final UnsupportedUseStatementContext unsupportedUseStatement() throws RecognitionException { + UnsupportedUseStatementContext _localctx = new UnsupportedUseStatementContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_unsupportedUseStatement); + int _la; + try { + _localctx = new UseCloudClusterContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4132); + match(USE); + setState(4139); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { + { + setState(4136); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,581,_ctx) ) { + case 1: + { + setState(4133); + ((UseCloudClusterContext)_localctx).catalog = identifier(); + setState(4134); + match(DOT); + } + break; + } + setState(4138); + ((UseCloudClusterContext)_localctx).database = identifier(); + } + } + + setState(4141); + match(ATSIGN); + setState(4142); + ((UseCloudClusterContext)_localctx).cluster = identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedDmlStatementContext extends ParserRuleContext { + public UnsupportedDmlStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedDmlStatement; } + + public UnsupportedDmlStatementContext() { } + public void copyFrom(UnsupportedDmlStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CopyIntoContext extends UnsupportedDmlStatementContext { + public MultipartIdentifierContext name; + public IdentifierListContext columns; + public PropertyClauseContext properties; + public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public List FROM() { return getTokens(DorisParser.FROM); } + public TerminalNode FROM(int i) { + return getToken(DorisParser.FROM, i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public StageAndPatternContext stageAndPattern() { + return getRuleContext(StageAndPatternContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode SELECT() { return getToken(DorisParser.SELECT, 0); } + public SelectColumnClauseContext selectColumnClause() { + return getRuleContext(SelectColumnClauseContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public CopyIntoContext(UnsupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCopyInto(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCopyInto(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TruncateTableContext extends UnsupportedDmlStatementContext { + public TerminalNode TRUNCATE() { return getToken(DorisParser.TRUNCATE, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public SpecifiedPartitionContext specifiedPartition() { + return getRuleContext(SpecifiedPartitionContext.class,0); + } + public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } + public TruncateTableContext(UnsupportedDmlStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTruncateTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTruncateTable(this); + } + } + + public final UnsupportedDmlStatementContext unsupportedDmlStatement() throws RecognitionException { + UnsupportedDmlStatementContext _localctx = new UnsupportedDmlStatementContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_unsupportedDmlStatement); + int _la; + try { + setState(4176); + _errHandler.sync(this); + switch (_input.LA(1)) { + case TRUNCATE: + _localctx = new TruncateTableContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4144); + match(TRUNCATE); + setState(4145); + match(TABLE); + setState(4146); + multipartIdentifier(); + setState(4148); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(4147); + specifiedPartition(); + } + } + + setState(4151); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORCE) { + { + setState(4150); + match(FORCE); + } + } + + } + break; + case COPY: + _localctx = new CopyIntoContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4153); + match(COPY); + setState(4154); + match(INTO); + setState(4155); + ((CopyIntoContext)_localctx).name = multipartIdentifier(); + setState(4157); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4156); + ((CopyIntoContext)_localctx).columns = identifierList(); + } + } + + setState(4159); + match(FROM); + setState(4171); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ATSIGN: + { + setState(4160); + stageAndPattern(); + } + break; + case LEFT_PAREN: + { + { + setState(4161); + match(LEFT_PAREN); + setState(4162); + match(SELECT); + setState(4163); + selectColumnClause(); + setState(4164); + match(FROM); + setState(4165); + stageAndPattern(); + setState(4167); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(4166); + whereClause(); + } + } + + setState(4169); + match(RIGHT_PAREN); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(4174); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(4173); + ((CopyIntoContext)_localctx).properties = propertyClause(); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StageAndPatternContext extends ParserRuleContext { + public IdentifierContext stage; + public Token pattern; + public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } + public TerminalNode TILDE() { return getToken(DorisParser.TILDE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public StageAndPatternContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_stageAndPattern; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStageAndPattern(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStageAndPattern(this); + } + } + + public final StageAndPatternContext stageAndPattern() throws RecognitionException { + StageAndPatternContext _localctx = new StageAndPatternContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_stageAndPattern); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4178); + match(ATSIGN); + setState(4181); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4179); + ((StageAndPatternContext)_localctx).stage = identifier(); + } + break; + case TILDE: + { + setState(4180); + match(TILDE); + } + break; + default: + throw new NoViableAltException(this); + } + setState(4186); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4183); + match(LEFT_PAREN); + setState(4184); + ((StageAndPatternContext)_localctx).pattern = match(STRING_LITERAL); + setState(4185); + match(RIGHT_PAREN); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnsupportedKillStatementContext extends ParserRuleContext { + public UnsupportedKillStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unsupportedKillStatement; } + + public UnsupportedKillStatementContext() { } + public void copyFrom(UnsupportedKillStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class KillQueryContext extends UnsupportedKillStatementContext { + public TerminalNode KILL() { return getToken(DorisParser.KILL, 0); } + public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public KillQueryContext(UnsupportedKillStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterKillQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitKillQuery(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class KillConnectionContext extends UnsupportedKillStatementContext { + public TerminalNode KILL() { return getToken(DorisParser.KILL, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode CONNECTION() { return getToken(DorisParser.CONNECTION, 0); } + public KillConnectionContext(UnsupportedKillStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterKillConnection(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitKillConnection(this); + } + } + + public final UnsupportedKillStatementContext unsupportedKillStatement() throws RecognitionException { + UnsupportedKillStatementContext _localctx = new UnsupportedKillStatementContext(_ctx, getState()); + enterRule(_localctx, 154, RULE_unsupportedKillStatement); + int _la; + try { + setState(4196); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,593,_ctx) ) { + case 1: + _localctx = new KillConnectionContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4188); + match(KILL); + setState(4190); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==CONNECTION) { + { + setState(4189); + match(CONNECTION); + } + } + + setState(4192); + match(INTEGER_VALUE); + } + break; + case 2: + _localctx = new KillQueryContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4193); + match(KILL); + setState(4194); + match(QUERY); + setState(4195); + _la = _input.LA(1); + if ( !(_la==STRING_LITERAL || _la==INTEGER_VALUE) ) { + _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 SupportedDescribeStatementContext extends ParserRuleContext { + public SupportedDescribeStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_supportedDescribeStatement; } + + public SupportedDescribeStatementContext() { } + public void copyFrom(SupportedDescribeStatementContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DescribeTableValuedFunctionContext extends SupportedDescribeStatementContext { + public IdentifierContext tvfName; + public PropertyItemListContext properties; + public ExplainCommandContext explainCommand() { + return getRuleContext(ExplainCommandContext.class,0); + } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public DescribeTableValuedFunctionContext(SupportedDescribeStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDescribeTableValuedFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDescribeTableValuedFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DescribeTableContext extends SupportedDescribeStatementContext { + public ExplainCommandContext explainCommand() { + return getRuleContext(ExplainCommandContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public SpecifiedPartitionContext specifiedPartition() { + return getRuleContext(SpecifiedPartitionContext.class,0); + } + public DescribeTableContext(SupportedDescribeStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDescribeTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDescribeTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DescribeTableAllContext extends SupportedDescribeStatementContext { + public ExplainCommandContext explainCommand() { + return getRuleContext(ExplainCommandContext.class,0); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public DescribeTableAllContext(SupportedDescribeStatementContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDescribeTableAll(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDescribeTableAll(this); + } + } + + public final SupportedDescribeStatementContext supportedDescribeStatement() throws RecognitionException { + SupportedDescribeStatementContext _localctx = new SupportedDescribeStatementContext(_ctx, getState()); + enterRule(_localctx, 156, RULE_supportedDescribeStatement); + int _la; + try { + setState(4217); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) { + case 1: + _localctx = new DescribeTableValuedFunctionContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4198); + explainCommand(); + setState(4199); + match(FUNCTION); + setState(4200); + ((DescribeTableValuedFunctionContext)_localctx).tvfName = identifier(); + setState(4201); + match(LEFT_PAREN); + setState(4203); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576320L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { + { + setState(4202); + ((DescribeTableValuedFunctionContext)_localctx).properties = propertyItemList(); + } + } + + setState(4205); + match(RIGHT_PAREN); + setState(4206); + tableAlias(); + } + break; + case 2: + _localctx = new DescribeTableAllContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4208); + explainCommand(); + setState(4209); + multipartIdentifier(); + setState(4210); + match(ALL); + } + break; + case 3: + _localctx = new DescribeTableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(4212); + explainCommand(); + setState(4213); + multipartIdentifier(); + setState(4215); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(4214); + specifiedPartition(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstraintContext extends ParserRuleContext { + public IdentifierListContext slots; + public MultipartIdentifierContext referenceTable; + public IdentifierListContext referencedSlots; + public TerminalNode PRIMARY() { return getToken(DorisParser.PRIMARY, 0); } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public TerminalNode UNIQUE() { return getToken(DorisParser.UNIQUE, 0); } + public TerminalNode FOREIGN() { return getToken(DorisParser.FOREIGN, 0); } + public TerminalNode REFERENCES() { return getToken(DorisParser.REFERENCES, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ConstraintContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constraint; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConstraint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConstraint(this); + } + } + + public final ConstraintContext constraint() throws RecognitionException { + ConstraintContext _localctx = new ConstraintContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_constraint); + try { + setState(4231); + _errHandler.sync(this); + switch (_input.LA(1)) { + case PRIMARY: + enterOuterAlt(_localctx, 1); + { + setState(4219); + match(PRIMARY); + setState(4220); + match(KEY); + setState(4221); + ((ConstraintContext)_localctx).slots = identifierList(); + } + break; + case UNIQUE: + enterOuterAlt(_localctx, 2); + { + setState(4222); + match(UNIQUE); + setState(4223); + ((ConstraintContext)_localctx).slots = identifierList(); + } + break; + case FOREIGN: + enterOuterAlt(_localctx, 3); + { + setState(4224); + match(FOREIGN); + setState(4225); + match(KEY); + setState(4226); + ((ConstraintContext)_localctx).slots = identifierList(); + setState(4227); + match(REFERENCES); + setState(4228); + ((ConstraintContext)_localctx).referenceTable = multipartIdentifier(); + setState(4229); + ((ConstraintContext)_localctx).referencedSlots = identifierList(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionSpecContext extends ParserRuleContext { + public IdentifierListContext partitions; + public ErrorCapturingIdentifierContext partition; + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public ErrorCapturingIdentifierContext errorCapturingIdentifier() { + return getRuleContext(ErrorCapturingIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PartitionSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionSpec(this); + } + } + + public final PartitionSpecContext partitionSpec() throws RecognitionException { + PartitionSpecContext _localctx = new PartitionSpecContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_partitionSpec); + int _la; + try { + setState(4247); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,600,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4234); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(4233); + match(TEMPORARY); + } + } + + setState(4236); + _la = _input.LA(1); + if ( !(_la==PARTITION || _la==PARTITIONS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(4237); + ((PartitionSpecContext)_localctx).partitions = identifierList(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4239); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(4238); + match(TEMPORARY); + } + } + + setState(4241); + match(PARTITION); + setState(4242); + ((PartitionSpecContext)_localctx).partition = errorCapturingIdentifier(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(4243); + _la = _input.LA(1); + if ( !(_la==PARTITION || _la==PARTITIONS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(4244); + match(LEFT_PAREN); + setState(4245); + match(ASTERISK); + setState(4246); + match(RIGHT_PAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionTableContext extends ParserRuleContext { + public Token autoPartition; + public IdentityOrFunctionListContext partitionList; + public PartitionsDefContext partitions; + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public IdentityOrFunctionListContext identityOrFunctionList() { + return getRuleContext(IdentityOrFunctionListContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public TerminalNode RANGE() { return getToken(DorisParser.RANGE, 0); } + public TerminalNode LIST() { return getToken(DorisParser.LIST, 0); } + public PartitionsDefContext partitionsDef() { + return getRuleContext(PartitionsDefContext.class,0); + } + public PartitionTableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionTable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionTable(this); + } + } + + public final PartitionTableContext partitionTable() throws RecognitionException { + PartitionTableContext _localctx = new PartitionTableContext(_ctx, getState()); + enterRule(_localctx, 162, RULE_partitionTable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + { + setState(4250); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AUTO) { + { + setState(4249); + ((PartitionTableContext)_localctx).autoPartition = match(AUTO); + } + } + + setState(4252); + match(PARTITION); + setState(4253); + match(BY); + setState(4255); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LIST || _la==RANGE) { + { + setState(4254); + _la = _input.LA(1); + if ( !(_la==LIST || _la==RANGE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(4257); + ((PartitionTableContext)_localctx).partitionList = identityOrFunctionList(); + { + setState(4258); + match(LEFT_PAREN); + setState(4260); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FROM || _la==PARTITION) { + { + setState(4259); + ((PartitionTableContext)_localctx).partitions = partitionsDef(); + } + } + + setState(4262); + match(RIGHT_PAREN); + } + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentityOrFunctionListContext extends ParserRuleContext { + public IdentityOrFunctionContext identityOrFunction; + public List partitions = new ArrayList(); + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public List identityOrFunction() { + return getRuleContexts(IdentityOrFunctionContext.class); + } + public IdentityOrFunctionContext identityOrFunction(int i) { + return getRuleContext(IdentityOrFunctionContext.class,i); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public IdentityOrFunctionListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identityOrFunctionList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentityOrFunctionList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentityOrFunctionList(this); + } + } + + public final IdentityOrFunctionListContext identityOrFunctionList() throws RecognitionException { + IdentityOrFunctionListContext _localctx = new IdentityOrFunctionListContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_identityOrFunctionList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4264); + match(LEFT_PAREN); + setState(4265); + identityOrFunction(); + setState(4270); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4266); + match(COMMA); + setState(4267); + ((IdentityOrFunctionListContext)_localctx).identityOrFunction = identityOrFunction(); + ((IdentityOrFunctionListContext)_localctx).partitions.add(((IdentityOrFunctionListContext)_localctx).identityOrFunction); + } + } + setState(4272); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4273); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentityOrFunctionContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FunctionCallExpressionContext functionCallExpression() { + return getRuleContext(FunctionCallExpressionContext.class,0); + } + public IdentityOrFunctionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identityOrFunction; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentityOrFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentityOrFunction(this); + } + } + + public final IdentityOrFunctionContext identityOrFunction() throws RecognitionException { + IdentityOrFunctionContext _localctx = new IdentityOrFunctionContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_identityOrFunction); + try { + enterOuterAlt(_localctx, 1); + { + setState(4277); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,605,_ctx) ) { + case 1: + { + setState(4275); + identifier(); + } + break; + case 2: + { + setState(4276); + functionCallExpression(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DataDescContext extends ParserRuleContext { + public Token STRING_LITERAL; + public List filePaths = new ArrayList(); + public List filePath = new ArrayList(); + public IdentifierContext targetTableName; + public Token comma; + public Token separator; + public IdentifierOrTextContext format; + public IdentifierOrTextContext compressType; + public IdentifierListContext columns; + public ColFromPathContext columnsFromPath; + public ColMappingListContext columnMapping; + public PreFilterClauseContext preFilter; + public WhereClauseContext where; + public DeleteOnClauseContext deleteOn; + public SequenceColClauseContext sequenceColumn; + public IdentifierContext sourceTableName; + public IdentifierListContext partition; + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode INFILE() { return getToken(DorisParser.INFILE, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public List TABLE() { return getTokens(DorisParser.TABLE); } + public TerminalNode TABLE(int i) { + return getToken(DorisParser.TABLE, i); + } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public MergeTypeContext mergeType() { + return getRuleContext(MergeTypeContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PartitionSpecContext partitionSpec() { + return getRuleContext(PartitionSpecContext.class,0); + } + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public List TERMINATED() { return getTokens(DorisParser.TERMINATED); } + public TerminalNode TERMINATED(int i) { + return getToken(DorisParser.TERMINATED, i); + } + public List BY() { return getTokens(DorisParser.BY); } + public TerminalNode BY(int i) { + return getToken(DorisParser.BY, i); + } + public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } + public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } + public List AS() { return getTokens(DorisParser.AS); } + public TerminalNode AS(int i) { + return getToken(DorisParser.AS, i); + } + public TerminalNode COMPRESS_TYPE() { return getToken(DorisParser.COMPRESS_TYPE, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public List identifierOrText() { + return getRuleContexts(IdentifierOrTextContext.class); + } + public IdentifierOrTextContext identifierOrText(int i) { + return getRuleContext(IdentifierOrTextContext.class,i); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ColFromPathContext colFromPath() { + return getRuleContext(ColFromPathContext.class,0); + } + public ColMappingListContext colMappingList() { + return getRuleContext(ColMappingListContext.class,0); + } + public PreFilterClauseContext preFilterClause() { + return getRuleContext(PreFilterClauseContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public DeleteOnClauseContext deleteOnClause() { + return getRuleContext(DeleteOnClauseContext.class,0); + } + public SequenceColClauseContext sequenceColClause() { + return getRuleContext(SequenceColClauseContext.class,0); + } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public DataDescContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dataDesc; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDataDesc(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDataDesc(this); + } + } + + public final DataDescContext dataDesc() throws RecognitionException { + DataDescContext _localctx = new DataDescContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_dataDesc); + int _la; + try { + setState(4378); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,629,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4283); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==APPEND || _la==DELETE || _la==MERGE || _la==WITH) { + { + setState(4280); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(4279); + match(WITH); + } + } + + setState(4282); + mergeType(); + } + } + + setState(4285); + match(DATA); + setState(4286); + match(INFILE); + setState(4287); + match(LEFT_PAREN); + setState(4288); + ((DataDescContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DataDescContext)_localctx).filePaths.add(((DataDescContext)_localctx).STRING_LITERAL); + setState(4293); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4289); + match(COMMA); + setState(4290); + ((DataDescContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); + ((DataDescContext)_localctx).filePath.add(((DataDescContext)_localctx).STRING_LITERAL); + } + } + setState(4295); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4296); + match(RIGHT_PAREN); + setState(4297); + match(INTO); + setState(4298); + match(TABLE); + setState(4299); + ((DataDescContext)_localctx).targetTableName = identifier(); + setState(4301); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { + { + setState(4300); + partitionSpec(); + } + } + + setState(4307); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,610,_ctx) ) { + case 1: + { + setState(4303); + match(COLUMNS); + setState(4304); + match(TERMINATED); + setState(4305); + match(BY); + setState(4306); + ((DataDescContext)_localctx).comma = match(STRING_LITERAL); + } + break; + } + setState(4313); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LINES) { + { + setState(4309); + match(LINES); + setState(4310); + match(TERMINATED); + setState(4311); + match(BY); + setState(4312); + ((DataDescContext)_localctx).separator = match(STRING_LITERAL); + } + } + + setState(4318); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORMAT) { + { + setState(4315); + match(FORMAT); + setState(4316); + match(AS); + setState(4317); + ((DataDescContext)_localctx).format = identifierOrText(); + } + } + + setState(4323); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMPRESS_TYPE) { + { + setState(4320); + match(COMPRESS_TYPE); + setState(4321); + match(AS); + setState(4322); + ((DataDescContext)_localctx).compressType = identifierOrText(); + } + } + + setState(4326); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4325); + ((DataDescContext)_localctx).columns = identifierList(); + } + } + + setState(4329); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLUMNS) { + { + setState(4328); + ((DataDescContext)_localctx).columnsFromPath = colFromPath(); + } + } + + setState(4332); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SET) { + { + setState(4331); + ((DataDescContext)_localctx).columnMapping = colMappingList(); + } + } + + setState(4335); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PRECEDING) { + { + setState(4334); + ((DataDescContext)_localctx).preFilter = preFilterClause(); + } + } + + setState(4338); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(4337); + ((DataDescContext)_localctx).where = whereClause(); + } + } + + setState(4341); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DELETE) { + { + setState(4340); + ((DataDescContext)_localctx).deleteOn = deleteOnClause(); + } + } + + setState(4344); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(4343); + ((DataDescContext)_localctx).sequenceColumn = sequenceColClause(); + } + } + + setState(4347); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(4346); + propertyClause(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4353); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==APPEND || _la==DELETE || _la==MERGE || _la==WITH) { + { + setState(4350); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(4349); + match(WITH); + } + } + + setState(4352); + mergeType(); + } + } + + setState(4355); + match(DATA); + setState(4356); + match(FROM); + setState(4357); + match(TABLE); + setState(4358); + ((DataDescContext)_localctx).sourceTableName = identifier(); + setState(4359); + match(INTO); + setState(4360); + match(TABLE); + setState(4361); + ((DataDescContext)_localctx).targetTableName = identifier(); + setState(4364); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(4362); + match(PARTITION); + setState(4363); + ((DataDescContext)_localctx).partition = identifierList(); + } + } + + setState(4367); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SET) { + { + setState(4366); + ((DataDescContext)_localctx).columnMapping = colMappingList(); + } + } + + setState(4370); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WHERE) { + { + setState(4369); + ((DataDescContext)_localctx).where = whereClause(); + } + } + + setState(4373); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DELETE) { + { + setState(4372); + ((DataDescContext)_localctx).deleteOn = deleteOnClause(); + } + } + + setState(4376); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(4375); + propertyClause(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StatementScopeContext extends ParserRuleContext { + public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } + public TerminalNode SESSION() { return getToken(DorisParser.SESSION, 0); } + public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } + public StatementScopeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementScope; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStatementScope(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStatementScope(this); + } + } + + public final StatementScopeContext statementScope() throws RecognitionException { + StatementScopeContext _localctx = new StatementScopeContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_statementScope); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4380); + _la = _input.LA(1); + if ( !(_la==GLOBAL || _la==LOCAL || _la==SESSION) ) { + _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 BuildModeContext extends ParserRuleContext { + public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } + public TerminalNode IMMEDIATE() { return getToken(DorisParser.IMMEDIATE, 0); } + public TerminalNode DEFERRED() { return getToken(DorisParser.DEFERRED, 0); } + public BuildModeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_buildMode; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBuildMode(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBuildMode(this); + } + } + + public final BuildModeContext buildMode() throws RecognitionException { + BuildModeContext _localctx = new BuildModeContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_buildMode); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4382); + match(BUILD); + setState(4383); + _la = _input.LA(1); + if ( !(_la==DEFERRED || _la==IMMEDIATE) ) { + _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 RefreshTriggerContext extends ParserRuleContext { + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode MANUAL() { return getToken(DorisParser.MANUAL, 0); } + public TerminalNode SCHEDULE() { return getToken(DorisParser.SCHEDULE, 0); } + public RefreshScheduleContext refreshSchedule() { + return getRuleContext(RefreshScheduleContext.class,0); + } + public TerminalNode COMMIT() { return getToken(DorisParser.COMMIT, 0); } + public RefreshTriggerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_refreshTrigger; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshTrigger(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshTrigger(this); + } + } + + public final RefreshTriggerContext refreshTrigger() throws RecognitionException { + RefreshTriggerContext _localctx = new RefreshTriggerContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_refreshTrigger); + try { + setState(4392); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,630,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4385); + match(ON); + setState(4386); + match(MANUAL); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4387); + match(ON); + setState(4388); + match(SCHEDULE); + setState(4389); + refreshSchedule(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(4390); + match(ON); + setState(4391); + match(COMMIT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RefreshScheduleContext extends ParserRuleContext { + public IdentifierContext refreshUnit; + public TerminalNode EVERY() { return getToken(DorisParser.EVERY, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STARTS() { return getToken(DorisParser.STARTS, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public RefreshScheduleContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_refreshSchedule; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshSchedule(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshSchedule(this); + } + } + + public final RefreshScheduleContext refreshSchedule() throws RecognitionException { + RefreshScheduleContext _localctx = new RefreshScheduleContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_refreshSchedule); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4394); + match(EVERY); + setState(4395); + match(INTEGER_VALUE); + setState(4396); + ((RefreshScheduleContext)_localctx).refreshUnit = identifier(); + setState(4399); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STARTS) { + { + setState(4397); + match(STARTS); + setState(4398); + match(STRING_LITERAL); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RefreshMethodContext extends ParserRuleContext { + public TerminalNode COMPLETE() { return getToken(DorisParser.COMPLETE, 0); } + public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } + public RefreshMethodContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_refreshMethod; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshMethod(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshMethod(this); + } + } + + public final RefreshMethodContext refreshMethod() throws RecognitionException { + RefreshMethodContext _localctx = new RefreshMethodContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_refreshMethod); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4401); + _la = _input.LA(1); + if ( !(_la==AUTO || _la==COMPLETE) ) { + _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 MvPartitionContext extends ParserRuleContext { + public IdentifierContext partitionKey; + public FunctionCallExpressionContext partitionExpr; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FunctionCallExpressionContext functionCallExpression() { + return getRuleContext(FunctionCallExpressionContext.class,0); + } + public MvPartitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mvPartition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMvPartition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMvPartition(this); + } + } + + public final MvPartitionContext mvPartition() throws RecognitionException { + MvPartitionContext _localctx = new MvPartitionContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_mvPartition); + try { + setState(4405); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,632,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4403); + ((MvPartitionContext)_localctx).partitionKey = identifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4404); + ((MvPartitionContext)_localctx).partitionExpr = functionCallExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentifierOrTextContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public IdentifierOrTextContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierOrText; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierOrText(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierOrText(this); + } + } + + public final IdentifierOrTextContext identifierOrText() throws RecognitionException { + IdentifierOrTextContext _localctx = new IdentifierOrTextContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_identifierOrText); + try { + setState(4409); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(4407); + identifier(); + } + break; + case STRING_LITERAL: + enterOuterAlt(_localctx, 2); + { + setState(4408); + match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentifierOrTextOrAsteriskContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public IdentifierOrTextOrAsteriskContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierOrTextOrAsterisk; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierOrTextOrAsterisk(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierOrTextOrAsterisk(this); + } + } + + public final IdentifierOrTextOrAsteriskContext identifierOrTextOrAsterisk() throws RecognitionException { + IdentifierOrTextOrAsteriskContext _localctx = new IdentifierOrTextOrAsteriskContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_identifierOrTextOrAsterisk); + try { + setState(4414); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(4411); + identifier(); + } + break; + case STRING_LITERAL: + enterOuterAlt(_localctx, 2); + { + setState(4412); + match(STRING_LITERAL); + } + break; + case ASTERISK: + enterOuterAlt(_localctx, 3); + { + setState(4413); + match(ASTERISK); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MultipartIdentifierOrAsteriskContext extends ParserRuleContext { + public IdentifierOrAsteriskContext identifierOrAsterisk; + public List parts = new ArrayList(); + public List identifierOrAsterisk() { + return getRuleContexts(IdentifierOrAsteriskContext.class); + } + public IdentifierOrAsteriskContext identifierOrAsterisk(int i) { + return getRuleContext(IdentifierOrAsteriskContext.class,i); + } + public List DOT() { return getTokens(DorisParser.DOT); } + public TerminalNode DOT(int i) { + return getToken(DorisParser.DOT, i); + } + public MultipartIdentifierOrAsteriskContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multipartIdentifierOrAsterisk; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMultipartIdentifierOrAsterisk(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMultipartIdentifierOrAsterisk(this); + } + } + + public final MultipartIdentifierOrAsteriskContext multipartIdentifierOrAsterisk() throws RecognitionException { + MultipartIdentifierOrAsteriskContext _localctx = new MultipartIdentifierOrAsteriskContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_multipartIdentifierOrAsterisk); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4416); + ((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk = identifierOrAsterisk(); + ((MultipartIdentifierOrAsteriskContext)_localctx).parts.add(((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk); + setState(4421); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(4417); + match(DOT); + setState(4418); + ((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk = identifierOrAsterisk(); + ((MultipartIdentifierOrAsteriskContext)_localctx).parts.add(((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk); + } + } + setState(4423); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentifierOrAsteriskContext extends ParserRuleContext { + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public IdentifierOrAsteriskContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierOrAsterisk; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierOrAsterisk(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierOrAsterisk(this); + } + } + + public final IdentifierOrAsteriskContext identifierOrAsterisk() throws RecognitionException { + IdentifierOrAsteriskContext _localctx = new IdentifierOrAsteriskContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_identifierOrAsterisk); + try { + setState(4426); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(4424); + identifierOrText(); + } + break; + case ASTERISK: + enterOuterAlt(_localctx, 2); + { + setState(4425); + match(ASTERISK); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UserIdentifyContext extends ParserRuleContext { + public IdentifierOrTextContext user; + public IdentifierOrTextContext host; + public List identifierOrText() { + return getRuleContexts(IdentifierOrTextContext.class); + } + public IdentifierOrTextContext identifierOrText(int i) { + return getRuleContext(IdentifierOrTextContext.class,i); + } + public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public UserIdentifyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_userIdentify; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUserIdentify(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUserIdentify(this); + } + } + + public final UserIdentifyContext userIdentify() throws RecognitionException { + UserIdentifyContext _localctx = new UserIdentifyContext(_ctx, getState()); + enterRule(_localctx, 190, RULE_userIdentify); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4428); + ((UserIdentifyContext)_localctx).user = identifierOrText(); + setState(4437); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ATSIGN) { + { + setState(4429); + match(ATSIGN); + setState(4435); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case STRING_LITERAL: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4430); + ((UserIdentifyContext)_localctx).host = identifierOrText(); + } + break; + case LEFT_PAREN: + { + setState(4431); + match(LEFT_PAREN); + setState(4432); + ((UserIdentifyContext)_localctx).host = identifierOrText(); + setState(4433); + match(RIGHT_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class GrantUserIdentifyContext extends ParserRuleContext { + public UserIdentifyContext userIdentify() { + return getRuleContext(UserIdentifyContext.class,0); + } + public TerminalNode IDENTIFIED() { return getToken(DorisParser.IDENTIFIED, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } + public GrantUserIdentifyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_grantUserIdentify; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantUserIdentify(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantUserIdentify(this); + } + } + + public final GrantUserIdentifyContext grantUserIdentify() throws RecognitionException { + GrantUserIdentifyContext _localctx = new GrantUserIdentifyContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_grantUserIdentify); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4439); + userIdentify(); + setState(4446); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IDENTIFIED) { + { + setState(4440); + match(IDENTIFIED); + setState(4441); + match(BY); + setState(4443); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PASSWORD) { + { + setState(4442); + match(PASSWORD); + } + } + + setState(4445); + match(STRING_LITERAL); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExplainContext extends ParserRuleContext { + public Token level; + public ExplainCommandContext explainCommand() { + return getRuleContext(ExplainCommandContext.class,0); + } + public PlanTypeContext planType() { + return getRuleContext(PlanTypeContext.class,0); + } + public TerminalNode PROCESS() { return getToken(DorisParser.PROCESS, 0); } + public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } + public TerminalNode TREE() { return getToken(DorisParser.TREE, 0); } + public TerminalNode GRAPH() { return getToken(DorisParser.GRAPH, 0); } + public TerminalNode PLAN() { return getToken(DorisParser.PLAN, 0); } + public TerminalNode DUMP() { return getToken(DorisParser.DUMP, 0); } + public ExplainContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_explain; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExplain(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExplain(this); + } + } + + public final ExplainContext explain() throws RecognitionException { + ExplainContext _localctx = new ExplainContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_explain); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4448); + explainCommand(); + setState(4450); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==ANALYZED || _la==DISTRIBUTED || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & 9042383626895361L) != 0) || _la==PHYSICAL || _la==REWRITTEN || _la==SHAPE) { + { + setState(4449); + planType(); + } + } + + setState(4453); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DUMP || _la==GRAPH || _la==PLAN || _la==TREE || _la==VERBOSE) { + { + setState(4452); + ((ExplainContext)_localctx).level = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==DUMP || _la==GRAPH || _la==PLAN || _la==TREE || _la==VERBOSE) ) { + ((ExplainContext)_localctx).level = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(4456); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROCESS) { + { + setState(4455); + match(PROCESS); + } + } + + } + } + 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(DorisParser.EXPLAIN, 0); } + public TerminalNode DESC() { return getToken(DorisParser.DESC, 0); } + public TerminalNode DESCRIBE() { return getToken(DorisParser.DESCRIBE, 0); } + public ExplainCommandContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_explainCommand; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExplainCommand(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExplainCommand(this); + } + } + + public final ExplainCommandContext explainCommand() throws RecognitionException { + ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_explainCommand); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4458); + _la = _input.LA(1); + if ( !(((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 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 PlanTypeContext extends ParserRuleContext { + public TerminalNode PARSED() { return getToken(DorisParser.PARSED, 0); } + public TerminalNode ANALYZED() { return getToken(DorisParser.ANALYZED, 0); } + public TerminalNode REWRITTEN() { return getToken(DorisParser.REWRITTEN, 0); } + public TerminalNode LOGICAL() { return getToken(DorisParser.LOGICAL, 0); } + public TerminalNode OPTIMIZED() { return getToken(DorisParser.OPTIMIZED, 0); } + public TerminalNode PHYSICAL() { return getToken(DorisParser.PHYSICAL, 0); } + public TerminalNode SHAPE() { return getToken(DorisParser.SHAPE, 0); } + public TerminalNode MEMO() { return getToken(DorisParser.MEMO, 0); } + public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public PlanTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_planType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPlanType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPlanType(this); + } + } + + public final PlanTypeContext planType() throws RecognitionException { + PlanTypeContext _localctx = new PlanTypeContext(_ctx, getState()); + enterRule(_localctx, 198, RULE_planType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4460); + _la = _input.LA(1); + if ( !(_la==ALL || _la==ANALYZED || _la==DISTRIBUTED || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & 9042383626895361L) != 0) || _la==PHYSICAL || _la==REWRITTEN || _la==SHAPE) ) { + _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 ReplayCommandContext extends ParserRuleContext { + public TerminalNode PLAN() { return getToken(DorisParser.PLAN, 0); } + public TerminalNode REPLAYER() { return getToken(DorisParser.REPLAYER, 0); } + public ReplayTypeContext replayType() { + return getRuleContext(ReplayTypeContext.class,0); + } + public ReplayCommandContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_replayCommand; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplayCommand(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplayCommand(this); + } + } + + public final ReplayCommandContext replayCommand() throws RecognitionException { + ReplayCommandContext _localctx = new ReplayCommandContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_replayCommand); + try { + enterOuterAlt(_localctx, 1); + { + setState(4462); + match(PLAN); + setState(4463); + match(REPLAYER); + setState(4464); + replayType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ReplayTypeContext extends ParserRuleContext { + public Token filePath; + public TerminalNode DUMP() { return getToken(DorisParser.DUMP, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode PLAY() { return getToken(DorisParser.PLAY, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public ReplayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_replayType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplayType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplayType(this); + } + } + + public final ReplayTypeContext replayType() throws RecognitionException { + ReplayTypeContext _localctx = new ReplayTypeContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_replayType); + try { + setState(4470); + _errHandler.sync(this); + switch (_input.LA(1)) { + case DUMP: + enterOuterAlt(_localctx, 1); + { + setState(4466); + match(DUMP); + setState(4467); + query(); + } + break; + case PLAY: + enterOuterAlt(_localctx, 2); + { + setState(4468); + match(PLAY); + setState(4469); + ((ReplayTypeContext)_localctx).filePath = match(STRING_LITERAL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MergeTypeContext extends ParserRuleContext { + public TerminalNode APPEND() { return getToken(DorisParser.APPEND, 0); } + public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } + public TerminalNode MERGE() { return getToken(DorisParser.MERGE, 0); } + public MergeTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mergeType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMergeType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMergeType(this); + } + } + + public final MergeTypeContext mergeType() throws RecognitionException { + MergeTypeContext _localctx = new MergeTypeContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_mergeType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4472); + _la = _input.LA(1); + if ( !(_la==APPEND || _la==DELETE || _la==MERGE) ) { + _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 PreFilterClauseContext extends ParserRuleContext { + public TerminalNode PRECEDING() { return getToken(DorisParser.PRECEDING, 0); } + public TerminalNode FILTER() { return getToken(DorisParser.FILTER, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public PreFilterClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_preFilterClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPreFilterClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPreFilterClause(this); + } + } + + public final PreFilterClauseContext preFilterClause() throws RecognitionException { + PreFilterClauseContext _localctx = new PreFilterClauseContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_preFilterClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4474); + match(PRECEDING); + setState(4475); + match(FILTER); + setState(4476); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DeleteOnClauseContext extends ParserRuleContext { + public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public DeleteOnClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_deleteOnClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDeleteOnClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDeleteOnClause(this); + } + } + + public final DeleteOnClauseContext deleteOnClause() throws RecognitionException { + DeleteOnClauseContext _localctx = new DeleteOnClauseContext(_ctx, getState()); + enterRule(_localctx, 208, RULE_deleteOnClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4478); + match(DELETE); + setState(4479); + match(ON); + setState(4480); + expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SequenceColClauseContext extends ParserRuleContext { + public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public SequenceColClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sequenceColClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSequenceColClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSequenceColClause(this); + } + } + + public final SequenceColClauseContext sequenceColClause() throws RecognitionException { + SequenceColClauseContext _localctx = new SequenceColClauseContext(_ctx, getState()); + enterRule(_localctx, 210, RULE_sequenceColClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4482); + match(ORDER); + setState(4483); + match(BY); + setState(4484); + identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ColFromPathContext extends ParserRuleContext { + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode PATH() { return getToken(DorisParser.PATH, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public ColFromPathContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_colFromPath; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColFromPath(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColFromPath(this); + } + } + + public final ColFromPathContext colFromPath() throws RecognitionException { + ColFromPathContext _localctx = new ColFromPathContext(_ctx, getState()); + enterRule(_localctx, 212, RULE_colFromPath); + try { + enterOuterAlt(_localctx, 1); + { + setState(4486); + match(COLUMNS); + setState(4487); + match(FROM); + setState(4488); + match(PATH); + setState(4489); + match(AS); + setState(4490); + identifierList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ColMappingListContext extends ParserRuleContext { + public MappingExprContext mappingExpr; + public List mappingSet = new ArrayList(); + public TerminalNode SET() { return getToken(DorisParser.SET, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List mappingExpr() { + return getRuleContexts(MappingExprContext.class); + } + public MappingExprContext mappingExpr(int i) { + return getRuleContext(MappingExprContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ColMappingListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_colMappingList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColMappingList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColMappingList(this); + } + } + + public final ColMappingListContext colMappingList() throws RecognitionException { + ColMappingListContext _localctx = new ColMappingListContext(_ctx, getState()); + enterRule(_localctx, 214, RULE_colMappingList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4492); + match(SET); + setState(4493); + match(LEFT_PAREN); + setState(4494); + ((ColMappingListContext)_localctx).mappingExpr = mappingExpr(); + ((ColMappingListContext)_localctx).mappingSet.add(((ColMappingListContext)_localctx).mappingExpr); + setState(4499); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4495); + match(COMMA); + setState(4496); + ((ColMappingListContext)_localctx).mappingExpr = mappingExpr(); + ((ColMappingListContext)_localctx).mappingSet.add(((ColMappingListContext)_localctx).mappingExpr); + } + } + setState(4501); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4502); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MappingExprContext extends ParserRuleContext { + public IdentifierContext mappingCol; + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MappingExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mappingExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMappingExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMappingExpr(this); + } + } + + public final MappingExprContext mappingExpr() throws RecognitionException { + MappingExprContext _localctx = new MappingExprContext(_ctx, getState()); + enterRule(_localctx, 216, RULE_mappingExpr); + try { + enterOuterAlt(_localctx, 1); + { + { + setState(4504); + ((MappingExprContext)_localctx).mappingCol = identifier(); + setState(4505); + match(EQ); + setState(4506); + expression(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WithRemoteStorageSystemContext extends ParserRuleContext { + public PropertyItemListContext brokerProperties; + public IdentifierOrTextContext brokerName; + public ResourceDescContext resourceDesc() { + return getRuleContext(ResourceDescContext.class,0); + } + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode S3() { return getToken(DorisParser.S3, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode HDFS() { return getToken(DorisParser.HDFS, 0); } + public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public WithRemoteStorageSystemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_withRemoteStorageSystem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWithRemoteStorageSystem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWithRemoteStorageSystem(this); + } + } + + public final WithRemoteStorageSystemContext withRemoteStorageSystem() throws RecognitionException { + WithRemoteStorageSystemContext _localctx = new WithRemoteStorageSystemContext(_ctx, getState()); + enterRule(_localctx, 218, RULE_withRemoteStorageSystem); + int _la; + try { + setState(4536); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,647,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4508); + resourceDesc(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4509); + match(WITH); + setState(4510); + match(S3); + setState(4511); + match(LEFT_PAREN); + setState(4512); + ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); + setState(4513); + match(RIGHT_PAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(4515); + match(WITH); + setState(4516); + match(HDFS); + setState(4517); + match(LEFT_PAREN); + setState(4518); + ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); + setState(4519); + match(RIGHT_PAREN); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(4521); + match(WITH); + setState(4522); + match(LOCAL); + setState(4523); + match(LEFT_PAREN); + setState(4524); + ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); + setState(4525); + match(RIGHT_PAREN); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(4527); + match(WITH); + setState(4528); + match(BROKER); + setState(4529); + ((WithRemoteStorageSystemContext)_localctx).brokerName = identifierOrText(); + setState(4534); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4530); + match(LEFT_PAREN); + setState(4531); + ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); + setState(4532); + match(RIGHT_PAREN); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ResourceDescContext extends ParserRuleContext { + public IdentifierOrTextContext resourceName; + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ResourceDescContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_resourceDesc; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResourceDesc(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResourceDesc(this); + } + } + + public final ResourceDescContext resourceDesc() throws RecognitionException { + ResourceDescContext _localctx = new ResourceDescContext(_ctx, getState()); + enterRule(_localctx, 220, RULE_resourceDesc); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4538); + match(WITH); + setState(4539); + match(RESOURCE); + setState(4540); + ((ResourceDescContext)_localctx).resourceName = identifierOrText(); + setState(4545); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4541); + match(LEFT_PAREN); + setState(4542); + propertyItemList(); + setState(4543); + match(RIGHT_PAREN); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MysqlDataDescContext extends ParserRuleContext { + public Token filePath; + public MultipartIdentifierContext tableName; + public IdentifierListContext partition; + public Token comma; + public Token separator; + public IdentifierListContext columns; + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode INFILE() { return getToken(DorisParser.INFILE, 0); } + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public List TERMINATED() { return getTokens(DorisParser.TERMINATED); } + public TerminalNode TERMINATED(int i) { + return getToken(DorisParser.TERMINATED, i); + } + public List BY() { return getTokens(DorisParser.BY); } + public TerminalNode BY(int i) { + return getToken(DorisParser.BY, i); + } + public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } + public SkipLinesContext skipLines() { + return getRuleContext(SkipLinesContext.class,0); + } + public ColMappingListContext colMappingList() { + return getRuleContext(ColMappingListContext.class,0); + } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public MysqlDataDescContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mysqlDataDesc; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMysqlDataDesc(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMysqlDataDesc(this); + } + } + + public final MysqlDataDescContext mysqlDataDesc() throws RecognitionException { + MysqlDataDescContext _localctx = new MysqlDataDescContext(_ctx, getState()); + enterRule(_localctx, 222, RULE_mysqlDataDesc); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4547); + match(DATA); + setState(4549); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LOCAL) { + { + setState(4548); + match(LOCAL); + } + } + + setState(4551); + match(INFILE); + setState(4552); + ((MysqlDataDescContext)_localctx).filePath = match(STRING_LITERAL); + setState(4553); + match(INTO); + setState(4554); + match(TABLE); + setState(4555); + ((MysqlDataDescContext)_localctx).tableName = multipartIdentifier(); + setState(4558); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(4556); + match(PARTITION); + setState(4557); + ((MysqlDataDescContext)_localctx).partition = identifierList(); + } + } + + setState(4564); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLUMNS) { + { + setState(4560); + match(COLUMNS); + setState(4561); + match(TERMINATED); + setState(4562); + match(BY); + setState(4563); + ((MysqlDataDescContext)_localctx).comma = match(STRING_LITERAL); + } + } + + setState(4570); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LINES) { + { + setState(4566); + match(LINES); + setState(4567); + match(TERMINATED); + setState(4568); + match(BY); + setState(4569); + ((MysqlDataDescContext)_localctx).separator = match(STRING_LITERAL); + } + } + + setState(4573); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IGNORE) { + { + setState(4572); + skipLines(); + } + } + + setState(4576); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4575); + ((MysqlDataDescContext)_localctx).columns = identifierList(); + } + } + + setState(4579); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SET) { + { + setState(4578); + colMappingList(); + } + } + + setState(4582); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,656,_ctx) ) { + case 1: + { + setState(4581); + propertyClause(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SkipLinesContext extends ParserRuleContext { + public Token lines; + public TerminalNode IGNORE() { return getToken(DorisParser.IGNORE, 0); } + public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } + public SkipLinesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_skipLines; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSkipLines(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSkipLines(this); + } + } + + public final SkipLinesContext skipLines() throws RecognitionException { + SkipLinesContext _localctx = new SkipLinesContext(_ctx, getState()); + enterRule(_localctx, 224, RULE_skipLines); + try { + setState(4590); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,657,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4584); + match(IGNORE); + setState(4585); + ((SkipLinesContext)_localctx).lines = match(INTEGER_VALUE); + setState(4586); + match(LINES); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4587); + match(IGNORE); + setState(4588); + ((SkipLinesContext)_localctx).lines = match(INTEGER_VALUE); + setState(4589); + match(ROWS); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class OutFileClauseContext extends ParserRuleContext { + public ConstantContext filePath; + public IdentifierContext format; + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public TerminalNode OUTFILE() { return getToken(DorisParser.OUTFILE, 0); } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public OutFileClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_outFileClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterOutFileClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitOutFileClause(this); + } + } + + public final OutFileClauseContext outFileClause() throws RecognitionException { + OutFileClauseContext _localctx = new OutFileClauseContext(_ctx, getState()); + enterRule(_localctx, 226, RULE_outFileClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4592); + match(INTO); + setState(4593); + match(OUTFILE); + setState(4594); + ((OutFileClauseContext)_localctx).filePath = constant(); + setState(4598); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FORMAT) { + { + setState(4595); + match(FORMAT); + setState(4596); + match(AS); + setState(4597); + ((OutFileClauseContext)_localctx).format = identifier(); + } + } + + setState(4601); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(4600); + propertyClause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QueryContext extends ParserRuleContext { + public QueryTermContext queryTerm() { + return getRuleContext(QueryTermContext.class,0); + } + public QueryOrganizationContext queryOrganization() { + return getRuleContext(QueryOrganizationContext.class,0); + } + public CteContext cte() { + return getRuleContext(CteContext.class,0); + } + public QueryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_query; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQuery(this); + } + } + + public final QueryContext query() throws RecognitionException { + QueryContext _localctx = new QueryContext(_ctx, getState()); + enterRule(_localctx, 228, RULE_query); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4604); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==WITH) { + { + setState(4603); + cte(); + } + } + + setState(4606); + queryTerm(0); + setState(4607); + queryOrganization(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QueryTermContext extends ParserRuleContext { + public QueryTermContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryTerm; } + + public QueryTermContext() { } + public void copyFrom(QueryTermContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class QueryTermDefaultContext extends QueryTermContext { + public QueryPrimaryContext queryPrimary() { + return getRuleContext(QueryPrimaryContext.class,0); + } + public QueryTermDefaultContext(QueryTermContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQueryTermDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQueryTermDefault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SetOperationContext extends QueryTermContext { + public QueryTermContext left; + public Token operator; + public QueryTermContext right; + public List queryTerm() { + return getRuleContexts(QueryTermContext.class); + } + public QueryTermContext queryTerm(int i) { + return getRuleContext(QueryTermContext.class,i); + } + public TerminalNode INTERSECT() { return getToken(DorisParser.INTERSECT, 0); } + public SetQuantifierContext setQuantifier() { + return getRuleContext(SetQuantifierContext.class,0); + } + public TerminalNode UNION() { return getToken(DorisParser.UNION, 0); } + public TerminalNode EXCEPT() { return getToken(DorisParser.EXCEPT, 0); } + public TerminalNode MINUS() { return getToken(DorisParser.MINUS, 0); } + public SetOperationContext(QueryTermContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetOperation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetOperation(this); + } + } + + public final QueryTermContext queryTerm() throws RecognitionException { + return queryTerm(0); + } + + private QueryTermContext queryTerm(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + QueryTermContext _localctx = new QueryTermContext(_ctx, _parentState); + QueryTermContext _prevctx = _localctx; + int _startState = 230; + enterRecursionRule(_localctx, 230, RULE_queryTerm, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new QueryTermDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(4610); + queryPrimary(); + } + _ctx.stop = _input.LT(-1); + setState(4626); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,664,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(4624); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,663,_ctx) ) { + case 1: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(4612); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(4613); + ((SetOperationContext)_localctx).operator = match(INTERSECT); + setState(4615); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(4614); + setQuantifier(); + } + } + + setState(4617); + ((SetOperationContext)_localctx).right = queryTerm(3); + } + break; + case 2: + { + _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); + ((SetOperationContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); + setState(4618); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(4619); + ((SetOperationContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EXCEPT || _la==MINUS || _la==UNION) ) { + ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(4621); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(4620); + setQuantifier(); + } + } + + setState(4623); + ((SetOperationContext)_localctx).right = queryTerm(2); + } + break; + } + } + } + setState(4628); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,664,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SetQuantifierContext extends ParserRuleContext { + public TerminalNode DISTINCT() { return getToken(DorisParser.DISTINCT, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public SetQuantifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_setQuantifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetQuantifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetQuantifier(this); + } + } + + public final SetQuantifierContext setQuantifier() throws RecognitionException { + SetQuantifierContext _localctx = new SetQuantifierContext(_ctx, getState()); + enterRule(_localctx, 232, RULE_setQuantifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4629); + _la = _input.LA(1); + if ( !(_la==ALL || _la==DISTINCT) ) { + _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 QueryPrimaryContext extends ParserRuleContext { + public QueryPrimaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryPrimary; } + + public QueryPrimaryContext() { } + public void copyFrom(QueryPrimaryContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SubqueryContext extends QueryPrimaryContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public SubqueryContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSubquery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSubquery(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ValuesTableContext extends QueryPrimaryContext { + public InlineTableContext inlineTable() { + return getRuleContext(InlineTableContext.class,0); + } + public ValuesTableContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterValuesTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitValuesTable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class QueryPrimaryDefaultContext extends QueryPrimaryContext { + public QuerySpecificationContext querySpecification() { + return getRuleContext(QuerySpecificationContext.class,0); + } + public QueryPrimaryDefaultContext(QueryPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQueryPrimaryDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQueryPrimaryDefault(this); + } + } + + public final QueryPrimaryContext queryPrimary() throws RecognitionException { + QueryPrimaryContext _localctx = new QueryPrimaryContext(_ctx, getState()); + enterRule(_localctx, 234, RULE_queryPrimary); + try { + setState(4637); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SELECT: + _localctx = new QueryPrimaryDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4631); + querySpecification(); + } + break; + case LEFT_PAREN: + _localctx = new SubqueryContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4632); + match(LEFT_PAREN); + setState(4633); + query(); + setState(4634); + match(RIGHT_PAREN); + } + break; + case VALUES: + _localctx = new ValuesTableContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(4636); + inlineTable(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QuerySpecificationContext extends ParserRuleContext { + public QuerySpecificationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_querySpecification; } + + public QuerySpecificationContext() { } + public void copyFrom(QuerySpecificationContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RegularQuerySpecificationContext extends QuerySpecificationContext { + public SelectClauseContext selectClause() { + return getRuleContext(SelectClauseContext.class,0); + } + public QueryOrganizationContext queryOrganization() { + return getRuleContext(QueryOrganizationContext.class,0); + } + public IntoClauseContext intoClause() { + return getRuleContext(IntoClauseContext.class,0); + } + public FromClauseContext fromClause() { + return getRuleContext(FromClauseContext.class,0); + } + public WhereClauseContext whereClause() { + return getRuleContext(WhereClauseContext.class,0); + } + public AggClauseContext aggClause() { + return getRuleContext(AggClauseContext.class,0); + } + public HavingClauseContext havingClause() { + return getRuleContext(HavingClauseContext.class,0); + } + public QualifyClauseContext qualifyClause() { + return getRuleContext(QualifyClauseContext.class,0); + } + public RegularQuerySpecificationContext(QuerySpecificationContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRegularQuerySpecification(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRegularQuerySpecification(this); + } + } + + public final QuerySpecificationContext querySpecification() throws RecognitionException { + QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState()); + enterRule(_localctx, 236, RULE_querySpecification); + try { + _localctx = new RegularQuerySpecificationContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4639); + selectClause(); + setState(4641); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,666,_ctx) ) { + case 1: + { + setState(4640); + intoClause(); + } + break; + } + setState(4644); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,667,_ctx) ) { + case 1: + { + setState(4643); + fromClause(); + } + break; + } + setState(4647); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) { + case 1: + { + setState(4646); + whereClause(); + } + break; + } + setState(4650); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,669,_ctx) ) { + case 1: + { + setState(4649); + aggClause(); + } + break; + } + setState(4653); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) { + case 1: + { + setState(4652); + havingClause(); + } + break; + } + setState(4656); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,671,_ctx) ) { + case 1: + { + setState(4655); + qualifyClause(); + } + break; + } + setState(4658); + if (!(doris_legacy_SQL_syntax)) throw new FailedPredicateException(this, "doris_legacy_SQL_syntax"); + setState(4659); + queryOrganization(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CteContext extends ParserRuleContext { + public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } + public List aliasQuery() { + return getRuleContexts(AliasQueryContext.class); + } + public AliasQueryContext aliasQuery(int i) { + return getRuleContext(AliasQueryContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CteContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_cte; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCte(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCte(this); + } + } + + public final CteContext cte() throws RecognitionException { + CteContext _localctx = new CteContext(_ctx, getState()); + enterRule(_localctx, 238, RULE_cte); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4661); + match(WITH); + setState(4662); + aliasQuery(); + setState(4667); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4663); + match(COMMA); + setState(4664); + aliasQuery(); + } + } + setState(4669); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AliasQueryContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ColumnAliasesContext columnAliases() { + return getRuleContext(ColumnAliasesContext.class,0); + } + public AliasQueryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_aliasQuery; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAliasQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAliasQuery(this); + } + } + + public final AliasQueryContext aliasQuery() throws RecognitionException { + AliasQueryContext _localctx = new AliasQueryContext(_ctx, getState()); + enterRule(_localctx, 240, RULE_aliasQuery); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4670); + identifier(); + setState(4672); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4671); + columnAliases(); + } + } + + setState(4674); + match(AS); + setState(4675); + match(LEFT_PAREN); + setState(4676); + query(); + setState(4677); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ColumnAliasesContext extends ParserRuleContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ColumnAliasesContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_columnAliases; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnAliases(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnAliases(this); + } + } + + public final ColumnAliasesContext columnAliases() throws RecognitionException { + ColumnAliasesContext _localctx = new ColumnAliasesContext(_ctx, getState()); + enterRule(_localctx, 242, RULE_columnAliases); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4679); + match(LEFT_PAREN); + setState(4680); + identifier(); + setState(4685); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4681); + match(COMMA); + setState(4682); + identifier(); + } + } + setState(4687); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4688); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SelectClauseContext extends ParserRuleContext { + public TerminalNode SELECT() { return getToken(DorisParser.SELECT, 0); } + public SelectColumnClauseContext selectColumnClause() { + return getRuleContext(SelectColumnClauseContext.class,0); + } + public TerminalNode DISTINCT() { return getToken(DorisParser.DISTINCT, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public SelectClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selectClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSelectClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSelectClause(this); + } + } + + public final SelectClauseContext selectClause() throws RecognitionException { + SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState()); + enterRule(_localctx, 244, RULE_selectClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4690); + match(SELECT); + setState(4692); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(4691); + _la = _input.LA(1); + if ( !(_la==ALL || _la==DISTINCT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(4694); + selectColumnClause(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SelectColumnClauseContext extends ParserRuleContext { + public NamedExpressionSeqContext namedExpressionSeq() { + return getRuleContext(NamedExpressionSeqContext.class,0); + } + public SelectColumnClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selectColumnClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSelectColumnClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSelectColumnClause(this); + } + } + + public final SelectColumnClauseContext selectColumnClause() throws RecognitionException { + SelectColumnClauseContext _localctx = new SelectColumnClauseContext(_ctx, getState()); + enterRule(_localctx, 246, RULE_selectColumnClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4696); + namedExpressionSeq(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WhereClauseContext extends ParserRuleContext { + public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public WhereClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whereClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWhereClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWhereClause(this); + } + } + + public final WhereClauseContext whereClause() throws RecognitionException { + WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState()); + enterRule(_localctx, 248, RULE_whereClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4698); + match(WHERE); + setState(4699); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FromClauseContext extends ParserRuleContext { + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public RelationsContext relations() { + return getRuleContext(RelationsContext.class,0); + } + public FromClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fromClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFromClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFromClause(this); + } + } + + public final FromClauseContext fromClause() throws RecognitionException { + FromClauseContext _localctx = new FromClauseContext(_ctx, getState()); + enterRule(_localctx, 250, RULE_fromClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4701); + match(FROM); + setState(4702); + relations(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IntoClauseContext extends ParserRuleContext { + public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } + public List tableRow() { + return getRuleContexts(TableRowContext.class); + } + public TableRowContext tableRow(int i) { + return getRuleContext(TableRowContext.class,i); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public BulkCollectClauseContext bulkCollectClause() { + return getRuleContext(BulkCollectClauseContext.class,0); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public IntoClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_intoClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIntoClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIntoClause(this); + } + } + + public final IntoClauseContext intoClause() throws RecognitionException { + IntoClauseContext _localctx = new IntoClauseContext(_ctx, getState()); + enterRule(_localctx, 252, RULE_intoClause); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(4705); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BULK) { + { + setState(4704); + bulkCollectClause(); + } + } + + setState(4707); + match(INTO); + setState(4710); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,677,_ctx) ) { + case 1: + { + setState(4708); + tableRow(); + } + break; + case 2: + { + setState(4709); + identifier(); + } + break; + } + setState(4719); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,679,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4712); + match(COMMA); + setState(4715); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,678,_ctx) ) { + case 1: + { + setState(4713); + tableRow(); + } + break; + case 2: + { + setState(4714); + identifier(); + } + break; + } + } + } + } + setState(4721); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,679,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BulkCollectClauseContext extends ParserRuleContext { + public TerminalNode BULK() { return getToken(DorisParser.BULK, 0); } + public TerminalNode COLLECT() { return getToken(DorisParser.COLLECT, 0); } + public BulkCollectClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_bulkCollectClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBulkCollectClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBulkCollectClause(this); + } + } + + public final BulkCollectClauseContext bulkCollectClause() throws RecognitionException { + BulkCollectClauseContext _localctx = new BulkCollectClauseContext(_ctx, getState()); + enterRule(_localctx, 254, RULE_bulkCollectClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4722); + match(BULK); + setState(4723); + match(COLLECT); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TableRowContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TableRowContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableRow; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableRow(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableRow(this); + } + } + + public final TableRowContext tableRow() throws RecognitionException { + TableRowContext _localctx = new TableRowContext(_ctx, getState()); + enterRule(_localctx, 256, RULE_tableRow); + try { + enterOuterAlt(_localctx, 1); + { + setState(4725); + identifier(); + setState(4726); + match(LEFT_PAREN); + setState(4727); + match(INTEGER_VALUE); + setState(4728); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RelationsContext extends ParserRuleContext { + public List relation() { + return getRuleContexts(RelationContext.class); + } + public RelationContext relation(int i) { + return getRuleContext(RelationContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public RelationsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relations; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRelations(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRelations(this); + } + } + + public final RelationsContext relations() throws RecognitionException { + RelationsContext _localctx = new RelationsContext(_ctx, getState()); + enterRule(_localctx, 258, RULE_relations); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(4730); + relation(); + setState(4735); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,680,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4731); + match(COMMA); + setState(4732); + relation(); + } + } + } + setState(4737); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,680,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RelationContext extends ParserRuleContext { + public RelationPrimaryContext relationPrimary() { + return getRuleContext(RelationPrimaryContext.class,0); + } + public List joinRelation() { + return getRuleContexts(JoinRelationContext.class); + } + public JoinRelationContext joinRelation(int i) { + return getRuleContext(JoinRelationContext.class,i); + } + public RelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRelation(this); + } + } + + public final RelationContext relation() throws RecognitionException { + RelationContext _localctx = new RelationContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_relation); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(4738); + relationPrimary(); + setState(4742); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,681,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4739); + joinRelation(); + } + } + } + setState(4744); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,681,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class JoinRelationContext extends ParserRuleContext { + public RelationPrimaryContext right; + public TerminalNode JOIN() { return getToken(DorisParser.JOIN, 0); } + public RelationPrimaryContext relationPrimary() { + return getRuleContext(RelationPrimaryContext.class,0); + } + public JoinTypeContext joinType() { + return getRuleContext(JoinTypeContext.class,0); + } + public DistributeTypeContext distributeType() { + return getRuleContext(DistributeTypeContext.class,0); + } + public JoinCriteriaContext joinCriteria() { + return getRuleContext(JoinCriteriaContext.class,0); + } + public JoinRelationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_joinRelation; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterJoinRelation(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitJoinRelation(this); + } + } + + public final JoinRelationContext joinRelation() throws RecognitionException { + JoinRelationContext _localctx = new JoinRelationContext(_ctx, getState()); + enterRule(_localctx, 262, RULE_joinRelation); + try { + enterOuterAlt(_localctx, 1); + { + { + setState(4745); + joinType(); + } + setState(4746); + match(JOIN); + setState(4748); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,682,_ctx) ) { + case 1: + { + setState(4747); + distributeType(); + } + break; + } + setState(4750); + ((JoinRelationContext)_localctx).right = relationPrimary(); + setState(4752); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,683,_ctx) ) { + case 1: + { + setState(4751); + joinCriteria(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DistributeTypeContext extends ParserRuleContext { + public DistributeTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_distributeType; } + + public DistributeTypeContext() { } + public void copyFrom(DistributeTypeContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CommentDistributeTypeContext extends DistributeTypeContext { + public TerminalNode HINT_START() { return getToken(DorisParser.HINT_START, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } + public CommentDistributeTypeContext(DistributeTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCommentDistributeType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCommentDistributeType(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BracketDistributeTypeContext extends DistributeTypeContext { + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } + public BracketDistributeTypeContext(DistributeTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBracketDistributeType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBracketDistributeType(this); + } + } + + public final DistributeTypeContext distributeType() throws RecognitionException { + DistributeTypeContext _localctx = new DistributeTypeContext(_ctx, getState()); + enterRule(_localctx, 264, RULE_distributeType); + try { + setState(4762); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACKET: + _localctx = new BracketDistributeTypeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4754); + match(LEFT_BRACKET); + setState(4755); + identifier(); + setState(4756); + match(RIGHT_BRACKET); + } + break; + case HINT_START: + _localctx = new CommentDistributeTypeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4758); + match(HINT_START); + setState(4759); + identifier(); + setState(4760); + match(HINT_END); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RelationHintContext extends ParserRuleContext { + public RelationHintContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relationHint; } + + public RelationHintContext() { } + public void copyFrom(RelationHintContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BracketRelationHintContext extends RelationHintContext { + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public BracketRelationHintContext(RelationHintContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBracketRelationHint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBracketRelationHint(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CommentRelationHintContext extends RelationHintContext { + public TerminalNode HINT_START() { return getToken(DorisParser.HINT_START, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public CommentRelationHintContext(RelationHintContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCommentRelationHint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCommentRelationHint(this); + } + } + + public final RelationHintContext relationHint() throws RecognitionException { + RelationHintContext _localctx = new RelationHintContext(_ctx, getState()); + enterRule(_localctx, 266, RULE_relationHint); + int _la; + try { + setState(4786); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACKET: + _localctx = new BracketRelationHintContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(4764); + match(LEFT_BRACKET); + setState(4765); + identifier(); + setState(4770); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4766); + match(COMMA); + setState(4767); + identifier(); + } + } + setState(4772); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4773); + match(RIGHT_BRACKET); + } + break; + case HINT_START: + _localctx = new CommentRelationHintContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(4775); + match(HINT_START); + setState(4776); + identifier(); + setState(4781); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4777); + match(COMMA); + setState(4778); + identifier(); + } + } + setState(4783); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4784); + match(HINT_END); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AggClauseContext extends ParserRuleContext { + public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public GroupingElementContext groupingElement() { + return getRuleContext(GroupingElementContext.class,0); + } + public AggClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_aggClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAggClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAggClause(this); + } + } + + public final AggClauseContext aggClause() throws RecognitionException { + AggClauseContext _localctx = new AggClauseContext(_ctx, getState()); + enterRule(_localctx, 268, RULE_aggClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4788); + match(GROUP); + setState(4789); + match(BY); + setState(4790); + groupingElement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class GroupingElementContext extends ParserRuleContext { + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TerminalNode CUBE() { return getToken(DorisParser.CUBE, 0); } + public TerminalNode GROUPING() { return getToken(DorisParser.GROUPING, 0); } + public TerminalNode SETS() { return getToken(DorisParser.SETS, 0); } + public List groupingSet() { + return getRuleContexts(GroupingSetContext.class); + } + public GroupingSetContext groupingSet(int i) { + return getRuleContext(GroupingSetContext.class,i); + } + public GroupingElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_groupingElement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGroupingElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGroupingElement(this); + } + } + + public final GroupingElementContext groupingElement() throws RecognitionException { + GroupingElementContext _localctx = new GroupingElementContext(_ctx, getState()); + enterRule(_localctx, 270, RULE_groupingElement); + int _la; + try { + int _alt; + setState(4839); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,694,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4792); + match(ROLLUP); + setState(4793); + match(LEFT_PAREN); + setState(4802); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(4794); + expression(); + setState(4799); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4795); + match(COMMA); + setState(4796); + expression(); + } + } + setState(4801); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(4804); + match(RIGHT_PAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4805); + match(CUBE); + setState(4806); + match(LEFT_PAREN); + setState(4815); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(4807); + expression(); + setState(4812); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4808); + match(COMMA); + setState(4809); + expression(); + } + } + setState(4814); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(4817); + match(RIGHT_PAREN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(4818); + match(GROUPING); + setState(4819); + match(SETS); + setState(4820); + match(LEFT_PAREN); + setState(4821); + groupingSet(); + setState(4826); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4822); + match(COMMA); + setState(4823); + groupingSet(); + } + } + setState(4828); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4829); + match(RIGHT_PAREN); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(4831); + expression(); + setState(4836); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,693,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4832); + match(COMMA); + setState(4833); + expression(); + } + } + } + setState(4838); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,693,_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 GroupingSetContext extends ParserRuleContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public GroupingSetContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_groupingSet; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGroupingSet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGroupingSet(this); + } + } + + public final GroupingSetContext groupingSet() throws RecognitionException { + GroupingSetContext _localctx = new GroupingSetContext(_ctx, getState()); + enterRule(_localctx, 272, RULE_groupingSet); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4841); + match(LEFT_PAREN); + setState(4850); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(4842); + expression(); + setState(4847); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4843); + match(COMMA); + setState(4844); + expression(); + } + } + setState(4849); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(4852); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class HavingClauseContext extends ParserRuleContext { + public TerminalNode HAVING() { return getToken(DorisParser.HAVING, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public HavingClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_havingClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHavingClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHavingClause(this); + } + } + + public final HavingClauseContext havingClause() throws RecognitionException { + HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState()); + enterRule(_localctx, 274, RULE_havingClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4854); + match(HAVING); + setState(4855); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QualifyClauseContext extends ParserRuleContext { + public TerminalNode QUALIFY() { return getToken(DorisParser.QUALIFY, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public QualifyClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifyClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQualifyClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQualifyClause(this); + } + } + + public final QualifyClauseContext qualifyClause() throws RecognitionException { + QualifyClauseContext _localctx = new QualifyClauseContext(_ctx, getState()); + enterRule(_localctx, 276, RULE_qualifyClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(4857); + match(QUALIFY); + setState(4858); + booleanExpression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SelectHintContext extends ParserRuleContext { + public HintStatementContext hintStatement; + public List hintStatements = new ArrayList(); + public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } + public List hintStatement() { + return getRuleContexts(HintStatementContext.class); + } + public HintStatementContext hintStatement(int i) { + return getRuleContext(HintStatementContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public SelectHintContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selectHint; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSelectHint(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSelectHint(this); + } + } + + public final SelectHintContext selectHint() throws RecognitionException { + SelectHintContext _localctx = new SelectHintContext(_ctx, getState()); + enterRule(_localctx, 278, RULE_selectHint); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(4860); + ((SelectHintContext)_localctx).hintStatement = hintStatement(); + ((SelectHintContext)_localctx).hintStatements.add(((SelectHintContext)_localctx).hintStatement); + setState(4867); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,698,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4862); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(4861); + match(COMMA); + } + } + + setState(4864); + ((SelectHintContext)_localctx).hintStatement = hintStatement(); + ((SelectHintContext)_localctx).hintStatements.add(((SelectHintContext)_localctx).hintStatement); + } + } + } + setState(4869); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,698,_ctx); + } + setState(4870); + match(HINT_END); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class HintStatementContext extends ParserRuleContext { + public IdentifierContext hintName; + public HintAssignmentContext hintAssignment; + public List parameters = new ArrayList(); + public MultipartIdentifierContext multipartIdentifier; + public List tableList = new ArrayList(); + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List hintAssignment() { + return getRuleContexts(HintAssignmentContext.class); + } + public HintAssignmentContext hintAssignment(int i) { + return getRuleContext(HintAssignmentContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TerminalNode USE_MV() { return getToken(DorisParser.USE_MV, 0); } + public TerminalNode NO_USE_MV() { return getToken(DorisParser.NO_USE_MV, 0); } + public List multipartIdentifier() { + return getRuleContexts(MultipartIdentifierContext.class); + } + public MultipartIdentifierContext multipartIdentifier(int i) { + return getRuleContext(MultipartIdentifierContext.class,i); + } + public HintStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_hintStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHintStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHintStatement(this); + } + } + + public final HintStatementContext hintStatement() throws RecognitionException { + HintStatementContext _localctx = new HintStatementContext(_ctx, getState()); + enterRule(_localctx, 280, RULE_hintStatement); + int _la; + try { + setState(4902); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(4872); + ((HintStatementContext)_localctx).hintName = identifier(); + setState(4886); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4873); + match(LEFT_PAREN); + setState(4874); + ((HintStatementContext)_localctx).hintAssignment = hintAssignment(); + ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).hintAssignment); + setState(4881); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576336L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { + { + { + setState(4876); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(4875); + match(COMMA); + } + } + + setState(4878); + ((HintStatementContext)_localctx).hintAssignment = hintAssignment(); + ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).hintAssignment); + } + } + setState(4883); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4884); + match(RIGHT_PAREN); + } + } + + } + break; + case NO_USE_MV: + case USE_MV: + enterOuterAlt(_localctx, 2); + { + setState(4888); + _la = _input.LA(1); + if ( !(_la==NO_USE_MV || _la==USE_MV) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(4900); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(4889); + match(LEFT_PAREN); + setState(4890); + ((HintStatementContext)_localctx).multipartIdentifier = multipartIdentifier(); + ((HintStatementContext)_localctx).tableList.add(((HintStatementContext)_localctx).multipartIdentifier); + setState(4895); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4891); + match(COMMA); + setState(4892); + ((HintStatementContext)_localctx).multipartIdentifier = multipartIdentifier(); + ((HintStatementContext)_localctx).tableList.add(((HintStatementContext)_localctx).multipartIdentifier); + } + } + setState(4897); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(4898); + match(RIGHT_PAREN); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class HintAssignmentContext extends ParserRuleContext { + public IdentifierOrTextContext key; + public ConstantContext constantValue; + public IdentifierContext identifierValue; + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public HintAssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_hintAssignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHintAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHintAssignment(this); + } + } + + public final HintAssignmentContext hintAssignment() throws RecognitionException { + HintAssignmentContext _localctx = new HintAssignmentContext(_ctx, getState()); + enterRule(_localctx, 282, RULE_hintAssignment); + int _la; + try { + setState(4913); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,707,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(4904); + ((HintAssignmentContext)_localctx).key = identifierOrText(); + setState(4910); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EQ) { + { + setState(4905); + match(EQ); + setState(4908); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) { + case 1: + { + setState(4906); + ((HintAssignmentContext)_localctx).constantValue = constant(); + } + break; + case 2: + { + setState(4907); + ((HintAssignmentContext)_localctx).identifierValue = identifier(); + } + break; + } + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(4912); + constant(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UpdateAssignmentContext extends ParserRuleContext { + public MultipartIdentifierContext col; + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public UpdateAssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_updateAssignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUpdateAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUpdateAssignment(this); + } + } + + public final UpdateAssignmentContext updateAssignment() throws RecognitionException { + UpdateAssignmentContext _localctx = new UpdateAssignmentContext(_ctx, getState()); + enterRule(_localctx, 284, RULE_updateAssignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(4915); + ((UpdateAssignmentContext)_localctx).col = multipartIdentifier(); + setState(4916); + match(EQ); + setState(4919); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_PAREN: + case LEFT_BRACKET: + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case ADD: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BINARY: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CASE: + case CAST: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATABASE: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXISTS: + case EXPIRED: + case EXTERNAL: + case EXTRACT: + case FAILED_LOGIN_ATTEMPTS: + case FALSE: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IF: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INTERVAL: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case KEY: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LEFT: + case LESS: + case LEVEL: + case LIKE: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NOT: + case NULL: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLACEHOLDER: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REGEXP: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RIGHT: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRIM: + case TRUE: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case PLUS: + case SUBTRACT: + case ASTERISK: + case TILDE: + case LOGICALNOT: + case HINT_START: + case HINT_END: + case COMMENT_START: + case ATSIGN: + case DOUBLEATSIGN: + case STRING_LITERAL: + case INTEGER_VALUE: + case EXPONENT_VALUE: + case DECIMAL_VALUE: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(4917); + expression(); + } + break; + case DEFAULT: + { + setState(4918); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UpdateAssignmentSeqContext extends ParserRuleContext { + public UpdateAssignmentContext updateAssignment; + public List assignments = new ArrayList(); + public List updateAssignment() { + return getRuleContexts(UpdateAssignmentContext.class); + } + public UpdateAssignmentContext updateAssignment(int i) { + return getRuleContext(UpdateAssignmentContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public UpdateAssignmentSeqContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_updateAssignmentSeq; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUpdateAssignmentSeq(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUpdateAssignmentSeq(this); + } + } + + public final UpdateAssignmentSeqContext updateAssignmentSeq() throws RecognitionException { + UpdateAssignmentSeqContext _localctx = new UpdateAssignmentSeqContext(_ctx, getState()); + enterRule(_localctx, 286, RULE_updateAssignmentSeq); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4921); + ((UpdateAssignmentSeqContext)_localctx).updateAssignment = updateAssignment(); + ((UpdateAssignmentSeqContext)_localctx).assignments.add(((UpdateAssignmentSeqContext)_localctx).updateAssignment); + setState(4926); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4922); + match(COMMA); + setState(4923); + ((UpdateAssignmentSeqContext)_localctx).updateAssignment = updateAssignment(); + ((UpdateAssignmentSeqContext)_localctx).assignments.add(((UpdateAssignmentSeqContext)_localctx).updateAssignment); + } + } + setState(4928); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LateralViewContext extends ParserRuleContext { + public IdentifierContext functionName; + public IdentifierContext tableName; + public IdentifierContext identifier; + public List columnNames = new ArrayList(); + public TerminalNode LATERAL() { return getToken(DorisParser.LATERAL, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public LateralViewContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lateralView; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLateralView(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLateralView(this); + } + } + + public final LateralViewContext lateralView() throws RecognitionException { + LateralViewContext _localctx = new LateralViewContext(_ctx, getState()); + enterRule(_localctx, 288, RULE_lateralView); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(4929); + match(LATERAL); + setState(4930); + match(VIEW); + setState(4931); + ((LateralViewContext)_localctx).functionName = identifier(); + setState(4932); + match(LEFT_PAREN); + setState(4941); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(4933); + expression(); + setState(4938); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4934); + match(COMMA); + setState(4935); + expression(); + } + } + setState(4940); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(4943); + match(RIGHT_PAREN); + setState(4944); + ((LateralViewContext)_localctx).tableName = identifier(); + setState(4945); + match(AS); + setState(4946); + ((LateralViewContext)_localctx).identifier = identifier(); + ((LateralViewContext)_localctx).columnNames.add(((LateralViewContext)_localctx).identifier); + setState(4951); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,712,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4947); + match(COMMA); + setState(4948); + ((LateralViewContext)_localctx).identifier = identifier(); + ((LateralViewContext)_localctx).columnNames.add(((LateralViewContext)_localctx).identifier); + } + } + } + setState(4953); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,712,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QueryOrganizationContext extends ParserRuleContext { + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public LimitClauseContext limitClause() { + return getRuleContext(LimitClauseContext.class,0); + } + public QueryOrganizationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_queryOrganization; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQueryOrganization(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQueryOrganization(this); + } + } + + public final QueryOrganizationContext queryOrganization() throws RecognitionException { + QueryOrganizationContext _localctx = new QueryOrganizationContext(_ctx, getState()); + enterRule(_localctx, 290, RULE_queryOrganization); + try { + enterOuterAlt(_localctx, 1); + { + setState(4955); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) { + case 1: + { + setState(4954); + sortClause(); + } + break; + } + setState(4958); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,714,_ctx) ) { + case 1: + { + setState(4957); + limitClause(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SortClauseContext extends ParserRuleContext { + public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public SortClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sortClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSortClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSortClause(this); + } + } + + public final SortClauseContext sortClause() throws RecognitionException { + SortClauseContext _localctx = new SortClauseContext(_ctx, getState()); + enterRule(_localctx, 292, RULE_sortClause); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(4960); + match(ORDER); + setState(4961); + match(BY); + setState(4962); + sortItem(); + setState(4967); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,715,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(4963); + match(COMMA); + setState(4964); + sortItem(); + } + } + } + setState(4969); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,715,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SortItemContext extends ParserRuleContext { + public Token ordering; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode NULLS() { return getToken(DorisParser.NULLS, 0); } + public TerminalNode FIRST() { return getToken(DorisParser.FIRST, 0); } + public TerminalNode LAST() { return getToken(DorisParser.LAST, 0); } + public TerminalNode ASC() { return getToken(DorisParser.ASC, 0); } + public TerminalNode DESC() { return getToken(DorisParser.DESC, 0); } + public SortItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sortItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSortItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSortItem(this); + } + } + + public final SortItemContext sortItem() throws RecognitionException { + SortItemContext _localctx = new SortItemContext(_ctx, getState()); + enterRule(_localctx, 294, RULE_sortItem); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4970); + expression(); + setState(4972); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) { + case 1: + { + setState(4971); + ((SortItemContext)_localctx).ordering = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ASC || _la==DESC) ) { + ((SortItemContext)_localctx).ordering = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + setState(4976); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,717,_ctx) ) { + case 1: + { + setState(4974); + match(NULLS); + setState(4975); + _la = _input.LA(1); + if ( !(_la==FIRST || _la==LAST) ) { + _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 LimitClauseContext extends ParserRuleContext { + public Token limit; + public Token offset; + public TerminalNode LIMIT() { return getToken(DorisParser.LIMIT, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public TerminalNode OFFSET() { return getToken(DorisParser.OFFSET, 0); } + public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } + public LimitClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_limitClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLimitClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLimitClause(this); + } + } + + public final LimitClauseContext limitClause() throws RecognitionException { + LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState()); + enterRule(_localctx, 296, RULE_limitClause); + try { + setState(4988); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,718,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + { + setState(4978); + match(LIMIT); + setState(4979); + ((LimitClauseContext)_localctx).limit = match(INTEGER_VALUE); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + { + setState(4980); + match(LIMIT); + setState(4981); + ((LimitClauseContext)_localctx).limit = match(INTEGER_VALUE); + setState(4982); + match(OFFSET); + setState(4983); + ((LimitClauseContext)_localctx).offset = match(INTEGER_VALUE); + } + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + { + setState(4984); + match(LIMIT); + setState(4985); + ((LimitClauseContext)_localctx).offset = match(INTEGER_VALUE); + setState(4986); + match(COMMA); + setState(4987); + ((LimitClauseContext)_localctx).limit = match(INTEGER_VALUE); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionClauseContext extends ParserRuleContext { + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PartitionClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionClause(this); + } + } + + public final PartitionClauseContext partitionClause() throws RecognitionException { + PartitionClauseContext _localctx = new PartitionClauseContext(_ctx, getState()); + enterRule(_localctx, 298, RULE_partitionClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(4990); + match(PARTITION); + setState(4991); + match(BY); + setState(4992); + expression(); + setState(4997); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(4993); + match(COMMA); + setState(4994); + expression(); + } + } + setState(4999); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class JoinTypeContext extends ParserRuleContext { + public TerminalNode INNER() { return getToken(DorisParser.INNER, 0); } + public TerminalNode CROSS() { return getToken(DorisParser.CROSS, 0); } + public TerminalNode LEFT() { return getToken(DorisParser.LEFT, 0); } + public TerminalNode OUTER() { return getToken(DorisParser.OUTER, 0); } + public TerminalNode RIGHT() { return getToken(DorisParser.RIGHT, 0); } + public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } + public TerminalNode SEMI() { return getToken(DorisParser.SEMI, 0); } + public TerminalNode ANTI() { return getToken(DorisParser.ANTI, 0); } + public JoinTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_joinType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterJoinType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitJoinType(this); + } + } + + public final JoinTypeContext joinType() throws RecognitionException { + JoinTypeContext _localctx = new JoinTypeContext(_ctx, getState()); + enterRule(_localctx, 300, RULE_joinType); + int _la; + try { + setState(5024); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,724,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5001); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INNER) { + { + setState(5000); + match(INNER); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5003); + match(CROSS); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(5004); + match(LEFT); + setState(5006); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(5005); + match(OUTER); + } + } + + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(5008); + match(RIGHT); + setState(5010); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(5009); + match(OUTER); + } + } + + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(5012); + match(FULL); + setState(5014); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==OUTER) { + { + setState(5013); + match(OUTER); + } + } + + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(5016); + match(LEFT); + setState(5017); + match(SEMI); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(5018); + match(RIGHT); + setState(5019); + match(SEMI); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(5020); + match(LEFT); + setState(5021); + match(ANTI); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(5022); + match(RIGHT); + setState(5023); + match(ANTI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class JoinCriteriaContext extends ParserRuleContext { + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public JoinCriteriaContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_joinCriteria; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterJoinCriteria(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitJoinCriteria(this); + } + } + + public final JoinCriteriaContext joinCriteria() throws RecognitionException { + JoinCriteriaContext _localctx = new JoinCriteriaContext(_ctx, getState()); + enterRule(_localctx, 302, RULE_joinCriteria); + try { + setState(5030); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ON: + enterOuterAlt(_localctx, 1); + { + setState(5026); + match(ON); + setState(5027); + booleanExpression(0); + } + break; + case USING: + enterOuterAlt(_localctx, 2); + { + setState(5028); + match(USING); + setState(5029); + identifierList(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentifierListContext extends ParserRuleContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public IdentifierSeqContext identifierSeq() { + return getRuleContext(IdentifierSeqContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public IdentifierListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierList(this); + } + } + + public final IdentifierListContext identifierList() throws RecognitionException { + IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); + enterRule(_localctx, 304, RULE_identifierList); + try { + enterOuterAlt(_localctx, 1); + { + setState(5032); + match(LEFT_PAREN); + setState(5033); + identifierSeq(); + setState(5034); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentifierSeqContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext errorCapturingIdentifier; + public List ident = new ArrayList(); + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public IdentifierSeqContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierSeq; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierSeq(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierSeq(this); + } + } + + public final IdentifierSeqContext identifierSeq() throws RecognitionException { + IdentifierSeqContext _localctx = new IdentifierSeqContext(_ctx, getState()); + enterRule(_localctx, 306, RULE_identifierSeq); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5036); + ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); + setState(5041); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5037); + match(COMMA); + setState(5038); + ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); + } + } + setState(5043); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class OptScanParamsContext extends ParserRuleContext { + public IdentifierContext funcName; + public PropertyItemListContext properties; + public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public OptScanParamsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_optScanParams; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterOptScanParams(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitOptScanParams(this); + } + } + + public final OptScanParamsContext optScanParams() throws RecognitionException { + OptScanParamsContext _localctx = new OptScanParamsContext(_ctx, getState()); + enterRule(_localctx, 308, RULE_optScanParams); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5044); + match(ATSIGN); + setState(5045); + ((OptScanParamsContext)_localctx).funcName = identifier(); + setState(5046); + match(LEFT_PAREN); + setState(5048); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576320L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { + { + setState(5047); + ((OptScanParamsContext)_localctx).properties = propertyItemList(); + } + } + + setState(5050); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RelationPrimaryContext extends ParserRuleContext { + public RelationPrimaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relationPrimary; } + + public RelationPrimaryContext() { } + public void copyFrom(RelationPrimaryContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TableValuedFunctionContext extends RelationPrimaryContext { + public IdentifierContext tvfName; + public PropertyItemListContext properties; + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TableValuedFunctionContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableValuedFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableValuedFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RelationListContext extends RelationPrimaryContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public RelationsContext relations() { + return getRuleContext(RelationsContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public RelationListContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRelationList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRelationList(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AliasedQueryContext extends RelationPrimaryContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public List lateralView() { + return getRuleContexts(LateralViewContext.class); + } + public LateralViewContext lateralView(int i) { + return getRuleContext(LateralViewContext.class,i); + } + public AliasedQueryContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAliasedQuery(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAliasedQuery(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TableNameContext extends RelationPrimaryContext { + public MultipartIdentifierContext multipartIdentifier() { + return getRuleContext(MultipartIdentifierContext.class,0); + } + public TableAliasContext tableAlias() { + return getRuleContext(TableAliasContext.class,0); + } + public OptScanParamsContext optScanParams() { + return getRuleContext(OptScanParamsContext.class,0); + } + public MaterializedViewNameContext materializedViewName() { + return getRuleContext(MaterializedViewNameContext.class,0); + } + public TableSnapshotContext tableSnapshot() { + return getRuleContext(TableSnapshotContext.class,0); + } + public SpecifiedPartitionContext specifiedPartition() { + return getRuleContext(SpecifiedPartitionContext.class,0); + } + public TabletListContext tabletList() { + return getRuleContext(TabletListContext.class,0); + } + public SampleContext sample() { + return getRuleContext(SampleContext.class,0); + } + public RelationHintContext relationHint() { + return getRuleContext(RelationHintContext.class,0); + } + public List lateralView() { + return getRuleContexts(LateralViewContext.class); + } + public LateralViewContext lateralView(int i) { + return getRuleContext(LateralViewContext.class,i); + } + public TableNameContext(RelationPrimaryContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableName(this); + } + } + + public final RelationPrimaryContext relationPrimary() throws RecognitionException { + RelationPrimaryContext _localctx = new RelationPrimaryContext(_ctx, getState()); + enterRule(_localctx, 310, RULE_relationPrimary); + int _la; + try { + int _alt; + setState(5103); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,738,_ctx) ) { + case 1: + _localctx = new TableNameContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(5052); + multipartIdentifier(); + setState(5054); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) { + case 1: + { + setState(5053); + optScanParams(); + } + break; + } + setState(5057); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,729,_ctx) ) { + case 1: + { + setState(5056); + materializedViewName(); + } + break; + } + setState(5060); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,730,_ctx) ) { + case 1: + { + setState(5059); + tableSnapshot(); + } + break; + } + setState(5063); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,731,_ctx) ) { + case 1: + { + setState(5062); + specifiedPartition(); + } + break; + } + setState(5066); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) { + case 1: + { + setState(5065); + tabletList(); + } + break; + } + setState(5068); + tableAlias(); + setState(5070); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) { + case 1: + { + setState(5069); + sample(); + } + break; + } + setState(5073); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,734,_ctx) ) { + case 1: + { + setState(5072); + relationHint(); + } + break; + } + setState(5078); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,735,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5075); + lateralView(); + } + } + } + setState(5080); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,735,_ctx); + } + } + break; + case 2: + _localctx = new AliasedQueryContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(5081); + match(LEFT_PAREN); + setState(5082); + query(); + setState(5083); + match(RIGHT_PAREN); + setState(5084); + tableAlias(); + setState(5088); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,736,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5085); + lateralView(); + } + } + } + setState(5090); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,736,_ctx); + } + } + break; + case 3: + _localctx = new TableValuedFunctionContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(5091); + ((TableValuedFunctionContext)_localctx).tvfName = identifier(); + setState(5092); + match(LEFT_PAREN); + setState(5094); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576320L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { + { + setState(5093); + ((TableValuedFunctionContext)_localctx).properties = propertyItemList(); + } + } + + setState(5096); + match(RIGHT_PAREN); + setState(5097); + tableAlias(); + } + break; + case 4: + _localctx = new RelationListContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(5099); + match(LEFT_PAREN); + setState(5100); + relations(); + setState(5101); + match(RIGHT_PAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MaterializedViewNameContext extends ParserRuleContext { + public IdentifierContext indexName; + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public MaterializedViewNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_materializedViewName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMaterializedViewName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMaterializedViewName(this); + } + } + + public final MaterializedViewNameContext materializedViewName() throws RecognitionException { + MaterializedViewNameContext _localctx = new MaterializedViewNameContext(_ctx, getState()); + enterRule(_localctx, 312, RULE_materializedViewName); + try { + enterOuterAlt(_localctx, 1); + { + setState(5105); + match(INDEX); + setState(5106); + ((MaterializedViewNameContext)_localctx).indexName = identifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PropertyClauseContext extends ParserRuleContext { + public PropertyItemListContext fileProperties; + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public PropertyClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_propertyClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyClause(this); + } + } + + public final PropertyClauseContext propertyClause() throws RecognitionException { + PropertyClauseContext _localctx = new PropertyClauseContext(_ctx, getState()); + enterRule(_localctx, 314, RULE_propertyClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(5108); + match(PROPERTIES); + setState(5109); + match(LEFT_PAREN); + setState(5110); + ((PropertyClauseContext)_localctx).fileProperties = propertyItemList(); + setState(5111); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PropertyItemListContext extends ParserRuleContext { + public PropertyItemContext propertyItem; + public List properties = new ArrayList(); + public List propertyItem() { + return getRuleContexts(PropertyItemContext.class); + } + public PropertyItemContext propertyItem(int i) { + return getRuleContext(PropertyItemContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PropertyItemListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_propertyItemList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyItemList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyItemList(this); + } + } + + public final PropertyItemListContext propertyItemList() throws RecognitionException { + PropertyItemListContext _localctx = new PropertyItemListContext(_ctx, getState()); + enterRule(_localctx, 316, RULE_propertyItemList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5113); + ((PropertyItemListContext)_localctx).propertyItem = propertyItem(); + ((PropertyItemListContext)_localctx).properties.add(((PropertyItemListContext)_localctx).propertyItem); + setState(5118); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5114); + match(COMMA); + setState(5115); + ((PropertyItemListContext)_localctx).propertyItem = propertyItem(); + ((PropertyItemListContext)_localctx).properties.add(((PropertyItemListContext)_localctx).propertyItem); + } + } + setState(5120); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PropertyItemContext extends ParserRuleContext { + public PropertyKeyContext key; + public PropertyValueContext value; + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public PropertyKeyContext propertyKey() { + return getRuleContext(PropertyKeyContext.class,0); + } + public PropertyValueContext propertyValue() { + return getRuleContext(PropertyValueContext.class,0); + } + public PropertyItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_propertyItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyItem(this); + } + } + + public final PropertyItemContext propertyItem() throws RecognitionException { + PropertyItemContext _localctx = new PropertyItemContext(_ctx, getState()); + enterRule(_localctx, 318, RULE_propertyItem); + try { + enterOuterAlt(_localctx, 1); + { + setState(5121); + ((PropertyItemContext)_localctx).key = propertyKey(); + setState(5122); + match(EQ); + setState(5123); + ((PropertyItemContext)_localctx).value = propertyValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PropertyKeyContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public PropertyKeyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_propertyKey; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyKey(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyKey(this); + } + } + + public final PropertyKeyContext propertyKey() throws RecognitionException { + PropertyKeyContext _localctx = new PropertyKeyContext(_ctx, getState()); + enterRule(_localctx, 320, RULE_propertyKey); + try { + setState(5127); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,740,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5125); + identifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5126); + constant(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PropertyValueContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public PropertyValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_propertyValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyValue(this); + } + } + + public final PropertyValueContext propertyValue() throws RecognitionException { + PropertyValueContext _localctx = new PropertyValueContext(_ctx, getState()); + enterRule(_localctx, 322, RULE_propertyValue); + try { + setState(5131); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,741,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5129); + identifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5130); + constant(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TableAliasContext extends ParserRuleContext { + public StrictIdentifierContext strictIdentifier() { + return getRuleContext(StrictIdentifierContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TableAliasContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableAlias; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableAlias(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableAlias(this); + } + } + + public final TableAliasContext tableAlias() throws RecognitionException { + TableAliasContext _localctx = new TableAliasContext(_ctx, getState()); + enterRule(_localctx, 324, RULE_tableAlias); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5140); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,744,_ctx) ) { + case 1: + { + setState(5134); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(5133); + match(AS); + } + } + + setState(5136); + strictIdentifier(); + setState(5138); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,743,_ctx) ) { + case 1: + { + setState(5137); + identifierList(); + } + break; + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MultipartIdentifierContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext errorCapturingIdentifier; + public List parts = new ArrayList(); + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public List DOT() { return getTokens(DorisParser.DOT); } + public TerminalNode DOT(int i) { + return getToken(DorisParser.DOT, i); + } + public MultipartIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_multipartIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMultipartIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMultipartIdentifier(this); + } + } + + public final MultipartIdentifierContext multipartIdentifier() throws RecognitionException { + MultipartIdentifierContext _localctx = new MultipartIdentifierContext(_ctx, getState()); + enterRule(_localctx, 326, RULE_multipartIdentifier); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5142); + ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); + setState(5147); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,745,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5143); + match(DOT); + setState(5144); + ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); + } + } + } + setState(5149); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,745,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SimpleColumnDefsContext extends ParserRuleContext { + public SimpleColumnDefContext simpleColumnDef; + public List cols = new ArrayList(); + public List simpleColumnDef() { + return getRuleContexts(SimpleColumnDefContext.class); + } + public SimpleColumnDefContext simpleColumnDef(int i) { + return getRuleContext(SimpleColumnDefContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public SimpleColumnDefsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleColumnDefs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSimpleColumnDefs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSimpleColumnDefs(this); + } + } + + public final SimpleColumnDefsContext simpleColumnDefs() throws RecognitionException { + SimpleColumnDefsContext _localctx = new SimpleColumnDefsContext(_ctx, getState()); + enterRule(_localctx, 328, RULE_simpleColumnDefs); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5150); + ((SimpleColumnDefsContext)_localctx).simpleColumnDef = simpleColumnDef(); + ((SimpleColumnDefsContext)_localctx).cols.add(((SimpleColumnDefsContext)_localctx).simpleColumnDef); + setState(5155); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5151); + match(COMMA); + setState(5152); + ((SimpleColumnDefsContext)_localctx).simpleColumnDef = simpleColumnDef(); + ((SimpleColumnDefsContext)_localctx).cols.add(((SimpleColumnDefsContext)_localctx).simpleColumnDef); + } + } + setState(5157); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SimpleColumnDefContext extends ParserRuleContext { + public IdentifierContext colName; + public Token comment; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public SimpleColumnDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleColumnDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSimpleColumnDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSimpleColumnDef(this); + } + } + + public final SimpleColumnDefContext simpleColumnDef() throws RecognitionException { + SimpleColumnDefContext _localctx = new SimpleColumnDefContext(_ctx, getState()); + enterRule(_localctx, 330, RULE_simpleColumnDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5158); + ((SimpleColumnDefContext)_localctx).colName = identifier(); + setState(5161); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(5159); + match(COMMENT); + setState(5160); + ((SimpleColumnDefContext)_localctx).comment = match(STRING_LITERAL); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ColumnDefsContext extends ParserRuleContext { + public ColumnDefContext columnDef; + public List cols = new ArrayList(); + public List columnDef() { + return getRuleContexts(ColumnDefContext.class); + } + public ColumnDefContext columnDef(int i) { + return getRuleContext(ColumnDefContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ColumnDefsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_columnDefs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnDefs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnDefs(this); + } + } + + public final ColumnDefsContext columnDefs() throws RecognitionException { + ColumnDefsContext _localctx = new ColumnDefsContext(_ctx, getState()); + enterRule(_localctx, 332, RULE_columnDefs); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5163); + ((ColumnDefsContext)_localctx).columnDef = columnDef(); + ((ColumnDefsContext)_localctx).cols.add(((ColumnDefsContext)_localctx).columnDef); + setState(5168); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,748,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5164); + match(COMMA); + setState(5165); + ((ColumnDefsContext)_localctx).columnDef = columnDef(); + ((ColumnDefsContext)_localctx).cols.add(((ColumnDefsContext)_localctx).columnDef); + } + } + } + setState(5170); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,748,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ColumnDefContext extends ParserRuleContext { + public IdentifierContext colName; + public DataTypeContext type; + public AggTypeDefContext aggType; + public ExpressionContext generatedExpr; + public Token nullable; + public NumberContext autoIncInitValue; + public Token nullValue; + public Token stringValue; + public Token defaultTimestamp; + public NumberContext defaultValuePrecision; + public NumberContext onUpdateValuePrecision; + public Token comment; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } + public TerminalNode LEFT_PAREN(int i) { + return getToken(DorisParser.LEFT_PAREN, i); + } + public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } + public TerminalNode RIGHT_PAREN(int i) { + return getToken(DorisParser.RIGHT_PAREN, i); + } + public TerminalNode AUTO_INCREMENT() { return getToken(DorisParser.AUTO_INCREMENT, 0); } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public TerminalNode ON() { return getToken(DorisParser.ON, 0); } + public TerminalNode UPDATE() { return getToken(DorisParser.UPDATE, 0); } + public List CURRENT_TIMESTAMP() { return getTokens(DorisParser.CURRENT_TIMESTAMP); } + public TerminalNode CURRENT_TIMESTAMP(int i) { + return getToken(DorisParser.CURRENT_TIMESTAMP, i); + } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public AggTypeDefContext aggTypeDef() { + return getRuleContext(AggTypeDefContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public List NULL() { return getTokens(DorisParser.NULL); } + public TerminalNode NULL(int i) { + return getToken(DorisParser.NULL, i); + } + public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } + public TerminalNode STRING_LITERAL(int i) { + return getToken(DorisParser.STRING_LITERAL, i); + } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode DECIMAL_VALUE() { return getToken(DorisParser.DECIMAL_VALUE, 0); } + public TerminalNode PI() { return getToken(DorisParser.PI, 0); } + public TerminalNode E() { return getToken(DorisParser.E, 0); } + public TerminalNode BITMAP_EMPTY() { return getToken(DorisParser.BITMAP_EMPTY, 0); } + public TerminalNode CURRENT_DATE() { return getToken(DorisParser.CURRENT_DATE, 0); } + public TerminalNode GENERATED() { return getToken(DorisParser.GENERATED, 0); } + public TerminalNode ALWAYS() { return getToken(DorisParser.ALWAYS, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public List number() { + return getRuleContexts(NumberContext.class); + } + public NumberContext number(int i) { + return getRuleContext(NumberContext.class,i); + } + public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } + public ColumnDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_columnDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnDef(this); + } + } + + public final ColumnDefContext columnDef() throws RecognitionException { + ColumnDefContext _localctx = new ColumnDefContext(_ctx, getState()); + enterRule(_localctx, 334, RULE_columnDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5171); + ((ColumnDefContext)_localctx).colName = identifier(); + setState(5172); + ((ColumnDefContext)_localctx).type = dataType(); + setState(5174); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==KEY) { + { + setState(5173); + match(KEY); + } + } + + setState(5177); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BITMAP_UNION || _la==GENERIC || _la==HLL_UNION || _la==MAX || _la==MIN || ((((_la - 353)) & ~0x3f) == 0 && ((1L << (_la - 353)) & 6291457L) != 0) || _la==SUM) { + { + setState(5176); + ((ColumnDefContext)_localctx).aggType = aggTypeDef(); + } + } + + setState(5188); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS || _la==GENERATED) { + { + setState(5181); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==GENERATED) { + { + setState(5179); + match(GENERATED); + setState(5180); + match(ALWAYS); + } + } + + setState(5183); + match(AS); + setState(5184); + match(LEFT_PAREN); + setState(5185); + ((ColumnDefContext)_localctx).generatedExpr = expression(); + setState(5186); + match(RIGHT_PAREN); + } + } + + setState(5194); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT || _la==NULL) { + { + setState(5191); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5190); + match(NOT); + } + } + + setState(5193); + ((ColumnDefContext)_localctx).nullable = match(NULL); + } + } + + setState(5203); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AUTO_INCREMENT) { + { + setState(5196); + match(AUTO_INCREMENT); + setState(5201); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(5197); + match(LEFT_PAREN); + setState(5198); + ((ColumnDefContext)_localctx).autoIncInitValue = number(); + setState(5199); + match(RIGHT_PAREN); + } + } + + } + } + + setState(5229); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DEFAULT) { + { + setState(5205); + match(DEFAULT); + setState(5227); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,760,_ctx) ) { + case 1: + { + setState(5206); + ((ColumnDefContext)_localctx).nullValue = match(NULL); + } + break; + case 2: + { + setState(5208); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SUBTRACT) { + { + setState(5207); + match(SUBTRACT); + } + } + + setState(5210); + match(INTEGER_VALUE); + } + break; + case 3: + { + setState(5212); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SUBTRACT) { + { + setState(5211); + match(SUBTRACT); + } + } + + setState(5214); + match(DECIMAL_VALUE); + } + break; + case 4: + { + setState(5215); + match(PI); + } + break; + case 5: + { + setState(5216); + match(E); + } + break; + case 6: + { + setState(5217); + match(BITMAP_EMPTY); + } + break; + case 7: + { + setState(5218); + ((ColumnDefContext)_localctx).stringValue = match(STRING_LITERAL); + } + break; + case 8: + { + setState(5219); + match(CURRENT_DATE); + } + break; + case 9: + { + setState(5220); + ((ColumnDefContext)_localctx).defaultTimestamp = match(CURRENT_TIMESTAMP); + setState(5225); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(5221); + match(LEFT_PAREN); + setState(5222); + ((ColumnDefContext)_localctx).defaultValuePrecision = number(); + setState(5223); + match(RIGHT_PAREN); + } + } + + } + break; + } + } + } + + setState(5240); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ON) { + { + setState(5231); + match(ON); + setState(5232); + match(UPDATE); + setState(5233); + match(CURRENT_TIMESTAMP); + setState(5238); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(5234); + match(LEFT_PAREN); + setState(5235); + ((ColumnDefContext)_localctx).onUpdateValuePrecision = number(); + setState(5236); + match(RIGHT_PAREN); + } + } + + } + } + + setState(5244); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(5242); + match(COMMENT); + setState(5243); + ((ColumnDefContext)_localctx).comment = match(STRING_LITERAL); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IndexDefsContext extends ParserRuleContext { + public IndexDefContext indexDef; + public List indexes = new ArrayList(); + public List indexDef() { + return getRuleContexts(IndexDefContext.class); + } + public IndexDefContext indexDef(int i) { + return getRuleContext(IndexDefContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public IndexDefsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_indexDefs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIndexDefs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIndexDefs(this); + } + } + + public final IndexDefsContext indexDefs() throws RecognitionException { + IndexDefsContext _localctx = new IndexDefsContext(_ctx, getState()); + enterRule(_localctx, 336, RULE_indexDefs); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5246); + ((IndexDefsContext)_localctx).indexDef = indexDef(); + ((IndexDefsContext)_localctx).indexes.add(((IndexDefsContext)_localctx).indexDef); + setState(5251); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,765,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5247); + match(COMMA); + setState(5248); + ((IndexDefsContext)_localctx).indexDef = indexDef(); + ((IndexDefsContext)_localctx).indexes.add(((IndexDefsContext)_localctx).indexDef); + } + } + } + setState(5253); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,765,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IndexDefContext extends ParserRuleContext { + public Token ifNotExists; + public IdentifierContext indexName; + public IdentifierListContext cols; + public Token indexType; + public PropertyItemListContext properties; + public Token comment; + public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } + public TerminalNode INVERTED() { return getToken(DorisParser.INVERTED, 0); } + public TerminalNode NGRAM_BF() { return getToken(DorisParser.NGRAM_BF, 0); } + public IndexDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_indexDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIndexDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIndexDef(this); + } + } + + public final IndexDefContext indexDef() throws RecognitionException { + IndexDefContext _localctx = new IndexDefContext(_ctx, getState()); + enterRule(_localctx, 338, RULE_indexDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5254); + match(INDEX); + setState(5258); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(5255); + ((IndexDefContext)_localctx).ifNotExists = match(IF); + setState(5256); + match(NOT); + setState(5257); + match(EXISTS); + } + } + + setState(5260); + ((IndexDefContext)_localctx).indexName = identifier(); + setState(5261); + ((IndexDefContext)_localctx).cols = identifierList(); + setState(5264); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(5262); + match(USING); + setState(5263); + ((IndexDefContext)_localctx).indexType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==BITMAP || _la==INVERTED || _la==NGRAM_BF) ) { + ((IndexDefContext)_localctx).indexType = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(5271); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(5266); + match(PROPERTIES); + setState(5267); + match(LEFT_PAREN); + setState(5268); + ((IndexDefContext)_localctx).properties = propertyItemList(); + setState(5269); + match(RIGHT_PAREN); + } + } + + setState(5275); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(5273); + match(COMMENT); + setState(5274); + ((IndexDefContext)_localctx).comment = match(STRING_LITERAL); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionsDefContext extends ParserRuleContext { + public PartitionDefContext partitionDef; + public List partitions = new ArrayList(); + public List partitionDef() { + return getRuleContexts(PartitionDefContext.class); + } + public PartitionDefContext partitionDef(int i) { + return getRuleContext(PartitionDefContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PartitionsDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionsDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionsDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionsDef(this); + } + } + + public final PartitionsDefContext partitionsDef() throws RecognitionException { + PartitionsDefContext _localctx = new PartitionsDefContext(_ctx, getState()); + enterRule(_localctx, 340, RULE_partitionsDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5277); + ((PartitionsDefContext)_localctx).partitionDef = partitionDef(); + ((PartitionsDefContext)_localctx).partitions.add(((PartitionsDefContext)_localctx).partitionDef); + setState(5282); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5278); + match(COMMA); + setState(5279); + ((PartitionsDefContext)_localctx).partitionDef = partitionDef(); + ((PartitionsDefContext)_localctx).partitions.add(((PartitionsDefContext)_localctx).partitionDef); + } + } + setState(5284); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionDefContext extends ParserRuleContext { + public PropertyItemListContext partitionProperties; + public LessThanPartitionDefContext lessThanPartitionDef() { + return getRuleContext(LessThanPartitionDefContext.class,0); + } + public FixedPartitionDefContext fixedPartitionDef() { + return getRuleContext(FixedPartitionDefContext.class,0); + } + public StepPartitionDefContext stepPartitionDef() { + return getRuleContext(StepPartitionDefContext.class,0); + } + public InPartitionDefContext inPartitionDef() { + return getRuleContext(InPartitionDefContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PropertyItemListContext propertyItemList() { + return getRuleContext(PropertyItemListContext.class,0); + } + public PartitionDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionDef(this); + } + } + + public final PartitionDefContext partitionDef() throws RecognitionException { + PartitionDefContext _localctx = new PartitionDefContext(_ctx, getState()); + enterRule(_localctx, 342, RULE_partitionDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5289); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,771,_ctx) ) { + case 1: + { + setState(5285); + lessThanPartitionDef(); + } + break; + case 2: + { + setState(5286); + fixedPartitionDef(); + } + break; + case 3: + { + setState(5287); + stepPartitionDef(); + } + break; + case 4: + { + setState(5288); + inPartitionDef(); + } + break; + } + setState(5295); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(5291); + match(LEFT_PAREN); + setState(5292); + ((PartitionDefContext)_localctx).partitionProperties = propertyItemList(); + setState(5293); + match(RIGHT_PAREN); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LessThanPartitionDefContext extends ParserRuleContext { + public IdentifierContext partitionName; + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } + public TerminalNode LESS() { return getToken(DorisParser.LESS, 0); } + public TerminalNode THAN() { return getToken(DorisParser.THAN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode MAXVALUE() { return getToken(DorisParser.MAXVALUE, 0); } + public PartitionValueListContext partitionValueList() { + return getRuleContext(PartitionValueListContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public LessThanPartitionDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lessThanPartitionDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLessThanPartitionDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLessThanPartitionDef(this); + } + } + + public final LessThanPartitionDefContext lessThanPartitionDef() throws RecognitionException { + LessThanPartitionDefContext _localctx = new LessThanPartitionDefContext(_ctx, getState()); + enterRule(_localctx, 344, RULE_lessThanPartitionDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5297); + match(PARTITION); + setState(5301); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(5298); + match(IF); + setState(5299); + match(NOT); + setState(5300); + match(EXISTS); + } + } + + setState(5303); + ((LessThanPartitionDefContext)_localctx).partitionName = identifier(); + setState(5304); + match(VALUES); + setState(5305); + match(LESS); + setState(5306); + match(THAN); + setState(5309); + _errHandler.sync(this); + switch (_input.LA(1)) { + case MAXVALUE: + { + setState(5307); + match(MAXVALUE); + } + break; + case LEFT_PAREN: + { + setState(5308); + partitionValueList(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FixedPartitionDefContext extends ParserRuleContext { + public IdentifierContext partitionName; + public PartitionValueListContext lower; + public PartitionValueListContext upper; + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public List partitionValueList() { + return getRuleContexts(PartitionValueListContext.class); + } + public PartitionValueListContext partitionValueList(int i) { + return getRuleContext(PartitionValueListContext.class,i); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public FixedPartitionDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fixedPartitionDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFixedPartitionDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFixedPartitionDef(this); + } + } + + public final FixedPartitionDefContext fixedPartitionDef() throws RecognitionException { + FixedPartitionDefContext _localctx = new FixedPartitionDefContext(_ctx, getState()); + enterRule(_localctx, 346, RULE_fixedPartitionDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5311); + match(PARTITION); + setState(5315); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(5312); + match(IF); + setState(5313); + match(NOT); + setState(5314); + match(EXISTS); + } + } + + setState(5317); + ((FixedPartitionDefContext)_localctx).partitionName = identifier(); + setState(5318); + match(VALUES); + setState(5319); + match(LEFT_BRACKET); + setState(5320); + ((FixedPartitionDefContext)_localctx).lower = partitionValueList(); + setState(5321); + match(COMMA); + setState(5322); + ((FixedPartitionDefContext)_localctx).upper = partitionValueList(); + setState(5323); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StepPartitionDefContext extends ParserRuleContext { + public PartitionValueListContext from; + public PartitionValueListContext to; + public Token unitsAmount; + public UnitIdentifierContext unit; + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode TO() { return getToken(DorisParser.TO, 0); } + public TerminalNode INTERVAL() { return getToken(DorisParser.INTERVAL, 0); } + public List partitionValueList() { + return getRuleContexts(PartitionValueListContext.class); + } + public PartitionValueListContext partitionValueList(int i) { + return getRuleContext(PartitionValueListContext.class,i); + } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public UnitIdentifierContext unitIdentifier() { + return getRuleContext(UnitIdentifierContext.class,0); + } + public StepPartitionDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_stepPartitionDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStepPartitionDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStepPartitionDef(this); + } + } + + public final StepPartitionDefContext stepPartitionDef() throws RecognitionException { + StepPartitionDefContext _localctx = new StepPartitionDefContext(_ctx, getState()); + enterRule(_localctx, 348, RULE_stepPartitionDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5325); + match(FROM); + setState(5326); + ((StepPartitionDefContext)_localctx).from = partitionValueList(); + setState(5327); + match(TO); + setState(5328); + ((StepPartitionDefContext)_localctx).to = partitionValueList(); + setState(5329); + match(INTERVAL); + setState(5330); + ((StepPartitionDefContext)_localctx).unitsAmount = match(INTEGER_VALUE); + setState(5332); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DAY || _la==HOUR || _la==MINUTE || _la==MONTH || _la==QUARTER || _la==SECOND || _la==WEEK || _la==YEAR) { + { + setState(5331); + ((StepPartitionDefContext)_localctx).unit = unitIdentifier(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InPartitionDefContext extends ParserRuleContext { + public IdentifierContext partitionName; + public PartitionValueListContext partitionValueList; + public List partitionValueLists = new ArrayList(); + public PartitionValueListContext constants; + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public List partitionValueList() { + return getRuleContexts(PartitionValueListContext.class); + } + public PartitionValueListContext partitionValueList(int i) { + return getRuleContext(PartitionValueListContext.class,i); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public InPartitionDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inPartitionDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInPartitionDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInPartitionDef(this); + } + } + + public final InPartitionDefContext inPartitionDef() throws RecognitionException { + InPartitionDefContext _localctx = new InPartitionDefContext(_ctx, getState()); + enterRule(_localctx, 350, RULE_inPartitionDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5334); + match(PARTITION); + setState(5338); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IF) { + { + setState(5335); + match(IF); + setState(5336); + match(NOT); + setState(5337); + match(EXISTS); + } + } + + setState(5340); + ((InPartitionDefContext)_localctx).partitionName = identifier(); + setState(5357); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==VALUES) { + { + setState(5341); + match(VALUES); + setState(5342); + match(IN); + setState(5355); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) { + case 1: + { + { + setState(5343); + match(LEFT_PAREN); + setState(5344); + ((InPartitionDefContext)_localctx).partitionValueList = partitionValueList(); + ((InPartitionDefContext)_localctx).partitionValueLists.add(((InPartitionDefContext)_localctx).partitionValueList); + setState(5349); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5345); + match(COMMA); + setState(5346); + ((InPartitionDefContext)_localctx).partitionValueList = partitionValueList(); + ((InPartitionDefContext)_localctx).partitionValueLists.add(((InPartitionDefContext)_localctx).partitionValueList); + } + } + setState(5351); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5352); + match(RIGHT_PAREN); + } + } + break; + case 2: + { + setState(5354); + ((InPartitionDefContext)_localctx).constants = partitionValueList(); + } + break; + } + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionValueListContext extends ParserRuleContext { + public PartitionValueDefContext partitionValueDef; + public List values = new ArrayList(); + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List partitionValueDef() { + return getRuleContexts(PartitionValueDefContext.class); + } + public PartitionValueDefContext partitionValueDef(int i) { + return getRuleContext(PartitionValueDefContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PartitionValueListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionValueList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionValueList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionValueList(this); + } + } + + public final PartitionValueListContext partitionValueList() throws RecognitionException { + PartitionValueListContext _localctx = new PartitionValueListContext(_ctx, getState()); + enterRule(_localctx, 352, RULE_partitionValueList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5359); + match(LEFT_PAREN); + setState(5360); + ((PartitionValueListContext)_localctx).partitionValueDef = partitionValueDef(); + ((PartitionValueListContext)_localctx).values.add(((PartitionValueListContext)_localctx).partitionValueDef); + setState(5365); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5361); + match(COMMA); + setState(5362); + ((PartitionValueListContext)_localctx).partitionValueDef = partitionValueDef(); + ((PartitionValueListContext)_localctx).values.add(((PartitionValueListContext)_localctx).partitionValueDef); + } + } + setState(5367); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5368); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PartitionValueDefContext extends ParserRuleContext { + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode MAXVALUE() { return getToken(DorisParser.MAXVALUE, 0); } + public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } + public PartitionValueDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_partitionValueDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionValueDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionValueDef(this); + } + } + + public final PartitionValueDefContext partitionValueDef() throws RecognitionException { + PartitionValueDefContext _localctx = new PartitionValueDefContext(_ctx, getState()); + enterRule(_localctx, 354, RULE_partitionValueDef); + int _la; + try { + setState(5377); + _errHandler.sync(this); + switch (_input.LA(1)) { + case SUBTRACT: + case INTEGER_VALUE: + enterOuterAlt(_localctx, 1); + { + setState(5371); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SUBTRACT) { + { + setState(5370); + match(SUBTRACT); + } + } + + setState(5373); + match(INTEGER_VALUE); + } + break; + case STRING_LITERAL: + enterOuterAlt(_localctx, 2); + { + setState(5374); + match(STRING_LITERAL); + } + break; + case MAXVALUE: + enterOuterAlt(_localctx, 3); + { + setState(5375); + match(MAXVALUE); + } + break; + case NULL: + enterOuterAlt(_localctx, 4); + { + setState(5376); + match(NULL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RollupDefsContext extends ParserRuleContext { + public RollupDefContext rollupDef; + public List rollups = new ArrayList(); + public List rollupDef() { + return getRuleContexts(RollupDefContext.class); + } + public RollupDefContext rollupDef(int i) { + return getRuleContext(RollupDefContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public RollupDefsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_rollupDefs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRollupDefs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRollupDefs(this); + } + } + + public final RollupDefsContext rollupDefs() throws RecognitionException { + RollupDefsContext _localctx = new RollupDefsContext(_ctx, getState()); + enterRule(_localctx, 356, RULE_rollupDefs); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5379); + ((RollupDefsContext)_localctx).rollupDef = rollupDef(); + ((RollupDefsContext)_localctx).rollups.add(((RollupDefsContext)_localctx).rollupDef); + setState(5384); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5380); + match(COMMA); + setState(5381); + ((RollupDefsContext)_localctx).rollupDef = rollupDef(); + ((RollupDefsContext)_localctx).rollups.add(((RollupDefsContext)_localctx).rollupDef); + } + } + setState(5386); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RollupDefContext extends ParserRuleContext { + public IdentifierContext rollupName; + public IdentifierListContext rollupCols; + public IdentifierListContext dupKeys; + public PropertyClauseContext properties; + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public List identifierList() { + return getRuleContexts(IdentifierListContext.class); + } + public IdentifierListContext identifierList(int i) { + return getRuleContext(IdentifierListContext.class,i); + } + public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public PropertyClauseContext propertyClause() { + return getRuleContext(PropertyClauseContext.class,0); + } + public RollupDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_rollupDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRollupDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRollupDef(this); + } + } + + public final RollupDefContext rollupDef() throws RecognitionException { + RollupDefContext _localctx = new RollupDefContext(_ctx, getState()); + enterRule(_localctx, 358, RULE_rollupDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5387); + ((RollupDefContext)_localctx).rollupName = identifier(); + setState(5388); + ((RollupDefContext)_localctx).rollupCols = identifierList(); + setState(5392); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==DUPLICATE) { + { + setState(5389); + match(DUPLICATE); + setState(5390); + match(KEY); + setState(5391); + ((RollupDefContext)_localctx).dupKeys = identifierList(); + } + } + + setState(5395); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PROPERTIES) { + { + setState(5394); + ((RollupDefContext)_localctx).properties = propertyClause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AggTypeDefContext extends ParserRuleContext { + public TerminalNode MAX() { return getToken(DorisParser.MAX, 0); } + public TerminalNode MIN() { return getToken(DorisParser.MIN, 0); } + public TerminalNode SUM() { return getToken(DorisParser.SUM, 0); } + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode REPLACE_IF_NOT_NULL() { return getToken(DorisParser.REPLACE_IF_NOT_NULL, 0); } + public TerminalNode HLL_UNION() { return getToken(DorisParser.HLL_UNION, 0); } + public TerminalNode BITMAP_UNION() { return getToken(DorisParser.BITMAP_UNION, 0); } + public TerminalNode QUANTILE_UNION() { return getToken(DorisParser.QUANTILE_UNION, 0); } + public TerminalNode GENERIC() { return getToken(DorisParser.GENERIC, 0); } + public AggTypeDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_aggTypeDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAggTypeDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAggTypeDef(this); + } + } + + public final AggTypeDefContext aggTypeDef() throws RecognitionException { + AggTypeDefContext _localctx = new AggTypeDefContext(_ctx, getState()); + enterRule(_localctx, 360, RULE_aggTypeDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5397); + _la = _input.LA(1); + if ( !(_la==BITMAP_UNION || _la==GENERIC || _la==HLL_UNION || _la==MAX || _la==MIN || ((((_la - 353)) & ~0x3f) == 0 && ((1L << (_la - 353)) & 6291457L) != 0) || _la==SUM) ) { + _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 TabletListContext extends ParserRuleContext { + public Token INTEGER_VALUE; + public List tabletIdList = new ArrayList(); + public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TabletListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tabletList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTabletList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTabletList(this); + } + } + + public final TabletListContext tabletList() throws RecognitionException { + TabletListContext _localctx = new TabletListContext(_ctx, getState()); + enterRule(_localctx, 362, RULE_tabletList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5399); + match(TABLET); + setState(5400); + match(LEFT_PAREN); + setState(5401); + ((TabletListContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((TabletListContext)_localctx).tabletIdList.add(((TabletListContext)_localctx).INTEGER_VALUE); + setState(5406); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5402); + match(COMMA); + setState(5403); + ((TabletListContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); + ((TabletListContext)_localctx).tabletIdList.add(((TabletListContext)_localctx).INTEGER_VALUE); + } + } + setState(5408); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5409); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InlineTableContext extends ParserRuleContext { + public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } + public List rowConstructor() { + return getRuleContexts(RowConstructorContext.class); + } + public RowConstructorContext rowConstructor(int i) { + return getRuleContext(RowConstructorContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public InlineTableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_inlineTable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInlineTable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInlineTable(this); + } + } + + public final InlineTableContext inlineTable() throws RecognitionException { + InlineTableContext _localctx = new InlineTableContext(_ctx, getState()); + enterRule(_localctx, 364, RULE_inlineTable); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5411); + match(VALUES); + setState(5412); + rowConstructor(); + setState(5417); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,788,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5413); + match(COMMA); + setState(5414); + rowConstructor(); + } + } + } + setState(5419); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,788,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NamedExpressionContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public NamedExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namedExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNamedExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNamedExpression(this); + } + } + + public final NamedExpressionContext namedExpression() throws RecognitionException { + NamedExpressionContext _localctx = new NamedExpressionContext(_ctx, getState()); + enterRule(_localctx, 366, RULE_namedExpression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5420); + expression(); + setState(5425); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,790,_ctx) ) { + case 1: + { + setState(5422); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(5421); + match(AS); + } + } + + { + setState(5424); + identifierOrText(); + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NamedExpressionSeqContext extends ParserRuleContext { + public List namedExpression() { + return getRuleContexts(NamedExpressionContext.class); + } + public NamedExpressionContext namedExpression(int i) { + return getRuleContext(NamedExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public NamedExpressionSeqContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_namedExpressionSeq; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNamedExpressionSeq(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNamedExpressionSeq(this); + } + } + + public final NamedExpressionSeqContext namedExpressionSeq() throws RecognitionException { + NamedExpressionSeqContext _localctx = new NamedExpressionSeqContext(_ctx, getState()); + enterRule(_localctx, 368, RULE_namedExpressionSeq); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5427); + namedExpression(); + setState(5432); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,791,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5428); + match(COMMA); + setState(5429); + namedExpression(); + } + } + } + setState(5434); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,791,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExpressionContext extends ParserRuleContext { + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public LambdaExpressionContext lambdaExpression() { + return getRuleContext(LambdaExpressionContext.class,0); + } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExpression(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); + enterRule(_localctx, 370, RULE_expression); + try { + setState(5437); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,792,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5435); + booleanExpression(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5436); + lambdaExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LambdaExpressionContext extends ParserRuleContext { + public ErrorCapturingIdentifierContext errorCapturingIdentifier; + public List args = new ArrayList(); + public BooleanExpressionContext body; + public TerminalNode ARROW() { return getToken(DorisParser.ARROW, 0); } + public List errorCapturingIdentifier() { + return getRuleContexts(ErrorCapturingIdentifierContext.class); + } + public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { + return getRuleContext(ErrorCapturingIdentifierContext.class,i); + } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public LambdaExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lambdaExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLambdaExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLambdaExpression(this); + } + } + + public final LambdaExpressionContext lambdaExpression() throws RecognitionException { + LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState()); + enterRule(_localctx, 372, RULE_lambdaExpression); + int _la; + try { + setState(5455); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(5439); + ((LambdaExpressionContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((LambdaExpressionContext)_localctx).args.add(((LambdaExpressionContext)_localctx).errorCapturingIdentifier); + setState(5440); + match(ARROW); + setState(5441); + ((LambdaExpressionContext)_localctx).body = booleanExpression(0); + } + break; + case LEFT_PAREN: + enterOuterAlt(_localctx, 2); + { + setState(5443); + match(LEFT_PAREN); + setState(5444); + ((LambdaExpressionContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((LambdaExpressionContext)_localctx).args.add(((LambdaExpressionContext)_localctx).errorCapturingIdentifier); + setState(5447); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(5445); + match(COMMA); + setState(5446); + ((LambdaExpressionContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); + ((LambdaExpressionContext)_localctx).args.add(((LambdaExpressionContext)_localctx).errorCapturingIdentifier); + } + } + setState(5449); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==COMMA ); + setState(5451); + match(RIGHT_PAREN); + setState(5452); + match(ARROW); + setState(5453); + ((LambdaExpressionContext)_localctx).body = booleanExpression(0); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BooleanExpressionContext extends ParserRuleContext { + public BooleanExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_booleanExpression; } + + public BooleanExpressionContext() { } + public void copyFrom(BooleanExpressionContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ExistContext extends BooleanExpressionContext { + public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ExistContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExist(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExist(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class LogicalNotContext extends BooleanExpressionContext { + public TerminalNode LOGICALNOT() { return getToken(DorisParser.LOGICALNOT, 0); } + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public LogicalNotContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLogicalNot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLogicalNot(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PredicatedContext extends BooleanExpressionContext { + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public PredicateContext predicate() { + return getRuleContext(PredicateContext.class,0); + } + public PredicatedContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPredicated(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPredicated(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class IsnullContext extends BooleanExpressionContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode ISNULL() { return getToken(DorisParser.ISNULL, 0); } + public TerminalNode IS_NULL_PRED() { return getToken(DorisParser.IS_NULL_PRED, 0); } + public IsnullContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIsnull(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIsnull(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class Is_not_null_predContext extends BooleanExpressionContext { + public TerminalNode IS_NOT_NULL_PRED() { return getToken(DorisParser.IS_NOT_NULL_PRED, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public Is_not_null_predContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIs_not_null_pred(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIs_not_null_pred(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(DorisParser.AND, 0); } + public TerminalNode LOGICALAND() { return getToken(DorisParser.LOGICALAND, 0); } + public TerminalNode XOR() { return getToken(DorisParser.XOR, 0); } + public TerminalNode OR() { return getToken(DorisParser.OR, 0); } + public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLogicalBinary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLogicalBinary(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DoublePipesContext 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 DOUBLEPIPES() { return getToken(DorisParser.DOUBLEPIPES, 0); } + public DoublePipesContext(BooleanExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDoublePipes(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDoublePipes(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 = 374; + enterRecursionRule(_localctx, 374, RULE_booleanExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5481); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,796,_ctx) ) { + case 1: + { + _localctx = new LogicalNotContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(5458); + match(LOGICALNOT); + setState(5459); + booleanExpression(10); + } + break; + case 2: + { + _localctx = new ExistContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5460); + match(EXISTS); + setState(5461); + match(LEFT_PAREN); + setState(5462); + query(); + setState(5463); + match(RIGHT_PAREN); + } + break; + case 3: + { + _localctx = new IsnullContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5465); + _la = _input.LA(1); + if ( !(_la==IS_NULL_PRED || _la==ISNULL) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5466); + match(LEFT_PAREN); + setState(5467); + valueExpression(0); + setState(5468); + match(RIGHT_PAREN); + } + break; + case 4: + { + _localctx = new Is_not_null_predContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5470); + match(IS_NOT_NULL_PRED); + setState(5471); + match(LEFT_PAREN); + setState(5472); + valueExpression(0); + setState(5473); + match(RIGHT_PAREN); + } + break; + case 5: + { + _localctx = new PredicatedContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5475); + valueExpression(0); + setState(5477); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,795,_ctx) ) { + case 1: + { + setState(5476); + predicate(); + } + break; + } + } + break; + case 6: + { + _localctx = new LogicalNotContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5479); + match(NOT); + setState(5480); + booleanExpression(5); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(5497); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,798,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(5495); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,797,_ctx) ) { + case 1: + { + _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((LogicalBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(5483); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(5484); + ((LogicalBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==AND || _la==LOGICALAND) ) { + ((LogicalBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5485); + ((LogicalBinaryContext)_localctx).right = booleanExpression(5); + } + break; + case 2: + { + _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((LogicalBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(5486); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(5487); + ((LogicalBinaryContext)_localctx).operator = match(XOR); + setState(5488); + ((LogicalBinaryContext)_localctx).right = booleanExpression(4); + } + break; + case 3: + { + _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((LogicalBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(5489); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(5490); + ((LogicalBinaryContext)_localctx).operator = match(OR); + setState(5491); + ((LogicalBinaryContext)_localctx).right = booleanExpression(3); + } + break; + case 4: + { + _localctx = new DoublePipesContext(new BooleanExpressionContext(_parentctx, _parentState)); + ((DoublePipesContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(5492); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(5493); + ((DoublePipesContext)_localctx).operator = match(DOUBLEPIPES); + setState(5494); + ((DoublePipesContext)_localctx).right = booleanExpression(2); + } + break; + } + } + } + setState(5499); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,798,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RowConstructorContext extends ParserRuleContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List rowConstructorItem() { + return getRuleContexts(RowConstructorItemContext.class); + } + public RowConstructorItemContext rowConstructorItem(int i) { + return getRuleContext(RowConstructorItemContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public RowConstructorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_rowConstructor; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRowConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRowConstructor(this); + } + } + + public final RowConstructorContext rowConstructor() throws RecognitionException { + RowConstructorContext _localctx = new RowConstructorContext(_ctx, getState()); + enterRule(_localctx, 376, RULE_rowConstructor); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5500); + match(LEFT_PAREN); + setState(5509); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -5188430204749515009L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(5501); + rowConstructorItem(); + setState(5506); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5502); + match(COMMA); + setState(5503); + rowConstructorItem(); + } + } + setState(5508); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(5511); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RowConstructorItemContext extends ParserRuleContext { + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public NamedExpressionContext namedExpression() { + return getRuleContext(NamedExpressionContext.class,0); + } + public RowConstructorItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_rowConstructorItem; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRowConstructorItem(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRowConstructorItem(this); + } + } + + public final RowConstructorItemContext rowConstructorItem() throws RecognitionException { + RowConstructorItemContext _localctx = new RowConstructorItemContext(_ctx, getState()); + enterRule(_localctx, 378, RULE_rowConstructorItem); + try { + setState(5516); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,801,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5513); + constant(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5514); + match(DEFAULT); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(5515); + namedExpression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PredicateContext extends ParserRuleContext { + public Token kind; + public ValueExpressionContext lower; + public ValueExpressionContext upper; + public ValueExpressionContext pattern; + public TerminalNode AND() { return getToken(DorisParser.AND, 0); } + public TerminalNode BETWEEN() { return getToken(DorisParser.BETWEEN, 0); } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode REGEXP() { return getToken(DorisParser.REGEXP, 0); } + public TerminalNode RLIKE() { return getToken(DorisParser.RLIKE, 0); } + public TerminalNode MATCH() { return getToken(DorisParser.MATCH, 0); } + public TerminalNode MATCH_ANY() { return getToken(DorisParser.MATCH_ANY, 0); } + public TerminalNode MATCH_ALL() { return getToken(DorisParser.MATCH_ALL, 0); } + public TerminalNode MATCH_PHRASE() { return getToken(DorisParser.MATCH_PHRASE, 0); } + public TerminalNode MATCH_PHRASE_PREFIX() { return getToken(DorisParser.MATCH_PHRASE_PREFIX, 0); } + public TerminalNode MATCH_REGEXP() { return getToken(DorisParser.MATCH_REGEXP, 0); } + public TerminalNode MATCH_PHRASE_EDGE() { return getToken(DorisParser.MATCH_PHRASE_EDGE, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode IN() { return getToken(DorisParser.IN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TerminalNode IS() { return getToken(DorisParser.IS, 0); } + public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } + public TerminalNode TRUE() { return getToken(DorisParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(DorisParser.FALSE, 0); } + public PredicateContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_predicate; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPredicate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPredicate(this); + } + } + + public final PredicateContext predicate() throws RecognitionException { + PredicateContext _localctx = new PredicateContext(_ctx, getState()); + enterRule(_localctx, 380, RULE_predicate); + int _la; + try { + setState(5569); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,810,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5519); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5518); + match(NOT); + } + } + + setState(5521); + ((PredicateContext)_localctx).kind = match(BETWEEN); + setState(5522); + ((PredicateContext)_localctx).lower = valueExpression(0); + setState(5523); + match(AND); + setState(5524); + ((PredicateContext)_localctx).upper = valueExpression(0); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5527); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5526); + match(NOT); + } + } + + setState(5529); + ((PredicateContext)_localctx).kind = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==LIKE || _la==REGEXP || _la==RLIKE) ) { + ((PredicateContext)_localctx).kind = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5530); + ((PredicateContext)_localctx).pattern = valueExpression(0); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(5532); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5531); + match(NOT); + } + } + + setState(5534); + ((PredicateContext)_localctx).kind = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 271)) & ~0x3f) == 0 && ((1L << (_la - 271)) & 127L) != 0)) ) { + ((PredicateContext)_localctx).kind = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5535); + ((PredicateContext)_localctx).pattern = valueExpression(0); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(5537); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5536); + match(NOT); + } + } + + setState(5539); + ((PredicateContext)_localctx).kind = match(IN); + setState(5540); + match(LEFT_PAREN); + setState(5541); + query(); + setState(5542); + match(RIGHT_PAREN); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(5545); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5544); + match(NOT); + } + } + + setState(5547); + ((PredicateContext)_localctx).kind = match(IN); + setState(5548); + match(LEFT_PAREN); + setState(5549); + expression(); + setState(5554); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5550); + match(COMMA); + setState(5551); + expression(); + } + } + setState(5556); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5557); + match(RIGHT_PAREN); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(5559); + match(IS); + setState(5561); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5560); + match(NOT); + } + } + + setState(5563); + ((PredicateContext)_localctx).kind = match(NULL); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(5564); + match(IS); + setState(5566); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5565); + match(NOT); + } + } + + setState(5568); + ((PredicateContext)_localctx).kind = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FALSE || _la==TRUE) ) { + ((PredicateContext)_localctx).kind = (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 ValueExpressionContext extends ParserRuleContext { + public ValueExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_valueExpression; } + + public ValueExpressionContext() { } + public void copyFrom(ValueExpressionContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ValueExpressionDefaultContext extends ValueExpressionContext { + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public ValueExpressionDefaultContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterValueExpressionDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitValueExpressionDefault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ComparisonContext extends ValueExpressionContext { + public ValueExpressionContext left; + public ValueExpressionContext right; + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComparison(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComparison(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ArithmeticBinaryContext extends ValueExpressionContext { + public ValueExpressionContext left; + public Token operator; + public ValueExpressionContext right; + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public TerminalNode HAT() { return getToken(DorisParser.HAT, 0); } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public TerminalNode SLASH() { return getToken(DorisParser.SLASH, 0); } + public TerminalNode MOD() { return getToken(DorisParser.MOD, 0); } + public TerminalNode DIV() { return getToken(DorisParser.DIV, 0); } + public TerminalNode PLUS() { return getToken(DorisParser.PLUS, 0); } + public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } + public TerminalNode AMPERSAND() { return getToken(DorisParser.AMPERSAND, 0); } + public TerminalNode PIPE() { return getToken(DorisParser.PIPE, 0); } + public ArithmeticBinaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArithmeticBinary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArithmeticBinary(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ArithmeticUnaryContext extends ValueExpressionContext { + public Token operator; + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } + public TerminalNode PLUS() { return getToken(DorisParser.PLUS, 0); } + public TerminalNode TILDE() { return getToken(DorisParser.TILDE, 0); } + public ArithmeticUnaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArithmeticUnary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArithmeticUnary(this); + } + } + + public final ValueExpressionContext valueExpression() throws RecognitionException { + return valueExpression(0); + } + + private ValueExpressionContext valueExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, _parentState); + ValueExpressionContext _prevctx = _localctx; + int _startState = 382; + enterRecursionRule(_localctx, 382, RULE_valueExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5575); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,811,_ctx) ) { + case 1: + { + _localctx = new ValueExpressionDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(5572); + primaryExpression(0); + } + break; + case 2: + { + _localctx = new ArithmeticUnaryContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5573); + ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & 35L) != 0)) ) { + ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5574); + valueExpression(7); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(5598); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,813,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(5596); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,812,_ctx) ) { + case 1: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(5577); + if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(5578); + ((ArithmeticBinaryContext)_localctx).operator = match(HAT); + setState(5579); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(7); + } + break; + case 2: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(5580); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(5581); + ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==DIV || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & 7L) != 0)) ) { + ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5582); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(6); + } + break; + case 3: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(5583); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(5584); + ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==PLUS || _la==SUBTRACT) ) { + ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5585); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(5); + } + break; + case 4: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(5586); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(5587); + ((ArithmeticBinaryContext)_localctx).operator = match(AMPERSAND); + setState(5588); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(4); + } + break; + case 5: + { + _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ArithmeticBinaryContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(5589); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(5590); + ((ArithmeticBinaryContext)_localctx).operator = match(PIPE); + setState(5591); + ((ArithmeticBinaryContext)_localctx).right = valueExpression(3); + } + break; + case 6: + { + _localctx = new ComparisonContext(new ValueExpressionContext(_parentctx, _parentState)); + ((ComparisonContext)_localctx).left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); + setState(5592); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(5593); + comparisonOperator(); + setState(5594); + ((ComparisonContext)_localctx).right = valueExpression(2); + } + break; + } + } + } + setState(5600); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,813,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryExpressionContext extends ParserRuleContext { + public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryExpression; } + + public PrimaryExpressionContext() { } + public void copyFrom(PrimaryExpressionContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DereferenceContext extends PrimaryExpressionContext { + public PrimaryExpressionContext base; + public IdentifierContext fieldName; + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDereference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDereference(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CurrentDateContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode CURRENT_DATE() { return getToken(DorisParser.CURRENT_DATE, 0); } + public CurrentDateContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentDate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentDate(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CastContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public CastDataTypeContext castDataType() { + return getRuleContext(CastDataTypeContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode CAST() { return getToken(DorisParser.CAST, 0); } + public CastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCast(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCast(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ParenthesizedExpressionContext extends PrimaryExpressionContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterParenthesizedExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitParenthesizedExpression(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UserVariableContext extends PrimaryExpressionContext { + public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public UserVariableContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUserVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUserVariable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ElementAtContext extends PrimaryExpressionContext { + public PrimaryExpressionContext value; + public ValueExpressionContext index; + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public ElementAtContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterElementAt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitElementAt(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class LocalTimestampContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode LOCALTIMESTAMP() { return getToken(DorisParser.LOCALTIMESTAMP, 0); } + public LocalTimestampContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLocalTimestamp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLocalTimestamp(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CharFunctionContext extends PrimaryExpressionContext { + public ExpressionContext expression; + public List arguments = new ArrayList(); + public IdentifierOrTextContext charSet; + public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public CharFunctionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCharFunction(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCharFunction(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class IntervalLiteralContext extends PrimaryExpressionContext { + public IntervalContext interval() { + return getRuleContext(IntervalContext.class,0); + } + public IntervalLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIntervalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIntervalLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SimpleCaseContext extends PrimaryExpressionContext { + public ExpressionContext value; + public ExpressionContext elseExpression; + public TerminalNode CASE() { return getToken(DorisParser.CASE, 0); } + public TerminalNode END() { return getToken(DorisParser.END, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List whenClause() { + return getRuleContexts(WhenClauseContext.class); + } + public WhenClauseContext whenClause(int i) { + return getRuleContext(WhenClauseContext.class,i); + } + public TerminalNode ELSE() { return getToken(DorisParser.ELSE, 0); } + public SimpleCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSimpleCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSimpleCase(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ColumnReferenceContext extends PrimaryExpressionContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode BINARY() { return getToken(DorisParser.BINARY, 0); } + public ColumnReferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnReference(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnReference(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StarContext extends PrimaryExpressionContext { + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public List exceptOrReplace() { + return getRuleContexts(ExceptOrReplaceContext.class); + } + public ExceptOrReplaceContext exceptOrReplace(int i) { + return getRuleContext(ExceptOrReplaceContext.class,i); + } + public QualifiedNameContext qualifiedName() { + return getRuleContext(QualifiedNameContext.class,0); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public StarContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStar(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStar(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SessionUserContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode SESSION_USER() { return getToken(DorisParser.SESSION_USER, 0); } + public SessionUserContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSessionUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSessionUser(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ConvertTypeContext extends PrimaryExpressionContext { + public ExpressionContext argument; + public TerminalNode CONVERT() { return getToken(DorisParser.CONVERT, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } + public CastDataTypeContext castDataType() { + return getRuleContext(CastDataTypeContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ConvertTypeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConvertType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConvertType(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ConvertCharSetContext extends PrimaryExpressionContext { + public ExpressionContext argument; + public IdentifierOrTextContext charSet; + public TerminalNode CONVERT() { return getToken(DorisParser.CONVERT, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode USING() { return getToken(DorisParser.USING, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public IdentifierOrTextContext identifierOrText() { + return getRuleContext(IdentifierOrTextContext.class,0); + } + public ConvertCharSetContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConvertCharSet(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConvertCharSet(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SubqueryExpressionContext extends PrimaryExpressionContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public QueryContext query() { + return getRuleContext(QueryContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public SubqueryExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSubqueryExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSubqueryExpression(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class EncryptKeyContext extends PrimaryExpressionContext { + public IdentifierContext dbName; + public IdentifierContext keyName; + public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public EncryptKeyContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterEncryptKey(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitEncryptKey(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CurrentTimeContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode CURRENT_TIME() { return getToken(DorisParser.CURRENT_TIME, 0); } + public CurrentTimeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentTime(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentTime(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class LocalTimeContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode LOCALTIME() { return getToken(DorisParser.LOCALTIME, 0); } + public LocalTimeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLocalTime(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLocalTime(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SystemVariableContext extends PrimaryExpressionContext { + public Token kind; + public TerminalNode DOUBLEATSIGN() { return getToken(DorisParser.DOUBLEATSIGN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } + public TerminalNode SESSION() { return getToken(DorisParser.SESSION, 0); } + public SystemVariableContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSystemVariable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSystemVariable(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CollateContext extends PrimaryExpressionContext { + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public TerminalNode COLLATE() { return getToken(DorisParser.COLLATE, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } + public CollateContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCollate(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCollate(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CurrentUserContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode CURRENT_USER() { return getToken(DorisParser.CURRENT_USER, 0); } + public CurrentUserContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentUser(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentUser(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ConstantDefaultContext extends PrimaryExpressionContext { + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConstantDefault(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConstantDefault(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ExtractContext extends PrimaryExpressionContext { + public IdentifierContext field; + public ValueExpressionContext source; + public TerminalNode EXTRACT() { return getToken(DorisParser.EXTRACT, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ValueExpressionContext valueExpression() { + return getRuleContext(ValueExpressionContext.class,0); + } + public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } + public TerminalNode TIMESTAMP() { return getToken(DorisParser.TIMESTAMP, 0); } + public ExtractContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExtract(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExtract(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class CurrentTimestampContext extends PrimaryExpressionContext { + public Token name; + public TerminalNode CURRENT_TIMESTAMP() { return getToken(DorisParser.CURRENT_TIMESTAMP, 0); } + public CurrentTimestampContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentTimestamp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentTimestamp(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class FunctionCallContext extends PrimaryExpressionContext { + public FunctionCallExpressionContext functionCallExpression() { + return getRuleContext(FunctionCallExpressionContext.class,0); + } + public FunctionCallContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionCall(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionCall(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ArraySliceContext extends PrimaryExpressionContext { + public PrimaryExpressionContext value; + public ValueExpressionContext begin; + public ValueExpressionContext end; + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public TerminalNode COLON() { return getToken(DorisParser.COLON, 0); } + public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } + public PrimaryExpressionContext primaryExpression() { + return getRuleContext(PrimaryExpressionContext.class,0); + } + public List valueExpression() { + return getRuleContexts(ValueExpressionContext.class); + } + public ValueExpressionContext valueExpression(int i) { + return getRuleContext(ValueExpressionContext.class,i); + } + public ArraySliceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArraySlice(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArraySlice(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SearchedCaseContext extends PrimaryExpressionContext { + public ExpressionContext elseExpression; + public TerminalNode CASE() { return getToken(DorisParser.CASE, 0); } + public TerminalNode END() { return getToken(DorisParser.END, 0); } + public List whenClause() { + return getRuleContexts(WhenClauseContext.class); + } + public WhenClauseContext whenClause(int i) { + return getRuleContext(WhenClauseContext.class,i); + } + public TerminalNode ELSE() { return getToken(DorisParser.ELSE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SearchedCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSearchedCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSearchedCase(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 = 384; + enterRecursionRule(_localctx, 384, RULE_primaryExpression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5727); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,826,_ctx) ) { + case 1: + { + _localctx = new CurrentDateContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(5602); + ((CurrentDateContext)_localctx).name = match(CURRENT_DATE); + } + break; + case 2: + { + _localctx = new CurrentTimeContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5603); + ((CurrentTimeContext)_localctx).name = match(CURRENT_TIME); + } + break; + case 3: + { + _localctx = new CurrentTimestampContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5604); + ((CurrentTimestampContext)_localctx).name = match(CURRENT_TIMESTAMP); + } + break; + case 4: + { + _localctx = new LocalTimeContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5605); + ((LocalTimeContext)_localctx).name = match(LOCALTIME); + } + break; + case 5: + { + _localctx = new LocalTimestampContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5606); + ((LocalTimestampContext)_localctx).name = match(LOCALTIMESTAMP); + } + break; + case 6: + { + _localctx = new CurrentUserContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5607); + ((CurrentUserContext)_localctx).name = match(CURRENT_USER); + } + break; + case 7: + { + _localctx = new SessionUserContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5608); + ((SessionUserContext)_localctx).name = match(SESSION_USER); + } + break; + case 8: + { + _localctx = new SearchedCaseContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5609); + match(CASE); + setState(5611); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(5610); + whenClause(); + } + } + setState(5613); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==WHEN ); + setState(5617); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(5615); + match(ELSE); + setState(5616); + ((SearchedCaseContext)_localctx).elseExpression = expression(); + } + } + + setState(5619); + match(END); + } + break; + case 9: + { + _localctx = new SimpleCaseContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5621); + match(CASE); + setState(5622); + ((SimpleCaseContext)_localctx).value = expression(); + setState(5624); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(5623); + whenClause(); + } + } + setState(5626); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( _la==WHEN ); + setState(5630); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(5628); + match(ELSE); + setState(5629); + ((SimpleCaseContext)_localctx).elseExpression = expression(); + } + } + + setState(5632); + match(END); + } + break; + case 10: + { + _localctx = new CastContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5634); + ((CastContext)_localctx).name = match(CAST); + setState(5635); + match(LEFT_PAREN); + setState(5636); + expression(); + setState(5637); + match(AS); + setState(5638); + castDataType(); + setState(5639); + match(RIGHT_PAREN); + } + break; + case 11: + { + _localctx = new ConstantDefaultContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5641); + constant(); + } + break; + case 12: + { + _localctx = new IntervalLiteralContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5642); + interval(); + } + break; + case 13: + { + _localctx = new StarContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5643); + match(ASTERISK); + setState(5647); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,818,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5644); + exceptOrReplace(); + } + } + } + setState(5649); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,818,_ctx); + } + } + break; + case 14: + { + _localctx = new StarContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5650); + qualifiedName(); + setState(5651); + match(DOT); + setState(5652); + match(ASTERISK); + setState(5656); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,819,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5653); + exceptOrReplace(); + } + } + } + setState(5658); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,819,_ctx); + } + } + break; + case 15: + { + _localctx = new CharFunctionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5659); + match(CHAR); + setState(5660); + match(LEFT_PAREN); + setState(5661); + ((CharFunctionContext)_localctx).expression = expression(); + ((CharFunctionContext)_localctx).arguments.add(((CharFunctionContext)_localctx).expression); + setState(5666); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5662); + match(COMMA); + setState(5663); + ((CharFunctionContext)_localctx).expression = expression(); + ((CharFunctionContext)_localctx).arguments.add(((CharFunctionContext)_localctx).expression); + } + } + setState(5668); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5671); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==USING) { + { + setState(5669); + match(USING); + setState(5670); + ((CharFunctionContext)_localctx).charSet = identifierOrText(); + } + } + + setState(5673); + match(RIGHT_PAREN); + } + break; + case 16: + { + _localctx = new ConvertCharSetContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5675); + match(CONVERT); + setState(5676); + match(LEFT_PAREN); + setState(5677); + ((ConvertCharSetContext)_localctx).argument = expression(); + setState(5678); + match(USING); + setState(5679); + ((ConvertCharSetContext)_localctx).charSet = identifierOrText(); + setState(5680); + match(RIGHT_PAREN); + } + break; + case 17: + { + _localctx = new ConvertTypeContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5682); + match(CONVERT); + setState(5683); + match(LEFT_PAREN); + setState(5684); + ((ConvertTypeContext)_localctx).argument = expression(); + setState(5685); + match(COMMA); + setState(5686); + castDataType(); + setState(5687); + match(RIGHT_PAREN); + } + break; + case 18: + { + _localctx = new FunctionCallContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5689); + functionCallExpression(); + } + break; + case 19: + { + _localctx = new SubqueryExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5690); + match(LEFT_PAREN); + setState(5691); + query(); + setState(5692); + match(RIGHT_PAREN); + } + break; + case 20: + { + _localctx = new UserVariableContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5694); + match(ATSIGN); + setState(5695); + identifierOrText(); + } + break; + case 21: + { + _localctx = new SystemVariableContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5696); + match(DOUBLEATSIGN); + setState(5699); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,822,_ctx) ) { + case 1: + { + setState(5697); + ((SystemVariableContext)_localctx).kind = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==GLOBAL || _la==SESSION) ) { + ((SystemVariableContext)_localctx).kind = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5698); + match(DOT); + } + break; + } + setState(5701); + identifier(); + } + break; + case 22: + { + _localctx = new ColumnReferenceContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5703); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BINARY) { + { + setState(5702); + match(BINARY); + } + } + + setState(5705); + identifier(); + } + break; + case 23: + { + _localctx = new ParenthesizedExpressionContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5706); + match(LEFT_PAREN); + setState(5707); + expression(); + setState(5708); + match(RIGHT_PAREN); + } + break; + case 24: + { + _localctx = new EncryptKeyContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5710); + match(KEY); + setState(5714); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,824,_ctx) ) { + case 1: + { + setState(5711); + ((EncryptKeyContext)_localctx).dbName = identifier(); + setState(5712); + match(DOT); + } + break; + } + setState(5716); + ((EncryptKeyContext)_localctx).keyName = identifier(); + } + break; + case 25: + { + _localctx = new ExtractContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(5717); + match(EXTRACT); + setState(5718); + match(LEFT_PAREN); + setState(5719); + ((ExtractContext)_localctx).field = identifier(); + setState(5720); + match(FROM); + setState(5722); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,825,_ctx) ) { + case 1: + { + setState(5721); + _la = _input.LA(1); + if ( !(_la==DATE || _la==TIMESTAMP) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + } + setState(5724); + ((ExtractContext)_localctx).source = valueExpression(0); + setState(5725); + match(RIGHT_PAREN); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(5755); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,830,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(5753); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,829,_ctx) ) { + case 1: + { + _localctx = new ElementAtContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((ElementAtContext)_localctx).value = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(5729); + if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); + setState(5730); + match(LEFT_BRACKET); + setState(5731); + ((ElementAtContext)_localctx).index = valueExpression(0); + setState(5732); + match(RIGHT_BRACKET); + } + break; + case 2: + { + _localctx = new ArraySliceContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((ArraySliceContext)_localctx).value = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(5734); + if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); + setState(5735); + match(LEFT_BRACKET); + setState(5736); + ((ArraySliceContext)_localctx).begin = valueExpression(0); + setState(5737); + match(COLON); + setState(5739); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419443415824845L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868097L) != 0)) { + { + setState(5738); + ((ArraySliceContext)_localctx).end = valueExpression(0); + } + } + + setState(5741); + match(RIGHT_BRACKET); + } + break; + case 3: + { + _localctx = new DereferenceContext(new PrimaryExpressionContext(_parentctx, _parentState)); + ((DereferenceContext)_localctx).base = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(5743); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(5744); + match(DOT); + setState(5745); + ((DereferenceContext)_localctx).fieldName = identifier(); + } + break; + case 4: + { + _localctx = new CollateContext(new PrimaryExpressionContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); + setState(5746); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(5747); + match(COLLATE); + setState(5751); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(5748); + identifier(); + } + break; + case STRING_LITERAL: + { + setState(5749); + match(STRING_LITERAL); + } + break; + case DEFAULT: + { + setState(5750); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + } + } + } + setState(5757); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,830,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExceptOrReplaceContext extends ParserRuleContext { + public ExceptOrReplaceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exceptOrReplace; } + + public ExceptOrReplaceContext() { } + public void copyFrom(ExceptOrReplaceContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ReplaceContext extends ExceptOrReplaceContext { + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public NamedExpressionSeqContext namedExpressionSeq() { + return getRuleContext(NamedExpressionSeqContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ReplaceContext(ExceptOrReplaceContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplace(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplace(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ExceptContext extends ExceptOrReplaceContext { + public TerminalNode EXCEPT() { return getToken(DorisParser.EXCEPT, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public NamedExpressionSeqContext namedExpressionSeq() { + return getRuleContext(NamedExpressionSeqContext.class,0); + } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public ExceptContext(ExceptOrReplaceContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExcept(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExcept(this); + } + } + + public final ExceptOrReplaceContext exceptOrReplace() throws RecognitionException { + ExceptOrReplaceContext _localctx = new ExceptOrReplaceContext(_ctx, getState()); + enterRule(_localctx, 386, RULE_exceptOrReplace); + try { + setState(5768); + _errHandler.sync(this); + switch (_input.LA(1)) { + case EXCEPT: + _localctx = new ExceptContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(5758); + match(EXCEPT); + setState(5759); + match(LEFT_PAREN); + setState(5760); + namedExpressionSeq(); + setState(5761); + match(RIGHT_PAREN); + } + break; + case REPLACE: + _localctx = new ReplaceContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(5763); + match(REPLACE); + setState(5764); + match(LEFT_PAREN); + setState(5765); + namedExpressionSeq(); + setState(5766); + match(RIGHT_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CastDataTypeContext extends ParserRuleContext { + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public TerminalNode SIGNED() { return getToken(DorisParser.SIGNED, 0); } + public TerminalNode UNSIGNED() { return getToken(DorisParser.UNSIGNED, 0); } + public TerminalNode INT() { return getToken(DorisParser.INT, 0); } + public TerminalNode INTEGER() { return getToken(DorisParser.INTEGER, 0); } + public CastDataTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_castDataType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCastDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCastDataType(this); + } + } + + public final CastDataTypeContext castDataType() throws RecognitionException { + CastDataTypeContext _localctx = new CastDataTypeContext(_ctx, getState()); + enterRule(_localctx, 388, RULE_castDataType); + int _la; + try { + setState(5775); + _errHandler.sync(this); + switch (_input.LA(1)) { + case AGG_STATE: + case ALL: + case ARRAY: + case BIGINT: + case BITMAP: + case BOOLEAN: + case CHAR: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DOUBLE: + case FLOAT: + case HLL: + case INT: + case INTEGER: + case IPV4: + case IPV6: + case JSON: + case JSONB: + case LARGEINT: + case MAP: + case QUANTILE_STATE: + case SMALLINT: + case STRING: + case STRUCT: + case TEXT: + case TIME: + case TINYINT: + case VARCHAR: + case VARIANT: + enterOuterAlt(_localctx, 1); + { + setState(5770); + dataType(); + } + break; + case SIGNED: + case UNSIGNED: + enterOuterAlt(_localctx, 2); + { + setState(5771); + _la = _input.LA(1); + if ( !(_la==SIGNED || _la==UNSIGNED) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5773); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INT || _la==INTEGER) { + { + setState(5772); + _la = _input.LA(1); + if ( !(_la==INT || _la==INTEGER) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FunctionCallExpressionContext extends ParserRuleContext { + public ExpressionContext expression; + public List arguments = new ArrayList(); + public FunctionIdentifierContext functionIdentifier() { + return getRuleContext(FunctionIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode OVER() { return getToken(DorisParser.OVER, 0); } + public WindowSpecContext windowSpec() { + return getRuleContext(WindowSpecContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } + public TerminalNode BY() { return getToken(DorisParser.BY, 0); } + public List sortItem() { + return getRuleContexts(SortItemContext.class); + } + public SortItemContext sortItem(int i) { + return getRuleContext(SortItemContext.class,i); + } + public TerminalNode DISTINCT() { return getToken(DorisParser.DISTINCT, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public FunctionCallExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionCallExpression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionCallExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionCallExpression(this); + } + } + + public final FunctionCallExpressionContext functionCallExpression() throws RecognitionException { + FunctionCallExpressionContext _localctx = new FunctionCallExpressionContext(_ctx, getState()); + enterRule(_localctx, 390, RULE_functionCallExpression); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5777); + functionIdentifier(); + setState(5778); + match(LEFT_PAREN); + setState(5802); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354246641284L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955653L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { + { + setState(5780); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ALL || _la==DISTINCT) { + { + setState(5779); + _la = _input.LA(1); + if ( !(_la==ALL || _la==DISTINCT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(5782); + ((FunctionCallExpressionContext)_localctx).expression = expression(); + ((FunctionCallExpressionContext)_localctx).arguments.add(((FunctionCallExpressionContext)_localctx).expression); + setState(5787); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5783); + match(COMMA); + setState(5784); + ((FunctionCallExpressionContext)_localctx).expression = expression(); + ((FunctionCallExpressionContext)_localctx).arguments.add(((FunctionCallExpressionContext)_localctx).expression); + } + } + setState(5789); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5800); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(5790); + match(ORDER); + setState(5791); + match(BY); + setState(5792); + sortItem(); + setState(5797); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5793); + match(COMMA); + setState(5794); + sortItem(); + } + } + setState(5799); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + } + } + + setState(5804); + match(RIGHT_PAREN); + setState(5807); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,839,_ctx) ) { + case 1: + { + setState(5805); + match(OVER); + setState(5806); + windowSpec(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FunctionIdentifierContext extends ParserRuleContext { + public IdentifierContext dbName; + public FunctionNameIdentifierContext functionNameIdentifier() { + return getRuleContext(FunctionNameIdentifierContext.class,0); + } + public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public FunctionIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionIdentifier(this); + } + } + + public final FunctionIdentifierContext functionIdentifier() throws RecognitionException { + FunctionIdentifierContext _localctx = new FunctionIdentifierContext(_ctx, getState()); + enterRule(_localctx, 392, RULE_functionIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(5812); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,840,_ctx) ) { + case 1: + { + setState(5809); + ((FunctionIdentifierContext)_localctx).dbName = identifier(); + setState(5810); + match(DOT); + } + break; + } + setState(5814); + functionNameIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FunctionNameIdentifierContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } + public TerminalNode CONNECTION_ID() { return getToken(DorisParser.CONNECTION_ID, 0); } + public TerminalNode CURRENT_CATALOG() { return getToken(DorisParser.CURRENT_CATALOG, 0); } + public TerminalNode CURRENT_USER() { return getToken(DorisParser.CURRENT_USER, 0); } + public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } + public TerminalNode IF() { return getToken(DorisParser.IF, 0); } + public TerminalNode LEFT() { return getToken(DorisParser.LEFT, 0); } + public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } + public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } + public TerminalNode REGEXP() { return getToken(DorisParser.REGEXP, 0); } + public TerminalNode RIGHT() { return getToken(DorisParser.RIGHT, 0); } + public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } + public TerminalNode SESSION_USER() { return getToken(DorisParser.SESSION_USER, 0); } + public TerminalNode TRIM() { return getToken(DorisParser.TRIM, 0); } + public TerminalNode USER() { return getToken(DorisParser.USER, 0); } + public FunctionNameIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionNameIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionNameIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionNameIdentifier(this); + } + } + + public final FunctionNameIdentifierContext functionNameIdentifier() throws RecognitionException { + FunctionNameIdentifierContext _localctx = new FunctionNameIdentifierContext(_ctx, getState()); + enterRule(_localctx, 394, RULE_functionNameIdentifier); + try { + setState(5832); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,841,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5816); + identifier(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5817); + match(ADD); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(5818); + match(CONNECTION_ID); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(5819); + match(CURRENT_CATALOG); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(5820); + match(CURRENT_USER); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(5821); + match(DATABASE); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(5822); + match(IF); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(5823); + match(LEFT); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(5824); + match(LIKE); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(5825); + match(PASSWORD); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(5826); + match(REGEXP); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(5827); + match(RIGHT); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(5828); + match(SCHEMA); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(5829); + match(SESSION_USER); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(5830); + match(TRIM); + } + break; + case 16: + enterOuterAlt(_localctx, 16); + { + setState(5831); + match(USER); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WindowSpecContext extends ParserRuleContext { + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public PartitionClauseContext partitionClause() { + return getRuleContext(PartitionClauseContext.class,0); + } + public SortClauseContext sortClause() { + return getRuleContext(SortClauseContext.class,0); + } + public WindowFrameContext windowFrame() { + return getRuleContext(WindowFrameContext.class,0); + } + public WindowSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_windowSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWindowSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWindowSpec(this); + } + } + + public final WindowSpecContext windowSpec() throws RecognitionException { + WindowSpecContext _localctx = new WindowSpecContext(_ctx, getState()); + enterRule(_localctx, 396, RULE_windowSpec); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5834); + match(LEFT_PAREN); + setState(5836); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==PARTITION) { + { + setState(5835); + partitionClause(); + } + } + + setState(5839); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ORDER) { + { + setState(5838); + sortClause(); + } + } + + setState(5842); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==RANGE || _la==ROWS) { + { + setState(5841); + windowFrame(); + } + } + + setState(5844); + match(RIGHT_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WindowFrameContext extends ParserRuleContext { + public FrameBoundaryContext start; + public FrameBoundaryContext end; + public FrameUnitsContext frameUnits() { + return getRuleContext(FrameUnitsContext.class,0); + } + public List frameBoundary() { + return getRuleContexts(FrameBoundaryContext.class); + } + public FrameBoundaryContext frameBoundary(int i) { + return getRuleContext(FrameBoundaryContext.class,i); + } + public TerminalNode BETWEEN() { return getToken(DorisParser.BETWEEN, 0); } + public TerminalNode AND() { return getToken(DorisParser.AND, 0); } + public WindowFrameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_windowFrame; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWindowFrame(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWindowFrame(this); + } + } + + public final WindowFrameContext windowFrame() throws RecognitionException { + WindowFrameContext _localctx = new WindowFrameContext(_ctx, getState()); + enterRule(_localctx, 398, RULE_windowFrame); + try { + setState(5855); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,845,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5846); + frameUnits(); + setState(5847); + ((WindowFrameContext)_localctx).start = frameBoundary(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5849); + frameUnits(); + setState(5850); + match(BETWEEN); + setState(5851); + ((WindowFrameContext)_localctx).start = frameBoundary(); + setState(5852); + match(AND); + setState(5853); + ((WindowFrameContext)_localctx).end = frameBoundary(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FrameUnitsContext extends ParserRuleContext { + public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } + public TerminalNode RANGE() { return getToken(DorisParser.RANGE, 0); } + public FrameUnitsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_frameUnits; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFrameUnits(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFrameUnits(this); + } + } + + public final FrameUnitsContext frameUnits() throws RecognitionException { + FrameUnitsContext _localctx = new FrameUnitsContext(_ctx, getState()); + enterRule(_localctx, 400, RULE_frameUnits); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5857); + _la = _input.LA(1); + if ( !(_la==RANGE || _la==ROWS) ) { + _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 FrameBoundaryContext extends ParserRuleContext { + public Token boundType; + public TerminalNode UNBOUNDED() { return getToken(DorisParser.UNBOUNDED, 0); } + public TerminalNode PRECEDING() { return getToken(DorisParser.PRECEDING, 0); } + public TerminalNode FOLLOWING() { return getToken(DorisParser.FOLLOWING, 0); } + public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } + public TerminalNode CURRENT() { return getToken(DorisParser.CURRENT, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public FrameBoundaryContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_frameBoundary; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFrameBoundary(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFrameBoundary(this); + } + } + + public final FrameBoundaryContext frameBoundary() throws RecognitionException { + FrameBoundaryContext _localctx = new FrameBoundaryContext(_ctx, getState()); + enterRule(_localctx, 402, RULE_frameBoundary); + int _la; + try { + setState(5866); + _errHandler.sync(this); + switch (_input.LA(1)) { + case UNBOUNDED: + enterOuterAlt(_localctx, 1); + { + setState(5859); + match(UNBOUNDED); + setState(5860); + ((FrameBoundaryContext)_localctx).boundType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FOLLOWING || _la==PRECEDING) ) { + ((FrameBoundaryContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case CURRENT: + enterOuterAlt(_localctx, 2); + { + setState(5861); + ((FrameBoundaryContext)_localctx).boundType = match(CURRENT); + setState(5862); + match(ROW); + } + break; + case LEFT_PAREN: + case LEFT_BRACKET: + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case ADD: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BINARY: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CASE: + case CAST: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATABASE: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXISTS: + case EXPIRED: + case EXTERNAL: + case EXTRACT: + case FAILED_LOGIN_ATTEMPTS: + case FALSE: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IF: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INTERVAL: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case KEY: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LEFT: + case LESS: + case LEVEL: + case LIKE: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NOT: + case NULL: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLACEHOLDER: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REGEXP: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RIGHT: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRIM: + case TRUE: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case PLUS: + case SUBTRACT: + case ASTERISK: + case TILDE: + case LOGICALNOT: + case HINT_START: + case HINT_END: + case COMMENT_START: + case ATSIGN: + case DOUBLEATSIGN: + case STRING_LITERAL: + case INTEGER_VALUE: + case EXPONENT_VALUE: + case DECIMAL_VALUE: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + enterOuterAlt(_localctx, 3); + { + setState(5863); + expression(); + setState(5864); + ((FrameBoundaryContext)_localctx).boundType = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==FOLLOWING || _la==PRECEDING) ) { + ((FrameBoundaryContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QualifiedNameContext extends ParserRuleContext { + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public List DOT() { return getTokens(DorisParser.DOT); } + public TerminalNode DOT(int i) { + return getToken(DorisParser.DOT, i); + } + 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 DorisParserListener ) ((DorisParserListener)listener).enterQualifiedName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQualifiedName(this); + } + } + + public final QualifiedNameContext qualifiedName() throws RecognitionException { + QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); + enterRule(_localctx, 404, RULE_qualifiedName); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(5868); + identifier(); + setState(5873); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,847,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(5869); + match(DOT); + setState(5870); + identifier(); + } + } + } + setState(5875); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,847,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SpecifiedPartitionContext extends ParserRuleContext { + public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } + public SpecifiedPartitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_specifiedPartition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSpecifiedPartition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSpecifiedPartition(this); + } + } + + public final SpecifiedPartitionContext specifiedPartition() throws RecognitionException { + SpecifiedPartitionContext _localctx = new SpecifiedPartitionContext(_ctx, getState()); + enterRule(_localctx, 406, RULE_specifiedPartition); + int _la; + try { + setState(5889); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,851,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(5877); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(5876); + match(TEMPORARY); + } + } + + setState(5879); + match(PARTITION); + setState(5882); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + case IDENTIFIER: + case BACKQUOTED_IDENTIFIER: + { + setState(5880); + identifier(); + } + break; + case LEFT_PAREN: + { + setState(5881); + identifierList(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(5885); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==TEMPORARY) { + { + setState(5884); + match(TEMPORARY); + } + } + + setState(5887); + match(PARTITIONS); + setState(5888); + identifierList(); + } + break; + } + } + 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 { + public ConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constant; } + + public ConstantContext() { } + public void copyFrom(ConstantContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StructLiteralContext extends ConstantContext { + public ConstantContext constant; + public List items = new ArrayList(); + public TerminalNode LEFT_BRACE() { return getToken(DorisParser.LEFT_BRACE, 0); } + public TerminalNode RIGHT_BRACE() { return getToken(DorisParser.RIGHT_BRACE, 0); } + public List constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public StructLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStructLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStructLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class NullLiteralContext extends ConstantContext { + public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } + public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNullLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNullLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class StringLiteralContext extends ConstantContext { + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode BINARY() { return getToken(DorisParser.BINARY, 0); } + public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStringLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStringLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class TypeConstructorContext extends ConstantContext { + public Token type; + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } + public TerminalNode DATEV1() { return getToken(DorisParser.DATEV1, 0); } + public TerminalNode DATEV2() { return getToken(DorisParser.DATEV2, 0); } + public TerminalNode TIMESTAMP() { return getToken(DorisParser.TIMESTAMP, 0); } + public TypeConstructorContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTypeConstructor(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTypeConstructor(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ArrayLiteralContext extends ConstantContext { + public ConstantContext constant; + public List items = new ArrayList(); + public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } + public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public List constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public ArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArrayLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArrayLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PlaceholderContext extends ConstantContext { + public TerminalNode PLACEHOLDER() { return getToken(DorisParser.PLACEHOLDER, 0); } + public PlaceholderContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPlaceholder(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPlaceholder(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class MapLiteralContext extends ConstantContext { + public ConstantContext constant; + public List items = new ArrayList(); + public TerminalNode LEFT_BRACE() { return getToken(DorisParser.LEFT_BRACE, 0); } + public TerminalNode RIGHT_BRACE() { return getToken(DorisParser.RIGHT_BRACE, 0); } + public List COLON() { return getTokens(DorisParser.COLON); } + public TerminalNode COLON(int i) { + return getToken(DorisParser.COLON, i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public List constant() { + return getRuleContexts(ConstantContext.class); + } + public ConstantContext constant(int i) { + return getRuleContext(ConstantContext.class,i); + } + public MapLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMapLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMapLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class NumericLiteralContext extends ConstantContext { + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public NumericLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNumericLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNumericLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BooleanLiteralContext extends ConstantContext { + public BooleanValueContext booleanValue() { + return getRuleContext(BooleanValueContext.class,0); + } + public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBooleanLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBooleanLiteral(this); + } + } + + public final ConstantContext constant() throws RecognitionException { + ConstantContext _localctx = new ConstantContext(_ctx, getState()); + enterRule(_localctx, 408, RULE_constant); + int _la; + try { + setState(5942); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,858,_ctx) ) { + case 1: + _localctx = new NullLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(5891); + match(NULL); + } + break; + case 2: + _localctx = new TypeConstructorContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(5892); + ((TypeConstructorContext)_localctx).type = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & 41L) != 0) || _la==TIMESTAMP) ) { + ((TypeConstructorContext)_localctx).type = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(5893); + match(STRING_LITERAL); + } + break; + case 3: + _localctx = new NumericLiteralContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(5894); + number(); + } + break; + case 4: + _localctx = new BooleanLiteralContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(5895); + booleanValue(); + } + break; + case 5: + _localctx = new StringLiteralContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(5897); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==BINARY) { + { + setState(5896); + match(BINARY); + } + } + + setState(5899); + match(STRING_LITERAL); + } + break; + case 6: + _localctx = new ArrayLiteralContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(5900); + match(LEFT_BRACKET); + setState(5902); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8796093022848L) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & 576460752303423529L) != 0) || _la==NULL || _la==PLACEHOLDER || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & 576460752303423745L) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & 225L) != 0)) { + { + setState(5901); + ((ArrayLiteralContext)_localctx).constant = constant(); + ((ArrayLiteralContext)_localctx).items.add(((ArrayLiteralContext)_localctx).constant); + } + } + + setState(5908); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5904); + match(COMMA); + setState(5905); + ((ArrayLiteralContext)_localctx).constant = constant(); + ((ArrayLiteralContext)_localctx).items.add(((ArrayLiteralContext)_localctx).constant); + } + } + setState(5910); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5911); + match(RIGHT_BRACKET); + } + break; + case 7: + _localctx = new MapLiteralContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(5912); + match(LEFT_BRACE); + setState(5917); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8796093022848L) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & 576460752303423529L) != 0) || _la==NULL || _la==PLACEHOLDER || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & 576460752303423745L) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & 225L) != 0)) { + { + setState(5913); + ((MapLiteralContext)_localctx).constant = constant(); + ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); + setState(5914); + match(COLON); + setState(5915); + ((MapLiteralContext)_localctx).constant = constant(); + ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); + } + } + + setState(5926); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5919); + match(COMMA); + setState(5920); + ((MapLiteralContext)_localctx).constant = constant(); + ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); + setState(5921); + match(COLON); + setState(5922); + ((MapLiteralContext)_localctx).constant = constant(); + ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); + } + } + setState(5928); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5929); + match(RIGHT_BRACE); + } + break; + case 8: + _localctx = new StructLiteralContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(5930); + match(LEFT_BRACE); + setState(5931); + ((StructLiteralContext)_localctx).constant = constant(); + ((StructLiteralContext)_localctx).items.add(((StructLiteralContext)_localctx).constant); + setState(5936); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5932); + match(COMMA); + setState(5933); + ((StructLiteralContext)_localctx).constant = constant(); + ((StructLiteralContext)_localctx).items.add(((StructLiteralContext)_localctx).constant); + } + } + setState(5938); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(5939); + match(RIGHT_BRACE); + } + break; + case 9: + _localctx = new PlaceholderContext(_localctx); + enterOuterAlt(_localctx, 9); + { + setState(5941); + match(PLACEHOLDER); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ComparisonOperatorContext extends ParserRuleContext { + public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } + public TerminalNode NEQ() { return getToken(DorisParser.NEQ, 0); } + public TerminalNode LT() { return getToken(DorisParser.LT, 0); } + public TerminalNode LTE() { return getToken(DorisParser.LTE, 0); } + public TerminalNode GT() { return getToken(DorisParser.GT, 0); } + public TerminalNode GTE() { return getToken(DorisParser.GTE, 0); } + public TerminalNode NSEQ() { return getToken(DorisParser.NSEQ, 0); } + public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comparisonOperator; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComparisonOperator(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComparisonOperator(this); + } + } + + public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { + ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); + enterRule(_localctx, 410, RULE_comparisonOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5944); + _la = _input.LA(1); + if ( !(((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & 127L) != 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 BooleanValueContext extends ParserRuleContext { + public TerminalNode TRUE() { return getToken(DorisParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(DorisParser.FALSE, 0); } + public BooleanValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_booleanValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBooleanValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBooleanValue(this); + } + } + + public final BooleanValueContext booleanValue() throws RecognitionException { + BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); + enterRule(_localctx, 412, RULE_booleanValue); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5946); + _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(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class WhenClauseContext extends ParserRuleContext { + public ExpressionContext condition; + public ExpressionContext result; + public TerminalNode WHEN() { return getToken(DorisParser.WHEN, 0); } + public TerminalNode THEN() { return getToken(DorisParser.THEN, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public WhenClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_whenClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWhenClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWhenClause(this); + } + } + + public final WhenClauseContext whenClause() throws RecognitionException { + WhenClauseContext _localctx = new WhenClauseContext(_ctx, getState()); + enterRule(_localctx, 414, RULE_whenClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(5948); + match(WHEN); + setState(5949); + ((WhenClauseContext)_localctx).condition = expression(); + setState(5950); + match(THEN); + setState(5951); + ((WhenClauseContext)_localctx).result = expression(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IntervalContext extends ParserRuleContext { + public ExpressionContext value; + public UnitIdentifierContext unit; + public TerminalNode INTERVAL() { return getToken(DorisParser.INTERVAL, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public UnitIdentifierContext unitIdentifier() { + return getRuleContext(UnitIdentifierContext.class,0); + } + public IntervalContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interval; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInterval(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInterval(this); + } + } + + public final IntervalContext interval() throws RecognitionException { + IntervalContext _localctx = new IntervalContext(_ctx, getState()); + enterRule(_localctx, 416, RULE_interval); + try { + enterOuterAlt(_localctx, 1); + { + setState(5953); + match(INTERVAL); + setState(5954); + ((IntervalContext)_localctx).value = expression(); + setState(5955); + ((IntervalContext)_localctx).unit = unitIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnitIdentifierContext extends ParserRuleContext { + public TerminalNode YEAR() { return getToken(DorisParser.YEAR, 0); } + public TerminalNode QUARTER() { return getToken(DorisParser.QUARTER, 0); } + public TerminalNode MONTH() { return getToken(DorisParser.MONTH, 0); } + public TerminalNode WEEK() { return getToken(DorisParser.WEEK, 0); } + public TerminalNode DAY() { return getToken(DorisParser.DAY, 0); } + public TerminalNode HOUR() { return getToken(DorisParser.HOUR, 0); } + public TerminalNode MINUTE() { return getToken(DorisParser.MINUTE, 0); } + public TerminalNode SECOND() { return getToken(DorisParser.SECOND, 0); } + public UnitIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unitIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnitIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnitIdentifier(this); + } + } + + public final UnitIdentifierContext unitIdentifier() throws RecognitionException { + UnitIdentifierContext _localctx = new UnitIdentifierContext(_ctx, getState()); + enterRule(_localctx, 418, RULE_unitIdentifier); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5957); + _la = _input.LA(1); + if ( !(_la==DAY || _la==HOUR || _la==MINUTE || _la==MONTH || _la==QUARTER || _la==SECOND || _la==WEEK || _la==YEAR) ) { + _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 DataTypeWithNullableContext extends ParserRuleContext { + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } + public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } + public DataTypeWithNullableContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dataTypeWithNullable; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDataTypeWithNullable(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDataTypeWithNullable(this); + } + } + + public final DataTypeWithNullableContext dataTypeWithNullable() throws RecognitionException { + DataTypeWithNullableContext _localctx = new DataTypeWithNullableContext(_ctx, getState()); + enterRule(_localctx, 420, RULE_dataTypeWithNullable); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(5959); + dataType(); + setState(5964); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT || _la==NULL) { + { + setState(5961); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(5960); + match(NOT); + } + } + + setState(5963); + match(NULL); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DataTypeContext extends ParserRuleContext { + public DataTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dataType; } + + public DataTypeContext() { } + public void copyFrom(DataTypeContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class VariantPredefinedFieldsContext extends DataTypeContext { + public TerminalNode VARIANT() { return getToken(DorisParser.VARIANT, 0); } + public TerminalNode LT() { return getToken(DorisParser.LT, 0); } + public VariantSubColTypeListContext variantSubColTypeList() { + return getRuleContext(VariantSubColTypeListContext.class,0); + } + public TerminalNode GT() { return getToken(DorisParser.GT, 0); } + public VariantPredefinedFieldsContext(DataTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantPredefinedFields(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantPredefinedFields(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ComplexDataTypeContext extends DataTypeContext { + public Token complex; + public TerminalNode LT() { return getToken(DorisParser.LT, 0); } + public List dataType() { + return getRuleContexts(DataTypeContext.class); + } + public DataTypeContext dataType(int i) { + return getRuleContext(DataTypeContext.class,i); + } + public TerminalNode GT() { return getToken(DorisParser.GT, 0); } + public TerminalNode ARRAY() { return getToken(DorisParser.ARRAY, 0); } + public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } + public TerminalNode MAP() { return getToken(DorisParser.MAP, 0); } + public ComplexColTypeListContext complexColTypeList() { + return getRuleContext(ComplexColTypeListContext.class,0); + } + public TerminalNode STRUCT() { return getToken(DorisParser.STRUCT, 0); } + public ComplexDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComplexDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComplexDataType(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AggStateDataTypeContext extends DataTypeContext { + public DataTypeWithNullableContext dataTypeWithNullable; + public List dataTypes = new ArrayList(); + public TerminalNode AGG_STATE() { return getToken(DorisParser.AGG_STATE, 0); } + public TerminalNode LT() { return getToken(DorisParser.LT, 0); } + public FunctionNameIdentifierContext functionNameIdentifier() { + return getRuleContext(FunctionNameIdentifierContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public TerminalNode GT() { return getToken(DorisParser.GT, 0); } + public List dataTypeWithNullable() { + return getRuleContexts(DataTypeWithNullableContext.class); + } + public DataTypeWithNullableContext dataTypeWithNullable(int i) { + return getRuleContext(DataTypeWithNullableContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public AggStateDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAggStateDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAggStateDataType(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class PrimitiveDataTypeContext extends DataTypeContext { + public PrimitiveColTypeContext primitiveColType() { + return getRuleContext(PrimitiveColTypeContext.class,0); + } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } + public TerminalNode INTEGER_VALUE(int i) { + return getToken(DorisParser.INTEGER_VALUE, i); + } + public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public PrimitiveDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrimitiveDataType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrimitiveDataType(this); + } + } + + public final DataTypeContext dataType() throws RecognitionException { + DataTypeContext _localctx = new DataTypeContext(_ctx, getState()); + enterRule(_localctx, 422, RULE_dataType); + int _la; + try { + setState(6016); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,864,_ctx) ) { + case 1: + _localctx = new ComplexDataTypeContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(5966); + ((ComplexDataTypeContext)_localctx).complex = match(ARRAY); + setState(5967); + match(LT); + setState(5968); + dataType(); + setState(5969); + match(GT); + } + break; + case 2: + _localctx = new ComplexDataTypeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(5971); + ((ComplexDataTypeContext)_localctx).complex = match(MAP); + setState(5972); + match(LT); + setState(5973); + dataType(); + setState(5974); + match(COMMA); + setState(5975); + dataType(); + setState(5976); + match(GT); + } + break; + case 3: + _localctx = new ComplexDataTypeContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(5978); + ((ComplexDataTypeContext)_localctx).complex = match(STRUCT); + setState(5979); + match(LT); + setState(5980); + complexColTypeList(); + setState(5981); + match(GT); + } + break; + case 4: + _localctx = new VariantPredefinedFieldsContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(5983); + match(VARIANT); + setState(5984); + match(LT); + setState(5985); + variantSubColTypeList(); + setState(5986); + match(GT); + } + break; + case 5: + _localctx = new AggStateDataTypeContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(5988); + match(AGG_STATE); + setState(5989); + match(LT); + setState(5990); + functionNameIdentifier(); + setState(5991); + match(LEFT_PAREN); + setState(5992); + ((AggStateDataTypeContext)_localctx).dataTypeWithNullable = dataTypeWithNullable(); + ((AggStateDataTypeContext)_localctx).dataTypes.add(((AggStateDataTypeContext)_localctx).dataTypeWithNullable); + setState(5997); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(5993); + match(COMMA); + setState(5994); + ((AggStateDataTypeContext)_localctx).dataTypeWithNullable = dataTypeWithNullable(); + ((AggStateDataTypeContext)_localctx).dataTypes.add(((AggStateDataTypeContext)_localctx).dataTypeWithNullable); + } + } + setState(5999); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(6000); + match(RIGHT_PAREN); + setState(6001); + match(GT); + } + break; + case 6: + _localctx = new PrimitiveDataTypeContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(6003); + primitiveColType(); + setState(6014); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==LEFT_PAREN) { + { + setState(6004); + match(LEFT_PAREN); + setState(6005); + _la = _input.LA(1); + if ( !(_la==ASTERISK || _la==INTEGER_VALUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(6010); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(6006); + match(COMMA); + setState(6007); + match(INTEGER_VALUE); + } + } + setState(6012); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(6013); + match(RIGHT_PAREN); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimitiveColTypeContext extends ParserRuleContext { + public Token type; + public TerminalNode TINYINT() { return getToken(DorisParser.TINYINT, 0); } + public TerminalNode SMALLINT() { return getToken(DorisParser.SMALLINT, 0); } + public TerminalNode INT() { return getToken(DorisParser.INT, 0); } + public TerminalNode INTEGER() { return getToken(DorisParser.INTEGER, 0); } + public TerminalNode BIGINT() { return getToken(DorisParser.BIGINT, 0); } + public TerminalNode LARGEINT() { return getToken(DorisParser.LARGEINT, 0); } + public TerminalNode BOOLEAN() { return getToken(DorisParser.BOOLEAN, 0); } + public TerminalNode FLOAT() { return getToken(DorisParser.FLOAT, 0); } + public TerminalNode DOUBLE() { return getToken(DorisParser.DOUBLE, 0); } + public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } + public TerminalNode DATETIME() { return getToken(DorisParser.DATETIME, 0); } + public TerminalNode TIME() { return getToken(DorisParser.TIME, 0); } + public TerminalNode DATEV2() { return getToken(DorisParser.DATEV2, 0); } + public TerminalNode DATETIMEV2() { return getToken(DorisParser.DATETIMEV2, 0); } + public TerminalNode DATEV1() { return getToken(DorisParser.DATEV1, 0); } + public TerminalNode DATETIMEV1() { return getToken(DorisParser.DATETIMEV1, 0); } + public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } + public TerminalNode QUANTILE_STATE() { return getToken(DorisParser.QUANTILE_STATE, 0); } + public TerminalNode HLL() { return getToken(DorisParser.HLL, 0); } + public TerminalNode AGG_STATE() { return getToken(DorisParser.AGG_STATE, 0); } + public TerminalNode STRING() { return getToken(DorisParser.STRING, 0); } + public TerminalNode JSON() { return getToken(DorisParser.JSON, 0); } + public TerminalNode JSONB() { return getToken(DorisParser.JSONB, 0); } + public TerminalNode TEXT() { return getToken(DorisParser.TEXT, 0); } + public TerminalNode VARCHAR() { return getToken(DorisParser.VARCHAR, 0); } + public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } + public TerminalNode DECIMAL() { return getToken(DorisParser.DECIMAL, 0); } + public TerminalNode DECIMALV2() { return getToken(DorisParser.DECIMALV2, 0); } + public TerminalNode DECIMALV3() { return getToken(DorisParser.DECIMALV3, 0); } + public TerminalNode IPV4() { return getToken(DorisParser.IPV4, 0); } + public TerminalNode IPV6() { return getToken(DorisParser.IPV6, 0); } + public TerminalNode VARIANT() { return getToken(DorisParser.VARIANT, 0); } + public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } + public PrimitiveColTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primitiveColType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrimitiveColType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrimitiveColType(this); + } + } + + public final PrimitiveColTypeContext primitiveColType() throws RecognitionException { + PrimitiveColTypeContext _localctx = new PrimitiveColTypeContext(_ctx, getState()); + enterRule(_localctx, 424, RULE_primitiveColType); + int _la; + try { + setState(6050); + _errHandler.sync(this); + switch (_input.LA(1)) { + case TINYINT: + enterOuterAlt(_localctx, 1); + { + setState(6018); + ((PrimitiveColTypeContext)_localctx).type = match(TINYINT); + } + break; + case SMALLINT: + enterOuterAlt(_localctx, 2); + { + setState(6019); + ((PrimitiveColTypeContext)_localctx).type = match(SMALLINT); + } + break; + case INT: + case INTEGER: + enterOuterAlt(_localctx, 3); + { + setState(6020); + ((PrimitiveColTypeContext)_localctx).type = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==INT || _la==INTEGER) ) { + ((PrimitiveColTypeContext)_localctx).type = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + break; + case BIGINT: + enterOuterAlt(_localctx, 4); + { + setState(6021); + ((PrimitiveColTypeContext)_localctx).type = match(BIGINT); + } + break; + case LARGEINT: + enterOuterAlt(_localctx, 5); + { + setState(6022); + ((PrimitiveColTypeContext)_localctx).type = match(LARGEINT); + } + break; + case BOOLEAN: + enterOuterAlt(_localctx, 6); + { + setState(6023); + ((PrimitiveColTypeContext)_localctx).type = match(BOOLEAN); + } + break; + case FLOAT: + enterOuterAlt(_localctx, 7); + { + setState(6024); + ((PrimitiveColTypeContext)_localctx).type = match(FLOAT); + } + break; + case DOUBLE: + enterOuterAlt(_localctx, 8); + { + setState(6025); + ((PrimitiveColTypeContext)_localctx).type = match(DOUBLE); + } + break; + case DATE: + enterOuterAlt(_localctx, 9); + { + setState(6026); + ((PrimitiveColTypeContext)_localctx).type = match(DATE); + } + break; + case DATETIME: + enterOuterAlt(_localctx, 10); + { + setState(6027); + ((PrimitiveColTypeContext)_localctx).type = match(DATETIME); + } + break; + case TIME: + enterOuterAlt(_localctx, 11); + { + setState(6028); + ((PrimitiveColTypeContext)_localctx).type = match(TIME); + } + break; + case DATEV2: + enterOuterAlt(_localctx, 12); + { + setState(6029); + ((PrimitiveColTypeContext)_localctx).type = match(DATEV2); + } + break; + case DATETIMEV2: + enterOuterAlt(_localctx, 13); + { + setState(6030); + ((PrimitiveColTypeContext)_localctx).type = match(DATETIMEV2); + } + break; + case DATEV1: + enterOuterAlt(_localctx, 14); + { + setState(6031); + ((PrimitiveColTypeContext)_localctx).type = match(DATEV1); + } + break; + case DATETIMEV1: + enterOuterAlt(_localctx, 15); + { + setState(6032); + ((PrimitiveColTypeContext)_localctx).type = match(DATETIMEV1); + } + break; + case BITMAP: + enterOuterAlt(_localctx, 16); + { + setState(6033); + ((PrimitiveColTypeContext)_localctx).type = match(BITMAP); + } + break; + case QUANTILE_STATE: + enterOuterAlt(_localctx, 17); + { + setState(6034); + ((PrimitiveColTypeContext)_localctx).type = match(QUANTILE_STATE); + } + break; + case HLL: + enterOuterAlt(_localctx, 18); + { + setState(6035); + ((PrimitiveColTypeContext)_localctx).type = match(HLL); + } + break; + case AGG_STATE: + enterOuterAlt(_localctx, 19); + { + setState(6036); + ((PrimitiveColTypeContext)_localctx).type = match(AGG_STATE); + } + break; + case STRING: + enterOuterAlt(_localctx, 20); + { + setState(6037); + ((PrimitiveColTypeContext)_localctx).type = match(STRING); + } + break; + case JSON: + enterOuterAlt(_localctx, 21); + { + setState(6038); + ((PrimitiveColTypeContext)_localctx).type = match(JSON); + } + break; + case JSONB: + enterOuterAlt(_localctx, 22); + { + setState(6039); + ((PrimitiveColTypeContext)_localctx).type = match(JSONB); + } + break; + case TEXT: + enterOuterAlt(_localctx, 23); + { + setState(6040); + ((PrimitiveColTypeContext)_localctx).type = match(TEXT); + } + break; + case VARCHAR: + enterOuterAlt(_localctx, 24); + { + setState(6041); + ((PrimitiveColTypeContext)_localctx).type = match(VARCHAR); + } + break; + case CHAR: + enterOuterAlt(_localctx, 25); + { + setState(6042); + ((PrimitiveColTypeContext)_localctx).type = match(CHAR); + } + break; + case DECIMAL: + enterOuterAlt(_localctx, 26); + { + setState(6043); + ((PrimitiveColTypeContext)_localctx).type = match(DECIMAL); + } + break; + case DECIMALV2: + enterOuterAlt(_localctx, 27); + { + setState(6044); + ((PrimitiveColTypeContext)_localctx).type = match(DECIMALV2); + } + break; + case DECIMALV3: + enterOuterAlt(_localctx, 28); + { + setState(6045); + ((PrimitiveColTypeContext)_localctx).type = match(DECIMALV3); + } + break; + case IPV4: + enterOuterAlt(_localctx, 29); + { + setState(6046); + ((PrimitiveColTypeContext)_localctx).type = match(IPV4); + } + break; + case IPV6: + enterOuterAlt(_localctx, 30); + { + setState(6047); + ((PrimitiveColTypeContext)_localctx).type = match(IPV6); + } + break; + case VARIANT: + enterOuterAlt(_localctx, 31); + { + setState(6048); + ((PrimitiveColTypeContext)_localctx).type = match(VARIANT); + } + break; + case ALL: + enterOuterAlt(_localctx, 32); + { + setState(6049); + ((PrimitiveColTypeContext)_localctx).type = match(ALL); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ComplexColTypeListContext extends ParserRuleContext { + public List complexColType() { + return getRuleContexts(ComplexColTypeContext.class); + } + public ComplexColTypeContext complexColType(int i) { + return getRuleContext(ComplexColTypeContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public ComplexColTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_complexColTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComplexColTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComplexColTypeList(this); + } + } + + public final ComplexColTypeListContext complexColTypeList() throws RecognitionException { + ComplexColTypeListContext _localctx = new ComplexColTypeListContext(_ctx, getState()); + enterRule(_localctx, 426, RULE_complexColTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6052); + complexColType(); + setState(6057); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(6053); + match(COMMA); + setState(6054); + complexColType(); + } + } + setState(6059); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ComplexColTypeContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public TerminalNode COLON() { return getToken(DorisParser.COLON, 0); } + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public ComplexColTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_complexColType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComplexColType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComplexColType(this); + } + } + + public final ComplexColTypeContext complexColType() throws RecognitionException { + ComplexColTypeContext _localctx = new ComplexColTypeContext(_ctx, getState()); + enterRule(_localctx, 428, RULE_complexColType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6060); + identifier(); + setState(6061); + match(COLON); + setState(6062); + dataType(); + setState(6064); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(6063); + commentSpec(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariantSubColTypeListContext extends ParserRuleContext { + public List variantSubColType() { + return getRuleContexts(VariantSubColTypeContext.class); + } + public VariantSubColTypeContext variantSubColType(int i) { + return getRuleContext(VariantSubColTypeContext.class,i); + } + public List COMMA() { return getTokens(DorisParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(DorisParser.COMMA, i); + } + public VariantSubColTypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variantSubColTypeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantSubColTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantSubColTypeList(this); + } + } + + public final VariantSubColTypeListContext variantSubColTypeList() throws RecognitionException { + VariantSubColTypeListContext _localctx = new VariantSubColTypeListContext(_ctx, getState()); + enterRule(_localctx, 430, RULE_variantSubColTypeList); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6066); + variantSubColType(); + setState(6071); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(6067); + match(COMMA); + setState(6068); + variantSubColType(); + } + } + setState(6073); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariantSubColTypeContext extends ParserRuleContext { + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TerminalNode COLON() { return getToken(DorisParser.COLON, 0); } + public DataTypeContext dataType() { + return getRuleContext(DataTypeContext.class,0); + } + public VariantSubColMatchTypeContext variantSubColMatchType() { + return getRuleContext(VariantSubColMatchTypeContext.class,0); + } + public CommentSpecContext commentSpec() { + return getRuleContext(CommentSpecContext.class,0); + } + public VariantSubColTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variantSubColType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantSubColType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantSubColType(this); + } + } + + public final VariantSubColTypeContext variantSubColType() throws RecognitionException { + VariantSubColTypeContext _localctx = new VariantSubColTypeContext(_ctx, getState()); + enterRule(_localctx, 432, RULE_variantSubColType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6075); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MATCH_NAME || _la==MATCH_NAME_GLOB) { + { + setState(6074); + variantSubColMatchType(); + } + } + + setState(6077); + match(STRING_LITERAL); + setState(6078); + match(COLON); + setState(6079); + dataType(); + setState(6081); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMENT) { + { + setState(6080); + commentSpec(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VariantSubColMatchTypeContext extends ParserRuleContext { + public TerminalNode MATCH_NAME() { return getToken(DorisParser.MATCH_NAME, 0); } + public TerminalNode MATCH_NAME_GLOB() { return getToken(DorisParser.MATCH_NAME_GLOB, 0); } + public VariantSubColMatchTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_variantSubColMatchType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantSubColMatchType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantSubColMatchType(this); + } + } + + public final VariantSubColMatchTypeContext variantSubColMatchType() throws RecognitionException { + VariantSubColMatchTypeContext _localctx = new VariantSubColMatchTypeContext(_ctx, getState()); + enterRule(_localctx, 434, RULE_variantSubColMatchType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6083); + _la = _input.LA(1); + if ( !(_la==MATCH_NAME || _la==MATCH_NAME_GLOB) ) { + _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 CommentSpecContext extends ParserRuleContext { + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public CommentSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_commentSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCommentSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCommentSpec(this); + } + } + + public final CommentSpecContext commentSpec() throws RecognitionException { + CommentSpecContext _localctx = new CommentSpecContext(_ctx, getState()); + enterRule(_localctx, 436, RULE_commentSpec); + try { + enterOuterAlt(_localctx, 1); + { + setState(6085); + match(COMMENT); + setState(6086); + match(STRING_LITERAL); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SampleContext extends ParserRuleContext { + public Token seed; + public TerminalNode TABLESAMPLE() { return getToken(DorisParser.TABLESAMPLE, 0); } + public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } + public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } + public SampleMethodContext sampleMethod() { + return getRuleContext(SampleMethodContext.class,0); + } + public TerminalNode REPEATABLE() { return getToken(DorisParser.REPEATABLE, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public SampleContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sample; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSample(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSample(this); + } + } + + public final SampleContext sample() throws RecognitionException { + SampleContext _localctx = new SampleContext(_ctx, getState()); + enterRule(_localctx, 438, RULE_sample); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6088); + match(TABLESAMPLE); + setState(6089); + match(LEFT_PAREN); + setState(6091); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INTEGER_VALUE) { + { + setState(6090); + sampleMethod(); + } + } + + setState(6093); + match(RIGHT_PAREN); + setState(6096); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,872,_ctx) ) { + case 1: + { + setState(6094); + match(REPEATABLE); + setState(6095); + ((SampleContext)_localctx).seed = match(INTEGER_VALUE); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class SampleMethodContext extends ParserRuleContext { + public SampleMethodContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sampleMethod; } + + public SampleMethodContext() { } + public void copyFrom(SampleMethodContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SampleByRowsContext extends SampleMethodContext { + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } + public SampleByRowsContext(SampleMethodContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSampleByRows(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSampleByRows(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class SampleByPercentileContext extends SampleMethodContext { + public Token percentage; + public TerminalNode PERCENT() { return getToken(DorisParser.PERCENT, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public SampleByPercentileContext(SampleMethodContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSampleByPercentile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSampleByPercentile(this); + } + } + + public final SampleMethodContext sampleMethod() throws RecognitionException { + SampleMethodContext _localctx = new SampleMethodContext(_ctx, getState()); + enterRule(_localctx, 440, RULE_sampleMethod); + try { + setState(6102); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,873,_ctx) ) { + case 1: + _localctx = new SampleByPercentileContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(6098); + ((SampleByPercentileContext)_localctx).percentage = match(INTEGER_VALUE); + setState(6099); + match(PERCENT); + } + break; + case 2: + _localctx = new SampleByRowsContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(6100); + match(INTEGER_VALUE); + setState(6101); + match(ROWS); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TableSnapshotContext extends ParserRuleContext { + public Token version; + public Token time; + public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } + public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } + public TerminalNode AS() { return getToken(DorisParser.AS, 0); } + public TerminalNode OF() { return getToken(DorisParser.OF, 0); } + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode TIME() { return getToken(DorisParser.TIME, 0); } + public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } + public TableSnapshotContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_tableSnapshot; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableSnapshot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableSnapshot(this); + } + } + + public final TableSnapshotContext tableSnapshot() throws RecognitionException { + TableSnapshotContext _localctx = new TableSnapshotContext(_ctx, getState()); + enterRule(_localctx, 442, RULE_tableSnapshot); + try { + setState(6114); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,874,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(6104); + match(FOR); + setState(6105); + match(VERSION); + setState(6106); + match(AS); + setState(6107); + match(OF); + setState(6108); + ((TableSnapshotContext)_localctx).version = match(INTEGER_VALUE); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(6109); + match(FOR); + setState(6110); + match(TIME); + setState(6111); + match(AS); + setState(6112); + match(OF); + setState(6113); + ((TableSnapshotContext)_localctx).time = match(STRING_LITERAL); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ErrorCapturingIdentifierContext extends ParserRuleContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() { + return getRuleContext(ErrorCapturingIdentifierExtraContext.class,0); + } + public ErrorCapturingIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_errorCapturingIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterErrorCapturingIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitErrorCapturingIdentifier(this); + } + } + + public final ErrorCapturingIdentifierContext errorCapturingIdentifier() throws RecognitionException { + ErrorCapturingIdentifierContext _localctx = new ErrorCapturingIdentifierContext(_ctx, getState()); + enterRule(_localctx, 444, RULE_errorCapturingIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(6116); + identifier(); + setState(6117); + errorCapturingIdentifierExtra(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ErrorCapturingIdentifierExtraContext extends ParserRuleContext { + public ErrorCapturingIdentifierExtraContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_errorCapturingIdentifierExtra; } + + public ErrorCapturingIdentifierExtraContext() { } + public void copyFrom(ErrorCapturingIdentifierExtraContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class ErrorIdentContext extends ErrorCapturingIdentifierExtraContext { + public List SUBTRACT() { return getTokens(DorisParser.SUBTRACT); } + public TerminalNode SUBTRACT(int i) { + return getToken(DorisParser.SUBTRACT, i); + } + public List identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public ErrorIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterErrorIdent(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitErrorIdent(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class RealIdentContext extends ErrorCapturingIdentifierExtraContext { + public RealIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRealIdent(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRealIdent(this); + } + } + + public final ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() throws RecognitionException { + ErrorCapturingIdentifierExtraContext _localctx = new ErrorCapturingIdentifierExtraContext(_ctx, getState()); + enterRule(_localctx, 446, RULE_errorCapturingIdentifierExtra); + try { + int _alt; + setState(6126); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,876,_ctx) ) { + case 1: + _localctx = new ErrorIdentContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(6121); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(6119); + match(SUBTRACT); + setState(6120); + identifier(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(6123); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,875,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case 2: + _localctx = new RealIdentContext(_localctx); + enterOuterAlt(_localctx, 2); + { + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class IdentifierContext extends ParserRuleContext { + public StrictIdentifierContext strictIdentifier() { + return getRuleContext(StrictIdentifierContext.class,0); + } + public IdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifier(this); + } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 448, RULE_identifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(6128); + strictIdentifier(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StrictIdentifierContext extends ParserRuleContext { + public StrictIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_strictIdentifier; } + + public StrictIdentifierContext() { } + public void copyFrom(StrictIdentifierContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class QuotedIdentifierAlternativeContext extends StrictIdentifierContext { + public QuotedIdentifierContext quotedIdentifier() { + return getRuleContext(QuotedIdentifierContext.class,0); + } + public QuotedIdentifierAlternativeContext(StrictIdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQuotedIdentifierAlternative(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQuotedIdentifierAlternative(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class UnquotedIdentifierContext extends StrictIdentifierContext { + public TerminalNode IDENTIFIER() { return getToken(DorisParser.IDENTIFIER, 0); } + public NonReservedContext nonReserved() { + return getRuleContext(NonReservedContext.class,0); + } + public UnquotedIdentifierContext(StrictIdentifierContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnquotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnquotedIdentifier(this); + } + } + + public final StrictIdentifierContext strictIdentifier() throws RecognitionException { + StrictIdentifierContext _localctx = new StrictIdentifierContext(_ctx, getState()); + enterRule(_localctx, 450, RULE_strictIdentifier); + try { + setState(6133); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(6130); + match(IDENTIFIER); + } + break; + case BACKQUOTED_IDENTIFIER: + _localctx = new QuotedIdentifierAlternativeContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(6131); + quotedIdentifier(); + } + break; + case LEFT_BRACE: + case RIGHT_BRACE: + case ACTIONS: + case AFTER: + case AGG_STATE: + case AGGREGATE: + case ALIAS: + case ANALYZED: + case ARRAY: + case AT: + case AUTHORS: + case AUTO_INCREMENT: + case ALWAYS: + case BACKENDS: + case BACKUP: + case BEGIN: + case BELONG: + case BIN: + case BITAND: + case BITMAP: + case BITMAP_EMPTY: + case BITMAP_UNION: + case BITOR: + case BITXOR: + case BLOB: + case BOOLEAN: + case BRIEF: + case BROKER: + case BUCKETS: + case BUILD: + case BUILTIN: + case BULK: + case CACHE: + case CACHED: + case CALL: + case CATALOG: + case CATALOGS: + case CHAIN: + case CHAR: + case CHARSET: + case CHECK: + case CLUSTER: + case CLUSTERS: + case COLLATION: + case COLLECT: + case COLOCATE: + case COLUMNS: + case COMMENT: + case COMMIT: + case COMMITTED: + case COMPACT: + case COMPLETE: + case COMPRESS_TYPE: + case COMPUTE: + case CONDITIONS: + case CONFIG: + case CONNECTION: + case CONNECTION_ID: + case CONSISTENT: + case CONSTRAINTS: + case CONVERT: + case CONVERT_LSC: + case COPY: + case COUNT: + case CREATION: + case CRON: + case CURRENT_CATALOG: + case CURRENT_DATE: + case CURRENT_TIME: + case CURRENT_TIMESTAMP: + case CURRENT_USER: + case DATA: + case DATE: + case DATETIME: + case DATETIMEV2: + case DATEV2: + case DATETIMEV1: + case DATEV1: + case DAY: + case DECIMAL: + case DECIMALV2: + case DECIMALV3: + case DEFERRED: + case DEMAND: + case DIAGNOSE: + case DIAGNOSIS: + case DISTINCTPC: + case DISTINCTPCSA: + case DO: + case DORIS_INTERNAL_TABLE_ID: + case DUAL: + case DYNAMIC: + case E: + case ENABLE: + case ENCRYPTKEY: + case ENCRYPTKEYS: + case END: + case ENDS: + case ENGINE: + case ENGINES: + case ERRORS: + case EVENTS: + case EVERY: + case EXCLUDE: + case EXPIRED: + case EXTERNAL: + case FAILED_LOGIN_ATTEMPTS: + case FAST: + case FEATURE: + case FIELDS: + case FILE: + case FILTER: + case FIRST: + case FORMAT: + case FREE: + case FRONTENDS: + case FUNCTION: + case GENERATED: + case GENERIC: + case GLOBAL: + case GRAPH: + case GROUPING: + case GROUPS: + case HASH: + case HDFS: + case HELP: + case HISTOGRAM: + case HLL_UNION: + case HOSTNAME: + case HOTSPOT: + case HOUR: + case HUB: + case IDENTIFIED: + case IGNORE: + case IMMEDIATE: + case INCREMENTAL: + case INDEXES: + case INVERTED: + case IPV4: + case IPV6: + case IS_NOT_NULL_PRED: + case IS_NULL_PRED: + case ISNULL: + case ISOLATION: + case JOB: + case JOBS: + case JSON: + case JSONB: + case LABEL: + case LAST: + case LDAP: + case LDAP_ADMIN_PASSWORD: + case LESS: + case LEVEL: + case LINES: + case LINK: + case LOCAL: + case LOCALTIME: + case LOCALTIMESTAMP: + case LOCATION: + case LOCK: + case LOGICAL: + case MANUAL: + case MAP: + case MATCH_ALL: + case MATCH_ANY: + case MATCH_PHRASE: + case MATCH_PHRASE_EDGE: + case MATCH_PHRASE_PREFIX: + case MATCH_REGEXP: + case MATERIALIZED: + case MAX: + case MEMO: + case MERGE: + case MIGRATE: + case MIGRATIONS: + case MIN: + case MINUTE: + case MODIFY: + case MONTH: + case MTMV: + case NAME: + case NAMES: + case NEGATIVE: + case NEVER: + case NEXT: + case NGRAM_BF: + case NO: + case NON_NULLABLE: + case NULLS: + case OF: + case OFFSET: + case ONLY: + case OPEN: + case OPTIMIZED: + case PARAMETER: + case PARSED: + case PARTITIONS: + case PASSWORD: + case PASSWORD_EXPIRE: + case PASSWORD_HISTORY: + case PASSWORD_LOCK_TIME: + case PASSWORD_REUSE: + case PATH: + case PAUSE: + case PERCENT: + case PERIOD: + case PERMISSIVE: + case PHYSICAL: + case PI: + case PLAN: + case PRIVILEGES: + case PROCESS: + case PLUGIN: + case PLUGINS: + case POLICY: + case PROC: + case PROCESSLIST: + case PROFILE: + case PROPERTIES: + case PROPERTY: + case QUANTILE_STATE: + case QUANTILE_UNION: + case QUERY: + case QUEUED: + case QUOTA: + case QUALIFY: + case QUARTER: + case RANDOM: + case RECENT: + case RECOVER: + case RECYCLE: + case REFRESH: + case REPEATABLE: + case REPLACE: + case REPLACE_IF_NOT_NULL: + case REPLAYER: + case REPOSITORIES: + case REPOSITORY: + case RESOURCE: + case RESOURCES: + case RESTORE: + case RESTRICTIVE: + case RESUME: + case RETURNS: + case REWRITTEN: + case RLIKE: + case ROLLBACK: + case ROLLUP: + case ROUTINE: + case S3: + case SAMPLE: + case SCHEDULE: + case SCHEDULER: + case SCHEMA: + case SECOND: + case SERIALIZABLE: + case SESSION: + case SESSION_USER: + case SET_SESSION_VARIABLE: + case SHAPE: + case SKEW: + case SNAPSHOT: + case SONAME: + case SPLIT: + case SQL: + case STAGE: + case STAGES: + case START: + case STARTS: + case STATS: + case STATUS: + case STOP: + case STORAGE: + case STREAM: + case STREAMING: + case STRING: + case STRUCT: + case SUM: + case TABLES: + case TASK: + case TASKS: + case TEMPORARY: + case TEXT: + case THAN: + case TIME: + case TIMESTAMP: + case TRANSACTION: + case TREE: + case TRIGGERS: + case TRUNCATE: + case TYPE: + case TYPES: + case UNCOMMITTED: + case UNLOCK: + case UNSET: + case UP: + case USER: + case VALUE: + case VARCHAR: + case VARIABLE: + case VARIABLES: + case VARIANT: + case VAULT: + case VAULTS: + case VERBOSE: + case VERSION: + case VIEW: + case VIEWS: + case WARM: + case WARNINGS: + case WEEK: + case WORK: + case YEAR: + case HINT_START: + case HINT_END: + case COMMENT_START: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(6132); + nonReserved(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class QuotedIdentifierContext extends ParserRuleContext { + public TerminalNode BACKQUOTED_IDENTIFIER() { return getToken(DorisParser.BACKQUOTED_IDENTIFIER, 0); } + public QuotedIdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_quotedIdentifier; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQuotedIdentifier(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQuotedIdentifier(this); + } + } + + public final QuotedIdentifierContext quotedIdentifier() throws RecognitionException { + QuotedIdentifierContext _localctx = new QuotedIdentifierContext(_ctx, getState()); + enterRule(_localctx, 452, RULE_quotedIdentifier); + try { + enterOuterAlt(_localctx, 1); + { + setState(6135); + match(BACKQUOTED_IDENTIFIER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NumberContext extends ParserRuleContext { + public NumberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_number; } + + public NumberContext() { } + public void copyFrom(NumberContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class DecimalLiteralContext extends NumberContext { + public TerminalNode EXPONENT_VALUE() { return getToken(DorisParser.EXPONENT_VALUE, 0); } + public TerminalNode DECIMAL_VALUE() { return getToken(DorisParser.DECIMAL_VALUE, 0); } + public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } + public DecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDecimalLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDecimalLiteral(this); + } + } + @SuppressWarnings("CheckReturnValue") + public static class IntegerLiteralContext extends NumberContext { + public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } + public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } + public IntegerLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIntegerLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIntegerLiteral(this); + } + } + + public final NumberContext number() throws RecognitionException { + NumberContext _localctx = new NumberContext(_ctx, getState()); + enterRule(_localctx, 454, RULE_number); + int _la; + try { + setState(6145); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,880,_ctx) ) { + case 1: + _localctx = new IntegerLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(6138); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SUBTRACT) { + { + setState(6137); + match(SUBTRACT); + } + } + + setState(6140); + match(INTEGER_VALUE); + } + break; + case 2: + _localctx = new DecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(6142); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SUBTRACT) { + { + setState(6141); + match(SUBTRACT); + } + } + + setState(6144); + _la = _input.LA(1); + if ( !(_la==EXPONENT_VALUE || _la==DECIMAL_VALUE) ) { + _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 NonReservedContext extends ParserRuleContext { + public TerminalNode ACTIONS() { return getToken(DorisParser.ACTIONS, 0); } + public TerminalNode AFTER() { return getToken(DorisParser.AFTER, 0); } + public TerminalNode AGG_STATE() { return getToken(DorisParser.AGG_STATE, 0); } + public TerminalNode AGGREGATE() { return getToken(DorisParser.AGGREGATE, 0); } + public TerminalNode ALIAS() { return getToken(DorisParser.ALIAS, 0); } + public TerminalNode ALWAYS() { return getToken(DorisParser.ALWAYS, 0); } + public TerminalNode ANALYZED() { return getToken(DorisParser.ANALYZED, 0); } + public TerminalNode ARRAY() { return getToken(DorisParser.ARRAY, 0); } + public TerminalNode AT() { return getToken(DorisParser.AT, 0); } + public TerminalNode AUTHORS() { return getToken(DorisParser.AUTHORS, 0); } + public TerminalNode AUTO_INCREMENT() { return getToken(DorisParser.AUTO_INCREMENT, 0); } + public TerminalNode BACKENDS() { return getToken(DorisParser.BACKENDS, 0); } + public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } + public TerminalNode BEGIN() { return getToken(DorisParser.BEGIN, 0); } + public TerminalNode BELONG() { return getToken(DorisParser.BELONG, 0); } + public TerminalNode BIN() { return getToken(DorisParser.BIN, 0); } + public TerminalNode BITAND() { return getToken(DorisParser.BITAND, 0); } + public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } + public TerminalNode BITMAP_EMPTY() { return getToken(DorisParser.BITMAP_EMPTY, 0); } + public TerminalNode BITMAP_UNION() { return getToken(DorisParser.BITMAP_UNION, 0); } + public TerminalNode BITOR() { return getToken(DorisParser.BITOR, 0); } + public TerminalNode BITXOR() { return getToken(DorisParser.BITXOR, 0); } + public TerminalNode BLOB() { return getToken(DorisParser.BLOB, 0); } + public TerminalNode BOOLEAN() { return getToken(DorisParser.BOOLEAN, 0); } + public TerminalNode BRIEF() { return getToken(DorisParser.BRIEF, 0); } + public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } + public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } + public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } + public TerminalNode BUILTIN() { return getToken(DorisParser.BUILTIN, 0); } + public TerminalNode BULK() { return getToken(DorisParser.BULK, 0); } + public TerminalNode CACHE() { return getToken(DorisParser.CACHE, 0); } + public TerminalNode CACHED() { return getToken(DorisParser.CACHED, 0); } + public TerminalNode CALL() { return getToken(DorisParser.CALL, 0); } + public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } + public TerminalNode CATALOGS() { return getToken(DorisParser.CATALOGS, 0); } + public TerminalNode CHAIN() { return getToken(DorisParser.CHAIN, 0); } + public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } + public TerminalNode CHARSET() { return getToken(DorisParser.CHARSET, 0); } + public TerminalNode CHECK() { return getToken(DorisParser.CHECK, 0); } + public TerminalNode CLUSTER() { return getToken(DorisParser.CLUSTER, 0); } + public TerminalNode CLUSTERS() { return getToken(DorisParser.CLUSTERS, 0); } + public TerminalNode COLLATION() { return getToken(DorisParser.COLLATION, 0); } + public TerminalNode COLLECT() { return getToken(DorisParser.COLLECT, 0); } + public TerminalNode COLOCATE() { return getToken(DorisParser.COLOCATE, 0); } + public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } + public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } + public TerminalNode COMMENT_START() { return getToken(DorisParser.COMMENT_START, 0); } + public TerminalNode COMMIT() { return getToken(DorisParser.COMMIT, 0); } + public TerminalNode COMMITTED() { return getToken(DorisParser.COMMITTED, 0); } + public TerminalNode COMPACT() { return getToken(DorisParser.COMPACT, 0); } + public TerminalNode COMPLETE() { return getToken(DorisParser.COMPLETE, 0); } + public TerminalNode COMPRESS_TYPE() { return getToken(DorisParser.COMPRESS_TYPE, 0); } + public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } + public TerminalNode CONDITIONS() { return getToken(DorisParser.CONDITIONS, 0); } + public TerminalNode CONFIG() { return getToken(DorisParser.CONFIG, 0); } + public TerminalNode CONNECTION() { return getToken(DorisParser.CONNECTION, 0); } + public TerminalNode CONNECTION_ID() { return getToken(DorisParser.CONNECTION_ID, 0); } + public TerminalNode CONSISTENT() { return getToken(DorisParser.CONSISTENT, 0); } + public TerminalNode CONSTRAINTS() { return getToken(DorisParser.CONSTRAINTS, 0); } + public TerminalNode CONVERT() { return getToken(DorisParser.CONVERT, 0); } + public TerminalNode CONVERT_LSC() { return getToken(DorisParser.CONVERT_LSC, 0); } + public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } + public TerminalNode COUNT() { return getToken(DorisParser.COUNT, 0); } + public TerminalNode CREATION() { return getToken(DorisParser.CREATION, 0); } + public TerminalNode CRON() { return getToken(DorisParser.CRON, 0); } + public TerminalNode CURRENT_CATALOG() { return getToken(DorisParser.CURRENT_CATALOG, 0); } + public TerminalNode CURRENT_DATE() { return getToken(DorisParser.CURRENT_DATE, 0); } + public TerminalNode CURRENT_TIME() { return getToken(DorisParser.CURRENT_TIME, 0); } + public TerminalNode CURRENT_TIMESTAMP() { return getToken(DorisParser.CURRENT_TIMESTAMP, 0); } + public TerminalNode CURRENT_USER() { return getToken(DorisParser.CURRENT_USER, 0); } + public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } + public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } + public TerminalNode DATETIME() { return getToken(DorisParser.DATETIME, 0); } + public TerminalNode DATETIMEV1() { return getToken(DorisParser.DATETIMEV1, 0); } + public TerminalNode DATETIMEV2() { return getToken(DorisParser.DATETIMEV2, 0); } + public TerminalNode DATEV1() { return getToken(DorisParser.DATEV1, 0); } + public TerminalNode DATEV2() { return getToken(DorisParser.DATEV2, 0); } + public TerminalNode DAY() { return getToken(DorisParser.DAY, 0); } + public TerminalNode DECIMAL() { return getToken(DorisParser.DECIMAL, 0); } + public TerminalNode DECIMALV2() { return getToken(DorisParser.DECIMALV2, 0); } + public TerminalNode DECIMALV3() { return getToken(DorisParser.DECIMALV3, 0); } + public TerminalNode DEFERRED() { return getToken(DorisParser.DEFERRED, 0); } + public TerminalNode DEMAND() { return getToken(DorisParser.DEMAND, 0); } + public TerminalNode DIAGNOSE() { return getToken(DorisParser.DIAGNOSE, 0); } + public TerminalNode DIAGNOSIS() { return getToken(DorisParser.DIAGNOSIS, 0); } + public TerminalNode DISTINCTPC() { return getToken(DorisParser.DISTINCTPC, 0); } + public TerminalNode DISTINCTPCSA() { return getToken(DorisParser.DISTINCTPCSA, 0); } + public TerminalNode DO() { return getToken(DorisParser.DO, 0); } + public TerminalNode DORIS_INTERNAL_TABLE_ID() { return getToken(DorisParser.DORIS_INTERNAL_TABLE_ID, 0); } + public TerminalNode DUAL() { return getToken(DorisParser.DUAL, 0); } + public TerminalNode DYNAMIC() { return getToken(DorisParser.DYNAMIC, 0); } + public TerminalNode E() { return getToken(DorisParser.E, 0); } + public TerminalNode ENABLE() { return getToken(DorisParser.ENABLE, 0); } + public TerminalNode ENCRYPTKEY() { return getToken(DorisParser.ENCRYPTKEY, 0); } + public TerminalNode ENCRYPTKEYS() { return getToken(DorisParser.ENCRYPTKEYS, 0); } + public TerminalNode END() { return getToken(DorisParser.END, 0); } + public TerminalNode ENDS() { return getToken(DorisParser.ENDS, 0); } + public TerminalNode ENGINE() { return getToken(DorisParser.ENGINE, 0); } + public TerminalNode ENGINES() { return getToken(DorisParser.ENGINES, 0); } + public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } + public TerminalNode EVENTS() { return getToken(DorisParser.EVENTS, 0); } + public TerminalNode EVERY() { return getToken(DorisParser.EVERY, 0); } + public TerminalNode EXCLUDE() { return getToken(DorisParser.EXCLUDE, 0); } + public TerminalNode EXPIRED() { return getToken(DorisParser.EXPIRED, 0); } + public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } + public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(DorisParser.FAILED_LOGIN_ATTEMPTS, 0); } + public TerminalNode FAST() { return getToken(DorisParser.FAST, 0); } + public TerminalNode FEATURE() { return getToken(DorisParser.FEATURE, 0); } + public TerminalNode FIELDS() { return getToken(DorisParser.FIELDS, 0); } + public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } + public TerminalNode FILTER() { return getToken(DorisParser.FILTER, 0); } + public TerminalNode FIRST() { return getToken(DorisParser.FIRST, 0); } + public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } + public TerminalNode FREE() { return getToken(DorisParser.FREE, 0); } + public TerminalNode FRONTENDS() { return getToken(DorisParser.FRONTENDS, 0); } + public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } + public TerminalNode GENERATED() { return getToken(DorisParser.GENERATED, 0); } + public TerminalNode GENERIC() { return getToken(DorisParser.GENERIC, 0); } + public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } + public TerminalNode GRAPH() { return getToken(DorisParser.GRAPH, 0); } + public TerminalNode GROUPING() { return getToken(DorisParser.GROUPING, 0); } + public TerminalNode GROUPS() { return getToken(DorisParser.GROUPS, 0); } + public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } + public TerminalNode HDFS() { return getToken(DorisParser.HDFS, 0); } + public TerminalNode HELP() { return getToken(DorisParser.HELP, 0); } + public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } + public TerminalNode HINT_START() { return getToken(DorisParser.HINT_START, 0); } + public TerminalNode HISTOGRAM() { return getToken(DorisParser.HISTOGRAM, 0); } + public TerminalNode HLL_UNION() { return getToken(DorisParser.HLL_UNION, 0); } + public TerminalNode HOSTNAME() { return getToken(DorisParser.HOSTNAME, 0); } + public TerminalNode HOTSPOT() { return getToken(DorisParser.HOTSPOT, 0); } + public TerminalNode HOUR() { return getToken(DorisParser.HOUR, 0); } + public TerminalNode HUB() { return getToken(DorisParser.HUB, 0); } + public TerminalNode IDENTIFIED() { return getToken(DorisParser.IDENTIFIED, 0); } + public TerminalNode IGNORE() { return getToken(DorisParser.IGNORE, 0); } + public TerminalNode IMMEDIATE() { return getToken(DorisParser.IMMEDIATE, 0); } + public TerminalNode INCREMENTAL() { return getToken(DorisParser.INCREMENTAL, 0); } + public TerminalNode INDEXES() { return getToken(DorisParser.INDEXES, 0); } + public TerminalNode INVERTED() { return getToken(DorisParser.INVERTED, 0); } + public TerminalNode IPV4() { return getToken(DorisParser.IPV4, 0); } + public TerminalNode IPV6() { return getToken(DorisParser.IPV6, 0); } + public TerminalNode IS_NOT_NULL_PRED() { return getToken(DorisParser.IS_NOT_NULL_PRED, 0); } + public TerminalNode IS_NULL_PRED() { return getToken(DorisParser.IS_NULL_PRED, 0); } + public TerminalNode ISNULL() { return getToken(DorisParser.ISNULL, 0); } + public TerminalNode ISOLATION() { return getToken(DorisParser.ISOLATION, 0); } + public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } + public TerminalNode JOBS() { return getToken(DorisParser.JOBS, 0); } + public TerminalNode JSON() { return getToken(DorisParser.JSON, 0); } + public TerminalNode JSONB() { return getToken(DorisParser.JSONB, 0); } + public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } + public TerminalNode LAST() { return getToken(DorisParser.LAST, 0); } + public TerminalNode LDAP() { return getToken(DorisParser.LDAP, 0); } + public TerminalNode LDAP_ADMIN_PASSWORD() { return getToken(DorisParser.LDAP_ADMIN_PASSWORD, 0); } + public TerminalNode LEFT_BRACE() { return getToken(DorisParser.LEFT_BRACE, 0); } + public TerminalNode LESS() { return getToken(DorisParser.LESS, 0); } + public TerminalNode LEVEL() { return getToken(DorisParser.LEVEL, 0); } + public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } + public TerminalNode LINK() { return getToken(DorisParser.LINK, 0); } + public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } + public TerminalNode LOCALTIME() { return getToken(DorisParser.LOCALTIME, 0); } + public TerminalNode LOCALTIMESTAMP() { return getToken(DorisParser.LOCALTIMESTAMP, 0); } + public TerminalNode LOCATION() { return getToken(DorisParser.LOCATION, 0); } + public TerminalNode LOCK() { return getToken(DorisParser.LOCK, 0); } + public TerminalNode LOGICAL() { return getToken(DorisParser.LOGICAL, 0); } + public TerminalNode MANUAL() { return getToken(DorisParser.MANUAL, 0); } + public TerminalNode MAP() { return getToken(DorisParser.MAP, 0); } + public TerminalNode MATCH_ALL() { return getToken(DorisParser.MATCH_ALL, 0); } + public TerminalNode MATCH_ANY() { return getToken(DorisParser.MATCH_ANY, 0); } + public TerminalNode MATCH_PHRASE() { return getToken(DorisParser.MATCH_PHRASE, 0); } + public TerminalNode MATCH_PHRASE_EDGE() { return getToken(DorisParser.MATCH_PHRASE_EDGE, 0); } + public TerminalNode MATCH_PHRASE_PREFIX() { return getToken(DorisParser.MATCH_PHRASE_PREFIX, 0); } + public TerminalNode MATCH_REGEXP() { return getToken(DorisParser.MATCH_REGEXP, 0); } + public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } + public TerminalNode MAX() { return getToken(DorisParser.MAX, 0); } + public TerminalNode MEMO() { return getToken(DorisParser.MEMO, 0); } + public TerminalNode MERGE() { return getToken(DorisParser.MERGE, 0); } + public TerminalNode MIGRATE() { return getToken(DorisParser.MIGRATE, 0); } + public TerminalNode MIGRATIONS() { return getToken(DorisParser.MIGRATIONS, 0); } + public TerminalNode MIN() { return getToken(DorisParser.MIN, 0); } + public TerminalNode MINUTE() { return getToken(DorisParser.MINUTE, 0); } + public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } + public TerminalNode MONTH() { return getToken(DorisParser.MONTH, 0); } + public TerminalNode MTMV() { return getToken(DorisParser.MTMV, 0); } + public TerminalNode NAME() { return getToken(DorisParser.NAME, 0); } + public TerminalNode NAMES() { return getToken(DorisParser.NAMES, 0); } + public TerminalNode NEGATIVE() { return getToken(DorisParser.NEGATIVE, 0); } + public TerminalNode NEVER() { return getToken(DorisParser.NEVER, 0); } + public TerminalNode NEXT() { return getToken(DorisParser.NEXT, 0); } + public TerminalNode NGRAM_BF() { return getToken(DorisParser.NGRAM_BF, 0); } + public TerminalNode NO() { return getToken(DorisParser.NO, 0); } + public TerminalNode NON_NULLABLE() { return getToken(DorisParser.NON_NULLABLE, 0); } + public TerminalNode NULLS() { return getToken(DorisParser.NULLS, 0); } + public TerminalNode OF() { return getToken(DorisParser.OF, 0); } + public TerminalNode OFFSET() { return getToken(DorisParser.OFFSET, 0); } + public TerminalNode ONLY() { return getToken(DorisParser.ONLY, 0); } + public TerminalNode OPEN() { return getToken(DorisParser.OPEN, 0); } + public TerminalNode OPTIMIZED() { return getToken(DorisParser.OPTIMIZED, 0); } + public TerminalNode PARAMETER() { return getToken(DorisParser.PARAMETER, 0); } + public TerminalNode PARSED() { return getToken(DorisParser.PARSED, 0); } + public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } + public TerminalNode PASSWORD_EXPIRE() { return getToken(DorisParser.PASSWORD_EXPIRE, 0); } + public TerminalNode PASSWORD_HISTORY() { return getToken(DorisParser.PASSWORD_HISTORY, 0); } + public TerminalNode PASSWORD_LOCK_TIME() { return getToken(DorisParser.PASSWORD_LOCK_TIME, 0); } + public TerminalNode PASSWORD_REUSE() { return getToken(DorisParser.PASSWORD_REUSE, 0); } + public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } + public TerminalNode PATH() { return getToken(DorisParser.PATH, 0); } + public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } + public TerminalNode PERCENT() { return getToken(DorisParser.PERCENT, 0); } + public TerminalNode PERIOD() { return getToken(DorisParser.PERIOD, 0); } + public TerminalNode PERMISSIVE() { return getToken(DorisParser.PERMISSIVE, 0); } + public TerminalNode PHYSICAL() { return getToken(DorisParser.PHYSICAL, 0); } + public TerminalNode PI() { return getToken(DorisParser.PI, 0); } + public TerminalNode PLAN() { return getToken(DorisParser.PLAN, 0); } + public TerminalNode PLUGIN() { return getToken(DorisParser.PLUGIN, 0); } + public TerminalNode PLUGINS() { return getToken(DorisParser.PLUGINS, 0); } + public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } + public TerminalNode PRIVILEGES() { return getToken(DorisParser.PRIVILEGES, 0); } + public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } + public TerminalNode PROCESS() { return getToken(DorisParser.PROCESS, 0); } + public TerminalNode PROCESSLIST() { return getToken(DorisParser.PROCESSLIST, 0); } + public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } + public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } + public TerminalNode PROPERTY() { return getToken(DorisParser.PROPERTY, 0); } + public TerminalNode QUANTILE_STATE() { return getToken(DorisParser.QUANTILE_STATE, 0); } + public TerminalNode QUANTILE_UNION() { return getToken(DorisParser.QUANTILE_UNION, 0); } + public TerminalNode QUARTER() { return getToken(DorisParser.QUARTER, 0); } + public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } + public TerminalNode QUOTA() { return getToken(DorisParser.QUOTA, 0); } + public TerminalNode QUALIFY() { return getToken(DorisParser.QUALIFY, 0); } + public TerminalNode QUEUED() { return getToken(DorisParser.QUEUED, 0); } + public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } + public TerminalNode RECENT() { return getToken(DorisParser.RECENT, 0); } + public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } + public TerminalNode RECYCLE() { return getToken(DorisParser.RECYCLE, 0); } + public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } + public TerminalNode REPEATABLE() { return getToken(DorisParser.REPEATABLE, 0); } + public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } + public TerminalNode REPLACE_IF_NOT_NULL() { return getToken(DorisParser.REPLACE_IF_NOT_NULL, 0); } + public TerminalNode REPLAYER() { return getToken(DorisParser.REPLAYER, 0); } + public TerminalNode REPOSITORIES() { return getToken(DorisParser.REPOSITORIES, 0); } + public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } + public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } + public TerminalNode RESOURCES() { return getToken(DorisParser.RESOURCES, 0); } + public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } + public TerminalNode RESTRICTIVE() { return getToken(DorisParser.RESTRICTIVE, 0); } + public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } + public TerminalNode RETURNS() { return getToken(DorisParser.RETURNS, 0); } + public TerminalNode REWRITTEN() { return getToken(DorisParser.REWRITTEN, 0); } + public TerminalNode RIGHT_BRACE() { return getToken(DorisParser.RIGHT_BRACE, 0); } + public TerminalNode RLIKE() { return getToken(DorisParser.RLIKE, 0); } + public TerminalNode ROLLBACK() { return getToken(DorisParser.ROLLBACK, 0); } + public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } + public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } + public TerminalNode S3() { return getToken(DorisParser.S3, 0); } + public TerminalNode SAMPLE() { return getToken(DorisParser.SAMPLE, 0); } + public TerminalNode SCHEDULE() { return getToken(DorisParser.SCHEDULE, 0); } + public TerminalNode SCHEDULER() { return getToken(DorisParser.SCHEDULER, 0); } + public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } + public TerminalNode SECOND() { return getToken(DorisParser.SECOND, 0); } + public TerminalNode SERIALIZABLE() { return getToken(DorisParser.SERIALIZABLE, 0); } + public TerminalNode SET_SESSION_VARIABLE() { return getToken(DorisParser.SET_SESSION_VARIABLE, 0); } + public TerminalNode SESSION() { return getToken(DorisParser.SESSION, 0); } + public TerminalNode SESSION_USER() { return getToken(DorisParser.SESSION_USER, 0); } + public TerminalNode SHAPE() { return getToken(DorisParser.SHAPE, 0); } + public TerminalNode SKEW() { return getToken(DorisParser.SKEW, 0); } + public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } + public TerminalNode SONAME() { return getToken(DorisParser.SONAME, 0); } + public TerminalNode SPLIT() { return getToken(DorisParser.SPLIT, 0); } + public TerminalNode SQL() { return getToken(DorisParser.SQL, 0); } + public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } + public TerminalNode STAGES() { return getToken(DorisParser.STAGES, 0); } + public TerminalNode START() { return getToken(DorisParser.START, 0); } + public TerminalNode STARTS() { return getToken(DorisParser.STARTS, 0); } + public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } + public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } + public TerminalNode STOP() { return getToken(DorisParser.STOP, 0); } + public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } + public TerminalNode STREAM() { return getToken(DorisParser.STREAM, 0); } + public TerminalNode STREAMING() { return getToken(DorisParser.STREAMING, 0); } + public TerminalNode STRING() { return getToken(DorisParser.STRING, 0); } + public TerminalNode STRUCT() { return getToken(DorisParser.STRUCT, 0); } + public TerminalNode SUM() { return getToken(DorisParser.SUM, 0); } + public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } + public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } + public TerminalNode TASKS() { return getToken(DorisParser.TASKS, 0); } + public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } + public TerminalNode TEXT() { return getToken(DorisParser.TEXT, 0); } + public TerminalNode THAN() { return getToken(DorisParser.THAN, 0); } + public TerminalNode TIME() { return getToken(DorisParser.TIME, 0); } + public TerminalNode TIMESTAMP() { return getToken(DorisParser.TIMESTAMP, 0); } + public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } + public TerminalNode TREE() { return getToken(DorisParser.TREE, 0); } + public TerminalNode TRIGGERS() { return getToken(DorisParser.TRIGGERS, 0); } + public TerminalNode TRUNCATE() { return getToken(DorisParser.TRUNCATE, 0); } + public TerminalNode TYPE() { return getToken(DorisParser.TYPE, 0); } + public TerminalNode TYPES() { return getToken(DorisParser.TYPES, 0); } + public TerminalNode UNCOMMITTED() { return getToken(DorisParser.UNCOMMITTED, 0); } + public TerminalNode UNLOCK() { return getToken(DorisParser.UNLOCK, 0); } + public TerminalNode UNSET() { return getToken(DorisParser.UNSET, 0); } + public TerminalNode UP() { return getToken(DorisParser.UP, 0); } + public TerminalNode USER() { return getToken(DorisParser.USER, 0); } + public TerminalNode VALUE() { return getToken(DorisParser.VALUE, 0); } + public TerminalNode VARCHAR() { return getToken(DorisParser.VARCHAR, 0); } + public TerminalNode VARIABLE() { return getToken(DorisParser.VARIABLE, 0); } + public TerminalNode VARIABLES() { return getToken(DorisParser.VARIABLES, 0); } + public TerminalNode VARIANT() { return getToken(DorisParser.VARIANT, 0); } + public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } + public TerminalNode VAULTS() { return getToken(DorisParser.VAULTS, 0); } + public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } + public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } + public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } + public TerminalNode VIEWS() { return getToken(DorisParser.VIEWS, 0); } + public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } + public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } + public TerminalNode WEEK() { return getToken(DorisParser.WEEK, 0); } + public TerminalNode WORK() { return getToken(DorisParser.WORK, 0); } + public TerminalNode YEAR() { return getToken(DorisParser.YEAR, 0); } + public NonReservedContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_nonReserved; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNonReserved(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNonReserved(this); + } + } + + public final NonReservedContext nonReserved() throws RecognitionException { + NonReservedContext _localctx = new NonReservedContext(_ctx, getState()); + enterRule(_localctx, 456, RULE_nonReserved); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(6147); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 7L) != 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; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 115: + return queryTerm_sempred((QueryTermContext)_localctx, predIndex); + case 118: + return querySpecification_sempred((QuerySpecificationContext)_localctx, predIndex); + case 187: + return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); + case 191: + return valueExpression_sempred((ValueExpressionContext)_localctx, predIndex); + case 192: + return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex); + } + return true; + } + private boolean queryTerm_sempred(QueryTermContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 2); + case 1: + return precpred(_ctx, 1); + } + return true; + } + private boolean querySpecification_sempred(QuerySpecificationContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return doris_legacy_SQL_syntax; + } + return true; + } + private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return precpred(_ctx, 4); + case 4: + return precpred(_ctx, 3); + case 5: + return precpred(_ctx, 2); + case 6: + return precpred(_ctx, 1); + } + return true; + } + private boolean valueExpression_sempred(ValueExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 7: + return precpred(_ctx, 6); + case 8: + return precpred(_ctx, 5); + case 9: + return precpred(_ctx, 4); + case 10: + return precpred(_ctx, 3); + case 11: + return precpred(_ctx, 2); + case 12: + return precpred(_ctx, 1); + } + return true; + } + private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 13: + return precpred(_ctx, 11); + case 14: + return precpred(_ctx, 10); + case 15: + return precpred(_ctx, 5); + case 16: + return precpred(_ctx, 1); + } + return true; + } + + private static final String _serializedATNSegment0 = + "\u0004\u0001\u0220\u1806\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ + "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+ + "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+ + "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+ + "\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+ + "\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+ + "\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+ + "\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+ + "\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+ + "\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+ + "\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+ + "\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+ + "\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+ + ",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+ + "1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+ + "6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+ + ";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+ + "@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\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\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+ + "T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+ + "Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+ + "^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+ + "c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+ + "h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+ + "m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+ + "r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+ + "w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+ + "|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+ + "\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+ + "\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+ + "\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+ + "\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+ + "\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+ + "\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+ + "\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+ + "\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+ + "\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+ + "\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+ + "\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+ + "\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+ + "\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+ + "\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+ + "\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+ + "\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+ + "\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+ + "\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+ + "\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+ + "\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+ + "\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+ + "\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+ + "\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+ + "\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+ + "\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+ + "\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+ + "\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+ + "\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+ + "\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+ + "\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+ + "\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+ + "\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+ + "\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+ + "\u00e3\u0002\u00e4\u0007\u00e4\u0001\u0000\u0005\u0000\u01cc\b\u0000\n"+ + "\u0000\f\u0000\u01cf\t\u0000\u0001\u0000\u0003\u0000\u01d2\b\u0000\u0001"+ + "\u0000\u0004\u0000\u01d5\b\u0000\u000b\u0000\f\u0000\u01d6\u0001\u0000"+ + "\u0005\u0000\u01da\b\u0000\n\u0000\f\u0000\u01dd\t\u0000\u0001\u0000\u0005"+ + "\u0000\u01e0\b\u0000\n\u0000\f\u0000\u01e3\t\u0000\u0001\u0000\u0001\u0000"+ + "\u0001\u0001\u0005\u0001\u01e8\b\u0001\n\u0001\f\u0001\u01eb\t\u0001\u0001"+ + "\u0001\u0003\u0001\u01ee\b\u0001\u0001\u0001\u0005\u0001\u01f1\b\u0001"+ + "\n\u0001\f\u0001\u01f4\t\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001"+ + "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005"+ + "\u0002\u01ff\b\u0002\n\u0002\f\u0002\u0202\t\u0002\u0003\u0002\u0204\b"+ + "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ + "\u0002\u0003\u0002\u020c\b\u0002\u0001\u0002\u0003\u0002\u020f\b\u0002"+ + "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002\u0215\b\u0002"+ + "\n\u0002\f\u0002\u0218\t\u0002\u0001\u0002\u0001\u0002\u0005\u0002\u021c"+ + "\b\u0002\n\u0002\f\u0002\u021f\t\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ + "\u0001\u0002\u0003\u0002\u0225\b\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ + "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u022e\b\u0002"+ + "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002"+ + "\u0235\b\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ + "\u0003\u0002\u023c\b\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u0240\b"+ + "\u0002\u0003\u0002\u0242\b\u0002\u0001\u0003\u0003\u0003\u0245\b\u0003"+ + "\u0001\u0003\u0001\u0003\u0003\u0003\u0249\b\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\u0260\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004"+ + "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ + "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ + "\u0001\u0004\u0003\u0004\u0272\b\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u027a\b\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0281\b\u0005"+ + "\u0001\u0005\u0003\u0005\u0284\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ + "\u0288\b\u0005\u0001\u0005\u0003\u0005\u028b\b\u0005\u0003\u0005\u028d"+ + "\b\u0005\u0001\u0005\u0003\u0005\u0290\b\u0005\u0001\u0005\u0001\u0005"+ + "\u0003\u0005\u0294\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0298\b"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0003\u0005\u02a0\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0003\u0005\u02a7\b\u0005\u0001\u0005\u0001\u0005\u0003"+ + "\u0005\u02ab\b\u0005\u0003\u0005\u02ad\b\u0005\u0001\u0005\u0003\u0005"+ + "\u02b0\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ + "\u02bc\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0005\u0003\u0005\u02ca\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u02d2\b\u0005\u0001\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u02d9\b\u0005"+ + "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ + "\u02e0\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u02e5\b"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0003\u0005\u02ff\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0003\u0006\u030c\b\u0006\u0003\u0006\u030e\b\u0006"+ + "\u0001\u0006\u0001\u0006\u0003\u0006\u0312\b\u0006\u0001\u0006\u0001\u0006"+ + "\u0001\u0006\u0003\u0006\u0317\b\u0006\u0003\u0006\u0319\b\u0006\u0001"+ + "\u0006\u0003\u0006\u031c\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0324\b\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u032a\b\u0006\u0001\u0006\u0003"+ + "\u0006\u032d\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0332"+ + "\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0337\b\u0006"+ + "\u0003\u0006\u0339\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u034e\b\u0007\u0001\b"+ + "\u0003\b\u0351\b\b\u0001\b\u0003\b\u0354\b\b\u0001\b\u0001\b\u0001\b\u0001"+ + "\b\u0003\b\u035a\b\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0361"+ + "\b\b\u0001\b\u0003\b\u0364\b\b\u0001\b\u0001\b\u0001\b\u0003\b\u0369\b"+ + "\b\u0001\b\u0003\b\u036c\b\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0372"+ + "\b\b\u0001\b\u0001\b\u0003\b\u0376\b\b\u0001\b\u0003\b\u0379\b\b\u0001"+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0381\b\b\u0001\b\u0003"+ + "\b\u0384\b\b\u0001\b\u0003\b\u0387\b\b\u0001\b\u0003\b\u038a\b\b\u0001"+ + "\b\u0001\b\u0001\b\u0001\b\u0003\b\u0390\b\b\u0001\b\u0001\b\u0001\b\u0003"+ + "\b\u0395\b\b\u0001\b\u0003\b\u0398\b\b\u0001\b\u0001\b\u0001\b\u0001\b"+ + "\u0001\b\u0001\b\u0001\b\u0005\b\u03a1\b\b\n\b\f\b\u03a4\t\b\u0001\b\u0001"+ + "\b\u0003\b\u03a8\b\b\u0001\b\u0003\b\u03ab\b\b\u0001\b\u0003\b\u03ae\b"+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u03b5\b\b\u0001\b\u0003"+ + "\b\u03b8\b\b\u0001\b\u0001\b\u0001\b\u0003\b\u03bd\b\b\u0001\b\u0003\b"+ + "\u03c0\b\b\u0001\b\u0003\b\u03c3\b\b\u0001\t\u0001\t\u0003\t\u03c7\b\t"+ + "\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u03cd\b\t\u0001\t\u0001\t\u0003"+ + "\t\u03d1\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u03d7\b\t\u0001\t"+ + "\u0003\t\u03da\b\t\u0001\t\u0001\t\u0003\t\u03de\b\t\u0001\t\u0001\t\u0001"+ + "\t\u0003\t\u03e3\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ + "\t\u03eb\b\t\u0003\t\u03ed\b\t\u0001\t\u0001\t\u0003\t\u03f1\b\t\u0001"+ + "\t\u0003\t\u03f4\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u03fb"+ + "\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u0400\b\t\u0003\t\u0402\b\t\u0003"+ + "\t\u0404\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u040b\b\t"+ + "\u0001\t\u0003\t\u040e\b\t\u0001\t\u0001\t\u0003\t\u0412\b\t\u0001\t\u0001"+ + "\t\u0003\t\u0416\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u041b\b\t\u0001\t"+ + "\u0001\t\u0001\t\u0001\t\u0003\t\u0421\b\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0003\t\u0428\b\t\u0001\t\u0001\t\u0003\t\u042c\b\t\u0001\t"+ + "\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0436"+ + "\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u043b\b\t\u0001\t\u0001\t\u0001\t"+ + "\u0001\t\u0003\t\u0441\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0003\t\u0449\b\t\u0003\t\u044b\b\t\u0001\t\u0001\t\u0001\t\u0001\t"+ + "\u0001\t\u0003\t\u0452\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u0457\b\t\u0001"+ + "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u045f\b\t\u0001\t\u0001"+ + "\t\u0003\t\u0463\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u046a"+ + "\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0470\b\t\u0001\t\u0001\t"+ + "\u0003\t\u0474\b\t\u0001\t\u0003\t\u0477\b\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\t\u0003\t\u047f\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u048a\b\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ + "\t\u0497\b\t\u0001\t\u0001\t\u0003\t\u049b\b\t\u0001\t\u0001\t\u0001\t"+ + "\u0001\t\u0001\t\u0001\t\u0003\t\u04a3\b\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0003\t\u04aa\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0003\t\u04b2\b\t\u0001\t\u0003\t\u04b5\b\t\u0001\t\u0001\t\u0003\t"+ + "\u04b9\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u04c0\b\t\u0001"+ + "\t\u0001\t\u0003\t\u04c4\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ + "\t\u04cb\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u04d3"+ + "\b\t\u0001\t\u0003\t\u04d6\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t"+ + "\u04dc\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u04e1\b\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\t\u0003\t\u04e8\b\t\u0001\t\u0003\t\u04eb\b\t\u0001\t"+ + "\u0001\t\u0003\t\u04ef\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ + "\t\u04f6\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u04fb\b\t\u0001\t\u0001\t"+ + "\u0001\t\u0001\t\u0001\t\u0003\t\u0502\b\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0003\t\u0508\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u0516\b\n\u0001\n\u0001"+ + "\n\u0003\n\u051a\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0003\n\u0537\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0003\n\u0547\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u054d\b\n"+ + "\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0005\n\u0567\b\n\n"+ + "\n\f\n\u056a\t\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0005\n\u0574\b\n\n\n\f\n\u0577\t\n\u0001\n\u0001\n\u0001\n"+ + "\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0005\n\u0581\b\n\n\n\f\n\u0584"+ + "\t\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u0596"+ + "\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ + "\n\u0001\n\u0001\n\u0001\n\u0003\n\u05a4\b\n\u0003\n\u05a6\b\n\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+ + "\u05b4\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0003\u000b\u05bb\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0003\u000b\u05c2\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0003\u000b\u05c9\b\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u05d1\b\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0003\u000b\u05d9\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0003\u000b\u05e0\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u05e8\b\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+ + "\u05f0\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u05fa\b\u000b\u0001\u000b"+ + "\u0001\u000b\u0003\u000b\u05fe\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ + "\u0001\u000b\u0003\u000b\u0604\b\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+ + "\u0608\b\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u060c\b\u000b\u0001"+ + "\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0611\b\u000b\u0001\u000b\u0001"+ + "\u000b\u0001\u000b\u0003\u000b\u0616\b\u000b\u0001\u000b\u0001\u000b\u0001"+ + "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u061e\b\u000b\u0001"+ + "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0624\b\u000b\u0001"+ + "\f\u0001\f\u0003\f\u0628\b\f\u0001\f\u0001\f\u0003\f\u062c\b\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u063c\b\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0003\f\u0642\b\f\u0001\f\u0003\f\u0645\b\f\u0001\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u064e\b\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0003\f\u0654\b\f\u0001\f\u0001\f\u0003\f\u0658\b\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0003\f\u0664\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u066a"+ + "\b\f\u0001\f\u0003\f\u066d\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u067a\b\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u0684"+ + "\b\f\u0001\f\u0001\f\u0003\f\u0688\b\f\u0001\f\u0001\f\u0003\f\u068c\b"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u0693\b\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06a4\b\f\u0001\f\u0001\f\u0003"+ + "\f\u06a8\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0003\f\u06b5\b\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0003\f\u06bb\b\f\u0001\f\u0001\f\u0003\f\u06bf\b\f\u0001\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0003\f\u06c6\b\f\u0001\f\u0001\f\u0001\f\u0003"+ + "\f\u06cb\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06d3"+ + "\b\f\u0003\f\u06d5\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06db\b"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0003\f\u06e7\b\f\u0001\f\u0001\f\u0003\f\u06eb\b\f\u0001\f"+ + "\u0003\f\u06ee\b\f\u0001\f\u0003\f\u06f1\b\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06fe"+ + "\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ + "\f\u0711\b\f\u0001\f\u0001\f\u0001\f\u0003\f\u0716\b\f\u0001\f\u0003\f"+ + "\u0719\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ + "\f\u0722\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0003\f\u072e\b\f\u0001\f\u0001\f\u0003\f\u0732\b\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ + "\f\u0005\f\u073d\b\f\n\f\f\f\u0740\t\f\u0001\f\u0001\f\u0001\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u074c\b\f\u0001"+ + "\f\u0001\f\u0003\f\u0750\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ + "\f\u0757\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u075d\b\f\u0001\f"+ + "\u0003\f\u0760\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u0766\b\f\u0001"+ + "\f\u0001\f\u0003\f\u076a\b\f\u0001\f\u0001\f\u0001\f\u0003\f\u076f\b\f"+ + "\u0001\f\u0003\f\u0772\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ + "\f\u0779\b\f\u0001\f\u0003\f\u077c\b\f\u0003\f\u077e\b\f\u0001\r\u0001"+ + "\r\u0003\r\u0782\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u078c\b\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0005\u000f\u0796\b\u000f\n\u000f\f\u000f\u0799\t\u000f"+ + "\u0003\u000f\u079b\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07a4\b\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07ab\b\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005\u000f\u07b1\b\u000f"+ + "\n\u000f\f\u000f\u07b4\t\u000f\u0003\u000f\u07b6\b\u000f\u0001\u000f\u0003"+ + "\u000f\u07b9\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005"+ + "\u000f\u07c5\b\u000f\n\u000f\f\u000f\u07c8\t\u000f\u0001\u000f\u0001\u000f"+ + "\u0003\u000f\u07cc\b\u000f\u0001\u000f\u0003\u000f\u07cf\b\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005\u000f\u07db\b\u000f\n"+ + "\u000f\f\u000f\u07de\t\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07e2"+ + "\b\u000f\u0001\u000f\u0003\u000f\u07e5\b\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07ec\b\u000f\u0003\u000f"+ + "\u07ee\b\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+ + "\u07f4\b\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u07f9\b"+ + "\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u07fd\b\u0011\u0001\u0011\u0003"+ + "\u0011\u0800\b\u0011\u0001\u0011\u0003\u0011\u0803\b\u0011\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u080c\b\u0012\u0003\u0012\u080e\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0003\u0012\u0818\b\u0012\u0001\u0012\u0003\u0012\u081b\b\u0012"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u081f\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0003\u0012\u0824\b\u0012\u0001\u0012\u0003\u0012\u0827\b"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0831\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0837\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0003\u0012\u083c\b\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0003\u0012\u0842\b\u0012\u0001\u0012\u0003\u0012\u0845"+ + "\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0849\b\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0850\b\u0012"+ + "\u0001\u0012\u0003\u0012\u0853\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u085a\b\u0012\u0001\u0012\u0003\u0012"+ + "\u085d\b\u0012\u0001\u0012\u0003\u0012\u0860\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0003\u0012\u0864\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0868"+ + "\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u086d\b\u0012"+ + "\u0001\u0012\u0003\u0012\u0870\b\u0012\u0001\u0012\u0003\u0012\u0873\b"+ + "\u0012\u0001\u0012\u0003\u0012\u0876\b\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0003\u0012\u087c\b\u0012\u0001\u0012\u0003\u0012\u087f"+ + "\b\u0012\u0001\u0012\u0003\u0012\u0882\b\u0012\u0001\u0012\u0003\u0012"+ + "\u0885\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u088e\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u0892\b\u0012\u0001\u0012\u0003\u0012\u0895\b\u0012\u0001"+ + "\u0012\u0003\u0012\u0898\b\u0012\u0001\u0012\u0003\u0012\u089b\b\u0012"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u089f\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u08a5\b\u0012\u0001\u0012\u0003\u0012"+ + "\u08a8\b\u0012\u0001\u0012\u0003\u0012\u08ab\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0003\u0012\u08b5\b\u0012\u0001\u0012\u0003\u0012\u08b8\b\u0012"+ + "\u0001\u0012\u0003\u0012\u08bb\b\u0012\u0001\u0012\u0003\u0012\u08be\b"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u08c4"+ + "\b\u0012\u0001\u0012\u0003\u0012\u08c7\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u08cb\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012"+ + "\u08d0\b\u0012\u0001\u0012\u0003\u0012\u08d3\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0003\u0012\u08d8\b\u0012\u0001\u0012\u0003\u0012\u08db"+ + "\b\u0012\u0001\u0012\u0003\u0012\u08de\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u08e4\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u08eb\b\u0012\u0001\u0012"+ + "\u0001\u0012\u0003\u0012\u08ef\b\u0012\u0001\u0012\u0003\u0012\u08f2\b"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u08f7\b\u0012\u0001"+ + "\u0012\u0003\u0012\u08fa\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003"+ + "\u0012\u08ff\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0903\b\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0909\b\u0012"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u0911\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u0917\b\u0012\u0001\u0012\u0003\u0012\u091a\b\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0925\b\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0003\u0012\u0930\b\u0012\u0003\u0012\u0932\b\u0012"+ + "\u0003\u0012\u0934\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0003\u0012\u093b\b\u0012\u0001\u0012\u0003\u0012\u093e\b"+ + "\u0012\u0001\u0012\u0003\u0012\u0941\b\u0012\u0001\u0012\u0003\u0012\u0944"+ + "\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u094a"+ + "\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0003\u0012\u0952\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ + "\u0012\u0003\u0012\u0958\b\u0012\u0001\u0012\u0003\u0012\u095b\b\u0012"+ + "\u0001\u0012\u0003\u0012\u095e\b\u0012\u0001\u0012\u0003\u0012\u0961\b"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003"+ + "\u0012\u0968\b\u0012\u0003\u0012\u096a\b\u0012\u0001\u0013\u0001\u0013"+ + "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u0972\b\u0013"+ + "\u0001\u0013\u0001\u0013\u0003\u0013\u0976\b\u0013\u0001\u0013\u0001\u0013"+ + "\u0001\u0013\u0005\u0013\u097b\b\u0013\n\u0013\f\u0013\u097e\t\u0013\u0003"+ + "\u0013\u0980\b\u0013\u0001\u0013\u0003\u0013\u0983\b\u0013\u0001\u0013"+ + "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013"+ + "\u098b\b\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0003\u0014\u0994\b\u0014\u0001\u0014\u0003\u0014"+ + "\u0997\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0003\u0014\u09a5\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09cc\b\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014"+ + "\u09d3\b\u0014\u0003\u0014\u09d5\b\u0014\u0001\u0014\u0001\u0014\u0001"+ + "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09dd\b\u0014\u0001"+ + "\u0014\u0003\u0014\u09e0\b\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09e4"+ + "\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+ + "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09f0"+ + "\b\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ + "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u09fc"+ + "\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001"+ + "\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ + "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001"+ + "\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u0a12\b\u001a\n\u001a\f\u001a"+ + "\u0a15\t\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b"+ + "\u0003\u001b\u0a1c\b\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+ + "\u0003\u001b\u0a22\b\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u0a26\b"+ + "\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u0a2b\b\u001c\n"+ + "\u001c\f\u001c\u0a2e\t\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0001\u001d\u0003\u001d\u0a35\b\u001d\u0001\u001d\u0003\u001d\u0a38"+ + "\b\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u0a3e"+ + "\b\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u0a44"+ + "\b\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u0a49\b\u001e"+ + "\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+ + "\u0003\u001f\u0a51\b\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u0a55\b"+ + "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0003 \u0a5c\b \u0001!\u0001"+ + "!\u0001!\u0001!\u0001!\u0001!\u0001!\u0003!\u0a65\b!\u0001!\u0001!\u0001"+ + "!\u0001!\u0003!\u0a6b\b!\u0001\"\u0001\"\u0001\"\u0001\"\u0003\"\u0a71"+ + "\b\"\u0001\"\u0003\"\u0a74\b\"\u0001\"\u0001\"\u0001\"\u0001\"\u0003\""+ + "\u0a7a\b\"\u0001\"\u0003\"\u0a7d\b\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+ + "\"\u0003\"\u0a84\b\"\u0003\"\u0a86\b\"\u0001#\u0001#\u0001#\u0001#\u0001"+ + "#\u0001#\u0001#\u0003#\u0a8f\b#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ + "#\u0005#\u0a97\b#\n#\f#\u0a9a\t#\u0001#\u0003#\u0a9d\b#\u0001#\u0001#"+ + "\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0005#\u0aa8\b#\n#\f"+ + "#\u0aab\t#\u0001#\u0003#\u0aae\b#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ + "#\u0005#\u0ab6\b#\n#\f#\u0ab9\t#\u0001#\u0001#\u0001#\u0001#\u0003#\u0abf"+ + "\b#\u0001#\u0001#\u0001#\u0001#\u0003#\u0ac5\b#\u0003#\u0ac7\b#\u0001"+ + "$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ + "$\u0001$\u0001$\u0001$\u0005$\u0ad7\b$\n$\f$\u0ada\t$\u0001$\u0003$\u0add"+ + "\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0005"+ + "$\u0ae8\b$\n$\f$\u0aeb\t$\u0001$\u0003$\u0aee\b$\u0001$\u0001$\u0001$"+ + "\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ + "$\u0001$\u0001$\u0003$\u0aff\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ + "$\u0001$\u0001$\u0003$\u0b09\b$\u0001$\u0001$\u0001$\u0001$\u0003$\u0b0f"+ + "\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0003$\u0b17\b$\u0001$\u0001"+ + "$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0005$\u0b21\b$\n$\f$\u0b24"+ + "\t$\u0001$\u0003$\u0b27\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0003"+ + "$\u0b2f\b$\u0003$\u0b31\b$\u0001%\u0001%\u0001%\u0001%\u0003%\u0b37\b"+ + "%\u0001%\u0001%\u0003%\u0b3b\b%\u0001%\u0001%\u0001%\u0001%\u0003%\u0b41"+ + "\b%\u0001%\u0001%\u0003%\u0b45\b%\u0001%\u0001%\u0001%\u0001%\u0003%\u0b4b"+ + "\b%\u0001%\u0001%\u0003%\u0b4f\b%\u0001%\u0001%\u0001%\u0003%\u0b54\b"+ + "%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "&\u0001&\u0001&\u0003&\u0b76\b&\u0001&\u0001&\u0001&\u0001&\u0001&\u0003"+ + "&\u0b7d\b&\u0001&\u0003&\u0b80\b&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ + "&\u0001&\u0003&\u0b89\b&\u0001&\u0001&\u0001&\u0001&\u0001&\u0003&\u0b90"+ + "\b&\u0003&\u0b92\b&\u0001\'\u0001\'\u0003\'\u0b96\b\'\u0001\'\u0003\'"+ + "\u0b99\b\'\u0001\'\u0003\'\u0b9c\b\'\u0001\'\u0003\'\u0b9f\b\'\u0001\'"+ + "\u0001\'\u0003\'\u0ba3\b\'\u0001\'\u0003\'\u0ba6\b\'\u0001(\u0001(\u0001"+ + "(\u0001(\u0003(\u0bac\b(\u0001)\u0001)\u0001)\u0001)\u0003)\u0bb2\b)\u0003"+ + ")\u0bb4\b)\u0001)\u0001)\u0003)\u0bb8\b)\u0001)\u0001)\u0003)\u0bbc\b"+ + ")\u0001)\u0003)\u0bbf\b)\u0001)\u0003)\u0bc2\b)\u0001)\u0003)\u0bc5\b"+ + ")\u0001)\u0001)\u0003)\u0bc9\b)\u0001)\u0001)\u0003)\u0bcd\b)\u0001)\u0003"+ + ")\u0bd0\b)\u0001)\u0003)\u0bd3\b)\u0001)\u0003)\u0bd6\b)\u0003)\u0bd8"+ + "\b)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0003*\u0be2"+ + "\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ + "*\u0001*\u0001*\u0003*\u0bf0\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0003"+ + "*\u0bf7\b*\u0001*\u0001*\u0001*\u0001*\u0005*\u0bfd\b*\n*\f*\u0c00\t*"+ + "\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ + "*\u0003*\u0c0c\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ + "*\u0001*\u0001*\u0001*\u0001*\u0003*\u0c1a\b*\u0001*\u0001*\u0001*\u0001"+ + "*\u0001*\u0003*\u0c21\b*\u0001*\u0001*\u0001*\u0001*\u0005*\u0c27\b*\n"+ + "*\f*\u0c2a\t*\u0001*\u0001*\u0003*\u0c2e\b*\u0001+\u0001+\u0003+\u0c32"+ + "\b+\u0001+\u0003+\u0c35\b+\u0001,\u0001,\u0001,\u0005,\u0c3a\b,\n,\f,"+ + "\u0c3d\t,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001-\u0001-\u0001-\u0001-\u0003-\u0c4c\b-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001-\u0003-\u0c5d\b-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003"+ + "-\u0c65\b-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ + "-\u0001-\u0003-\u0c71\b-\u0001-\u0001-\u0001-\u0001-\u0003-\u0c77\b-\u0003"+ + "-\u0c79\b-\u0001.\u0001.\u0001.\u0001.\u0001.\u0005.\u0c80\b.\n.\f.\u0c83"+ + "\t.\u0001.\u0003.\u0c86\b.\u0001.\u0001.\u0001.\u0001.\u0001.\u0005.\u0c8d"+ + "\b.\n.\f.\u0c90\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0005.\u0c97\b."+ + "\n.\f.\u0c9a\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0005.\u0cae\b.\n.\f.\u0cb1\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0005.\u0cb9\b.\n.\f.\u0cbc\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0001.\u0001.\u0001.\u0003.\u0cc7\b.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0005.\u0cce\b.\n.\f.\u0cd1\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ + ".\u0001.\u0001.\u0001.\u0001.\u0003.\u0cdd\b.\u0001/\u0001/\u0003/\u0ce1"+ + "\b/\u00010\u00010\u00010\u00010\u00010\u00030\u0ce8\b0\u00010\u00030\u0ceb"+ + "\b0\u00010\u00030\u0cee\b0\u00011\u00011\u00011\u00011\u00031\u0cf4\b"+ + "1\u00011\u00031\u0cf7\b1\u00011\u00031\u0cfa\b1\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00031\u0d02\b1\u00011\u00031\u0d05\b1\u00011\u00011\u0001"+ + "1\u00011\u00031\u0d0b\b1\u00011\u00031\u0d0e\b1\u00011\u00011\u00011\u0001"+ + "1\u00031\u0d14\b1\u00011\u00031\u0d17\b1\u00011\u00031\u0d1a\b1\u0001"+ + "1\u00011\u00011\u00011\u00031\u0d20\b1\u00011\u00031\u0d23\b1\u00011\u0001"+ + "1\u00031\u0d27\b1\u00011\u00011\u00011\u00011\u00011\u00011\u00031\u0d2f"+ + "\b1\u00011\u00011\u00011\u00031\u0d34\b1\u00031\u0d36\b1\u00031\u0d38"+ + "\b1\u00011\u00031\u0d3b\b1\u00011\u00011\u00031\u0d3f\b1\u00011\u0001"+ + "1\u00011\u00031\u0d44\b1\u00011\u00011\u00031\u0d48\b1\u00011\u00011\u0001"+ + "1\u00031\u0d4d\b1\u00011\u00011\u00031\u0d51\b1\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00031\u0d59\b1\u00011\u00011\u00011\u00011\u00011\u0001"+ + "1\u00011\u00031\u0d62\b1\u00011\u00011\u00031\u0d66\b1\u00011\u00031\u0d69"+ + "\b1\u00011\u00031\u0d6c\b1\u00011\u00011\u00011\u00011\u00011\u00031\u0d73"+ + "\b1\u00011\u00031\u0d76\b1\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00011\u00011\u00011\u00031\u0d8f\b1\u00011\u0001"+ + "1\u00011\u00011\u00011\u00011\u00031\u0d97\b1\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00031\u0da0\b1\u00011\u00011\u00011\u00031\u0da5"+ + "\b1\u00031\u0da7\b1\u00031\u0da9\b1\u00011\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0003"+ + "1\u0db9\b1\u00011\u00011\u00031\u0dbd\b1\u00011\u00011\u00011\u00011\u0001"+ + "1\u00011\u00011\u00011\u00031\u0dc7\b1\u00011\u00031\u0dca\b1\u00031\u0dcc"+ + "\b1\u00012\u00012\u00012\u00032\u0dd1\b2\u00013\u00013\u00013\u00014\u0001"+ + "4\u00014\u00015\u00015\u00015\u00015\u00035\u0ddd\b5\u00015\u00015\u0001"+ + "5\u00015\u00015\u00035\u0de4\b5\u00015\u00015\u00015\u00015\u00015\u0001"+ + "5\u00035\u0dec\b5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0003"+ + "5\u0df5\b5\u00035\u0df7\b5\u00015\u00015\u00015\u00015\u00035\u0dfd\b"+ + "5\u00015\u00035\u0e00\b5\u00016\u00016\u00036\u0e04\b6\u00016\u00016\u0001"+ + "6\u00036\u0e09\b6\u00016\u00016\u00016\u00016\u00016\u00036\u0e10\b6\u0001"+ + "6\u00016\u00016\u00016\u00016\u00036\u0e17\b6\u00016\u00016\u00016\u0001"+ + "6\u00016\u00036\u0e1e\b6\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ + "6\u00016\u00016\u00016\u00016\u00056\u0e2b\b6\n6\f6\u0e2e\t6\u00016\u0003"+ + "6\u0e31\b6\u00016\u00016\u00016\u00016\u00036\u0e37\b6\u00016\u00036\u0e3a"+ + "\b6\u00016\u00016\u00056\u0e3e\b6\n6\f6\u0e41\t6\u00016\u00036\u0e44\b"+ + "6\u00036\u0e46\b6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ + "7\u00017\u00037\u0e51\b7\u00017\u00017\u00017\u00017\u00017\u00037\u0e58"+ + "\b7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0003"+ + "7\u0e63\b7\u00017\u00017\u00017\u00017\u00037\u0e69\b7\u00017\u00037\u0e6c"+ + "\b7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ + "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0003"+ + "7\u0e81\b7\u00017\u00037\u0e84\b7\u00017\u00017\u00017\u00017\u00017\u0001"+ + "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00037\u0e93\b7\u0001"+ + "7\u00017\u00017\u00037\u0e98\b7\u00017\u00037\u0e9b\b7\u00017\u00017\u0001"+ + "7\u00017\u00017\u00037\u0ea2\b7\u00018\u00018\u00018\u00018\u00018\u0001"+ + "8\u00018\u00018\u00018\u00018\u00038\u0eae\b8\u00018\u00018\u00018\u0001"+ + "8\u00018\u00018\u00038\u0eb6\b8\u00019\u00019\u00019\u00019\u00019\u0003"+ + "9\u0ebd\b9\u00019\u00019\u00039\u0ec1\b9\u00019\u00019\u00019\u00019\u0001"+ + "9\u00039\u0ec8\b9\u00019\u00019\u00019\u00019\u00019\u00039\u0ecf\b9\u0001"+ + "9\u00019\u00019\u00039\u0ed4\b9\u00019\u00019\u00019\u00039\u0ed9\b9\u0001"+ + "9\u00019\u00019\u00019\u00019\u00019\u00019\u00039\u0ee2\b9\u00019\u0001"+ + "9\u00019\u00019\u00039\u0ee8\b9\u00019\u00019\u00039\u0eec\b9\u00019\u0001"+ + "9\u00019\u00019\u00019\u00019\u00039\u0ef4\b9\u00019\u00019\u00039\u0ef8"+ + "\b9\u00019\u00019\u00019\u00019\u00019\u00019\u00039\u0f00\b9\u00019\u0001"+ + "9\u00019\u00019\u00019\u00019\u00039\u0f08\b9\u00019\u00019\u00019\u0001"+ + "9\u00019\u00039\u0f0f\b9\u00019\u00039\u0f12\b9\u00019\u00019\u00019\u0001"+ + "9\u00019\u00039\u0f19\b9\u00019\u00019\u00039\u0f1d\b9\u00039\u0f1f\b"+ + "9\u0001:\u0001:\u0001:\u0005:\u0f24\b:\n:\f:\u0f27\t:\u0001;\u0001;\u0001"+ + ";\u0001;\u0003;\u0f2d\b;\u0003;\u0f2f\b;\u0001<\u0001<\u0001<\u0005<\u0f34"+ + "\b<\n<\f<\u0f37\t<\u0001=\u0001=\u0001=\u0001=\u0003=\u0f3d\b=\u0001>"+ + "\u0001>\u0003>\u0f41\b>\u0001>\u0001>\u0001>\u0001>\u0003>\u0f47\b>\u0001"+ + "?\u0001?\u0001?\u0003?\u0f4c\b?\u0003?\u0f4e\b?\u0001?\u0001?\u0001?\u0001"+ + "?\u0001?\u0001?\u0003?\u0f56\b?\u0003?\u0f58\b?\u0001?\u0001?\u0001?\u0001"+ + "?\u0001?\u0003?\u0f5f\b?\u0003?\u0f61\b?\u0001?\u0001?\u0003?\u0f65\b"+ + "?\u0001?\u0001?\u0001?\u0001?\u0003?\u0f6b\b?\u0003?\u0f6d\b?\u0001?\u0003"+ + "?\u0f70\b?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0003@\u0f78\b@\u0001"+ + "A\u0001A\u0001A\u0005A\u0f7d\bA\nA\fA\u0f80\tA\u0001B\u0001B\u0001B\u0003"+ + "B\u0f85\bB\u0001B\u0001B\u0001B\u0003B\u0f8a\bB\u0005B\u0f8c\bB\nB\fB"+ + "\u0f8f\tB\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ + "B\u0001B\u0001B\u0003B\u0f9c\bB\u0001B\u0001B\u0001B\u0003B\u0fa1\bB\u0001"+ + "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ + "B\u0003B\u0fae\bB\u0003B\u0fb0\bB\u0001C\u0001C\u0001C\u0001C\u0001C\u0003"+ + "C\u0fb7\bC\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0003D\u0fbf\bD\u0001"+ + "D\u0001D\u0003D\u0fc3\bD\u0001D\u0001D\u0001D\u0003D\u0fc8\bD\u0001D\u0001"+ + "D\u0001D\u0003D\u0fcd\bD\u0001D\u0001D\u0001D\u0003D\u0fd2\bD\u0001D\u0001"+ + "D\u0001D\u0001D\u0001D\u0001D\u0003D\u0fda\bD\u0001D\u0001D\u0001D\u0001"+ + "D\u0001D\u0001D\u0001D\u0003D\u0fe3\bD\u0001D\u0003D\u0fe6\bD\u0001E\u0001"+ + "E\u0001E\u0001E\u0003E\u0fec\bE\u0003E\u0fee\bE\u0001E\u0001E\u0001E\u0001"+ + "E\u0003E\u0ff4\bE\u0001E\u0001E\u0001E\u0001E\u0001E\u0003E\u0ffb\bE\u0001"+ + "F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+ + "G\u0001G\u0003G\u1009\bG\u0001H\u0001H\u0003H\u100d\bH\u0001H\u0001H\u0001"+ + "H\u0003H\u1012\bH\u0001H\u0001H\u0001H\u0001H\u0003H\u1018\bH\u0001I\u0001"+ + "I\u0001I\u0001I\u0001I\u0001I\u0003I\u1020\bI\u0001I\u0003I\u1023\bI\u0001"+ + "J\u0001J\u0001J\u0001J\u0003J\u1029\bJ\u0001J\u0003J\u102c\bJ\u0001J\u0001"+ + "J\u0001J\u0001K\u0001K\u0001K\u0001K\u0003K\u1035\bK\u0001K\u0003K\u1038"+ + "\bK\u0001K\u0001K\u0001K\u0001K\u0003K\u103e\bK\u0001K\u0001K\u0001K\u0001"+ + "K\u0001K\u0001K\u0001K\u0001K\u0003K\u1048\bK\u0001K\u0001K\u0003K\u104c"+ + "\bK\u0001K\u0003K\u104f\bK\u0003K\u1051\bK\u0001L\u0001L\u0001L\u0003"+ + "L\u1056\bL\u0001L\u0001L\u0001L\u0003L\u105b\bL\u0001M\u0001M\u0003M\u105f"+ + "\bM\u0001M\u0001M\u0001M\u0001M\u0003M\u1065\bM\u0001N\u0001N\u0001N\u0001"+ + "N\u0001N\u0003N\u106c\bN\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ + "N\u0001N\u0001N\u0001N\u0003N\u1078\bN\u0003N\u107a\bN\u0001O\u0001O\u0001"+ + "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0003"+ + "O\u1088\bO\u0001P\u0003P\u108b\bP\u0001P\u0001P\u0001P\u0003P\u1090\b"+ + "P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u1098\bP\u0001Q\u0003"+ + "Q\u109b\bQ\u0001Q\u0001Q\u0001Q\u0003Q\u10a0\bQ\u0001Q\u0001Q\u0001Q\u0003"+ + "Q\u10a5\bQ\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0005R\u10ad\bR\n"+ + "R\fR\u10b0\tR\u0001R\u0001R\u0001S\u0001S\u0003S\u10b6\bS\u0001T\u0003"+ + "T\u10b9\bT\u0001T\u0003T\u10bc\bT\u0001T\u0001T\u0001T\u0001T\u0001T\u0001"+ + "T\u0005T\u10c4\bT\nT\fT\u10c7\tT\u0001T\u0001T\u0001T\u0001T\u0001T\u0003"+ + "T\u10ce\bT\u0001T\u0001T\u0001T\u0001T\u0003T\u10d4\bT\u0001T\u0001T\u0001"+ + "T\u0001T\u0003T\u10da\bT\u0001T\u0001T\u0001T\u0003T\u10df\bT\u0001T\u0001"+ + "T\u0001T\u0003T\u10e4\bT\u0001T\u0003T\u10e7\bT\u0001T\u0003T\u10ea\b"+ + "T\u0001T\u0003T\u10ed\bT\u0001T\u0003T\u10f0\bT\u0001T\u0003T\u10f3\b"+ + "T\u0001T\u0003T\u10f6\bT\u0001T\u0003T\u10f9\bT\u0001T\u0003T\u10fc\b"+ + "T\u0001T\u0003T\u10ff\bT\u0001T\u0003T\u1102\bT\u0001T\u0001T\u0001T\u0001"+ + "T\u0001T\u0001T\u0001T\u0001T\u0001T\u0003T\u110d\bT\u0001T\u0003T\u1110"+ + "\bT\u0001T\u0003T\u1113\bT\u0001T\u0003T\u1116\bT\u0001T\u0003T\u1119"+ + "\bT\u0003T\u111b\bT\u0001U\u0001U\u0001V\u0001V\u0001V\u0001W\u0001W\u0001"+ + "W\u0001W\u0001W\u0001W\u0001W\u0003W\u1129\bW\u0001X\u0001X\u0001X\u0001"+ + "X\u0001X\u0003X\u1130\bX\u0001Y\u0001Y\u0001Z\u0001Z\u0003Z\u1136\bZ\u0001"+ + "[\u0001[\u0003[\u113a\b[\u0001\\\u0001\\\u0001\\\u0003\\\u113f\b\\\u0001"+ + "]\u0001]\u0001]\u0005]\u1144\b]\n]\f]\u1147\t]\u0001^\u0001^\u0003^\u114b"+ + "\b^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0003_\u1154\b_\u0003"+ + "_\u1156\b_\u0001`\u0001`\u0001`\u0001`\u0003`\u115c\b`\u0001`\u0003`\u115f"+ + "\b`\u0001a\u0001a\u0003a\u1163\ba\u0001a\u0003a\u1166\ba\u0001a\u0003"+ + "a\u1169\ba\u0001b\u0001b\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001"+ + "e\u0001e\u0001e\u0001e\u0003e\u1177\be\u0001f\u0001f\u0001g\u0001g\u0001"+ + "g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001"+ + "j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001"+ + "k\u0005k\u1192\bk\nk\fk\u1195\tk\u0001k\u0001k\u0001l\u0001l\u0001l\u0001"+ + "l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ + "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0003m\u11b7\bm\u0003m\u11b9"+ + "\bm\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0003n\u11c2\bn\u0001"+ + "o\u0001o\u0003o\u11c6\bo\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ + "o\u0003o\u11cf\bo\u0001o\u0001o\u0001o\u0001o\u0003o\u11d5\bo\u0001o\u0001"+ + "o\u0001o\u0001o\u0003o\u11db\bo\u0001o\u0003o\u11de\bo\u0001o\u0003o\u11e1"+ + "\bo\u0001o\u0003o\u11e4\bo\u0001o\u0003o\u11e7\bo\u0001p\u0001p\u0001"+ + "p\u0001p\u0001p\u0001p\u0003p\u11ef\bp\u0001q\u0001q\u0001q\u0001q\u0001"+ + "q\u0001q\u0003q\u11f7\bq\u0001q\u0003q\u11fa\bq\u0001r\u0003r\u11fd\b"+ + "r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0003"+ + "s\u1208\bs\u0001s\u0001s\u0001s\u0001s\u0003s\u120e\bs\u0001s\u0005s\u1211"+ + "\bs\ns\fs\u1214\ts\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ + "u\u0003u\u121e\bu\u0001v\u0001v\u0003v\u1222\bv\u0001v\u0003v\u1225\b"+ + "v\u0001v\u0003v\u1228\bv\u0001v\u0003v\u122b\bv\u0001v\u0003v\u122e\b"+ + "v\u0001v\u0003v\u1231\bv\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001"+ + "w\u0005w\u123a\bw\nw\fw\u123d\tw\u0001x\u0001x\u0003x\u1241\bx\u0001x"+ + "\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0005y\u124c"+ + "\by\ny\fy\u124f\ty\u0001y\u0001y\u0001z\u0001z\u0003z\u1255\bz\u0001z"+ + "\u0001z\u0001{\u0001{\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001"+ + "~\u0003~\u1262\b~\u0001~\u0001~\u0001~\u0003~\u1267\b~\u0001~\u0001~\u0001"+ + "~\u0003~\u126c\b~\u0005~\u126e\b~\n~\f~\u1271\t~\u0001\u007f\u0001\u007f"+ + "\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080"+ + "\u0001\u0081\u0001\u0081\u0001\u0081\u0005\u0081\u127e\b\u0081\n\u0081"+ + "\f\u0081\u1281\t\u0081\u0001\u0082\u0001\u0082\u0005\u0082\u1285\b\u0082"+ + "\n\u0082\f\u0082\u1288\t\u0082\u0001\u0083\u0001\u0083\u0001\u0083\u0003"+ + "\u0083\u128d\b\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u1291\b\u0083"+ + "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ + "\u0001\u0084\u0001\u0084\u0003\u0084\u129b\b\u0084\u0001\u0085\u0001\u0085"+ + "\u0001\u0085\u0001\u0085\u0005\u0085\u12a1\b\u0085\n\u0085\f\u0085\u12a4"+ + "\t\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ + "\u0085\u0005\u0085\u12ac\b\u0085\n\u0085\f\u0085\u12af\t\u0085\u0001\u0085"+ + "\u0001\u0085\u0003\u0085\u12b3\b\u0085\u0001\u0086\u0001\u0086\u0001\u0086"+ + "\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ + "\u0005\u0087\u12be\b\u0087\n\u0087\f\u0087\u12c1\t\u0087\u0003\u0087\u12c3"+ + "\b\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+ + "\u0087\u0005\u0087\u12cb\b\u0087\n\u0087\f\u0087\u12ce\t\u0087\u0003\u0087"+ + "\u12d0\b\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ + "\u0001\u0087\u0001\u0087\u0005\u0087\u12d9\b\u0087\n\u0087\f\u0087\u12dc"+ + "\t\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0005"+ + "\u0087\u12e3\b\u0087\n\u0087\f\u0087\u12e6\t\u0087\u0003\u0087\u12e8\b"+ + "\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0005\u0088\u12ee"+ + "\b\u0088\n\u0088\f\u0088\u12f1\t\u0088\u0003\u0088\u12f3\b\u0088\u0001"+ + "\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001"+ + "\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0003\u008b\u12ff\b\u008b\u0001"+ + "\u008b\u0005\u008b\u1302\b\u008b\n\u008b\f\u008b\u1305\t\u008b\u0001\u008b"+ + "\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0003\u008c"+ + "\u130d\b\u008c\u0001\u008c\u0005\u008c\u1310\b\u008c\n\u008c\f\u008c\u1313"+ + "\t\u008c\u0001\u008c\u0001\u008c\u0003\u008c\u1317\b\u008c\u0001\u008c"+ + "\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0005\u008c\u131e\b\u008c"+ + "\n\u008c\f\u008c\u1321\t\u008c\u0001\u008c\u0001\u008c\u0003\u008c\u1325"+ + "\b\u008c\u0003\u008c\u1327\b\u008c\u0001\u008d\u0001\u008d\u0001\u008d"+ + "\u0001\u008d\u0003\u008d\u132d\b\u008d\u0003\u008d\u132f\b\u008d\u0001"+ + "\u008d\u0003\u008d\u1332\b\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ + "\u008e\u0003\u008e\u1338\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0005"+ + "\u008f\u133d\b\u008f\n\u008f\f\u008f\u1340\t\u008f\u0001\u0090\u0001\u0090"+ + "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0005\u0090"+ + "\u1349\b\u0090\n\u0090\f\u0090\u134c\t\u0090\u0003\u0090\u134e\b\u0090"+ + "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+ + "\u0005\u0090\u1356\b\u0090\n\u0090\f\u0090\u1359\t\u0090\u0001\u0091\u0003"+ + "\u0091\u135c\b\u0091\u0001\u0091\u0003\u0091\u135f\b\u0091\u0001\u0092"+ + "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0005\u0092\u1366\b\u0092"+ + "\n\u0092\f\u0092\u1369\t\u0092\u0001\u0093\u0001\u0093\u0003\u0093\u136d"+ + "\b\u0093\u0001\u0093\u0001\u0093\u0003\u0093\u1371\b\u0093\u0001\u0094"+ + "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094"+ + "\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u0094\u137d\b\u0094\u0001\u0095"+ + "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0005\u0095\u1384\b\u0095"+ + "\n\u0095\f\u0095\u1387\t\u0095\u0001\u0096\u0003\u0096\u138a\b\u0096\u0001"+ + "\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u138f\b\u0096\u0001\u0096\u0001"+ + "\u0096\u0003\u0096\u1393\b\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u1397"+ + "\b\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001"+ + "\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u13a1\b\u0096\u0001\u0097\u0001"+ + "\u0097\u0001\u0097\u0001\u0097\u0003\u0097\u13a7\b\u0097\u0001\u0098\u0001"+ + "\u0098\u0001\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0005"+ + "\u0099\u13b0\b\u0099\n\u0099\f\u0099\u13b3\t\u0099\u0001\u009a\u0001\u009a"+ + "\u0001\u009a\u0001\u009a\u0003\u009a\u13b9\b\u009a\u0001\u009a\u0001\u009a"+ + "\u0001\u009b\u0001\u009b\u0003\u009b\u13bf\b\u009b\u0001\u009b\u0003\u009b"+ + "\u13c2\b\u009b\u0001\u009b\u0003\u009b\u13c5\b\u009b\u0001\u009b\u0003"+ + "\u009b\u13c8\b\u009b\u0001\u009b\u0003\u009b\u13cb\b\u009b\u0001\u009b"+ + "\u0001\u009b\u0003\u009b\u13cf\b\u009b\u0001\u009b\u0003\u009b\u13d2\b"+ + "\u009b\u0001\u009b\u0005\u009b\u13d5\b\u009b\n\u009b\f\u009b\u13d8\t\u009b"+ + "\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0005\u009b"+ + "\u13df\b\u009b\n\u009b\f\u009b\u13e2\t\u009b\u0001\u009b\u0001\u009b\u0001"+ + "\u009b\u0003\u009b\u13e7\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+ + "\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u13f0\b\u009b\u0001"+ + "\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ + "\u009d\u0001\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0005\u009e\u13fd"+ + "\b\u009e\n\u009e\f\u009e\u1400\t\u009e\u0001\u009f\u0001\u009f\u0001\u009f"+ + "\u0001\u009f\u0001\u00a0\u0001\u00a0\u0003\u00a0\u1408\b\u00a0\u0001\u00a1"+ + "\u0001\u00a1\u0003\u00a1\u140c\b\u00a1\u0001\u00a2\u0003\u00a2\u140f\b"+ + "\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2\u1413\b\u00a2\u0003\u00a2\u1415"+ + "\b\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0005\u00a3\u141a\b\u00a3"+ + "\n\u00a3\f\u00a3\u141d\t\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0005"+ + "\u00a4\u1422\b\u00a4\n\u00a4\f\u00a4\u1425\t\u00a4\u0001\u00a5\u0001\u00a5"+ + "\u0001\u00a5\u0003\u00a5\u142a\b\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ + "\u0005\u00a6\u142f\b\u00a6\n\u00a6\f\u00a6\u1432\t\u00a6\u0001\u00a7\u0001"+ + "\u00a7\u0001\u00a7\u0003\u00a7\u1437\b\u00a7\u0001\u00a7\u0003\u00a7\u143a"+ + "\b\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7\u143e\b\u00a7\u0001\u00a7"+ + "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7\u1445\b\u00a7"+ + "\u0001\u00a7\u0003\u00a7\u1448\b\u00a7\u0001\u00a7\u0003\u00a7\u144b\b"+ + "\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003"+ + "\u00a7\u1452\b\u00a7\u0003\u00a7\u1454\b\u00a7\u0001\u00a7\u0001\u00a7"+ + "\u0001\u00a7\u0003\u00a7\u1459\b\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7"+ + "\u145d\b\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ + "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ + "\u0003\u00a7\u146a\b\u00a7\u0003\u00a7\u146c\b\u00a7\u0003\u00a7\u146e"+ + "\b\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ + "\u00a7\u0001\u00a7\u0003\u00a7\u1477\b\u00a7\u0003\u00a7\u1479\b\u00a7"+ + "\u0001\u00a7\u0001\u00a7\u0003\u00a7\u147d\b\u00a7\u0001\u00a8\u0001\u00a8"+ + "\u0001\u00a8\u0005\u00a8\u1482\b\u00a8\n\u00a8\f\u00a8\u1485\t\u00a8\u0001"+ + "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u148b\b\u00a9\u0001"+ + "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u1491\b\u00a9\u0001"+ + "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u1498"+ + "\b\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u149c\b\u00a9\u0001\u00aa"+ + "\u0001\u00aa\u0001\u00aa\u0005\u00aa\u14a1\b\u00aa\n\u00aa\f\u00aa\u14a4"+ + "\t\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003\u00ab\u14aa"+ + "\b\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003\u00ab\u14b0"+ + "\b\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u14b6"+ + "\b\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+ + "\u00ac\u0003\u00ac\u14be\b\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001"+ + "\u00ad\u0003\u00ad\u14c4\b\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001"+ + "\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001"+ + "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0003"+ + "\u00ae\u14d5\b\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0003"+ + "\u00af\u14db\b\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ + "\u00af\u0001\u00af\u0001\u00af\u0005\u00af\u14e4\b\u00af\n\u00af\f\u00af"+ + "\u14e7\t\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0003\u00af\u14ec\b"+ + "\u00af\u0003\u00af\u14ee\b\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+ + "\u00b0\u0005\u00b0\u14f4\b\u00b0\n\u00b0\f\u00b0\u14f7\t\u00b0\u0001\u00b0"+ + "\u0001\u00b0\u0001\u00b1\u0003\u00b1\u14fc\b\u00b1\u0001\u00b1\u0001\u00b1"+ + "\u0001\u00b1\u0001\u00b1\u0003\u00b1\u1502\b\u00b1\u0001\u00b2\u0001\u00b2"+ + "\u0001\u00b2\u0005\u00b2\u1507\b\u00b2\n\u00b2\f\u00b2\u150a\t\u00b2\u0001"+ + "\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0003\u00b3\u1511"+ + "\b\u00b3\u0001\u00b3\u0003\u00b3\u1514\b\u00b3\u0001\u00b4\u0001\u00b4"+ + "\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0005\u00b5"+ + "\u151d\b\u00b5\n\u00b5\f\u00b5\u1520\t\u00b5\u0001\u00b5\u0001\u00b5\u0001"+ + "\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0005\u00b6\u1528\b\u00b6\n"+ + "\u00b6\f\u00b6\u152b\t\u00b6\u0001\u00b7\u0001\u00b7\u0003\u00b7\u152f"+ + "\b\u00b7\u0001\u00b7\u0003\u00b7\u1532\b\u00b7\u0001\u00b8\u0001\u00b8"+ + "\u0001\u00b8\u0005\u00b8\u1537\b\u00b8\n\u00b8\f\u00b8\u153a\t\u00b8\u0001"+ + "\u00b9\u0001\u00b9\u0003\u00b9\u153e\b\u00b9\u0001\u00ba\u0001\u00ba\u0001"+ + "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0004"+ + "\u00ba\u1548\b\u00ba\u000b\u00ba\f\u00ba\u1549\u0001\u00ba\u0001\u00ba"+ + "\u0001\u00ba\u0001\u00ba\u0003\u00ba\u1550\b\u00ba\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ + "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ + "\u0003\u00bb\u1566\b\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u156a\b"+ + "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ + "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ + "\u00bb\u0005\u00bb\u1578\b\u00bb\n\u00bb\f\u00bb\u157b\t\u00bb\u0001\u00bc"+ + "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0005\u00bc\u1581\b\u00bc\n\u00bc"+ + "\f\u00bc\u1584\t\u00bc\u0003\u00bc\u1586\b\u00bc\u0001\u00bc\u0001\u00bc"+ + "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003\u00bd\u158d\b\u00bd\u0001\u00be"+ + "\u0003\u00be\u1590\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0003\u00be\u1598\b\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0003\u00be\u159d\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0003\u00be\u15a2\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0003\u00be\u15aa\b\u00be\u0001\u00be\u0001\u00be"+ + "\u0001\u00be\u0001\u00be\u0001\u00be\u0005\u00be\u15b1\b\u00be\n\u00be"+ + "\f\u00be\u15b4\t\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ + "\u0003\u00be\u15ba\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0003\u00be"+ + "\u15bf\b\u00be\u0001\u00be\u0003\u00be\u15c2\b\u00be\u0001\u00bf\u0001"+ + "\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u15c8\b\u00bf\u0001\u00bf\u0001"+ + "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ + "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ + "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0005"+ + "\u00bf\u15dd\b\u00bf\n\u00bf\f\u00bf\u15e0\t\u00bf\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0004\u00c0\u15ec\b\u00c0\u000b\u00c0\f\u00c0"+ + "\u15ed\u0001\u00c0\u0001\u00c0\u0003\u00c0\u15f2\b\u00c0\u0001\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0004\u00c0\u15f9\b\u00c0\u000b"+ + "\u00c0\f\u00c0\u15fa\u0001\u00c0\u0001\u00c0\u0003\u00c0\u15ff\b\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0005\u00c0\u160e\b\u00c0\n\u00c0\f\u00c0\u1611\t\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0005\u00c0\u1617\b\u00c0\n"+ + "\u00c0\f\u00c0\u161a\t\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0005\u00c0\u1621\b\u00c0\n\u00c0\f\u00c0\u1624\t\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1628\b\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ + "\u0003\u00c0\u1644\b\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1648\b"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1653\b\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003"+ + "\u00c0\u165b\b\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1660"+ + "\b\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u166c"+ + "\b\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ + "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1678"+ + "\b\u00c0\u0005\u00c0\u167a\b\u00c0\n\u00c0\f\u00c0\u167d\t\u00c0\u0001"+ + "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001"+ + "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0003\u00c1\u1689\b\u00c1\u0001"+ + "\u00c2\u0001\u00c2\u0001\u00c2\u0003\u00c2\u168e\b\u00c2\u0003\u00c2\u1690"+ + "\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0003\u00c3\u1695\b\u00c3"+ + "\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0005\u00c3\u169a\b\u00c3\n\u00c3"+ + "\f\u00c3\u169d\t\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+ + "\u0001\u00c3\u0005\u00c3\u16a4\b\u00c3\n\u00c3\f\u00c3\u16a7\t\u00c3\u0003"+ + "\u00c3\u16a9\b\u00c3\u0003\u00c3\u16ab\b\u00c3\u0001\u00c3\u0001\u00c3"+ + "\u0001\u00c3\u0003\u00c3\u16b0\b\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4"+ + "\u0003\u00c4\u16b5\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5"+ + "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ + "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ + "\u0001\u00c5\u0001\u00c5\u0003\u00c5\u16c9\b\u00c5\u0001\u00c6\u0001\u00c6"+ + "\u0003\u00c6\u16cd\b\u00c6\u0001\u00c6\u0003\u00c6\u16d0\b\u00c6\u0001"+ + "\u00c6\u0003\u00c6\u16d3\b\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001"+ + "\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001"+ + "\u00c7\u0001\u00c7\u0003\u00c7\u16e0\b\u00c7\u0001\u00c8\u0001\u00c8\u0001"+ + "\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001"+ + "\u00c9\u0003\u00c9\u16eb\b\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0005"+ + "\u00ca\u16f0\b\u00ca\n\u00ca\f\u00ca\u16f3\t\u00ca\u0001\u00cb\u0003\u00cb"+ + "\u16f6\b\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb\u16fb\b"+ + "\u00cb\u0001\u00cb\u0003\u00cb\u16fe\b\u00cb\u0001\u00cb\u0001\u00cb\u0003"+ + "\u00cb\u1702\b\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ + "\u00cc\u0001\u00cc\u0003\u00cc\u170a\b\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ + "\u00cc\u0003\u00cc\u170f\b\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc\u1713"+ + "\b\u00cc\n\u00cc\f\u00cc\u1716\t\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc"+ + "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u171e\b\u00cc\u0001\u00cc"+ + "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc\u1725\b\u00cc"+ + "\n\u00cc\f\u00cc\u1728\t\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ + "\u00cc\u0001\u00cc\u0005\u00cc\u172f\b\u00cc\n\u00cc\f\u00cc\u1732\t\u00cc"+ + "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u1737\b\u00cc\u0001\u00cd"+ + "\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ + "\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ + "\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0003\u00d2\u174a\b\u00d2"+ + "\u0001\u00d2\u0003\u00d2\u174d\b\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ + "\u0001\u00d3\u0001\u00d3\u0005\u00d3\u176c\b\u00d3\n\u00d3\f\u00d3\u176f"+ + "\t\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ + "\u00d3\u0001\u00d3\u0001\u00d3\u0005\u00d3\u1779\b\u00d3\n\u00d3\f\u00d3"+ + "\u177c\t\u00d3\u0001\u00d3\u0003\u00d3\u177f\b\u00d3\u0003\u00d3\u1781"+ + "\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ + "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ + "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ + "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ + "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ + "\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u17a3\b\u00d4\u0001\u00d5\u0001"+ + "\u00d5\u0001\u00d5\u0005\u00d5\u17a8\b\u00d5\n\u00d5\f\u00d5\u17ab\t\u00d5"+ + "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u17b1\b\u00d6"+ + "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0005\u00d7\u17b6\b\u00d7\n\u00d7"+ + "\f\u00d7\u17b9\t\u00d7\u0001\u00d8\u0003\u00d8\u17bc\b\u00d8\u0001\u00d8"+ + "\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0003\u00d8\u17c2\b\u00d8\u0001\u00d9"+ + "\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db"+ + "\u0001\u00db\u0003\u00db\u17cc\b\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+ + "\u0003\u00db\u17d1\b\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+ + "\u0003\u00dc\u17d7\b\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ + "\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ + "\u0003\u00dd\u17e3\b\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df"+ + "\u0001\u00df\u0004\u00df\u17ea\b\u00df\u000b\u00df\f\u00df\u17eb\u0001"+ + "\u00df\u0003\u00df\u17ef\b\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001"+ + "\u00e1\u0001\u00e1\u0003\u00e1\u17f6\b\u00e1\u0001\u00e2\u0001\u00e2\u0001"+ + "\u00e3\u0003\u00e3\u17fb\b\u00e3\u0001\u00e3\u0001\u00e3\u0003\u00e3\u17ff"+ + "\b\u00e3\u0001\u00e3\u0003\u00e3\u1802\b\u00e3\u0001\u00e4\u0001\u00e4"+ + "\u0001\u00e4\u0002\u0216\u021d\u0004\u00e6\u0176\u017e\u0180\u00e5\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\u00ae\u00b0\u00b2\u00b4"+ + "\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc"+ + "\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4"+ + "\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc"+ + "\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114"+ + "\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c"+ + "\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144"+ + "\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c"+ + "\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174"+ + "\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c"+ + "\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4"+ + "\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc"+ + "\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u0000=\u0001\u0000\u015a\u015b\u0002"+ + "\u0000\u00bf\u00bf\u015b\u015b\u0002\u0000##\u00bc\u00bc\u0002\u0000 "+ + " \u0216\u0216\u0002\u0000\u00a9\u00a9\u01be\u01be\u0003\u0000\u0012\u0012"+ + "\u0092\u0092\u01d5\u01d5\u0002\u0000\u00bb\u00bb\u00d9\u00d9\u0002\u0000"+ + "\u014c\u014c\u017f\u017f\u0003\u0000..\u00e7\u00e7\u012b\u012b\u0002\u0000"+ + "\u0012\u0012\u01b8\u01b8\u0003\u0000nn\u0179\u0179\u01c7\u01c7\u0002\u0000"+ + "oo\u0191\u0191\u0002\u0000\u009e\u009e\u01ec\u01ec\u0002\u0000\u00a2\u00a2"+ + "\u0135\u0135\u0001\u0000\u01e5\u01e6\u0002\u0000pp\u0192\u0192\u0002\u0000"+ + "PP\u00af\u00af\u0002\u0000\u00db\u00dc\u00f4\u00f5\u0003\u0000\u001a\u001a"+ + "~~\u011c\u011c\u0001\u0000\u008e\u008f\u0002\u0000\u00d9\u00d9\u01c6\u01c6"+ + "\u0004\u000066\u00cc\u00cc\u0106\u0106\u018d\u018d\u0003\u0000ww\u00d3"+ + "\u00d3\u0193\u0193\u0001\u0000\u000b\f\u0002\u0000\u0136\u0136\u01f4\u01f4"+ + "\u0002\u0000\u0211\u0211\u0216\u0216\u0001\u0000\u0141\u0142\u0002\u0000"+ + "\u0104\u0104\u0168\u0168\u0003\u0000\u00c3\u00c3\u0106\u0106\u0197\u0197"+ + "\u0002\u0000}}\u00d8\u00d8\u0002\u0000 UU\u0005\u0000\u0091\u0091\u00c6"+ + "\u00c6\u0150\u0150\u01c9\u01c9\u01e7\u01e7\u0002\u0000\u0080\u0081\u00a6"+ + "\u00a6\n\u0000\u0014\u0014\u0017\u0017\u0088\u0088\u010b\u010b\u011b\u011b"+ + "\u0138\u0138\u0140\u0140\u014d\u014d\u0183\u0183\u019c\u019c\u0003\u0000"+ + "\u00a1\u00a1\u0120\u0120\u01d4\u01d4\u0002\u0000\u0014\u0014\u0085\u0085"+ + "\u0002\u0000\u012d\u012d\u01dd\u01dd\u0002\u0000\u001d\u001d\u0080\u0080"+ + "\u0002\u0000\u00b2\u00b2\u00f9\u00f9\b\u000000\u00c2\u00c2\u00d0\u00d0"+ + "\u0119\u0119\u011f\u011f\u0161\u0161\u0176\u0177\u01b2\u01b2\u0001\u0000"+ + "\u00ec\u00ed\u0002\u0000\u0018\u0018\u0205\u0205\u0003\u0000\u0100\u0100"+ + "\u0171\u0171\u0185\u0185\u0001\u0000\u010f\u0115\u0002\u0000\u00ac\u00ac"+ + "\u01cc\u01cc\u0002\u0000\u01fe\u01ff\u0203\u0203\u0002\u0000\u008a\u008a"+ + "\u0200\u0202\u0001\u0000\u01fe\u01ff\u0002\u0000\u00c3\u00c3\u0197\u0197"+ + "\u0002\u0000qq\u01c4\u01c4\u0002\u0000\u019e\u019e\u01d8\u01d8\u0001\u0000"+ + "\u00e1\u00e2\u0002\u0000\u0168\u0168\u018c\u018c\u0002\u0000\u00b5\u00b5"+ + "\u0157\u0157\u0004\u0000qqttvv\u01c4\u01c4\u0001\u0000\u01f7\u01fd\b\u0000"+ + "ww\u00d3\u00d3\u0121\u0121\u0123\u0123\u0166\u0166\u0193\u0193\u01ed\u01ed"+ + "\u01f6\u01f6\u0002\u0000\u0200\u0200\u0216\u0216\u0001\u0000\u0116\u0117"+ + "\u0001\u0000\u0217\u0218c\u0000\t\n\r\r\u0010\u0013\u0017\u0017\u001b"+ + "\u001b\u001e\u001f!\"$\'**-:<>BGIJLNP\\^bdeinqz}}\u007f\u007f\u0082\u0083"+ + "\u0086\u0087\u008b\u008c\u0090\u0090\u0093\u0094\u0096\u009c\u009e\u00a0"+ + "\u00a2\u00a2\u00a5\u00a5\u00a9\u00a9\u00ab\u00ab\u00ad\u00b2\u00b9\u00ba"+ + "\u00bd\u00bd\u00bf\u00bf\u00c1\u00c3\u00c6\u00c6\u00c8\u00ca\u00cc\u00ce"+ + "\u00d0\u00d5\u00d7\u00d8\u00da\u00da\u00dc\u00dc\u00e7\u00e9\u00eb\u00f0"+ + "\u00f2\u00f3\u00f7\u00f7\u00f9\u00f9\u00fb\u00fc\u00fe\u00ff\u0102\u0103"+ + "\u0106\u010b\u010d\u010e\u0110\u0115\u0118\u0119\u011b\u011f\u0121\u0126"+ + "\u0128\u012c\u012e\u012e\u0131\u0131\u0133\u0134\u0136\u0138\u013f\u0140"+ + "\u0142\u014e\u0150\u0150\u0152\u0156\u015a\u015a\u015c\u0167\u016c\u016f"+ + "\u0175\u0178\u017a\u0181\u0183\u0183\u0185\u0185\u0188\u018a\u018d\u0191"+ + "\u0193\u0193\u0196\u0198\u019b\u019c\u019f\u019f\u01a1\u01a4\u01a6\u01b2"+ + "\u01b8\u01b8\u01bc\u01be\u01c0\u01c1\u01c3\u01c4\u01c7\u01c7\u01c9\u01ca"+ + "\u01cd\u01ce\u01d0\u01d0\u01d2\u01d2\u01d6\u01d7\u01d9\u01d9\u01dc\u01dc"+ + "\u01df\u01df\u01e1\u01ed\u01f2\u01f2\u01f6\u01f6\u020c\u020e\u1c5c\u0000"+ + "\u01cd\u0001\u0000\u0000\u0000\u0002\u01e9\u0001\u0000\u0000\u0000\u0004"+ + "\u0241\u0001\u0000\u0000\u0000\u0006\u025f\u0001\u0000\u0000\u0000\b\u0271"+ + "\u0001\u0000\u0000\u0000\n\u02fe\u0001\u0000\u0000\u0000\f\u0338\u0001"+ + "\u0000\u0000\u0000\u000e\u034d\u0001\u0000\u0000\u0000\u0010\u03c2\u0001"+ + "\u0000\u0000\u0000\u0012\u0507\u0001\u0000\u0000\u0000\u0014\u05a5\u0001"+ + "\u0000\u0000\u0000\u0016\u0623\u0001\u0000\u0000\u0000\u0018\u077d\u0001"+ + "\u0000\u0000\u0000\u001a\u0781\u0001\u0000\u0000\u0000\u001c\u0783\u0001"+ + "\u0000\u0000\u0000\u001e\u07ed\u0001\u0000\u0000\u0000 \u07ef\u0001\u0000"+ + "\u0000\u0000\"\u07f5\u0001\u0000\u0000\u0000$\u0969\u0001\u0000\u0000"+ + "\u0000&\u096b\u0001\u0000\u0000\u0000(\u09ef\u0001\u0000\u0000\u0000*"+ + "\u09fb\u0001\u0000\u0000\u0000,\u09fd\u0001\u0000\u0000\u0000.\u0a01\u0001"+ + "\u0000\u0000\u00000\u0a05\u0001\u0000\u0000\u00002\u0a08\u0001\u0000\u0000"+ + "\u00004\u0a0c\u0001\u0000\u0000\u00006\u0a25\u0001\u0000\u0000\u00008"+ + "\u0a27\u0001\u0000\u0000\u0000:\u0a2f\u0001\u0000\u0000\u0000<\u0a48\u0001"+ + "\u0000\u0000\u0000>\u0a54\u0001\u0000\u0000\u0000@\u0a56\u0001\u0000\u0000"+ + "\u0000B\u0a6a\u0001\u0000\u0000\u0000D\u0a85\u0001\u0000\u0000\u0000F"+ + "\u0ac6\u0001\u0000\u0000\u0000H\u0b30\u0001\u0000\u0000\u0000J\u0b53\u0001"+ + "\u0000\u0000\u0000L\u0b91\u0001\u0000\u0000\u0000N\u0b93\u0001\u0000\u0000"+ + "\u0000P\u0bab\u0001\u0000\u0000\u0000R\u0bd7\u0001\u0000\u0000\u0000T"+ + "\u0c2d\u0001\u0000\u0000\u0000V\u0c34\u0001\u0000\u0000\u0000X\u0c36\u0001"+ + "\u0000\u0000\u0000Z\u0c78\u0001\u0000\u0000\u0000\\\u0cdc\u0001\u0000"+ + "\u0000\u0000^\u0cde\u0001\u0000\u0000\u0000`\u0ce2\u0001\u0000\u0000\u0000"+ + "b\u0dcb\u0001\u0000\u0000\u0000d\u0dd0\u0001\u0000\u0000\u0000f\u0dd2"+ + "\u0001\u0000\u0000\u0000h\u0dd5\u0001\u0000\u0000\u0000j\u0dff\u0001\u0000"+ + "\u0000\u0000l\u0e45\u0001\u0000\u0000\u0000n\u0ea1\u0001\u0000\u0000\u0000"+ + "p\u0eb5\u0001\u0000\u0000\u0000r\u0f1e\u0001\u0000\u0000\u0000t\u0f20"+ + "\u0001\u0000\u0000\u0000v\u0f2e\u0001\u0000\u0000\u0000x\u0f30\u0001\u0000"+ + "\u0000\u0000z\u0f38\u0001\u0000\u0000\u0000|\u0f3e\u0001\u0000\u0000\u0000"+ + "~\u0f4d\u0001\u0000\u0000\u0000\u0080\u0f77\u0001\u0000\u0000\u0000\u0082"+ + "\u0f79\u0001\u0000\u0000\u0000\u0084\u0faf\u0001\u0000\u0000\u0000\u0086"+ + "\u0fb1\u0001\u0000\u0000\u0000\u0088\u0fe5\u0001\u0000\u0000\u0000\u008a"+ + "\u0ffa\u0001\u0000\u0000\u0000\u008c\u0ffc\u0001\u0000\u0000\u0000\u008e"+ + "\u0fff\u0001\u0000\u0000\u0000\u0090\u1017\u0001\u0000\u0000\u0000\u0092"+ + "\u1022\u0001\u0000\u0000\u0000\u0094\u1024\u0001\u0000\u0000\u0000\u0096"+ + "\u1050\u0001\u0000\u0000\u0000\u0098\u1052\u0001\u0000\u0000\u0000\u009a"+ + "\u1064\u0001\u0000\u0000\u0000\u009c\u1079\u0001\u0000\u0000\u0000\u009e"+ + "\u1087\u0001\u0000\u0000\u0000\u00a0\u1097\u0001\u0000\u0000\u0000\u00a2"+ + "\u109a\u0001\u0000\u0000\u0000\u00a4\u10a8\u0001\u0000\u0000\u0000\u00a6"+ + "\u10b5\u0001\u0000\u0000\u0000\u00a8\u111a\u0001\u0000\u0000\u0000\u00aa"+ + "\u111c\u0001\u0000\u0000\u0000\u00ac\u111e\u0001\u0000\u0000\u0000\u00ae"+ + "\u1128\u0001\u0000\u0000\u0000\u00b0\u112a\u0001\u0000\u0000\u0000\u00b2"+ + "\u1131\u0001\u0000\u0000\u0000\u00b4\u1135\u0001\u0000\u0000\u0000\u00b6"+ + "\u1139\u0001\u0000\u0000\u0000\u00b8\u113e\u0001\u0000\u0000\u0000\u00ba"+ + "\u1140\u0001\u0000\u0000\u0000\u00bc\u114a\u0001\u0000\u0000\u0000\u00be"+ + "\u114c\u0001\u0000\u0000\u0000\u00c0\u1157\u0001\u0000\u0000\u0000\u00c2"+ + "\u1160\u0001\u0000\u0000\u0000\u00c4\u116a\u0001\u0000\u0000\u0000\u00c6"+ + "\u116c\u0001\u0000\u0000\u0000\u00c8\u116e\u0001\u0000\u0000\u0000\u00ca"+ + "\u1176\u0001\u0000\u0000\u0000\u00cc\u1178\u0001\u0000\u0000\u0000\u00ce"+ + "\u117a\u0001\u0000\u0000\u0000\u00d0\u117e\u0001\u0000\u0000\u0000\u00d2"+ + "\u1182\u0001\u0000\u0000\u0000\u00d4\u1186\u0001\u0000\u0000\u0000\u00d6"+ + "\u118c\u0001\u0000\u0000\u0000\u00d8\u1198\u0001\u0000\u0000\u0000\u00da"+ + "\u11b8\u0001\u0000\u0000\u0000\u00dc\u11ba\u0001\u0000\u0000\u0000\u00de"+ + "\u11c3\u0001\u0000\u0000\u0000\u00e0\u11ee\u0001\u0000\u0000\u0000\u00e2"+ + "\u11f0\u0001\u0000\u0000\u0000\u00e4\u11fc\u0001\u0000\u0000\u0000\u00e6"+ + "\u1201\u0001\u0000\u0000\u0000\u00e8\u1215\u0001\u0000\u0000\u0000\u00ea"+ + "\u121d\u0001\u0000\u0000\u0000\u00ec\u121f\u0001\u0000\u0000\u0000\u00ee"+ + "\u1235\u0001\u0000\u0000\u0000\u00f0\u123e\u0001\u0000\u0000\u0000\u00f2"+ + "\u1247\u0001\u0000\u0000\u0000\u00f4\u1252\u0001\u0000\u0000\u0000\u00f6"+ + "\u1258\u0001\u0000\u0000\u0000\u00f8\u125a\u0001\u0000\u0000\u0000\u00fa"+ + "\u125d\u0001\u0000\u0000\u0000\u00fc\u1261\u0001\u0000\u0000\u0000\u00fe"+ + "\u1272\u0001\u0000\u0000\u0000\u0100\u1275\u0001\u0000\u0000\u0000\u0102"+ + "\u127a\u0001\u0000\u0000\u0000\u0104\u1282\u0001\u0000\u0000\u0000\u0106"+ + "\u1289\u0001\u0000\u0000\u0000\u0108\u129a\u0001\u0000\u0000\u0000\u010a"+ + "\u12b2\u0001\u0000\u0000\u0000\u010c\u12b4\u0001\u0000\u0000\u0000\u010e"+ + "\u12e7\u0001\u0000\u0000\u0000\u0110\u12e9\u0001\u0000\u0000\u0000\u0112"+ + "\u12f6\u0001\u0000\u0000\u0000\u0114\u12f9\u0001\u0000\u0000\u0000\u0116"+ + "\u12fc\u0001\u0000\u0000\u0000\u0118\u1326\u0001\u0000\u0000\u0000\u011a"+ + "\u1331\u0001\u0000\u0000\u0000\u011c\u1333\u0001\u0000\u0000\u0000\u011e"+ + "\u1339\u0001\u0000\u0000\u0000\u0120\u1341\u0001\u0000\u0000\u0000\u0122"+ + "\u135b\u0001\u0000\u0000\u0000\u0124\u1360\u0001\u0000\u0000\u0000\u0126"+ + "\u136a\u0001\u0000\u0000\u0000\u0128\u137c\u0001\u0000\u0000\u0000\u012a"+ + "\u137e\u0001\u0000\u0000\u0000\u012c\u13a0\u0001\u0000\u0000\u0000\u012e"+ + "\u13a6\u0001\u0000\u0000\u0000\u0130\u13a8\u0001\u0000\u0000\u0000\u0132"+ + "\u13ac\u0001\u0000\u0000\u0000\u0134\u13b4\u0001\u0000\u0000\u0000\u0136"+ + "\u13ef\u0001\u0000\u0000\u0000\u0138\u13f1\u0001\u0000\u0000\u0000\u013a"+ + "\u13f4\u0001\u0000\u0000\u0000\u013c\u13f9\u0001\u0000\u0000\u0000\u013e"+ + "\u1401\u0001\u0000\u0000\u0000\u0140\u1407\u0001\u0000\u0000\u0000\u0142"+ + "\u140b\u0001\u0000\u0000\u0000\u0144\u1414\u0001\u0000\u0000\u0000\u0146"+ + "\u1416\u0001\u0000\u0000\u0000\u0148\u141e\u0001\u0000\u0000\u0000\u014a"+ + "\u1426\u0001\u0000\u0000\u0000\u014c\u142b\u0001\u0000\u0000\u0000\u014e"+ + "\u1433\u0001\u0000\u0000\u0000\u0150\u147e\u0001\u0000\u0000\u0000\u0152"+ + "\u1486\u0001\u0000\u0000\u0000\u0154\u149d\u0001\u0000\u0000\u0000\u0156"+ + "\u14a9\u0001\u0000\u0000\u0000\u0158\u14b1\u0001\u0000\u0000\u0000\u015a"+ + "\u14bf\u0001\u0000\u0000\u0000\u015c\u14cd\u0001\u0000\u0000\u0000\u015e"+ + "\u14d6\u0001\u0000\u0000\u0000\u0160\u14ef\u0001\u0000\u0000\u0000\u0162"+ + "\u1501\u0001\u0000\u0000\u0000\u0164\u1503\u0001\u0000\u0000\u0000\u0166"+ + "\u150b\u0001\u0000\u0000\u0000\u0168\u1515\u0001\u0000\u0000\u0000\u016a"+ + "\u1517\u0001\u0000\u0000\u0000\u016c\u1523\u0001\u0000\u0000\u0000\u016e"+ + "\u152c\u0001\u0000\u0000\u0000\u0170\u1533\u0001\u0000\u0000\u0000\u0172"+ + "\u153d\u0001\u0000\u0000\u0000\u0174\u154f\u0001\u0000\u0000\u0000\u0176"+ + "\u1569\u0001\u0000\u0000\u0000\u0178\u157c\u0001\u0000\u0000\u0000\u017a"+ + "\u158c\u0001\u0000\u0000\u0000\u017c\u15c1\u0001\u0000\u0000\u0000\u017e"+ + "\u15c7\u0001\u0000\u0000\u0000\u0180\u165f\u0001\u0000\u0000\u0000\u0182"+ + "\u1688\u0001\u0000\u0000\u0000\u0184\u168f\u0001\u0000\u0000\u0000\u0186"+ + "\u1691\u0001\u0000\u0000\u0000\u0188\u16b4\u0001\u0000\u0000\u0000\u018a"+ + "\u16c8\u0001\u0000\u0000\u0000\u018c\u16ca\u0001\u0000\u0000\u0000\u018e"+ + "\u16df\u0001\u0000\u0000\u0000\u0190\u16e1\u0001\u0000\u0000\u0000\u0192"+ + "\u16ea\u0001\u0000\u0000\u0000\u0194\u16ec\u0001\u0000\u0000\u0000\u0196"+ + "\u1701\u0001\u0000\u0000\u0000\u0198\u1736\u0001\u0000\u0000\u0000\u019a"+ + "\u1738\u0001\u0000\u0000\u0000\u019c\u173a\u0001\u0000\u0000\u0000\u019e"+ + "\u173c\u0001\u0000\u0000\u0000\u01a0\u1741\u0001\u0000\u0000\u0000\u01a2"+ + "\u1745\u0001\u0000\u0000\u0000\u01a4\u1747\u0001\u0000\u0000\u0000\u01a6"+ + "\u1780\u0001\u0000\u0000\u0000\u01a8\u17a2\u0001\u0000\u0000\u0000\u01aa"+ + "\u17a4\u0001\u0000\u0000\u0000\u01ac\u17ac\u0001\u0000\u0000\u0000\u01ae"+ + "\u17b2\u0001\u0000\u0000\u0000\u01b0\u17bb\u0001\u0000\u0000\u0000\u01b2"+ + "\u17c3\u0001\u0000\u0000\u0000\u01b4\u17c5\u0001\u0000\u0000\u0000\u01b6"+ + "\u17c8\u0001\u0000\u0000\u0000\u01b8\u17d6\u0001\u0000\u0000\u0000\u01ba"+ + "\u17e2\u0001\u0000\u0000\u0000\u01bc\u17e4\u0001\u0000\u0000\u0000\u01be"+ + "\u17ee\u0001\u0000\u0000\u0000\u01c0\u17f0\u0001\u0000\u0000\u0000\u01c2"+ + "\u17f5\u0001\u0000\u0000\u0000\u01c4\u17f7\u0001\u0000\u0000\u0000\u01c6"+ + "\u1801\u0001\u0000\u0000\u0000\u01c8\u1803\u0001\u0000\u0000\u0000\u01ca"+ + "\u01cc\u0005\u0001\u0000\u0000\u01cb\u01ca\u0001\u0000\u0000\u0000\u01cc"+ + "\u01cf\u0001\u0000\u0000\u0000\u01cd\u01cb\u0001\u0000\u0000\u0000\u01cd"+ + "\u01ce\u0001\u0000\u0000\u0000\u01ce\u01d1\u0001\u0000\u0000\u0000\u01cf"+ + "\u01cd\u0001\u0000\u0000\u0000\u01d0\u01d2\u0003\u0004\u0002\u0000\u01d1"+ + "\u01d0\u0001\u0000\u0000\u0000\u01d1\u01d2\u0001\u0000\u0000\u0000\u01d2"+ + "\u01db\u0001\u0000\u0000\u0000\u01d3\u01d5\u0005\u0001\u0000\u0000\u01d4"+ + "\u01d3\u0001\u0000\u0000\u0000\u01d5\u01d6\u0001\u0000\u0000\u0000\u01d6"+ + "\u01d4\u0001\u0000\u0000\u0000\u01d6\u01d7\u0001\u0000\u0000\u0000\u01d7"+ + "\u01d8\u0001\u0000\u0000\u0000\u01d8\u01da\u0003\u0004\u0002\u0000\u01d9"+ + "\u01d4\u0001\u0000\u0000\u0000\u01da\u01dd\u0001\u0000\u0000\u0000\u01db"+ + "\u01d9\u0001\u0000\u0000\u0000\u01db\u01dc\u0001\u0000\u0000\u0000\u01dc"+ + "\u01e1\u0001\u0000\u0000\u0000\u01dd\u01db\u0001\u0000\u0000\u0000\u01de"+ + "\u01e0\u0005\u0001\u0000\u0000\u01df\u01de\u0001\u0000\u0000\u0000\u01e0"+ + "\u01e3\u0001\u0000\u0000\u0000\u01e1\u01df\u0001\u0000\u0000\u0000\u01e1"+ + "\u01e2\u0001\u0000\u0000\u0000\u01e2\u01e4\u0001\u0000\u0000\u0000\u01e3"+ + "\u01e1\u0001\u0000\u0000\u0000\u01e4\u01e5\u0005\u0000\u0000\u0001\u01e5"+ + "\u0001\u0001\u0000\u0000\u0000\u01e6\u01e8\u0005\u0001\u0000\u0000\u01e7"+ + "\u01e6\u0001\u0000\u0000\u0000\u01e8\u01eb\u0001\u0000\u0000\u0000\u01e9"+ + "\u01e7\u0001\u0000\u0000\u0000\u01e9\u01ea\u0001\u0000\u0000\u0000\u01ea"+ + "\u01ed\u0001\u0000\u0000\u0000\u01eb\u01e9\u0001\u0000\u0000\u0000\u01ec"+ + "\u01ee\u0003\u0004\u0002\u0000\u01ed\u01ec\u0001\u0000\u0000\u0000\u01ed"+ + "\u01ee\u0001\u0000\u0000\u0000\u01ee\u01f2\u0001\u0000\u0000\u0000\u01ef"+ + "\u01f1\u0005\u0001\u0000\u0000\u01f0\u01ef\u0001\u0000\u0000\u0000\u01f1"+ + "\u01f4\u0001\u0000\u0000\u0000\u01f2\u01f0\u0001\u0000\u0000\u0000\u01f2"+ + "\u01f3\u0001\u0000\u0000\u0000\u01f3\u01f5\u0001\u0000\u0000\u0000\u01f4"+ + "\u01f2\u0001\u0000\u0000\u0000\u01f5\u01f6\u0005\u0000\u0000\u0001\u01f6"+ + "\u0003\u0001\u0000\u0000\u0000\u01f7\u0242\u0003\u0006\u0003\u0000\u01f8"+ + "\u01f9\u0005>\u0000\u0000\u01f9\u01fa\u0003\u0146\u00a3\u0000\u01fa\u0203"+ + "\u0005\u0002\u0000\u0000\u01fb\u0200\u0003\u0172\u00b9\u0000\u01fc\u01fd"+ + "\u0005\u0004\u0000\u0000\u01fd\u01ff\u0003\u0172\u00b9\u0000\u01fe\u01fc"+ + "\u0001\u0000\u0000\u0000\u01ff\u0202\u0001\u0000\u0000\u0000\u0200\u01fe"+ + "\u0001\u0000\u0000\u0000\u0200\u0201\u0001\u0000\u0000\u0000\u0201\u0204"+ + "\u0001\u0000\u0000\u0000\u0202\u0200\u0001\u0000\u0000\u0000\u0203\u01fb"+ + "\u0001\u0000\u0000\u0000\u0203\u0204\u0001\u0000\u0000\u0000\u0204\u0205"+ + "\u0001\u0000\u0000\u0000\u0205\u0206\u0005\u0003\u0000\u0000\u0206\u0242"+ + "\u0001\u0000\u0000\u0000\u0207\u020f\u0005\u0015\u0000\u0000\u0208\u020b"+ + "\u0005c\u0000\u0000\u0209\u020a\u0005\u0139\u0000\u0000\u020a\u020c\u0005"+ + "\u0176\u0000\u0000\u020b\u0209\u0001\u0000\u0000\u0000\u020b\u020c\u0001"+ + "\u0000\u0000\u0000\u020c\u020f\u0001\u0000\u0000\u0000\u020d\u020f\u0005"+ + "\u0176\u0000\u0000\u020e\u0207\u0001\u0000\u0000\u0000\u020e\u0208\u0001"+ + "\u0000\u0000\u0000\u020e\u020d\u0001\u0000\u0000\u0000\u020f\u0210\u0001"+ + "\u0000\u0000\u0000\u0210\u0211\u0007\u0000\u0000\u0000\u0211\u0212\u0003"+ + "\u0146\u00a3\u0000\u0212\u0216\u0005\u0002\u0000\u0000\u0213\u0215\t\u0000"+ + "\u0000\u0000\u0214\u0213\u0001\u0000\u0000\u0000\u0215\u0218\u0001\u0000"+ + "\u0000\u0000\u0216\u0217\u0001\u0000\u0000\u0000\u0216\u0214\u0001\u0000"+ + "\u0000\u0000\u0217\u0219\u0001\u0000\u0000\u0000\u0218\u0216\u0001\u0000"+ + "\u0000\u0000\u0219\u021d\u0005\u0003\u0000\u0000\u021a\u021c\t\u0000\u0000"+ + "\u0000\u021b\u021a\u0001\u0000\u0000\u0000\u021c\u021f\u0001\u0000\u0000"+ + "\u0000\u021d\u021e\u0001\u0000\u0000\u0000\u021d\u021b\u0001\u0000\u0000"+ + "\u0000\u021e\u0242\u0001\u0000\u0000\u0000\u021f\u021d\u0001\u0000\u0000"+ + "\u0000\u0220\u0221\u0005\u008e\u0000\u0000\u0221\u0224\u0007\u0000\u0000"+ + "\u0000\u0222\u0223\u0005\u00d6\u0000\u0000\u0223\u0225\u0005\u00a4\u0000"+ + "\u0000\u0224\u0222\u0001\u0000\u0000\u0000\u0224\u0225\u0001\u0000\u0000"+ + "\u0000\u0225\u0226\u0001\u0000\u0000\u0000\u0226\u0242\u0003\u0146\u00a3"+ + "\u0000\u0227\u0228\u0005\u019d\u0000\u0000\u0228\u0229\u0007\u0001\u0000"+ + "\u0000\u0229\u022d\u0005\u01ab\u0000\u0000\u022a\u022b\u0005\u0100\u0000"+ + "\u0000\u022b\u022e\u0003\u017e\u00bf\u0000\u022c\u022e\u0003\u00f8|\u0000"+ + "\u022d\u022a\u0001\u0000\u0000\u0000\u022d\u022c\u0001\u0000\u0000\u0000"+ + "\u022d\u022e\u0001\u0000\u0000\u0000\u022e\u0242\u0001\u0000\u0000\u0000"+ + "\u022f\u0230\u0005\u019d\u0000\u0000\u0230\u0231\u0005c\u0000\u0000\u0231"+ + "\u0232\u0005\u015b\u0000\u0000\u0232\u0242\u0003\u0146\u00a3\u0000\u0233"+ + "\u0235\u0005\u000f\u0000\u0000\u0234\u0233\u0001\u0000\u0000\u0000\u0234"+ + "\u0235\u0001\u0000\u0000\u0000\u0235\u0236\u0001\u0000\u0000\u0000\u0236"+ + "\u0237\u0005\u019d\u0000\u0000\u0237\u0238\u0007\u0002\u0000\u0000\u0238"+ + "\u023b\u0005Y\u0000\u0000\u0239\u023a\u0005\u0100\u0000\u0000\u023a\u023c"+ + "\u0003\u017e\u00bf\u0000\u023b\u0239\u0001\u0000\u0000\u0000\u023b\u023c"+ + "\u0001\u0000\u0000\u0000\u023c\u023f\u0001\u0000\u0000\u0000\u023d\u023e"+ + "\u0005\u00bb\u0000\u0000\u023e\u0240\u0005\u0216\u0000\u0000\u023f\u023d"+ + "\u0001\u0000\u0000\u0000\u023f\u0240\u0001\u0000\u0000\u0000\u0240\u0242"+ + "\u0001\u0000\u0000\u0000\u0241\u01f7\u0001\u0000\u0000\u0000\u0241\u01f8"+ + "\u0001\u0000\u0000\u0000\u0241\u020e\u0001\u0000\u0000\u0000\u0241\u0220"+ + "\u0001\u0000\u0000\u0000\u0241\u0227\u0001\u0000\u0000\u0000\u0241\u022f"+ + "\u0001\u0000\u0000\u0000\u0241\u0234\u0001\u0000\u0000\u0000\u0242\u0005"+ + "\u0001\u0000\u0000\u0000\u0243\u0245\u0003\u00c2a\u0000\u0244\u0243\u0001"+ + "\u0000\u0000\u0000\u0244\u0245\u0001\u0000\u0000\u0000\u0245\u0246\u0001"+ + "\u0000\u0000\u0000\u0246\u0248\u0003\u00e4r\u0000\u0247\u0249\u0003\u00e2"+ + "q\u0000\u0248\u0247\u0001\u0000\u0000\u0000\u0248\u0249\u0001\u0000\u0000"+ + "\u0000\u0249\u0260\u0001\u0000\u0000\u0000\u024a\u0260\u0003\u0010\b\u0000"+ + "\u024b\u0260\u0003\u0012\t\u0000\u024c\u0260\u0003\u0014\n\u0000\u024d"+ + "\u0260\u0003\n\u0005\u0000\u024e\u0260\u0003\f\u0006\u0000\u024f\u0260"+ + "\u0003\u000e\u0007\u0000\u0250\u0260\u0003>\u001f\u0000\u0251\u0260\u0003"+ + "\u009cN\u0000\u0252\u0260\u0003\u0016\u000b\u0000\u0253\u0260\u0003\u0084"+ + "B\u0000\u0254\u0260\u0003\u0090H\u0000\u0255\u0260\u0003<\u001e\u0000"+ + "\u0256\u0260\u0003\u0018\f\u0000\u0257\u0260\u0003\u001a\r\u0000\u0258"+ + "\u0260\u0003D\"\u0000\u0259\u0260\u0003J%\u0000\u025a\u0260\u0003H$\u0000"+ + "\u025b\u0260\u0003\u0092I\u0000\u025c\u0260\u0003\u001c\u000e\u0000\u025d"+ + "\u0260\u0003l6\u0000\u025e\u0260\u0003\b\u0004\u0000\u025f\u0244\u0001"+ + "\u0000\u0000\u0000\u025f\u024a\u0001\u0000\u0000\u0000\u025f\u024b\u0001"+ + "\u0000\u0000\u0000\u025f\u024c\u0001\u0000\u0000\u0000\u025f\u024d\u0001"+ + "\u0000\u0000\u0000\u025f\u024e\u0001\u0000\u0000\u0000\u025f\u024f\u0001"+ + "\u0000\u0000\u0000\u025f\u0250\u0001\u0000\u0000\u0000\u025f\u0251\u0001"+ + "\u0000\u0000\u0000\u025f\u0252\u0001\u0000\u0000\u0000\u025f\u0253\u0001"+ + "\u0000\u0000\u0000\u025f\u0254\u0001\u0000\u0000\u0000\u025f\u0255\u0001"+ + "\u0000\u0000\u0000\u025f\u0256\u0001\u0000\u0000\u0000\u025f\u0257\u0001"+ + "\u0000\u0000\u0000\u025f\u0258\u0001\u0000\u0000\u0000\u025f\u0259\u0001"+ + "\u0000\u0000\u0000\u025f\u025a\u0001\u0000\u0000\u0000\u025f\u025b\u0001"+ + "\u0000\u0000\u0000\u025f\u025c\u0001\u0000\u0000\u0000\u025f\u025d\u0001"+ + "\u0000\u0000\u0000\u025f\u025e\u0001\u0000\u0000\u0000\u0260\u0007\u0001"+ + "\u0000\u0000\u0000\u0261\u0272\u0003\u0094J\u0000\u0262\u0272\u0003\u0096"+ + "K\u0000\u0263\u0272\u0003\u009aM\u0000\u0264\u0272\u0003r9\u0000\u0265"+ + "\u0272\u0003j5\u0000\u0266\u0272\u0003n7\u0000\u0267\u0272\u0003Z-\u0000"+ + "\u0268\u0272\u0003T*\u0000\u0269\u0272\u0003L&\u0000\u026a\u0272\u0003"+ + "R)\u0000\u026b\u0272\u0003F#\u0000\u026c\u0272\u0003B!\u0000\u026d\u0272"+ + "\u0003@ \u0000\u026e\u0272\u0003(\u0014\u0000\u026f\u0272\u0003$\u0012"+ + "\u0000\u0270\u0272\u0003\u001e\u000f\u0000\u0271\u0261\u0001\u0000\u0000"+ + "\u0000\u0271\u0262\u0001\u0000\u0000\u0000\u0271\u0263\u0001\u0000\u0000"+ + "\u0000\u0271\u0264\u0001\u0000\u0000\u0000\u0271\u0265\u0001\u0000\u0000"+ + "\u0000\u0271\u0266\u0001\u0000\u0000\u0000\u0271\u0267\u0001\u0000\u0000"+ + "\u0000\u0271\u0268\u0001\u0000\u0000\u0000\u0271\u0269\u0001\u0000\u0000"+ + "\u0000\u0271\u026a\u0001\u0000\u0000\u0000\u0271\u026b\u0001\u0000\u0000"+ + "\u0000\u0271\u026c\u0001\u0000\u0000\u0000\u0271\u026d\u0001\u0000\u0000"+ + "\u0000\u0271\u026e\u0001\u0000\u0000\u0000\u0271\u026f\u0001\u0000\u0000"+ + "\u0000\u0271\u0270\u0001\u0000\u0000\u0000\u0272\t\u0001\u0000\u0000\u0000"+ + "\u0273\u0274\u0005c\u0000\u0000\u0274\u0275\u0005\u0118\u0000\u0000\u0275"+ + "\u0279\u0005\u01e9\u0000\u0000\u0276\u0277\u0005\u00d6\u0000\u0000\u0277"+ + "\u0278\u0005\u012f\u0000\u0000\u0278\u027a\u0005\u00a4\u0000\u0000\u0279"+ + "\u0276\u0001\u0000\u0000\u0000\u0279\u027a\u0001\u0000\u0000\u0000\u027a"+ + "\u027b\u0001\u0000\u0000\u0000\u027b\u0280\u0003\u0146\u00a3\u0000\u027c"+ + "\u027d\u0005\u0002\u0000\u0000\u027d\u027e\u0003\u0148\u00a4\u0000\u027e"+ + "\u027f\u0005\u0003\u0000\u0000\u027f\u0281\u0001\u0000\u0000\u0000\u0280"+ + "\u027c\u0001\u0000\u0000\u0000\u0280\u0281\u0001\u0000\u0000\u0000\u0281"+ + "\u0283\u0001\u0000\u0000\u0000\u0282\u0284\u0003\u00acV\u0000\u0283\u0282"+ + "\u0001\u0000\u0000\u0000\u0283\u0284\u0001\u0000\u0000\u0000\u0284\u028c"+ + "\u0001\u0000\u0000\u0000\u0285\u0287\u0005\u016f\u0000\u0000\u0286\u0288"+ + "\u0003\u00b2Y\u0000\u0287\u0286\u0001\u0000\u0000\u0000\u0287\u0288\u0001"+ + "\u0000\u0000\u0000\u0288\u028a\u0001\u0000\u0000\u0000\u0289\u028b\u0003"+ + "\u00aeW\u0000\u028a\u0289\u0001\u0000\u0000\u0000\u028a\u028b\u0001\u0000"+ + "\u0000\u0000\u028b\u028d\u0001\u0000\u0000\u0000\u028c\u0285\u0001\u0000"+ + "\u0000\u0000\u028c\u028d\u0001\u0000\u0000\u0000\u028d\u0293\u0001\u0000"+ + "\u0000\u0000\u028e\u0290\u0005\u0092\u0000\u0000\u028f\u028e\u0001\u0000"+ + "\u0000\u0000\u028f\u0290\u0001\u0000\u0000\u0000\u0290\u0291\u0001\u0000"+ + "\u0000\u0000\u0291\u0292\u0005\u00f4\u0000\u0000\u0292\u0294\u0003\u0130"+ + "\u0098\u0000\u0293\u028f\u0001\u0000\u0000\u0000\u0293\u0294\u0001\u0000"+ + "\u0000\u0000\u0294\u0297\u0001\u0000\u0000\u0000\u0295\u0296\u0005Q\u0000"+ + "\u0000\u0296\u0298\u0005\u0211\u0000\u0000\u0297\u0295\u0001\u0000\u0000"+ + "\u0000\u0297\u0298\u0001\u0000\u0000\u0000\u0298\u029f\u0001\u0000\u0000"+ + "\u0000\u0299\u029a\u0005\u0141\u0000\u0000\u029a\u029b\u0005;\u0000\u0000"+ + "\u029b\u029c\u0005\u0002\u0000\u0000\u029c\u029d\u0003\u00b4Z\u0000\u029d"+ + "\u029e\u0005\u0003\u0000\u0000\u029e\u02a0\u0001\u0000\u0000\u0000\u029f"+ + "\u0299\u0001\u0000\u0000\u0000\u029f\u02a0\u0001\u0000\u0000\u0000\u02a0"+ + "\u02ac\u0001\u0000\u0000\u0000\u02a1\u02a2\u0005\u0088\u0000\u0000\u02a2"+ + "\u02a6\u0005;\u0000\u0000\u02a3\u02a4\u0005\u00ca\u0000\u0000\u02a4\u02a7"+ + "\u0003\u0130\u0098\u0000\u02a5\u02a7\u0005\u0167\u0000\u0000\u02a6\u02a3"+ + "\u0001\u0000\u0000\u0000\u02a6\u02a5\u0001\u0000\u0000\u0000\u02a7\u02aa"+ + "\u0001\u0000\u0000\u0000\u02a8\u02a9\u00057\u0000\u0000\u02a9\u02ab\u0007"+ + "\u0003\u0000\u0000\u02aa\u02a8\u0001\u0000\u0000\u0000\u02aa\u02ab\u0001"+ + "\u0000\u0000\u0000\u02ab\u02ad\u0001\u0000\u0000\u0000\u02ac\u02a1\u0001"+ + "\u0000\u0000\u0000\u02ac\u02ad\u0001\u0000\u0000\u0000\u02ad\u02af\u0001"+ + "\u0000\u0000\u0000\u02ae\u02b0\u0003\u013a\u009d\u0000\u02af\u02ae\u0001"+ + "\u0000\u0000\u0000\u02af\u02b0\u0001\u0000\u0000\u0000\u02b0\u02b1\u0001"+ + "\u0000\u0000\u0000\u02b1\u02b2\u0005\u001c\u0000\u0000\u02b2\u02b3\u0003"+ + "\u00e4r\u0000\u02b3\u02ff\u0001\u0000\u0000\u0000\u02b4\u02b5\u0005\u016f"+ + "\u0000\u0000\u02b5\u02b6\u0005\u0118\u0000\u0000\u02b6\u02b7\u0005\u01e9"+ + "\u0000\u0000\u02b7\u02bb\u0003\u0146\u00a3\u0000\u02b8\u02bc\u0003\u00a0"+ + "P\u0000\u02b9\u02bc\u0005U\u0000\u0000\u02ba\u02bc\u0005 \u0000\u0000"+ + "\u02bb\u02b8\u0001\u0000\u0000\u0000\u02bb\u02b9\u0001\u0000\u0000\u0000"+ + "\u02bb\u02ba\u0001\u0000\u0000\u0000\u02bc\u02ff\u0001\u0000\u0000\u0000"+ + "\u02bd\u02be\u0005\u0015\u0000\u0000\u02be\u02bf\u0005\u0118\u0000\u0000"+ + "\u02bf\u02c0\u0005\u01e9\u0000\u0000\u02c0\u02d8\u0003\u0146\u00a3\u0000"+ + "\u02c1\u02c2\u0005\u0173\u0000\u0000\u02c2\u02d9\u0003\u01c0\u00e0\u0000"+ + "\u02c3\u02c9\u0005\u016f\u0000\u0000\u02c4\u02ca\u0003\u00b2Y\u0000\u02c5"+ + "\u02ca\u0003\u00aeW\u0000\u02c6\u02c7\u0003\u00b2Y\u0000\u02c7\u02c8\u0003"+ + "\u00aeW\u0000\u02c8\u02ca\u0001\u0000\u0000\u0000\u02c9\u02c4\u0001\u0000"+ + "\u0000\u0000\u02c9\u02c5\u0001\u0000\u0000\u0000\u02c9\u02c6\u0001\u0000"+ + "\u0000\u0000\u02ca\u02d9\u0001\u0000\u0000\u0000\u02cb\u02cc\u0005\u0176"+ + "\u0000\u0000\u02cc\u02cd\u0005\u01f1\u0000\u0000\u02cd\u02ce\u0005\u0118"+ + "\u0000\u0000\u02ce\u02cf\u0005\u01e9\u0000\u0000\u02cf\u02d1\u0003\u01c0"+ + "\u00e0\u0000\u02d0\u02d2\u0003\u013a\u009d\u0000\u02d1\u02d0\u0001\u0000"+ + "\u0000\u0000\u02d1\u02d2\u0001\u0000\u0000\u0000\u02d2\u02d9\u0001\u0000"+ + "\u0000\u0000\u02d3\u02d4\u0005\u0199\u0000\u0000\u02d4\u02d5\u0005\u0002"+ + "\u0000\u0000\u02d5\u02d6\u0003\u013c\u009e\u0000\u02d6\u02d7\u0005\u0003"+ + "\u0000\u0000\u02d7\u02d9\u0001\u0000\u0000\u0000\u02d8\u02c1\u0001\u0000"+ + "\u0000\u0000\u02d8\u02c3\u0001\u0000\u0000\u0000\u02d8\u02cb\u0001\u0000"+ + "\u0000\u0000\u02d8\u02d3\u0001\u0000\u0000\u0000\u02d9\u02ff\u0001\u0000"+ + "\u0000\u0000\u02da\u02db\u0005\u008e\u0000\u0000\u02db\u02dc\u0005\u0118"+ + "\u0000\u0000\u02dc\u02df\u0005\u01e9\u0000\u0000\u02dd\u02de\u0005\u00d6"+ + "\u0000\u0000\u02de\u02e0\u0005\u00a4\u0000\u0000\u02df\u02dd\u0001\u0000"+ + "\u0000\u0000\u02df\u02e0\u0001\u0000\u0000\u0000\u02e0\u02e1\u0001\u0000"+ + "\u0000\u0000\u02e1\u02e4\u0003\u0146\u00a3\u0000\u02e2\u02e3\u0005\u0135"+ + "\u0000\u0000\u02e3\u02e5\u0003\u0146\u00a3\u0000\u02e4\u02e2\u0001\u0000"+ + "\u0000\u0000\u02e4\u02e5\u0001\u0000\u0000\u0000\u02e5\u02ff\u0001\u0000"+ + "\u0000\u0000\u02e6\u02e7\u0005\u0149\u0000\u0000\u02e7\u02e8\u0005\u0118"+ + "\u0000\u0000\u02e8\u02e9\u0005\u01e9\u0000\u0000\u02e9\u02ea\u0005\u00ef"+ + "\u0000\u0000\u02ea\u02eb\u0005\u0135\u0000\u0000\u02eb\u02ff\u0003\u0146"+ + "\u00a3\u0000\u02ec\u02ed\u0005\u0180\u0000\u0000\u02ed\u02ee\u0005\u0118"+ + "\u0000\u0000\u02ee\u02ef\u0005\u01e9\u0000\u0000\u02ef\u02f0\u0005\u00ef"+ + "\u0000\u0000\u02f0\u02f1\u0005\u0135\u0000\u0000\u02f1\u02ff\u0003\u0146"+ + "\u00a3\u0000\u02f2\u02f3\u0005?\u0000\u0000\u02f3\u02f4\u0005\u0118\u0000"+ + "\u0000\u02f4\u02f5\u0005\u01e9\u0000\u0000\u02f5\u02f6\u0005\u01bc\u0000"+ + "\u0000\u02f6\u02f7\u0005\u0216\u0000\u0000\u02f7\u02f8\u0005\u0135\u0000"+ + "\u0000\u02f8\u02ff\u0003\u0146\u00a3\u0000\u02f9\u02fa\u0005\u019d\u0000"+ + "\u0000\u02fa\u02fb\u0005c\u0000\u0000\u02fb\u02fc\u0005\u0118\u0000\u0000"+ + "\u02fc\u02fd\u0005\u01e9\u0000\u0000\u02fd\u02ff\u0003\u0146\u00a3\u0000"+ + "\u02fe\u0273\u0001\u0000\u0000\u0000\u02fe\u02b4\u0001\u0000\u0000\u0000"+ + "\u02fe\u02bd\u0001\u0000\u0000\u0000\u02fe\u02da\u0001\u0000\u0000\u0000"+ + "\u02fe\u02e6\u0001\u0000\u0000\u0000\u02fe\u02ec\u0001\u0000\u0000\u0000"+ + "\u02fe\u02f2\u0001\u0000\u0000\u0000\u02fe\u02f9\u0001\u0000\u0000\u0000"+ + "\u02ff\u000b\u0001\u0000\u0000\u0000\u0300\u0301\u0005c\u0000\u0000\u0301"+ + "\u0302\u0005\u00ef\u0000\u0000\u0302\u0303\u0003\u0146\u00a3\u0000\u0303"+ + "\u0304\u0005\u0135\u0000\u0000\u0304\u0318\u0005\u018f\u0000\u0000\u0305"+ + "\u0306\u0005\u00a0\u0000\u0000\u0306\u0307\u0005\u0216\u0000\u0000\u0307"+ + "\u030d\u0003\u01c0\u00e0\u0000\u0308\u030b\u0005\u01a9\u0000\u0000\u0309"+ + "\u030c\u0005\u0211\u0000\u0000\u030a\u030c\u0005l\u0000\u0000\u030b\u0309"+ + "\u0001\u0000\u0000\u0000\u030b\u030a\u0001\u0000\u0000\u0000\u030c\u030e"+ + "\u0001\u0000\u0000\u0000\u030d\u0308\u0001\u0000\u0000\u0000\u030d\u030e"+ + "\u0001\u0000\u0000\u0000\u030e\u0311\u0001\u0000\u0000\u0000\u030f\u0310"+ + "\u0005\u009a\u0000\u0000\u0310\u0312\u0005\u0211\u0000\u0000\u0311\u030f"+ + "\u0001\u0000\u0000\u0000\u0311\u0312\u0001\u0000\u0000\u0000\u0312\u0319"+ + "\u0001\u0000\u0000\u0000\u0313\u0316\u0005\u001e\u0000\u0000\u0314\u0317"+ + "\u0005\u0211\u0000\u0000\u0315\u0317\u0005l\u0000\u0000\u0316\u0314\u0001"+ + "\u0000\u0000\u0000\u0316\u0315\u0001\u0000\u0000\u0000\u0317\u0319\u0001"+ + "\u0000\u0000\u0000\u0318\u0305\u0001\u0000\u0000\u0000\u0318\u0313\u0001"+ + "\u0000\u0000\u0000\u0319\u031b\u0001\u0000\u0000\u0000\u031a\u031c\u0003"+ + "\u01b4\u00da\u0000\u031b\u031a\u0001\u0000\u0000\u0000\u031b\u031c\u0001"+ + "\u0000\u0000\u0000\u031c\u031d\u0001\u0000\u0000\u0000\u031d\u031e\u0005"+ + "\u008b\u0000\u0000\u031e\u031f\u0003\u0010\b\u0000\u031f\u0339\u0001\u0000"+ + "\u0000\u0000\u0320\u0321\u0005\u0149\u0000\u0000\u0321\u0323\u0005\u00ef"+ + "\u0000\u0000\u0322\u0324\u0003P(\u0000\u0323\u0322\u0001\u0000\u0000\u0000"+ + "\u0323\u0324\u0001\u0000\u0000\u0000\u0324\u0339\u0001\u0000\u0000\u0000"+ + "\u0325\u0326\u0005\u008e\u0000\u0000\u0326\u0329\u0005\u00ef\u0000\u0000"+ + "\u0327\u0328\u0005\u00d6\u0000\u0000\u0328\u032a\u0005\u00a4\u0000\u0000"+ + "\u0329\u0327\u0001\u0000\u0000\u0000\u0329\u032a\u0001\u0000\u0000\u0000"+ + "\u032a\u032c\u0001\u0000\u0000\u0000\u032b\u032d\u0003P(\u0000\u032c\u032b"+ + "\u0001\u0000\u0000\u0000\u032c\u032d\u0001\u0000\u0000\u0000\u032d\u0339"+ + "\u0001\u0000\u0000\u0000\u032e\u032f\u0005\u0180\u0000\u0000\u032f\u0331"+ + "\u0005\u00ef\u0000\u0000\u0330\u0332\u0003P(\u0000\u0331\u0330\u0001\u0000"+ + "\u0000\u0000\u0331\u0332\u0001\u0000\u0000\u0000\u0332\u0339\u0001\u0000"+ + "\u0000\u0000\u0333\u0334\u0005?\u0000\u0000\u0334\u0336\u0005\u01bc\u0000"+ + "\u0000\u0335\u0337\u0003P(\u0000\u0336\u0335\u0001\u0000\u0000\u0000\u0336"+ + "\u0337\u0001\u0000\u0000\u0000\u0337\u0339\u0001\u0000\u0000\u0000\u0338"+ + "\u0300\u0001\u0000\u0000\u0000\u0338\u0320\u0001\u0000\u0000\u0000\u0338"+ + "\u0325\u0001\u0000\u0000\u0000\u0338\u032e\u0001\u0000\u0000\u0000\u0338"+ + "\u0333\u0001\u0000\u0000\u0000\u0339\r\u0001\u0000\u0000\u0000\u033a\u033b"+ + "\u0005\u0015\u0000\u0000\u033b\u033c\u0005\u01b7\u0000\u0000\u033c\u033d"+ + "\u0003\u0146\u00a3\u0000\u033d\u033e\u0005\u000e\u0000\u0000\u033e\u033f"+ + "\u0005]\u0000\u0000\u033f\u0340\u0003\u01bc\u00de\u0000\u0340\u0341\u0003"+ + "\u009eO\u0000\u0341\u034e\u0001\u0000\u0000\u0000\u0342\u0343\u0005\u0015"+ + "\u0000\u0000\u0343\u0344\u0005\u01b7\u0000\u0000\u0344\u0345\u0003\u0146"+ + "\u00a3\u0000\u0345\u0346\u0005\u008e\u0000\u0000\u0346\u0347\u0005]\u0000"+ + "\u0000\u0347\u0348\u0003\u01bc\u00de\u0000\u0348\u034e\u0001\u0000\u0000"+ + "\u0000\u0349\u034a\u0005\u019d\u0000\u0000\u034a\u034b\u0005^\u0000\u0000"+ + "\u034b\u034c\u0005\u00bb\u0000\u0000\u034c\u034e\u0003\u0146\u00a3\u0000"+ + "\u034d\u033a\u0001\u0000\u0000\u0000\u034d\u0342\u0001\u0000\u0000\u0000"+ + "\u034d\u0349\u0001\u0000\u0000\u0000\u034e\u000f\u0001\u0000\u0000\u0000"+ + "\u034f\u0351\u0003\u00c2a\u0000\u0350\u034f\u0001\u0000\u0000\u0000\u0350"+ + "\u0351\u0001\u0000\u0000\u0000\u0351\u0353\u0001\u0000\u0000\u0000\u0352"+ + "\u0354\u0003\u00eew\u0000\u0353\u0352\u0001\u0000\u0000\u0000\u0353\u0354"+ + "\u0001\u0000\u0000\u0000\u0354\u0355\u0001\u0000\u0000\u0000\u0355\u0359"+ + "\u0005\u00df\u0000\u0000\u0356\u035a\u0005\u00e6\u0000\u0000\u0357\u0358"+ + "\u0005\u013e\u0000\u0000\u0358\u035a\u0005\u01b7\u0000\u0000\u0359\u0356"+ + "\u0001\u0000\u0000\u0000\u0359\u0357\u0001\u0000\u0000\u0000\u035a\u0360"+ + "\u0001\u0000\u0000\u0000\u035b\u0361\u0003\u0146\u00a3\u0000\u035c\u035d"+ + "\u0005\u008c\u0000\u0000\u035d\u035e\u0005\u0002\u0000\u0000\u035e\u035f"+ + "\u0005\u0216\u0000\u0000\u035f\u0361\u0005\u0003\u0000\u0000\u0360\u035b"+ + "\u0001\u0000\u0000\u0000\u0360\u035c\u0001\u0000\u0000\u0000\u0361\u0363"+ + "\u0001\u0000\u0000\u0000\u0362\u0364\u0003\u00a0P\u0000\u0363\u0362\u0001"+ + "\u0000\u0000\u0000\u0363\u0364\u0001\u0000\u0000\u0000\u0364\u0368\u0001"+ + "\u0000\u0000\u0000\u0365\u0366\u0005\u01f1\u0000\u0000\u0366\u0367\u0005"+ + "\u00f7\u0000\u0000\u0367\u0369\u0003\u01c0\u00e0\u0000\u0368\u0365\u0001"+ + "\u0000\u0000\u0000\u0368\u0369\u0001\u0000\u0000\u0000\u0369\u036b\u0001"+ + "\u0000\u0000\u0000\u036a\u036c\u0003\u0130\u0098\u0000\u036b\u036a\u0001"+ + "\u0000\u0000\u0000\u036b\u036c\u0001\u0000\u0000\u0000\u036c\u0371\u0001"+ + "\u0000\u0000\u0000\u036d\u036e\u0005\u0007\u0000\u0000\u036e\u036f\u0003"+ + "\u0132\u0099\u0000\u036f\u0370\u0005\b\u0000\u0000\u0370\u0372\u0001\u0000"+ + "\u0000\u0000\u0371\u036d\u0001\u0000\u0000\u0000\u0371\u0372\u0001\u0000"+ + "\u0000\u0000\u0372\u0373\u0001\u0000\u0000\u0000\u0373\u03c3\u0003\u00e4"+ + "r\u0000\u0374\u0376\u0003\u00c2a\u0000\u0375\u0374\u0001\u0000\u0000\u0000"+ + "\u0375\u0376\u0001\u0000\u0000\u0000\u0376\u0378\u0001\u0000\u0000\u0000"+ + "\u0377\u0379\u0003\u00eew\u0000\u0378\u0377\u0001\u0000\u0000\u0000\u0378"+ + "\u0379\u0001\u0000\u0000\u0000\u0379\u037a\u0001\u0000\u0000\u0000\u037a"+ + "\u037b\u0005\u01da\u0000\u0000\u037b\u037c\u0003\u0146\u00a3\u0000\u037c"+ + "\u037d\u0003\u0144\u00a2\u0000\u037d\u037e\u0005\u0199\u0000\u0000\u037e"+ + "\u0380\u0003\u011e\u008f\u0000\u037f\u0381\u0003\u00fa}\u0000\u0380\u037f"+ + "\u0001\u0000\u0000\u0000\u0380\u0381\u0001\u0000\u0000\u0000\u0381\u0383"+ + "\u0001\u0000\u0000\u0000\u0382\u0384\u0003\u00f8|\u0000\u0383\u0382\u0001"+ + "\u0000\u0000\u0000\u0383\u0384\u0001\u0000\u0000\u0000\u0384\u03c3\u0001"+ + "\u0000\u0000\u0000\u0385\u0387\u0003\u00c2a\u0000\u0386\u0385\u0001\u0000"+ + "\u0000\u0000\u0386\u0387\u0001\u0000\u0000\u0000\u0387\u0389\u0001\u0000"+ + "\u0000\u0000\u0388\u038a\u0003\u00eew\u0000\u0389\u0388\u0001\u0000\u0000"+ + "\u0000\u0389\u038a\u0001\u0000\u0000\u0000\u038a\u038b\u0001\u0000\u0000"+ + "\u0000\u038b\u038c\u0005~\u0000\u0000\u038c\u038d\u0005\u00bb\u0000\u0000"+ + "\u038d\u038f\u0003\u0146\u00a3\u0000\u038e\u0390\u0003\u00a0P\u0000\u038f"+ + "\u038e\u0001\u0000\u0000\u0000\u038f\u0390\u0001\u0000\u0000\u0000\u0390"+ + "\u0391\u0001\u0000\u0000\u0000\u0391\u0394\u0003\u0144\u00a2\u0000\u0392"+ + "\u0393\u0005\u01de\u0000\u0000\u0393\u0395\u0003\u0102\u0081\u0000\u0394"+ + "\u0392\u0001\u0000\u0000\u0000\u0394\u0395\u0001\u0000\u0000\u0000\u0395"+ + "\u0397\u0001\u0000\u0000\u0000\u0396\u0398\u0003\u00f8|\u0000\u0397\u0396"+ + "\u0001\u0000\u0000\u0000\u0397\u0398\u0001\u0000\u0000\u0000\u0398\u03c3"+ + "\u0001\u0000\u0000\u0000\u0399\u039a\u0005\u0105\u0000\u0000\u039a\u039b"+ + "\u0005\u00f7\u0000\u0000\u039b\u039c\u0003\u0146\u00a3\u0000\u039c\u039d"+ + "\u0005\u0002\u0000\u0000\u039d\u03a2\u0003\u00a8T\u0000\u039e\u039f\u0005"+ + "\u0004\u0000\u0000\u039f\u03a1\u0003\u00a8T\u0000\u03a0\u039e\u0001\u0000"+ + "\u0000\u0000\u03a1\u03a4\u0001\u0000\u0000\u0000\u03a2\u03a0\u0001\u0000"+ + "\u0000\u0000\u03a2\u03a3\u0001\u0000\u0000\u0000\u03a3\u03a5\u0001\u0000"+ + "\u0000\u0000\u03a4\u03a2\u0001\u0000\u0000\u0000\u03a5\u03a7\u0005\u0003"+ + "\u0000\u0000\u03a6\u03a8\u0003\u00dam\u0000\u03a7\u03a6\u0001\u0000\u0000"+ + "\u0000\u03a7\u03a8\u0001\u0000\u0000\u0000\u03a8\u03aa\u0001\u0000\u0000"+ + "\u0000\u03a9\u03ab\u0003\u013a\u009d\u0000\u03aa\u03a9\u0001\u0000\u0000"+ + "\u0000\u03aa\u03ab\u0001\u0000\u0000\u0000\u03ab\u03ad\u0001\u0000\u0000"+ + "\u0000\u03ac\u03ae\u0003\u01b4\u00da\u0000\u03ad\u03ac\u0001\u0000\u0000"+ + "\u0000\u03ad\u03ae\u0001\u0000\u0000\u0000\u03ae\u03c3\u0001\u0000\u0000"+ + "\u0000\u03af\u03b0\u0005\u00a7\u0000\u0000\u03b0\u03b1\u0005\u01b7\u0000"+ + "\u0000\u03b1\u03b4\u0003\u0146\u00a3\u0000\u03b2\u03b3\u0005\u0141\u0000"+ + "\u0000\u03b3\u03b5\u0003\u0130\u0098\u0000\u03b4\u03b2\u0001\u0000\u0000"+ + "\u0000\u03b4\u03b5\u0001\u0000\u0000\u0000\u03b5\u03b7\u0001\u0000\u0000"+ + "\u0000\u03b6\u03b8\u0003\u00f8|\u0000\u03b7\u03b6\u0001\u0000\u0000\u0000"+ + "\u03b7\u03b8\u0001\u0000\u0000\u0000\u03b8\u03b9\u0001\u0000\u0000\u0000"+ + "\u03b9\u03ba\u0005\u01c6\u0000\u0000\u03ba\u03bc\u0005\u0211\u0000\u0000"+ + "\u03bb\u03bd\u0003\u013a\u009d\u0000\u03bc\u03bb\u0001\u0000\u0000\u0000"+ + "\u03bc\u03bd\u0001\u0000\u0000\u0000\u03bd\u03bf\u0001\u0000\u0000\u0000"+ + "\u03be\u03c0\u0003\u00dam\u0000\u03bf\u03be\u0001\u0000\u0000\u0000\u03bf"+ + "\u03c0\u0001\u0000\u0000\u0000\u03c0\u03c3\u0001\u0000\u0000\u0000\u03c1"+ + "\u03c3\u0003\u00c8d\u0000\u03c2\u0350\u0001\u0000\u0000\u0000\u03c2\u0375"+ + "\u0001\u0000\u0000\u0000\u03c2\u0386\u0001\u0000\u0000\u0000\u03c2\u0399"+ + "\u0001\u0000\u0000\u0000\u03c2\u03af\u0001\u0000\u0000\u0000\u03c2\u03c1"+ + "\u0001\u0000\u0000\u0000\u03c3\u0011\u0001\u0000\u0000\u0000\u03c4\u03c6"+ + "\u0005c\u0000\u0000\u03c5\u03c7\u0007\u0004\u0000\u0000\u03c6\u03c5\u0001"+ + "\u0000\u0000\u0000\u03c6\u03c7\u0001\u0000\u0000\u0000\u03c7\u03c8\u0001"+ + "\u0000\u0000\u0000\u03c8\u03cc\u0005\u01b7\u0000\u0000\u03c9\u03ca\u0005"+ + "\u00d6\u0000\u0000\u03ca\u03cb\u0005\u012f\u0000\u0000\u03cb\u03cd\u0005"+ + "\u00a4\u0000\u0000\u03cc\u03c9\u0001\u0000\u0000\u0000\u03cc\u03cd\u0001"+ + "\u0000\u0000\u0000\u03cd\u03ce\u0001\u0000\u0000\u0000\u03ce\u03dd\u0003"+ + "\u0146\u00a3\u0000\u03cf\u03d1\u0003\u0130\u0098\u0000\u03d0\u03cf\u0001"+ + "\u0000\u0000\u0000\u03d0\u03d1\u0001\u0000\u0000\u0000\u03d1\u03de\u0001"+ + "\u0000\u0000\u0000\u03d2\u03d3\u0005\u0002\u0000\u0000\u03d3\u03d6\u0003"+ + "\u014c\u00a6\u0000\u03d4\u03d5\u0005\u0004\u0000\u0000\u03d5\u03d7\u0003"+ + "\u0150\u00a8\u0000\u03d6\u03d4\u0001\u0000\u0000\u0000\u03d6\u03d7\u0001"+ + "\u0000\u0000\u0000\u03d7\u03d9\u0001\u0000\u0000\u0000\u03d8\u03da\u0005"+ + "\u0004\u0000\u0000\u03d9\u03d8\u0001\u0000\u0000\u0000\u03d9\u03da\u0001"+ + "\u0000\u0000\u0000\u03da\u03db\u0001\u0000\u0000\u0000\u03db\u03dc\u0005"+ + "\u0003\u0000\u0000\u03dc\u03de\u0001\u0000\u0000\u0000\u03dd\u03d0\u0001"+ + "\u0000\u0000\u0000\u03dd\u03d2\u0001\u0000\u0000\u0000\u03de\u03e2\u0001"+ + "\u0000\u0000\u0000\u03df\u03e0\u0005\u009b\u0000\u0000\u03e0\u03e1\u0005"+ + "\u01f7\u0000\u0000\u03e1\u03e3\u0003\u01c0\u00e0\u0000\u03e2\u03df\u0001"+ + "\u0000\u0000\u0000\u03e2\u03e3\u0001\u0000\u0000\u0000\u03e3\u03ec\u0001"+ + "\u0000\u0000\u0000\u03e4\u03e5\u0007\u0005\u0000\u0000\u03e5\u03e6\u0005"+ + "\u00f4\u0000\u0000\u03e6\u03ea\u0003\u0130\u0098\u0000\u03e7\u03e8\u0005"+ + "I\u0000\u0000\u03e8\u03e9\u0005;\u0000\u0000\u03e9\u03eb\u0003\u0130\u0098"+ + "\u0000\u03ea\u03e7\u0001\u0000\u0000\u0000\u03ea\u03eb\u0001\u0000\u0000"+ + "\u0000\u03eb\u03ed\u0001\u0000\u0000\u0000\u03ec\u03e4\u0001\u0000\u0000"+ + "\u0000\u03ec\u03ed\u0001\u0000\u0000\u0000\u03ed\u03f0\u0001\u0000\u0000"+ + "\u0000\u03ee\u03ef\u0005Q\u0000\u0000\u03ef\u03f1\u0005\u0211\u0000\u0000"+ + "\u03f0\u03ee\u0001\u0000\u0000\u0000\u03f0\u03f1\u0001\u0000\u0000\u0000"+ + "\u03f1\u03f3\u0001\u0000\u0000\u0000\u03f2\u03f4\u0003\u00a2Q\u0000\u03f3"+ + "\u03f2\u0001\u0000\u0000\u0000\u03f3\u03f4\u0001\u0000\u0000\u0000\u03f4"+ + "\u0403\u0001\u0000\u0000\u0000\u03f5\u03f6\u0005\u0088\u0000\u0000\u03f6"+ + "\u03fa\u0005;\u0000\u0000\u03f7\u03f8\u0005\u00ca\u0000\u0000\u03f8\u03fb"+ + "\u0003\u0130\u0098\u0000\u03f9\u03fb\u0005\u0167\u0000\u0000\u03fa\u03f7"+ + "\u0001\u0000\u0000\u0000\u03fa\u03f9\u0001\u0000\u0000\u0000\u03fb\u0401"+ + "\u0001\u0000\u0000\u0000\u03fc\u03ff\u00057\u0000\u0000\u03fd\u0400\u0005"+ + "\u0216\u0000\u0000\u03fe\u0400\u0005 \u0000\u0000\u03ff\u03fd\u0001\u0000"+ + "\u0000\u0000\u03ff\u03fe\u0001\u0000\u0000\u0000\u0400\u0402\u0001\u0000"+ + "\u0000\u0000\u0401\u03fc\u0001\u0000\u0000\u0000\u0401\u0402\u0001\u0000"+ + "\u0000\u0000\u0402\u0404\u0001\u0000\u0000\u0000\u0403\u03f5\u0001\u0000"+ + "\u0000\u0000\u0403\u0404\u0001\u0000\u0000\u0000\u0404\u040a\u0001\u0000"+ + "\u0000\u0000\u0405\u0406\u0005\u0189\u0000\u0000\u0406\u0407\u0005\u0002"+ + "\u0000\u0000\u0407\u0408\u0003\u0164\u00b2\u0000\u0408\u0409\u0005\u0003"+ + "\u0000\u0000\u0409\u040b\u0001\u0000\u0000\u0000\u040a\u0405\u0001\u0000"+ + "\u0000\u0000\u040a\u040b\u0001\u0000\u0000\u0000\u040b\u040d\u0001\u0000"+ + "\u0000\u0000\u040c\u040e\u0003\u013a\u009d\u0000\u040d\u040c\u0001\u0000"+ + "\u0000\u0000\u040d\u040e\u0001\u0000\u0000\u0000\u040e\u0411\u0001\u0000"+ + "\u0000\u0000\u040f\u0410\u00056\u0000\u0000\u0410\u0412\u0003\u013a\u009d"+ + "\u0000\u0411\u040f\u0001\u0000\u0000\u0000\u0411\u0412\u0001\u0000\u0000"+ + "\u0000\u0412\u0415\u0001\u0000\u0000\u0000\u0413\u0414\u0005\u001c\u0000"+ + "\u0000\u0414\u0416\u0003\u00e4r\u0000\u0415\u0413\u0001\u0000\u0000\u0000"+ + "\u0415\u0416\u0001\u0000\u0000\u0000\u0416\u0508\u0001\u0000\u0000\u0000"+ + "\u0417\u041a\u0005c\u0000\u0000\u0418\u0419\u0005\u0139\u0000\u0000\u0419"+ + "\u041b\u0005\u0176\u0000\u0000\u041a\u0418\u0001\u0000\u0000\u0000\u041a"+ + "\u041b\u0001\u0000\u0000\u0000\u041b\u041c\u0001\u0000\u0000\u0000\u041c"+ + "\u0420\u0005\u01e9\u0000\u0000\u041d\u041e\u0005\u00d6\u0000\u0000\u041e"+ + "\u041f\u0005\u012f\u0000\u0000\u041f\u0421\u0005\u00a4\u0000\u0000\u0420"+ + "\u041d\u0001\u0000\u0000\u0000\u0420\u0421\u0001\u0000\u0000\u0000\u0421"+ + "\u0422\u0001\u0000\u0000\u0000\u0422\u0427\u0003\u0146\u00a3\u0000\u0423"+ + "\u0424\u0005\u0002\u0000\u0000\u0424\u0425\u0003\u0148\u00a4\u0000\u0425"+ + "\u0426\u0005\u0003\u0000\u0000\u0426\u0428\u0001\u0000\u0000\u0000\u0427"+ + "\u0423\u0001\u0000\u0000\u0000\u0427\u0428\u0001\u0000\u0000\u0000\u0428"+ + "\u042b\u0001\u0000\u0000\u0000\u0429\u042a\u0005Q\u0000\u0000\u042a\u042c"+ + "\u0005\u0211\u0000\u0000\u042b\u0429\u0001\u0000\u0000\u0000\u042b\u042c"+ + "\u0001\u0000\u0000\u0000\u042c\u042d\u0001\u0000\u0000\u0000\u042d\u042e"+ + "\u0005\u001c\u0000\u0000\u042e\u042f\u0003\u00e4r\u0000\u042f\u0508\u0001"+ + "\u0000\u0000\u0000\u0430\u0431\u0005c\u0000\u0000\u0431\u0432\u0005\u00b0"+ + "\u0000\u0000\u0432\u0435\u0005\u0211\u0000\u0000\u0433\u0434\u0007\u0006"+ + "\u0000\u0000\u0434\u0436\u0003\u01c0\u00e0\u0000\u0435\u0433\u0001\u0000"+ + "\u0000\u0000\u0435\u0436\u0001\u0000\u0000\u0000\u0436\u0437\u0001\u0000"+ + "\u0000\u0000\u0437\u0508\u0003\u013a\u009d\u0000\u0438\u043a\u0005c\u0000"+ + "\u0000\u0439\u043b\u0007\u0004\u0000\u0000\u043a\u0439\u0001\u0000\u0000"+ + "\u0000\u043a\u043b\u0001\u0000\u0000\u0000\u043b\u043c\u0001\u0000\u0000"+ + "\u0000\u043c\u0440\u0005\u01b7\u0000\u0000\u043d\u043e\u0005\u00d6\u0000"+ + "\u0000\u043e\u043f\u0005\u012f\u0000\u0000\u043f\u0441\u0005\u00a4\u0000"+ + "\u0000\u0440\u043d\u0001\u0000\u0000\u0000\u0440\u0441\u0001\u0000\u0000"+ + "\u0000\u0441\u0442\u0001\u0000\u0000\u0000\u0442\u0443\u0003\u0146\u00a3"+ + "\u0000\u0443\u0444\u0005\u0100\u0000\u0000\u0444\u044a\u0003\u0146\u00a3"+ + "\u0000\u0445\u0446\u0005\u01f1\u0000\u0000\u0446\u0448\u0005\u0189\u0000"+ + "\u0000\u0447\u0449\u0003\u0130\u0098\u0000\u0448\u0447\u0001\u0000\u0000"+ + "\u0000\u0448\u0449\u0001\u0000\u0000\u0000\u0449\u044b\u0001\u0000\u0000"+ + "\u0000\u044a\u0445\u0001\u0000\u0000\u0000\u044a\u044b\u0001\u0000\u0000"+ + "\u0000\u044b\u0508\u0001\u0000\u0000\u0000\u044c\u044d\u0005c\u0000\u0000"+ + "\u044d\u0451\u0005\u0186\u0000\u0000\u044e\u044f\u0005\u00d6\u0000\u0000"+ + "\u044f\u0450\u0005\u012f\u0000\u0000\u0450\u0452\u0005\u00a4\u0000\u0000"+ + "\u0451\u044e\u0001\u0000\u0000\u0000\u0451\u0452\u0001\u0000\u0000\u0000"+ + "\u0452\u0453\u0001\u0000\u0000\u0000\u0453\u0456\u0003\u01c0\u00e0\u0000"+ + "\u0454\u0455\u0005Q\u0000\u0000\u0455\u0457\u0005\u0211\u0000\u0000\u0456"+ + "\u0454\u0001\u0000\u0000\u0000\u0456\u0457\u0001\u0000\u0000\u0000\u0457"+ + "\u0508\u0001\u0000\u0000\u0000\u0458\u0459\u0005c\u0000\u0000\u0459\u045a"+ + "\u0005\u01f3\u0000\u0000\u045a\u045e\u0005\u00c7\u0000\u0000\u045b\u045c"+ + "\u0005\u00d6\u0000\u0000\u045c\u045d\u0005\u012f\u0000\u0000\u045d\u045f"+ + "\u0005\u00a4\u0000\u0000\u045e\u045b\u0001\u0000\u0000\u0000\u045e\u045f"+ + "\u0001\u0000\u0000\u0000\u045f\u0460\u0001\u0000\u0000\u0000\u0460\u0462"+ + "\u0003\u00b6[\u0000\u0461\u0463\u0003\u013a\u009d\u0000\u0462\u0461\u0001"+ + "\u0000\u0000\u0000\u0462\u0463\u0001\u0000\u0000\u0000\u0463\u0508\u0001"+ + "\u0000\u0000\u0000\u0464\u0465\u0005c\u0000\u0000\u0465\u0469\u0005B\u0000"+ + "\u0000\u0466\u0467\u0005\u00d6\u0000\u0000\u0467\u0468\u0005\u012f\u0000"+ + "\u0000\u0468\u046a\u0005\u00a4\u0000\u0000\u0469\u0466\u0001\u0000\u0000"+ + "\u0000\u0469\u046a\u0001\u0000\u0000\u0000\u046a\u046b\u0001\u0000\u0000"+ + "\u0000\u046b\u046f\u0003\u01c0\u00e0\u0000\u046c\u046d\u0005\u01f1\u0000"+ + "\u0000\u046d\u046e\u0005\u017c\u0000\u0000\u046e\u0470\u0003\u01c0\u00e0"+ + "\u0000\u046f\u046c\u0001\u0000\u0000\u0000\u046f\u0470\u0001\u0000\u0000"+ + "\u0000\u0470\u0473\u0001\u0000\u0000\u0000\u0471\u0472\u0005Q\u0000\u0000"+ + "\u0472\u0474\u0005\u0211\u0000\u0000\u0473\u0471\u0001\u0000\u0000\u0000"+ + "\u0473\u0474\u0001\u0000\u0000\u0000\u0474\u0476\u0001\u0000\u0000\u0000"+ + "\u0475\u0477\u0003\u013a\u009d\u0000\u0476\u0475\u0001\u0000\u0000\u0000"+ + "\u0476\u0477\u0001\u0000\u0000\u0000\u0477\u0508\u0001\u0000\u0000\u0000"+ + "\u0478\u0479\u0005c\u0000\u0000\u0479\u047a\u0005\u018b\u0000\u0000\u047a"+ + "\u047e\u0005\u0156\u0000\u0000\u047b\u047c\u0005\u00d6\u0000\u0000\u047c"+ + "\u047d\u0005\u012f\u0000\u0000\u047d\u047f\u0005\u00a4\u0000\u0000\u047e"+ + "\u047b\u0001\u0000\u0000\u0000\u047e\u047f\u0001\u0000\u0000\u0000\u047f"+ + "\u0480\u0001\u0000\u0000\u0000\u0480\u0481\u0003\u01c0\u00e0\u0000\u0481"+ + "\u0482\u0005\u0135\u0000\u0000\u0482\u0483\u0003\u0146\u00a3\u0000\u0483"+ + "\u0484\u0005\u001c\u0000\u0000\u0484\u0485\u0007\u0007\u0000\u0000\u0485"+ + "\u0489\u0005\u01c6\u0000\u0000\u0486\u048a\u0003\u00be_\u0000\u0487\u0488"+ + "\u0005\u0186\u0000\u0000\u0488\u048a\u0003\u01c0\u00e0\u0000\u0489\u0486"+ + "\u0001\u0000\u0000\u0000\u0489\u0487\u0001\u0000\u0000\u0000\u048a\u048b"+ + "\u0001\u0000\u0000\u0000\u048b\u048c\u0005\u01de\u0000\u0000\u048c\u048d"+ + "\u0005\u0002\u0000\u0000\u048d\u048e\u0003\u0176\u00bb\u0000\u048e\u048f"+ + "\u0005\u0003\u0000\u0000\u048f\u0508\u0001\u0000\u0000\u0000\u0490\u0491"+ + "\u0005c\u0000\u0000\u0491\u0492\u0005\u01ad\u0000\u0000\u0492\u0496\u0005"+ + "\u0156\u0000\u0000\u0493\u0494\u0005\u00d6\u0000\u0000\u0494\u0495\u0005"+ + "\u012f\u0000\u0000\u0495\u0497\u0005\u00a4\u0000\u0000\u0496\u0493\u0001"+ + "\u0000\u0000\u0000\u0496\u0497\u0001\u0000\u0000\u0000\u0497\u0498\u0001"+ + "\u0000\u0000\u0000\u0498\u049a\u0003\u01c0\u00e0\u0000\u0499\u049b\u0003"+ + "\u013a\u009d\u0000\u049a\u0499\u0001\u0000\u0000\u0000\u049a\u049b\u0001"+ + "\u0000\u0000\u0000\u049b\u0508\u0001\u0000\u0000\u0000\u049c\u049d\u0005"+ + "8\u0000\u0000\u049d\u049e\u0005\u00db\u0000\u0000\u049e\u049f\u0003\u01c0"+ + "\u00e0\u0000\u049f\u04a0\u0005\u0135\u0000\u0000\u04a0\u04a2\u0003\u0146"+ + "\u00a3\u0000\u04a1\u04a3\u0003\u00a0P\u0000\u04a2\u04a1\u0001\u0000\u0000"+ + "\u0000\u04a2\u04a3\u0001\u0000\u0000\u0000\u04a3\u0508\u0001\u0000\u0000"+ + "\u0000\u04a4\u04a5\u0005c\u0000\u0000\u04a5\u04a9\u0005\u00db\u0000\u0000"+ + "\u04a6\u04a7\u0005\u00d6\u0000\u0000\u04a7\u04a8\u0005\u012f\u0000\u0000"+ + "\u04a8\u04aa\u0005\u00a4\u0000\u0000\u04a9\u04a6\u0001\u0000\u0000\u0000"+ + "\u04a9\u04aa\u0001\u0000\u0000\u0000\u04aa\u04ab\u0001\u0000\u0000\u0000"+ + "\u04ab\u04ac\u0003\u01c0\u00e0\u0000\u04ac\u04ad\u0005\u0135\u0000\u0000"+ + "\u04ad\u04ae\u0003\u0146\u00a3\u0000\u04ae\u04b1\u0003\u0130\u0098\u0000"+ + "\u04af\u04b0\u0005\u01de\u0000\u0000\u04b0\u04b2\u0007\b\u0000\u0000\u04b1"+ + "\u04af\u0001\u0000\u0000\u0000\u04b1\u04b2\u0001\u0000\u0000\u0000\u04b2"+ + "\u04b4\u0001\u0000\u0000\u0000\u04b3\u04b5\u0003\u013a\u009d\u0000\u04b4"+ + "\u04b3\u0001\u0000\u0000\u0000\u04b4\u04b5\u0001\u0000\u0000\u0000\u04b5"+ + "\u04b8\u0001\u0000\u0000\u0000\u04b6\u04b7\u0005Q\u0000\u0000\u04b7\u04b9"+ + "\u0005\u0211\u0000\u0000\u04b8\u04b6\u0001\u0000\u0000\u0000\u04b8\u04b9"+ + "\u0001\u0000\u0000\u0000\u04b9\u0508\u0001\u0000\u0000\u0000\u04ba\u04bb"+ + "\u0005c\u0000\u0000\u04bb\u04bf\u0005\u01a5\u0000\u0000\u04bc\u04bd\u0005"+ + "\u00d6\u0000\u0000\u04bd\u04be\u0005\u012f\u0000\u0000\u04be\u04c0\u0005"+ + "\u00a4\u0000\u0000\u04bf\u04bc\u0001\u0000\u0000\u0000\u04bf\u04c0\u0001"+ + "\u0000\u0000\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000\u04c1\u04c3\u0003"+ + "\u01c0\u00e0\u0000\u04c2\u04c4\u0003\u013a\u009d\u0000\u04c3\u04c2\u0001"+ + "\u0000\u0000\u0000\u04c3\u04c4\u0001\u0000\u0000\u0000\u04c4\u0508\u0001"+ + "\u0000\u0000\u0000\u04c5\u04c6\u0005c\u0000\u0000\u04c6\u04ca\u0005\u0097"+ + "\u0000\u0000\u04c7\u04c8\u0005\u00d6\u0000\u0000\u04c8\u04c9\u0005\u012f"+ + "\u0000\u0000\u04c9\u04cb\u0005\u00a4\u0000\u0000\u04ca\u04c7\u0001\u0000"+ + "\u0000\u0000\u04ca\u04cb\u0001\u0000\u0000\u0000\u04cb\u04cc\u0001\u0000"+ + "\u0000\u0000\u04cc\u04cd\u0003\u0146\u00a3\u0000\u04cd\u04ce\u0005\u001c"+ + "\u0000\u0000\u04ce\u04cf\u0005\u0211\u0000\u0000\u04cf\u0508\u0001\u0000"+ + "\u0000\u0000\u04d0\u04d2\u0005c\u0000\u0000\u04d1\u04d3\u0003\u00aaU\u0000"+ + "\u04d2\u04d1\u0001\u0000\u0000\u0000\u04d2\u04d3\u0001\u0000\u0000\u0000"+ + "\u04d3\u04d5\u0001\u0000\u0000\u0000\u04d4\u04d6\u0007\t\u0000\u0000\u04d5"+ + "\u04d4\u0001\u0000\u0000\u0000\u04d5\u04d6\u0001\u0000\u0000\u0000\u04d6"+ + "\u04d7\u0001\u0000\u0000\u0000\u04d7\u04db\u0005\u00bf\u0000\u0000\u04d8"+ + "\u04d9\u0005\u00d6\u0000\u0000\u04d9\u04da\u0005\u012f\u0000\u0000\u04da"+ + "\u04dc\u0005\u00a4\u0000\u0000\u04db\u04d8\u0001\u0000\u0000\u0000\u04db"+ + "\u04dc\u0001\u0000\u0000\u0000\u04dc\u04dd\u0001\u0000\u0000\u0000\u04dd"+ + "\u04de\u0003\u0188\u00c4\u0000\u04de\u04e0\u0005\u0002\u0000\u0000\u04df"+ + "\u04e1\u0003\u0080@\u0000\u04e0\u04df\u0001\u0000\u0000\u0000\u04e0\u04e1"+ + "\u0001\u0000\u0000\u0000\u04e1\u04e2\u0001\u0000\u0000\u0000\u04e2\u04e3"+ + "\u0005\u0003\u0000\u0000\u04e3\u04e4\u0005\u0181\u0000\u0000\u04e4\u04e7"+ + "\u0003\u01a6\u00d3\u0000\u04e5\u04e6\u0005\u00e3\u0000\u0000\u04e6\u04e8"+ + "\u0003\u01a6\u00d3\u0000\u04e7\u04e5\u0001\u0000\u0000\u0000\u04e7\u04e8"+ + "\u0001\u0000\u0000\u0000\u04e8\u04ea\u0001\u0000\u0000\u0000\u04e9\u04eb"+ + "\u0003\u013a\u009d\u0000\u04ea\u04e9\u0001\u0000\u0000\u0000\u04ea\u04eb"+ + "\u0001\u0000\u0000\u0000\u04eb\u0508\u0001\u0000\u0000\u0000\u04ec\u04ee"+ + "\u0005c\u0000\u0000\u04ed\u04ef\u0003\u00aaU\u0000\u04ee\u04ed\u0001\u0000"+ + "\u0000\u0000\u04ee\u04ef\u0001\u0000\u0000\u0000\u04ef\u04f0\u0001\u0000"+ + "\u0000\u0000\u04f0\u04f1\u0005\u0013\u0000\u0000\u04f1\u04f5\u0005\u00bf"+ + "\u0000\u0000\u04f2\u04f3\u0005\u00d6\u0000\u0000\u04f3\u04f4\u0005\u012f"+ + "\u0000\u0000\u04f4\u04f6\u0005\u00a4\u0000\u0000\u04f5\u04f2\u0001\u0000"+ + "\u0000\u0000\u04f5\u04f6\u0001\u0000\u0000\u0000\u04f6\u04f7\u0001\u0000"+ + "\u0000\u0000\u04f7\u04f8\u0003\u0188\u00c4\u0000\u04f8\u04fa\u0005\u0002"+ + "\u0000\u0000\u04f9\u04fb\u0003\u0080@\u0000\u04fa\u04f9\u0001\u0000\u0000"+ + "\u0000\u04fa\u04fb\u0001\u0000\u0000\u0000\u04fb\u04fc\u0001\u0000\u0000"+ + "\u0000\u04fc\u04fd\u0005\u0003\u0000\u0000\u04fd\u04fe\u0005\u01f1\u0000"+ + "\u0000\u04fe\u04ff\u0005\u013f\u0000\u0000\u04ff\u0501\u0005\u0002\u0000"+ + "\u0000\u0500\u0502\u0003\u0132\u0099\u0000\u0501\u0500\u0001\u0000\u0000"+ + "\u0000\u0501\u0502\u0001\u0000\u0000\u0000\u0502\u0503\u0001\u0000\u0000"+ + "\u0000\u0503\u0504\u0005\u0003\u0000\u0000\u0504\u0505\u0005\u001c\u0000"+ + "\u0000\u0505\u0506\u0003\u0172\u00b9\u0000\u0506\u0508\u0001\u0000\u0000"+ + "\u0000\u0507\u03c4\u0001\u0000\u0000\u0000\u0507\u0417\u0001\u0000\u0000"+ + "\u0000\u0507\u0430\u0001\u0000\u0000\u0000\u0507\u0438\u0001\u0000\u0000"+ + "\u0000\u0507\u044c\u0001\u0000\u0000\u0000\u0507\u0458\u0001\u0000\u0000"+ + "\u0000\u0507\u0464\u0001\u0000\u0000\u0000\u0507\u0478\u0001\u0000\u0000"+ + "\u0000\u0507\u0490\u0001\u0000\u0000\u0000\u0507\u049c\u0001\u0000\u0000"+ + "\u0000\u0507\u04a4\u0001\u0000\u0000\u0000\u0507\u04ba\u0001\u0000\u0000"+ + "\u0000\u0507\u04c5\u0001\u0000\u0000\u0000\u0507\u04d0\u0001\u0000\u0000"+ + "\u0000\u0507\u04ec\u0001\u0000\u0000\u0000\u0508\u0013\u0001\u0000\u0000"+ + "\u0000\u0509\u050a\u0005\u0015\u0000\u0000\u050a\u050b\u0005\u01b6\u0000"+ + "\u0000\u050b\u05a6\u0003\\.\u0000\u050c\u050d\u0005\u0015\u0000\u0000"+ + "\u050d\u050e\u0005\u01e9\u0000\u0000\u050e\u0519\u0003\u0146\u00a3\u0000"+ + "\u050f\u0510\u0005\u0122\u0000\u0000\u0510\u051a\u0003\u01b4\u00da\u0000"+ + "\u0511\u0512\u0005\u0002\u0000\u0000\u0512\u0513\u0003\u0148\u00a4\u0000"+ + "\u0513\u0514\u0005"; + private static final String _serializedATNSegment1 = + "\u0003\u0000\u0000\u0514\u0516\u0001\u0000\u0000\u0000\u0515\u0511\u0001"+ + "\u0000\u0000\u0000\u0515\u0516\u0001\u0000\u0000\u0000\u0516\u0517\u0001"+ + "\u0000\u0000\u0000\u0517\u0518\u0005\u001c\u0000\u0000\u0518\u051a\u0003"+ + "\u00e4r\u0000\u0519\u050f\u0001\u0000\u0000\u0000\u0519\u0515\u0001\u0000"+ + "\u0000\u0000\u051a\u05a6\u0001\u0000\u0000\u0000\u051b\u051c\u0005\u0015"+ + "\u0000\u0000\u051c\u051d\u0005B\u0000\u0000\u051d\u051e\u0003\u01c0\u00e0"+ + "\u0000\u051e\u051f\u0005\u0173\u0000\u0000\u051f\u0520\u0003\u01c0\u00e0"+ + "\u0000\u0520\u05a6\u0001\u0000\u0000\u0000\u0521\u0522\u0005\u0015\u0000"+ + "\u0000\u0522\u0523\u0005\u0186\u0000\u0000\u0523\u0524\u0003\u01c0\u00e0"+ + "\u0000\u0524\u0525\u0003\u01b4\u00da\u0000\u0525\u05a6\u0001\u0000\u0000"+ + "\u0000\u0526\u0527\u0005\u0015\u0000\u0000\u0527\u0528\u0005\u01ad\u0000"+ + "\u0000\u0528\u0529\u0005\u01e5\u0000\u0000\u0529\u052a\u0003\u0146\u00a3"+ + "\u0000\u052a\u052b\u0003\u013a\u009d\u0000\u052b\u05a6\u0001\u0000\u0000"+ + "\u0000\u052c\u052d\u0005\u0015\u0000\u0000\u052d\u052e\u0005\u0186\u0000"+ + "\u0000\u052e\u052f\u0003\u01c0\u00e0\u0000\u052f\u0530\u0003\u01b4\u00da"+ + "\u0000\u0530\u05a6\u0001\u0000\u0000\u0000\u0531\u0532\u0005\u0015\u0000"+ + "\u0000\u0532\u0533\u0005\u01f3\u0000\u0000\u0533\u0534\u0005\u00c7\u0000"+ + "\u0000\u0534\u0536\u0003\u00b6[\u0000\u0535\u0537\u0003\u013a\u009d\u0000"+ + "\u0536\u0535\u0001\u0000\u0000\u0000\u0536\u0537\u0001\u0000\u0000\u0000"+ + "\u0537\u05a6\u0001\u0000\u0000\u0000\u0538\u0539\u0005\u0015\u0000\u0000"+ + "\u0539\u053a\u0005B\u0000\u0000\u053a\u053b\u0003\u01c0\u00e0\u0000\u053b"+ + "\u053c\u0005\u0199\u0000\u0000\u053c\u053d\u0005\u015e\u0000\u0000\u053d"+ + "\u053e\u0005\u0002\u0000\u0000\u053e\u053f\u0003\u013c\u009e\u0000\u053f"+ + "\u0540\u0005\u0003\u0000\u0000\u0540\u05a6\u0001\u0000\u0000\u0000\u0541"+ + "\u0542\u0005\u0015\u0000\u0000\u0542\u0543\u0005\u01f3\u0000\u0000\u0543"+ + "\u0544\u0005\u0156\u0000\u0000\u0544\u0546\u0003\u00b6[\u0000\u0545\u0547"+ + "\u0003\u013a\u009d\u0000\u0546\u0545\u0001\u0000\u0000\u0000\u0546\u0547"+ + "\u0001\u0000\u0000\u0000\u0547\u05a6\u0001\u0000\u0000\u0000\u0548\u0549"+ + "\u0005\u0015\u0000\u0000\u0549\u054a\u0005\u01a5\u0000\u0000\u054a\u054c"+ + "\u0003\u01c0\u00e0\u0000\u054b\u054d\u0003\u013a\u009d\u0000\u054c\u054b"+ + "\u0001\u0000\u0000\u0000\u054c\u054d\u0001\u0000\u0000\u0000\u054d\u05a6"+ + "\u0001\u0000\u0000\u0000\u054e\u054f\u0005\u0015\u0000\u0000\u054f\u0550"+ + "\u0005B\u0000\u0000\u0550\u0551\u0003\u01c0\u00e0\u0000\u0551\u0552\u0005"+ + "\u0122\u0000\u0000\u0552\u0553\u0005Q\u0000\u0000\u0553\u0554\u0005\u0211"+ + "\u0000\u0000\u0554\u05a6\u0001\u0000\u0000\u0000\u0555\u0556\u0005\u0015"+ + "\u0000\u0000\u0556\u0557\u0005o\u0000\u0000\u0557\u0558\u0003\u01c0\u00e0"+ + "\u0000\u0558\u0559\u0005\u0173\u0000\u0000\u0559\u055a\u0003\u01c0\u00e0"+ + "\u0000\u055a\u05a6\u0001\u0000\u0000\u0000\u055b\u055c\u0005\u0015\u0000"+ + "\u0000\u055c\u055d\u0005\u0186\u0000\u0000\u055d\u055e\u0003\u01c0\u00e0"+ + "\u0000\u055e\u055f\u0003\u01b4\u00da\u0000\u055f\u05a6\u0001\u0000\u0000"+ + "\u0000\u0560\u0561\u0005\u0015\u0000\u0000\u0561\u0562\u0005\u01b7\u0000"+ + "\u0000\u0562\u0563\u0003\u0146\u00a3\u0000\u0563\u0568\u0003b1\u0000\u0564"+ + "\u0565\u0005\u0004\u0000\u0000\u0565\u0567\u0003b1\u0000\u0566\u0564\u0001"+ + "\u0000\u0000\u0000\u0567\u056a\u0001\u0000\u0000\u0000\u0568\u0566\u0001"+ + "\u0000\u0000\u0000\u0568\u0569\u0001\u0000\u0000\u0000\u0569\u05a6\u0001"+ + "\u0000\u0000\u0000\u056a\u0568\u0001\u0000\u0000\u0000\u056b\u056c\u0005"+ + "\u0015\u0000\u0000\u056c\u056d\u0005\u01b7\u0000\u0000\u056d\u056e\u0003"+ + "\u0146\u00a3\u0000\u056e\u056f\u0005\u000e\u0000\u0000\u056f\u0570\u0005"+ + "\u0189\u0000\u0000\u0570\u0575\u0003`0\u0000\u0571\u0572\u0005\u0004\u0000"+ + "\u0000\u0572\u0574\u0003`0\u0000\u0573\u0571\u0001\u0000\u0000\u0000\u0574"+ + "\u0577\u0001\u0000\u0000\u0000\u0575\u0573\u0001\u0000\u0000\u0000\u0575"+ + "\u0576\u0001\u0000\u0000\u0000\u0576\u05a6\u0001\u0000\u0000\u0000\u0577"+ + "\u0575\u0001\u0000\u0000\u0000\u0578\u0579\u0005\u0015\u0000\u0000\u0579"+ + "\u057a\u0005\u01b7\u0000\u0000\u057a\u057b\u0003\u0146\u00a3\u0000\u057b"+ + "\u057c\u0005\u008e\u0000\u0000\u057c\u057d\u0005\u0189\u0000\u0000\u057d"+ + "\u0582\u0003^/\u0000\u057e\u057f\u0005\u0004\u0000\u0000\u057f\u0581\u0003"+ + "^/\u0000\u0580\u057e\u0001\u0000\u0000\u0000\u0581\u0584\u0001\u0000\u0000"+ + "\u0000\u0582\u0580\u0001\u0000\u0000\u0000\u0582\u0583\u0001\u0000\u0000"+ + "\u0000\u0583\u05a6\u0001\u0000\u0000\u0000\u0584\u0582\u0001\u0000\u0000"+ + "\u0000\u0585\u0586\u0005\u0015\u0000\u0000\u0586\u0587\u0005\u01b7\u0000"+ + "\u0000\u0587\u0588\u0003\u0146\u00a3\u0000\u0588\u0589\u0005\u0199\u0000"+ + "\u0000\u0589\u058a\u0005\u0002\u0000\u0000\u058a\u058b\u0003\u013c\u009e"+ + "\u0000\u058b\u058c\u0005\u0003\u0000\u0000\u058c\u05a6\u0001\u0000\u0000"+ + "\u0000\u058d\u058e\u0005\u0015\u0000\u0000\u058e\u058f\u0005o\u0000\u0000"+ + "\u058f\u0590\u0003\u01c0\u00e0\u0000\u0590\u0591\u0005\u0199\u0000\u0000"+ + "\u0591\u0592\u0007\n\u0000\u0000\u0592\u0595\u0005\u0164\u0000\u0000\u0593"+ + "\u0596\u0003\u01c0\u00e0\u0000\u0594\u0596\u0005\u0216\u0000\u0000\u0595"+ + "\u0593\u0001\u0000\u0000\u0000\u0595\u0594\u0001\u0000\u0000\u0000\u0596"+ + "\u05a6\u0001\u0000\u0000\u0000\u0597\u0598\u0005\u0015\u0000\u0000\u0598"+ + "\u0599\u0005\u01b6\u0000\u0000\u0599\u059a\u0005\u0173\u0000\u0000\u059a"+ + "\u059b\u0005W\u0000\u0000\u059b\u059c\u0005\u00c7\u0000\u0000\u059c\u059d"+ + "\u0003\u01c0\u00e0\u0000\u059d\u059e\u0003\u01c0\u00e0\u0000\u059e\u05a6"+ + "\u0001\u0000\u0000\u0000\u059f\u05a0\u0005\u0015\u0000\u0000\u05a0\u05a1"+ + "\u0005\u017b\u0000\u0000\u05a1\u05a3\u0003\u01c0\u00e0\u0000\u05a2\u05a4"+ + "\u0003\u013a\u009d\u0000\u05a3\u05a2\u0001\u0000\u0000\u0000\u05a3\u05a4"+ + "\u0001\u0000\u0000\u0000\u05a4\u05a6\u0001\u0000\u0000\u0000\u05a5\u0509"+ + "\u0001\u0000\u0000\u0000\u05a5\u050c\u0001\u0000\u0000\u0000\u05a5\u051b"+ + "\u0001\u0000\u0000\u0000\u05a5\u0521\u0001\u0000\u0000\u0000\u05a5\u0526"+ + "\u0001\u0000\u0000\u0000\u05a5\u052c\u0001\u0000\u0000\u0000\u05a5\u0531"+ + "\u0001\u0000\u0000\u0000\u05a5\u0538\u0001\u0000\u0000\u0000\u05a5\u0541"+ + "\u0001\u0000\u0000\u0000\u05a5\u0548\u0001\u0000\u0000\u0000\u05a5\u054e"+ + "\u0001\u0000\u0000\u0000\u05a5\u0555\u0001\u0000\u0000\u0000\u05a5\u055b"+ + "\u0001\u0000\u0000\u0000\u05a5\u0560\u0001\u0000\u0000\u0000\u05a5\u056b"+ + "\u0001\u0000\u0000\u0000\u05a5\u0578\u0001\u0000\u0000\u0000\u05a5\u0585"+ + "\u0001\u0000\u0000\u0000\u05a5\u058d\u0001\u0000\u0000\u0000\u05a5\u0597"+ + "\u0001\u0000\u0000\u0000\u05a5\u059f\u0001\u0000\u0000\u0000\u05a6\u0015"+ + "\u0001\u0000\u0000\u0000\u05a7\u05a8\u0005\u008e\u0000\u0000\u05a8\u05a9"+ + "\u0005B\u0000\u0000\u05a9\u05aa\u0005\u016e\u0000\u0000\u05aa\u05ab\u0005"+ + "*\u0000\u0000\u05ab\u05ac\u0005\u01ef\u0000\u0000\u05ac\u05ad\u0005\u0211"+ + "\u0000\u0000\u05ad\u05ae\u0005\u01f7\u0000\u0000\u05ae\u0624\u0005\u0216"+ + "\u0000\u0000\u05af\u05b0\u0005\u008e\u0000\u0000\u05b0\u05b3\u0005\u0097"+ + "\u0000\u0000\u05b1\u05b2\u0005\u00d6\u0000\u0000\u05b2\u05b4\u0005\u00a4"+ + "\u0000\u0000\u05b3\u05b1\u0001\u0000\u0000\u0000\u05b3\u05b4\u0001\u0000"+ + "\u0000\u0000\u05b4\u05b5\u0001\u0000\u0000\u0000\u05b5\u0624\u0003\u0146"+ + "\u00a3\u0000\u05b6\u05b7\u0005\u008e\u0000\u0000\u05b7\u05ba\u0005\u0186"+ + "\u0000\u0000\u05b8\u05b9\u0005\u00d6\u0000\u0000\u05b9\u05bb\u0005\u00a4"+ + "\u0000\u0000\u05ba\u05b8\u0001\u0000\u0000\u0000\u05ba\u05bb\u0001\u0000"+ + "\u0000\u0000\u05bb\u05bc\u0001\u0000\u0000\u0000\u05bc\u0624\u0003\u01c0"+ + "\u00e0\u0000\u05bd\u05be\u0005\u008e\u0000\u0000\u05be\u05c1\u0005\u01a5"+ + "\u0000\u0000\u05bf\u05c0\u0005\u00d6\u0000\u0000\u05c0\u05c2\u0005\u00a4"+ + "\u0000\u0000\u05c1\u05bf\u0001\u0000\u0000\u0000\u05c1\u05c2\u0001\u0000"+ + "\u0000\u0000\u05c2\u05c3\u0001\u0000\u0000\u0000\u05c3\u0624\u0003\u0132"+ + "\u0099\u0000\u05c4\u05c5\u0005\u008e\u0000\u0000\u05c5\u05c8\u0005\u01dc"+ + "\u0000\u0000\u05c6\u05c7\u0005\u00d6\u0000\u0000\u05c7\u05c9\u0005\u00a4"+ + "\u0000\u0000\u05c8\u05c6\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000"+ + "\u0000\u0000\u05c9\u05ca\u0001\u0000\u0000\u0000\u05ca\u0624\u0003\u00be"+ + "_\u0000\u05cb\u05cc\u0005\u008e\u0000\u0000\u05cc\u05cd\u0005\u01ad\u0000"+ + "\u0000\u05cd\u05d0\u0005\u0156\u0000\u0000\u05ce\u05cf\u0005\u00d6\u0000"+ + "\u0000\u05cf\u05d1\u0005\u00a4\u0000\u0000\u05d0\u05ce\u0001\u0000\u0000"+ + "\u0000\u05d0\u05d1\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000"+ + "\u0000\u05d2\u0624\u0003\u01c0\u00e0\u0000\u05d3\u05d4\u0005\u008e\u0000"+ + "\u0000\u05d4\u05d5\u0005\u01f3\u0000\u0000\u05d5\u05d8\u0005\u00c7\u0000"+ + "\u0000\u05d6\u05d7\u0005\u00d6\u0000\u0000\u05d7\u05d9\u0005\u00a4\u0000"+ + "\u0000\u05d8\u05d6\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000"+ + "\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da\u0624\u0003\u00b6[\u0000"+ + "\u05db\u05dc\u0005\u008e\u0000\u0000\u05dc\u05df\u0005B\u0000\u0000\u05dd"+ + "\u05de\u0005\u00d6\u0000\u0000\u05de\u05e0\u0005\u00a4\u0000\u0000\u05df"+ + "\u05dd\u0001\u0000\u0000\u0000\u05df\u05e0\u0001\u0000\u0000\u0000\u05e0"+ + "\u05e1\u0001\u0000\u0000\u0000\u05e1\u0624\u0003\u01c0\u00e0\u0000\u05e2"+ + "\u05e3\u0005\u008e\u0000\u0000\u05e3\u05e4\u0005\u00b0\u0000\u0000\u05e4"+ + "\u05e7\u0005\u0211\u0000\u0000\u05e5\u05e6\u0007\u0006\u0000\u0000\u05e6"+ + "\u05e8\u0003\u01c0\u00e0\u0000\u05e7\u05e5\u0001\u0000\u0000\u0000\u05e7"+ + "\u05e8\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ + "\u0624\u0003\u013a\u009d\u0000\u05ea\u05eb\u0005\u008e\u0000\u0000\u05eb"+ + "\u05ec\u0005\u01f3\u0000\u0000\u05ec\u05ef\u0005\u0156\u0000\u0000\u05ed"+ + "\u05ee\u0005\u00d6\u0000\u0000\u05ee\u05f0\u0005\u00a4\u0000\u0000\u05ef"+ + "\u05ed\u0001\u0000\u0000\u0000\u05ef\u05f0\u0001\u0000\u0000\u0000\u05f0"+ + "\u05f1\u0001\u0000\u0000\u0000\u05f1\u0624\u0003\u00b6[\u0000\u05f2\u05f3"+ + "\u0005\u008e\u0000\u0000\u05f3\u05f4\u0005\u017b\u0000\u0000\u05f4\u0624"+ + "\u0003\u01c0\u00e0\u0000\u05f5\u05f6\u0005\u008e\u0000\u0000\u05f6\u05f9"+ + "\u0005\u01b7\u0000\u0000\u05f7\u05f8\u0005\u00d6\u0000\u0000\u05f8\u05fa"+ + "\u0005\u00a4\u0000\u0000\u05f9\u05f7\u0001\u0000\u0000\u0000\u05f9\u05fa"+ + "\u0001\u0000\u0000\u0000\u05fa\u05fb\u0001\u0000\u0000\u0000\u05fb\u05fd"+ + "\u0003\u0146\u00a3\u0000\u05fc\u05fe\u0005\u00b8\u0000\u0000\u05fd\u05fc"+ + "\u0001\u0000\u0000\u0000\u05fd\u05fe\u0001\u0000\u0000\u0000\u05fe\u0624"+ + "\u0001\u0000\u0000\u0000\u05ff\u0600\u0005\u008e\u0000\u0000\u0600\u0603"+ + "\u0007\u000b\u0000\u0000\u0601\u0602\u0005\u00d6\u0000\u0000\u0602\u0604"+ + "\u0005\u00a4\u0000\u0000\u0603\u0601\u0001\u0000\u0000\u0000\u0603\u0604"+ + "\u0001\u0000\u0000\u0000\u0604\u0605\u0001\u0000\u0000\u0000\u0605\u0607"+ + "\u0003\u0146\u00a3\u0000\u0606\u0608\u0005\u00b8\u0000\u0000\u0607\u0606"+ + "\u0001\u0000\u0000\u0000\u0607\u0608\u0001\u0000\u0000\u0000\u0608\u0624"+ + "\u0001\u0000\u0000\u0000\u0609\u060b\u0005\u008e\u0000\u0000\u060a\u060c"+ + "\u0003\u00aaU\u0000\u060b\u060a\u0001\u0000\u0000\u0000\u060b\u060c\u0001"+ + "\u0000\u0000\u0000\u060c\u060d\u0001\u0000\u0000\u0000\u060d\u0610\u0005"+ + "\u00bf\u0000\u0000\u060e\u060f\u0005\u00d6\u0000\u0000\u060f\u0611\u0005"+ + "\u00a4\u0000\u0000\u0610\u060e\u0001\u0000\u0000\u0000\u0610\u0611\u0001"+ + "\u0000\u0000\u0000\u0611\u0612\u0001\u0000\u0000\u0000\u0612\u0613\u0003"+ + "\u0188\u00c4\u0000\u0613\u0615\u0005\u0002\u0000\u0000\u0614\u0616\u0003"+ + "\u0080@\u0000\u0615\u0614\u0001\u0000\u0000\u0000\u0615\u0616\u0001\u0000"+ + "\u0000\u0000\u0616\u0617\u0001\u0000\u0000\u0000\u0617\u0618\u0005\u0003"+ + "\u0000\u0000\u0618\u0624\u0001\u0000\u0000\u0000\u0619\u061a\u0005\u008e"+ + "\u0000\u0000\u061a\u061d\u0005\u00db\u0000\u0000\u061b\u061c\u0005\u00d6"+ + "\u0000\u0000\u061c\u061e\u0005\u00a4\u0000\u0000\u061d\u061b\u0001\u0000"+ + "\u0000\u0000\u061d\u061e\u0001\u0000\u0000\u0000\u061e\u061f\u0001\u0000"+ + "\u0000\u0000\u061f\u0620\u0003\u01c0\u00e0\u0000\u0620\u0621\u0005\u0135"+ + "\u0000\u0000\u0621\u0622\u0003\u0146\u00a3\u0000\u0622\u0624\u0001\u0000"+ + "\u0000\u0000\u0623\u05a7\u0001\u0000\u0000\u0000\u0623\u05af\u0001\u0000"+ + "\u0000\u0000\u0623\u05b6\u0001\u0000\u0000\u0000\u0623\u05bd\u0001\u0000"+ + "\u0000\u0000\u0623\u05c4\u0001\u0000\u0000\u0000\u0623\u05cb\u0001\u0000"+ + "\u0000\u0000\u0623\u05d3\u0001\u0000\u0000\u0000\u0623\u05db\u0001\u0000"+ + "\u0000\u0000\u0623\u05e2\u0001\u0000\u0000\u0000\u0623\u05ea\u0001\u0000"+ + "\u0000\u0000\u0623\u05f2\u0001\u0000\u0000\u0000\u0623\u05f5\u0001\u0000"+ + "\u0000\u0000\u0623\u05ff\u0001\u0000\u0000\u0000\u0623\u0609\u0001\u0000"+ + "\u0000\u0000\u0623\u0619\u0001\u0000\u0000\u0000\u0624\u0017\u0001\u0000"+ + "\u0000\u0000\u0625\u0627\u0005\u019d\u0000\u0000\u0626\u0628\u0003\u00aa"+ + "U\u0000\u0627\u0626\u0001\u0000\u0000\u0000\u0627\u0628\u0001\u0000\u0000"+ + "\u0000\u0628\u0629\u0001\u0000\u0000\u0000\u0629\u062b\u0005\u01e3\u0000"+ + "\u0000\u062a\u062c\u0003P(\u0000\u062b\u062a\u0001\u0000\u0000\u0000\u062b"+ + "\u062c\u0001\u0000\u0000\u0000\u062c\u077e\u0001\u0000\u0000\u0000\u062d"+ + "\u062e\u0005\u019d\u0000\u0000\u062e\u077e\u0005\u001f\u0000\u0000\u062f"+ + "\u0630\u0005\u019d\u0000\u0000\u0630\u0631\u0005c\u0000\u0000\u0631\u0632"+ + "\u0007\u000b\u0000\u0000\u0632\u077e\u0003\u0146\u00a3\u0000\u0633\u0634"+ + "\u0005\u019d\u0000\u0000\u0634\u077e\u00056\u0000\u0000\u0635\u0636\u0005"+ + "\u019d\u0000\u0000\u0636\u0637\u0005\u0093\u0000\u0000\u0637\u0638\u0005"+ + "\u0141\u0000\u0000\u0638\u063b\u0005\u01b8\u0000\u0000\u0639\u063a\u0007"+ + "\u0006\u0000\u0000\u063a\u063c\u0003\u0146\u00a3\u0000\u063b\u0639\u0001"+ + "\u0000\u0000\u0000\u063b\u063c\u0001\u0000\u0000\u0000\u063c\u077e\u0001"+ + "\u0000\u0000\u0000\u063d\u063e\u0005\u019d\u0000\u0000\u063e\u0641\u0005"+ + "\u009f\u0000\u0000\u063f\u0640\u0007\u0006\u0000\u0000\u0640\u0642\u0003"+ + "\u0146\u00a3\u0000\u0641\u063f\u0001\u0000\u0000\u0000\u0641\u0642\u0001"+ + "\u0000\u0000\u0000\u0642\u0644\u0001\u0000\u0000\u0000\u0643\u0645\u0003"+ + "P(\u0000\u0644\u0643\u0001\u0000\u0000\u0000\u0644\u0645\u0001\u0000\u0000"+ + "\u0000\u0645\u077e\u0001\u0000\u0000\u0000\u0646\u0647\u0005\u019d\u0000"+ + "\u0000\u0647\u0648\u0005\u00f9\u0000\u0000\u0648\u077e\u0005\u00df\u0000"+ + "\u0000\u0649\u064d\u0005\u019d\u0000\u0000\u064a\u064b\u0005E\u0000\u0000"+ + "\u064b\u064e\u0005\u0199\u0000\u0000\u064c\u064e\u0005F\u0000\u0000\u064d"+ + "\u064a\u0001\u0000\u0000\u0000\u064d\u064c\u0001\u0000\u0000\u0000\u064e"+ + "\u077e\u0001\u0000\u0000\u0000\u064f\u0650\u0005\u019d\u0000\u0000\u0650"+ + "\u0653\u0005~\u0000\u0000\u0651\u0652\u0007\u0006\u0000\u0000\u0652\u0654"+ + "\u0003\u0146\u00a3\u0000\u0653\u0651\u0001\u0000\u0000\u0000\u0653\u0654"+ + "\u0001\u0000\u0000\u0000\u0654\u077e\u0001\u0000\u0000\u0000\u0655\u0657"+ + "\u0005\u019d\u0000\u0000\u0656\u0658\u0005\u0014\u0000\u0000\u0657\u0656"+ + "\u0001\u0000\u0000\u0000\u0657\u0658\u0001\u0000\u0000\u0000\u0658\u0659"+ + "\u0001\u0000\u0000\u0000\u0659\u077e\u0005\u00c5\u0000\u0000\u065a\u065b"+ + "\u0005\u019d\u0000\u0000\u065b\u065c\u0005\u00c5\u0000\u0000\u065c\u065d"+ + "\u0005\u00b6\u0000\u0000\u065d\u077e\u0003\u00be_\u0000\u065e\u065f\u0005"+ + "\u019d\u0000\u0000\u065f\u0660\u0005\u01b5\u0000\u0000\u0660\u0663\u0005"+ + "\u00ef\u0000\u0000\u0661\u0662\u0007\u0006\u0000\u0000\u0662\u0664\u0003"+ + "\u0146\u00a3\u0000\u0663\u0661\u0001\u0000\u0000\u0000\u0663\u0664\u0001"+ + "\u0000\u0000\u0000\u0664\u077e\u0001\u0000\u0000\u0000\u0665\u0666\u0005"+ + "\u019d\u0000\u0000\u0666\u0667\u0005\u0105\u0000\u0000\u0667\u0669\u0005"+ + "\u015d\u0000\u0000\u0668\u066a\u0005\u0211\u0000\u0000\u0669\u0668\u0001"+ + "\u0000\u0000\u0000\u0669\u066a\u0001\u0000\u0000\u0000\u066a\u066c\u0001"+ + "\u0000\u0000\u0000\u066b\u066d\u0003\u0128\u0094\u0000\u066c\u066b\u0001"+ + "\u0000\u0000\u0000\u066c\u066d\u0001\u0000\u0000\u0000\u066d\u077e\u0001"+ + "\u0000\u0000\u0000\u066e\u066f\u0005\u019d\u0000\u0000\u066f\u0670\u0005"+ + "c\u0000\u0000\u0670\u0671\u0005\u017b\u0000\u0000\u0671\u0672\u0005\u00b6"+ + "\u0000\u0000\u0672\u077e\u0003\u01c0\u00e0\u0000\u0673\u0674\u0005\u019d"+ + "\u0000\u0000\u0674\u0675\u0005\u01e9\u0000\u0000\u0675\u0676\u0007\u0006"+ + "\u0000\u0000\u0676\u0679\u0003\u0146\u00a3\u0000\u0677\u0678\u0007\u0006"+ + "\u0000\u0000\u0678\u067a\u0003\u01c0\u00e0\u0000\u0679\u0677\u0001\u0000"+ + "\u0000\u0000\u0679\u067a\u0001\u0000\u0000\u0000\u067a\u077e\u0001\u0000"+ + "\u0000\u0000\u067b\u067c\u0005\u019d\u0000\u0000\u067c\u077e\u0005\u0155"+ + "\u0000\u0000\u067d\u067e\u0005\u019d\u0000\u0000\u067e\u077e\u0005\u017a"+ + "\u0000\u0000\u067f\u0680\u0005\u019d\u0000\u0000\u0680\u0683\u0005\u0098"+ + "\u0000\u0000\u0681\u0682\u0007\u0006\u0000\u0000\u0682\u0684\u0003\u0146"+ + "\u00a3\u0000\u0683\u0681\u0001\u0000\u0000\u0000\u0683\u0684\u0001\u0000"+ + "\u0000\u0000\u0684\u0687\u0001\u0000\u0000\u0000\u0685\u0686\u0005\u0100"+ + "\u0000\u0000\u0686\u0688\u0005\u0211\u0000\u0000\u0687\u0685\u0001\u0000"+ + "\u0000\u0000\u0687\u0688\u0001\u0000\u0000\u0000\u0688\u077e\u0001\u0000"+ + "\u0000\u0000\u0689\u068b\u0005\u019d\u0000\u0000\u068a\u068c\u00055\u0000"+ + "\u0000\u068b\u068a\u0001\u0000\u0000\u0000\u068b\u068c\u0001\u0000\u0000"+ + "\u0000\u068c\u068d\u0001\u0000\u0000\u0000\u068d\u068e\u0005c\u0000\u0000"+ + "\u068e\u068f\u0005\u01b7\u0000\u0000\u068f\u077e\u0003\u0146\u00a3\u0000"+ + "\u0690\u0692\u0005\u019d\u0000\u0000\u0691\u0693\u0005\u00be\u0000\u0000"+ + "\u0692\u0691\u0001\u0000\u0000\u0000\u0692\u0693\u0001\u0000\u0000\u0000"+ + "\u0693\u0694\u0001\u0000\u0000\u0000\u0694\u077e\u0005\u015c\u0000\u0000"+ + "\u0695\u0696\u0005\u019d\u0000\u0000\u0696\u077e\u0005\u0187\u0000\u0000"+ + "\u0697\u0698\u0005\u019d\u0000\u0000\u0698\u0699\u0005\u0141\u0000\u0000"+ + "\u0699\u077e\u0005\u0216\u0000\u0000\u069a\u069b\u0005\u019d\u0000\u0000"+ + "\u069b\u077e\u0005\u0152\u0000\u0000\u069c\u069d\u0005\u019d\u0000\u0000"+ + "\u069d\u069e\u0005\u015a\u0000\u0000\u069e\u077e\u0005\u0211\u0000\u0000"+ + "\u069f\u06a0\u0005\u019d\u0000\u0000\u06a0\u06a3\u0005\u00b0\u0000\u0000"+ + "\u06a1\u06a2\u0007\u0006\u0000\u0000\u06a2\u06a4\u0003\u0146\u00a3\u0000"+ + "\u06a3\u06a1\u0001\u0000\u0000\u0000\u06a3\u06a4\u0001\u0000\u0000\u0000"+ + "\u06a4\u077e\u0001\u0000\u0000\u0000\u06a5\u06a7\u0005\u019d\u0000\u0000"+ + "\u06a6\u06a8\u0005\u01ad\u0000\u0000\u06a7\u06a6\u0001\u0000\u0000\u0000"+ + "\u06a7\u06a8\u0001\u0000\u0000\u0000\u06a8\u06a9\u0001\u0000\u0000\u0000"+ + "\u06a9\u077e\u0005\u009c\u0000\u0000\u06aa\u06ab\u0005\u019d\u0000\u0000"+ + "\u06ab\u06ac\u0005c\u0000\u0000\u06ac\u06ad\u0005B\u0000\u0000\u06ad\u077e"+ + "\u0003\u01c0\u00e0\u0000\u06ae\u06af\u0005\u019d\u0000\u0000\u06af\u06b0"+ + "\u0005B\u0000\u0000\u06b0\u077e\u0003\u01c0\u00e0\u0000\u06b1\u06b2\u0005"+ + "\u019d\u0000\u0000\u06b2\u06b4\u0005C\u0000\u0000\u06b3\u06b5\u0003P("+ + "\u0000\u06b4\u06b3\u0001\u0000\u0000\u0000\u06b4\u06b5\u0001\u0000\u0000"+ + "\u0000\u06b5\u077e\u0001\u0000\u0000\u0000\u06b6\u06b7\u0005\u019d\u0000"+ + "\u0000\u06b7\u06ba\u0005\u015f\u0000\u0000\u06b8\u06b9\u0005\u00b6\u0000"+ + "\u0000\u06b9\u06bb\u0003\u00b6[\u0000\u06ba\u06b8\u0001\u0000\u0000\u0000"+ + "\u06ba\u06bb\u0001\u0000\u0000\u0000\u06bb\u06be\u0001\u0000\u0000\u0000"+ + "\u06bc\u06bd\u0005\u0100\u0000\u0000\u06bd\u06bf\u0005\u0211\u0000\u0000"+ + "\u06be\u06bc\u0001\u0000\u0000\u0000\u06be\u06bf\u0001\u0000\u0000\u0000"+ + "\u06bf\u077e\u0001\u0000\u0000\u0000\u06c0\u06c1\u0005\u019d\u0000\u0000"+ + "\u06c1\u06c2\u0005\u0014\u0000\u0000\u06c2\u06c5\u0005\u015e\u0000\u0000"+ + "\u06c3\u06c4\u0005\u0100\u0000\u0000\u06c4\u06c6\u0005\u0211\u0000\u0000"+ + "\u06c5\u06c3\u0001\u0000\u0000\u0000\u06c5\u06c6\u0001\u0000\u0000\u0000"+ + "\u06c6\u077e\u0001\u0000\u0000\u0000\u06c7\u06c8\u0005\u019d\u0000\u0000"+ + "\u06c8\u06ca\u0005L\u0000\u0000\u06c9\u06cb\u0003P(\u0000\u06ca\u06c9"+ + "\u0001\u0000\u0000\u0000\u06ca\u06cb\u0001\u0000\u0000\u0000\u06cb\u077e"+ + "\u0001\u0000\u0000\u0000\u06cc\u06cd\u0005\u019d\u0000\u0000\u06cd\u06ce"+ + "\u0005\u01ad\u0000\u0000\u06ce\u06d4\u0005\u0156\u0000\u0000\u06cf\u06d2"+ + "\u0005\u01de\u0000\u0000\u06d0\u06d1\u0005\u00b6\u0000\u0000\u06d1\u06d3"+ + "\u0003\u00b6[\u0000\u06d2\u06d0\u0001\u0000\u0000\u0000\u06d2\u06d3\u0001"+ + "\u0000\u0000\u0000\u06d3\u06d5\u0001\u0000\u0000\u0000\u06d4\u06cf\u0001"+ + "\u0000\u0000\u0000\u06d4\u06d5\u0001\u0000\u0000\u0000\u06d5\u077e\u0001"+ + "\u0000\u0000\u0000\u06d6\u06d7\u0005\u019d\u0000\u0000\u06d7\u06da\u0005"+ + "\u01a5\u0000\u0000\u06d8\u06d9\u0005\u00b6\u0000\u0000\u06d9\u06db\u0003"+ + "\u01c0\u00e0\u0000\u06da\u06d8\u0001\u0000\u0000\u0000\u06da\u06db\u0001"+ + "\u0000\u0000\u0000\u06db\u077e\u0001\u0000\u0000\u0000\u06dc\u06dd\u0005"+ + "\u019d\u0000\u0000\u06dd\u06de\u0005c\u0000\u0000\u06de\u06df\u0005\u01e9"+ + "\u0000\u0000\u06df\u077e\u0003\u0146\u00a3\u0000\u06e0\u06e1\u0005\u019d"+ + "\u0000\u0000\u06e1\u06e2\u0005n\u0000\u0000\u06e2\u077e\u0005\u01d0\u0000"+ + "\u0000\u06e3\u06e4\u0005\u019d\u0000\u0000\u06e4\u06e6\u0005n\u0000\u0000"+ + "\u06e5\u06e7\u0005\u0014\u0000\u0000\u06e6\u06e5\u0001\u0000\u0000\u0000"+ + "\u06e6\u06e7\u0001\u0000\u0000\u0000\u06e7\u06ea\u0001\u0000\u0000\u0000"+ + "\u06e8\u06e9\u0005\u00bb\u0000\u0000\u06e9\u06eb\u0003\u0146\u00a3\u0000"+ + "\u06ea\u06e8\u0001\u0000\u0000\u0000\u06ea\u06eb\u0001\u0000\u0000\u0000"+ + "\u06eb\u06ed\u0001\u0000\u0000\u0000\u06ec\u06ee\u0003\u0124\u0092\u0000"+ + "\u06ed\u06ec\u0001\u0000\u0000\u0000\u06ed\u06ee\u0001\u0000\u0000\u0000"+ + "\u06ee\u06f0\u0001\u0000\u0000\u0000\u06ef\u06f1\u0003\u013a\u009d\u0000"+ + "\u06f0\u06ef\u0001\u0000\u0000\u0000\u06f0\u06f1\u0001\u0000\u0000\u0000"+ + "\u06f1\u077e\u0001\u0000\u0000\u0000\u06f2\u06f3\u0005\u019d\u0000\u0000"+ + "\u06f3\u06f4\u0005c\u0000\u0000\u06f4\u06f5\u0005\u0118\u0000\u0000\u06f5"+ + "\u06f6\u0005\u01e9\u0000\u0000\u06f6\u06f7\u0003\u01c0\u00e0\u0000\u06f7"+ + "\u06f8\u0005\u0135\u0000\u0000\u06f8\u06f9\u0003\u0146\u00a3\u0000\u06f9"+ + "\u077e\u0001\u0000\u0000\u0000\u06fa\u06fb\u0005\u019d\u0000\u0000\u06fb"+ + "\u06fd\u0007\f\u0000\u0000\u06fc\u06fe\u0003\u0128\u0094\u0000\u06fd\u06fc"+ + "\u0001\u0000\u0000\u0000\u06fd\u06fe\u0001\u0000\u0000\u0000\u06fe\u077e"+ + "\u0001\u0000\u0000\u0000\u06ff\u0700\u0005\u019d\u0000\u0000\u0700\u0701"+ + "\u0005b\u0000\u0000\u0701\u0702\u0005\u0002\u0000\u0000\u0702\u0703\u0005"+ + "\u0200\u0000\u0000\u0703\u0704\u0005\u0003\u0000\u0000\u0704\u077e\u0007"+ + "\f\u0000\u0000\u0705\u0706\u0005\u019d\u0000\u0000\u0706\u077e\u0005$"+ + "\u0000\u0000\u0707\u0708\u0005\u019d\u0000\u0000\u0708\u077e\u0005\u01a7"+ + "\u0000\u0000\u0709\u070a\u0005\u019d\u0000\u0000\u070a\u070b\u0005\u0179"+ + "\u0000\u0000\u070b\u070c\u0005\u0089\u0000\u0000\u070c\u070d\u0005\u00bb"+ + "\u0000\u0000\u070d\u077e\u0003N\'\u0000\u070e\u0710\u0005\u019d\u0000"+ + "\u0000\u070f\u0711\u0005\u00be\u0000\u0000\u0710\u070f\u0001\u0000\u0000"+ + "\u0000\u0710\u0711\u0001\u0000\u0000\u0000\u0711\u0712\u0001\u0000\u0000"+ + "\u0000\u0712\u0715\u0005\u01ca\u0000\u0000\u0713\u0714\u0007\u0006\u0000"+ + "\u0000\u0714\u0716\u0003\u0146\u00a3\u0000\u0715\u0713\u0001\u0000\u0000"+ + "\u0000\u0715\u0716\u0001\u0000\u0000\u0000\u0716\u0718\u0001\u0000\u0000"+ + "\u0000\u0717\u0719\u0003P(\u0000\u0718\u0717\u0001\u0000\u0000\u0000\u0718"+ + "\u0719\u0001\u0000\u0000\u0000\u0719\u077e\u0001\u0000\u0000\u0000\u071a"+ + "\u071b\u0005\u019d\u0000\u0000\u071b\u071c\u0005\u01ba\u0000\u0000\u071c"+ + "\u071d\u0005\u0083\u0000\u0000\u071d\u077e\u0005\u0216\u0000\u0000\u071e"+ + "\u071f\u0005\u019d\u0000\u0000\u071f\u0721\u0005\u00bd\u0000\u0000\u0720"+ + "\u0722\u0003\u01c0\u00e0\u0000\u0721\u0720\u0001\u0000\u0000\u0000\u0721"+ + "\u0722\u0001\u0000\u0000\u0000\u0722\u077e\u0001\u0000\u0000\u0000\u0723"+ + "\u0724\u0005\u019d\u0000\u0000\u0724\u0725\u0005o\u0000\u0000\u0725\u077e"+ + "\u0005\u0216\u0000\u0000\u0726\u0727\u0005\u019d\u0000\u0000\u0727\u0728"+ + "\u0005\u01b7\u0000\u0000\u0728\u077e\u0005\u0216\u0000\u0000\u0729\u072a"+ + "\u0005\u019d\u0000\u0000\u072a\u072d\u0005\u01c8\u0000\u0000\u072b\u072c"+ + "\u0005\u0135\u0000\u0000\u072c\u072e\u0005\u0211\u0000\u0000\u072d\u072b"+ + "\u0001\u0000\u0000\u0000\u072d\u072e\u0001\u0000\u0000\u0000\u072e\u077e"+ + "\u0001\u0000\u0000\u0000\u072f\u0731\u0005\u019d\u0000\u0000\u0730\u0732"+ + "\u0003\u00aaU\u0000\u0731\u0730\u0001\u0000\u0000\u0000\u0731\u0732\u0001"+ + "\u0000\u0000\u0000\u0732\u0733\u0001\u0000\u0000\u0000\u0733\u077e\u0005"+ + "\u01ab\u0000\u0000\u0734\u0735\u0005\u019d\u0000\u0000\u0735\u077e\u0005"+ + "\u01f0\u0000\u0000\u0736\u0737\u0005\u019d\u0000\u0000\u0737\u0738\u0005"+ + "\u01bb\u0000\u0000\u0738\u0739\u0005\'\u0000\u0000\u0739\u073e\u0005\u0216"+ + "\u0000\u0000\u073a\u073b\u0005\u0004\u0000\u0000\u073b\u073d\u0005\u0216"+ + "\u0000\u0000\u073c\u073a\u0001\u0000\u0000\u0000\u073d\u0740\u0001\u0000"+ + "\u0000\u0000\u073e\u073c\u0001\u0000\u0000\u0000\u073e\u073f\u0001\u0000"+ + "\u0000\u0000\u073f\u077e\u0001\u0000\u0000\u0000\u0740\u073e\u0001\u0000"+ + "\u0000\u0000\u0741\u0742\u0005\u019d\u0000\u0000\u0742\u0743\u0005n\u0000"+ + "\u0000\u0743\u0744\u0005\u019f\u0000\u0000\u0744\u0745\u0005\u00bb\u0000"+ + "\u0000\u0745\u077e\u0003N\'\u0000\u0746\u0747\u0005\u019d\u0000\u0000"+ + "\u0747\u0748\u0005\u01b7\u0000\u0000\u0748\u074b\u0005d\u0000\u0000\u0749"+ + "\u074a\u0007\u0006\u0000\u0000\u074a\u074c\u0003\u0146\u00a3\u0000\u074b"+ + "\u0749\u0001\u0000\u0000\u0000\u074b\u074c\u0001\u0000\u0000\u0000\u074c"+ + "\u074f\u0001\u0000\u0000\u0000\u074d\u074e\u0005\u0100\u0000\u0000\u074e"+ + "\u0750\u0005\u0211\u0000\u0000\u074f\u074d\u0001\u0000\u0000\u0000\u074f"+ + "\u0750\u0001\u0000\u0000\u0000\u0750\u077e\u0001\u0000\u0000\u0000\u0751"+ + "\u0752\u0005\u019d\u0000\u0000\u0752\u0753\u0005\u01ba\u0000\u0000\u0753"+ + "\u0754\u0005\u01ad\u0000\u0000\u0754\u0756\u0005\u00b9\u0000\u0000\u0755"+ + "\u0757\u0005\u01e7\u0000\u0000\u0756\u0755\u0001\u0000\u0000\u0000\u0756"+ + "\u0757\u0001\u0000\u0000\u0000\u0757\u077e\u0001\u0000\u0000\u0000\u0758"+ + "\u0759\u0005\u019d\u0000\u0000\u0759\u075a\u0005\u0162\u0000\u0000\u075a"+ + "\u075c\u0005\u015d\u0000\u0000\u075b\u075d\u0005\u0211\u0000\u0000\u075c"+ + "\u075b\u0001\u0000\u0000\u0000\u075c\u075d\u0001\u0000\u0000\u0000\u075d"+ + "\u075f\u0001\u0000\u0000\u0000\u075e\u0760\u0003\u0128\u0094\u0000\u075f"+ + "\u075e\u0001\u0000\u0000\u0000\u075f\u0760\u0001\u0000\u0000\u0000\u0760"+ + "\u077e\u0001\u0000\u0000\u0000\u0761\u0762\u0005\u019d\u0000\u0000\u0762"+ + "\u0765\u0005`\u0000\u0000\u0763\u0764\u0007\u0006\u0000\u0000\u0764\u0766"+ + "\u0003\u0146\u00a3\u0000\u0765\u0763\u0001\u0000\u0000\u0000\u0765\u0766"+ + "\u0001\u0000\u0000\u0000\u0766\u077e\u0001\u0000\u0000\u0000\u0767\u0769"+ + "\u0005\u019d\u0000\u0000\u0768\u076a\u0005\u00be\u0000\u0000\u0769\u0768"+ + "\u0001\u0000\u0000\u0000\u0769\u076a\u0001\u0000\u0000\u0000\u076a\u076b"+ + "\u0001\u0000\u0000\u0000\u076b\u076e\u0005\u01b8\u0000\u0000\u076c\u076d"+ + "\u0007\u0006\u0000\u0000\u076d\u076f\u0003\u0146\u00a3\u0000\u076e\u076c"+ + "\u0001\u0000\u0000\u0000\u076e\u076f\u0001\u0000\u0000\u0000\u076f\u0771"+ + "\u0001\u0000\u0000\u0000\u0770\u0772\u0003P(\u0000\u0771\u0770\u0001\u0000"+ + "\u0000\u0000\u0771\u0772\u0001\u0000\u0000\u0000\u0772\u077e\u0001\u0000"+ + "\u0000\u0000\u0773\u0774\u0005\u019d\u0000\u0000\u0774\u0775\u0005\u01b7"+ + "\u0000\u0000\u0775\u0778\u0005\u01ab\u0000\u0000\u0776\u0777\u0007\u0006"+ + "\u0000\u0000\u0777\u0779\u0003\u0146\u00a3\u0000\u0778\u0776\u0001\u0000"+ + "\u0000\u0000\u0778\u0779\u0001\u0000\u0000\u0000\u0779\u077b\u0001\u0000"+ + "\u0000\u0000\u077a\u077c\u0003P(\u0000\u077b\u077a\u0001\u0000\u0000\u0000"+ + "\u077b\u077c\u0001\u0000\u0000\u0000\u077c\u077e\u0001\u0000\u0000\u0000"+ + "\u077d\u0625\u0001\u0000\u0000\u0000\u077d\u062d\u0001\u0000\u0000\u0000"+ + "\u077d\u062f\u0001\u0000\u0000\u0000\u077d\u0633\u0001\u0000\u0000\u0000"+ + "\u077d\u0635\u0001\u0000\u0000\u0000\u077d\u063d\u0001\u0000\u0000\u0000"+ + "\u077d\u0646\u0001\u0000\u0000\u0000\u077d\u0649\u0001\u0000\u0000\u0000"+ + "\u077d\u064f\u0001\u0000\u0000\u0000\u077d\u0655\u0001\u0000\u0000\u0000"+ + "\u077d\u065a\u0001\u0000\u0000\u0000\u077d\u065e\u0001\u0000\u0000\u0000"+ + "\u077d\u0665\u0001\u0000\u0000\u0000\u077d\u066e\u0001\u0000\u0000\u0000"+ + "\u077d\u0673\u0001\u0000\u0000\u0000\u077d\u067b\u0001\u0000\u0000\u0000"+ + "\u077d\u067d\u0001\u0000\u0000\u0000\u077d\u067f\u0001\u0000\u0000\u0000"+ + "\u077d\u0689\u0001\u0000\u0000\u0000\u077d\u0690\u0001\u0000\u0000\u0000"+ + "\u077d\u0695\u0001\u0000\u0000\u0000\u077d\u0697\u0001\u0000\u0000\u0000"+ + "\u077d\u069a\u0001\u0000\u0000\u0000\u077d\u069c\u0001\u0000\u0000\u0000"+ + "\u077d\u069f\u0001\u0000\u0000\u0000\u077d\u06a5\u0001\u0000\u0000\u0000"+ + "\u077d\u06aa\u0001\u0000\u0000\u0000\u077d\u06ae\u0001\u0000\u0000\u0000"+ + "\u077d\u06b1\u0001\u0000\u0000\u0000\u077d\u06b6\u0001\u0000\u0000\u0000"+ + "\u077d\u06c0\u0001\u0000\u0000\u0000\u077d\u06c7\u0001\u0000\u0000\u0000"+ + "\u077d\u06cc\u0001\u0000\u0000\u0000\u077d\u06d6\u0001\u0000\u0000\u0000"+ + "\u077d\u06dc\u0001\u0000\u0000\u0000\u077d\u06e0\u0001\u0000\u0000\u0000"+ + "\u077d\u06e3\u0001\u0000\u0000\u0000\u077d\u06f2\u0001\u0000\u0000\u0000"+ + "\u077d\u06fa\u0001\u0000\u0000\u0000\u077d\u06ff\u0001\u0000\u0000\u0000"+ + "\u077d\u0705\u0001\u0000\u0000\u0000\u077d\u0707\u0001\u0000\u0000\u0000"+ + "\u077d\u0709\u0001\u0000\u0000\u0000\u077d\u070e\u0001\u0000\u0000\u0000"+ + "\u077d\u071a\u0001\u0000\u0000\u0000\u077d\u071e\u0001\u0000\u0000\u0000"+ + "\u077d\u0723\u0001\u0000\u0000\u0000\u077d\u0726\u0001\u0000\u0000\u0000"+ + "\u077d\u0729\u0001\u0000\u0000\u0000\u077d\u072f\u0001\u0000\u0000\u0000"+ + "\u077d\u0734\u0001\u0000\u0000\u0000\u077d\u0736\u0001\u0000\u0000\u0000"+ + "\u077d\u0741\u0001\u0000\u0000\u0000\u077d\u0746\u0001\u0000\u0000\u0000"+ + "\u077d\u0751\u0001\u0000\u0000\u0000\u077d\u0758\u0001\u0000\u0000\u0000"+ + "\u077d\u0761\u0001\u0000\u0000\u0000\u077d\u0767\u0001\u0000\u0000\u0000"+ + "\u077d\u0773\u0001\u0000\u0000\u0000\u077e\u0019\u0001\u0000\u0000\u0000"+ + "\u077f\u0782\u0005\u01b5\u0000\u0000\u0780\u0782\u0003&\u0013\u0000\u0781"+ + "\u077f\u0001\u0000\u0000\u0000\u0781\u0780\u0001\u0000\u0000\u0000\u0782"+ + "\u001b\u0001\u0000\u0000\u0000\u0783\u0784\u0005\u00cd\u0000\u0000\u0784"+ + "\u0785\u0003\u00b6[\u0000\u0785\u001d\u0001\u0000\u0000\u0000\u0786\u0787"+ + "\u0005\u00e0\u0000\u0000\u0787\u0788\u0005\u0154\u0000\u0000\u0788\u0789"+ + "\u0005\u00bb\u0000\u0000\u0789\u078b\u0003\u00b6[\u0000\u078a\u078c\u0003"+ + "\u013a\u009d\u0000\u078b\u078a\u0001\u0000\u0000\u0000\u078b\u078c\u0001"+ + "\u0000\u0000\u0000\u078c\u07ee\u0001\u0000\u0000\u0000\u078d\u078e\u0005"+ + "\u01d3\u0000\u0000\u078e\u078f\u0005\u0154\u0000\u0000\u078f\u07ee\u0003"+ + "\u00b6[\u0000\u0790\u0791\u0005\u010a\u0000\u0000\u0791\u079a\u0005\u01b8"+ + "\u0000\u0000\u0792\u0797\u0003\"\u0011\u0000\u0793\u0794\u0005\u0004\u0000"+ + "\u0000\u0794\u0796\u0003\"\u0011\u0000\u0795\u0793\u0001\u0000\u0000\u0000"+ + "\u0796\u0799\u0001\u0000\u0000\u0000\u0797\u0795\u0001\u0000\u0000\u0000"+ + "\u0797\u0798\u0001\u0000\u0000\u0000\u0798\u079b\u0001\u0000\u0000\u0000"+ + "\u0799\u0797\u0001\u0000\u0000\u0000\u079a\u0792\u0001\u0000\u0000\u0000"+ + "\u079a\u079b\u0001\u0000\u0000\u0000\u079b\u07ee\u0001\u0000\u0000\u0000"+ + "\u079c\u079d\u0005\u01d6\u0000\u0000\u079d\u07ee\u0005\u01b8\u0000\u0000"+ + "\u079e\u079f\u0005\u01eb\u0000\u0000\u079f\u07a3\u0005\u01d9\u0000\u0000"+ + "\u07a0\u07a4\u0005I\u0000\u0000\u07a1\u07a2\u0005W\u0000\u0000\u07a2\u07a4"+ + "\u0005\u00c7\u0000\u0000\u07a3\u07a0\u0001\u0000\u0000\u0000\u07a3\u07a1"+ + "\u0001\u0000\u0000\u0000\u07a4\u07a5\u0001\u0000\u0000\u0000\u07a5\u07a6"+ + "\u0003\u01c0\u00e0\u0000\u07a6\u07b5\u0005\u01f1\u0000\u0000\u07a7\u07ab"+ + "\u0005I\u0000\u0000\u07a8\u07a9\u0005W\u0000\u0000\u07a9\u07ab\u0005\u00c7"+ + "\u0000\u0000\u07aa\u07a7\u0001\u0000\u0000\u0000\u07aa\u07a8\u0001\u0000"+ + "\u0000\u0000\u07ab\u07ac\u0001\u0000\u0000\u0000\u07ac\u07b6\u0003\u01c0"+ + "\u00e0\u0000\u07ad\u07b2\u0003 \u0010\u0000\u07ae\u07af\u0005\u0018\u0000"+ + "\u0000\u07af\u07b1\u0003 \u0010\u0000\u07b0\u07ae\u0001\u0000\u0000\u0000"+ + "\u07b1\u07b4\u0001\u0000\u0000\u0000\u07b2\u07b0\u0001\u0000\u0000\u0000"+ + "\u07b2\u07b3\u0001\u0000\u0000\u0000\u07b3\u07b6\u0001\u0000\u0000\u0000"+ + "\u07b4\u07b2\u0001\u0000\u0000\u0000\u07b5\u07aa\u0001\u0000\u0000\u0000"+ + "\u07b5\u07ad\u0001\u0000\u0000\u0000\u07b6\u07b8\u0001\u0000\u0000\u0000"+ + "\u07b7\u07b9\u0005\u00b8\u0000\u0000\u07b8\u07b7\u0001\u0000\u0000\u0000"+ + "\u07b8\u07b9\u0001\u0000\u0000\u0000\u07b9\u07ee\u0001\u0000\u0000\u0000"+ + "\u07ba\u07bb\u0005%\u0000\u0000\u07bb\u07bc\u0005\u01a1\u0000\u0000\u07bc"+ + "\u07bd\u0003\u0146\u00a3\u0000\u07bd\u07be\u0005\u01c6\u0000\u0000\u07be"+ + "\u07cb\u0003\u01c0\u00e0\u0000\u07bf\u07c0\u0007\r\u0000\u0000\u07c0\u07c1"+ + "\u0005\u0002\u0000\u0000\u07c1\u07c6\u0003N\'\u0000\u07c2\u07c3\u0005"+ + "\u0004\u0000\u0000\u07c3\u07c5\u0003N\'\u0000\u07c4\u07c2\u0001\u0000"+ + "\u0000\u0000\u07c5\u07c8\u0001\u0000\u0000\u0000\u07c6\u07c4\u0001\u0000"+ + "\u0000\u0000\u07c6\u07c7\u0001\u0000\u0000\u0000\u07c7\u07c9\u0001\u0000"+ + "\u0000\u0000\u07c8\u07c6\u0001\u0000\u0000\u0000\u07c9\u07ca\u0005\u0003"+ + "\u0000\u0000\u07ca\u07cc\u0001\u0000\u0000\u0000\u07cb\u07bf\u0001\u0000"+ + "\u0000\u0000\u07cb\u07cc\u0001\u0000\u0000\u0000\u07cc\u07ce\u0001\u0000"+ + "\u0000\u0000\u07cd\u07cf\u0003\u013a\u009d\u0000\u07ce\u07cd\u0001\u0000"+ + "\u0000\u0000\u07ce\u07cf\u0001\u0000\u0000\u0000\u07cf\u07ee\u0001\u0000"+ + "\u0000\u0000\u07d0\u07d1\u0005\u017e\u0000\u0000\u07d1\u07d2\u0005\u01a1"+ + "\u0000\u0000\u07d2\u07d3\u0003\u0146\u00a3\u0000\u07d3\u07d4\u0005\u00bb"+ + "\u0000\u0000\u07d4\u07e1\u0003\u01c0\u00e0\u0000\u07d5\u07d6\u0007\r\u0000"+ + "\u0000\u07d6\u07d7\u0005\u0002\u0000\u0000\u07d7\u07dc\u0003N\'\u0000"+ + "\u07d8\u07d9\u0005\u0004\u0000\u0000\u07d9\u07db\u0003N\'\u0000\u07da"+ + "\u07d8\u0001\u0000\u0000\u0000\u07db\u07de\u0001\u0000\u0000\u0000\u07dc"+ + "\u07da\u0001\u0000\u0000\u0000\u07dc\u07dd\u0001\u0000\u0000\u0000\u07dd"+ + "\u07df\u0001\u0000\u0000\u0000\u07de\u07dc\u0001\u0000\u0000\u0000\u07df"+ + "\u07e0\u0005\u0003\u0000\u0000\u07e0\u07e2\u0001\u0000\u0000\u0000\u07e1"+ + "\u07d5\u0001\u0000\u0000\u0000\u07e1\u07e2\u0001\u0000\u0000\u0000\u07e2"+ + "\u07e4\u0001\u0000\u0000\u0000\u07e3\u07e5\u0003\u013a\u009d\u0000\u07e4"+ + "\u07e3\u0001\u0000\u0000\u0000\u07e4\u07e5\u0001\u0000\u0000\u0000\u07e5"+ + "\u07ee\u0001\u0000\u0000\u0000\u07e6\u07e7\u0005\u01a8\u0000\u0000\u07e7"+ + "\u07eb\u0005\u01c7\u0000\u0000\u07e8\u07e9\u0005\u01f1\u0000\u0000\u07e9"+ + "\u07ea\u0005\\\u0000\u0000\u07ea\u07ec\u0005\u01a1\u0000\u0000\u07eb\u07e8"+ + "\u0001\u0000\u0000\u0000\u07eb\u07ec\u0001\u0000\u0000\u0000\u07ec\u07ee"+ + "\u0001\u0000\u0000\u0000\u07ed\u0786\u0001\u0000\u0000\u0000\u07ed\u078d"+ + "\u0001\u0000\u0000\u0000\u07ed\u0790\u0001\u0000\u0000\u0000\u07ed\u079c"+ + "\u0001\u0000\u0000\u0000\u07ed\u079e\u0001\u0000\u0000\u0000\u07ed\u07ba"+ + "\u0001\u0000\u0000\u0000\u07ed\u07d0\u0001\u0000\u0000\u0000\u07ed\u07e6"+ + "\u0001\u0000\u0000\u0000\u07ee\u001f\u0001\u0000\u0000\u0000\u07ef\u07f0"+ + "\u0005\u01b7\u0000\u0000\u07f0\u07f3\u0003\u0146\u00a3\u0000\u07f1\u07f2"+ + "\u0005\u0141\u0000\u0000\u07f2\u07f4\u0003\u01c0\u00e0\u0000\u07f3\u07f1"+ + "\u0001\u0000\u0000\u0000\u07f3\u07f4\u0001\u0000\u0000\u0000\u07f4!\u0001"+ + "\u0000\u0000\u0000\u07f5\u07f8\u0003\u0146\u00a3\u0000\u07f6\u07f7\u0005"+ + "\u001c\u0000\u0000\u07f7\u07f9\u0003\u00b6[\u0000\u07f8\u07f6\u0001\u0000"+ + "\u0000\u0000\u07f8\u07f9\u0001\u0000\u0000\u0000\u07f9\u0802\u0001\u0000"+ + "\u0000\u0000\u07fa\u07fc\u0005\u0169\u0000\u0000\u07fb\u07fd\u0005\u0106"+ + "\u0000\u0000\u07fc\u07fb\u0001\u0000\u0000\u0000\u07fc\u07fd\u0001\u0000"+ + "\u0000\u0000\u07fd\u0803\u0001\u0000\u0000\u0000\u07fe\u0800\u0005\u010c"+ + "\u0000\u0000\u07ff\u07fe\u0001\u0000\u0000\u0000\u07ff\u0800\u0001\u0000"+ + "\u0000\u0000\u0800\u0801\u0001\u0000\u0000\u0000\u0801\u0803\u0005\u01f4"+ + "\u0000\u0000\u0802\u07fa\u0001\u0000\u0000\u0000\u0802\u07ff\u0001\u0000"+ + "\u0000\u0000\u0803#\u0001\u0000\u0000\u0000\u0804\u0805\u0005\u019d\u0000"+ + "\u0000\u0805\u0806\u0005\u018b\u0000\u0000\u0806\u080d\u0005\u0156\u0000"+ + "\u0000\u0807\u080b\u0005\u00b6\u0000\u0000\u0808\u080c\u0003\u00be_\u0000"+ + "\u0809\u080a\u0005\u0186\u0000\u0000\u080a\u080c\u0003\u01c0\u00e0\u0000"+ + "\u080b\u0808\u0001\u0000\u0000\u0000\u080b\u0809\u0001\u0000\u0000\u0000"+ + "\u080c\u080e\u0001\u0000\u0000\u0000\u080d\u0807\u0001\u0000\u0000\u0000"+ + "\u080d\u080e\u0001\u0000\u0000\u0000\u080e\u096a\u0001\u0000\u0000\u0000"+ + "\u080f\u0810\u0005\u019d\u0000\u0000\u0810\u0811\u0005\u01ad\u0000\u0000"+ + "\u0811\u096a\u0007\u000e\u0000\u0000\u0812\u0813\u0005\u019d\u0000\u0000"+ + "\u0813\u0814\u0005\u0137\u0000\u0000\u0814\u0817\u0005\u01b8\u0000\u0000"+ + "\u0815\u0816\u0007\u0006\u0000\u0000\u0816\u0818\u0003\u0146\u00a3\u0000"+ + "\u0817\u0815\u0001\u0000\u0000\u0000\u0817\u0818\u0001\u0000\u0000\u0000"+ + "\u0818\u081a\u0001\u0000\u0000\u0000\u0819\u081b\u0003P(\u0000\u081a\u0819"+ + "\u0001\u0000\u0000\u0000\u081a\u081b\u0001\u0000\u0000\u0000\u081b\u096a"+ + "\u0001\u0000\u0000\u0000\u081c\u081e\u0005\u019d\u0000\u0000\u081d\u081f"+ + "\u0005\u00be\u0000\u0000\u081e\u081d\u0001\u0000\u0000\u0000\u081e\u081f"+ + "\u0001\u0000\u0000\u0000\u081f\u0820\u0001\u0000\u0000\u0000\u0820\u0823"+ + "\u0005\u01ea\u0000\u0000\u0821\u0822\u0007\u0006\u0000\u0000\u0822\u0824"+ + "\u0003\u0146\u00a3\u0000\u0823\u0821\u0001\u0000\u0000\u0000\u0823\u0824"+ + "\u0001\u0000\u0000\u0000\u0824\u0826\u0001\u0000\u0000\u0000\u0825\u0827"+ + "\u0003P(\u0000\u0826\u0825\u0001\u0000\u0000\u0000\u0826\u0827\u0001\u0000"+ + "\u0000\u0000\u0827\u096a\u0001\u0000\u0000\u0000\u0828\u0829\u0005\u019d"+ + "\u0000\u0000\u0829\u082a\u0005c\u0000\u0000\u082a\u082b\u0005\u0118\u0000"+ + "\u0000\u082b\u082c\u0005\u01e9\u0000\u0000\u082c\u096a\u0003\u0146\u00a3"+ + "\u0000\u082d\u082e\u0005\u019d\u0000\u0000\u082e\u0830\u0005c\u0000\u0000"+ + "\u082f\u0831\u0003\u00aaU\u0000\u0830\u082f\u0001\u0000\u0000\u0000\u0830"+ + "\u0831\u0001\u0000\u0000\u0000\u0831\u0832\u0001\u0000\u0000\u0000\u0832"+ + "\u0833\u0005\u00bf\u0000\u0000\u0833\u0834\u0003\u0188\u00c4\u0000\u0834"+ + "\u0836\u0005\u0002\u0000\u0000\u0835\u0837\u0003\u0080@\u0000\u0836\u0835"+ + "\u0001\u0000\u0000\u0000\u0836\u0837\u0001\u0000\u0000\u0000\u0837\u0838"+ + "\u0001\u0000\u0000\u0000\u0838\u083b\u0005\u0003\u0000\u0000\u0839\u083a"+ + "\u0007\u0006\u0000\u0000\u083a\u083c\u0003\u0146\u00a3\u0000\u083b\u0839"+ + "\u0001\u0000\u0000\u0000\u083b\u083c\u0001\u0000\u0000\u0000\u083c\u096a"+ + "\u0001\u0000\u0000\u0000\u083d\u083e\u0005\u019d\u0000\u0000\u083e\u0841"+ + "\u0007\u000f\u0000\u0000\u083f\u0840\u0005\u00bb\u0000\u0000\u0840\u0842"+ + "\u0003\u01c0\u00e0\u0000\u0841\u083f\u0001\u0000\u0000\u0000\u0841\u0842"+ + "\u0001\u0000\u0000\u0000\u0842\u0844\u0001\u0000\u0000\u0000\u0843\u0845"+ + "\u0003P(\u0000\u0844\u0843\u0001\u0000\u0000\u0000\u0844\u0845\u0001\u0000"+ + "\u0000\u0000\u0845\u096a\u0001\u0000\u0000\u0000\u0846\u0848\u0005\u019d"+ + "\u0000\u0000\u0847\u0849\u0005\u00be\u0000\u0000\u0848\u0847\u0001\u0000"+ + "\u0000\u0000\u0848\u0849\u0001\u0000\u0000\u0000\u0849\u084a\u0001\u0000"+ + "\u0000\u0000\u084a\u084b\u0007\u0010\u0000\u0000\u084b\u084c\u0007\u0006"+ + "\u0000\u0000\u084c\u084f\u0003\u0146\u00a3\u0000\u084d\u084e\u0007\u0006"+ + "\u0000\u0000\u084e\u0850\u0003\u0146\u00a3\u0000\u084f\u084d\u0001\u0000"+ + "\u0000\u0000\u084f\u0850\u0001\u0000\u0000\u0000\u0850\u0852\u0001\u0000"+ + "\u0000\u0000\u0851\u0853\u0003P(\u0000\u0852\u0851\u0001\u0000\u0000\u0000"+ + "\u0852\u0853\u0001\u0000\u0000\u0000\u0853\u096a\u0001\u0000\u0000\u0000"+ + "\u0854\u0855\u0005\u019d\u0000\u0000\u0855\u0856\u0005\u0105\u0000\u0000"+ + "\u0856\u0863\u0005\u01ec\u0000\u0000\u0857\u0858\u0007\u0006\u0000\u0000"+ + "\u0858\u085a\u0003\u0146\u00a3\u0000\u0859\u0857\u0001\u0000\u0000\u0000"+ + "\u0859\u085a\u0001\u0000\u0000\u0000\u085a\u085c\u0001\u0000\u0000\u0000"+ + "\u085b\u085d\u0003P(\u0000\u085c\u085b\u0001\u0000\u0000\u0000\u085c\u085d"+ + "\u0001\u0000\u0000\u0000\u085d\u085f\u0001\u0000\u0000\u0000\u085e\u0860"+ + "\u0003\u0128\u0094\u0000\u085f\u085e\u0001\u0000\u0000\u0000\u085f\u0860"+ + "\u0001\u0000\u0000\u0000\u0860\u0864\u0001\u0000\u0000\u0000\u0861\u0862"+ + "\u0005\u0135\u0000\u0000\u0862\u0864\u0005\u0211\u0000\u0000\u0863\u0859"+ + "\u0001\u0000\u0000\u0000\u0863\u0861\u0001\u0000\u0000\u0000\u0864\u096a"+ + "\u0001\u0000\u0000\u0000\u0865\u0867\u0005\u019d\u0000\u0000\u0866\u0868"+ + "\u0005\u01ae\u0000\u0000\u0867\u0866\u0001\u0000\u0000\u0000\u0867\u0868"+ + "\u0001\u0000\u0000\u0000\u0868\u0869\u0001\u0000\u0000\u0000\u0869\u086c"+ + "\u0005\u0105\u0000\u0000\u086a\u086b\u0007\u0006\u0000\u0000\u086b\u086d"+ + "\u0003\u0146\u00a3\u0000\u086c\u086a\u0001\u0000\u0000\u0000\u086c\u086d"+ + "\u0001\u0000\u0000\u0000\u086d\u086f\u0001\u0000\u0000\u0000\u086e\u0870"+ + "\u0003P(\u0000\u086f\u086e\u0001\u0000\u0000\u0000\u086f\u0870\u0001\u0000"+ + "\u0000\u0000\u0870\u0872\u0001\u0000\u0000\u0000\u0871\u0873\u0003\u0124"+ + "\u0092\u0000\u0872\u0871\u0001\u0000\u0000\u0000\u0872\u0873\u0001\u0000"+ + "\u0000\u0000\u0873\u0875\u0001\u0000\u0000\u0000\u0874\u0876\u0003\u0128"+ + "\u0094\u0000\u0875\u0874\u0001\u0000\u0000\u0000\u0875\u0876\u0001\u0000"+ + "\u0000\u0000\u0876\u096a\u0001\u0000\u0000\u0000\u0877\u0878\u0005\u019d"+ + "\u0000\u0000\u0878\u087b\u0005\u00a7\u0000\u0000\u0879\u087a\u0007\u0006"+ + "\u0000\u0000\u087a\u087c\u0003\u0146\u00a3\u0000\u087b\u0879\u0001\u0000"+ + "\u0000\u0000\u087b\u087c\u0001\u0000\u0000\u0000\u087c\u087e\u0001\u0000"+ + "\u0000\u0000\u087d\u087f\u0003P(\u0000\u087e\u087d\u0001\u0000\u0000\u0000"+ + "\u087e\u087f\u0001\u0000\u0000\u0000\u087f\u0881\u0001\u0000\u0000\u0000"+ + "\u0880\u0882\u0003\u0124\u0092\u0000\u0881\u0880\u0001\u0000\u0000\u0000"+ + "\u0881\u0882\u0001\u0000\u0000\u0000\u0882\u0884\u0001\u0000\u0000\u0000"+ + "\u0883\u0885\u0003\u0128\u0094\u0000\u0884\u0883\u0001\u0000\u0000\u0000"+ + "\u0884\u0885\u0001\u0000\u0000\u0000\u0885\u096a\u0001\u0000\u0000\u0000"+ + "\u0886\u0887\u0005\u019d\u0000\u0000\u0887\u0888\u0005\u0015\u0000\u0000"+ + "\u0888\u088d\u0005\u01b7\u0000\u0000\u0889\u088e\u0005\u0189\u0000\u0000"+ + "\u088a\u088b\u0005\u0118\u0000\u0000\u088b\u088e\u0005\u01e9\u0000\u0000"+ + "\u088c\u088e\u0005O\u0000\u0000\u088d\u0889\u0001\u0000\u0000\u0000\u088d"+ + "\u088a\u0001\u0000\u0000\u0000\u088d\u088c\u0001\u0000\u0000\u0000\u088e"+ + "\u0891\u0001\u0000\u0000\u0000\u088f\u0890\u0007\u0006\u0000\u0000\u0890"+ + "\u0892\u0003\u0146\u00a3\u0000\u0891\u088f\u0001\u0000\u0000\u0000\u0891"+ + "\u0892\u0001\u0000\u0000\u0000\u0892\u0894\u0001\u0000\u0000\u0000\u0893"+ + "\u0895\u0003P(\u0000\u0894\u0893\u0001\u0000\u0000\u0000\u0894\u0895\u0001"+ + "\u0000\u0000\u0000\u0895\u0897\u0001\u0000\u0000\u0000\u0896\u0898\u0003"+ + "\u0124\u0092\u0000\u0897\u0896\u0001\u0000\u0000\u0000\u0897\u0898\u0001"+ + "\u0000\u0000\u0000\u0898\u089a\u0001\u0000\u0000\u0000\u0899\u089b\u0003"+ + "\u0128\u0094\u0000\u089a\u0899\u0001\u0000\u0000\u0000\u089a\u089b\u0001"+ + "\u0000\u0000\u0000\u089b\u096a\u0001\u0000\u0000\u0000\u089c\u089e\u0005"+ + "\u019d\u0000\u0000\u089d\u089f\u0005\u01be\u0000\u0000\u089e\u089d\u0001"+ + "\u0000\u0000\u0000\u089e\u089f\u0001\u0000\u0000\u0000\u089f\u08a0\u0001"+ + "\u0000\u0000\u0000\u08a0\u08a1\u0005\u0142\u0000\u0000\u08a1\u08a2\u0005"+ + "\u00bb\u0000\u0000\u08a2\u08a4\u0003\u0146\u00a3\u0000\u08a3\u08a5\u0003"+ + "P(\u0000\u08a4\u08a3\u0001\u0000\u0000\u0000\u08a4\u08a5\u0001\u0000\u0000"+ + "\u0000\u08a5\u08a7\u0001\u0000\u0000\u0000\u08a6\u08a8\u0003\u0124\u0092"+ + "\u0000\u08a7\u08a6\u0001\u0000\u0000\u0000\u08a7\u08a8\u0001\u0000\u0000"+ + "\u0000\u08a8\u08aa\u0001\u0000\u0000\u0000\u08a9\u08ab\u0003\u0128\u0094"+ + "\u0000\u08aa\u08a9\u0001\u0000\u0000\u0000\u08aa\u08ab\u0001\u0000\u0000"+ + "\u0000\u08ab\u096a\u0001\u0000\u0000\u0000\u08ac\u08ad\u0005\u019d\u0000"+ + "\u0000\u08ad\u08ae\u0005\u01ba\u0000\u0000\u08ae\u096a\u0005\u0216\u0000"+ + "\u0000\u08af\u08b0\u0005\u019d\u0000\u0000\u08b0\u08b1\u0005\u01bb\u0000"+ + "\u0000\u08b1\u08b2\u0005\u00bb\u0000\u0000\u08b2\u08b4\u0003\u0146\u00a3"+ + "\u0000\u08b3\u08b5\u0003\u00a0P\u0000\u08b4\u08b3\u0001\u0000\u0000\u0000"+ + "\u08b4\u08b5\u0001\u0000\u0000\u0000\u08b5\u08b7\u0001\u0000\u0000\u0000"+ + "\u08b6\u08b8\u0003P(\u0000\u08b7\u08b6\u0001\u0000\u0000\u0000\u08b7\u08b8"+ + "\u0001\u0000\u0000\u0000\u08b8\u08ba\u0001\u0000\u0000\u0000\u08b9\u08bb"+ + "\u0003\u0124\u0092\u0000\u08ba\u08b9\u0001\u0000\u0000\u0000\u08ba\u08bb"+ + "\u0001\u0000\u0000\u0000\u08bb\u08bd\u0001\u0000\u0000\u0000\u08bc\u08be"+ + "\u0003\u0128\u0094\u0000\u08bd\u08bc\u0001\u0000\u0000\u0000\u08bd\u08be"+ + "\u0001\u0000\u0000\u0000\u08be\u096a\u0001\u0000\u0000\u0000\u08bf\u08c0"+ + "\u0005\u019d\u0000\u0000\u08c0\u08c3\u0005%\u0000\u0000\u08c1\u08c2\u0007"+ + "\u0006\u0000\u0000\u08c2\u08c4\u0003\u0146\u00a3\u0000\u08c3\u08c1\u0001"+ + "\u0000\u0000\u0000\u08c3\u08c4\u0001\u0000\u0000\u0000\u08c4\u08c6\u0001"+ + "\u0000\u0000\u0000\u08c5\u08c7\u0003P(\u0000\u08c6\u08c5\u0001\u0000\u0000"+ + "\u0000\u08c6\u08c7\u0001\u0000\u0000\u0000\u08c7\u096a\u0001\u0000\u0000"+ + "\u0000\u08c8\u08ca\u0005\u019d\u0000\u0000\u08c9\u08cb\u00055\u0000\u0000"+ + "\u08ca\u08c9\u0001\u0000\u0000\u0000\u08ca\u08cb\u0001\u0000\u0000\u0000"+ + "\u08cb\u08cc\u0001\u0000\u0000\u0000\u08cc\u08cf\u0005\u017e\u0000\u0000"+ + "\u08cd\u08ce\u0007\u0006\u0000\u0000\u08ce\u08d0\u0003\u0146\u00a3\u0000"+ + "\u08cf\u08cd\u0001\u0000\u0000\u0000\u08cf\u08d0\u0001\u0000\u0000\u0000"+ + "\u08d0\u08d2\u0001\u0000\u0000\u0000\u08d1\u08d3\u0003P(\u0000\u08d2\u08d1"+ + "\u0001\u0000\u0000\u0000\u08d2\u08d3\u0001\u0000\u0000\u0000\u08d3\u096a"+ + "\u0001\u0000\u0000\u0000\u08d4\u08d5\u0005\u019d\u0000\u0000\u08d5\u08d7"+ + "\u0005\u017d\u0000\u0000\u08d6\u08d8\u0003P(\u0000\u08d7\u08d6\u0001\u0000"+ + "\u0000\u0000\u08d7\u08d8\u0001\u0000\u0000\u0000\u08d8\u08da\u0001\u0000"+ + "\u0000\u0000\u08d9\u08db\u0003\u0124\u0092\u0000\u08da\u08d9\u0001\u0000"+ + "\u0000\u0000\u08da\u08db\u0001\u0000\u0000\u0000\u08db\u08dd\u0001\u0000"+ + "\u0000\u0000\u08dc\u08de\u0003\u0128\u0094\u0000\u08dd\u08dc\u0001\u0000"+ + "\u0000\u0000\u08dd\u08de\u0001\u0000\u0000\u0000\u08de\u096a\u0001\u0000"+ + "\u0000\u0000\u08df\u08e0\u0005\u019d\u0000\u0000\u08e0\u08e1\u0005\u01f3"+ + "\u0000\u0000\u08e1\u08e3\u0005\u00c9\u0000\u0000\u08e2\u08e4\u0003P(\u0000"+ + "\u08e3\u08e2\u0001\u0000\u0000\u0000\u08e3\u08e4\u0001\u0000\u0000\u0000"+ + "\u08e4\u096a\u0001\u0000\u0000\u0000\u08e5\u08e6\u0005\u019d\u0000\u0000"+ + "\u08e6\u08e7\u0005\u01a1\u0000\u0000\u08e7\u08e8\u0005\u0135\u0000\u0000"+ + "\u08e8\u08ea\u0003\u01c0\u00e0\u0000\u08e9\u08eb\u0003P(\u0000\u08ea\u08e9"+ + "\u0001\u0000\u0000\u0000\u08ea\u08eb\u0001\u0000\u0000\u0000\u08eb\u096a"+ + "\u0001\u0000\u0000\u0000\u08ec\u08ee\u0005\u019d\u0000\u0000\u08ed\u08ef"+ + "\u0005\u00be\u0000\u0000\u08ee\u08ed\u0001\u0000\u0000\u0000\u08ee\u08ef"+ + "\u0001\u0000\u0000\u0000\u08ef\u08f1\u0001\u0000\u0000\u0000\u08f0\u08f2"+ + "\u00059\u0000\u0000\u08f1\u08f0\u0001\u0000\u0000\u0000\u08f1\u08f2\u0001"+ + "\u0000\u0000\u0000\u08f2\u08f3\u0001\u0000\u0000\u0000\u08f3\u08f6\u0005"+ + "\u00c0\u0000\u0000\u08f4\u08f5\u0007\u0006\u0000\u0000\u08f5\u08f7\u0003"+ + "\u0146\u00a3\u0000\u08f6\u08f4\u0001\u0000\u0000\u0000\u08f6\u08f7\u0001"+ + "\u0000\u0000\u0000\u08f7\u08f9\u0001\u0000\u0000\u0000\u08f8\u08fa\u0003"+ + "P(\u0000\u08f9\u08f8\u0001\u0000\u0000\u0000\u08f9\u08fa\u0001\u0000\u0000"+ + "\u0000\u08fa\u096a\u0001\u0000\u0000\u0000\u08fb\u08fc\u0005\u019d\u0000"+ + "\u0000\u08fc\u08fe\u0005\u00c3\u0000\u0000\u08fd\u08ff\u0005\u00be\u0000"+ + "\u0000\u08fe\u08fd\u0001\u0000\u0000\u0000\u08fe\u08ff\u0001\u0000\u0000"+ + "\u0000\u08ff\u0900\u0001\u0000\u0000\u0000\u0900\u0902\u0005\u00c0\u0000"+ + "\u0000\u0901\u0903\u0003P(\u0000\u0902\u0901\u0001\u0000\u0000\u0000\u0902"+ + "\u0903\u0001\u0000\u0000\u0000\u0903\u096a\u0001\u0000\u0000\u0000\u0904"+ + "\u0905\u0005\u019d\u0000\u0000\u0905\u0908\u0005\u01cf\u0000\u0000\u0906"+ + "\u0907\u0007\u0006\u0000\u0000\u0907\u0909\u0003\u0146\u00a3\u0000\u0908"+ + "\u0906\u0001\u0000\u0000\u0000\u0908\u0909\u0001\u0000\u0000\u0000\u0909"+ + "\u096a\u0001\u0000\u0000\u0000\u090a\u090b\u0005\u019d\u0000\u0000\u090b"+ + "\u090c\u0007\u0011\u0000\u0000\u090c\u090d\u0007\u0006\u0000\u0000\u090d"+ + "\u0910\u0003\u0146\u00a3\u0000\u090e\u090f\u0007\u0006\u0000\u0000\u090f"+ + "\u0911\u0003\u0146\u00a3\u0000\u0910\u090e\u0001\u0000\u0000\u0000\u0910"+ + "\u0911\u0001\u0000\u0000\u0000\u0911\u096a\u0001\u0000\u0000\u0000\u0912"+ + "\u0913\u0005\u019d\u0000\u0000\u0913\u0916\u0005\u01c7\u0000\u0000\u0914"+ + "\u0915\u0007\u0006\u0000\u0000\u0915\u0917\u0003\u0146\u00a3\u0000\u0916"+ + "\u0914\u0001\u0000\u0000\u0000\u0916\u0917\u0001\u0000\u0000\u0000\u0917"+ + "\u0919\u0001\u0000\u0000\u0000\u0918\u091a\u0003P(\u0000\u0919\u0918\u0001"+ + "\u0000\u0000\u0000\u0919\u091a\u0001\u0000\u0000\u0000\u091a\u096a\u0001"+ + "\u0000\u0000\u0000\u091b\u091c\u0005\u019d\u0000\u0000\u091c\u091d\u0005"+ + "<\u0000\u0000\u091d\u091e\u0005\u00d2\u0000\u0000\u091e\u096a\u0005\u0211"+ + "\u0000\u0000\u091f\u0920\u0005\u019d\u0000\u0000\u0920\u0921\u0005B\u0000"+ + "\u0000\u0921\u0922\u0005\u016e\u0000\u0000\u0922\u0924\u0005*\u0000\u0000"+ + "\u0923\u0925\u0003P(\u0000\u0924\u0923\u0001\u0000\u0000\u0000\u0924\u0925"+ + "\u0001\u0000\u0000\u0000\u0925\u096a\u0001\u0000\u0000\u0000\u0926\u0927"+ + "\u0005\u019d\u0000\u0000\u0927\u0928\u0005\u0162\u0000\u0000\u0928\u0933"+ + "\u0005\u01aa\u0000\u0000\u0929\u092a\u0005\u00b6\u0000\u0000\u092a\u0934"+ + "\u0003\u01c0\u00e0\u0000\u092b\u092c\u0005\u00bb\u0000\u0000\u092c\u0931"+ + "\u0003\u0146\u00a3\u0000\u092d\u092f\u0005\u0014\u0000\u0000\u092e\u0930"+ + "\u0005\u01e7\u0000\u0000\u092f\u092e\u0001\u0000\u0000\u0000\u092f\u0930"+ + "\u0001\u0000\u0000\u0000\u0930\u0932\u0001\u0000\u0000\u0000\u0931\u092d"+ + "\u0001\u0000\u0000\u0000\u0931\u0932\u0001\u0000\u0000\u0000\u0932\u0934"+ + "\u0001\u0000\u0000\u0000\u0933\u0929\u0001\u0000\u0000\u0000\u0933\u092b"+ + "\u0001\u0000\u0000\u0000\u0933\u0934\u0001\u0000\u0000\u0000\u0934\u096a"+ + "\u0001\u0000\u0000\u0000\u0935\u0936\u0005\u019d\u0000\u0000\u0936\u0937"+ + "\u00058\u0000\u0000\u0937\u093a\u0005\u00db\u0000\u0000\u0938\u0939\u0007"+ + "\u0006\u0000\u0000\u0939\u093b\u0003\u0146\u00a3\u0000\u093a\u0938\u0001"+ + "\u0000\u0000\u0000\u093a\u093b\u0001\u0000\u0000\u0000\u093b\u093d\u0001"+ + "\u0000\u0000\u0000\u093c\u093e\u0003P(\u0000\u093d\u093c\u0001\u0000\u0000"+ + "\u0000\u093d\u093e\u0001\u0000\u0000\u0000\u093e\u0940\u0001\u0000\u0000"+ + "\u0000\u093f\u0941\u0003\u0124\u0092\u0000\u0940\u093f\u0001\u0000\u0000"+ + "\u0000\u0940\u0941\u0001\u0000\u0000\u0000\u0941\u0943\u0001\u0000\u0000"+ + "\u0000\u0942\u0944\u0003\u0128\u0094\u0000\u0943\u0942\u0001\u0000\u0000"+ + "\u0000\u0943\u0944\u0001\u0000\u0000\u0000\u0944\u096a\u0001\u0000\u0000"+ + "\u0000\u0945\u0949\u0005\u019d\u0000\u0000\u0946\u094a\u0005J\u0000\u0000"+ + "\u0947\u0948\u0005W\u0000\u0000\u0948\u094a\u0005\u00c9\u0000\u0000\u0949"+ + "\u0946\u0001\u0000\u0000\u0000\u0949\u0947\u0001\u0000\u0000\u0000\u094a"+ + "\u096a\u0001\u0000\u0000\u0000\u094b\u094c\u0005\u019d\u0000\u0000\u094c"+ + "\u094d\u0005\u0179\u0000\u0000\u094d\u094e\u0005\u01ab\u0000\u0000\u094e"+ + "\u094f\u0005\u00bb\u0000\u0000\u094f\u0951\u0003N\'\u0000\u0950\u0952"+ + "\u0003P(\u0000\u0951\u0950\u0001\u0000\u0000\u0000\u0951\u0952\u0001\u0000"+ + "\u0000\u0000\u0952\u096a\u0001\u0000\u0000\u0000\u0953\u0954\u0005\u019d"+ + "\u0000\u0000\u0954\u0957\u0005a\u0000\u0000\u0955\u0956\u0007\u0006\u0000"+ + "\u0000\u0956\u0958\u0003\u0146\u00a3\u0000\u0957\u0955\u0001\u0000\u0000"+ + "\u0000\u0957\u0958\u0001\u0000\u0000\u0000\u0958\u095a\u0001\u0000\u0000"+ + "\u0000\u0959\u095b\u0003\u00f8|\u0000\u095a\u0959\u0001\u0000\u0000\u0000"+ + "\u095a\u095b\u0001\u0000\u0000\u0000\u095b\u095d\u0001\u0000\u0000\u0000"+ + "\u095c\u095e\u0003\u0124\u0092\u0000\u095d\u095c\u0001\u0000\u0000\u0000"+ + "\u095d\u095e\u0001\u0000\u0000\u0000\u095e\u0960\u0001\u0000\u0000\u0000"+ + "\u095f\u0961\u0003\u0128\u0094\u0000\u0960\u095f\u0001\u0000\u0000\u0000"+ + "\u0960\u0961\u0001\u0000\u0000\u0000\u0961\u096a\u0001\u0000\u0000\u0000"+ + "\u0962\u0963\u0005\u019d\u0000\u0000\u0963\u0964\u0005\u01eb\u0000\u0000"+ + "\u0964\u0965\u0005\u01d9\u0000\u0000\u0965\u0967\u0005\u00ef\u0000\u0000"+ + "\u0966\u0968\u0003P(\u0000\u0967\u0966\u0001\u0000\u0000\u0000\u0967\u0968"+ + "\u0001\u0000\u0000\u0000\u0968\u096a\u0001\u0000\u0000\u0000\u0969\u0804"+ + "\u0001\u0000\u0000\u0000\u0969\u080f\u0001\u0000\u0000\u0000\u0969\u0812"+ + "\u0001\u0000\u0000\u0000\u0969\u081c\u0001\u0000\u0000\u0000\u0969\u0828"+ + "\u0001\u0000\u0000\u0000\u0969\u082d\u0001\u0000\u0000\u0000\u0969\u083d"+ + "\u0001\u0000\u0000\u0000\u0969\u0846\u0001\u0000\u0000\u0000\u0969\u0854"+ + "\u0001\u0000\u0000\u0000\u0969\u0865\u0001\u0000\u0000\u0000\u0969\u0877"+ + "\u0001\u0000\u0000\u0000\u0969\u0886\u0001\u0000\u0000\u0000\u0969\u089c"+ + "\u0001\u0000\u0000\u0000\u0969\u08ac\u0001\u0000\u0000\u0000\u0969\u08af"+ + "\u0001\u0000\u0000\u0000\u0969\u08bf\u0001\u0000\u0000\u0000\u0969\u08c8"+ + "\u0001\u0000\u0000\u0000\u0969\u08d4\u0001\u0000\u0000\u0000\u0969\u08df"+ + "\u0001\u0000\u0000\u0000\u0969\u08e5\u0001\u0000\u0000\u0000\u0969\u08ec"+ + "\u0001\u0000\u0000\u0000\u0969\u08fb\u0001\u0000\u0000\u0000\u0969\u0904"+ + "\u0001\u0000\u0000\u0000\u0969\u090a\u0001\u0000\u0000\u0000\u0969\u0912"+ + "\u0001\u0000\u0000\u0000\u0969\u091b\u0001\u0000\u0000\u0000\u0969\u091f"+ + "\u0001\u0000\u0000\u0000\u0969\u0926\u0001\u0000\u0000\u0000\u0969\u0935"+ + "\u0001\u0000\u0000\u0000\u0969\u0945\u0001\u0000\u0000\u0000\u0969\u094b"+ + "\u0001\u0000\u0000\u0000\u0969\u0953\u0001\u0000\u0000\u0000\u0969\u0962"+ + "\u0001\u0000\u0000\u0000\u096a%\u0001\u0000\u0000\u0000\u096b\u096c\u0005"+ + "c\u0000\u0000\u096c\u096d\u0005\u018a\u0000\u0000\u096d\u096e\u0005\u0105"+ + "\u0000\u0000\u096e\u0971\u0003\u0146\u00a3\u0000\u096f\u0970\u0005\u0135"+ + "\u0000\u0000\u0970\u0972\u0003\u01c0\u00e0\u0000\u0971\u096f\u0001\u0000"+ + "\u0000\u0000\u0971\u0972\u0001\u0000\u0000\u0000\u0972\u0975\u0001\u0000"+ + "\u0000\u0000\u0973\u0974\u0005\u01f1\u0000\u0000\u0974\u0976\u0007\u0012"+ + "\u0000\u0000\u0975\u0973\u0001\u0000\u0000\u0000\u0975\u0976\u0001\u0000"+ + "\u0000\u0000\u0976\u097f\u0001\u0000\u0000\u0000\u0977\u097c\u0003*\u0015"+ + "\u0000\u0978\u0979\u0005\u0004\u0000\u0000\u0979\u097b\u0003*\u0015\u0000"+ + "\u097a\u0978\u0001\u0000\u0000\u0000\u097b\u097e\u0001\u0000\u0000\u0000"+ + "\u097c\u097a\u0001\u0000\u0000\u0000\u097c\u097d\u0001\u0000\u0000\u0000"+ + "\u097d\u0980\u0001\u0000\u0000\u0000\u097e\u097c\u0001\u0000\u0000\u0000"+ + "\u097f\u0977\u0001\u0000\u0000\u0000\u097f\u0980\u0001\u0000\u0000\u0000"+ + "\u0980\u0982\u0001\u0000\u0000\u0000\u0981\u0983\u0003\u013a\u009d\u0000"+ + "\u0982\u0981\u0001\u0000\u0000\u0000\u0982\u0983\u0001\u0000\u0000\u0000"+ + "\u0983\u0984\u0001\u0000\u0000\u0000\u0984\u0985\u0005\u00bb\u0000\u0000"+ + "\u0985\u0986\u0003\u01c0\u00e0\u0000\u0986\u0987\u0005\u0002\u0000\u0000"+ + "\u0987\u0988\u0003\u013c\u009e\u0000\u0988\u098a\u0005\u0003\u0000\u0000"+ + "\u0989\u098b\u0003\u01b4\u00da\u0000\u098a\u0989\u0001\u0000\u0000\u0000"+ + "\u098a\u098b\u0001\u0000\u0000\u0000\u098b\'\u0001\u0000\u0000\u0000\u098c"+ + "\u098d\u0005\u0105\u0000\u0000\u098d\u0993\u0003\u00deo\u0000\u098e\u098f"+ + "\u0005\u015e\u0000\u0000\u098f\u0990\u0005\u0002\u0000\u0000\u0990\u0991"+ + "\u0003\u013c\u009e\u0000\u0991\u0992\u0005\u0003\u0000\u0000\u0992\u0994"+ + "\u0001\u0000\u0000\u0000\u0993\u098e\u0001\u0000\u0000\u0000\u0993\u0994"+ + "\u0001\u0000\u0000\u0000\u0994\u0996\u0001\u0000\u0000\u0000\u0995\u0997"+ + "\u0003\u01b4\u00da\u0000\u0996\u0995\u0001\u0000\u0000\u0000\u0996\u0997"+ + "\u0001\u0000\u0000\u0000\u0997\u09f0\u0001\u0000\u0000\u0000\u0998\u0999"+ + "\u0005c\u0000\u0000\u0999\u099a\u0005\u01b5\u0000\u0000\u099a\u099b\u0003"+ + "\u0146\u00a3\u0000\u099b\u099c\u0005\u0002\u0000\u0000\u099c\u099d\u0003"+ + "8\u001c\u0000\u099d\u099e\u0005\u0003\u0000\u0000\u099e\u099f\u0005\u00bb"+ + "\u0000\u0000\u099f\u09a0\u0005,\u0000\u0000\u09a0\u09a1\u0005\u0002\u0000"+ + "\u0000\u09a1\u09a2\u0003\u013c\u009e\u0000\u09a2\u09a4\u0005\u0003\u0000"+ + "\u0000\u09a3\u09a5\u0003\u013a\u009d\u0000\u09a4\u09a3\u0001\u0000\u0000"+ + "\u0000\u09a4\u09a5\u0001\u0000\u0000\u0000\u09a5\u09f0\u0001\u0000\u0000"+ + "\u0000\u09a6\u09a7\u0005\u01ac\u0000\u0000\u09a7\u09a8\u0005\u01b5\u0000"+ + "\u0000\u09a8\u09a9\u0005\u00ef\u0000\u0000\u09a9\u09f0\u0003\u0146\u00a3"+ + "\u0000\u09aa\u09ab\u0005\u0180\u0000\u0000\u09ab\u09ac\u0005\u01b5\u0000"+ + "\u0000\u09ac\u09ad\u0005\u00ef\u0000\u0000\u09ad\u09f0\u0003\u0146\u00a3"+ + "\u0000\u09ae\u09af\u0005\u0149\u0000\u0000\u09af\u09b0\u0005\u01b5\u0000"+ + "\u0000\u09b0\u09b1\u0005\u00ef\u0000\u0000\u09b1\u09f0\u0003\u0146\u00a3"+ + "\u0000\u09b2\u09b3\u0005\u0149\u0000\u0000\u09b3\u09b4\u0005\u018a\u0000"+ + "\u0000\u09b4\u09b5\u0005\u0105\u0000\u0000\u09b5\u09b6\u0005\u00b6\u0000"+ + "\u0000\u09b6\u09f0\u0003\u0146\u00a3\u0000\u09b7\u09b8\u0005\u0149\u0000"+ + "\u0000\u09b8\u09b9\u0005\u0014\u0000\u0000\u09b9\u09ba\u0005\u018a\u0000"+ + "\u0000\u09ba\u09f0\u0005\u0105\u0000\u0000\u09bb\u09bc\u0005\u0180\u0000"+ + "\u0000\u09bc\u09bd\u0005\u018a\u0000\u0000\u09bd\u09be\u0005\u0105\u0000"+ + "\u0000\u09be\u09bf\u0005\u00b6\u0000\u0000\u09bf\u09f0\u0003\u0146\u00a3"+ + "\u0000\u09c0\u09c1\u0005\u0180\u0000\u0000\u09c1\u09c2\u0005\u0014\u0000"+ + "\u0000\u09c2\u09c3\u0005\u018a\u0000\u0000\u09c3\u09f0\u0005\u0105\u0000"+ + "\u0000\u09c4\u09c5\u0005\u01ac\u0000\u0000\u09c5\u09c6\u0005\u018a\u0000"+ + "\u0000\u09c6\u09c7\u0005\u0105\u0000\u0000\u09c7\u09c8\u0005\u00b6\u0000"+ + "\u0000\u09c8\u09f0\u0003\u0146\u00a3\u0000\u09c9\u09cb\u0005\u019d\u0000"+ + "\u0000\u09ca\u09cc\u0005\u0014\u0000\u0000\u09cb\u09ca\u0001\u0000\u0000"+ + "\u0000\u09cb\u09cc\u0001\u0000\u0000\u0000\u09cc\u09cd\u0001\u0000\u0000"+ + "\u0000\u09cd\u09ce\u0005\u018a\u0000\u0000\u09ce\u09d4\u0005\u0105\u0000"+ + "\u0000\u09cf\u09d0\u0005\u00b6\u0000\u0000\u09d0\u09d5\u0003\u0146\u00a3"+ + "\u0000\u09d1\u09d3\u0003P(\u0000\u09d2\u09d1\u0001\u0000\u0000\u0000\u09d2"+ + "\u09d3\u0001\u0000\u0000\u0000\u09d3\u09d5\u0001\u0000\u0000\u0000\u09d4"+ + "\u09cf\u0001\u0000\u0000\u0000\u09d4\u09d2\u0001\u0000\u0000\u0000\u09d5"+ + "\u09f0\u0001\u0000\u0000\u0000\u09d6\u09d7\u0005\u019d\u0000\u0000\u09d7"+ + "\u09d8\u0005\u018a\u0000\u0000\u09d8\u09d9\u0005\u0105\u0000\u0000\u09d9"+ + "\u09dc\u0005\u01bc\u0000\u0000\u09da\u09db\u0007\u0006\u0000\u0000\u09db"+ + "\u09dd\u0003\u01c0\u00e0\u0000\u09dc\u09da\u0001\u0000\u0000\u0000\u09dc"+ + "\u09dd\u0001\u0000\u0000\u0000\u09dd\u09df\u0001\u0000\u0000\u0000\u09de"+ + "\u09e0\u0003P(\u0000\u09df\u09de\u0001\u0000\u0000\u0000\u09df\u09e0\u0001"+ + "\u0000\u0000\u0000\u09e0\u09f0\u0001\u0000\u0000\u0000\u09e1\u09e3\u0005"+ + "\u019d\u0000\u0000\u09e2\u09e4\u0005\u0014\u0000\u0000\u09e3\u09e2\u0001"+ + "\u0000\u0000\u0000\u09e3\u09e4\u0001\u0000\u0000\u0000\u09e4\u09e5\u0001"+ + "\u0000\u0000\u0000\u09e5\u09e6\u0005c\u0000\u0000\u09e6\u09e7\u0005\u018a"+ + "\u0000\u0000\u09e7\u09e8\u0005\u0105\u0000\u0000\u09e8\u09e9\u0005\u00b6"+ + "\u0000\u0000\u09e9\u09f0\u0003\u0146\u00a3\u0000\u09ea\u09eb\u0005\u019d"+ + "\u0000\u0000\u09eb\u09ec\u0005c\u0000\u0000\u09ec\u09ed\u0005\u0105\u0000"+ + "\u0000\u09ed\u09ee\u0005\u00b6\u0000\u0000\u09ee\u09f0\u0003\u0146\u00a3"+ + "\u0000\u09ef\u098c\u0001\u0000\u0000\u0000\u09ef\u0998\u0001\u0000\u0000"+ + "\u0000\u09ef\u09a6\u0001\u0000\u0000\u0000\u09ef\u09aa\u0001\u0000\u0000"+ + "\u0000\u09ef\u09ae\u0001\u0000\u0000\u0000\u09ef\u09b2\u0001\u0000\u0000"+ + "\u0000\u09ef\u09b7\u0001\u0000\u0000\u0000\u09ef\u09bb\u0001\u0000\u0000"+ + "\u0000\u09ef\u09c0\u0001\u0000\u0000\u0000\u09ef\u09c4\u0001\u0000\u0000"+ + "\u0000\u09ef\u09c9\u0001\u0000\u0000\u0000\u09ef\u09d6\u0001\u0000\u0000"+ + "\u0000\u09ef\u09e1\u0001\u0000\u0000\u0000\u09ef\u09ea\u0001\u0000\u0000"+ + "\u0000\u09f0)\u0001\u0000\u0000\u0000\u09f1\u09f2\u0005P\u0000\u0000\u09f2"+ + "\u09f3\u0005\u01bf\u0000\u0000\u09f3\u09f4\u0005;\u0000\u0000\u09f4\u09fc"+ + "\u0005\u0211\u0000\u0000\u09f5\u09fc\u00034\u001a\u0000\u09f6\u09fc\u0003"+ + "2\u0019\u0000\u09f7\u09fc\u00030\u0018\u0000\u09f8\u09fc\u0003.\u0017"+ + "\u0000\u09f9\u09fc\u0003,\u0016\u0000\u09fa\u09fc\u0003\u00a0P\u0000\u09fb"+ + "\u09f1\u0001\u0000\u0000\u0000\u09fb\u09f5\u0001\u0000\u0000\u0000\u09fb"+ + "\u09f6\u0001\u0000\u0000\u0000\u09fb\u09f7\u0001\u0000\u0000\u0000\u09fb"+ + "\u09f8\u0001\u0000\u0000\u0000\u09fb\u09f9\u0001\u0000\u0000\u0000\u09fb"+ + "\u09fa\u0001\u0000\u0000\u0000\u09fc+\u0001\u0000\u0000\u0000\u09fd\u09fe"+ + "\u0005\u013a\u0000\u0000\u09fe\u09ff\u0005;\u0000\u0000\u09ff\u0a00\u0003"+ + "\u01c0\u00e0\u0000\u0a00-\u0001\u0000\u0000\u0000\u0a01\u0a02\u0005~\u0000"+ + "\u0000\u0a02\u0a03\u0005\u0135\u0000\u0000\u0a03\u0a04\u0003\u0176\u00bb"+ + "\u0000\u0a04/\u0001\u0000\u0000\u0000\u0a05\u0a06\u0005\u01ef\u0000\u0000"+ + "\u0a06\u0a07\u0003\u0176\u00bb\u0000\u0a071\u0001\u0000\u0000\u0000\u0a08"+ + "\u0a09\u0005\u0157\u0000\u0000\u0a09\u0a0a\u0005\u00b1\u0000\u0000\u0a0a"+ + "\u0a0b\u0003\u0176\u00bb\u0000\u0a0b3\u0001\u0000\u0000\u0000\u0a0c\u0a0d"+ + "\u0005P\u0000\u0000\u0a0d\u0a0e\u0005\u0002\u0000\u0000\u0a0e\u0a13\u0003"+ + "6\u001b\u0000\u0a0f\u0a10\u0005\u0004\u0000\u0000\u0a10\u0a12\u00036\u001b"+ + "\u0000\u0a11\u0a0f\u0001\u0000\u0000\u0000\u0a12\u0a15\u0001\u0000\u0000"+ + "\u0000\u0a13\u0a11\u0001\u0000\u0000\u0000\u0a13\u0a14\u0001\u0000\u0000"+ + "\u0000\u0a14\u0a16\u0001\u0000\u0000\u0000\u0a15\u0a13\u0001\u0000\u0000"+ + "\u0000\u0a16\u0a17\u0005\u0003\u0000\u0000\u0a175\u0001\u0000\u0000\u0000"+ + "\u0a18\u0a1b\u0003\u01c0\u00e0\u0000\u0a19\u0a1a\u0005\u01f7\u0000\u0000"+ + "\u0a1a\u0a1c\u0003\u0176\u00bb\u0000\u0a1b\u0a19\u0001\u0000\u0000\u0000"+ + "\u0a1b\u0a1c\u0001\u0000\u0000\u0000\u0a1c\u0a26\u0001\u0000\u0000\u0000"+ + "\u0a1d\u0a1e\u0005\u0002\u0000\u0000\u0a1e\u0a21\u0003\u01c0\u00e0\u0000"+ + "\u0a1f\u0a20\u0005\u01f7\u0000\u0000\u0a20\u0a22\u0003\u0176\u00bb\u0000"+ + "\u0a21\u0a1f\u0001\u0000\u0000\u0000\u0a21\u0a22\u0001\u0000\u0000\u0000"+ + "\u0a22\u0a23\u0001\u0000\u0000\u0000\u0a23\u0a24\u0005\u0003\u0000\u0000"+ + "\u0a24\u0a26\u0001\u0000\u0000\u0000\u0a25\u0a18\u0001\u0000\u0000\u0000"+ + "\u0a25\u0a1d\u0001\u0000\u0000\u0000\u0a267\u0001\u0000\u0000\u0000\u0a27"+ + "\u0a2c\u0003:\u001d\u0000\u0a28\u0a29\u0005\u0004\u0000\u0000\u0a29\u0a2b"+ + "\u0003:\u001d\u0000\u0a2a\u0a28\u0001\u0000\u0000\u0000\u0a2b\u0a2e\u0001"+ + "\u0000\u0000\u0000\u0a2c\u0a2a\u0001\u0000\u0000\u0000\u0a2c\u0a2d\u0001"+ + "\u0000\u0000\u0000\u0a2d9\u0001\u0000\u0000\u0000\u0a2e\u0a2c\u0001\u0000"+ + "\u0000\u0000\u0a2f\u0a30\u0005\u00bb\u0000\u0000\u0a30\u0a31\u0003\u0146"+ + "\u00a3\u0000\u0a31\u0a32\u0005\u00e6\u0000\u0000\u0a32\u0a34\u0003\u0146"+ + "\u00a3\u0000\u0a33\u0a35\u0003\u00a0P\u0000\u0a34\u0a33\u0001\u0000\u0000"+ + "\u0000\u0a34\u0a35\u0001\u0000\u0000\u0000\u0a35\u0a37\u0001\u0000\u0000"+ + "\u0000\u0a36\u0a38\u0003\u0130\u0098\u0000\u0a37\u0a36\u0001\u0000\u0000"+ + "\u0000\u0a37\u0a38\u0001\u0000\u0000\u0000\u0a38;\u0001\u0000\u0000\u0000"+ + "\u0a39\u0a3a\u0005\u016f\u0000\u0000\u0a3a\u0a3b\u0005B\u0000\u0000\u0a3b"+ + "\u0a3d\u0003\u01c0\u00e0\u0000\u0a3c\u0a3e\u0003\u013a\u009d\u0000\u0a3d"+ + "\u0a3c\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0001\u0000\u0000\u0000\u0a3e"+ + "\u0a49\u0001\u0000\u0000\u0000\u0a3f\u0a40\u0005\u016f\u0000\u0000\u0a40"+ + "\u0a41\u0005o\u0000\u0000\u0a41\u0a43\u0003\u0146\u00a3\u0000\u0a42\u0a44"+ + "\u0003\u013a\u009d\u0000\u0a43\u0a42\u0001\u0000\u0000\u0000\u0a43\u0a44"+ + "\u0001\u0000\u0000\u0000\u0a44\u0a49\u0001\u0000\u0000\u0000\u0a45\u0a46"+ + "\u0005\u016f\u0000\u0000\u0a46\u0a47\u0005\u01b7\u0000\u0000\u0a47\u0a49"+ + "\u0003\u0146\u00a3\u0000\u0a48\u0a39\u0001\u0000\u0000\u0000\u0a48\u0a3f"+ + "\u0001\u0000\u0000\u0000\u0a48\u0a45\u0001\u0000\u0000\u0000\u0a49=\u0001"+ + "\u0000\u0000\u0000\u0a4a\u0a4b\u0005H\u0000\u0000\u0a4b\u0a4c\u0005\u0014"+ + "\u0000\u0000\u0a4c\u0a55\u0005\u015d\u0000\u0000\u0a4d\u0a4e\u0005H\u0000"+ + "\u0000\u0a4e\u0a50\u0005\u00f7\u0000\u0000\u0a4f\u0a51\u0003\u01c0\u00e0"+ + "\u0000\u0a50\u0a4f\u0001\u0000\u0000\u0000\u0a50\u0a51\u0001\u0000\u0000"+ + "\u0000\u0a51\u0a52\u0001\u0000\u0000\u0000\u0a52\u0a53\u0007\u0006\u0000"+ + "\u0000\u0a53\u0a55\u0003\u01c0\u00e0\u0000\u0a54\u0a4a\u0001\u0000\u0000"+ + "\u0000\u0a54\u0a4d\u0001\u0000\u0000\u0000\u0a55?\u0001\u0000\u0000\u0000"+ + "\u0a56\u0a57\u0005\u016f\u0000\u0000\u0a57\u0a5b\u0005\u00fb\u0000\u0000"+ + "\u0a58\u0a5c\u0005\u0014\u0000\u0000\u0a59\u0a5a\u0005\u00b6\u0000\u0000"+ + "\u0a5a\u0a5c\u0003\u00b6[\u0000\u0a5b\u0a58\u0001\u0000\u0000\u0000\u0a5b"+ + "\u0a59\u0001\u0000\u0000\u0000\u0a5cA\u0001\u0000\u0000\u0000\u0a5d\u0a5e"+ + "\u0005H\u0000\u0000\u0a5e\u0a5f\u0005\u0162\u0000\u0000\u0a5f\u0a64\u0005"+ + "\u01aa\u0000\u0000\u0a60\u0a61\u0005\u00b6\u0000\u0000\u0a61\u0a65\u0003"+ + "\u01c0\u00e0\u0000\u0a62\u0a63\u0007\u0006\u0000\u0000\u0a63\u0a65\u0003"+ + "\u0146\u00a3\u0000\u0a64\u0a60\u0001\u0000\u0000\u0000\u0a64\u0a62\u0001"+ + "\u0000\u0000\u0000\u0a65\u0a6b\u0001\u0000\u0000\u0000\u0a66\u0a67\u0005"+ + "H\u0000\u0000\u0a67\u0a68\u0005\u0014\u0000\u0000\u0a68\u0a69\u0005\u0162"+ + "\u0000\u0000\u0a69\u0a6b\u0005\u01aa\u0000\u0000\u0a6a\u0a5d\u0001\u0000"+ + "\u0000\u0000\u0a6a\u0a66\u0001\u0000\u0000\u0000\u0a6bC\u0001\u0000\u0000"+ + "\u0000\u0a6c\u0a6d\u0005?\u0000\u0000\u0a6d\u0a70\u0005\u0105\u0000\u0000"+ + "\u0a6e\u0a6f\u0007\u0006\u0000\u0000\u0a6f\u0a71\u0003\u01c0\u00e0\u0000"+ + "\u0a70\u0a6e\u0001\u0000\u0000\u0000\u0a70\u0a71\u0001\u0000\u0000\u0000"+ + "\u0a71\u0a73\u0001\u0000\u0000\u0000\u0a72\u0a74\u0003P(\u0000\u0a73\u0a72"+ + "\u0001\u0000\u0000\u0000\u0a73\u0a74\u0001\u0000\u0000\u0000\u0a74\u0a86"+ + "\u0001\u0000\u0000\u0000\u0a75\u0a76\u0005?\u0000\u0000\u0a76\u0a79\u0005"+ + "\u00a7\u0000\u0000\u0a77\u0a78\u0007\u0006\u0000\u0000\u0a78\u0a7a\u0003"+ + "\u01c0\u00e0\u0000\u0a79\u0a77\u0001\u0000\u0000\u0000\u0a79\u0a7a\u0001"+ + "\u0000\u0000\u0000\u0a7a\u0a7c\u0001\u0000\u0000\u0000\u0a7b\u0a7d\u0003"+ + "P(\u0000\u0a7c\u0a7b\u0001\u0000\u0000\u0000\u0a7c\u0a7d\u0001\u0000\u0000"+ + "\u0000\u0a7d\u0a86\u0001\u0000\u0000\u0000\u0a7e\u0a7f\u0005?\u0000\u0000"+ + "\u0a7f\u0a80\u0005\u01eb\u0000\u0000\u0a80\u0a81\u0005\u01d9\u0000\u0000"+ + "\u0a81\u0a83\u0005\u00ef\u0000\u0000\u0a82\u0a84\u0003P(\u0000\u0a83\u0a82"+ + "\u0001\u0000\u0000\u0000\u0a83\u0a84\u0001\u0000\u0000\u0000\u0a84\u0a86"+ + "\u0001\u0000\u0000\u0000\u0a85\u0a6c\u0001\u0000\u0000\u0000\u0a85\u0a75"+ + "\u0001\u0000\u0000\u0000\u0a85\u0a7e\u0001\u0000\u0000\u0000\u0a86E\u0001"+ + "\u0000\u0000\u0000\u0a87\u0a88\u0005?\u0000\u0000\u0a88\u0a89\u0005\u0015"+ + "\u0000\u0000\u0a89\u0a8e\u0005\u01b7\u0000\u0000\u0a8a\u0a8f\u0005\u0189"+ + "\u0000\u0000\u0a8b\u0a8c\u0005\u0118\u0000\u0000\u0a8c\u0a8f\u0005\u01e9"+ + "\u0000\u0000\u0a8d\u0a8f\u0005O\u0000\u0000\u0a8e\u0a8a\u0001\u0000\u0000"+ + "\u0000\u0a8e\u0a8b\u0001\u0000\u0000\u0000\u0a8e\u0a8d\u0001\u0000\u0000"+ + "\u0000\u0a8f\u0a90\u0001\u0000\u0000\u0000\u0a90\u0a91\u0005\u00bb\u0000"+ + "\u0000\u0a91\u0a9c\u0003\u0146\u00a3\u0000\u0a92\u0a93\u0005\u0002\u0000"+ + "\u0000\u0a93\u0a98\u0005\u0216\u0000\u0000\u0a94\u0a95\u0005\u0004\u0000"+ + "\u0000\u0a95\u0a97\u0005\u0216\u0000\u0000\u0a96\u0a94\u0001\u0000\u0000"+ + "\u0000\u0a97\u0a9a\u0001\u0000\u0000\u0000\u0a98\u0a96\u0001\u0000\u0000"+ + "\u0000\u0a98\u0a99\u0001\u0000\u0000\u0000\u0a99\u0a9b\u0001\u0000\u0000"+ + "\u0000\u0a9a\u0a98\u0001\u0000\u0000\u0000\u0a9b\u0a9d\u0005\u0003\u0000"+ + "\u0000\u0a9c\u0a92\u0001\u0000\u0000\u0000\u0a9c\u0a9d\u0001\u0000\u0000"+ + "\u0000\u0a9d\u0ac7\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0005?\u0000\u0000"+ + "\u0a9f\u0aa0\u00058\u0000\u0000\u0aa0\u0aa1\u0005\u00db\u0000\u0000\u0aa1"+ + "\u0aa2\u0005\u0135\u0000\u0000\u0aa2\u0aad\u0003\u0146\u00a3\u0000\u0aa3"+ + "\u0aa4\u0005\u0002\u0000\u0000\u0aa4\u0aa9\u0005\u0216\u0000\u0000\u0aa5"+ + "\u0aa6\u0005\u0004\u0000\u0000\u0aa6\u0aa8\u0005\u0216\u0000\u0000\u0aa7"+ + "\u0aa5\u0001\u0000\u0000\u0000\u0aa8\u0aab\u0001\u0000\u0000\u0000\u0aa9"+ + "\u0aa7\u0001\u0000\u0000\u0000\u0aa9\u0aaa\u0001\u0000\u0000\u0000\u0aaa"+ + "\u0aac\u0001\u0000\u0000\u0000\u0aab\u0aa9\u0001\u0000\u0000\u0000\u0aac"+ + "\u0aae\u0005\u0003\u0000\u0000\u0aad\u0aa3\u0001\u0000\u0000\u0000\u0aad"+ + "\u0aae\u0001\u0000\u0000\u0000\u0aae\u0ac7\u0001\u0000\u0000\u0000\u0aaf"+ + "\u0ab0\u0005?\u0000\u0000\u0ab0\u0ab1\u0005{\u0000\u0000\u0ab1\u0ab2\u0005"+ + "#\u0000\u0000\u0ab2\u0ab7\u0005\u0211\u0000\u0000\u0ab3\u0ab4\u0005\u0004"+ + "\u0000\u0000\u0ab4\u0ab6\u0005\u0211\u0000\u0000\u0ab5\u0ab3\u0001\u0000"+ + "\u0000\u0000\u0ab6\u0ab9\u0001\u0000\u0000\u0000\u0ab7\u0ab5\u0001\u0000"+ + "\u0000\u0000\u0ab7\u0ab8\u0001\u0000\u0000\u0000\u0ab8\u0ac7\u0001\u0000"+ + "\u0000\u0000\u0ab9\u0ab7\u0001\u0000\u0000\u0000\u0aba\u0abb\u0005?\u0000"+ + "\u0000\u0abb\u0abe\u0005%\u0000\u0000\u0abc\u0abd\u0007\u0006\u0000\u0000"+ + "\u0abd\u0abf\u0003\u01c0\u00e0\u0000\u0abe\u0abc\u0001\u0000\u0000\u0000"+ + "\u0abe\u0abf\u0001\u0000\u0000\u0000\u0abf\u0ac7\u0001\u0000\u0000\u0000"+ + "\u0ac0\u0ac1\u0005?\u0000\u0000\u0ac1\u0ac4\u0005\u017e\u0000\u0000\u0ac2"+ + "\u0ac3\u0007\u0006\u0000\u0000\u0ac3\u0ac5\u0003\u01c0\u00e0\u0000\u0ac4"+ + "\u0ac2\u0001\u0000\u0000\u0000\u0ac4\u0ac5\u0001\u0000\u0000\u0000\u0ac5"+ + "\u0ac7\u0001\u0000\u0000\u0000\u0ac6\u0a87\u0001\u0000\u0000\u0000\u0ac6"+ + "\u0a9e\u0001\u0000\u0000\u0000\u0ac6\u0aaf\u0001\u0000\u0000\u0000\u0ac6"+ + "\u0aba\u0001\u0000\u0000\u0000\u0ac6\u0ac0\u0001\u0000\u0000\u0000\u0ac7"+ + "G\u0001\u0000\u0000\u0000\u0ac8\u0ac9\u0005\u000f\u0000\u0000\u0ac9\u0aca"+ + "\u0005\u019d\u0000\u0000\u0aca\u0acb\u0005\u0179\u0000\u0000\u0acb\u0acc"+ + "\u0005\u0089\u0000\u0000\u0acc\u0acd\u0005\u00bb\u0000\u0000\u0acd\u0b31"+ + "\u0003N\'\u0000\u0ace\u0acf\u0005\u000f\u0000\u0000\u0acf\u0ad0\u0005"+ + "\u016b\u0000\u0000\u0ad0\u0adc\u0005\u0084\u0000\u0000\u0ad1\u0ad2\u0005"+ + "\u0135\u0000\u0000\u0ad2\u0ad3\u0005\u0002\u0000\u0000\u0ad3\u0ad8\u0005"+ + "\u0211\u0000\u0000\u0ad4\u0ad5\u0005\u0004\u0000\u0000\u0ad5\u0ad7\u0005"+ + "\u0211\u0000\u0000\u0ad6\u0ad4\u0001\u0000\u0000\u0000\u0ad7\u0ada\u0001"+ + "\u0000\u0000\u0000\u0ad8\u0ad6\u0001\u0000\u0000\u0000\u0ad8\u0ad9\u0001"+ + "\u0000\u0000\u0000\u0ad9\u0adb\u0001\u0000\u0000\u0000\u0ada\u0ad8\u0001"+ + "\u0000\u0000\u0000\u0adb\u0add\u0005\u0003\u0000\u0000\u0adc\u0ad1\u0001"+ + "\u0000\u0000\u0000\u0adc\u0add\u0001\u0000\u0000\u0000\u0add\u0b31\u0001"+ + "\u0000\u0000\u0000\u0ade\u0adf\u0005\u000f\u0000\u0000\u0adf\u0ae0\u0005"+ + "?\u0000\u0000\u0ae0\u0ae1\u0005\u016b\u0000\u0000\u0ae1\u0aed\u0005\u0084"+ + "\u0000\u0000\u0ae2\u0ae3\u0005\u0135\u0000\u0000\u0ae3\u0ae4\u0005\u0002"+ + "\u0000\u0000\u0ae4\u0ae9\u0005\u0211\u0000\u0000\u0ae5\u0ae6\u0005\u0004"+ + "\u0000\u0000\u0ae6\u0ae8\u0005\u0211\u0000\u0000\u0ae7\u0ae5\u0001\u0000"+ + "\u0000\u0000\u0ae8\u0aeb\u0001\u0000\u0000\u0000\u0ae9\u0ae7\u0001\u0000"+ + "\u0000\u0000\u0ae9\u0aea\u0001\u0000\u0000\u0000\u0aea\u0aec\u0001\u0000"+ + "\u0000\u0000\u0aeb\u0ae9\u0001\u0000\u0000\u0000\u0aec\u0aee\u0005\u0003"+ + "\u0000\u0000\u0aed\u0ae2\u0001\u0000\u0000\u0000\u0aed\u0aee\u0001\u0000"+ + "\u0000\u0000\u0aee\u0b31\u0001\u0000\u0000\u0000\u0aef\u0af0\u0005\u000f"+ + "\u0000\u0000\u0af0\u0af1\u0005\u0082\u0000\u0000\u0af1\u0af2\u0005\u01ba"+ + "\u0000\u0000\u0af2\u0b31\u0005\u0216\u0000\u0000\u0af3\u0af4\u0005\u000f"+ + "\u0000\u0000\u0af4\u0af5\u0005\u019d\u0000\u0000\u0af5\u0af6\u0005\u0179"+ + "\u0000\u0000\u0af6\u0af7\u0005\u01ab\u0000\u0000\u0af7\u0af8\u0005\u00bb"+ + "\u0000\u0000\u0af8\u0afe\u0003N\'\u0000\u0af9\u0afa\u0005\u01ef\u0000"+ + "\u0000\u0afa\u0afb\u0005\u01ab\u0000\u0000\u0afb\u0aff\u0005\u01f7\u0000"+ + "\u0000\u0afc\u0afd\u0005\u01f9\u0000\u0000\u0afd\u0aff\u0005\u0211\u0000"+ + "\u0000\u0afe\u0af9\u0001\u0000\u0000\u0000\u0afe\u0afc\u0001\u0000\u0000"+ + "\u0000\u0afe\u0aff\u0001\u0000\u0000\u0000\u0aff\u0b31\u0001\u0000\u0000"+ + "\u0000\u0b00\u0b01\u0005\u000f\u0000\u0000\u0b01\u0b02\u0005T\u0000\u0000"+ + "\u0b02\u0b03\u0005\u01b7\u0000\u0000\u0b03\u0b08\u0003N\'\u0000\u0b04"+ + "\u0b05\u0005\u01ef\u0000\u0000\u0b05\u0b06\u0005\u01ce\u0000\u0000\u0b06"+ + "\u0b07\u0005\u01f7\u0000\u0000\u0b07\u0b09\u0005\u0211\u0000\u0000\u0b08"+ + "\u0b04\u0001\u0000\u0000\u0000\u0b08\u0b09\u0001\u0000\u0000\u0000\u0b09"+ + "\u0b31\u0001\u0000\u0000\u0000\u0b0a\u0b0b\u0005\u000f\u0000\u0000\u0b0b"+ + "\u0b0c\u0005G\u0000\u0000\u0b0c\u0b0e\u0003\u016a\u00b5\u0000\u0b0d\u0b0f"+ + "\u0003\u013a\u009d\u0000\u0b0e\u0b0d\u0001\u0000\u0000\u0000\u0b0e\u0b0f"+ + "\u0001\u0000\u0000\u0000\u0b0f\u0b31\u0001\u0000\u0000\u0000\u0b10\u0b11"+ + "\u0005\u000f\u0000\u0000\u0b11\u0b12\u0005\u019d\u0000\u0000\u0b12\u0b13"+ + "\u0005\u01ba\u0000\u0000\u0b13\u0b14\u0005\u01ad\u0000\u0000\u0b14\u0b16"+ + "\u0005\u00b9\u0000\u0000\u0b15\u0b17\u0005\u01e7\u0000\u0000\u0b16\u0b15"+ + "\u0001\u0000\u0000\u0000\u0b16\u0b17\u0001\u0000\u0000\u0000\u0b17\u0b31"+ + "\u0001\u0000\u0000\u0000\u0b18\u0b19\u0005\u000f\u0000\u0000\u0b19\u0b1a"+ + "\u0005H\u0000\u0000\u0b1a\u0b26\u0005\u01c8\u0000\u0000\u0b1b\u0b1c\u0005"+ + "\u0135\u0000\u0000\u0b1c\u0b1d\u0005\u0002\u0000\u0000\u0b1d\u0b22\u0005"+ + "\u0211\u0000\u0000\u0b1e\u0b1f\u0005\u0004\u0000\u0000\u0b1f\u0b21\u0005"+ + "\u0211\u0000\u0000\u0b20\u0b1e\u0001\u0000\u0000\u0000\u0b21\u0b24\u0001"+ + "\u0000\u0000\u0000\u0b22\u0b20\u0001\u0000\u0000\u0000\u0b22\u0b23\u0001"+ + "\u0000\u0000\u0000\u0b23\u0b25\u0001\u0000\u0000\u0000\u0b24\u0b22\u0001"+ + "\u0000\u0000\u0000\u0b25\u0b27\u0005\u0003\u0000\u0000\u0b26\u0b1b\u0001"+ + "\u0000\u0000\u0000\u0b26\u0b27\u0001\u0000\u0000\u0000\u0b27\u0b31\u0001"+ + "\u0000\u0000\u0000\u0b28\u0b29\u0005\u000f\u0000\u0000\u0b29\u0b2a\u0005"+ + "\u0199\u0000\u0000\u0b2a\u0b2b\u0005\u01b7\u0000\u0000\u0b2b\u0b2c\u0003"+ + "\u0146\u00a3\u0000\u0b2c\u0b2e\u0005\u01ab\u0000\u0000\u0b2d\u0b2f\u0003"+ + "\u013a\u009d\u0000\u0b2e\u0b2d\u0001\u0000\u0000\u0000\u0b2e\u0b2f\u0001"+ + "\u0000\u0000\u0000\u0b2f\u0b31\u0001\u0000\u0000\u0000\u0b30\u0ac8\u0001"+ + "\u0000\u0000\u0000\u0b30\u0ace\u0001\u0000\u0000\u0000\u0b30\u0ade\u0001"+ + "\u0000\u0000\u0000\u0b30\u0aef\u0001\u0000\u0000\u0000\u0b30\u0af3\u0001"+ + "\u0000\u0000\u0000\u0b30\u0b00\u0001\u0000\u0000\u0000\u0b30\u0b0a\u0001"+ + "\u0000\u0000\u0000\u0b30\u0b10\u0001\u0000\u0000\u0000\u0b30\u0b18\u0001"+ + "\u0000\u0000\u0000\u0b30\u0b28\u0001\u0000\u0000\u0000\u0b31I\u0001\u0000"+ + "\u0000\u0000\u0b32\u0b33\u0005\u016d\u0000\u0000\u0b33\u0b34\u0005o\u0000"+ + "\u0000\u0b34\u0b36\u0003\u01c0\u00e0\u0000\u0b35\u0b37\u0005\u0216\u0000"+ + "\u0000\u0b36\u0b35\u0001\u0000\u0000\u0000\u0b36\u0b37\u0001\u0000\u0000"+ + "\u0000\u0b37\u0b3a\u0001\u0000\u0000\u0000\u0b38\u0b39\u0005\u001c\u0000"+ + "\u0000\u0b39\u0b3b\u0003\u01c0\u00e0\u0000\u0b3a\u0b38\u0001\u0000\u0000"+ + "\u0000\u0b3a\u0b3b\u0001\u0000\u0000\u0000\u0b3b\u0b54\u0001\u0000\u0000"+ + "\u0000\u0b3c\u0b3d\u0005\u016d\u0000\u0000\u0b3d\u0b3e\u0005\u01b7\u0000"+ + "\u0000\u0b3e\u0b40\u0003\u0146\u00a3\u0000\u0b3f\u0b41\u0005\u0216\u0000"+ + "\u0000\u0b40\u0b3f\u0001\u0000\u0000\u0000\u0b40\u0b41\u0001\u0000\u0000"+ + "\u0000\u0b41\u0b44\u0001\u0000\u0000\u0000\u0b42\u0b43\u0005\u001c\u0000"+ + "\u0000\u0b43\u0b45\u0003\u01c0\u00e0\u0000\u0b44\u0b42\u0001\u0000\u0000"+ + "\u0000\u0b44\u0b45\u0001\u0000\u0000\u0000\u0b45\u0b54\u0001\u0000\u0000"+ + "\u0000\u0b46\u0b47\u0005\u016d\u0000\u0000\u0b47\u0b48\u0005\u0141\u0000"+ + "\u0000\u0b48\u0b4a\u0003\u01c0\u00e0\u0000\u0b49\u0b4b\u0005\u0216\u0000"+ + "\u0000\u0b4a\u0b49\u0001\u0000\u0000\u0000\u0b4a\u0b4b\u0001\u0000\u0000"+ + "\u0000\u0b4b\u0b4e\u0001\u0000\u0000\u0000\u0b4c\u0b4d\u0005\u001c\u0000"+ + "\u0000\u0b4d\u0b4f\u0003\u01c0\u00e0\u0000\u0b4e\u0b4c\u0001\u0000\u0000"+ + "\u0000\u0b4e\u0b4f\u0001\u0000\u0000\u0000\u0b4f\u0b50\u0001\u0000\u0000"+ + "\u0000\u0b50\u0b51\u0005\u00bb\u0000\u0000\u0b51\u0b52\u0003\u0146\u00a3"+ + "\u0000\u0b52\u0b54\u0001\u0000\u0000\u0000\u0b53\u0b32\u0001\u0000\u0000"+ + "\u0000\u0b53\u0b3c\u0001\u0000\u0000\u0000\u0b53\u0b46\u0001\u0000\u0000"+ + "\u0000\u0b54K\u0001\u0000\u0000\u0000\u0b55\u0b56\u0005\u000f\u0000\u0000"+ + "\u0b56\u0b57\u0005\u0199\u0000\u0000\u0b57\u0b58\u0005\u0179\u0000\u0000"+ + "\u0b58\u0b59\u0005\u01ab\u0000\u0000\u0b59\u0b5a\u0005\u015e\u0000\u0000"+ + "\u0b5a\u0b5b\u0005\u0002\u0000\u0000\u0b5b\u0b5c\u0003\u013c\u009e\u0000"+ + "\u0b5c\u0b5d\u0005\u0003\u0000\u0000\u0b5d\u0b92\u0001\u0000\u0000\u0000"+ + "\u0b5e\u0b5f\u0005\u000f\u0000\u0000\u0b5f\u0b60\u0005\u0199\u0000\u0000"+ + "\u0b60\u0b61\u0005\u0179\u0000\u0000\u0b61\u0b62\u0005\u01e8\u0000\u0000"+ + "\u0b62\u0b63\u0005\u015e\u0000\u0000\u0b63\u0b64\u0005\u0002\u0000\u0000"+ + "\u0b64\u0b65\u0003\u013c\u009e\u0000\u0b65\u0b66\u0005\u0003\u0000\u0000"+ + "\u0b66\u0b92\u0001\u0000\u0000\u0000\u0b67\u0b68\u0005\u000f\u0000\u0000"+ + "\u0b68\u0b69\u0005\u0174\u0000\u0000\u0b69\u0b6a\u0005\u01b7\u0000\u0000"+ + "\u0b6a\u0b92\u0003N\'\u0000\u0b6b\u0b6c\u0005\u000f\u0000\u0000\u0b6c"+ + "\u0b6d\u0005?\u0000\u0000\u0b6d\u0b6e\u0005\u0174\u0000\u0000\u0b6e\u0b6f"+ + "\u0005\u01b7\u0000\u0000\u0b6f\u0b92\u0003N\'\u0000\u0b70\u0b71\u0005"+ + "\u000f\u0000\u0000\u0b71\u0b75\u0005\u0199\u0000\u0000\u0b72\u0b76\u0005"+ + "\u00bc\u0000\u0000\u0b73\u0b74\u0005\u0014\u0000\u0000\u0b74\u0b76\u0005"+ + "\u00bd\u0000\u0000\u0b75\u0b72\u0001\u0000\u0000\u0000\u0b75\u0b73\u0001"+ + "\u0000\u0000\u0000\u0b76\u0b77\u0001\u0000\u0000\u0000\u0b77\u0b7c\u0005"+ + "Y\u0000\u0000\u0b78\u0b79\u0005\u0002\u0000\u0000\u0b79\u0b7a\u0003\u013c"+ + "\u009e\u0000\u0b7a\u0b7b\u0005\u0003\u0000\u0000\u0b7b\u0b7d\u0001\u0000"+ + "\u0000\u0000\u0b7c\u0b78\u0001\u0000\u0000\u0000\u0b7c\u0b7d\u0001\u0000"+ + "\u0000\u0000\u0b7d\u0b7f\u0001\u0000\u0000\u0000\u0b7e\u0b80\u0005\u0014"+ + "\u0000\u0000\u0b7f\u0b7e\u0001\u0000\u0000\u0000\u0b7f\u0b80\u0001\u0000"+ + "\u0000\u0000\u0b80\u0b92\u0001\u0000\u0000\u0000\u0b81\u0b82\u0005\u000f"+ + "\u0000\u0000\u0b82\u0b83\u0005\u0199\u0000\u0000\u0b83\u0b84\u0005\u01b7"+ + "\u0000\u0000\u0b84\u0b85\u0003\u0146\u00a3\u0000\u0b85\u0b86\u0005\u0141"+ + "\u0000\u0000\u0b86\u0b88\u0005\u01e8\u0000\u0000\u0b87\u0b89\u0003\u013a"+ + "\u009d\u0000\u0b88\u0b87\u0001\u0000\u0000\u0000\u0b88\u0b89\u0001\u0000"+ + "\u0000\u0000\u0b89\u0b92\u0001\u0000\u0000\u0000\u0b8a\u0b8b\u0005\u000f"+ + "\u0000\u0000\u0b8b\u0b8c\u0005a\u0000\u0000\u0b8c\u0b8d\u0005\u01ba\u0000"+ + "\u0000\u0b8d\u0b8f\u0005\u0216\u0000\u0000\u0b8e\u0b90\u0003\u013a\u009d"+ + "\u0000\u0b8f\u0b8e\u0001\u0000\u0000\u0000\u0b8f\u0b90\u0001\u0000\u0000"+ + "\u0000\u0b90\u0b92\u0001\u0000\u0000\u0000\u0b91\u0b55\u0001\u0000\u0000"+ + "\u0000\u0b91\u0b5e\u0001\u0000\u0000\u0000\u0b91\u0b67\u0001\u0000\u0000"+ + "\u0000\u0b91\u0b6b\u0001\u0000\u0000\u0000\u0b91\u0b70\u0001\u0000\u0000"+ + "\u0000\u0b91\u0b81\u0001\u0000\u0000\u0000\u0b91\u0b8a\u0001\u0000\u0000"+ + "\u0000\u0b92M\u0001\u0000\u0000\u0000\u0b93\u0b95\u0003\u0146\u00a3\u0000"+ + "\u0b94\u0b96\u0003\u0134\u009a\u0000\u0b95\u0b94\u0001\u0000\u0000\u0000"+ + "\u0b95\u0b96\u0001\u0000\u0000\u0000\u0b96\u0b98\u0001\u0000\u0000\u0000"+ + "\u0b97\u0b99\u0003\u01ba\u00dd\u0000\u0b98\u0b97\u0001\u0000\u0000\u0000"+ + "\u0b98\u0b99\u0001\u0000\u0000\u0000\u0b99\u0b9b\u0001\u0000\u0000\u0000"+ + "\u0b9a\u0b9c\u0003\u0196\u00cb\u0000\u0b9b\u0b9a\u0001\u0000\u0000\u0000"+ + "\u0b9b\u0b9c\u0001\u0000\u0000\u0000\u0b9c\u0b9e\u0001\u0000\u0000\u0000"+ + "\u0b9d\u0b9f\u0003\u016a\u00b5\u0000\u0b9e\u0b9d\u0001\u0000\u0000\u0000"+ + "\u0b9e\u0b9f\u0001\u0000\u0000\u0000\u0b9f\u0ba0\u0001\u0000\u0000\u0000"+ + "\u0ba0\u0ba2\u0003\u0144\u00a2\u0000\u0ba1\u0ba3\u0003\u01b6\u00db\u0000"+ + "\u0ba2\u0ba1\u0001\u0000\u0000\u0000\u0ba2\u0ba3\u0001\u0000\u0000\u0000"+ + "\u0ba3\u0ba5\u0001\u0000\u0000\u0000\u0ba4\u0ba6\u0003\u010a\u0085\u0000"+ + "\u0ba5\u0ba4\u0001\u0000\u0000\u0000\u0ba5\u0ba6\u0001\u0000\u0000\u0000"+ + "\u0ba6O\u0001\u0000\u0000\u0000\u0ba7\u0ba8\u0005\u0100\u0000\u0000\u0ba8"+ + "\u0bac\u0005\u0211\u0000\u0000\u0ba9\u0baa\u0005\u01ef\u0000\u0000\u0baa"+ + "\u0bac\u0003\u0172\u00b9\u0000\u0bab\u0ba7\u0001\u0000\u0000\u0000\u0bab"+ + "\u0ba9\u0001\u0000\u0000\u0000\u0bacQ\u0001\u0000\u0000\u0000\u0bad\u0bb3"+ + "\u0005&\u0000\u0000\u0bae\u0baf\u0005\u01f1\u0000\u0000\u0baf\u0bb1\u0005"+ + "\u00f7\u0000\u0000\u0bb0\u0bb2\u0003\u01c0\u00e0\u0000\u0bb1\u0bb0\u0001"+ + "\u0000\u0000\u0000\u0bb1\u0bb2\u0001\u0000\u0000\u0000\u0bb2\u0bb4\u0001"+ + "\u0000\u0000\u0000\u0bb3\u0bae\u0001\u0000\u0000\u0000\u0bb3\u0bb4\u0001"+ + "\u0000\u0000\u0000\u0bb4\u0bd8\u0001\u0000\u0000\u0000\u0bb5\u0bb7\u0005"+ + "R\u0000\u0000\u0bb6\u0bb8\u0005\u01f2\u0000\u0000\u0bb7\u0bb6\u0001\u0000"+ + "\u0000\u0000\u0bb7\u0bb8\u0001\u0000\u0000\u0000\u0bb8\u0bbe\u0001\u0000"+ + "\u0000\u0000\u0bb9\u0bbb\u0005\u0018\u0000\u0000\u0bba\u0bbc\u0005\u012c"+ + "\u0000\u0000\u0bbb\u0bba\u0001\u0000\u0000\u0000\u0bbb\u0bbc\u0001\u0000"+ + "\u0000\u0000\u0bbc\u0bbd\u0001\u0000\u0000\u0000\u0bbd\u0bbf\u0005D\u0000"+ + "\u0000\u0bbe\u0bb9\u0001\u0000\u0000\u0000\u0bbe\u0bbf\u0001\u0000\u0000"+ + "\u0000\u0bbf\u0bc4\u0001\u0000\u0000\u0000\u0bc0\u0bc2\u0005\u012c\u0000"+ + "\u0000\u0bc1\u0bc0\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0001\u0000\u0000"+ + "\u0000\u0bc2\u0bc3\u0001\u0000\u0000\u0000\u0bc3\u0bc5\u0005\u0172\u0000"+ + "\u0000\u0bc4\u0bc1\u0001\u0000\u0000\u0000\u0bc4\u0bc5\u0001\u0000\u0000"+ + "\u0000\u0bc5\u0bd8\u0001\u0000\u0000\u0000\u0bc6\u0bc8\u0005\u0188\u0000"+ + "\u0000\u0bc7\u0bc9\u0005\u01f2\u0000\u0000\u0bc8\u0bc7\u0001\u0000\u0000"+ + "\u0000\u0bc8\u0bc9\u0001\u0000\u0000\u0000\u0bc9\u0bcf\u0001\u0000\u0000"+ + "\u0000\u0bca\u0bcc\u0005\u0018\u0000\u0000\u0bcb\u0bcd\u0005\u012c\u0000"+ + "\u0000\u0bcc\u0bcb\u0001\u0000\u0000\u0000\u0bcc\u0bcd\u0001\u0000\u0000"+ + "\u0000\u0bcd\u0bce\u0001\u0000\u0000\u0000\u0bce\u0bd0\u0005D\u0000\u0000"+ + "\u0bcf\u0bca\u0001\u0000\u0000\u0000\u0bcf\u0bd0\u0001\u0000\u0000\u0000"+ + "\u0bd0\u0bd5\u0001\u0000\u0000\u0000\u0bd1\u0bd3\u0005\u012c\u0000\u0000"+ + "\u0bd2\u0bd1\u0001\u0000\u0000\u0000\u0bd2\u0bd3\u0001\u0000\u0000\u0000"+ + "\u0bd3\u0bd4\u0001\u0000\u0000\u0000\u0bd4\u0bd6\u0005\u0172\u0000\u0000"+ + "\u0bd5\u0bd2\u0001\u0000\u0000\u0000\u0bd5\u0bd6\u0001\u0000\u0000\u0000"+ + "\u0bd6\u0bd8\u0001\u0000\u0000\u0000\u0bd7\u0bad\u0001\u0000\u0000\u0000"+ + "\u0bd7\u0bb5\u0001\u0000\u0000\u0000\u0bd7\u0bc6\u0001\u0000\u0000\u0000"+ + "\u0bd8S\u0001\u0000\u0000\u0000\u0bd9\u0bda\u0005\u00c4\u0000\u0000\u0bda"+ + "\u0bdb\u0003X,\u0000\u0bdb\u0bdc\u0005\u0135\u0000\u0000\u0bdc\u0bdd\u0003"+ + "\u00ba]\u0000\u0bdd\u0be1\u0005\u01c6\u0000\u0000\u0bde\u0be2\u0003\u00be"+ + "_\u0000\u0bdf\u0be0\u0005\u0186\u0000\u0000\u0be0\u0be2\u0005\u0211\u0000"+ + "\u0000\u0be1\u0bde\u0001\u0000\u0000\u0000\u0be1\u0bdf\u0001\u0000\u0000"+ + "\u0000\u0be2\u0c2e\u0001\u0000\u0000\u0000\u0be3\u0be4\u0005\u00c4\u0000"+ + "\u0000\u0be4\u0be5\u0003X,\u0000\u0be5\u0bef\u0005\u0135\u0000\u0000\u0be6"+ + "\u0bf0\u0005\u017c\u0000\u0000\u0be7\u0bf0\u0005I\u0000\u0000\u0be8\u0be9"+ + "\u0005W\u0000\u0000\u0be9\u0bf0\u0005\u00c7\u0000\u0000\u0bea\u0bf0\u0005"+ + "\u01a6\u0000\u0000\u0beb\u0bec\u0005\u01ad\u0000\u0000\u0bec\u0bf0\u0005"+ + "\u01e5\u0000\u0000\u0bed\u0bee\u0005\u01f3\u0000\u0000\u0bee\u0bf0\u0005"+ + "\u00c7\u0000\u0000\u0bef\u0be6\u0001\u0000\u0000\u0000\u0bef\u0be7\u0001"+ + "\u0000\u0000\u0000\u0bef\u0be8\u0001\u0000\u0000\u0000\u0bef\u0bea\u0001"+ + "\u0000\u0000\u0000\u0bef\u0beb\u0001\u0000\u0000\u0000\u0bef\u0bed\u0001"+ + "\u0000\u0000\u0000\u0bf0\u0bf1\u0001\u0000\u0000\u0000\u0bf1\u0bf2\u0003"+ + "\u00b8\\\u0000\u0bf2\u0bf6\u0005\u01c6\u0000\u0000\u0bf3\u0bf7\u0003\u00be"+ + "_\u0000\u0bf4\u0bf5\u0005\u0186\u0000\u0000\u0bf5\u0bf7\u0005\u0211\u0000"+ + "\u0000\u0bf6\u0bf3\u0001\u0000\u0000\u0000\u0bf6\u0bf4\u0001\u0000\u0000"+ + "\u0000\u0bf7\u0c2e\u0001\u0000\u0000\u0000\u0bf8\u0bf9\u0005\u00c4\u0000"+ + "\u0000\u0bf9\u0bfe\u0005\u0211\u0000\u0000\u0bfa\u0bfb\u0005\u0004\u0000"+ + "\u0000\u0bfb\u0bfd\u0005\u0211\u0000\u0000\u0bfc\u0bfa\u0001\u0000\u0000"+ + "\u0000\u0bfd\u0c00\u0001\u0000\u0000\u0000\u0bfe\u0bfc\u0001\u0000\u0000"+ + "\u0000\u0bfe\u0bff\u0001\u0000\u0000\u0000\u0bff\u0c01\u0001\u0000\u0000"+ + "\u0000\u0c00\u0bfe\u0001\u0000\u0000\u0000\u0c01\u0c02\u0005\u01c6\u0000"+ + "\u0000\u0c02\u0c2e\u0003\u00be_\u0000\u0c03\u0c04\u0005\u0182\u0000\u0000"+ + "\u0c04\u0c05\u0003X,\u0000\u0c05\u0c06\u0005\u0135\u0000\u0000\u0c06\u0c07"+ + "\u0003\u00ba]\u0000\u0c07\u0c0b\u0005\u00bb\u0000\u0000\u0c08\u0c0c\u0003"+ + "\u00be_\u0000\u0c09\u0c0a\u0005\u0186\u0000\u0000\u0c0a\u0c0c\u0005\u0211"+ + "\u0000\u0000\u0c0b\u0c08\u0001\u0000\u0000\u0000\u0c0b\u0c09\u0001\u0000"+ + "\u0000\u0000\u0c0c\u0c2e\u0001\u0000\u0000\u0000\u0c0d\u0c0e\u0005\u0182"+ + "\u0000\u0000\u0c0e\u0c0f\u0003X,\u0000\u0c0f\u0c19\u0005\u0135\u0000\u0000"+ + "\u0c10\u0c1a\u0005\u017c\u0000\u0000\u0c11\u0c1a\u0005I\u0000\u0000\u0c12"+ + "\u0c13\u0005W\u0000\u0000\u0c13\u0c1a\u0005\u00c7\u0000\u0000\u0c14\u0c1a"+ + "\u0005\u01a6\u0000\u0000\u0c15\u0c16\u0005\u01ad\u0000\u0000\u0c16\u0c1a"+ + "\u0005\u01e5\u0000\u0000\u0c17\u0c18\u0005\u01f3\u0000\u0000\u0c18\u0c1a"+ + "\u0005\u00c7\u0000\u0000\u0c19\u0c10\u0001\u0000\u0000\u0000\u0c19\u0c11"+ + "\u0001\u0000\u0000\u0000\u0c19\u0c12\u0001\u0000\u0000\u0000\u0c19\u0c14"+ + "\u0001\u0000\u0000\u0000\u0c19\u0c15\u0001\u0000\u0000\u0000\u0c19\u0c17"+ + "\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0001\u0000\u0000\u0000\u0c1b\u0c1c"+ + "\u0003\u00b8\\\u0000\u0c1c\u0c20\u0005\u00bb\u0000\u0000\u0c1d\u0c21\u0003"+ + "\u00be_\u0000\u0c1e\u0c1f\u0005\u0186\u0000\u0000\u0c1f\u0c21\u0005\u0211"+ + "\u0000\u0000\u0c20\u0c1d\u0001\u0000\u0000\u0000\u0c20\u0c1e\u0001\u0000"+ + "\u0000\u0000\u0c21\u0c2e\u0001\u0000\u0000\u0000\u0c22\u0c23\u0005\u0182"+ + "\u0000\u0000\u0c23\u0c28\u0005\u0211\u0000\u0000\u0c24\u0c25\u0005\u0004"+ + "\u0000\u0000\u0c25\u0c27\u0005\u0211\u0000\u0000\u0c26\u0c24\u0001\u0000"+ + "\u0000\u0000\u0c27\u0c2a\u0001\u0000\u0000\u0000\u0c28\u0c26\u0001\u0000"+ + "\u0000\u0000\u0c28\u0c29\u0001\u0000\u0000\u0000\u0c29\u0c2b\u0001\u0000"+ + "\u0000\u0000\u0c2a\u0c28\u0001\u0000\u0000\u0000\u0c2b\u0c2c\u0005\u00bb"+ + "\u0000\u0000\u0c2c\u0c2e\u0003\u00be_\u0000\u0c2d\u0bd9\u0001\u0000\u0000"+ + "\u0000\u0c2d\u0be3\u0001\u0000\u0000\u0000\u0c2d\u0bf8\u0001\u0000\u0000"+ + "\u0000\u0c2d\u0c03\u0001\u0000\u0000\u0000\u0c2d\u0c0d\u0001\u0000\u0000"+ + "\u0000\u0c2d\u0c22\u0001\u0000\u0000\u0000\u0c2eU\u0001\u0000\u0000\u0000"+ + "\u0c2f\u0c31\u0003\u01c0\u00e0\u0000\u0c30\u0c32\u0003\u0130\u0098\u0000"+ + "\u0c31\u0c30\u0001\u0000\u0000\u0000\u0c31\u0c32\u0001\u0000\u0000\u0000"+ + "\u0c32\u0c35\u0001\u0000\u0000\u0000\u0c33\u0c35\u0005\u0014\u0000\u0000"+ + "\u0c34\u0c2f\u0001\u0000\u0000\u0000\u0c34\u0c33\u0001\u0000\u0000\u0000"+ + "\u0c35W\u0001\u0000\u0000\u0000\u0c36\u0c3b\u0003V+\u0000\u0c37\u0c38"+ + "\u0005\u0004\u0000\u0000\u0c38\u0c3a\u0003V+\u0000\u0c39\u0c37\u0001\u0000"+ + "\u0000\u0000\u0c3a\u0c3d\u0001\u0000\u0000\u0000\u0c3b\u0c39\u0001\u0000"+ + "\u0000\u0000\u0c3b\u0c3c\u0001\u0000\u0000\u0000\u0c3cY\u0001\u0000\u0000"+ + "\u0000\u0c3d\u0c3b\u0001\u0000\u0000\u0000\u0c3e\u0c3f\u0005\u0015\u0000"+ + "\u0000\u0c3f\u0c40\u0005o\u0000\u0000\u0c40\u0c41\u0003\u01c0\u00e0\u0000"+ + "\u0c41\u0c42\u0005\u0199\u0000\u0000\u0c42\u0c43\u0005\u015e\u0000\u0000"+ + "\u0c43\u0c44\u0005\u0002\u0000\u0000\u0c44\u0c45\u0003\u013c\u009e\u0000"+ + "\u0c45\u0c46\u0005\u0003\u0000\u0000\u0c46\u0c79\u0001\u0000\u0000\u0000"+ + "\u0c47\u0c48\u0005\u0015\u0000\u0000\u0c48\u0c49\u0005\u017c\u0000\u0000"+ + "\u0c49\u0c4b\u0003\u00b6[\u0000\u0c4a\u0c4c\u0003\u013a\u009d\u0000\u0c4b"+ + "\u0c4a\u0001\u0000\u0000\u0000\u0c4b\u0c4c\u0001\u0000\u0000\u0000\u0c4c"+ + "\u0c79\u0001\u0000\u0000\u0000\u0c4d\u0c4e\u0005\u0015\u0000\u0000\u0c4e"+ + "\u0c4f\u0005N\u0000\u0000\u0c4f\u0c50\u0005\u00c7\u0000\u0000\u0c50\u0c51"+ + "\u0003\u0146\u00a3\u0000\u0c51\u0c52\u0005\u0199\u0000\u0000\u0c52\u0c53"+ + "\u0005\u0002\u0000\u0000\u0c53\u0c54\u0003\u013c\u009e\u0000\u0c54\u0c55"+ + "\u0005\u0003\u0000\u0000\u0c55\u0c79\u0001\u0000\u0000\u0000\u0c56\u0c57"+ + "\u0005\u0015\u0000\u0000\u0c57\u0c58\u0005\u018a\u0000\u0000\u0c58\u0c59"+ + "\u0005\u0105\u0000\u0000\u0c59\u0c5a\u0005\u00b6\u0000\u0000\u0c5a\u0c5c"+ + "\u0003\u0146\u00a3\u0000\u0c5b\u0c5d\u0003\u013a\u009d\u0000\u0c5c\u0c5b"+ + "\u0001\u0000\u0000\u0000\u0c5c\u0c5d\u0001\u0000\u0000\u0000\u0c5d\u0c64"+ + "\u0001\u0000\u0000\u0000\u0c5e\u0c5f\u0005\u00bb\u0000\u0000\u0c5f\u0c60"+ + "\u0003\u01c0\u00e0\u0000\u0c60\u0c61\u0005\u0002\u0000\u0000\u0c61\u0c62"+ + "\u0003\u013c\u009e\u0000\u0c62\u0c63\u0005\u0003\u0000\u0000\u0c63\u0c65"+ + "\u0001\u0000\u0000\u0000\u0c64\u0c5e\u0001\u0000\u0000\u0000\u0c64\u0c65"+ + "\u0001\u0000\u0000\u0000\u0c65\u0c79\u0001\u0000\u0000\u0000\u0c66\u0c67"+ + "\u0005\u0015\u0000\u0000\u0c67\u0c68\u0005\u01ad\u0000\u0000\u0c68\u0c69"+ + "\u0005\u0156\u0000\u0000\u0c69\u0c6a\u0003\u00b6[\u0000\u0c6a\u0c6b\u0003"+ + "\u013a\u009d\u0000\u0c6b\u0c79\u0001\u0000\u0000\u0000\u0c6c\u0c6d\u0005"+ + "\u0015\u0000\u0000\u0c6d\u0c70\u0005\u01dc\u0000\u0000\u0c6e\u0c6f\u0005"+ + "\u00d6\u0000\u0000\u0c6f\u0c71\u0005\u00a4\u0000\u0000\u0c70\u0c6e\u0001"+ + "\u0000\u0000\u0000\u0c70\u0c71\u0001\u0000\u0000\u0000\u0c71\u0c72\u0001"+ + "\u0000\u0000\u0000\u0c72\u0c73\u0003\u00c0`\u0000\u0c73\u0c76\u0003~?"+ + "\u0000\u0c74\u0c75\u0005Q\u0000\u0000\u0c75\u0c77\u0005\u0211\u0000\u0000"+ + "\u0c76\u0c74\u0001\u0000\u0000\u0000\u0c76\u0c77\u0001\u0000\u0000\u0000"+ + "\u0c77\u0c79\u0001\u0000\u0000\u0000\u0c78\u0c3e\u0001\u0000\u0000\u0000"+ + "\u0c78\u0c47\u0001\u0000\u0000\u0000\u0c78\u0c4d\u0001\u0000\u0000\u0000"+ + "\u0c78\u0c56\u0001\u0000\u0000\u0000\u0c78\u0c66\u0001\u0000\u0000\u0000"+ + "\u0c78\u0c6c\u0001\u0000\u0000\u0000\u0c79[\u0001\u0000\u0000\u0000\u0c7a"+ + "\u0c7b\u0005\u000e\u0000\u0000\u0c7b\u0c7c\u0005#\u0000\u0000\u0c7c\u0c81"+ + "\u0005\u0211\u0000\u0000\u0c7d\u0c7e\u0005\u0004\u0000\u0000\u0c7e\u0c80"+ + "\u0005\u0211\u0000\u0000\u0c7f\u0c7d\u0001\u0000\u0000\u0000\u0c80\u0c83"+ + "\u0001\u0000\u0000\u0000\u0c81\u0c7f\u0001\u0000\u0000\u0000\u0c81\u0c82"+ + "\u0001\u0000\u0000\u0000\u0c82\u0c85\u0001\u0000\u0000\u0000\u0c83\u0c81"+ + "\u0001\u0000\u0000\u0000\u0c84\u0c86\u0003\u013a\u009d\u0000\u0c85\u0c84"+ + "\u0001\u0000\u0000\u0000\u0c85\u0c86\u0001\u0000\u0000\u0000\u0c86\u0cdd"+ + "\u0001\u0000\u0000\u0000\u0c87\u0c88\u0007\u0013\u0000\u0000\u0c88\u0c89"+ + "\u0005#\u0000\u0000\u0c89\u0c8e\u0005\u0211\u0000\u0000\u0c8a\u0c8b\u0005"+ + "\u0004\u0000\u0000\u0c8b\u0c8d\u0005\u0211\u0000\u0000\u0c8c\u0c8a\u0001"+ + "\u0000\u0000\u0000\u0c8d\u0c90\u0001\u0000\u0000\u0000\u0c8e\u0c8c\u0001"+ + "\u0000\u0000\u0000\u0c8e\u0c8f\u0001\u0000\u0000\u0000\u0c8f\u0cdd\u0001"+ + "\u0000\u0000\u0000\u0c90\u0c8e\u0001\u0000\u0000\u0000\u0c91\u0c92\u0005"+ + "{\u0000\u0000\u0c92\u0c93\u0005#\u0000\u0000\u0c93\u0c98\u0005\u0211\u0000"+ + "\u0000\u0c94\u0c95\u0005\u0004\u0000\u0000\u0c95\u0c97\u0005\u0211\u0000"+ + "\u0000\u0c96\u0c94\u0001\u0000\u0000\u0000\u0c97\u0c9a\u0001\u0000\u0000"+ + "\u0000\u0c98\u0c96\u0001\u0000\u0000\u0000\u0c98\u0c99\u0001\u0000\u0000"+ + "\u0000\u0c99\u0cdd\u0001\u0000\u0000\u0000\u0c9a\u0c98\u0001\u0000\u0000"+ + "\u0000\u0c9b\u0c9c\u0005\u000e\u0000\u0000\u0c9c\u0c9d\u0005\u0132\u0000"+ + "\u0000\u0c9d\u0cdd\u0005\u0211\u0000\u0000\u0c9e\u0c9f\u0005\u008e\u0000"+ + "\u0000\u0c9f\u0ca0\u0005\u0132\u0000\u0000\u0ca0\u0cdd\u0005\u0211\u0000"+ + "\u0000\u0ca1\u0ca2\u0005\u000e\u0000\u0000\u0ca2\u0ca3\u0005\u00b4\u0000"+ + "\u0000\u0ca3\u0cdd\u0005\u0211\u0000\u0000\u0ca4\u0ca5\u0005\u008e\u0000"+ + "\u0000\u0ca5\u0ca6\u0005\u00b4\u0000\u0000\u0ca6\u0cdd\u0005\u0211\u0000"+ + "\u0000\u0ca7\u0ca8\u0005\u000e\u0000\u0000\u0ca8\u0ca9\u00056\u0000\u0000"+ + "\u0ca9\u0caa\u0003\u00b6[\u0000\u0caa\u0caf\u0005\u0211\u0000\u0000\u0cab"+ + "\u0cac\u0005\u0004\u0000\u0000\u0cac\u0cae\u0005\u0211\u0000\u0000\u0cad"+ + "\u0cab\u0001\u0000\u0000\u0000\u0cae\u0cb1\u0001\u0000\u0000\u0000\u0caf"+ + "\u0cad\u0001\u0000\u0000\u0000\u0caf\u0cb0\u0001\u0000\u0000\u0000\u0cb0"+ + "\u0cdd\u0001\u0000\u0000\u0000\u0cb1\u0caf\u0001\u0000\u0000\u0000\u0cb2"+ + "\u0cb3\u0005\u008e\u0000\u0000\u0cb3\u0cb4\u00056\u0000\u0000\u0cb4\u0cb5"+ + "\u0003\u00b6[\u0000\u0cb5\u0cba\u0005\u0211\u0000\u0000\u0cb6\u0cb7\u0005"+ + "\u0004\u0000\u0000\u0cb7\u0cb9\u0005\u0211\u0000\u0000\u0cb8\u0cb6\u0001"+ + "\u0000\u0000\u0000\u0cb9\u0cbc\u0001\u0000\u0000\u0000\u0cba\u0cb8\u0001"+ + "\u0000\u0000\u0000\u0cba\u0cbb\u0001\u0000\u0000\u0000\u0cbb\u0cdd\u0001"+ + "\u0000\u0000\u0000\u0cbc\u0cba\u0001\u0000\u0000\u0000\u0cbd\u0cbe\u0005"+ + "\u008e\u0000\u0000\u0cbe\u0cbf\u0005\u0014\u0000\u0000\u0cbf\u0cc0\u0005"+ + "6\u0000\u0000\u0cc0\u0cdd\u0003\u00b6[\u0000\u0cc1\u0cc2\u0005\u0199\u0000"+ + "\u0000\u0cc2\u0cc3\u0005\u0105\u0000\u0000\u0cc3\u0cc4\u0005\u009e\u0000"+ + "\u0000\u0cc4\u0cc6\u0005\u00d4\u0000\u0000\u0cc5\u0cc7\u0003\u013a\u009d"+ + "\u0000\u0cc6\u0cc5\u0001\u0000\u0000\u0000\u0cc6\u0cc7\u0001\u0000\u0000"+ + "\u0000\u0cc7\u0cdd\u0001\u0000\u0000\u0000\u0cc8\u0cc9\u0005\u0122\u0000"+ + "\u0000\u0cc9\u0cca\u0005#\u0000\u0000\u0cca\u0ccf\u0005\u0211\u0000\u0000"+ + "\u0ccb\u0ccc\u0005\u0004\u0000\u0000\u0ccc\u0cce\u0005\u0211\u0000\u0000"+ + "\u0ccd\u0ccb\u0001\u0000\u0000\u0000\u0cce\u0cd1\u0001\u0000\u0000\u0000"+ + "\u0ccf\u0ccd\u0001\u0000\u0000\u0000\u0ccf\u0cd0\u0001\u0000\u0000\u0000"+ + "\u0cd0\u0cd2\u0001\u0000\u0000\u0000\u0cd1\u0ccf\u0001\u0000\u0000\u0000"+ + "\u0cd2\u0cd3\u0005\u0199\u0000\u0000\u0cd3\u0cd4\u0005\u0002\u0000\u0000"+ + "\u0cd4\u0cd5\u0003\u013c\u009e\u0000\u0cd5\u0cd6\u0005\u0003\u0000\u0000"+ + "\u0cd6\u0cdd\u0001\u0000\u0000\u0000\u0cd7\u0cd8\u0005\u0122\u0000\u0000"+ + "\u0cd8\u0cd9\u0007\u0002\u0000\u0000\u0cd9\u0cda\u0005\u0211\u0000\u0000"+ + "\u0cda\u0cdb\u0005\u00d1\u0000\u0000\u0cdb\u0cdd\u0005\u0211\u0000\u0000"+ + "\u0cdc\u0c7a\u0001\u0000\u0000\u0000\u0cdc\u0c87\u0001\u0000\u0000\u0000"+ + "\u0cdc\u0c91\u0001\u0000\u0000\u0000\u0cdc\u0c9b\u0001\u0000\u0000\u0000"+ + "\u0cdc\u0c9e\u0001\u0000\u0000\u0000\u0cdc\u0ca1\u0001\u0000\u0000\u0000"+ + "\u0cdc\u0ca4\u0001\u0000\u0000\u0000\u0cdc\u0ca7\u0001\u0000\u0000\u0000"+ + "\u0cdc\u0cb2\u0001\u0000\u0000\u0000\u0cdc\u0cbd\u0001\u0000\u0000\u0000"+ + "\u0cdc\u0cc1\u0001\u0000\u0000\u0000\u0cdc\u0cc8\u0001\u0000\u0000\u0000"+ + "\u0cdc\u0cd7\u0001\u0000\u0000\u0000\u0cdd]\u0001\u0000\u0000\u0000\u0cde"+ + "\u0ce0\u0003\u01c0\u00e0\u0000\u0cdf\u0ce1\u0003\u013a\u009d\u0000\u0ce0"+ + "\u0cdf\u0001\u0000\u0000\u0000\u0ce0\u0ce1\u0001\u0000\u0000\u0000\u0ce1"+ + "_\u0001\u0000\u0000\u0000\u0ce2\u0ce3\u0003\u01c0\u00e0\u0000\u0ce3\u0ce7"+ + "\u0003\u0130\u0098\u0000\u0ce4\u0ce5\u0005\u0092\u0000\u0000\u0ce5\u0ce6"+ + "\u0005\u00f4\u0000\u0000\u0ce6\u0ce8\u0003\u0130\u0098\u0000\u0ce7\u0ce4"+ + "\u0001\u0000\u0000\u0000\u0ce7\u0ce8\u0001\u0000\u0000\u0000\u0ce8\u0cea"+ + "\u0001\u0000\u0000\u0000\u0ce9\u0ceb\u0003h4\u0000\u0cea\u0ce9\u0001\u0000"+ + "\u0000\u0000\u0cea\u0ceb\u0001\u0000\u0000\u0000\u0ceb\u0ced\u0001\u0000"+ + "\u0000\u0000\u0cec\u0cee\u0003\u013a\u009d\u0000\u0ced\u0cec\u0001\u0000"+ + "\u0000\u0000\u0ced\u0cee\u0001\u0000\u0000\u0000\u0ceea\u0001\u0000\u0000"+ + "\u0000\u0cef\u0cf0\u0005\u000e\u0000\u0000\u0cf0\u0cf1\u0005O\u0000\u0000"+ + "\u0cf1\u0cf3\u0003\u014e\u00a7\u0000\u0cf2\u0cf4\u0003d2\u0000\u0cf3\u0cf2"+ + "\u0001\u0000\u0000\u0000\u0cf3\u0cf4\u0001\u0000\u0000\u0000\u0cf4\u0cf6"+ + "\u0001\u0000\u0000\u0000\u0cf5\u0cf7\u0003f3\u0000\u0cf6\u0cf5\u0001\u0000"+ + "\u0000\u0000\u0cf6\u0cf7\u0001\u0000\u0000\u0000\u0cf7\u0cf9\u0001\u0000"+ + "\u0000\u0000\u0cf8\u0cfa\u0003\u013a\u009d\u0000\u0cf9\u0cf8\u0001\u0000"+ + "\u0000\u0000\u0cf9\u0cfa\u0001\u0000\u0000\u0000\u0cfa\u0dcc\u0001\u0000"+ + "\u0000\u0000\u0cfb\u0cfc\u0005\u000e\u0000\u0000\u0cfc\u0cfd\u0005O\u0000"+ + "\u0000\u0cfd\u0cfe\u0005\u0002\u0000\u0000\u0cfe\u0cff\u0003\u014c\u00a6"+ + "\u0000\u0cff\u0d01\u0005\u0003\u0000\u0000\u0d00\u0d02\u0003f3\u0000\u0d01"+ + "\u0d00\u0001\u0000\u0000\u0000\u0d01\u0d02\u0001\u0000\u0000\u0000\u0d02"+ + "\u0d04\u0001\u0000\u0000\u0000\u0d03\u0d05\u0003\u013a\u009d\u0000\u0d04"+ + "\u0d03\u0001\u0000\u0000\u0000\u0d04\u0d05\u0001\u0000\u0000\u0000\u0d05"+ + "\u0dcc\u0001\u0000\u0000\u0000\u0d06\u0d07\u0005\u008e\u0000\u0000\u0d07"+ + "\u0d08\u0005O\u0000\u0000\u0d08\u0d0a\u0003\u01c0\u00e0\u0000\u0d09\u0d0b"+ + "\u0003h4\u0000\u0d0a\u0d09\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0001\u0000"+ + "\u0000\u0000\u0d0b\u0d0d\u0001\u0000\u0000\u0000\u0d0c\u0d0e\u0003\u013a"+ + "\u009d\u0000\u0d0d\u0d0c\u0001\u0000\u0000\u0000\u0d0d\u0d0e\u0001\u0000"+ + "\u0000\u0000\u0d0e\u0dcc\u0001\u0000\u0000\u0000\u0d0f\u0d10\u0005\u0122"+ + "\u0000\u0000\u0d10\u0d11\u0005O\u0000\u0000\u0d11\u0d13\u0003\u014e\u00a7"+ + "\u0000\u0d12\u0d14\u0003d2\u0000\u0d13\u0d12\u0001\u0000\u0000\u0000\u0d13"+ + "\u0d14\u0001\u0000\u0000\u0000\u0d14\u0d16\u0001\u0000\u0000\u0000\u0d15"+ + "\u0d17\u0003h4\u0000\u0d16\u0d15\u0001\u0000\u0000\u0000\u0d16\u0d17\u0001"+ + "\u0000\u0000\u0000\u0d17\u0d19\u0001\u0000\u0000\u0000\u0d18\u0d1a\u0003"+ + "\u013a\u009d\u0000\u0d19\u0d18\u0001\u0000\u0000\u0000\u0d19\u0d1a\u0001"+ + "\u0000\u0000\u0000\u0d1a\u0dcc\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0005"+ + "\u013a\u0000\u0000\u0d1c\u0d1d\u0005;\u0000\u0000\u0d1d\u0d1f\u0003\u0130"+ + "\u0098\u0000\u0d1e\u0d20\u0003h4\u0000\u0d1f\u0d1e\u0001\u0000\u0000\u0000"+ + "\u0d1f\u0d20\u0001\u0000\u0000\u0000\u0d20\u0d22\u0001\u0000\u0000\u0000"+ + "\u0d21\u0d23\u0003\u013a\u009d\u0000\u0d22\u0d21\u0001\u0000\u0000\u0000"+ + "\u0d22\u0d23\u0001\u0000\u0000\u0000\u0d23\u0dcc\u0001\u0000\u0000\u0000"+ + "\u0d24\u0d26\u0005\u000e\u0000\u0000\u0d25\u0d27\u0005\u01be\u0000\u0000"+ + "\u0d26\u0d25\u0001\u0000\u0000\u0000\u0d26\u0d27\u0001\u0000\u0000\u0000"+ + "\u0d27\u0d28\u0001\u0000\u0000\u0000\u0d28\u0d37\u0003\u0156\u00ab\u0000"+ + "\u0d29\u0d2a\u0005\u0088\u0000\u0000\u0d2a\u0d2e\u0005;\u0000\u0000\u0d2b"+ + "\u0d2c\u0005\u00ca\u0000\u0000\u0d2c\u0d2f\u0003\u0130\u0098\u0000\u0d2d"+ + "\u0d2f\u0005\u0167\u0000\u0000\u0d2e\u0d2b\u0001\u0000\u0000\u0000\u0d2e"+ + "\u0d2d\u0001\u0000\u0000\u0000\u0d2f\u0d35\u0001\u0000\u0000\u0000\u0d30"+ + "\u0d33\u00057\u0000\u0000\u0d31\u0d34\u0005\u0216\u0000\u0000\u0d32\u0d34"+ + "\u0005 \u0000\u0000\u0d33\u0d31\u0001\u0000\u0000\u0000\u0d33\u0d32\u0001"+ + "\u0000\u0000\u0000\u0d34\u0d36\u0001\u0000\u0000\u0000\u0d35\u0d30\u0001"+ + "\u0000\u0000\u0000\u0d35\u0d36\u0001\u0000\u0000\u0000\u0d36\u0d38\u0001"+ + "\u0000\u0000\u0000\u0d37\u0d29\u0001\u0000\u0000\u0000\u0d37\u0d38\u0001"+ + "\u0000\u0000\u0000\u0d38\u0d3a\u0001\u0000\u0000\u0000\u0d39\u0d3b\u0003"+ + "\u013a\u009d\u0000\u0d3a\u0d39\u0001\u0000\u0000\u0000\u0d3a\u0d3b\u0001"+ + "\u0000\u0000\u0000\u0d3b\u0dcc\u0001\u0000\u0000\u0000\u0d3c\u0d3e\u0005"+ + "\u008e\u0000\u0000\u0d3d\u0d3f\u0005\u01be\u0000\u0000\u0d3e\u0d3d\u0001"+ + "\u0000\u0000\u0000\u0d3e\u0d3f\u0001\u0000\u0000\u0000\u0d3f\u0d40\u0001"+ + "\u0000\u0000\u0000\u0d40\u0d43\u0005\u0141\u0000\u0000\u0d41\u0d42\u0005"+ + "\u00d6\u0000\u0000\u0d42\u0d44\u0005\u00a4\u0000\u0000\u0d43\u0d41\u0001"+ + "\u0000\u0000\u0000\u0d43\u0d44\u0001\u0000\u0000\u0000\u0d44\u0d45\u0001"+ + "\u0000\u0000\u0000\u0d45\u0d47\u0003\u01c0\u00e0\u0000\u0d46\u0d48\u0005"+ + "\u00b8\u0000\u0000\u0d47\u0d46\u0001\u0000\u0000\u0000\u0d47\u0d48\u0001"+ + "\u0000\u0000\u0000\u0d48\u0d4c\u0001\u0000\u0000\u0000\u0d49\u0d4a\u0005"+ + "\u00bb\u0000\u0000\u0d4a\u0d4b\u0005\u00db\u0000\u0000\u0d4b\u0d4d\u0003"+ + "\u01c0\u00e0\u0000\u0d4c\u0d49\u0001\u0000\u0000\u0000\u0d4c\u0d4d\u0001"+ + "\u0000\u0000\u0000\u0d4d\u0dcc\u0001\u0000\u0000\u0000\u0d4e\u0d50\u0005"+ + "\u0122\u0000\u0000\u0d4f\u0d51\u0005\u01be\u0000\u0000\u0d50\u0d4f\u0001"+ + "\u0000\u0000\u0000\u0d50\u0d51\u0001\u0000\u0000\u0000\u0d51\u0d52\u0001"+ + "\u0000\u0000\u0000\u0d52\u0d58\u0005\u0141\u0000\u0000\u0d53\u0d59\u0003"+ + "\u01c0\u00e0\u0000\u0d54\u0d59\u0003\u0130\u0098\u0000\u0d55\u0d56\u0005"+ + "\u0002\u0000\u0000\u0d56\u0d57\u0005\u0200\u0000\u0000\u0d57\u0d59\u0005"+ + "\u0003\u0000\u0000\u0d58\u0d53\u0001\u0000\u0000\u0000\u0d58\u0d54\u0001"+ + "\u0000\u0000\u0000\u0d58\u0d55\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0001"+ + "\u0000\u0000\u0000\u0d5a\u0d5b\u0005\u0199\u0000\u0000\u0d5b\u0d5c\u0005"+ + "\u0002\u0000\u0000\u0d5c\u0d5d\u0003\u013c\u009e\u0000\u0d5d\u0d5e\u0005"+ + "\u0003\u0000\u0000\u0d5e\u0dcc\u0001\u0000\u0000\u0000\u0d5f\u0d61\u0005"+ + "\u0176\u0000\u0000\u0d60\u0d62\u0003\u00a0P\u0000\u0d61\u0d60\u0001\u0000"+ + "\u0000\u0000\u0d61\u0d62\u0001\u0000\u0000\u0000\u0d62\u0d63\u0001\u0000"+ + "\u0000\u0000\u0d63\u0d65\u0005\u01f1\u0000\u0000\u0d64\u0d66\u0003\u00a0"+ + "P\u0000\u0d65\u0d64\u0001\u0000\u0000\u0000\u0d65\u0d66\u0001\u0000\u0000"+ + "\u0000\u0d66\u0d68\u0001\u0000\u0000\u0000\u0d67\u0d69\u0005\u00b8\u0000"+ + "\u0000\u0d68\u0d67\u0001\u0000\u0000\u0000\u0d68\u0d69\u0001\u0000\u0000"+ + "\u0000\u0d69\u0d6b\u0001\u0000\u0000\u0000\u0d6a\u0d6c\u0003\u013a\u009d"+ + "\u0000\u0d6b\u0d6a\u0001\u0000\u0000\u0000\u0d6b\u0d6c\u0001\u0000\u0000"+ + "\u0000\u0d6c\u0dcc\u0001\u0000\u0000\u0000\u0d6d\u0d6e\u0005\u0176\u0000"+ + "\u0000\u0d6e\u0d6f\u0005\u01f1\u0000\u0000\u0d6f\u0d70\u0005\u01b7\u0000"+ + "\u0000\u0d70\u0d72\u0003\u01c0\u00e0\u0000\u0d71\u0d73\u0003\u013a\u009d"+ + "\u0000\u0d72\u0d71\u0001\u0000\u0000\u0000\u0d72\u0d73\u0001\u0000\u0000"+ + "\u0000\u0d73\u0d75\u0001\u0000\u0000\u0000\u0d74\u0d76\u0005\u00b8\u0000"+ + "\u0000\u0d75\u0d74\u0001\u0000\u0000\u0000\u0d75\u0d76\u0001\u0000\u0000"+ + "\u0000\u0d76\u0dcc\u0001\u0000\u0000\u0000\u0d77\u0d78\u0005\u0173\u0000"+ + "\u0000\u0d78\u0dcc\u0003\u01c0\u00e0\u0000\u0d79\u0d7a\u0005\u0173\u0000"+ + "\u0000\u0d7a\u0d7b\u0005\u0189\u0000\u0000\u0d7b\u0d7c\u0003\u01c0\u00e0"+ + "\u0000\u0d7c\u0d7d\u0003\u01c0\u00e0\u0000\u0d7d\u0dcc\u0001\u0000\u0000"+ + "\u0000\u0d7e\u0d7f\u0005\u0173\u0000\u0000\u0d7f\u0d80\u0005\u0141\u0000"+ + "\u0000\u0d80\u0d81\u0003\u01c0\u00e0\u0000\u0d81\u0d82\u0003\u01c0\u00e0"+ + "\u0000\u0d82\u0dcc\u0001\u0000\u0000\u0000\u0d83\u0d84\u0005\u0173\u0000"+ + "\u0000\u0d84\u0d85\u0005O\u0000\u0000\u0d85\u0d86\u0003\u01c0\u00e0\u0000"+ + "\u0d86\u0d87\u0003\u01c0\u00e0\u0000\u0d87\u0dcc\u0001\u0000\u0000\u0000"+ + "\u0d88\u0d89\u0005\u000e\u0000\u0000\u0d89\u0dcc\u0003\u0152\u00a9\u0000"+ + "\u0d8a\u0d8b\u0005\u008e\u0000\u0000\u0d8b\u0d8e\u0005\u00db\u0000\u0000"+ + "\u0d8c\u0d8d\u0005\u00d6\u0000\u0000\u0d8d\u0d8f\u0005\u00a4\u0000\u0000"+ + "\u0d8e\u0d8c\u0001\u0000\u0000\u0000\u0d8e\u0d8f\u0001\u0000\u0000\u0000"+ + "\u0d8f\u0d90\u0001\u0000\u0000\u0000\u0d90\u0dcc\u0003\u01c0\u00e0\u0000"+ + "\u0d91\u0d92\u0005\u0096\u0000\u0000\u0d92\u0d93\u0005\u00ae\u0000\u0000"+ + "\u0d93\u0d96\u0005\u0211\u0000\u0000\u0d94\u0d95\u0005\u01f1\u0000\u0000"+ + "\u0d95\u0d97\u0003\u013a\u009d\u0000\u0d96\u0d94\u0001\u0000\u0000\u0000"+ + "\u0d96\u0d97\u0001\u0000\u0000\u0000\u0d97\u0dcc\u0001\u0000\u0000\u0000"+ + "\u0d98\u0d99\u0005\u0122\u0000\u0000\u0d99\u0da8\u0005\u0089\u0000\u0000"+ + "\u0d9a\u0d9b\u0005\u0088\u0000\u0000\u0d9b\u0d9f\u0005;\u0000\u0000\u0d9c"+ + "\u0d9d\u0005\u00ca\u0000\u0000\u0d9d\u0da0\u0003\u0130\u0098\u0000\u0d9e"+ + "\u0da0\u0005\u0167\u0000\u0000\u0d9f\u0d9c\u0001\u0000\u0000\u0000\u0d9f"+ + "\u0d9e\u0001\u0000\u0000\u0000\u0da0\u0da6\u0001\u0000\u0000\u0000\u0da1"+ + "\u0da4\u00057\u0000\u0000\u0da2\u0da5\u0005\u0216\u0000\u0000\u0da3\u0da5"+ + "\u0005 \u0000\u0000\u0da4\u0da2\u0001\u0000\u0000\u0000\u0da4\u0da3\u0001"+ + "\u0000\u0000\u0000\u0da5\u0da7\u0001\u0000\u0000\u0000\u0da6\u0da1\u0001"+ + "\u0000\u0000\u0000\u0da6\u0da7\u0001\u0000\u0000\u0000\u0da7\u0da9\u0001"+ + "\u0000\u0000\u0000\u0da8\u0d9a\u0001\u0000\u0000\u0000\u0da8\u0da9\u0001"+ + "\u0000\u0000\u0000\u0da9\u0dcc\u0001\u0000\u0000\u0000\u0daa\u0dab\u0005"+ + "\u0122\u0000\u0000\u0dab\u0dac\u0005Q\u0000\u0000\u0dac\u0dcc\u0005\u0211"+ + "\u0000\u0000\u0dad\u0dae\u0005\u0122\u0000\u0000\u0dae\u0daf\u0005O\u0000"+ + "\u0000\u0daf\u0db0\u0003\u01c0\u00e0\u0000\u0db0\u0db1\u0005Q\u0000\u0000"+ + "\u0db1\u0db2\u0005\u0211\u0000\u0000\u0db2\u0dcc\u0001\u0000\u0000\u0000"+ + "\u0db3\u0db4\u0005\u0122\u0000\u0000\u0db4\u0db5\u0005\u009b\u0000\u0000"+ + "\u0db5\u0db6\u0005\u01c6\u0000\u0000\u0db6\u0db8\u0003\u01c0\u00e0\u0000"+ + "\u0db7\u0db9\u0003\u013a\u009d\u0000\u0db8\u0db7\u0001\u0000\u0000\u0000"+ + "\u0db8\u0db9\u0001\u0000\u0000\u0000\u0db9\u0dcc\u0001\u0000\u0000\u0000"+ + "\u0dba\u0dbc\u0005\u000e\u0000\u0000\u0dbb\u0dbd\u0005\u01be\u0000\u0000"+ + "\u0dbc\u0dbb\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0001\u0000\u0000\u0000"+ + "\u0dbd\u0dbe\u0001\u0000\u0000\u0000\u0dbe\u0dbf\u0005\u0142\u0000\u0000"+ + "\u0dbf\u0dc0\u0005\u00bb\u0000\u0000\u0dc0\u0dc1\u0003\u0160\u00b0\u0000"+ + "\u0dc1\u0dc2\u0005\u01c6\u0000\u0000\u0dc2\u0dc3\u0003\u0160\u00b0\u0000"+ + "\u0dc3\u0dc4\u0005\u00e5\u0000\u0000\u0dc4\u0dc6\u0005\u0216\u0000\u0000"+ + "\u0dc5\u0dc7\u0003\u01c0\u00e0\u0000\u0dc6\u0dc5\u0001\u0000\u0000\u0000"+ + "\u0dc6\u0dc7\u0001\u0000\u0000\u0000\u0dc7\u0dc9\u0001\u0000\u0000\u0000"+ + "\u0dc8\u0dca\u0003\u013a\u009d\u0000\u0dc9\u0dc8\u0001\u0000\u0000\u0000"+ + "\u0dc9\u0dca\u0001\u0000\u0000\u0000\u0dca\u0dcc\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0cef\u0001\u0000\u0000\u0000\u0dcb\u0cfb\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d06\u0001\u0000\u0000\u0000\u0dcb\u0d0f\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d1b\u0001\u0000\u0000\u0000\u0dcb\u0d24\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d3c\u0001\u0000\u0000\u0000\u0dcb\u0d4e\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d5f\u0001\u0000\u0000\u0000\u0dcb\u0d6d\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d77\u0001\u0000\u0000\u0000\u0dcb\u0d79\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d7e\u0001\u0000\u0000\u0000\u0dcb\u0d83\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d88\u0001\u0000\u0000\u0000\u0dcb\u0d8a\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0d91\u0001\u0000\u0000\u0000\u0dcb\u0d98\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0daa\u0001\u0000\u0000\u0000\u0dcb\u0dad\u0001\u0000\u0000\u0000"+ + "\u0dcb\u0db3\u0001\u0000\u0000\u0000\u0dcb\u0dba\u0001\u0000\u0000\u0000"+ + "\u0dccc\u0001\u0000\u0000\u0000\u0dcd\u0dd1\u0005\u00b2\u0000\u0000\u0dce"+ + "\u0dcf\u0005\u0010\u0000\u0000\u0dcf\u0dd1\u0003\u01c0\u00e0\u0000\u0dd0"+ + "\u0dcd\u0001\u0000\u0000\u0000\u0dd0\u0dce\u0001\u0000\u0000\u0000\u0dd1"+ + "e\u0001\u0000\u0000\u0000\u0dd2\u0dd3\u0007\u0014\u0000\u0000\u0dd3\u0dd4"+ + "\u0003\u01c0\u00e0\u0000\u0dd4g\u0001\u0000\u0000\u0000\u0dd5\u0dd6\u0005"+ + "\u00bb\u0000\u0000\u0dd6\u0dd7\u0003\u01c0\u00e0\u0000\u0dd7i\u0001\u0000"+ + "\u0000\u0000\u0dd8\u0dd9\u0005\u008e\u0000\u0000\u0dd9\u0ddc\u0005\u01e9"+ + "\u0000\u0000\u0dda\u0ddb\u0005\u00d6\u0000\u0000\u0ddb\u0ddd\u0005\u00a4"+ + "\u0000\u0000\u0ddc\u0dda\u0001\u0000\u0000\u0000\u0ddc\u0ddd\u0001\u0000"+ + "\u0000\u0000\u0ddd\u0dde\u0001\u0000\u0000\u0000\u0dde\u0e00\u0003\u0146"+ + "\u00a3\u0000\u0ddf\u0de0\u0005\u008e\u0000\u0000\u0de0\u0de3\u0005\u017c"+ + "\u0000\u0000\u0de1\u0de2\u0005\u00d6\u0000\u0000\u0de2\u0de4\u0005\u00a4"+ + "\u0000\u0000\u0de3\u0de1\u0001\u0000\u0000\u0000\u0de3\u0de4\u0001\u0000"+ + "\u0000\u0000\u0de4\u0de5\u0001\u0000\u0000\u0000\u0de5\u0e00\u0003\u00b6"+ + "[\u0000\u0de6\u0de7\u0005\u008e\u0000\u0000\u0de7\u0de8\u0005\u018b\u0000"+ + "\u0000\u0de8\u0deb\u0005\u0156\u0000\u0000\u0de9\u0dea\u0005\u00d6\u0000"+ + "\u0000\u0dea\u0dec\u0005\u00a4\u0000\u0000\u0deb\u0de9\u0001\u0000\u0000"+ + "\u0000\u0deb\u0dec\u0001\u0000\u0000\u0000\u0dec\u0ded\u0001\u0000\u0000"+ + "\u0000\u0ded\u0dee\u0003\u01c0\u00e0\u0000\u0dee\u0def\u0005\u0135\u0000"+ + "\u0000\u0def\u0df6\u0003\u0146\u00a3\u0000\u0df0\u0df4\u0005\u00b6\u0000"+ + "\u0000\u0df1\u0df5\u0003\u00be_\u0000\u0df2\u0df3\u0005\u0186\u0000\u0000"+ + "\u0df3\u0df5\u0003\u01c0\u00e0\u0000\u0df4\u0df1\u0001\u0000\u0000\u0000"+ + "\u0df4\u0df2\u0001\u0000\u0000\u0000\u0df5\u0df7\u0001\u0000\u0000\u0000"+ + "\u0df6\u0df0\u0001\u0000\u0000\u0000\u0df6\u0df7\u0001\u0000\u0000\u0000"+ + "\u0df7\u0e00\u0001\u0000\u0000\u0000\u0df8\u0df9\u0005\u008e\u0000\u0000"+ + "\u0df9\u0dfc\u0005\u01a6\u0000\u0000\u0dfa\u0dfb\u0005\u00d6\u0000\u0000"+ + "\u0dfb\u0dfd\u0005\u00a4\u0000\u0000\u0dfc\u0dfa\u0001\u0000\u0000\u0000"+ + "\u0dfc\u0dfd\u0001\u0000\u0000\u0000\u0dfd\u0dfe\u0001\u0000\u0000\u0000"+ + "\u0dfe\u0e00\u0003\u01c0\u00e0\u0000\u0dff\u0dd8\u0001\u0000\u0000\u0000"+ + "\u0dff\u0ddf\u0001\u0000\u0000\u0000\u0dff\u0de6\u0001\u0000\u0000\u0000"+ + "\u0dff\u0df8\u0001\u0000\u0000\u0000\u0e00k\u0001\u0000\u0000\u0000\u0e01"+ + "\u0e03\u0005\u019d\u0000\u0000\u0e02\u0e04\u0005 \u0000\u0000\u0e03\u0e02"+ + "\u0001\u0000\u0000\u0000\u0e03\u0e04\u0001\u0000\u0000\u0000\u0e04\u0e05"+ + "\u0001\u0000\u0000\u0000\u0e05\u0e08\u0005\u0016\u0000\u0000\u0e06\u0e09"+ + "\u0005\u0216\u0000\u0000\u0e07\u0e09\u0003\u0146\u00a3\u0000\u0e08\u0e06"+ + "\u0001\u0000\u0000\u0000\u0e08\u0e07\u0001\u0000\u0000\u0000\u0e08\u0e09"+ + "\u0001\u0000\u0000\u0000\u0e09\u0e0f\u0001\u0000\u0000\u0000\u0e0a\u0e0b"+ + "\u0005\u01ef\u0000\u0000\u0e0b\u0e0c\u0003\u01c0\u00e0\u0000\u0e0c\u0e0d"+ + "\u0005\u01f7\u0000\u0000\u0e0d\u0e0e\u0005\u0211\u0000\u0000\u0e0e\u0e10"+ + "\u0001\u0000\u0000\u0000\u0e0f\u0e0a\u0001\u0000\u0000\u0000\u0e0f\u0e10"+ + "\u0001\u0000\u0000\u0000\u0e10\u0e46\u0001\u0000\u0000\u0000\u0e11\u0e12"+ + "\u0005\u019d\u0000\u0000\u0e12\u0e13\u0005\u0163\u0000\u0000\u0e13\u0e14"+ + "\u0005\u0016\u0000\u0000\u0e14\u0e16\u0005\u00f0\u0000\u0000\u0e15\u0e17"+ + "\u0003\u0146\u00a3\u0000\u0e16\u0e15\u0001\u0000\u0000\u0000\u0e16\u0e17"+ + "\u0001\u0000\u0000\u0000\u0e17\u0e1d\u0001\u0000\u0000\u0000\u0e18\u0e19"+ + "\u0005\u01ef\u0000\u0000\u0e19\u0e1a\u0003\u01c0\u00e0\u0000\u0e1a\u0e1b"+ + "\u0005\u01f7\u0000\u0000\u0e1b\u0e1c\u0005\u0211\u0000\u0000\u0e1c\u0e1e"+ + "\u0001\u0000\u0000\u0000\u0e1d\u0e18\u0001\u0000\u0000\u0000\u0e1d\u0e1e"+ + "\u0001\u0000\u0000\u0000\u0e1e\u0e46\u0001\u0000\u0000\u0000\u0e1f\u0e20"+ + "\u0005\u019d\u0000\u0000\u0e20\u0e21\u0005O\u0000\u0000\u0e21\u0e22\u0005"+ + "\u00ce\u0000\u0000\u0e22\u0e23\u0003\u0146\u00a3\u0000\u0e23\u0e24\u0003"+ + "\u0130\u0098\u0000\u0e24\u0e46\u0001\u0000\u0000\u0000\u0e25\u0e26\u0005"+ + "\u0016\u0000\u0000\u0e26\u0e27\u0005o\u0000\u0000\u0e27\u0e2c\u0003\u0146"+ + "\u00a3\u0000\u0e28\u0e29\u0005\u01f1\u0000\u0000\u0e29\u0e2b\u0003p8\u0000"+ + "\u0e2a\u0e28\u0001\u0000\u0000\u0000\u0e2b\u0e2e\u0001\u0000\u0000\u0000"+ + "\u0e2c\u0e2a\u0001\u0000\u0000\u0000\u0e2c\u0e2d\u0001\u0000\u0000\u0000"+ + "\u0e2d\u0e30\u0001\u0000\u0000\u0000\u0e2e\u0e2c\u0001\u0000\u0000\u0000"+ + "\u0e2f\u0e31\u0003\u013a\u009d\u0000\u0e30\u0e2f\u0001\u0000\u0000\u0000"+ + "\u0e30\u0e31\u0001\u0000\u0000\u0000\u0e31\u0e46\u0001\u0000\u0000\u0000"+ + "\u0e32\u0e33\u0005\u0016\u0000\u0000\u0e33\u0e34\u0005\u01b7\u0000\u0000"+ + "\u0e34\u0e36\u0003\u0146\u00a3\u0000\u0e35\u0e37\u0003\u00a0P\u0000\u0e36"+ + "\u0e35\u0001\u0000\u0000\u0000\u0e36\u0e37\u0001\u0000\u0000\u0000\u0e37"+ + "\u0e39\u0001\u0000\u0000\u0000\u0e38\u0e3a\u0003\u0130\u0098\u0000\u0e39"+ + "\u0e38\u0001\u0000\u0000\u0000\u0e39\u0e3a\u0001\u0000\u0000\u0000\u0e3a"+ + "\u0e3f\u0001\u0000\u0000\u0000\u0e3b\u0e3c\u0005\u01f1\u0000\u0000\u0e3c"+ + "\u0e3e\u0003p8\u0000\u0e3d\u0e3b\u0001\u0000\u0000\u0000\u0e3e\u0e41\u0001"+ + "\u0000\u0000\u0000\u0e3f\u0e3d\u0001\u0000\u0000\u0000\u0e3f\u0e40\u0001"+ + "\u0000\u0000\u0000\u0e40\u0e43\u0001\u0000\u0000\u0000\u0e41\u0e3f\u0001"+ + "\u0000\u0000\u0000\u0e42\u0e44\u0003\u013a\u009d\u0000\u0e43\u0e42\u0001"+ + "\u0000\u0000\u0000\u0e43\u0e44\u0001\u0000\u0000\u0000\u0e44\u0e46\u0001"+ + "\u0000\u0000\u0000\u0e45\u0e01\u0001\u0000\u0000\u0000\u0e45\u0e11\u0001"+ + "\u0000\u0000\u0000\u0e45\u0e1f\u0001\u0000\u0000\u0000\u0e45\u0e25\u0001"+ + "\u0000\u0000\u0000\u0e45\u0e32\u0001\u0000\u0000\u0000\u0e46m\u0001\u0000"+ + "\u0000\u0000\u0e47\u0e48\u0005\u0015\u0000\u0000\u0e48\u0e49\u0005\u01b7"+ + "\u0000\u0000\u0e49\u0e4a\u0003\u0146\u00a3\u0000\u0e4a\u0e4b\u0005\u0199"+ + "\u0000\u0000\u0e4b\u0e4c\u0005\u01aa\u0000\u0000\u0e4c\u0e4d\u0005\u0002"+ + "\u0000\u0000\u0e4d\u0e4e\u0003\u013c\u009e\u0000\u0e4e\u0e50\u0005\u0003"+ + "\u0000\u0000\u0e4f\u0e51\u0003\u00a0P\u0000\u0e50\u0e4f\u0001\u0000\u0000"+ + "\u0000\u0e50\u0e51\u0001\u0000\u0000\u0000\u0e51\u0ea2\u0001\u0000\u0000"+ + "\u0000\u0e52\u0e53\u0005\u0015\u0000\u0000\u0e53\u0e54\u0005\u01b7\u0000"+ + "\u0000\u0e54\u0e57\u0003\u0146\u00a3\u0000\u0e55\u0e56\u0005\u00db\u0000"+ + "\u0000\u0e56\u0e58\u0003\u01c0\u00e0\u0000\u0e57\u0e55\u0001\u0000\u0000"+ + "\u0000\u0e57\u0e58\u0001\u0000\u0000\u0000\u0e58\u0e59\u0001\u0000\u0000"+ + "\u0000\u0e59\u0e5a\u0005\u0122\u0000\u0000\u0e5a\u0e5b\u0005O\u0000\u0000"+ + "\u0e5b\u0e5c\u0003\u01c0\u00e0\u0000\u0e5c\u0e5d\u0005\u0199\u0000\u0000"+ + "\u0e5d\u0e5e\u0005\u01aa\u0000\u0000\u0e5e\u0e5f\u0005\u0002\u0000\u0000"+ + "\u0e5f\u0e60\u0003\u013c\u009e\u0000\u0e60\u0e62\u0005\u0003\u0000\u0000"+ + "\u0e61\u0e63\u0003\u00a0P\u0000\u0e62\u0e61\u0001\u0000\u0000\u0000\u0e62"+ + "\u0e63\u0001\u0000\u0000\u0000\u0e63\u0ea2\u0001\u0000\u0000\u0000\u0e64"+ + "\u0e65\u0005\u008e\u0000\u0000\u0e65\u0e66\u0005\u01aa\u0000\u0000\u0e66"+ + "\u0e68\u0003\u0146\u00a3\u0000\u0e67\u0e69\u0003\u0130\u0098\u0000\u0e68"+ + "\u0e67\u0001\u0000\u0000\u0000\u0e68\u0e69\u0001\u0000\u0000\u0000\u0e69"+ + "\u0e6b\u0001\u0000\u0000\u0000\u0e6a\u0e6c\u0003\u00a0P\u0000\u0e6b\u0e6a"+ + "\u0001\u0000\u0000\u0000\u0e6b\u0e6c\u0001\u0000\u0000\u0000\u0e6c\u0ea2"+ + "\u0001\u0000\u0000\u0000\u0e6d\u0e6e\u0005\u008e\u0000\u0000\u0e6e\u0e6f"+ + "\u0005=\u0000\u0000\u0e6f\u0e70\u0005\u01aa\u0000\u0000\u0e70\u0ea2\u0003"+ + "\u0146\u00a3\u0000\u0e71\u0e72\u0005\u008e\u0000\u0000\u0e72\u0e73\u0005"+ + "\u00a5\u0000\u0000\u0e73\u0ea2\u0005\u01aa\u0000\u0000\u0e74\u0e75\u0005"+ + "\u008e\u0000\u0000\u0e75\u0e76\u0005\u0016\u0000\u0000\u0e76\u0e77\u0005"+ + "\u00ef\u0000\u0000\u0e77\u0ea2\u0005\u0216\u0000\u0000\u0e78\u0e79\u0005"+ + "\u00f6\u0000\u0000\u0e79\u0e7a\u0005\u0016\u0000\u0000\u0e7a\u0ea2\u0005"+ + "\u0216\u0000\u0000\u0e7b\u0e7c\u0005\u019d\u0000\u0000\u0e7c\u0e7d\u0005"+ + "\u01b7\u0000\u0000\u0e7d\u0e7e\u0005\u01aa\u0000\u0000\u0e7e\u0e80\u0003"+ + "\u0146\u00a3\u0000\u0e7f\u0e81\u0003\u00a0P\u0000\u0e80\u0e7f\u0001\u0000"+ + "\u0000\u0000\u0e80\u0e81\u0001\u0000\u0000\u0000\u0e81\u0e83\u0001\u0000"+ + "\u0000\u0000\u0e82\u0e84\u0003\u0130\u0098\u0000\u0e83\u0e82\u0001\u0000"+ + "\u0000\u0000\u0e83\u0e84\u0001\u0000\u0000\u0000\u0e84\u0ea2\u0001\u0000"+ + "\u0000\u0000\u0e85\u0e86\u0005\u019d\u0000\u0000\u0e86\u0e87\u0005\u01b7"+ + "\u0000\u0000\u0e87\u0e88\u0005\u01aa\u0000\u0000\u0e88\u0ea2\u0005\u0216"+ + "\u0000\u0000\u0e89\u0e8a\u0005\u019d\u0000\u0000\u0e8a\u0e8b\u0005\u00db"+ + "\u0000\u0000\u0e8b\u0e8c\u0005\u01aa\u0000\u0000\u0e8c\u0e8d\u0003\u0146"+ + "\u00a3\u0000\u0e8d\u0e8e\u0003\u01c0\u00e0\u0000\u0e8e\u0ea2\u0001\u0000"+ + "\u0000\u0000\u0e8f\u0e90\u0005\u019d\u0000\u0000\u0e90\u0e92\u0005O\u0000"+ + "\u0000\u0e91\u0e93\u0005=\u0000\u0000\u0e92\u0e91\u0001\u0000\u0000\u0000"+ + "\u0e92\u0e93\u0001\u0000\u0000\u0000\u0e93\u0e94\u0001\u0000\u0000\u0000"+ + "\u0e94\u0e95\u0005\u01aa\u0000\u0000\u0e95\u0e97\u0003\u0146\u00a3\u0000"+ + "\u0e96\u0e98\u0003\u0130\u0098\u0000\u0e97\u0e96\u0001\u0000\u0000\u0000"+ + "\u0e97\u0e98\u0001\u0000\u0000\u0000\u0e98\u0e9a\u0001\u0000\u0000\u0000"+ + "\u0e99\u0e9b\u0003\u00a0P\u0000\u0e9a\u0e99\u0001\u0000\u0000\u0000\u0e9a"+ + "\u0e9b\u0001\u0000\u0000\u0000\u0e9b\u0ea2\u0001\u0000\u0000\u0000\u0e9c"+ + "\u0e9d\u0005\u019d\u0000\u0000\u0e9d\u0e9e\u0005\u0016\u0000\u0000\u0e9e"+ + "\u0e9f\u0005\u01bc\u0000\u0000\u0e9f\u0ea0\u0005\u01ab\u0000\u0000\u0ea0"+ + "\u0ea2\u0005\u0216\u0000\u0000\u0ea1\u0e47\u0001\u0000\u0000\u0000\u0ea1"+ + "\u0e52\u0001\u0000\u0000\u0000\u0ea1\u0e64\u0001\u0000\u0000\u0000\u0ea1"+ + "\u0e6d\u0001\u0000\u0000\u0000\u0ea1\u0e71\u0001\u0000\u0000\u0000\u0ea1"+ + "\u0e74\u0001\u0000\u0000\u0000\u0ea1\u0e78\u0001\u0000\u0000\u0000\u0ea1"+ + "\u0e7b\u0001\u0000\u0000\u0000\u0ea1\u0e85\u0001\u0000\u0000\u0000\u0ea1"+ + "\u0e89\u0001\u0000\u0000\u0000\u0ea1\u0e8f\u0001\u0000\u0000\u0000\u0ea1"+ + "\u0e9c\u0001\u0000\u0000\u0000\u0ea2o\u0001\u0000\u0000\u0000\u0ea3\u0eb6"+ + "\u0005\u01b5\u0000\u0000\u0ea4\u0eb6\u0005\u00da\u0000\u0000\u0ea5\u0eb6"+ + "\u0005\u00be\u0000\u0000\u0ea6\u0eb6\u0005\u01a4\u0000\u0000\u0ea7\u0eb6"+ + "\u0005\u00ce\u0000\u0000\u0ea8\u0ead\u0005\u018e\u0000\u0000\u0ea9\u0eaa"+ + "\u0005\u018c\u0000\u0000\u0eaa\u0eae\u0005\u0216\u0000\u0000\u0eab\u0eac"+ + "\u0005\u014a\u0000\u0000\u0eac\u0eae\u0005\u0216\u0000\u0000\u0ead\u0ea9"+ + "\u0001\u0000\u0000\u0000\u0ead\u0eab\u0001\u0000\u0000\u0000\u0eae\u0eb6"+ + "\u0001\u0000\u0000\u0000\u0eaf\u0eb0\u00057\u0000\u0000\u0eb0\u0eb6\u0005"+ + "\u0216\u0000\u0000\u0eb1\u0eb2\u0005\u014b\u0000\u0000\u0eb2\u0eb6\u0005"+ + "\u0216\u0000\u0000\u0eb3\u0eb4\u0005e\u0000\u0000\u0eb4\u0eb6\u0005\u0211"+ + "\u0000\u0000\u0eb5\u0ea3\u0001\u0000\u0000\u0000\u0eb5\u0ea4\u0001\u0000"+ + "\u0000\u0000\u0eb5\u0ea5\u0001\u0000\u0000\u0000\u0eb5\u0ea6\u0001\u0000"+ + "\u0000\u0000\u0eb5\u0ea7\u0001\u0000\u0000\u0000\u0eb5\u0ea8\u0001\u0000"+ + "\u0000\u0000\u0eb5\u0eaf\u0001\u0000\u0000\u0000\u0eb5\u0eb1\u0001\u0000"+ + "\u0000\u0000\u0eb5\u0eb3\u0001\u0000\u0000\u0000\u0eb6q\u0001\u0000\u0000"+ + "\u0000\u0eb7\u0eb8\u0005c\u0000\u0000\u0eb8\u0ebc\u0007\u000b\u0000\u0000"+ + "\u0eb9\u0eba\u0005\u00d6\u0000\u0000\u0eba\u0ebb\u0005\u012f\u0000\u0000"+ + "\u0ebb\u0ebd\u0005\u00a4\u0000\u0000\u0ebc\u0eb9\u0001\u0000\u0000\u0000"+ + "\u0ebc\u0ebd\u0001\u0000\u0000\u0000\u0ebd\u0ebe\u0001\u0000\u0000\u0000"+ + "\u0ebe\u0ec0\u0003\u0146\u00a3\u0000\u0ebf\u0ec1\u0003\u013a\u009d\u0000"+ + "\u0ec0\u0ebf\u0001\u0000\u0000\u0000\u0ec0\u0ec1\u0001\u0000\u0000\u0000"+ + "\u0ec1\u0f1f\u0001\u0000\u0000\u0000\u0ec2\u0ec3\u0005c\u0000\u0000\u0ec3"+ + "\u0ec7\u0005\u01dc\u0000\u0000\u0ec4\u0ec5\u0005\u00d6\u0000\u0000\u0ec5"+ + "\u0ec6\u0005\u012f\u0000\u0000\u0ec6\u0ec8\u0005\u00a4\u0000\u0000\u0ec7"+ + "\u0ec4\u0001\u0000\u0000\u0000\u0ec7\u0ec8\u0001\u0000\u0000\u0000\u0ec8"+ + "\u0ec9\u0001\u0000\u0000\u0000\u0ec9\u0ece\u0003\u00c0`\u0000\u0eca\u0ecf"+ + "\u0005\u01b3\u0000\u0000\u0ecb\u0ecc\u0005|\u0000\u0000\u0ecc\u0ecd\u0005"+ + "\u0186\u0000\u0000\u0ecd\u0ecf\u0005\u0211\u0000\u0000\u0ece\u0eca\u0001"+ + "\u0000\u0000\u0000\u0ece\u0ecb\u0001\u0000\u0000\u0000\u0ece\u0ecf\u0001"+ + "\u0000\u0000\u0000\u0ecf\u0ed0\u0001\u0000\u0000\u0000\u0ed0\u0ed3\u0003"+ + "~?\u0000\u0ed1\u0ed2\u0005Q\u0000\u0000\u0ed2\u0ed4\u0005\u0211\u0000"+ + "\u0000\u0ed3\u0ed1\u0001\u0000\u0000\u0000\u0ed3\u0ed4\u0001\u0000\u0000"+ + "\u0000\u0ed4\u0f1f\u0001\u0000\u0000\u0000\u0ed5\u0ed8\u0005c\u0000\u0000"+ + "\u0ed6\u0ed7\u0005\u0169\u0000\u0000\u0ed7\u0ed9\u0005\u0136\u0000\u0000"+ + "\u0ed8\u0ed6\u0001\u0000\u0000\u0000\u0ed8\u0ed9\u0001\u0000\u0000\u0000"+ + "\u0ed9\u0eda\u0001\u0000\u0000\u0000\u0eda\u0edb\u0005\u017b\u0000\u0000"+ + "\u0edb\u0edc\u0003\u01c0\u00e0\u0000\u0edc\u0edd\u0005\u01f1\u0000\u0000"+ + "\u0edd\u0ede\u0003|>\u0000\u0ede\u0f1f\u0001\u0000\u0000\u0000\u0edf\u0ee1"+ + "\u0005c\u0000\u0000\u0ee0\u0ee2\u0005\u00a9\u0000\u0000\u0ee1\u0ee0\u0001"+ + "\u0000\u0000\u0000\u0ee1\u0ee2\u0001\u0000\u0000\u0000\u0ee2\u0ee3\u0001"+ + "\u0000\u0000\u0000\u0ee3\u0ee7\u0005\u017c\u0000\u0000\u0ee4\u0ee5\u0005"+ + "\u00d6\u0000\u0000\u0ee5\u0ee6\u0005\u012f\u0000\u0000\u0ee6\u0ee8\u0005"+ + "\u00a4\u0000\u0000\u0ee7\u0ee4\u0001\u0000\u0000\u0000\u0ee7\u0ee8\u0001"+ + "\u0000\u0000\u0000\u0ee8\u0ee9\u0001\u0000\u0000\u0000\u0ee9\u0eeb\u0003"+ + "\u00b6[\u0000\u0eea\u0eec\u0003\u013a\u009d\u0000\u0eeb\u0eea\u0001\u0000"+ + "\u0000\u0000\u0eeb\u0eec\u0001\u0000\u0000\u0000\u0eec\u0f1f\u0001\u0000"+ + "\u0000\u0000\u0eed\u0eee\u0005c\u0000\u0000\u0eee\u0eef\u0005\u01ad\u0000"+ + "\u0000\u0eef\u0ef3\u0005\u01e5\u0000\u0000\u0ef0\u0ef1\u0005\u00d6\u0000"+ + "\u0000\u0ef1\u0ef2\u0005\u012f\u0000\u0000\u0ef2\u0ef4\u0005\u00a4\u0000"+ + "\u0000\u0ef3\u0ef0\u0001\u0000\u0000\u0000\u0ef3\u0ef4\u0001\u0000\u0000"+ + "\u0000\u0ef4\u0ef5\u0001\u0000\u0000\u0000\u0ef5\u0ef7\u0003\u00b6[\u0000"+ + "\u0ef6\u0ef8\u0003\u013a\u009d\u0000\u0ef7\u0ef6\u0001\u0000\u0000\u0000"+ + "\u0ef7\u0ef8\u0001\u0000\u0000\u0000\u0ef8\u0f1f\u0001\u0000\u0000\u0000"+ + "\u0ef9\u0efa\u0005c\u0000\u0000\u0efa\u0efb\u0005\u01f3\u0000\u0000\u0efb"+ + "\u0eff\u0005\u0156\u0000\u0000\u0efc\u0efd\u0005\u00d6\u0000\u0000\u0efd"+ + "\u0efe\u0005\u012f\u0000\u0000\u0efe\u0f00\u0005\u00a4\u0000\u0000\u0eff"+ + "\u0efc\u0001\u0000\u0000\u0000\u0eff\u0f00\u0001\u0000\u0000\u0000\u0f00"+ + "\u0f01\u0001\u0000\u0000\u0000\u0f01\u0f07\u0003\u00b6[\u0000\u0f02\u0f03"+ + "\u0005X\u0000\u0000\u0f03\u0f04\u0005\u0002\u0000\u0000\u0f04\u0f05\u0003"+ + "x<\u0000\u0f05\u0f06\u0005\u0003\u0000\u0000\u0f06\u0f08\u0001\u0000\u0000"+ + "\u0000\u0f07\u0f02\u0001\u0000\u0000\u0000\u0f07\u0f08\u0001\u0000\u0000"+ + "\u0000\u0f08\u0f0e\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0005\r\u0000\u0000"+ + "\u0f0a\u0f0b\u0005\u0002\u0000\u0000\u0f0b\u0f0c\u0003t:\u0000\u0f0c\u0f0d"+ + "\u0005\u0003\u0000\u0000\u0f0d\u0f0f\u0001\u0000\u0000\u0000\u0f0e\u0f09"+ + "\u0001\u0000\u0000\u0000\u0f0e\u0f0f\u0001\u0000\u0000\u0000\u0f0f\u0f11"+ + "\u0001\u0000\u0000\u0000\u0f10\u0f12\u0003\u013a\u009d\u0000\u0f11\u0f10"+ + "\u0001\u0000\u0000\u0000\u0f11\u0f12\u0001\u0000\u0000\u0000\u0f12\u0f1f"+ + "\u0001\u0000\u0000\u0000\u0f13\u0f14\u0005c\u0000\u0000\u0f14\u0f18\u0005"+ + "\u01a6\u0000\u0000\u0f15\u0f16\u0005\u00d6\u0000\u0000\u0f16\u0f17\u0005"+ + "\u012f\u0000\u0000\u0f17\u0f19\u0005\u00a4\u0000\u0000\u0f18\u0f15\u0001"+ + "\u0000\u0000\u0000\u0f18\u0f19\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0001"+ + "\u0000\u0000\u0000\u0f1a\u0f1c\u0003\u01c0\u00e0\u0000\u0f1b\u0f1d\u0003"+ + "\u013a\u009d\u0000\u0f1c\u0f1b\u0001\u0000\u0000\u0000\u0f1c\u0f1d\u0001"+ + "\u0000\u0000\u0000\u0f1d\u0f1f\u0001\u0000\u0000\u0000\u0f1e\u0eb7\u0001"+ + "\u0000\u0000\u0000\u0f1e\u0ec2\u0001\u0000\u0000\u0000\u0f1e\u0ed5\u0001"+ + "\u0000\u0000\u0000\u0f1e\u0edf\u0001\u0000\u0000\u0000\u0f1e\u0eed\u0001"+ + "\u0000\u0000\u0000\u0f1e\u0ef9\u0001\u0000\u0000\u0000\u0f1e\u0f13\u0001"+ + "\u0000\u0000\u0000\u0f1fs\u0001\u0000\u0000\u0000\u0f20\u0f25\u0003v;"+ + "\u0000\u0f21\u0f22\u0005\u0004\u0000\u0000\u0f22\u0f24\u0003v;\u0000\u0f23"+ + "\u0f21\u0001\u0000\u0000\u0000\u0f24\u0f27\u0001\u0000\u0000\u0000\u0f25"+ + "\u0f23\u0001\u0000\u0000\u0000\u0f25\u0f26\u0001\u0000\u0000\u0000\u0f26"+ + "u\u0001\u0000\u0000\u0000\u0f27\u0f25\u0001\u0000\u0000\u0000\u0f28\u0f29"+ + "\u0005\u019b\u0000\u0000\u0f29\u0f2f\u0005\u0211\u0000\u0000\u0f2a\u0f2c"+ + "\u0003\u01c0\u00e0\u0000\u0f2b\u0f2d\u0005\u0211\u0000\u0000\u0f2c\u0f2b"+ + "\u0001\u0000\u0000\u0000\u0f2c\u0f2d\u0001\u0000\u0000\u0000\u0f2d\u0f2f"+ + "\u0001\u0000\u0000\u0000\u0f2e\u0f28\u0001\u0000\u0000\u0000\u0f2e\u0f2a"+ + "\u0001\u0000\u0000\u0000\u0f2fw\u0001\u0000\u0000\u0000\u0f30\u0f35\u0003"+ + "z=\u0000\u0f31\u0f32\u0005\u0004\u0000\u0000\u0f32\u0f34\u0003z=\u0000"+ + "\u0f33\u0f31\u0001\u0000\u0000\u0000\u0f34\u0f37\u0001\u0000\u0000\u0000"+ + "\u0f35\u0f33\u0001\u0000\u0000\u0000\u0f35\u0f36\u0001\u0000\u0000\u0000"+ + "\u0f36y\u0001\u0000\u0000\u0000\u0f37\u0f35\u0001\u0000\u0000\u0000\u0f38"+ + "\u0f39\u0003\u01c0\u00e0\u0000\u0f39\u0f3c\u0003\u019a\u00cd\u0000\u0f3a"+ + "\u0f3d\u0003\u01c6\u00e3\u0000\u0f3b\u0f3d\u0005\u0211\u0000\u0000\u0f3c"+ + "\u0f3a\u0001\u0000\u0000\u0000\u0f3c\u0f3b\u0001\u0000\u0000\u0000\u0f3d"+ + "{\u0001\u0000\u0000\u0000\u0f3e\u0f40\u0007\u0015\u0000\u0000\u0f3f\u0f41"+ + "\u0003\u01c0\u00e0\u0000\u0f40\u0f3f\u0001\u0000\u0000\u0000\u0f40\u0f41"+ + "\u0001\u0000\u0000\u0000\u0f41\u0f42\u0001\u0000\u0000\u0000\u0f42\u0f43"+ + "\u0005\u0135\u0000\u0000\u0f43\u0f44\u0005\u0109\u0000\u0000\u0f44\u0f46"+ + "\u0005\u0211\u0000\u0000\u0f45\u0f47\u0003\u013a\u009d\u0000\u0f46\u0f45"+ + "\u0001\u0000\u0000\u0000\u0f46\u0f47\u0001\u0000\u0000\u0000\u0f47}\u0001"+ + "\u0000\u0000\u0000\u0f48\u0f4b\u0005\u0145\u0000\u0000\u0f49\u0f4c\u0005"+ + "|\u0000\u0000\u0f4a\u0f4c\u0005\u0216\u0000\u0000\u0f4b\u0f49\u0001\u0000"+ + "\u0000\u0000\u0f4b\u0f4a\u0001\u0000\u0000\u0000\u0f4c\u0f4e\u0001\u0000"+ + "\u0000\u0000\u0f4d\u0f48\u0001\u0000\u0000\u0000\u0f4d\u0f4e\u0001\u0000"+ + "\u0000\u0000\u0f4e\u0f57\u0001\u0000\u0000\u0000\u0f4f\u0f55\u0005\u0144"+ + "\u0000\u0000\u0f50\u0f56\u0005|\u0000\u0000\u0f51\u0f56\u0005\u0129\u0000"+ + "\u0000\u0f52\u0f53\u0005\u00e5\u0000\u0000\u0f53\u0f54\u0005\u0216\u0000"+ + "\u0000\u0f54\u0f56\u0007\u0016\u0000\u0000\u0f55\u0f50\u0001\u0000\u0000"+ + "\u0000\u0f55\u0f51\u0001\u0000\u0000\u0000\u0f55\u0f52\u0001\u0000\u0000"+ + "\u0000\u0f56\u0f58\u0001\u0000\u0000\u0000\u0f57\u0f4f\u0001\u0000\u0000"+ + "\u0000\u0f57\u0f58\u0001\u0000\u0000\u0000\u0f58\u0f60\u0001\u0000\u0000"+ + "\u0000\u0f59\u0f5a\u0005\u0147\u0000\u0000\u0f5a\u0f5e\u0005\u00e5\u0000"+ + "\u0000\u0f5b\u0f5f\u0005|\u0000\u0000\u0f5c\u0f5d\u0005\u0216\u0000\u0000"+ + "\u0f5d\u0f5f\u0005w\u0000\u0000\u0f5e\u0f5b\u0001\u0000\u0000\u0000\u0f5e"+ + "\u0f5c\u0001\u0000\u0000\u0000\u0f5f\u0f61\u0001\u0000\u0000\u0000\u0f60"+ + "\u0f59\u0001\u0000\u0000\u0000\u0f60\u0f61\u0001\u0000\u0000\u0000\u0f61"+ + "\u0f64\u0001\u0000\u0000\u0000\u0f62\u0f63\u0005\u00ab\u0000\u0000\u0f63"+ + "\u0f65\u0005\u0216\u0000\u0000\u0f64\u0f62\u0001\u0000\u0000\u0000\u0f64"+ + "\u0f65\u0001\u0000\u0000\u0000\u0f65\u0f6c\u0001\u0000\u0000\u0000\u0f66"+ + "\u0f6a\u0005\u0146\u0000\u0000\u0f67\u0f6b\u0005\u01d1\u0000\u0000\u0f68"+ + "\u0f69\u0005\u0216\u0000\u0000\u0f69\u0f6b\u0007\u0016\u0000\u0000\u0f6a"+ + "\u0f67\u0001\u0000\u0000\u0000\u0f6a\u0f68\u0001\u0000\u0000\u0000\u0f6b"+ + "\u0f6d\u0001\u0000\u0000\u0000\u0f6c\u0f66\u0001\u0000\u0000\u0000\u0f6c"+ + "\u0f6d\u0001\u0000\u0000\u0000\u0f6d\u0f6f\u0001\u0000\u0000\u0000\u0f6e"+ + "\u0f70\u0007\u0017\u0000\u0000\u0f6f\u0f6e\u0001\u0000\u0000\u0000\u0f6f"+ + "\u0f70\u0001\u0000\u0000\u0000\u0f70\u007f\u0001\u0000\u0000\u0000\u0f71"+ + "\u0f78\u0005\u0006\u0000\u0000\u0f72\u0f78\u0003\u0082A\u0000\u0f73\u0f74"+ + "\u0003\u0082A\u0000\u0f74\u0f75\u0005\u0004\u0000\u0000\u0f75\u0f76\u0005"+ + "\u0006\u0000\u0000\u0f76\u0f78\u0001\u0000\u0000\u0000\u0f77\u0f71\u0001"+ + "\u0000\u0000\u0000\u0f77\u0f72\u0001\u0000\u0000\u0000\u0f77\u0f73\u0001"+ + "\u0000\u0000\u0000\u0f78\u0081\u0001\u0000\u0000\u0000\u0f79\u0f7e\u0003"+ + "\u01a6\u00d3\u0000\u0f7a\u0f7b\u0005\u0004\u0000\u0000\u0f7b\u0f7d\u0003"+ + "\u01a6\u00d3\u0000\u0f7c\u0f7a\u0001\u0000\u0000\u0000\u0f7d\u0f80\u0001"+ + "\u0000\u0000\u0000\u0f7e\u0f7c\u0001\u0000\u0000\u0000\u0f7e\u0f7f\u0001"+ + "\u0000\u0000\u0000\u0f7f\u0083\u0001\u0000\u0000\u0000\u0f80\u0f7e\u0001"+ + "\u0000\u0000\u0000\u0f81\u0f84\u0005\u0199\u0000\u0000\u0f82\u0f85\u0003"+ + "\u0086C\u0000\u0f83\u0f85\u0003\u0088D\u0000\u0f84\u0f82\u0001\u0000\u0000"+ + "\u0000\u0f84\u0f83\u0001\u0000\u0000\u0000\u0f85\u0f8d\u0001\u0000\u0000"+ + "\u0000\u0f86\u0f89\u0005\u0004\u0000\u0000\u0f87\u0f8a\u0003\u0086C\u0000"+ + "\u0f88\u0f8a\u0003\u0088D\u0000\u0f89\u0f87\u0001\u0000\u0000\u0000\u0f89"+ + "\u0f88\u0001\u0000\u0000\u0000\u0f8a\u0f8c\u0001\u0000\u0000\u0000\u0f8b"+ + "\u0f86\u0001\u0000\u0000\u0000\u0f8c\u0f8f\u0001\u0000\u0000\u0000\u0f8d"+ + "\u0f8b\u0001\u0000\u0000\u0000\u0f8d\u0f8e\u0001\u0000\u0000\u0000\u0f8e"+ + "\u0fb0\u0001\u0000\u0000\u0000\u0f8f\u0f8d\u0001\u0000\u0000\u0000\u0f90"+ + "\u0f91\u0005\u0199\u0000\u0000\u0f91\u0f92\u0003\u01c0\u00e0\u0000\u0f92"+ + "\u0f93\u0005\u001c\u0000\u0000\u0f93\u0f94\u0005|\u0000\u0000\u0f94\u0f95"+ + "\u0005\u01ad\u0000\u0000\u0f95\u0f96\u0005\u01e5\u0000\u0000\u0f96\u0fb0"+ + "\u0001\u0000\u0000\u0000\u0f97\u0f98\u0005\u0199\u0000\u0000\u0f98\u0f9b"+ + "\u0005\u015f\u0000\u0000\u0f99\u0f9a\u0005\u00b6\u0000\u0000\u0f9a\u0f9c"+ + "\u0003\u00b6[\u0000\u0f9b\u0f99\u0001\u0000\u0000\u0000\u0f9b\u0f9c\u0001"+ + "\u0000\u0000\u0000\u0f9c\u0f9d\u0001\u0000\u0000\u0000\u0f9d\u0fb0\u0003"+ + "\u013c\u009e\u0000\u0f9e\u0fa0\u0005\u0199\u0000\u0000\u0f9f\u0fa1\u0003"+ + "\u00aaU\u0000\u0fa0\u0f9f\u0001\u0000\u0000\u0000\u0fa0\u0fa1\u0001\u0000"+ + "\u0000\u0000\u0fa1\u0fa2\u0001\u0000\u0000\u0000\u0fa2\u0fad\u0005\u01c7"+ + "\u0000\u0000\u0fa3\u0fae\u0003\u008cF\u0000\u0fa4\u0fae\u0003\u008eG\u0000"+ + "\u0fa5\u0fa6\u0003\u008cF\u0000\u0fa6\u0fa7\u0005\u0004\u0000\u0000\u0fa7"+ + "\u0fa8\u0003\u008eG\u0000\u0fa8\u0fae\u0001\u0000\u0000\u0000\u0fa9\u0faa"+ + "\u0003\u008eG\u0000\u0faa\u0fab\u0005\u0004\u0000\u0000\u0fab\u0fac\u0003"+ + "\u008cF\u0000\u0fac\u0fae\u0001\u0000\u0000\u0000\u0fad\u0fa3\u0001\u0000"+ + "\u0000\u0000\u0fad\u0fa4\u0001\u0000\u0000\u0000\u0fad\u0fa5\u0001\u0000"+ + "\u0000\u0000\u0fad\u0fa9\u0001\u0000\u0000\u0000\u0fae\u0fb0\u0001\u0000"+ + "\u0000\u0000\u0faf\u0f81\u0001\u0000\u0000\u0000\u0faf\u0f90\u0001\u0000"+ + "\u0000\u0000\u0faf\u0f97\u0001\u0000\u0000\u0000\u0faf\u0f9e\u0001\u0000"+ + "\u0000\u0000\u0fb0\u0085\u0001\u0000\u0000\u0000\u0fb1\u0fb2\u0003\u00aa"+ + "U\u0000\u0fb2\u0fb3\u0003\u01c0\u00e0\u0000\u0fb3\u0fb6\u0005\u01f7\u0000"+ + "\u0000\u0fb4\u0fb7\u0003\u0172\u00b9\u0000\u0fb5\u0fb7\u0005|\u0000\u0000"+ + "\u0fb6\u0fb4\u0001\u0000\u0000\u0000\u0fb6\u0fb5\u0001\u0000\u0000\u0000"+ + "\u0fb7\u0087\u0001\u0000\u0000\u0000\u0fb8\u0fb9\u0005\u0126\u0000\u0000"+ + "\u0fb9\u0fba\u0005\u01f7\u0000\u0000\u0fba\u0fe6\u0003\u0172\u00b9\u0000"+ + "\u0fbb\u0fbc\u0005E\u0000\u0000\u0fbc\u0fbf\u0005\u0199\u0000\u0000\u0fbd"+ + "\u0fbf\u0005F\u0000\u0000\u0fbe\u0fbb\u0001\u0000\u0000\u0000\u0fbe\u0fbd"+ + "\u0001\u0000\u0000\u0000\u0fbf\u0fc2\u0001\u0000\u0000\u0000\u0fc0\u0fc3"+ + "\u0003\u00b6[\u0000\u0fc1\u0fc3\u0005|\u0000\u0000\u0fc2\u0fc0\u0001\u0000"+ + "\u0000\u0000\u0fc2\u0fc1\u0001\u0000\u0000\u0000\u0fc3\u0fe6\u0001\u0000"+ + "\u0000\u0000\u0fc4\u0fc7\u0005\u0126\u0000\u0000\u0fc5\u0fc8\u0003\u00b6"+ + "[\u0000\u0fc6\u0fc8\u0005|\u0000\u0000\u0fc7\u0fc5\u0001\u0000\u0000\u0000"+ + "\u0fc7\u0fc6\u0001\u0000\u0000\u0000\u0fc8\u0fcc\u0001\u0000\u0000\u0000"+ + "\u0fc9\u0fca\u0005K\u0000\u0000\u0fca\u0fcd\u0003\u00b6[\u0000\u0fcb\u0fcd"+ + "\u0005|\u0000\u0000\u0fcc\u0fc9\u0001\u0000\u0000\u0000\u0fcc\u0fcb\u0001"+ + "\u0000\u0000\u0000\u0fcc\u0fcd\u0001\u0000\u0000\u0000\u0fcd\u0fe6\u0001"+ + "\u0000\u0000\u0000\u0fce\u0fd1\u0005\u0143\u0000\u0000\u0fcf\u0fd0\u0005"+ + "\u00b6\u0000\u0000\u0fd0\u0fd2\u0003\u00be_\u0000\u0fd1\u0fcf\u0001\u0000"+ + "\u0000\u0000\u0fd1\u0fd2\u0001\u0000\u0000\u0000\u0fd2\u0fd3\u0001\u0000"+ + "\u0000\u0000\u0fd3\u0fd9\u0005\u01f7\u0000\u0000\u0fd4\u0fda\u0005\u0211"+ + "\u0000\u0000\u0fd5\u0fd6\u0005\u0143\u0000\u0000\u0fd6\u0fd7\u0005\u0002"+ + "\u0000\u0000\u0fd7\u0fd8\u0005\u0211\u0000\u0000\u0fd8\u0fda\u0005\u0003"+ + "\u0000\u0000\u0fd9\u0fd4\u0001\u0000\u0000\u0000\u0fd9\u0fd5\u0001\u0000"+ + "\u0000\u0000\u0fda\u0fe6\u0001\u0000\u0000\u0000\u0fdb\u0fdc\u0005\u00fc"+ + "\u0000\u0000\u0fdc\u0fe2\u0005\u01f7\u0000\u0000\u0fdd\u0fe3\u0005\u0211"+ + "\u0000\u0000\u0fde\u0fdf\u0005\u0143\u0000\u0000\u0fdf\u0fe0\u0005\u0002"+ + "\u0000\u0000\u0fe0\u0fe1\u0005\u0211\u0000\u0000\u0fe1\u0fe3\u0005\u0003"+ + "\u0000\u0000\u0fe2\u0fdd\u0001\u0000\u0000\u0000\u0fe2\u0fde\u0001\u0000"+ + "\u0000\u0000\u0fe3\u0fe6\u0001\u0000\u0000\u0000\u0fe4\u0fe6\u0003\u008a"+ + "E\u0000\u0fe5\u0fb8\u0001\u0000\u0000\u0000\u0fe5\u0fbe\u0001\u0000\u0000"+ + "\u0000\u0fe5\u0fc4\u0001\u0000\u0000\u0000\u0fe5\u0fce\u0001\u0000\u0000"+ + "\u0000\u0fe5\u0fdb\u0001\u0000\u0000\u0000\u0fe5\u0fe4\u0001\u0000\u0000"+ + "\u0000\u0fe6\u0089\u0001\u0000\u0000\u0000\u0fe7\u0feb\u0005\u0210\u0000"+ + "\u0000\u0fe8\u0fe9\u0003\u00aaU\u0000\u0fe9\u0fea\u0005\u0005\u0000\u0000"+ + "\u0fea\u0fec\u0001\u0000\u0000\u0000\u0feb\u0fe8\u0001\u0000\u0000\u0000"+ + "\u0feb\u0fec\u0001\u0000\u0000\u0000\u0fec\u0fee\u0001\u0000\u0000\u0000"+ + "\u0fed\u0fe7\u0001\u0000\u0000\u0000\u0fed\u0fee\u0001\u0000\u0000\u0000"+ + "\u0fee\u0fef\u0001\u0000\u0000\u0000\u0fef\u0ff0\u0003\u01c0\u00e0\u0000"+ + "\u0ff0\u0ff3\u0005\u01f7\u0000\u0000\u0ff1\u0ff4\u0003\u0172\u00b9\u0000"+ + "\u0ff2\u0ff4\u0005|\u0000\u0000\u0ff3\u0ff1\u0001\u0000\u0000\u0000\u0ff3"+ + "\u0ff2\u0001\u0000\u0000\u0000\u0ff4\u0ffb\u0001\u0000\u0000\u0000\u0ff5"+ + "\u0ff6\u0005\u020f\u0000\u0000\u0ff6\u0ff7\u0003\u01c0\u00e0\u0000\u0ff7"+ + "\u0ff8\u0005\u01f7\u0000\u0000\u0ff8\u0ff9\u0003\u0172\u00b9\u0000\u0ff9"+ + "\u0ffb\u0001\u0000\u0000\u0000\u0ffa\u0fed\u0001\u0000\u0000\u0000\u0ffa"+ + "\u0ff5\u0001\u0000\u0000\u0000\u0ffb\u008b\u0001\u0000\u0000\u0000\u0ffc"+ + "\u0ffd\u0005\u0169\u0000\u0000\u0ffd\u0ffe\u0007\u0018\u0000\u0000\u0ffe"+ + "\u008d\u0001\u0000\u0000\u0000\u0fff\u1000\u0005\u00ee\u0000\u0000\u1000"+ + "\u1008\u0005\u00ff\u0000\u0000\u1001\u1002\u0005\u0169\u0000\u0000\u1002"+ + "\u1009\u0005\u01d2\u0000\u0000\u1003\u1004\u0005\u0169\u0000\u0000\u1004"+ + "\u1009\u0005S\u0000\u0000\u1005\u1006\u0005\u0175\u0000\u0000\u1006\u1009"+ + "\u0005\u0169\u0000\u0000\u1007\u1009\u0005\u0196\u0000\u0000\u1008\u1001"+ + "\u0001\u0000\u0000\u0000\u1008\u1003\u0001\u0000\u0000\u0000\u1008\u1005"+ + "\u0001\u0000\u0000\u0000\u1008\u1007\u0001\u0000\u0000\u0000\u1009\u008f"+ + "\u0001\u0000\u0000\u0000\u100a\u100c\u0005\u01d7\u0000\u0000\u100b\u100d"+ + "\u0003\u00aaU\u0000\u100c\u100b\u0001\u0000\u0000\u0000\u100c\u100d\u0001"+ + "\u0000\u0000\u0000\u100d\u100e\u0001\u0000\u0000\u0000\u100e\u1011\u0005"+ + "\u01e2\u0000\u0000\u100f\u1012\u0005\u0014\u0000\u0000\u1010\u1012\u0003"+ + "\u01c0\u00e0\u0000\u1011\u100f\u0001\u0000\u0000\u0000\u1011\u1010\u0001"+ + "\u0000\u0000\u0000\u1012\u1018\u0001\u0000\u0000\u0000\u1013\u1014\u0005"+ + "\u01d7\u0000\u0000\u1014\u1015\u0005|\u0000\u0000\u1015\u1016\u0005\u01ad"+ + "\u0000\u0000\u1016\u1018\u0005\u01e5\u0000\u0000\u1017\u100a\u0001\u0000"+ + "\u0000\u0000\u1017\u1013\u0001\u0000\u0000\u0000\u1018\u0091\u0001\u0000"+ + "\u0000\u0000\u1019\u101a\u0005\u01b4\u0000\u0000\u101a\u1023\u0003\u01c0"+ + "\u00e0\u0000\u101b\u101f\u0005\u01db\u0000\u0000\u101c\u101d\u0003\u01c0"+ + "\u00e0\u0000\u101d\u101e\u0005\u0005\u0000\u0000\u101e\u1020\u0001\u0000"+ + "\u0000\u0000\u101f\u101c\u0001\u0000\u0000\u0000\u101f\u1020\u0001\u0000"+ + "\u0000\u0000\u1020\u1021\u0001\u0000\u0000\u0000\u1021\u1023\u0003\u01c0"+ + "\u00e0\u0000\u1022\u1019\u0001\u0000\u0000\u0000\u1022\u101b\u0001\u0000"+ + "\u0000\u0000\u1023\u0093\u0001\u0000\u0000\u0000\u1024\u102b\u0005\u01db"+ + "\u0000\u0000\u1025\u1026\u0003\u01c0\u00e0\u0000\u1026\u1027\u0005\u0005"+ + "\u0000\u0000\u1027\u1029\u0001\u0000\u0000\u0000\u1028\u1025\u0001\u0000"+ + "\u0000\u0000\u1028\u1029\u0001\u0000\u0000\u0000\u1029\u102a\u0001\u0000"+ + "\u0000\u0000\u102a\u102c\u0003\u01c0\u00e0\u0000\u102b\u1028\u0001\u0000"+ + "\u0000\u0000\u102b\u102c\u0001\u0000\u0000\u0000\u102c\u102d\u0001\u0000"+ + "\u0000\u0000\u102d\u102e\u0005\u020f\u0000\u0000\u102e\u102f\u0003\u01c0"+ + "\u00e0\u0000\u102f\u0095\u0001\u0000\u0000\u0000\u1030\u1031\u0005\u01cd"+ + "\u0000\u0000\u1031\u1032\u0005\u01b7\u0000\u0000\u1032\u1034\u0003\u0146"+ + "\u00a3\u0000\u1033\u1035\u0003\u0196\u00cb\u0000\u1034\u1033\u0001\u0000"+ + "\u0000\u0000\u1034\u1035\u0001\u0000\u0000\u0000\u1035\u1037\u0001\u0000"+ + "\u0000\u0000\u1036\u1038\u0005\u00b8\u0000\u0000\u1037\u1036\u0001\u0000"+ + "\u0000\u0000\u1037\u1038\u0001\u0000\u0000\u0000\u1038\u1051\u0001\u0000"+ + "\u0000\u0000\u1039\u103a\u0005a\u0000\u0000\u103a\u103b\u0005\u00e6\u0000"+ + "\u0000\u103b\u103d\u0003\u0146\u00a3\u0000\u103c\u103e\u0003\u0130\u0098"+ + "\u0000\u103d\u103c\u0001\u0000\u0000\u0000\u103d\u103e\u0001\u0000\u0000"+ + "\u0000\u103e\u103f\u0001\u0000\u0000\u0000\u103f\u104b\u0005\u00bb\u0000"+ + "\u0000\u1040\u104c\u0003\u0098L\u0000\u1041\u1042\u0005\u0002\u0000\u0000"+ + "\u1042\u1043\u0005\u0194\u0000\u0000\u1043\u1044\u0003\u00f6{\u0000\u1044"+ + "\u1045\u0005\u00bb\u0000\u0000\u1045\u1047\u0003\u0098L\u0000\u1046\u1048"+ + "\u0003\u00f8|\u0000\u1047\u1046\u0001\u0000\u0000\u0000\u1047\u1048\u0001"+ + "\u0000\u0000\u0000\u1048\u1049\u0001\u0000\u0000\u0000\u1049\u104a\u0005"+ + "\u0003\u0000\u0000\u104a\u104c\u0001\u0000\u0000\u0000\u104b\u1040\u0001"+ + "\u0000\u0000\u0000\u104b\u1041\u0001\u0000\u0000\u0000\u104c\u104e\u0001"+ + "\u0000\u0000\u0000\u104d\u104f\u0003\u013a\u009d\u0000\u104e\u104d\u0001"+ + "\u0000\u0000\u0000\u104e\u104f\u0001\u0000\u0000\u0000\u104f\u1051\u0001"+ + "\u0000\u0000\u0000\u1050\u1030\u0001\u0000\u0000\u0000\u1050\u1039\u0001"+ + "\u0000\u0000\u0000\u1051\u0097\u0001\u0000\u0000\u0000\u1052\u1055\u0005"+ + "\u020f\u0000\u0000\u1053\u1056\u0003\u01c0\u00e0\u0000\u1054\u1056\u0005"+ + "\u0203\u0000\u0000\u1055\u1053\u0001\u0000\u0000\u0000\u1055\u1054\u0001"+ + "\u0000\u0000\u0000\u1056\u105a\u0001\u0000\u0000\u0000\u1057\u1058\u0005"+ + "\u0002\u0000\u0000\u1058\u1059\u0005\u0211\u0000\u0000\u1059\u105b\u0005"+ + "\u0003\u0000\u0000\u105a\u1057\u0001\u0000\u0000\u0000\u105a\u105b\u0001"+ + "\u0000\u0000\u0000\u105b\u0099\u0001\u0000\u0000\u0000\u105c\u105e\u0005"+ + "\u00f6\u0000\u0000\u105d\u105f\u0005Z\u0000\u0000\u105e\u105d\u0001\u0000"+ + "\u0000\u0000\u105e\u105f\u0001\u0000\u0000\u0000\u105f\u1060\u0001\u0000"+ + "\u0000\u0000\u1060\u1065\u0005\u0216\u0000\u0000\u1061\u1062\u0005\u00f6"+ + "\u0000\u0000\u1062\u1063\u0005\u0162\u0000\u0000\u1063\u1065\u0007\u0019"+ + "\u0000\u0000\u1064\u105c\u0001\u0000\u0000\u0000\u1064\u1061\u0001\u0000"+ + "\u0000\u0000\u1065\u009b\u0001\u0000\u0000\u0000\u1066\u1067\u0003\u00c4"+ + "b\u0000\u1067\u1068\u0005\u00bf\u0000\u0000\u1068\u1069\u0003\u01c0\u00e0"+ + "\u0000\u1069\u106b\u0005\u0002\u0000\u0000\u106a\u106c\u0003\u013c\u009e"+ + "\u0000\u106b\u106a\u0001\u0000\u0000\u0000\u106b\u106c\u0001\u0000\u0000"+ + "\u0000\u106c\u106d\u0001\u0000\u0000\u0000\u106d\u106e\u0005\u0003\u0000"+ + "\u0000\u106e\u106f\u0003\u0144\u00a2\u0000\u106f\u107a\u0001\u0000\u0000"+ + "\u0000\u1070\u1071\u0003\u00c4b\u0000\u1071\u1072\u0003\u0146\u00a3\u0000"+ + "\u1072\u1073\u0005\u0014\u0000\u0000\u1073\u107a\u0001\u0000\u0000\u0000"+ + "\u1074\u1075\u0003\u00c4b\u0000\u1075\u1077\u0003\u0146\u00a3\u0000\u1076"+ + "\u1078\u0003\u0196\u00cb\u0000\u1077\u1076\u0001\u0000\u0000\u0000\u1077"+ + "\u1078\u0001\u0000\u0000\u0000\u1078\u107a\u0001\u0000\u0000\u0000\u1079"+ + "\u1066\u0001\u0000\u0000\u0000\u1079\u1070\u0001\u0000\u0000\u0000\u1079"+ + "\u1074\u0001\u0000\u0000\u0000\u107a\u009d\u0001\u0000\u0000\u0000\u107b"+ + "\u107c\u0005\u0159\u0000\u0000\u107c\u107d\u0005\u00f4\u0000\u0000\u107d"+ + "\u1088\u0003\u0130\u0098\u0000\u107e\u107f\u0005\u01d5\u0000\u0000\u107f"+ + "\u1088\u0003\u0130\u0098\u0000\u1080\u1081\u0005\u00b7\u0000\u0000\u1081"+ + "\u1082\u0005\u00f4\u0000\u0000\u1082\u1083\u0003\u0130\u0098\u0000\u1083"+ + "\u1084\u0005\u0170\u0000\u0000\u1084\u1085\u0003\u0146\u00a3\u0000\u1085"+ + "\u1086"; + private static final String _serializedATNSegment2 = + "\u0003\u0130\u0098\u0000\u1086\u1088\u0001\u0000\u0000\u0000\u1087\u107b"+ + "\u0001\u0000\u0000\u0000\u1087\u107e\u0001\u0000\u0000\u0000\u1087\u1080"+ + "\u0001\u0000\u0000\u0000\u1088\u009f\u0001\u0000\u0000\u0000\u1089\u108b"+ + "\u0005\u01be\u0000\u0000\u108a\u1089\u0001\u0000\u0000\u0000\u108a\u108b"+ + "\u0001\u0000\u0000\u0000\u108b\u108c\u0001\u0000\u0000\u0000\u108c\u108d"+ + "\u0007\u001a\u0000\u0000\u108d\u1098\u0003\u0130\u0098\u0000\u108e\u1090"+ + "\u0005\u01be\u0000\u0000\u108f\u108e\u0001\u0000\u0000\u0000\u108f\u1090"+ + "\u0001\u0000\u0000\u0000\u1090\u1091\u0001\u0000\u0000\u0000\u1091\u1092"+ + "\u0005\u0141\u0000\u0000\u1092\u1098\u0003\u01bc\u00de\u0000\u1093\u1094"+ + "\u0007\u001a\u0000\u0000\u1094\u1095\u0005\u0002\u0000\u0000\u1095\u1096"+ + "\u0005\u0200\u0000\u0000\u1096\u1098\u0005\u0003\u0000\u0000\u1097\u108a"+ + "\u0001\u0000\u0000\u0000\u1097\u108f\u0001\u0000\u0000\u0000\u1097\u1093"+ + "\u0001\u0000\u0000\u0000\u1098\u00a1\u0001\u0000\u0000\u0000\u1099\u109b"+ + "\u0005 \u0000\u0000\u109a\u1099\u0001\u0000\u0000\u0000\u109a\u109b\u0001"+ + "\u0000\u0000\u0000\u109b\u109c\u0001\u0000\u0000\u0000\u109c\u109d\u0005"+ + "\u0141\u0000\u0000\u109d\u109f\u0005;\u0000\u0000\u109e\u10a0\u0007\u001b"+ + "\u0000\u0000\u109f\u109e\u0001\u0000\u0000\u0000\u109f\u10a0\u0001\u0000"+ + "\u0000\u0000\u10a0\u10a1\u0001\u0000\u0000\u0000\u10a1\u10a2\u0003\u00a4"+ + "R\u0000\u10a2\u10a4\u0005\u0002\u0000\u0000\u10a3\u10a5\u0003\u0154\u00aa"+ + "\u0000\u10a4\u10a3\u0001\u0000\u0000\u0000\u10a4\u10a5\u0001\u0000\u0000"+ + "\u0000\u10a5\u10a6\u0001\u0000\u0000\u0000\u10a6\u10a7\u0005\u0003\u0000"+ + "\u0000\u10a7\u00a3\u0001\u0000\u0000\u0000\u10a8\u10a9\u0005\u0002\u0000"+ + "\u0000\u10a9\u10ae\u0003\u00a6S\u0000\u10aa\u10ab\u0005\u0004\u0000\u0000"+ + "\u10ab\u10ad\u0003\u00a6S\u0000\u10ac\u10aa\u0001\u0000\u0000\u0000\u10ad"+ + "\u10b0\u0001\u0000\u0000\u0000\u10ae\u10ac\u0001\u0000\u0000\u0000\u10ae"+ + "\u10af\u0001\u0000\u0000\u0000\u10af\u10b1\u0001\u0000\u0000\u0000\u10b0"+ + "\u10ae\u0001\u0000\u0000\u0000\u10b1\u10b2\u0005\u0003\u0000\u0000\u10b2"+ + "\u00a5\u0001\u0000\u0000\u0000\u10b3\u10b6\u0003\u01c0\u00e0\u0000\u10b4"+ + "\u10b6\u0003\u0186\u00c3\u0000\u10b5\u10b3\u0001\u0000\u0000\u0000\u10b5"+ + "\u10b4\u0001\u0000\u0000\u0000\u10b6\u00a7\u0001\u0000\u0000\u0000\u10b7"+ + "\u10b9\u0005\u01f1\u0000\u0000\u10b8\u10b7\u0001\u0000\u0000\u0000\u10b8"+ + "\u10b9\u0001\u0000\u0000\u0000\u10b9\u10ba\u0001\u0000\u0000\u0000\u10ba"+ + "\u10bc\u0003\u00ccf\u0000\u10bb\u10b8\u0001\u0000\u0000\u0000\u10bb\u10bc"+ + "\u0001\u0000\u0000\u0000\u10bc\u10bd\u0001\u0000\u0000\u0000\u10bd\u10be"+ + "\u0005n\u0000\u0000\u10be\u10bf\u0005\u00dd\u0000\u0000\u10bf\u10c0\u0005"+ + "\u0002\u0000\u0000\u10c0\u10c5\u0005\u0211\u0000\u0000\u10c1\u10c2\u0005"+ + "\u0004\u0000\u0000\u10c2\u10c4\u0005\u0211\u0000\u0000\u10c3\u10c1\u0001"+ + "\u0000\u0000\u0000\u10c4\u10c7\u0001\u0000\u0000\u0000\u10c5\u10c3\u0001"+ + "\u0000\u0000\u0000\u10c5\u10c6\u0001\u0000\u0000\u0000\u10c6\u10c8\u0001"+ + "\u0000\u0000\u0000\u10c7\u10c5\u0001\u0000\u0000\u0000\u10c8\u10c9\u0005"+ + "\u0003\u0000\u0000\u10c9\u10ca\u0005\u00e6\u0000\u0000\u10ca\u10cb\u0005"+ + "\u01b7\u0000\u0000\u10cb\u10cd\u0003\u01c0\u00e0\u0000\u10cc\u10ce\u0003"+ + "\u00a0P\u0000\u10cd\u10cc\u0001\u0000\u0000\u0000\u10cd\u10ce\u0001\u0000"+ + "\u0000\u0000\u10ce\u10d3\u0001\u0000\u0000\u0000\u10cf\u10d0\u0005P\u0000"+ + "\u0000\u10d0\u10d1\u0005\u01bf\u0000\u0000\u10d1\u10d2\u0005;\u0000\u0000"+ + "\u10d2\u10d4\u0005\u0211\u0000\u0000\u10d3\u10cf\u0001\u0000\u0000\u0000"+ + "\u10d3\u10d4\u0001\u0000\u0000\u0000\u10d4\u10d9\u0001\u0000\u0000\u0000"+ + "\u10d5\u10d6\u0005\u0102\u0000\u0000\u10d6\u10d7\u0005\u01bf\u0000\u0000"+ + "\u10d7\u10d8\u0005;\u0000\u0000\u10d8\u10da\u0005\u0211\u0000\u0000\u10d9"+ + "\u10d5\u0001\u0000\u0000\u0000\u10d9\u10da\u0001\u0000\u0000\u0000\u10da"+ + "\u10de\u0001\u0000\u0000\u0000\u10db\u10dc\u0005\u00b9\u0000\u0000\u10dc"+ + "\u10dd\u0005\u001c\u0000\u0000\u10dd\u10df\u0003\u00b6[\u0000\u10de\u10db"+ + "\u0001\u0000\u0000\u0000\u10de\u10df\u0001\u0000\u0000\u0000\u10df\u10e3"+ + "\u0001\u0000\u0000\u0000\u10e0\u10e1\u0005V\u0000\u0000\u10e1\u10e2\u0005"+ + "\u001c\u0000\u0000\u10e2\u10e4\u0003\u00b6[\u0000\u10e3\u10e0\u0001\u0000"+ + "\u0000\u0000\u10e3\u10e4\u0001\u0000\u0000\u0000\u10e4\u10e6\u0001\u0000"+ + "\u0000\u0000\u10e5\u10e7\u0003\u0130\u0098\u0000\u10e6\u10e5\u0001\u0000"+ + "\u0000\u0000\u10e6\u10e7\u0001\u0000\u0000\u0000\u10e7\u10e9\u0001\u0000"+ + "\u0000\u0000\u10e8\u10ea\u0003\u00d4j\u0000\u10e9\u10e8\u0001\u0000\u0000"+ + "\u0000\u10e9\u10ea\u0001\u0000\u0000\u0000\u10ea\u10ec\u0001\u0000\u0000"+ + "\u0000\u10eb\u10ed\u0003\u00d6k\u0000\u10ec\u10eb\u0001\u0000\u0000\u0000"+ + "\u10ec\u10ed\u0001\u0000\u0000\u0000\u10ed\u10ef\u0001\u0000\u0000\u0000"+ + "\u10ee\u10f0\u0003\u00ceg\u0000\u10ef\u10ee\u0001\u0000\u0000\u0000\u10ef"+ + "\u10f0\u0001\u0000\u0000\u0000\u10f0\u10f2\u0001\u0000\u0000\u0000\u10f1"+ + "\u10f3\u0003\u00f8|\u0000\u10f2\u10f1\u0001\u0000\u0000\u0000\u10f2\u10f3"+ + "\u0001\u0000\u0000\u0000\u10f3\u10f5\u0001\u0000\u0000\u0000\u10f4\u10f6"+ + "\u0003\u00d0h\u0000\u10f5\u10f4\u0001\u0000\u0000\u0000\u10f5\u10f6\u0001"+ + "\u0000\u0000\u0000\u10f6\u10f8\u0001\u0000\u0000\u0000\u10f7\u10f9\u0003"+ + "\u00d2i\u0000\u10f8\u10f7\u0001\u0000\u0000\u0000\u10f8\u10f9\u0001\u0000"+ + "\u0000\u0000\u10f9\u10fb\u0001\u0000\u0000\u0000\u10fa\u10fc\u0003\u013a"+ + "\u009d\u0000\u10fb\u10fa\u0001\u0000\u0000\u0000\u10fb\u10fc\u0001\u0000"+ + "\u0000\u0000\u10fc\u111b\u0001\u0000\u0000\u0000\u10fd\u10ff\u0005\u01f1"+ + "\u0000\u0000\u10fe\u10fd\u0001\u0000\u0000\u0000\u10fe\u10ff\u0001\u0000"+ + "\u0000\u0000\u10ff\u1100\u0001\u0000\u0000\u0000\u1100\u1102\u0003\u00cc"+ + "f\u0000\u1101\u10fe\u0001\u0000\u0000\u0000\u1101\u1102\u0001\u0000\u0000"+ + "\u0000\u1102\u1103\u0001\u0000\u0000\u0000\u1103\u1104\u0005n\u0000\u0000"+ + "\u1104\u1105\u0005\u00bb\u0000\u0000\u1105\u1106\u0005\u01b7\u0000\u0000"+ + "\u1106\u1107\u0003\u01c0\u00e0\u0000\u1107\u1108\u0005\u00e6\u0000\u0000"+ + "\u1108\u1109\u0005\u01b7\u0000\u0000\u1109\u110c\u0003\u01c0\u00e0\u0000"+ + "\u110a\u110b\u0005\u0141\u0000\u0000\u110b\u110d\u0003\u0130\u0098\u0000"+ + "\u110c\u110a\u0001\u0000\u0000\u0000\u110c\u110d\u0001\u0000\u0000\u0000"+ + "\u110d\u110f\u0001\u0000\u0000\u0000\u110e\u1110\u0003\u00d6k\u0000\u110f"+ + "\u110e\u0001\u0000\u0000\u0000\u110f\u1110\u0001\u0000\u0000\u0000\u1110"+ + "\u1112\u0001\u0000\u0000\u0000\u1111\u1113\u0003\u00f8|\u0000\u1112\u1111"+ + "\u0001\u0000\u0000\u0000\u1112\u1113\u0001\u0000\u0000\u0000\u1113\u1115"+ + "\u0001\u0000\u0000\u0000\u1114\u1116\u0003\u00d0h\u0000\u1115\u1114\u0001"+ + "\u0000\u0000\u0000\u1115\u1116\u0001\u0000\u0000\u0000\u1116\u1118\u0001"+ + "\u0000\u0000\u0000\u1117\u1119\u0003\u013a\u009d\u0000\u1118\u1117\u0001"+ + "\u0000\u0000\u0000\u1118\u1119\u0001\u0000\u0000\u0000\u1119\u111b\u0001"+ + "\u0000\u0000\u0000\u111a\u10bb\u0001\u0000\u0000\u0000\u111a\u1101\u0001"+ + "\u0000\u0000\u0000\u111b\u00a9\u0001\u0000\u0000\u0000\u111c\u111d\u0007"+ + "\u001c\u0000\u0000\u111d\u00ab\u0001\u0000\u0000\u0000\u111e\u111f\u0005"+ + "8\u0000\u0000\u111f\u1120\u0007\u001d\u0000\u0000\u1120\u00ad\u0001\u0000"+ + "\u0000\u0000\u1121\u1122\u0005\u0135\u0000\u0000\u1122\u1129\u0005\u010d"+ + "\u0000\u0000\u1123\u1124\u0005\u0135\u0000\u0000\u1124\u1125\u0005\u018f"+ + "\u0000\u0000\u1125\u1129\u0003\u00b0X\u0000\u1126\u1127\u0005\u0135\u0000"+ + "\u0000\u1127\u1129\u0005R\u0000\u0000\u1128\u1121\u0001\u0000\u0000\u0000"+ + "\u1128\u1123\u0001\u0000\u0000\u0000\u1128\u1126\u0001\u0000\u0000\u0000"+ + "\u1129\u00af\u0001\u0000\u0000\u0000\u112a\u112b\u0005\u00a0\u0000\u0000"+ + "\u112b\u112c\u0005\u0216\u0000\u0000\u112c\u112f\u0003\u01c0\u00e0\u0000"+ + "\u112d\u112e\u0005\u01a9\u0000\u0000\u112e\u1130\u0005\u0211\u0000\u0000"+ + "\u112f\u112d\u0001\u0000\u0000\u0000\u112f\u1130\u0001\u0000\u0000\u0000"+ + "\u1130\u00b1\u0001\u0000\u0000\u0000\u1131\u1132\u0007\u001e\u0000\u0000"+ + "\u1132\u00b3\u0001\u0000\u0000\u0000\u1133\u1136\u0003\u01c0\u00e0\u0000"+ + "\u1134\u1136\u0003\u0186\u00c3\u0000\u1135\u1133\u0001\u0000\u0000\u0000"+ + "\u1135\u1134\u0001\u0000\u0000\u0000\u1136\u00b5\u0001\u0000\u0000\u0000"+ + "\u1137\u113a\u0003\u01c0\u00e0\u0000\u1138\u113a\u0005\u0211\u0000\u0000"+ + "\u1139\u1137\u0001\u0000\u0000\u0000\u1139\u1138\u0001\u0000\u0000\u0000"+ + "\u113a\u00b7\u0001\u0000\u0000\u0000\u113b\u113f\u0003\u01c0\u00e0\u0000"+ + "\u113c\u113f\u0005\u0211\u0000\u0000\u113d\u113f\u0005\u0200\u0000\u0000"+ + "\u113e\u113b\u0001\u0000\u0000\u0000\u113e\u113c\u0001\u0000\u0000\u0000"+ + "\u113e\u113d\u0001\u0000\u0000\u0000\u113f\u00b9\u0001\u0000\u0000\u0000"+ + "\u1140\u1145\u0003\u00bc^\u0000\u1141\u1142\u0005\u0005\u0000\u0000\u1142"+ + "\u1144\u0003\u00bc^\u0000\u1143\u1141\u0001\u0000\u0000\u0000\u1144\u1147"+ + "\u0001\u0000\u0000\u0000\u1145\u1143\u0001\u0000\u0000\u0000\u1145\u1146"+ + "\u0001\u0000\u0000\u0000\u1146\u00bb\u0001\u0000\u0000\u0000\u1147\u1145"+ + "\u0001\u0000\u0000\u0000\u1148\u114b\u0003\u00b6[\u0000\u1149\u114b\u0005"+ + "\u0200\u0000\u0000\u114a\u1148\u0001\u0000\u0000\u0000\u114a\u1149\u0001"+ + "\u0000\u0000\u0000\u114b\u00bd\u0001\u0000\u0000\u0000\u114c\u1155\u0003"+ + "\u00b6[\u0000\u114d\u1153\u0005\u020f\u0000\u0000\u114e\u1154\u0003\u00b6"+ + "[\u0000\u114f\u1150\u0005\u0002\u0000\u0000\u1150\u1151\u0003\u00b6[\u0000"+ + "\u1151\u1152\u0005\u0003\u0000\u0000\u1152\u1154\u0001\u0000\u0000\u0000"+ + "\u1153\u114e\u0001\u0000\u0000\u0000\u1153\u114f\u0001\u0000\u0000\u0000"+ + "\u1154\u1156\u0001\u0000\u0000\u0000\u1155\u114d\u0001\u0000\u0000\u0000"+ + "\u1155\u1156\u0001\u0000\u0000\u0000\u1156\u00bf\u0001\u0000\u0000\u0000"+ + "\u1157\u115e\u0003\u00be_\u0000\u1158\u1159\u0005\u00d5\u0000\u0000\u1159"+ + "\u115b\u0005;\u0000\u0000\u115a\u115c\u0005\u0143\u0000\u0000\u115b\u115a"+ + "\u0001\u0000\u0000\u0000\u115b\u115c\u0001\u0000\u0000\u0000\u115c\u115d"+ + "\u0001\u0000\u0000\u0000\u115d\u115f\u0005\u0211\u0000\u0000\u115e\u1158"+ + "\u0001\u0000\u0000\u0000\u115e\u115f\u0001\u0000\u0000\u0000\u115f\u00c1"+ + "\u0001\u0000\u0000\u0000\u1160\u1162\u0003\u00c4b\u0000\u1161\u1163\u0003"+ + "\u00c6c\u0000\u1162\u1161\u0001\u0000\u0000\u0000\u1162\u1163\u0001\u0000"+ + "\u0000\u0000\u1163\u1165\u0001\u0000\u0000\u0000\u1164\u1166\u0007\u001f"+ + "\u0000\u0000\u1165\u1164\u0001\u0000\u0000\u0000\u1165\u1166\u0001\u0000"+ + "\u0000\u0000\u1166\u1168\u0001\u0000\u0000\u0000\u1167\u1169\u0005\u0153"+ + "\u0000\u0000\u1168\u1167\u0001\u0000\u0000\u0000\u1168\u1169\u0001\u0000"+ + "\u0000\u0000\u1169\u00c3\u0001\u0000\u0000\u0000\u116a\u116b\u0007 \u0000"+ + "\u0000\u116b\u00c5\u0001\u0000\u0000\u0000\u116c\u116d\u0007!\u0000\u0000"+ + "\u116d\u00c7\u0001\u0000\u0000\u0000\u116e\u116f\u0005\u0150\u0000\u0000"+ + "\u116f\u1170\u0005\u0178\u0000\u0000\u1170\u1171\u0003\u00cae\u0000\u1171"+ + "\u00c9\u0001\u0000\u0000\u0000\u1172\u1173\u0005\u0091\u0000\u0000\u1173"+ + "\u1177\u0003\u00e4r\u0000\u1174\u1175\u0005\u0151\u0000\u0000\u1175\u1177"+ + "\u0005\u0211\u0000\u0000\u1176\u1172\u0001\u0000\u0000\u0000\u1176\u1174"+ + "\u0001\u0000\u0000\u0000\u1177\u00cb\u0001\u0000\u0000\u0000\u1178\u1179"+ + "\u0007\u0012\u0000\u0000\u1179\u00cd\u0001\u0000\u0000\u0000\u117a\u117b"+ + "\u0005\u0157\u0000\u0000\u117b\u117c\u0005\u00b1\u0000\u0000\u117c\u117d"+ + "\u0003\u0172\u00b9\u0000\u117d\u00cf\u0001\u0000\u0000\u0000\u117e\u117f"+ + "\u0005~\u0000\u0000\u117f\u1180\u0005\u0135\u0000\u0000\u1180\u1181\u0003"+ + "\u0172\u00b9\u0000\u1181\u00d1\u0001\u0000\u0000\u0000\u1182\u1183\u0005"+ + "\u013a\u0000\u0000\u1183\u1184\u0005;\u0000\u0000\u1184\u1185\u0003\u01c0"+ + "\u00e0\u0000\u1185\u00d3\u0001\u0000\u0000\u0000\u1186\u1187\u0005P\u0000"+ + "\u0000\u1187\u1188\u0005\u00bb\u0000\u0000\u1188\u1189\u0005\u0148\u0000"+ + "\u0000\u1189\u118a\u0005\u001c\u0000\u0000\u118a\u118b\u0003\u0130\u0098"+ + "\u0000\u118b\u00d5\u0001\u0000\u0000\u0000\u118c\u118d\u0005\u0199\u0000"+ + "\u0000\u118d\u118e\u0005\u0002\u0000\u0000\u118e\u1193\u0003\u00d8l\u0000"+ + "\u118f\u1190\u0005\u0004\u0000\u0000\u1190\u1192\u0003\u00d8l\u0000\u1191"+ + "\u118f\u0001\u0000\u0000\u0000\u1192\u1195\u0001\u0000\u0000\u0000\u1193"+ + "\u1191\u0001\u0000\u0000\u0000\u1193\u1194\u0001\u0000\u0000\u0000\u1194"+ + "\u1196\u0001\u0000\u0000\u0000\u1195\u1193\u0001\u0000\u0000\u0000\u1196"+ + "\u1197\u0005\u0003\u0000\u0000\u1197\u00d7\u0001\u0000\u0000\u0000\u1198"+ + "\u1199\u0003\u01c0\u00e0\u0000\u1199\u119a\u0005\u01f7\u0000\u0000\u119a"+ + "\u119b\u0003\u0172\u00b9\u0000\u119b\u00d9\u0001\u0000\u0000\u0000\u119c"+ + "\u11b9\u0003\u00dcn\u0000\u119d\u119e\u0005\u01f1\u0000\u0000\u119e\u119f"+ + "\u0005\u018d\u0000\u0000\u119f\u11a0\u0005\u0002\u0000\u0000\u11a0\u11a1"+ + "\u0003\u013c\u009e\u0000\u11a1\u11a2\u0005\u0003\u0000\u0000\u11a2\u11b9"+ + "\u0001\u0000\u0000\u0000\u11a3\u11a4\u0005\u01f1\u0000\u0000\u11a4\u11a5"+ + "\u0005\u00cc\u0000\u0000\u11a5\u11a6\u0005\u0002\u0000\u0000\u11a6\u11a7"+ + "\u0003\u013c\u009e\u0000\u11a7\u11a8\u0005\u0003\u0000\u0000\u11a8\u11b9"+ + "\u0001\u0000\u0000\u0000\u11a9\u11aa\u0005\u01f1\u0000\u0000\u11aa\u11ab"+ + "\u0005\u0106\u0000\u0000\u11ab\u11ac\u0005\u0002\u0000\u0000\u11ac\u11ad"+ + "\u0003\u013c\u009e\u0000\u11ad\u11ae\u0005\u0003\u0000\u0000\u11ae\u11b9"+ + "\u0001\u0000\u0000\u0000\u11af\u11b0\u0005\u01f1\u0000\u0000\u11b0\u11b1"+ + "\u00056\u0000\u0000\u11b1\u11b6\u0003\u00b6[\u0000\u11b2\u11b3\u0005\u0002"+ + "\u0000\u0000\u11b3\u11b4\u0003\u013c\u009e\u0000\u11b4\u11b5\u0005\u0003"+ + "\u0000\u0000\u11b5\u11b7\u0001\u0000\u0000\u0000\u11b6\u11b2\u0001\u0000"+ + "\u0000\u0000\u11b6\u11b7\u0001\u0000\u0000\u0000\u11b7\u11b9\u0001\u0000"+ + "\u0000\u0000\u11b8\u119c\u0001\u0000\u0000\u0000\u11b8\u119d\u0001\u0000"+ + "\u0000\u0000\u11b8\u11a3\u0001\u0000\u0000\u0000\u11b8\u11a9\u0001\u0000"+ + "\u0000\u0000\u11b8\u11af\u0001\u0000\u0000\u0000\u11b9\u00db\u0001\u0000"+ + "\u0000\u0000\u11ba\u11bb\u0005\u01f1\u0000\u0000\u11bb\u11bc\u0005\u017c"+ + "\u0000\u0000\u11bc\u11c1\u0003\u00b6[\u0000\u11bd\u11be\u0005\u0002\u0000"+ + "\u0000\u11be\u11bf\u0003\u013c\u009e\u0000\u11bf\u11c0\u0005\u0003\u0000"+ + "\u0000\u11c0\u11c2\u0001\u0000\u0000\u0000\u11c1\u11bd\u0001\u0000\u0000"+ + "\u0000\u11c1\u11c2\u0001\u0000\u0000\u0000\u11c2\u00dd\u0001\u0000\u0000"+ + "\u0000\u11c3\u11c5\u0005n\u0000\u0000\u11c4\u11c6\u0005\u0106\u0000\u0000"+ + "\u11c5\u11c4\u0001\u0000\u0000\u0000\u11c5\u11c6\u0001\u0000\u0000\u0000"+ + "\u11c6\u11c7\u0001\u0000\u0000\u0000\u11c7\u11c8\u0005\u00dd\u0000\u0000"+ + "\u11c8\u11c9\u0005\u0211\u0000\u0000\u11c9\u11ca\u0005\u00e6\u0000\u0000"+ + "\u11ca\u11cb\u0005\u01b7\u0000\u0000\u11cb\u11ce\u0003\u0146\u00a3\u0000"+ + "\u11cc\u11cd\u0005\u0141\u0000\u0000\u11cd\u11cf\u0003\u0130\u0098\u0000"+ + "\u11ce\u11cc\u0001\u0000\u0000\u0000\u11ce\u11cf\u0001\u0000\u0000\u0000"+ + "\u11cf\u11d4\u0001\u0000\u0000\u0000\u11d0\u11d1\u0005P\u0000\u0000\u11d1"+ + "\u11d2\u0005\u01bf\u0000\u0000\u11d2\u11d3\u0005;\u0000\u0000\u11d3\u11d5"+ + "\u0005\u0211\u0000\u0000\u11d4\u11d0\u0001\u0000\u0000\u0000\u11d4\u11d5"+ + "\u0001\u0000\u0000\u0000\u11d5\u11da\u0001\u0000\u0000\u0000\u11d6\u11d7"+ + "\u0005\u0102\u0000\u0000\u11d7\u11d8\u0005\u01bf\u0000\u0000\u11d8\u11d9"+ + "\u0005;\u0000\u0000\u11d9\u11db\u0005\u0211\u0000\u0000\u11da\u11d6\u0001"+ + "\u0000\u0000\u0000\u11da\u11db\u0001\u0000\u0000\u0000\u11db\u11dd\u0001"+ + "\u0000\u0000\u0000\u11dc\u11de\u0003\u00e0p\u0000\u11dd\u11dc\u0001\u0000"+ + "\u0000\u0000\u11dd\u11de\u0001\u0000\u0000\u0000\u11de\u11e0\u0001\u0000"+ + "\u0000\u0000\u11df\u11e1\u0003\u0130\u0098\u0000\u11e0\u11df\u0001\u0000"+ + "\u0000\u0000\u11e0\u11e1\u0001\u0000\u0000\u0000\u11e1\u11e3\u0001\u0000"+ + "\u0000\u0000\u11e2\u11e4\u0003\u00d6k\u0000\u11e3\u11e2\u0001\u0000\u0000"+ + "\u0000\u11e3\u11e4\u0001\u0000\u0000\u0000\u11e4\u11e6\u0001\u0000\u0000"+ + "\u0000\u11e5\u11e7\u0003\u013a\u009d\u0000\u11e6\u11e5\u0001\u0000\u0000"+ + "\u0000\u11e6\u11e7\u0001\u0000\u0000\u0000\u11e7\u00df\u0001\u0000\u0000"+ + "\u0000\u11e8\u11e9\u0005\u00d7\u0000\u0000\u11e9\u11ea\u0005\u0216\u0000"+ + "\u0000\u11ea\u11ef\u0005\u0102\u0000\u0000\u11eb\u11ec\u0005\u00d7\u0000"+ + "\u0000\u11ec\u11ed\u0005\u0216\u0000\u0000\u11ed\u11ef\u0005\u018c\u0000"+ + "\u0000\u11ee\u11e8\u0001\u0000\u0000\u0000\u11ee\u11eb\u0001\u0000\u0000"+ + "\u0000\u11ef\u00e1\u0001\u0000\u0000\u0000\u11f0\u11f1\u0005\u00e6\u0000"+ + "\u0000\u11f1\u11f2\u0005\u013c\u0000\u0000\u11f2\u11f6\u0003\u0198\u00cc"+ + "\u0000\u11f3\u11f4\u0005\u00b9\u0000\u0000\u11f4\u11f5\u0005\u001c\u0000"+ + "\u0000\u11f5\u11f7\u0003\u01c0\u00e0\u0000\u11f6\u11f3\u0001\u0000\u0000"+ + "\u0000\u11f6\u11f7\u0001\u0000\u0000\u0000\u11f7\u11f9\u0001\u0000\u0000"+ + "\u0000\u11f8\u11fa\u0003\u013a\u009d\u0000\u11f9\u11f8\u0001\u0000\u0000"+ + "\u0000\u11f9\u11fa\u0001\u0000\u0000\u0000\u11fa\u00e3\u0001\u0000\u0000"+ + "\u0000\u11fb\u11fd\u0003\u00eew\u0000\u11fc\u11fb\u0001\u0000\u0000\u0000"+ + "\u11fc\u11fd\u0001\u0000\u0000\u0000\u11fd\u11fe\u0001\u0000\u0000\u0000"+ + "\u11fe\u11ff\u0003\u00e6s\u0000\u11ff\u1200\u0003\u0122\u0091\u0000\u1200"+ + "\u00e5\u0001\u0000\u0000\u0000\u1201\u1202\u0006s\uffff\uffff\u0000\u1202"+ + "\u1203\u0003\u00eau\u0000\u1203\u1212\u0001\u0000\u0000\u0000\u1204\u1205"+ + "\n\u0002\u0000\u0000\u1205\u1207\u0005\u00e4\u0000\u0000\u1206\u1208\u0003"+ + "\u00e8t\u0000\u1207\u1206\u0001\u0000\u0000\u0000\u1207\u1208\u0001\u0000"+ + "\u0000\u0000\u1208\u1209\u0001\u0000\u0000\u0000\u1209\u1211\u0003\u00e6"+ + "s\u0003\u120a\u120b\n\u0001\u0000\u0000\u120b\u120d\u0007\"\u0000\u0000"+ + "\u120c\u120e\u0003\u00e8t\u0000\u120d\u120c\u0001\u0000\u0000\u0000\u120d"+ + "\u120e\u0001\u0000\u0000\u0000\u120e\u120f\u0001\u0000\u0000\u0000\u120f"+ + "\u1211\u0003\u00e6s\u0002\u1210\u1204\u0001\u0000\u0000\u0000\u1210\u120a"+ + "\u0001\u0000\u0000\u0000\u1211\u1214\u0001\u0000\u0000\u0000\u1212\u1210"+ + "\u0001\u0000\u0000\u0000\u1212\u1213\u0001\u0000\u0000\u0000\u1213\u00e7"+ + "\u0001\u0000\u0000\u0000\u1214\u1212\u0001\u0000\u0000\u0000\u1215\u1216"+ + "\u0007#\u0000\u0000\u1216\u00e9\u0001\u0000\u0000\u0000\u1217\u121e\u0003"+ + "\u00ecv\u0000\u1218\u1219\u0005\u0002\u0000\u0000\u1219\u121a\u0003\u00e4"+ + "r\u0000\u121a\u121b\u0005\u0003\u0000\u0000\u121b\u121e\u0001\u0000\u0000"+ + "\u0000\u121c\u121e\u0003\u016c\u00b6\u0000\u121d\u1217\u0001\u0000\u0000"+ + "\u0000\u121d\u1218\u0001\u0000\u0000\u0000\u121d\u121c\u0001\u0000\u0000"+ + "\u0000\u121e\u00eb\u0001\u0000\u0000\u0000\u121f\u1221\u0003\u00f4z\u0000"+ + "\u1220\u1222\u0003\u00fc~\u0000\u1221\u1220\u0001\u0000\u0000\u0000\u1221"+ + "\u1222\u0001\u0000\u0000\u0000\u1222\u1224\u0001\u0000\u0000\u0000\u1223"+ + "\u1225\u0003\u00fa}\u0000\u1224\u1223\u0001\u0000\u0000\u0000\u1224\u1225"+ + "\u0001\u0000\u0000\u0000\u1225\u1227\u0001\u0000\u0000\u0000\u1226\u1228"+ + "\u0003\u00f8|\u0000\u1227\u1226\u0001\u0000\u0000\u0000\u1227\u1228\u0001"+ + "\u0000\u0000\u0000\u1228\u122a\u0001\u0000\u0000\u0000\u1229\u122b\u0003"+ + "\u010c\u0086\u0000\u122a\u1229\u0001\u0000\u0000\u0000\u122a\u122b\u0001"+ + "\u0000\u0000\u0000\u122b\u122d\u0001\u0000\u0000\u0000\u122c\u122e\u0003"+ + "\u0112\u0089\u0000\u122d\u122c\u0001\u0000\u0000\u0000\u122d\u122e\u0001"+ + "\u0000\u0000\u0000\u122e\u1230\u0001\u0000\u0000\u0000\u122f\u1231\u0003"+ + "\u0114\u008a\u0000\u1230\u122f\u0001\u0000\u0000\u0000\u1230\u1231\u0001"+ + "\u0000\u0000\u0000\u1231\u1232\u0001\u0000\u0000\u0000\u1232\u1233\u0004"+ + "v\u0002\u0000\u1233\u1234\u0003\u0122\u0091\u0000\u1234\u00ed\u0001\u0000"+ + "\u0000\u0000\u1235\u1236\u0005\u01f1\u0000\u0000\u1236\u123b\u0003\u00f0"+ + "x\u0000\u1237\u1238\u0005\u0004\u0000\u0000\u1238\u123a\u0003\u00f0x\u0000"+ + "\u1239\u1237\u0001\u0000\u0000\u0000\u123a\u123d\u0001\u0000\u0000\u0000"+ + "\u123b\u1239\u0001\u0000\u0000\u0000\u123b\u123c\u0001\u0000\u0000\u0000"+ + "\u123c\u00ef\u0001\u0000\u0000\u0000\u123d\u123b\u0001\u0000\u0000\u0000"+ + "\u123e\u1240\u0003\u01c0\u00e0\u0000\u123f\u1241\u0003\u00f2y\u0000\u1240"+ + "\u123f\u0001\u0000\u0000\u0000\u1240\u1241\u0001\u0000\u0000\u0000\u1241"+ + "\u1242\u0001\u0000\u0000\u0000\u1242\u1243\u0005\u001c\u0000\u0000\u1243"+ + "\u1244\u0005\u0002\u0000\u0000\u1244\u1245\u0003\u00e4r\u0000\u1245\u1246"+ + "\u0005\u0003\u0000\u0000\u1246\u00f1\u0001\u0000\u0000\u0000\u1247\u1248"+ + "\u0005\u0002\u0000\u0000\u1248\u124d\u0003\u01c0\u00e0\u0000\u1249\u124a"+ + "\u0005\u0004\u0000\u0000\u124a\u124c\u0003\u01c0\u00e0\u0000\u124b\u1249"+ + "\u0001\u0000\u0000\u0000\u124c\u124f\u0001\u0000\u0000\u0000\u124d\u124b"+ + "\u0001\u0000\u0000\u0000\u124d\u124e\u0001\u0000\u0000\u0000\u124e\u1250"+ + "\u0001\u0000\u0000\u0000\u124f\u124d\u0001\u0000\u0000\u0000\u1250\u1251"+ + "\u0005\u0003\u0000\u0000\u1251\u00f3\u0001\u0000\u0000\u0000\u1252\u1254"+ + "\u0005\u0194\u0000\u0000\u1253\u1255\u0007#\u0000\u0000\u1254\u1253\u0001"+ + "\u0000\u0000\u0000\u1254\u1255\u0001\u0000\u0000\u0000\u1255\u1256\u0001"+ + "\u0000\u0000\u0000\u1256\u1257\u0003\u00f6{\u0000\u1257\u00f5\u0001\u0000"+ + "\u0000\u0000\u1258\u1259\u0003\u0170\u00b8\u0000\u1259\u00f7\u0001\u0000"+ + "\u0000\u0000\u125a\u125b\u0005\u01ef\u0000\u0000\u125b\u125c\u0003\u0176"+ + "\u00bb\u0000\u125c\u00f9\u0001\u0000\u0000\u0000\u125d\u125e\u0005\u00bb"+ + "\u0000\u0000\u125e\u125f\u0003\u0102\u0081\u0000\u125f\u00fb\u0001\u0000"+ + "\u0000\u0000\u1260\u1262\u0003\u00fe\u007f\u0000\u1261\u1260\u0001\u0000"+ + "\u0000\u0000\u1261\u1262\u0001\u0000\u0000\u0000\u1262\u1263\u0001\u0000"+ + "\u0000\u0000\u1263\u1266\u0005\u00e6\u0000\u0000\u1264\u1267\u0003\u0100"+ + "\u0080\u0000\u1265\u1267\u0003\u01c0\u00e0\u0000\u1266\u1264\u0001\u0000"+ + "\u0000\u0000\u1266\u1265\u0001\u0000\u0000\u0000\u1267\u126f\u0001\u0000"+ + "\u0000\u0000\u1268\u126b\u0005\u0004\u0000\u0000\u1269\u126c\u0003\u0100"+ + "\u0080\u0000\u126a\u126c\u0003\u01c0\u00e0\u0000\u126b\u1269\u0001\u0000"+ + "\u0000\u0000\u126b\u126a\u0001\u0000\u0000\u0000\u126c\u126e\u0001\u0000"+ + "\u0000\u0000\u126d\u1268\u0001\u0000\u0000\u0000\u126e\u1271\u0001\u0000"+ + "\u0000\u0000\u126f\u126d\u0001\u0000\u0000\u0000\u126f\u1270\u0001\u0000"+ + "\u0000\u0000\u1270\u00fd\u0001\u0000\u0000\u0000\u1271\u126f\u0001\u0000"+ + "\u0000\u0000\u1272\u1273\u0005:\u0000\u0000\u1273\u1274\u0005M\u0000\u0000"+ + "\u1274\u00ff\u0001\u0000\u0000\u0000\u1275\u1276\u0003\u01c0\u00e0\u0000"+ + "\u1276\u1277\u0005\u0002\u0000\u0000\u1277\u1278\u0005\u0216\u0000\u0000"+ + "\u1278\u1279\u0005\u0003\u0000\u0000\u1279\u0101\u0001\u0000\u0000\u0000"+ + "\u127a\u127f\u0003\u0104\u0082\u0000\u127b\u127c\u0005\u0004\u0000\u0000"+ + "\u127c\u127e\u0003\u0104\u0082\u0000\u127d\u127b\u0001\u0000\u0000\u0000"+ + "\u127e\u1281\u0001\u0000\u0000\u0000\u127f\u127d\u0001\u0000\u0000\u0000"+ + "\u127f\u1280\u0001\u0000\u0000\u0000\u1280\u0103\u0001\u0000\u0000\u0000"+ + "\u1281\u127f\u0001\u0000\u0000\u0000\u1282\u1286\u0003\u0136\u009b\u0000"+ + "\u1283\u1285\u0003\u0106\u0083\u0000\u1284\u1283\u0001\u0000\u0000\u0000"+ + "\u1285\u1288\u0001\u0000\u0000\u0000\u1286\u1284\u0001\u0000\u0000\u0000"+ + "\u1286\u1287\u0001\u0000\u0000\u0000\u1287\u0105\u0001\u0000\u0000\u0000"+ + "\u1288\u1286\u0001\u0000\u0000\u0000\u1289\u128a\u0003\u012c\u0096\u0000"+ + "\u128a\u128c\u0005\u00f1\u0000\u0000\u128b\u128d\u0003\u0108\u0084\u0000"+ + "\u128c\u128b\u0001\u0000\u0000\u0000\u128c\u128d\u0001\u0000\u0000\u0000"+ + "\u128d\u128e\u0001\u0000\u0000\u0000\u128e\u1290\u0003\u0136\u009b\u0000"+ + "\u128f\u1291\u0003\u012e\u0097\u0000\u1290\u128f\u0001\u0000\u0000\u0000"+ + "\u1290\u1291\u0001\u0000\u0000\u0000\u1291\u0107\u0001\u0000\u0000\u0000"+ + "\u1292\u1293\u0005\u0007\u0000\u0000\u1293\u1294\u0003\u01c0\u00e0\u0000"+ + "\u1294\u1295\u0005\b\u0000\u0000\u1295\u129b\u0001\u0000\u0000\u0000\u1296"+ + "\u1297\u0005\u020c\u0000\u0000\u1297\u1298\u0003\u01c0\u00e0\u0000\u1298"+ + "\u1299\u0005\u020d\u0000\u0000\u1299\u129b\u0001\u0000\u0000\u0000\u129a"+ + "\u1292\u0001\u0000\u0000\u0000\u129a\u1296\u0001\u0000\u0000\u0000\u129b"+ + "\u0109\u0001\u0000\u0000\u0000\u129c\u129d\u0005\u0007\u0000\u0000\u129d"+ + "\u12a2\u0003\u01c0\u00e0\u0000\u129e\u129f\u0005\u0004\u0000\u0000\u129f"+ + "\u12a1\u0003\u01c0\u00e0\u0000\u12a0\u129e\u0001\u0000\u0000\u0000\u12a1"+ + "\u12a4\u0001\u0000\u0000\u0000\u12a2\u12a0\u0001\u0000\u0000\u0000\u12a2"+ + "\u12a3\u0001\u0000\u0000\u0000\u12a3\u12a5\u0001\u0000\u0000\u0000\u12a4"+ + "\u12a2\u0001\u0000\u0000\u0000\u12a5\u12a6\u0005\b\u0000\u0000\u12a6\u12b3"+ + "\u0001\u0000\u0000\u0000\u12a7\u12a8\u0005\u020c\u0000\u0000\u12a8\u12ad"+ + "\u0003\u01c0\u00e0\u0000\u12a9\u12aa\u0005\u0004\u0000\u0000\u12aa\u12ac"+ + "\u0003\u01c0\u00e0\u0000\u12ab\u12a9\u0001\u0000\u0000\u0000\u12ac\u12af"+ + "\u0001\u0000\u0000\u0000\u12ad\u12ab\u0001\u0000\u0000\u0000\u12ad\u12ae"+ + "\u0001\u0000\u0000\u0000\u12ae\u12b0\u0001\u0000\u0000\u0000\u12af\u12ad"+ + "\u0001\u0000\u0000\u0000\u12b0\u12b1\u0005\u020d\u0000\u0000\u12b1\u12b3"+ + "\u0001\u0000\u0000\u0000\u12b2\u129c\u0001\u0000\u0000\u0000\u12b2\u12a7"+ + "\u0001\u0000\u0000\u0000\u12b3\u010b\u0001\u0000\u0000\u0000\u12b4\u12b5"+ + "\u0005\u00c7\u0000\u0000\u12b5\u12b6\u0005;\u0000\u0000\u12b6\u12b7\u0003"+ + "\u010e\u0087\u0000\u12b7\u010d\u0001\u0000\u0000\u0000\u12b8\u12b9\u0005"+ + "\u0189\u0000\u0000\u12b9\u12c2\u0005\u0002\u0000\u0000\u12ba\u12bf\u0003"+ + "\u0172\u00b9\u0000\u12bb\u12bc\u0005\u0004\u0000\u0000\u12bc\u12be\u0003"+ + "\u0172\u00b9\u0000\u12bd\u12bb\u0001\u0000\u0000\u0000\u12be\u12c1\u0001"+ + "\u0000\u0000\u0000\u12bf\u12bd\u0001\u0000\u0000\u0000\u12bf\u12c0\u0001"+ + "\u0000\u0000\u0000\u12c0\u12c3\u0001\u0000\u0000\u0000\u12c1\u12bf\u0001"+ + "\u0000\u0000\u0000\u12c2\u12ba\u0001\u0000\u0000\u0000\u12c2\u12c3\u0001"+ + "\u0000\u0000\u0000\u12c3\u12c4\u0001\u0000\u0000\u0000\u12c4\u12e8\u0005"+ + "\u0003\u0000\u0000\u12c5\u12c6\u0005g\u0000\u0000\u12c6\u12cf\u0005\u0002"+ + "\u0000\u0000\u12c7\u12cc\u0003\u0172\u00b9\u0000\u12c8\u12c9\u0005\u0004"+ + "\u0000\u0000\u12c9\u12cb\u0003\u0172\u00b9\u0000\u12ca\u12c8\u0001\u0000"+ + "\u0000\u0000\u12cb\u12ce\u0001\u0000\u0000\u0000\u12cc\u12ca\u0001\u0000"+ + "\u0000\u0000\u12cc\u12cd\u0001\u0000\u0000\u0000\u12cd\u12d0\u0001\u0000"+ + "\u0000\u0000\u12ce\u12cc\u0001\u0000\u0000\u0000\u12cf\u12c7\u0001\u0000"+ + "\u0000\u0000\u12cf\u12d0\u0001\u0000\u0000\u0000\u12d0\u12d1\u0001\u0000"+ + "\u0000\u0000\u12d1\u12e8\u0005\u0003\u0000\u0000\u12d2\u12d3\u0005\u00c8"+ + "\u0000\u0000\u12d3\u12d4\u0005\u019a\u0000\u0000\u12d4\u12d5\u0005\u0002"+ + "\u0000\u0000\u12d5\u12da\u0003\u0110\u0088\u0000\u12d6\u12d7\u0005\u0004"+ + "\u0000\u0000\u12d7\u12d9\u0003\u0110\u0088\u0000\u12d8\u12d6\u0001\u0000"+ + "\u0000\u0000\u12d9\u12dc\u0001\u0000\u0000\u0000\u12da\u12d8\u0001\u0000"+ + "\u0000\u0000\u12da\u12db\u0001\u0000\u0000\u0000\u12db\u12dd\u0001\u0000"+ + "\u0000\u0000\u12dc\u12da\u0001\u0000\u0000\u0000\u12dd\u12de\u0005\u0003"+ + "\u0000\u0000\u12de\u12e8\u0001\u0000\u0000\u0000\u12df\u12e4\u0003\u0172"+ + "\u00b9\u0000\u12e0\u12e1\u0005\u0004\u0000\u0000\u12e1\u12e3\u0003\u0172"+ + "\u00b9\u0000\u12e2\u12e0\u0001\u0000\u0000\u0000\u12e3\u12e6\u0001\u0000"+ + "\u0000\u0000\u12e4\u12e2\u0001\u0000\u0000\u0000\u12e4\u12e5\u0001\u0000"+ + "\u0000\u0000\u12e5\u12e8\u0001\u0000\u0000\u0000\u12e6\u12e4\u0001\u0000"+ + "\u0000\u0000\u12e7\u12b8\u0001\u0000\u0000\u0000\u12e7\u12c5\u0001\u0000"+ + "\u0000\u0000\u12e7\u12d2\u0001\u0000\u0000\u0000\u12e7\u12df\u0001\u0000"+ + "\u0000\u0000\u12e8\u010f\u0001\u0000\u0000\u0000\u12e9\u12f2\u0005\u0002"+ + "\u0000\u0000\u12ea\u12ef\u0003\u0172\u00b9\u0000\u12eb\u12ec\u0005\u0004"+ + "\u0000\u0000\u12ec\u12ee\u0003\u0172\u00b9\u0000\u12ed\u12eb\u0001\u0000"+ + "\u0000\u0000\u12ee\u12f1\u0001\u0000\u0000\u0000\u12ef\u12ed\u0001\u0000"+ + "\u0000\u0000\u12ef\u12f0\u0001\u0000\u0000\u0000\u12f0\u12f3\u0001\u0000"+ + "\u0000\u0000\u12f1\u12ef\u0001\u0000\u0000\u0000\u12f2\u12ea\u0001\u0000"+ + "\u0000\u0000\u12f2\u12f3\u0001\u0000\u0000\u0000\u12f3\u12f4\u0001\u0000"+ + "\u0000\u0000\u12f4\u12f5\u0005\u0003\u0000\u0000\u12f5\u0111\u0001\u0000"+ + "\u0000\u0000\u12f6\u12f7\u0005\u00cb\u0000\u0000\u12f7\u12f8\u0003\u0176"+ + "\u00bb\u0000\u12f8\u0113\u0001\u0000\u0000\u0000\u12f9\u12fa\u0005\u0165"+ + "\u0000\u0000\u12fa\u12fb\u0003\u0176\u00bb\u0000\u12fb\u0115\u0001\u0000"+ + "\u0000\u0000\u12fc\u1303\u0003\u0118\u008c\u0000\u12fd\u12ff\u0005\u0004"+ + "\u0000\u0000\u12fe\u12fd\u0001\u0000\u0000\u0000\u12fe\u12ff\u0001\u0000"+ + "\u0000\u0000\u12ff\u1300\u0001\u0000\u0000\u0000\u1300\u1302\u0003\u0118"+ + "\u008c\u0000\u1301\u12fe\u0001\u0000\u0000\u0000\u1302\u1305\u0001\u0000"+ + "\u0000\u0000\u1303\u1301\u0001\u0000\u0000\u0000\u1303\u1304\u0001\u0000"+ + "\u0000\u0000\u1304\u1306\u0001\u0000\u0000\u0000\u1305\u1303\u0001\u0000"+ + "\u0000\u0000\u1306\u1307\u0005\u020d\u0000\u0000\u1307\u0117\u0001\u0000"+ + "\u0000\u0000\u1308\u1316\u0003\u01c0\u00e0\u0000\u1309\u130a\u0005\u0002"+ + "\u0000\u0000\u130a\u1311\u0003\u011a\u008d\u0000\u130b\u130d\u0005\u0004"+ + "\u0000\u0000\u130c\u130b\u0001\u0000\u0000\u0000\u130c\u130d\u0001\u0000"+ + "\u0000\u0000\u130d\u130e\u0001\u0000\u0000\u0000\u130e\u1310\u0003\u011a"+ + "\u008d\u0000\u130f\u130c\u0001\u0000\u0000\u0000\u1310\u1313\u0001\u0000"+ + "\u0000\u0000\u1311\u130f\u0001\u0000\u0000\u0000\u1311\u1312\u0001\u0000"+ + "\u0000\u0000\u1312\u1314\u0001\u0000\u0000\u0000\u1313\u1311\u0001\u0000"+ + "\u0000\u0000\u1314\u1315\u0005\u0003\u0000\u0000\u1315\u1317\u0001\u0000"+ + "\u0000\u0000\u1316\u1309\u0001\u0000\u0000\u0000\u1316\u1317\u0001\u0000"+ + "\u0000\u0000\u1317\u1327\u0001\u0000\u0000\u0000\u1318\u1324\u0007$\u0000"+ + "\u0000\u1319\u131a\u0005\u0002\u0000\u0000\u131a\u131f\u0003\u0146\u00a3"+ + "\u0000\u131b\u131c\u0005\u0004\u0000\u0000\u131c\u131e\u0003\u0146\u00a3"+ + "\u0000\u131d\u131b\u0001\u0000\u0000\u0000\u131e\u1321\u0001\u0000\u0000"+ + "\u0000\u131f\u131d\u0001\u0000\u0000\u0000\u131f\u1320\u0001\u0000\u0000"+ + "\u0000\u1320\u1322\u0001\u0000\u0000\u0000\u1321\u131f\u0001\u0000\u0000"+ + "\u0000\u1322\u1323\u0005\u0003\u0000\u0000\u1323\u1325\u0001\u0000\u0000"+ + "\u0000\u1324\u1319\u0001\u0000\u0000\u0000\u1324\u1325\u0001\u0000\u0000"+ + "\u0000\u1325\u1327\u0001\u0000\u0000\u0000\u1326\u1308\u0001\u0000\u0000"+ + "\u0000\u1326\u1318\u0001\u0000\u0000\u0000\u1327\u0119\u0001\u0000\u0000"+ + "\u0000\u1328\u132e\u0003\u00b6[\u0000\u1329\u132c\u0005\u01f7\u0000\u0000"+ + "\u132a\u132d\u0003\u0198\u00cc\u0000\u132b\u132d\u0003\u01c0\u00e0\u0000"+ + "\u132c\u132a\u0001\u0000\u0000\u0000\u132c\u132b\u0001\u0000\u0000\u0000"+ + "\u132d\u132f\u0001\u0000\u0000\u0000\u132e\u1329\u0001\u0000\u0000\u0000"+ + "\u132e\u132f\u0001\u0000\u0000\u0000\u132f\u1332\u0001\u0000\u0000\u0000"+ + "\u1330\u1332\u0003\u0198\u00cc\u0000\u1331\u1328\u0001\u0000\u0000\u0000"+ + "\u1331\u1330\u0001\u0000\u0000\u0000\u1332\u011b\u0001\u0000\u0000\u0000"+ + "\u1333\u1334\u0003\u0146\u00a3\u0000\u1334\u1337\u0005\u01f7\u0000\u0000"+ + "\u1335\u1338\u0003\u0172\u00b9\u0000\u1336\u1338\u0005|\u0000\u0000\u1337"+ + "\u1335\u0001\u0000\u0000\u0000\u1337\u1336\u0001\u0000\u0000\u0000\u1338"+ + "\u011d\u0001\u0000\u0000\u0000\u1339\u133e\u0003\u011c\u008e\u0000\u133a"+ + "\u133b\u0005\u0004\u0000\u0000\u133b\u133d\u0003\u011c\u008e\u0000\u133c"+ + "\u133a\u0001\u0000\u0000\u0000\u133d\u1340\u0001\u0000\u0000\u0000\u133e"+ + "\u133c\u0001\u0000\u0000\u0000\u133e\u133f\u0001\u0000\u0000\u0000\u133f"+ + "\u011f\u0001\u0000\u0000\u0000\u1340\u133e\u0001\u0000\u0000\u0000\u1341"+ + "\u1342\u0005\u00fa\u0000\u0000\u1342\u1343\u0005\u01e9\u0000\u0000\u1343"+ + "\u1344\u0003\u01c0\u00e0\u0000\u1344\u134d\u0005\u0002\u0000\u0000\u1345"+ + "\u134a\u0003\u0172\u00b9\u0000\u1346\u1347\u0005\u0004\u0000\u0000\u1347"+ + "\u1349\u0003\u0172\u00b9\u0000\u1348\u1346\u0001\u0000\u0000\u0000\u1349"+ + "\u134c\u0001\u0000\u0000\u0000\u134a\u1348\u0001\u0000\u0000\u0000\u134a"+ + "\u134b\u0001\u0000\u0000\u0000\u134b\u134e\u0001\u0000\u0000\u0000\u134c"+ + "\u134a\u0001\u0000\u0000\u0000\u134d\u1345\u0001\u0000\u0000\u0000\u134d"+ + "\u134e\u0001\u0000\u0000\u0000\u134e\u134f\u0001\u0000\u0000\u0000\u134f"+ + "\u1350\u0005\u0003\u0000\u0000\u1350\u1351\u0003\u01c0\u00e0\u0000\u1351"+ + "\u1352\u0005\u001c\u0000\u0000\u1352\u1357\u0003\u01c0\u00e0\u0000\u1353"+ + "\u1354\u0005\u0004\u0000\u0000\u1354\u1356\u0003\u01c0\u00e0\u0000\u1355"+ + "\u1353\u0001\u0000\u0000\u0000\u1356\u1359\u0001\u0000\u0000\u0000\u1357"+ + "\u1355\u0001\u0000\u0000\u0000\u1357\u1358\u0001\u0000\u0000\u0000\u1358"+ + "\u0121\u0001\u0000\u0000\u0000\u1359\u1357\u0001\u0000\u0000\u0000\u135a"+ + "\u135c\u0003\u0124\u0092\u0000\u135b\u135a\u0001\u0000\u0000\u0000\u135b"+ + "\u135c\u0001\u0000\u0000\u0000\u135c\u135e\u0001\u0000\u0000\u0000\u135d"+ + "\u135f\u0003\u0128\u0094\u0000\u135e\u135d\u0001\u0000\u0000\u0000\u135e"+ + "\u135f\u0001\u0000\u0000\u0000\u135f\u0123\u0001\u0000\u0000\u0000\u1360"+ + "\u1361\u0005\u013a\u0000\u0000\u1361\u1362\u0005;\u0000\u0000\u1362\u1367"+ + "\u0003\u0126\u0093\u0000\u1363\u1364\u0005\u0004\u0000\u0000\u1364\u1366"+ + "\u0003\u0126\u0093\u0000\u1365\u1363\u0001\u0000\u0000\u0000\u1366\u1369"+ + "\u0001\u0000\u0000\u0000\u1367\u1365\u0001\u0000\u0000\u0000\u1367\u1368"+ + "\u0001\u0000\u0000\u0000\u1368\u0125\u0001\u0000\u0000\u0000\u1369\u1367"+ + "\u0001\u0000\u0000\u0000\u136a\u136c\u0003\u0172\u00b9\u0000\u136b\u136d"+ + "\u0007%\u0000\u0000\u136c\u136b\u0001\u0000\u0000\u0000\u136c\u136d\u0001"+ + "\u0000\u0000\u0000\u136d\u1370\u0001\u0000\u0000\u0000\u136e\u136f\u0005"+ + "\u0131\u0000\u0000\u136f\u1371\u0007&\u0000\u0000\u1370\u136e\u0001\u0000"+ + "\u0000\u0000\u1370\u1371\u0001\u0000\u0000\u0000\u1371\u0127\u0001\u0000"+ + "\u0000\u0000\u1372\u1373\u0005\u0101\u0000\u0000\u1373\u137d\u0005\u0216"+ + "\u0000\u0000\u1374\u1375\u0005\u0101\u0000\u0000\u1375\u1376\u0005\u0216"+ + "\u0000\u0000\u1376\u1377\u0005\u0134\u0000\u0000\u1377\u137d\u0005\u0216"+ + "\u0000\u0000\u1378\u1379\u0005\u0101\u0000\u0000\u1379\u137a\u0005\u0216"+ + "\u0000\u0000\u137a\u137b\u0005\u0004\u0000\u0000\u137b\u137d\u0005\u0216"+ + "\u0000\u0000\u137c\u1372\u0001\u0000\u0000\u0000\u137c\u1374\u0001\u0000"+ + "\u0000\u0000\u137c\u1378\u0001\u0000\u0000\u0000\u137d\u0129\u0001\u0000"+ + "\u0000\u0000\u137e\u137f\u0005\u0141\u0000\u0000\u137f\u1380\u0005;\u0000"+ + "\u0000\u1380\u1385\u0003\u0172\u00b9\u0000\u1381\u1382\u0005\u0004\u0000"+ + "\u0000\u1382\u1384\u0003\u0172\u00b9\u0000\u1383\u1381\u0001\u0000\u0000"+ + "\u0000\u1384\u1387\u0001\u0000\u0000\u0000\u1385\u1383\u0001\u0000\u0000"+ + "\u0000\u1385\u1386\u0001\u0000\u0000\u0000\u1386\u012b\u0001\u0000\u0000"+ + "\u0000\u1387\u1385\u0001\u0000\u0000\u0000\u1388\u138a\u0005\u00de\u0000"+ + "\u0000\u1389\u1388\u0001\u0000\u0000\u0000\u1389\u138a\u0001\u0000\u0000"+ + "\u0000\u138a\u13a1\u0001\u0000\u0000\u0000\u138b\u13a1\u0005f\u0000\u0000"+ + "\u138c\u138e\u0005\u00fd\u0000\u0000\u138d\u138f\u0005\u013b\u0000\u0000"+ + "\u138e\u138d\u0001\u0000\u0000\u0000\u138e\u138f\u0001\u0000\u0000\u0000"+ + "\u138f\u13a1\u0001\u0000\u0000\u0000\u1390\u1392\u0005\u0184\u0000\u0000"+ + "\u1391\u1393\u0005\u013b\u0000\u0000\u1392\u1391\u0001\u0000\u0000\u0000"+ + "\u1392\u1393\u0001\u0000\u0000\u0000\u1393\u13a1\u0001\u0000\u0000\u0000"+ + "\u1394\u1396\u0005\u00be\u0000\u0000\u1395\u1397\u0005\u013b\u0000\u0000"+ + "\u1396\u1395\u0001\u0000\u0000\u0000\u1396\u1397\u0001\u0000\u0000\u0000"+ + "\u1397\u13a1\u0001\u0000\u0000\u0000\u1398\u1399\u0005\u00fd\u0000\u0000"+ + "\u1399\u13a1\u0005\u0195\u0000\u0000\u139a\u139b\u0005\u0184\u0000\u0000"+ + "\u139b\u13a1\u0005\u0195\u0000\u0000\u139c\u139d\u0005\u00fd\u0000\u0000"+ + "\u139d\u13a1\u0005\u0019\u0000\u0000\u139e\u139f\u0005\u0184\u0000\u0000"+ + "\u139f\u13a1\u0005\u0019\u0000\u0000\u13a0\u1389\u0001\u0000\u0000\u0000"+ + "\u13a0\u138b\u0001\u0000\u0000\u0000\u13a0\u138c\u0001\u0000\u0000\u0000"+ + "\u13a0\u1390\u0001\u0000\u0000\u0000\u13a0\u1394\u0001\u0000\u0000\u0000"+ + "\u13a0\u1398\u0001\u0000\u0000\u0000\u13a0\u139a\u0001\u0000\u0000\u0000"+ + "\u13a0\u139c\u0001\u0000\u0000\u0000\u13a0\u139e\u0001\u0000\u0000\u0000"+ + "\u13a1\u012d\u0001\u0000\u0000\u0000\u13a2\u13a3\u0005\u0135\u0000\u0000"+ + "\u13a3\u13a7\u0003\u0176\u00bb\u0000\u13a4\u13a5\u0005\u01de\u0000\u0000"+ + "\u13a5\u13a7\u0003\u0130\u0098\u0000\u13a6\u13a2\u0001\u0000\u0000\u0000"+ + "\u13a6\u13a4\u0001\u0000\u0000\u0000\u13a7\u012f\u0001\u0000\u0000\u0000"+ + "\u13a8\u13a9\u0005\u0002\u0000\u0000\u13a9\u13aa\u0003\u0132\u0099\u0000"+ + "\u13aa\u13ab\u0005\u0003\u0000\u0000\u13ab\u0131\u0001\u0000\u0000\u0000"+ + "\u13ac\u13b1\u0003\u01bc\u00de\u0000\u13ad\u13ae\u0005\u0004\u0000\u0000"+ + "\u13ae\u13b0\u0003\u01bc\u00de\u0000\u13af\u13ad\u0001\u0000\u0000\u0000"+ + "\u13b0\u13b3\u0001\u0000\u0000\u0000\u13b1\u13af\u0001\u0000\u0000\u0000"+ + "\u13b1\u13b2\u0001\u0000\u0000\u0000\u13b2\u0133\u0001\u0000\u0000\u0000"+ + "\u13b3\u13b1\u0001\u0000\u0000\u0000\u13b4\u13b5\u0005\u020f\u0000\u0000"+ + "\u13b5\u13b6\u0003\u01c0\u00e0\u0000\u13b6\u13b8\u0005\u0002\u0000\u0000"+ + "\u13b7\u13b9\u0003\u013c\u009e\u0000\u13b8\u13b7\u0001\u0000\u0000\u0000"+ + "\u13b8\u13b9\u0001\u0000\u0000\u0000\u13b9\u13ba\u0001\u0000\u0000\u0000"+ + "\u13ba\u13bb\u0005\u0003\u0000\u0000\u13bb\u0135\u0001\u0000\u0000\u0000"+ + "\u13bc\u13be\u0003\u0146\u00a3\u0000\u13bd\u13bf\u0003\u0134\u009a\u0000"+ + "\u13be\u13bd\u0001\u0000\u0000\u0000\u13be\u13bf\u0001\u0000\u0000\u0000"+ + "\u13bf\u13c1\u0001\u0000\u0000\u0000\u13c0\u13c2\u0003\u0138\u009c\u0000"+ + "\u13c1\u13c0\u0001\u0000\u0000\u0000\u13c1\u13c2\u0001\u0000\u0000\u0000"+ + "\u13c2\u13c4\u0001\u0000\u0000\u0000\u13c3\u13c5\u0003\u01ba\u00dd\u0000"+ + "\u13c4\u13c3\u0001\u0000\u0000\u0000\u13c4\u13c5\u0001\u0000\u0000\u0000"+ + "\u13c5\u13c7\u0001\u0000\u0000\u0000\u13c6\u13c8\u0003\u0196\u00cb\u0000"+ + "\u13c7\u13c6\u0001\u0000\u0000\u0000\u13c7\u13c8\u0001\u0000\u0000\u0000"+ + "\u13c8\u13ca\u0001\u0000\u0000\u0000\u13c9\u13cb\u0003\u016a\u00b5\u0000"+ + "\u13ca\u13c9\u0001\u0000\u0000\u0000\u13ca\u13cb\u0001\u0000\u0000\u0000"+ + "\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13ce\u0003\u0144\u00a2\u0000"+ + "\u13cd\u13cf\u0003\u01b6\u00db\u0000\u13ce\u13cd\u0001\u0000\u0000\u0000"+ + "\u13ce\u13cf\u0001\u0000\u0000\u0000\u13cf\u13d1\u0001\u0000\u0000\u0000"+ + "\u13d0\u13d2\u0003\u010a\u0085\u0000\u13d1\u13d0\u0001\u0000\u0000\u0000"+ + "\u13d1\u13d2\u0001\u0000\u0000\u0000\u13d2\u13d6\u0001\u0000\u0000\u0000"+ + "\u13d3\u13d5\u0003\u0120\u0090\u0000\u13d4\u13d3\u0001\u0000\u0000\u0000"+ + "\u13d5\u13d8\u0001\u0000\u0000\u0000\u13d6\u13d4\u0001\u0000\u0000\u0000"+ + "\u13d6\u13d7\u0001\u0000\u0000\u0000\u13d7\u13f0\u0001\u0000\u0000\u0000"+ + "\u13d8\u13d6\u0001\u0000\u0000\u0000\u13d9\u13da\u0005\u0002\u0000\u0000"+ + "\u13da\u13db\u0003\u00e4r\u0000\u13db\u13dc\u0005\u0003\u0000\u0000\u13dc"+ + "\u13e0\u0003\u0144\u00a2\u0000\u13dd\u13df\u0003\u0120\u0090\u0000\u13de"+ + "\u13dd\u0001\u0000\u0000\u0000\u13df\u13e2\u0001\u0000\u0000\u0000\u13e0"+ + "\u13de\u0001\u0000\u0000\u0000\u13e0\u13e1\u0001\u0000\u0000\u0000\u13e1"+ + "\u13f0\u0001\u0000\u0000\u0000\u13e2\u13e0\u0001\u0000\u0000\u0000\u13e3"+ + "\u13e4\u0003\u01c0\u00e0\u0000\u13e4\u13e6\u0005\u0002\u0000\u0000\u13e5"+ + "\u13e7\u0003\u013c\u009e\u0000\u13e6\u13e5\u0001\u0000\u0000\u0000\u13e6"+ + "\u13e7\u0001\u0000\u0000\u0000\u13e7\u13e8\u0001\u0000\u0000\u0000\u13e8"+ + "\u13e9\u0005\u0003\u0000\u0000\u13e9\u13ea\u0003\u0144\u00a2\u0000\u13ea"+ + "\u13f0\u0001\u0000\u0000\u0000\u13eb\u13ec\u0005\u0002\u0000\u0000\u13ec"+ + "\u13ed\u0003\u0102\u0081\u0000\u13ed\u13ee\u0005\u0003\u0000\u0000\u13ee"+ + "\u13f0\u0001\u0000\u0000\u0000\u13ef\u13bc\u0001\u0000\u0000\u0000\u13ef"+ + "\u13d9\u0001\u0000\u0000\u0000\u13ef\u13e3\u0001\u0000\u0000\u0000\u13ef"+ + "\u13eb\u0001\u0000\u0000\u0000\u13f0\u0137\u0001\u0000\u0000\u0000\u13f1"+ + "\u13f2\u0005\u00db\u0000\u0000\u13f2\u13f3\u0003\u01c0\u00e0\u0000\u13f3"+ + "\u0139\u0001\u0000\u0000\u0000\u13f4\u13f5\u0005\u015e\u0000\u0000\u13f5"+ + "\u13f6\u0005\u0002\u0000\u0000\u13f6\u13f7\u0003\u013c\u009e\u0000\u13f7"+ + "\u13f8\u0005\u0003\u0000\u0000\u13f8\u013b\u0001\u0000\u0000\u0000\u13f9"+ + "\u13fe\u0003\u013e\u009f\u0000\u13fa\u13fb\u0005\u0004\u0000\u0000\u13fb"+ + "\u13fd\u0003\u013e\u009f\u0000\u13fc\u13fa\u0001\u0000\u0000\u0000\u13fd"+ + "\u1400\u0001\u0000\u0000\u0000\u13fe\u13fc\u0001\u0000\u0000\u0000\u13fe"+ + "\u13ff\u0001\u0000\u0000\u0000\u13ff\u013d\u0001\u0000\u0000\u0000\u1400"+ + "\u13fe\u0001\u0000\u0000\u0000\u1401\u1402\u0003\u0140\u00a0\u0000\u1402"+ + "\u1403\u0005\u01f7\u0000\u0000\u1403\u1404\u0003\u0142\u00a1\u0000\u1404"+ + "\u013f\u0001\u0000\u0000\u0000\u1405\u1408\u0003\u01c0\u00e0\u0000\u1406"+ + "\u1408\u0003\u0198\u00cc\u0000\u1407\u1405\u0001\u0000\u0000\u0000\u1407"+ + "\u1406\u0001\u0000\u0000\u0000\u1408\u0141\u0001\u0000\u0000\u0000\u1409"+ + "\u140c\u0003\u01c0\u00e0\u0000\u140a\u140c\u0003\u0198\u00cc\u0000\u140b"+ + "\u1409\u0001\u0000\u0000\u0000\u140b\u140a\u0001\u0000\u0000\u0000\u140c"+ + "\u0143\u0001\u0000\u0000\u0000\u140d\u140f\u0005\u001c\u0000\u0000\u140e"+ + "\u140d\u0001\u0000\u0000\u0000\u140e\u140f\u0001\u0000\u0000\u0000\u140f"+ + "\u1410\u0001\u0000\u0000\u0000\u1410\u1412\u0003\u01c2\u00e1\u0000\u1411"+ + "\u1413\u0003\u0130\u0098\u0000\u1412\u1411\u0001\u0000\u0000\u0000\u1412"+ + "\u1413\u0001\u0000\u0000\u0000\u1413\u1415\u0001\u0000\u0000\u0000\u1414"+ + "\u140e\u0001\u0000\u0000\u0000\u1414\u1415\u0001\u0000\u0000\u0000\u1415"+ + "\u0145\u0001\u0000\u0000\u0000\u1416\u141b\u0003\u01bc\u00de\u0000\u1417"+ + "\u1418\u0005\u0005\u0000\u0000\u1418\u141a\u0003\u01bc\u00de\u0000\u1419"+ + "\u1417\u0001\u0000\u0000\u0000\u141a\u141d\u0001\u0000\u0000\u0000\u141b"+ + "\u1419\u0001\u0000\u0000\u0000\u141b\u141c\u0001\u0000\u0000\u0000\u141c"+ + "\u0147\u0001\u0000\u0000\u0000\u141d\u141b\u0001\u0000\u0000\u0000\u141e"+ + "\u1423\u0003\u014a\u00a5\u0000\u141f\u1420\u0005\u0004\u0000\u0000\u1420"+ + "\u1422\u0003\u014a\u00a5\u0000\u1421\u141f\u0001\u0000\u0000\u0000\u1422"+ + "\u1425\u0001\u0000\u0000\u0000\u1423\u1421\u0001\u0000\u0000\u0000\u1423"+ + "\u1424\u0001\u0000\u0000\u0000\u1424\u0149\u0001\u0000\u0000\u0000\u1425"+ + "\u1423\u0001\u0000\u0000\u0000\u1426\u1429\u0003\u01c0\u00e0\u0000\u1427"+ + "\u1428\u0005Q\u0000\u0000\u1428\u142a\u0005\u0211\u0000\u0000\u1429\u1427"+ + "\u0001\u0000\u0000\u0000\u1429\u142a\u0001\u0000\u0000\u0000\u142a\u014b"+ + "\u0001\u0000\u0000\u0000\u142b\u1430\u0003\u014e\u00a7\u0000\u142c\u142d"+ + "\u0005\u0004\u0000\u0000\u142d\u142f\u0003\u014e\u00a7\u0000\u142e\u142c"+ + "\u0001\u0000\u0000\u0000\u142f\u1432\u0001\u0000\u0000\u0000\u1430\u142e"+ + "\u0001\u0000\u0000\u0000\u1430\u1431\u0001\u0000\u0000\u0000\u1431\u014d"+ + "\u0001\u0000\u0000\u0000\u1432\u1430\u0001\u0000\u0000\u0000\u1433\u1434"+ + "\u0003\u01c0\u00e0\u0000\u1434\u1436\u0003\u01a6\u00d3\u0000\u1435\u1437"+ + "\u0005\u00f4\u0000\u0000\u1436\u1435\u0001\u0000\u0000\u0000\u1436\u1437"+ + "\u0001\u0000\u0000\u0000\u1437\u1439\u0001\u0000\u0000\u0000\u1438\u143a"+ + "\u0003\u0168\u00b4\u0000\u1439\u1438\u0001\u0000\u0000\u0000\u1439\u143a"+ + "\u0001\u0000\u0000\u0000\u143a\u1444\u0001\u0000\u0000\u0000\u143b\u143c"+ + "\u0005\u00c1\u0000\u0000\u143c\u143e\u0005\"\u0000\u0000\u143d\u143b\u0001"+ + "\u0000\u0000\u0000\u143d\u143e\u0001\u0000\u0000\u0000\u143e\u143f\u0001"+ + "\u0000\u0000\u0000\u143f\u1440\u0005\u001c\u0000\u0000\u1440\u1441\u0005"+ + "\u0002\u0000\u0000\u1441\u1442\u0003\u0172\u00b9\u0000\u1442\u1443\u0005"+ + "\u0003\u0000\u0000\u1443\u1445\u0001\u0000\u0000\u0000\u1444\u143d\u0001"+ + "\u0000\u0000\u0000\u1444\u1445\u0001\u0000\u0000\u0000\u1445\u144a\u0001"+ + "\u0000\u0000\u0000\u1446\u1448\u0005\u012f\u0000\u0000\u1447\u1446\u0001"+ + "\u0000\u0000\u0000\u1447\u1448\u0001\u0000\u0000\u0000\u1448\u1449\u0001"+ + "\u0000\u0000\u0000\u1449\u144b\u0005\u0130\u0000\u0000\u144a\u1447\u0001"+ + "\u0000\u0000\u0000\u144a\u144b\u0001\u0000\u0000\u0000\u144b\u1453\u0001"+ + "\u0000\u0000\u0000\u144c\u1451\u0005!\u0000\u0000\u144d\u144e\u0005\u0002"+ + "\u0000\u0000\u144e\u144f\u0003\u01c6\u00e3\u0000\u144f\u1450\u0005\u0003"+ + "\u0000\u0000\u1450\u1452\u0001\u0000\u0000\u0000\u1451\u144d\u0001\u0000"+ + "\u0000\u0000\u1451\u1452\u0001\u0000\u0000\u0000\u1452\u1454\u0001\u0000"+ + "\u0000\u0000\u1453\u144c\u0001\u0000\u0000\u0000\u1453\u1454\u0001\u0000"+ + "\u0000\u0000\u1454\u146d\u0001\u0000\u0000\u0000\u1455\u146b\u0005|\u0000"+ + "\u0000\u1456\u146c\u0005\u0130\u0000\u0000\u1457\u1459\u0005\u01ff\u0000"+ + "\u0000\u1458\u1457\u0001\u0000\u0000\u0000\u1458\u1459\u0001\u0000\u0000"+ + "\u0000\u1459\u145a\u0001\u0000\u0000\u0000\u145a\u146c\u0005\u0216\u0000"+ + "\u0000\u145b\u145d\u0005\u01ff\u0000\u0000\u145c\u145b\u0001\u0000\u0000"+ + "\u0000\u145c\u145d\u0001\u0000\u0000\u0000\u145d\u145e\u0001\u0000\u0000"+ + "\u0000\u145e\u146c\u0005\u0218\u0000\u0000\u145f\u146c\u0005\u014e\u0000"+ + "\u0000\u1460\u146c\u0005\u0094\u0000\u0000\u1461\u146c\u0005/\u0000\u0000"+ + "\u1462\u146c\u0005\u0211\u0000\u0000\u1463\u146c\u0005j\u0000\u0000\u1464"+ + "\u1469\u0005l\u0000\u0000\u1465\u1466\u0005\u0002\u0000\u0000\u1466\u1467"+ + "\u0003\u01c6\u00e3\u0000\u1467\u1468\u0005\u0003\u0000\u0000\u1468\u146a"+ + "\u0001\u0000\u0000\u0000\u1469\u1465\u0001\u0000\u0000\u0000\u1469\u146a"+ + "\u0001\u0000\u0000\u0000\u146a\u146c\u0001\u0000\u0000\u0000\u146b\u1456"+ + "\u0001\u0000\u0000\u0000\u146b\u1458\u0001\u0000\u0000\u0000\u146b\u145c"+ + "\u0001\u0000\u0000\u0000\u146b\u145f\u0001\u0000\u0000\u0000\u146b\u1460"+ + "\u0001\u0000\u0000\u0000\u146b\u1461\u0001\u0000\u0000\u0000\u146b\u1462"+ + "\u0001\u0000\u0000\u0000\u146b\u1463\u0001\u0000\u0000\u0000\u146b\u1464"+ + "\u0001\u0000\u0000\u0000\u146c\u146e\u0001\u0000\u0000\u0000\u146d\u1455"+ + "\u0001\u0000\u0000\u0000\u146d\u146e\u0001\u0000\u0000\u0000\u146e\u1478"+ + "\u0001\u0000\u0000\u0000\u146f\u1470\u0005\u0135\u0000\u0000\u1470\u1471"+ + "\u0005\u01da\u0000\u0000\u1471\u1476\u0005l\u0000\u0000\u1472\u1473\u0005"+ + "\u0002\u0000\u0000\u1473\u1474\u0003\u01c6\u00e3\u0000\u1474\u1475\u0005"+ + "\u0003\u0000\u0000\u1475\u1477\u0001\u0000\u0000\u0000\u1476\u1472\u0001"+ + "\u0000\u0000\u0000\u1476\u1477\u0001\u0000\u0000\u0000\u1477\u1479\u0001"+ + "\u0000\u0000\u0000\u1478\u146f\u0001\u0000\u0000\u0000\u1478\u1479\u0001"+ + "\u0000\u0000\u0000\u1479\u147c\u0001\u0000\u0000\u0000\u147a\u147b\u0005"+ + "Q\u0000\u0000\u147b\u147d\u0005\u0211\u0000\u0000\u147c\u147a\u0001\u0000"+ + "\u0000\u0000\u147c\u147d\u0001\u0000\u0000\u0000\u147d\u014f\u0001\u0000"+ + "\u0000\u0000\u147e\u1483\u0003\u0152\u00a9\u0000\u147f\u1480\u0005\u0004"+ + "\u0000\u0000\u1480\u1482\u0003\u0152\u00a9\u0000\u1481\u147f\u0001\u0000"+ + "\u0000\u0000\u1482\u1485\u0001\u0000\u0000\u0000\u1483\u1481\u0001\u0000"+ + "\u0000\u0000\u1483\u1484\u0001\u0000\u0000\u0000\u1484\u0151\u0001\u0000"+ + "\u0000\u0000\u1485\u1483\u0001\u0000\u0000\u0000\u1486\u148a\u0005\u00db"+ + "\u0000\u0000\u1487\u1488\u0005\u00d6\u0000\u0000\u1488\u1489\u0005\u012f"+ + "\u0000\u0000\u1489\u148b\u0005\u00a4\u0000\u0000\u148a\u1487\u0001\u0000"+ + "\u0000\u0000\u148a\u148b\u0001\u0000\u0000\u0000\u148b\u148c\u0001\u0000"+ + "\u0000\u0000\u148c\u148d\u0003\u01c0\u00e0\u0000\u148d\u1490\u0003\u0130"+ + "\u0098\u0000\u148e\u148f\u0005\u01de\u0000\u0000\u148f\u1491\u0007\b\u0000"+ + "\u0000\u1490\u148e\u0001\u0000\u0000\u0000\u1490\u1491\u0001\u0000\u0000"+ + "\u0000\u1491\u1497\u0001\u0000\u0000\u0000\u1492\u1493\u0005\u015e\u0000"+ + "\u0000\u1493\u1494\u0005\u0002\u0000\u0000\u1494\u1495\u0003\u013c\u009e"+ + "\u0000\u1495\u1496\u0005\u0003\u0000\u0000\u1496\u1498\u0001\u0000\u0000"+ + "\u0000\u1497\u1492\u0001\u0000\u0000\u0000\u1497\u1498\u0001\u0000\u0000"+ + "\u0000\u1498\u149b\u0001\u0000\u0000\u0000\u1499\u149a\u0005Q\u0000\u0000"+ + "\u149a\u149c\u0005\u0211\u0000\u0000\u149b\u1499\u0001\u0000\u0000\u0000"+ + "\u149b\u149c\u0001\u0000\u0000\u0000\u149c\u0153\u0001\u0000\u0000\u0000"+ + "\u149d\u14a2\u0003\u0156\u00ab\u0000\u149e\u149f\u0005\u0004\u0000\u0000"+ + "\u149f\u14a1\u0003\u0156\u00ab\u0000\u14a0\u149e\u0001\u0000\u0000\u0000"+ + "\u14a1\u14a4\u0001\u0000\u0000\u0000\u14a2\u14a0\u0001\u0000\u0000\u0000"+ + "\u14a2\u14a3\u0001\u0000\u0000\u0000\u14a3\u0155\u0001\u0000\u0000\u0000"+ + "\u14a4\u14a2\u0001\u0000\u0000\u0000\u14a5\u14aa\u0003\u0158\u00ac\u0000"+ + "\u14a6\u14aa\u0003\u015a\u00ad\u0000\u14a7\u14aa\u0003\u015c\u00ae\u0000"+ + "\u14a8\u14aa\u0003\u015e\u00af\u0000\u14a9\u14a5\u0001\u0000\u0000\u0000"+ + "\u14a9\u14a6\u0001\u0000\u0000\u0000\u14a9\u14a7\u0001\u0000\u0000\u0000"+ + "\u14a9\u14a8\u0001\u0000\u0000\u0000\u14aa\u14af\u0001\u0000\u0000\u0000"+ + "\u14ab\u14ac\u0005\u0002\u0000\u0000\u14ac\u14ad\u0003\u013c\u009e\u0000"+ + "\u14ad\u14ae\u0005\u0003\u0000\u0000\u14ae\u14b0\u0001\u0000\u0000\u0000"+ + "\u14af\u14ab\u0001\u0000\u0000\u0000\u14af\u14b0\u0001\u0000\u0000\u0000"+ + "\u14b0\u0157\u0001\u0000\u0000\u0000\u14b1\u14b5\u0005\u0141\u0000\u0000"+ + "\u14b2\u14b3\u0005\u00d6\u0000\u0000\u14b3\u14b4\u0005\u012f\u0000\u0000"+ + "\u14b4\u14b6\u0005\u00a4\u0000\u0000\u14b5\u14b2\u0001\u0000\u0000\u0000"+ + "\u14b5\u14b6\u0001\u0000\u0000\u0000\u14b6\u14b7\u0001\u0000\u0000\u0000"+ + "\u14b7\u14b8\u0003\u01c0\u00e0\u0000\u14b8\u14b9\u0005\u01e0\u0000\u0000"+ + "\u14b9\u14ba\u0005\u00fe\u0000\u0000\u14ba\u14bd\u0005\u01c1\u0000\u0000"+ + "\u14bb\u14be\u0005\u011a\u0000\u0000\u14bc\u14be\u0003\u0160\u00b0\u0000"+ + "\u14bd\u14bb\u0001\u0000\u0000\u0000\u14bd\u14bc\u0001\u0000\u0000\u0000"+ + "\u14be\u0159\u0001\u0000\u0000\u0000\u14bf\u14c3\u0005\u0141\u0000\u0000"+ + "\u14c0\u14c1\u0005\u00d6\u0000\u0000\u14c1\u14c2\u0005\u012f\u0000\u0000"+ + "\u14c2\u14c4\u0005\u00a4\u0000\u0000\u14c3\u14c0\u0001\u0000\u0000\u0000"+ + "\u14c3\u14c4\u0001\u0000\u0000\u0000\u14c4\u14c5\u0001\u0000\u0000\u0000"+ + "\u14c5\u14c6\u0003\u01c0\u00e0\u0000\u14c6\u14c7\u0005\u01e0\u0000\u0000"+ + "\u14c7\u14c8\u0005\u0007\u0000\u0000\u14c8\u14c9\u0003\u0160\u00b0\u0000"+ + "\u14c9\u14ca\u0005\u0004\u0000\u0000\u14ca\u14cb\u0003\u0160\u00b0\u0000"+ + "\u14cb\u14cc\u0005\u0003\u0000\u0000\u14cc\u015b\u0001\u0000\u0000\u0000"+ + "\u14cd\u14ce\u0005\u00bb\u0000\u0000\u14ce\u14cf\u0003\u0160\u00b0\u0000"+ + "\u14cf\u14d0\u0005\u01c6\u0000\u0000\u14d0\u14d1\u0003\u0160\u00b0\u0000"+ + "\u14d1\u14d2\u0005\u00e5\u0000\u0000\u14d2\u14d4\u0005\u0216\u0000\u0000"+ + "\u14d3\u14d5\u0003\u01a2\u00d1\u0000\u14d4\u14d3\u0001\u0000\u0000\u0000"+ + "\u14d4\u14d5\u0001\u0000\u0000\u0000\u14d5\u015d\u0001\u0000\u0000\u0000"+ + "\u14d6\u14da\u0005\u0141\u0000\u0000\u14d7\u14d8\u0005\u00d6\u0000\u0000"+ + "\u14d8\u14d9\u0005\u012f\u0000\u0000\u14d9\u14db\u0005\u00a4\u0000\u0000"+ + "\u14da\u14d7\u0001\u0000\u0000\u0000\u14da\u14db\u0001\u0000\u0000\u0000"+ + "\u14db\u14dc\u0001\u0000\u0000\u0000\u14dc\u14ed\u0003\u01c0\u00e0\u0000"+ + "\u14dd\u14de\u0005\u01e0\u0000\u0000\u14de\u14eb\u0005\u00d9\u0000\u0000"+ + "\u14df\u14e0\u0005\u0002\u0000\u0000\u14e0\u14e5\u0003\u0160\u00b0\u0000"+ + "\u14e1\u14e2\u0005\u0004\u0000\u0000\u14e2\u14e4\u0003\u0160\u00b0\u0000"+ + "\u14e3\u14e1\u0001\u0000\u0000\u0000\u14e4\u14e7\u0001\u0000\u0000\u0000"+ + "\u14e5\u14e3\u0001\u0000\u0000\u0000\u14e5\u14e6\u0001\u0000\u0000\u0000"+ + "\u14e6\u14e8\u0001\u0000\u0000\u0000\u14e7\u14e5\u0001\u0000\u0000\u0000"+ + "\u14e8\u14e9\u0005\u0003\u0000\u0000\u14e9\u14ec\u0001\u0000\u0000\u0000"+ + "\u14ea\u14ec\u0003\u0160\u00b0\u0000\u14eb\u14df\u0001\u0000\u0000\u0000"+ + "\u14eb\u14ea\u0001\u0000\u0000\u0000\u14ec\u14ee\u0001\u0000\u0000\u0000"+ + "\u14ed\u14dd\u0001\u0000\u0000\u0000\u14ed\u14ee\u0001\u0000\u0000\u0000"+ + "\u14ee\u015f\u0001\u0000\u0000\u0000\u14ef\u14f0\u0005\u0002\u0000\u0000"+ + "\u14f0\u14f5\u0003\u0162\u00b1\u0000\u14f1\u14f2\u0005\u0004\u0000\u0000"+ + "\u14f2\u14f4\u0003\u0162\u00b1\u0000\u14f3\u14f1\u0001\u0000\u0000\u0000"+ + "\u14f4\u14f7\u0001\u0000\u0000\u0000\u14f5\u14f3\u0001\u0000\u0000\u0000"+ + "\u14f5\u14f6\u0001\u0000\u0000\u0000\u14f6\u14f8\u0001\u0000\u0000\u0000"+ + "\u14f7\u14f5\u0001\u0000\u0000\u0000\u14f8\u14f9\u0005\u0003\u0000\u0000"+ + "\u14f9\u0161\u0001\u0000\u0000\u0000\u14fa\u14fc\u0005\u01ff\u0000\u0000"+ + "\u14fb\u14fa\u0001\u0000\u0000\u0000\u14fb\u14fc\u0001\u0000\u0000\u0000"+ + "\u14fc\u14fd\u0001\u0000\u0000\u0000\u14fd\u1502\u0005\u0216\u0000\u0000"+ + "\u14fe\u1502\u0005\u0211\u0000\u0000\u14ff\u1502\u0005\u011a\u0000\u0000"+ + "\u1500\u1502\u0005\u0130\u0000\u0000\u1501\u14fb\u0001\u0000\u0000\u0000"+ + "\u1501\u14fe\u0001\u0000\u0000\u0000\u1501\u14ff\u0001\u0000\u0000\u0000"+ + "\u1501\u1500\u0001\u0000\u0000\u0000\u1502\u0163\u0001\u0000\u0000\u0000"+ + "\u1503\u1508\u0003\u0166\u00b3\u0000\u1504\u1505\u0005\u0004\u0000\u0000"+ + "\u1505\u1507\u0003\u0166\u00b3\u0000\u1506\u1504\u0001\u0000\u0000\u0000"+ + "\u1507\u150a\u0001\u0000\u0000\u0000\u1508\u1506\u0001\u0000\u0000\u0000"+ + "\u1508\u1509\u0001\u0000\u0000\u0000\u1509\u0165\u0001\u0000\u0000\u0000"+ + "\u150a\u1508\u0001\u0000\u0000\u0000\u150b\u150c\u0003\u01c0\u00e0\u0000"+ + "\u150c\u1510\u0003\u0130\u0098\u0000\u150d\u150e\u0005\u0092\u0000\u0000"+ + "\u150e\u150f\u0005\u00f4\u0000\u0000\u150f\u1511\u0003\u0130\u0098\u0000"+ + "\u1510\u150d\u0001\u0000\u0000\u0000\u1510\u1511\u0001\u0000\u0000\u0000"+ + "\u1511\u1513\u0001\u0000\u0000\u0000\u1512\u1514\u0003\u013a\u009d\u0000"+ + "\u1513\u1512\u0001\u0000\u0000\u0000\u1513\u1514\u0001\u0000\u0000\u0000"+ + "\u1514\u0167\u0001\u0000\u0000\u0000\u1515\u1516\u0007\'\u0000\u0000\u1516"+ + "\u0169\u0001\u0000\u0000\u0000\u1517\u1518\u0005\u01ba\u0000\u0000\u1518"+ + "\u1519\u0005\u0002\u0000\u0000\u1519\u151e\u0005\u0216\u0000\u0000\u151a"+ + "\u151b\u0005\u0004\u0000\u0000\u151b\u151d\u0005\u0216\u0000\u0000\u151c"+ + "\u151a\u0001\u0000\u0000\u0000\u151d\u1520\u0001\u0000\u0000\u0000\u151e"+ + "\u151c\u0001\u0000\u0000\u0000\u151e\u151f\u0001\u0000\u0000\u0000\u151f"+ + "\u1521\u0001\u0000\u0000\u0000\u1520\u151e\u0001\u0000\u0000\u0000\u1521"+ + "\u1522\u0005\u0003\u0000\u0000\u1522\u016b\u0001\u0000\u0000\u0000\u1523"+ + "\u1524\u0005\u01e0\u0000\u0000\u1524\u1529\u0003\u0178\u00bc\u0000\u1525"+ + "\u1526\u0005\u0004\u0000\u0000\u1526\u1528\u0003\u0178\u00bc\u0000\u1527"+ + "\u1525\u0001\u0000\u0000\u0000\u1528\u152b\u0001\u0000\u0000\u0000\u1529"+ + "\u1527\u0001\u0000\u0000\u0000\u1529\u152a\u0001\u0000\u0000\u0000\u152a"+ + "\u016d\u0001\u0000\u0000\u0000\u152b\u1529\u0001\u0000\u0000\u0000\u152c"+ + "\u1531\u0003\u0172\u00b9\u0000\u152d\u152f\u0005\u001c\u0000\u0000\u152e"+ + "\u152d\u0001\u0000\u0000\u0000\u152e\u152f\u0001\u0000\u0000\u0000\u152f"+ + "\u1530\u0001\u0000\u0000\u0000\u1530\u1532\u0003\u00b6[\u0000\u1531\u152e"+ + "\u0001\u0000\u0000\u0000\u1531\u1532\u0001\u0000\u0000\u0000\u1532\u016f"+ + "\u0001\u0000\u0000\u0000\u1533\u1538\u0003\u016e\u00b7\u0000\u1534\u1535"+ + "\u0005\u0004\u0000\u0000\u1535\u1537\u0003\u016e\u00b7\u0000\u1536\u1534"+ + "\u0001\u0000\u0000\u0000\u1537\u153a\u0001\u0000\u0000\u0000\u1538\u1536"+ + "\u0001\u0000\u0000\u0000\u1538\u1539\u0001\u0000\u0000\u0000\u1539\u0171"+ + "\u0001\u0000\u0000\u0000\u153a\u1538\u0001\u0000\u0000\u0000\u153b\u153e"+ + "\u0003\u0176\u00bb\u0000\u153c\u153e\u0003\u0174\u00ba\u0000\u153d\u153b"+ + "\u0001\u0000\u0000\u0000\u153d\u153c\u0001\u0000\u0000\u0000\u153e\u0173"+ + "\u0001\u0000\u0000\u0000\u153f\u1540\u0003\u01bc\u00de\u0000\u1540\u1541"+ + "\u0005\u020b\u0000\u0000\u1541\u1542\u0003\u0176\u00bb\u0000\u1542\u1550"+ + "\u0001\u0000\u0000\u0000\u1543\u1544\u0005\u0002\u0000\u0000\u1544\u1547"+ + "\u0003\u01bc\u00de\u0000\u1545\u1546\u0005\u0004\u0000\u0000\u1546\u1548"+ + "\u0003\u01bc\u00de\u0000\u1547\u1545\u0001\u0000\u0000\u0000\u1548\u1549"+ + "\u0001\u0000\u0000\u0000\u1549\u1547\u0001\u0000\u0000\u0000\u1549\u154a"+ + "\u0001\u0000\u0000\u0000\u154a\u154b\u0001\u0000\u0000\u0000\u154b\u154c"+ + "\u0005\u0003\u0000\u0000\u154c\u154d\u0005\u020b\u0000\u0000\u154d\u154e"+ + "\u0003\u0176\u00bb\u0000\u154e\u1550\u0001\u0000\u0000\u0000\u154f\u153f"+ + "\u0001\u0000\u0000\u0000\u154f\u1543\u0001\u0000\u0000\u0000\u1550\u0175"+ + "\u0001\u0000\u0000\u0000\u1551\u1552\u0006\u00bb\uffff\uffff\u0000\u1552"+ + "\u1553\u0005\u0206\u0000\u0000\u1553\u156a\u0003\u0176\u00bb\n\u1554\u1555"+ + "\u0005\u00a4\u0000\u0000\u1555\u1556\u0005\u0002\u0000\u0000\u1556\u1557"+ + "\u0003\u00e4r\u0000\u1557\u1558\u0005\u0003\u0000\u0000\u1558\u156a\u0001"+ + "\u0000\u0000\u0000\u1559\u155a\u0007(\u0000\u0000\u155a\u155b\u0005\u0002"+ + "\u0000\u0000\u155b\u155c\u0003\u017e\u00bf\u0000\u155c\u155d\u0005\u0003"+ + "\u0000\u0000\u155d\u156a\u0001\u0000\u0000\u0000\u155e\u155f\u0005\u00eb"+ + "\u0000\u0000\u155f\u1560\u0005\u0002\u0000\u0000\u1560\u1561\u0003\u017e"+ + "\u00bf\u0000\u1561\u1562\u0005\u0003\u0000\u0000\u1562\u156a\u0001\u0000"+ + "\u0000\u0000\u1563\u1565\u0003\u017e\u00bf\u0000\u1564\u1566\u0003\u017c"+ + "\u00be\u0000\u1565\u1564\u0001\u0000\u0000\u0000\u1565\u1566\u0001\u0000"+ + "\u0000\u0000\u1566\u156a\u0001\u0000\u0000\u0000\u1567\u1568\u0005\u012f"+ + "\u0000\u0000\u1568\u156a\u0003\u0176\u00bb\u0005\u1569\u1551\u0001\u0000"+ + "\u0000\u0000\u1569\u1554\u0001\u0000\u0000\u0000\u1569\u1559\u0001\u0000"+ + "\u0000\u0000\u1569\u155e\u0001\u0000\u0000\u0000\u1569\u1563\u0001\u0000"+ + "\u0000\u0000\u1569\u1567\u0001\u0000\u0000\u0000\u156a\u1579\u0001\u0000"+ + "\u0000\u0000\u156b\u156c\n\u0004\u0000\u0000\u156c\u156d\u0007)\u0000"+ + "\u0000\u156d\u1578\u0003\u0176\u00bb\u0005\u156e\u156f\n\u0003\u0000\u0000"+ + "\u156f\u1570\u0005\u01f5\u0000\u0000\u1570\u1578\u0003\u0176\u00bb\u0004"+ + "\u1571\u1572\n\u0002\u0000\u0000\u1572\u1573\u0005\u0139\u0000\u0000\u1573"+ + "\u1578\u0003\u0176\u00bb\u0003\u1574\u1575\n\u0001\u0000\u0000\u1575\u1576"+ + "\u0005\u0208\u0000\u0000\u1576\u1578\u0003\u0176\u00bb\u0002\u1577\u156b"+ + "\u0001\u0000\u0000\u0000\u1577\u156e\u0001\u0000\u0000\u0000\u1577\u1571"+ + "\u0001\u0000\u0000\u0000\u1577\u1574\u0001\u0000\u0000\u0000\u1578\u157b"+ + "\u0001\u0000\u0000\u0000\u1579\u1577\u0001\u0000\u0000\u0000\u1579\u157a"+ + "\u0001\u0000\u0000\u0000\u157a\u0177\u0001\u0000\u0000\u0000\u157b\u1579"+ + "\u0001\u0000\u0000\u0000\u157c\u1585\u0005\u0002\u0000\u0000\u157d\u1582"+ + "\u0003\u017a\u00bd\u0000\u157e\u157f\u0005\u0004\u0000\u0000\u157f\u1581"+ + "\u0003\u017a\u00bd\u0000\u1580\u157e\u0001\u0000\u0000\u0000\u1581\u1584"+ + "\u0001\u0000\u0000\u0000\u1582\u1580\u0001\u0000\u0000\u0000\u1582\u1583"+ + "\u0001\u0000\u0000\u0000\u1583\u1586\u0001\u0000\u0000\u0000\u1584\u1582"+ + "\u0001\u0000\u0000\u0000\u1585\u157d\u0001\u0000\u0000\u0000\u1585\u1586"+ + "\u0001\u0000\u0000\u0000\u1586\u1587\u0001\u0000\u0000\u0000\u1587\u1588"+ + "\u0005\u0003\u0000\u0000\u1588\u0179\u0001\u0000\u0000\u0000\u1589\u158d"+ + "\u0003\u0198\u00cc\u0000\u158a\u158d\u0005|\u0000\u0000\u158b\u158d\u0003"+ + "\u016e\u00b7\u0000\u158c\u1589\u0001\u0000\u0000\u0000\u158c\u158a\u0001"+ + "\u0000\u0000\u0000\u158c\u158b\u0001\u0000\u0000\u0000\u158d\u017b\u0001"+ + "\u0000\u0000\u0000\u158e\u1590\u0005\u012f\u0000\u0000\u158f\u158e\u0001"+ + "\u0000\u0000\u0000\u158f\u1590\u0001\u0000\u0000\u0000\u1590\u1591\u0001"+ + "\u0000\u0000\u0000\u1591\u1592\u0005(\u0000\u0000\u1592\u1593\u0003\u017e"+ + "\u00bf\u0000\u1593\u1594\u0005\u0018\u0000\u0000\u1594\u1595\u0003\u017e"+ + "\u00bf\u0000\u1595\u15c2\u0001\u0000\u0000\u0000\u1596\u1598\u0005\u012f"+ + "\u0000\u0000\u1597\u1596\u0001\u0000\u0000\u0000\u1597\u1598\u0001\u0000"+ + "\u0000\u0000\u1598\u1599\u0001\u0000\u0000\u0000\u1599\u159a\u0007*\u0000"+ + "\u0000\u159a\u15c2\u0003\u017e\u00bf\u0000\u159b\u159d\u0005\u012f\u0000"+ + "\u0000\u159c\u159b\u0001\u0000\u0000\u0000\u159c\u159d\u0001\u0000\u0000"+ + "\u0000\u159d\u159e\u0001\u0000\u0000\u0000\u159e\u159f\u0007+\u0000\u0000"+ + "\u159f\u15c2\u0003\u017e\u00bf\u0000\u15a0\u15a2\u0005\u012f\u0000\u0000"+ + "\u15a1\u15a0\u0001\u0000\u0000\u0000\u15a1\u15a2\u0001\u0000\u0000\u0000"+ + "\u15a2\u15a3\u0001\u0000\u0000\u0000\u15a3\u15a4\u0005\u00d9\u0000\u0000"+ + "\u15a4\u15a5\u0005\u0002\u0000\u0000\u15a5\u15a6\u0003\u00e4r\u0000\u15a6"+ + "\u15a7\u0005\u0003\u0000\u0000\u15a7\u15c2\u0001\u0000\u0000\u0000\u15a8"+ + "\u15aa\u0005\u012f\u0000\u0000\u15a9\u15a8\u0001\u0000\u0000\u0000\u15a9"+ + "\u15aa\u0001\u0000\u0000\u0000\u15aa\u15ab\u0001\u0000\u0000\u0000\u15ab"+ + "\u15ac\u0005\u00d9\u0000\u0000\u15ac\u15ad\u0005\u0002\u0000\u0000\u15ad"+ + "\u15b2\u0003\u0172\u00b9\u0000\u15ae\u15af\u0005\u0004\u0000\u0000\u15af"+ + "\u15b1\u0003\u0172\u00b9\u0000\u15b0\u15ae\u0001\u0000\u0000\u0000\u15b1"+ + "\u15b4\u0001\u0000\u0000\u0000\u15b2\u15b0\u0001\u0000\u0000\u0000\u15b2"+ + "\u15b3\u0001\u0000\u0000\u0000\u15b3\u15b5\u0001\u0000\u0000\u0000\u15b4"+ + "\u15b2\u0001\u0000\u0000\u0000\u15b5\u15b6\u0005\u0003\u0000\u0000\u15b6"+ + "\u15c2\u0001\u0000\u0000\u0000\u15b7\u15b9\u0005\u00ea\u0000\u0000\u15b8"+ + "\u15ba\u0005\u012f\u0000\u0000\u15b9\u15b8\u0001\u0000\u0000\u0000\u15b9"+ + "\u15ba\u0001\u0000\u0000\u0000\u15ba\u15bb\u0001\u0000\u0000\u0000\u15bb"+ + "\u15c2\u0005\u0130\u0000\u0000\u15bc\u15be\u0005\u00ea\u0000\u0000\u15bd"+ + "\u15bf\u0005\u012f\u0000\u0000\u15be\u15bd\u0001\u0000\u0000\u0000\u15be"+ + "\u15bf\u0001\u0000\u0000\u0000\u15bf\u15c0\u0001\u0000\u0000\u0000\u15c0"+ + "\u15c2\u0007,\u0000\u0000\u15c1\u158f\u0001\u0000\u0000\u0000\u15c1\u1597"+ + "\u0001\u0000\u0000\u0000\u15c1\u159c\u0001\u0000\u0000\u0000\u15c1\u15a1"+ + "\u0001\u0000\u0000\u0000\u15c1\u15a9\u0001\u0000\u0000\u0000\u15c1\u15b7"+ + "\u0001\u0000\u0000\u0000\u15c1\u15bc\u0001\u0000\u0000\u0000\u15c2\u017d"+ + "\u0001\u0000\u0000\u0000\u15c3\u15c4\u0006\u00bf\uffff\uffff\u0000\u15c4"+ + "\u15c8\u0003\u0180\u00c0\u0000\u15c5\u15c6\u0007-\u0000\u0000\u15c6\u15c8"+ + "\u0003\u017e\u00bf\u0007\u15c7\u15c3\u0001\u0000\u0000\u0000\u15c7\u15c5"+ + "\u0001\u0000\u0000\u0000\u15c8\u15de\u0001\u0000\u0000\u0000\u15c9\u15ca"+ + "\n\u0006\u0000\u0000\u15ca\u15cb\u0005\u0209\u0000\u0000\u15cb\u15dd\u0003"+ + "\u017e\u00bf\u0007\u15cc\u15cd\n\u0005\u0000\u0000\u15cd\u15ce\u0007."+ + "\u0000\u0000\u15ce\u15dd\u0003\u017e\u00bf\u0006\u15cf\u15d0\n\u0004\u0000"+ + "\u0000\u15d0\u15d1\u0007/\u0000\u0000\u15d1\u15dd\u0003\u017e\u00bf\u0005"+ + "\u15d2\u15d3\n\u0003\u0000\u0000\u15d3\u15d4\u0005\u0204\u0000\u0000\u15d4"+ + "\u15dd\u0003\u017e\u00bf\u0004\u15d5\u15d6\n\u0002\u0000\u0000\u15d6\u15d7"+ + "\u0005\u0207\u0000\u0000\u15d7\u15dd\u0003\u017e\u00bf\u0003\u15d8\u15d9"+ + "\n\u0001\u0000\u0000\u15d9\u15da\u0003\u019a\u00cd\u0000\u15da\u15db\u0003"+ + "\u017e\u00bf\u0002\u15db\u15dd\u0001\u0000\u0000\u0000\u15dc\u15c9\u0001"+ + "\u0000\u0000\u0000\u15dc\u15cc\u0001\u0000\u0000\u0000\u15dc\u15cf\u0001"+ + "\u0000\u0000\u0000\u15dc\u15d2\u0001\u0000\u0000\u0000\u15dc\u15d5\u0001"+ + "\u0000\u0000\u0000\u15dc\u15d8\u0001\u0000\u0000\u0000\u15dd\u15e0\u0001"+ + "\u0000\u0000\u0000\u15de\u15dc\u0001\u0000\u0000\u0000\u15de\u15df\u0001"+ + "\u0000\u0000\u0000\u15df\u017f\u0001\u0000\u0000\u0000\u15e0\u15de\u0001"+ + "\u0000\u0000\u0000\u15e1\u15e2\u0006\u00c0\uffff\uffff\u0000\u15e2\u1660"+ + "\u0005j\u0000\u0000\u15e3\u1660\u0005k\u0000\u0000\u15e4\u1660\u0005l"+ + "\u0000\u0000\u15e5\u1660\u0005\u0107\u0000\u0000\u15e6\u1660\u0005\u0108"+ + "\u0000\u0000\u15e7\u1660\u0005m\u0000\u0000\u15e8\u1660\u0005\u0198\u0000"+ + "\u0000\u15e9\u15eb\u0005@\u0000\u0000\u15ea\u15ec\u0003\u019e\u00cf\u0000"+ + "\u15eb\u15ea\u0001\u0000\u0000\u0000\u15ec\u15ed\u0001\u0000\u0000\u0000"+ + "\u15ed\u15eb\u0001\u0000\u0000\u0000\u15ed\u15ee\u0001\u0000\u0000\u0000"+ + "\u15ee\u15f1\u0001\u0000\u0000\u0000\u15ef\u15f0\u0005\u0095\u0000\u0000"+ + "\u15f0\u15f2\u0003\u0172\u00b9\u0000\u15f1\u15ef\u0001\u0000\u0000\u0000"+ + "\u15f1\u15f2\u0001\u0000\u0000\u0000\u15f2\u15f3\u0001\u0000\u0000\u0000"+ + "\u15f3\u15f4\u0005\u0099\u0000\u0000\u15f4\u1660\u0001\u0000\u0000\u0000"+ + "\u15f5\u15f6\u0005@\u0000\u0000\u15f6\u15f8\u0003\u0172\u00b9\u0000\u15f7"+ + "\u15f9\u0003\u019e\u00cf\u0000\u15f8\u15f7\u0001\u0000\u0000\u0000\u15f9"+ + "\u15fa\u0001\u0000\u0000\u0000\u15fa\u15f8\u0001\u0000\u0000\u0000\u15fa"+ + "\u15fb\u0001\u0000\u0000\u0000\u15fb\u15fe\u0001\u0000\u0000\u0000\u15fc"+ + "\u15fd\u0005\u0095\u0000\u0000\u15fd\u15ff\u0003\u0172\u00b9\u0000\u15fe"+ + "\u15fc\u0001\u0000\u0000\u0000\u15fe\u15ff\u0001\u0000\u0000\u0000\u15ff"+ + "\u1600\u0001\u0000\u0000\u0000\u1600\u1601\u0005\u0099\u0000\u0000\u1601"+ + "\u1660\u0001\u0000\u0000\u0000\u1602\u1603\u0005A\u0000\u0000\u1603\u1604"+ + "\u0005\u0002\u0000\u0000\u1604\u1605\u0003\u0172\u00b9\u0000\u1605\u1606"+ + "\u0005\u001c\u0000\u0000\u1606\u1607\u0003\u0184\u00c2\u0000\u1607\u1608"+ + "\u0005\u0003\u0000\u0000\u1608\u1660\u0001\u0000\u0000\u0000\u1609\u1660"+ + "\u0003\u0198\u00cc\u0000\u160a\u1660\u0003\u01a0\u00d0\u0000\u160b\u160f"+ + "\u0005\u0200\u0000\u0000\u160c\u160e\u0003\u0182\u00c1\u0000\u160d\u160c"+ + "\u0001\u0000\u0000\u0000\u160e\u1611\u0001\u0000\u0000\u0000\u160f\u160d"+ + "\u0001\u0000\u0000\u0000\u160f\u1610\u0001\u0000\u0000\u0000\u1610\u1660"+ + "\u0001\u0000\u0000\u0000\u1611\u160f\u0001\u0000\u0000\u0000\u1612\u1613"+ + "\u0003\u0194\u00ca\u0000\u1613\u1614\u0005\u0005\u0000\u0000\u1614\u1618"+ + "\u0005\u0200\u0000\u0000\u1615\u1617\u0003\u0182\u00c1\u0000\u1616\u1615"+ + "\u0001\u0000\u0000\u0000\u1617\u161a\u0001\u0000\u0000\u0000\u1618\u1616"+ + "\u0001\u0000\u0000\u0000\u1618\u1619\u0001\u0000\u0000\u0000\u1619\u1660"+ + "\u0001\u0000\u0000\u0000\u161a\u1618\u0001\u0000\u0000\u0000\u161b\u161c"+ + "\u0005E\u0000\u0000\u161c\u161d\u0005\u0002\u0000\u0000\u161d\u1622\u0003"+ + "\u0172\u00b9\u0000\u161e\u161f\u0005\u0004\u0000\u0000\u161f\u1621\u0003"+ + "\u0172\u00b9\u0000\u1620\u161e\u0001\u0000\u0000\u0000\u1621\u1624\u0001"+ + "\u0000\u0000\u0000\u1622\u1620\u0001\u0000\u0000\u0000\u1622\u1623\u0001"+ + "\u0000\u0000\u0000\u1623\u1627\u0001\u0000\u0000\u0000\u1624\u1622\u0001"+ + "\u0000\u0000\u0000\u1625\u1626\u0005\u01de\u0000\u0000\u1626\u1628\u0003"+ + "\u00b6[\u0000\u1627\u1625\u0001\u0000\u0000\u0000\u1627\u1628\u0001\u0000"+ + "\u0000\u0000\u1628\u1629\u0001\u0000\u0000\u0000\u1629\u162a\u0005\u0003"+ + "\u0000\u0000\u162a\u1660\u0001\u0000\u0000\u0000\u162b\u162c\u0005_\u0000"+ + "\u0000\u162c\u162d\u0005\u0002\u0000\u0000\u162d\u162e\u0003\u0172\u00b9"+ + "\u0000\u162e\u162f\u0005\u01de\u0000\u0000\u162f\u1630\u0003\u00b6[\u0000"+ + "\u1630\u1631\u0005\u0003\u0000\u0000\u1631\u1660\u0001\u0000\u0000\u0000"+ + "\u1632\u1633\u0005_\u0000\u0000\u1633\u1634\u0005\u0002\u0000\u0000\u1634"+ + "\u1635\u0003\u0172\u00b9\u0000\u1635\u1636\u0005\u0004\u0000\u0000\u1636"+ + "\u1637\u0003\u0184\u00c2\u0000\u1637\u1638\u0005\u0003\u0000\u0000\u1638"+ + "\u1660\u0001\u0000\u0000\u0000\u1639\u1660\u0003\u0186\u00c3\u0000\u163a"+ + "\u163b\u0005\u0002\u0000\u0000\u163b\u163c\u0003\u00e4r\u0000\u163c\u163d"+ + "\u0005\u0003\u0000\u0000\u163d\u1660\u0001\u0000\u0000\u0000\u163e\u163f"+ + "\u0005\u020f\u0000\u0000\u163f\u1660\u0003\u00b6[\u0000\u1640\u1643\u0005"+ + "\u0210\u0000\u0000\u1641\u1642\u00070\u0000\u0000\u1642\u1644\u0005\u0005"+ + "\u0000\u0000\u1643\u1641\u0001\u0000\u0000\u0000\u1643\u1644\u0001\u0000"+ + "\u0000\u0000\u1644\u1645\u0001\u0000\u0000\u0000\u1645\u1660\u0003\u01c0"+ + "\u00e0\u0000\u1646\u1648\u0005+\u0000\u0000\u1647\u1646\u0001\u0000\u0000"+ + "\u0000\u1647\u1648\u0001\u0000\u0000\u0000\u1648\u1649\u0001\u0000\u0000"+ + "\u0000\u1649\u1660\u0003\u01c0\u00e0\u0000\u164a\u164b\u0005\u0002\u0000"+ + "\u0000\u164b\u164c\u0003\u0172\u00b9\u0000\u164c\u164d\u0005\u0003\u0000"+ + "\u0000\u164d\u1660\u0001\u0000\u0000\u0000\u164e\u1652\u0005\u00f4\u0000"+ + "\u0000\u164f\u1650\u0003\u01c0\u00e0\u0000\u1650\u1651\u0005\u0005\u0000"+ + "\u0000\u1651\u1653\u0001\u0000\u0000\u0000\u1652\u164f\u0001\u0000\u0000"+ + "\u0000\u1652\u1653\u0001\u0000\u0000\u0000\u1653\u1654\u0001\u0000\u0000"+ + "\u0000\u1654\u1660\u0003\u01c0\u00e0\u0000\u1655\u1656\u0005\u00aa\u0000"+ + "\u0000\u1656\u1657\u0005\u0002\u0000\u0000\u1657\u1658\u0003\u01c0\u00e0"+ + "\u0000\u1658\u165a\u0005\u00bb\u0000\u0000\u1659\u165b\u00071\u0000\u0000"+ + "\u165a\u1659\u0001\u0000\u0000\u0000\u165a\u165b\u0001\u0000\u0000\u0000"+ + "\u165b\u165c\u0001\u0000\u0000\u0000\u165c\u165d\u0003\u017e\u00bf\u0000"+ + "\u165d\u165e\u0005\u0003\u0000\u0000\u165e\u1660\u0001\u0000\u0000\u0000"+ + "\u165f\u15e1\u0001\u0000\u0000\u0000\u165f\u15e3\u0001\u0000\u0000\u0000"+ + "\u165f\u15e4\u0001\u0000\u0000\u0000\u165f\u15e5\u0001\u0000\u0000\u0000"+ + "\u165f\u15e6\u0001\u0000\u0000\u0000\u165f\u15e7\u0001\u0000\u0000\u0000"+ + "\u165f\u15e8\u0001\u0000\u0000\u0000\u165f\u15e9\u0001\u0000\u0000\u0000"+ + "\u165f\u15f5\u0001\u0000\u0000\u0000\u165f\u1602\u0001\u0000\u0000\u0000"+ + "\u165f\u1609\u0001\u0000\u0000\u0000\u165f\u160a\u0001\u0000\u0000\u0000"+ + "\u165f\u160b\u0001\u0000\u0000\u0000\u165f\u1612\u0001\u0000\u0000\u0000"+ + "\u165f\u161b\u0001\u0000\u0000\u0000\u165f\u162b\u0001\u0000\u0000\u0000"+ + "\u165f\u1632\u0001\u0000\u0000\u0000\u165f\u1639\u0001\u0000\u0000\u0000"+ + "\u165f\u163a\u0001\u0000\u0000\u0000\u165f\u163e\u0001\u0000\u0000\u0000"+ + "\u165f\u1640\u0001\u0000\u0000\u0000\u165f\u1647\u0001\u0000\u0000\u0000"+ + "\u165f\u164a\u0001\u0000\u0000\u0000\u165f\u164e\u0001\u0000\u0000\u0000"+ + "\u165f\u1655\u0001\u0000\u0000\u0000\u1660\u167b\u0001\u0000\u0000\u0000"+ + "\u1661\u1662\n\u000b\u0000\u0000\u1662\u1663\u0005\u0007\u0000\u0000\u1663"+ + "\u1664\u0003\u017e\u00bf\u0000\u1664\u1665\u0005\b\u0000\u0000\u1665\u167a"+ + "\u0001\u0000\u0000\u0000\u1666\u1667\n\n\u0000\u0000\u1667\u1668\u0005"+ + "\u0007\u0000\u0000\u1668\u1669\u0003\u017e\u00bf\u0000\u1669\u166b\u0005"+ + "\u020a\u0000\u0000\u166a\u166c\u0003\u017e\u00bf\u0000\u166b\u166a\u0001"+ + "\u0000\u0000\u0000\u166b\u166c\u0001\u0000\u0000\u0000\u166c\u166d\u0001"+ + "\u0000\u0000\u0000\u166d\u166e\u0005\b\u0000\u0000\u166e\u167a\u0001\u0000"+ + "\u0000\u0000\u166f\u1670\n\u0005\u0000\u0000\u1670\u1671\u0005\u0005\u0000"+ + "\u0000\u1671\u167a\u0003\u01c0\u00e0\u0000\u1672\u1673\n\u0001\u0000\u0000"+ + "\u1673\u1677\u0005K\u0000\u0000\u1674\u1678\u0003\u01c0\u00e0\u0000\u1675"+ + "\u1678\u0005\u0211\u0000\u0000\u1676\u1678\u0005|\u0000\u0000\u1677\u1674"+ + "\u0001\u0000\u0000\u0000\u1677\u1675\u0001\u0000\u0000\u0000\u1677\u1676"+ + "\u0001\u0000\u0000\u0000\u1678\u167a\u0001\u0000\u0000\u0000\u1679\u1661"+ + "\u0001\u0000\u0000\u0000\u1679\u1666\u0001\u0000\u0000\u0000\u1679\u166f"+ + "\u0001\u0000\u0000\u0000\u1679\u1672\u0001\u0000\u0000\u0000\u167a\u167d"+ + "\u0001\u0000\u0000\u0000\u167b\u1679\u0001\u0000\u0000\u0000\u167b\u167c"+ + "\u0001\u0000\u0000\u0000\u167c\u0181\u0001\u0000\u0000\u0000\u167d\u167b"+ + "\u0001\u0000\u0000\u0000\u167e\u167f\u0005\u00a1\u0000\u0000\u167f\u1680"+ + "\u0005\u0002\u0000\u0000\u1680\u1681\u0003\u0170\u00b8\u0000\u1681\u1682"+ + "\u0005\u0003\u0000\u0000\u1682\u1689\u0001\u0000\u0000\u0000\u1683\u1684"+ + "\u0005\u0176\u0000\u0000\u1684\u1685\u0005\u0002\u0000\u0000\u1685\u1686"+ + "\u0003\u0170\u00b8\u0000\u1686\u1687\u0005\u0003\u0000\u0000\u1687\u1689"+ + "\u0001\u0000\u0000\u0000\u1688\u167e\u0001\u0000\u0000\u0000\u1688\u1683"+ + "\u0001\u0000\u0000\u0000\u1689\u0183\u0001\u0000\u0000\u0000\u168a\u1690"+ + "\u0003\u01a6\u00d3\u0000\u168b\u168d\u00072\u0000\u0000\u168c\u168e\u0007"+ + "3\u0000\u0000\u168d\u168c\u0001\u0000\u0000\u0000\u168d\u168e\u0001\u0000"+ + "\u0000\u0000\u168e\u1690\u0001\u0000\u0000\u0000\u168f\u168a\u0001\u0000"+ + "\u0000\u0000\u168f\u168b\u0001\u0000\u0000\u0000\u1690\u0185\u0001\u0000"+ + "\u0000\u0000\u1691\u1692\u0003\u0188\u00c4\u0000\u1692\u16aa\u0005\u0002"+ + "\u0000\u0000\u1693\u1695\u0007#\u0000\u0000\u1694\u1693\u0001\u0000\u0000"+ + "\u0000\u1694\u1695\u0001\u0000\u0000\u0000\u1695\u1696\u0001\u0000\u0000"+ + "\u0000\u1696\u169b\u0003\u0172\u00b9\u0000\u1697\u1698\u0005\u0004\u0000"+ + "\u0000\u1698\u169a\u0003\u0172\u00b9\u0000\u1699\u1697\u0001\u0000\u0000"+ + "\u0000\u169a\u169d\u0001\u0000\u0000\u0000\u169b\u1699\u0001\u0000\u0000"+ + "\u0000\u169b\u169c\u0001\u0000\u0000\u0000\u169c\u16a8\u0001\u0000\u0000"+ + "\u0000\u169d\u169b\u0001\u0000\u0000\u0000\u169e\u169f\u0005\u013a\u0000"+ + "\u0000\u169f\u16a0\u0005;\u0000\u0000\u16a0\u16a5\u0003\u0126\u0093\u0000"+ + "\u16a1\u16a2\u0005\u0004\u0000\u0000\u16a2\u16a4\u0003\u0126\u0093\u0000"+ + "\u16a3\u16a1\u0001\u0000\u0000\u0000\u16a4\u16a7\u0001\u0000\u0000\u0000"+ + "\u16a5\u16a3\u0001\u0000\u0000\u0000\u16a5\u16a6\u0001\u0000\u0000\u0000"+ + "\u16a6\u16a9\u0001\u0000\u0000\u0000\u16a7\u16a5\u0001\u0000\u0000\u0000"+ + "\u16a8\u169e\u0001\u0000\u0000\u0000\u16a8\u16a9\u0001\u0000\u0000\u0000"+ + "\u16a9\u16ab\u0001\u0000\u0000\u0000\u16aa\u1694\u0001\u0000\u0000\u0000"+ + "\u16aa\u16ab\u0001\u0000\u0000\u0000\u16ab\u16ac\u0001\u0000\u0000\u0000"+ + "\u16ac\u16af\u0005\u0003\u0000\u0000\u16ad\u16ae\u0005\u013d\u0000\u0000"+ + "\u16ae\u16b0\u0003\u018c\u00c6\u0000\u16af\u16ad\u0001\u0000\u0000\u0000"+ + "\u16af\u16b0\u0001\u0000\u0000\u0000\u16b0\u0187\u0001\u0000\u0000\u0000"+ + "\u16b1\u16b2\u0003\u01c0\u00e0\u0000\u16b2\u16b3\u0005\u0005\u0000\u0000"+ + "\u16b3\u16b5\u0001\u0000\u0000\u0000\u16b4\u16b1\u0001\u0000\u0000\u0000"+ + "\u16b4\u16b5\u0001\u0000\u0000\u0000\u16b5\u16b6\u0001\u0000\u0000\u0000"+ + "\u16b6\u16b7\u0003\u018a\u00c5\u0000\u16b7\u0189\u0001\u0000\u0000\u0000"+ + "\u16b8\u16c9\u0003\u01c0\u00e0\u0000\u16b9\u16c9\u0005\u000e\u0000\u0000"+ + "\u16ba\u16c9\u0005[\u0000\u0000\u16bb\u16c9\u0005i\u0000\u0000\u16bc\u16c9"+ + "\u0005m\u0000\u0000\u16bd\u16c9\u0005o\u0000\u0000\u16be\u16c9\u0005\u00d6"+ + "\u0000\u0000\u16bf\u16c9\u0005\u00fd\u0000\u0000\u16c0\u16c9\u0005\u0100"+ + "\u0000\u0000\u16c1\u16c9\u0005\u0143\u0000\u0000\u16c2\u16c9\u0005\u0171"+ + "\u0000\u0000\u16c3\u16c9\u0005\u0184\u0000\u0000\u16c4\u16c9\u0005\u0191"+ + "\u0000\u0000\u16c5\u16c9\u0005\u0198\u0000\u0000\u16c6\u16c9\u0005\u01cb"+ + "\u0000\u0000\u16c7\u16c9\u0005\u01dc\u0000\u0000\u16c8\u16b8\u0001\u0000"+ + "\u0000\u0000\u16c8\u16b9\u0001\u0000\u0000\u0000\u16c8\u16ba\u0001\u0000"+ + "\u0000\u0000\u16c8\u16bb\u0001\u0000\u0000\u0000\u16c8\u16bc\u0001\u0000"+ + "\u0000\u0000\u16c8\u16bd\u0001\u0000\u0000\u0000\u16c8\u16be\u0001\u0000"+ + "\u0000\u0000\u16c8\u16bf\u0001\u0000\u0000\u0000\u16c8\u16c0\u0001\u0000"+ + "\u0000\u0000\u16c8\u16c1\u0001\u0000\u0000\u0000\u16c8\u16c2\u0001\u0000"+ + "\u0000\u0000\u16c8\u16c3\u0001\u0000\u0000\u0000\u16c8\u16c4\u0001\u0000"+ + "\u0000\u0000\u16c8\u16c5\u0001\u0000\u0000\u0000\u16c8\u16c6\u0001\u0000"+ + "\u0000\u0000\u16c8\u16c7\u0001\u0000\u0000\u0000\u16c9\u018b\u0001\u0000"+ + "\u0000\u0000\u16ca\u16cc\u0005\u0002\u0000\u0000\u16cb\u16cd\u0003\u012a"+ + "\u0095\u0000\u16cc\u16cb\u0001\u0000\u0000\u0000\u16cc\u16cd\u0001\u0000"+ + "\u0000\u0000\u16cd\u16cf\u0001\u0000\u0000\u0000\u16ce\u16d0\u0003\u0124"+ + "\u0092\u0000\u16cf\u16ce\u0001\u0000\u0000\u0000\u16cf\u16d0\u0001\u0000"+ + "\u0000\u0000\u16d0\u16d2\u0001\u0000\u0000\u0000\u16d1\u16d3\u0003\u018e"+ + "\u00c7\u0000\u16d2\u16d1\u0001\u0000\u0000\u0000\u16d2\u16d3\u0001\u0000"+ + "\u0000\u0000\u16d3\u16d4\u0001\u0000\u0000\u0000\u16d4\u16d5\u0005\u0003"+ + "\u0000\u0000\u16d5\u018d\u0001\u0000\u0000\u0000\u16d6\u16d7\u0003\u0190"+ + "\u00c8\u0000\u16d7\u16d8\u0003\u0192\u00c9\u0000\u16d8\u16e0\u0001\u0000"+ + "\u0000\u0000\u16d9\u16da\u0003\u0190\u00c8\u0000\u16da\u16db\u0005(\u0000"+ + "\u0000\u16db\u16dc\u0003\u0192\u00c9\u0000\u16dc\u16dd\u0005\u0018\u0000"+ + "\u0000\u16dd\u16de\u0003\u0192\u00c9\u0000\u16de\u16e0\u0001\u0000\u0000"+ + "\u0000\u16df\u16d6\u0001\u0000\u0000\u0000\u16df\u16d9\u0001\u0000\u0000"+ + "\u0000\u16e0\u018f\u0001\u0000\u0000\u0000\u16e1\u16e2\u00074\u0000\u0000"+ + "\u16e2\u0191\u0001\u0000\u0000\u0000\u16e3\u16e4\u0005\u01d1\u0000\u0000"+ + "\u16e4\u16eb\u00075\u0000\u0000\u16e5\u16e6\u0005h\u0000\u0000\u16e6\u16eb"+ + "\u0005\u018b\u0000\u0000\u16e7\u16e8\u0003\u0172\u00b9\u0000\u16e8\u16e9"+ + "\u00075\u0000\u0000\u16e9\u16eb\u0001\u0000\u0000\u0000\u16ea\u16e3\u0001"+ + "\u0000\u0000\u0000\u16ea\u16e5\u0001\u0000\u0000\u0000\u16ea\u16e7\u0001"+ + "\u0000\u0000\u0000\u16eb\u0193\u0001\u0000\u0000\u0000\u16ec\u16f1\u0003"+ + "\u01c0\u00e0\u0000\u16ed\u16ee\u0005\u0005\u0000\u0000\u16ee\u16f0\u0003"+ + "\u01c0\u00e0\u0000\u16ef\u16ed\u0001\u0000\u0000\u0000\u16f0\u16f3\u0001"+ + "\u0000\u0000\u0000\u16f1\u16ef\u0001\u0000\u0000\u0000\u16f1\u16f2\u0001"+ + "\u0000\u0000\u0000\u16f2\u0195\u0001\u0000\u0000\u0000\u16f3\u16f1\u0001"+ + "\u0000\u0000\u0000\u16f4\u16f6\u0005\u01be\u0000\u0000\u16f5\u16f4\u0001"+ + "\u0000\u0000\u0000\u16f5\u16f6\u0001\u0000\u0000\u0000\u16f6\u16f7\u0001"+ + "\u0000\u0000\u0000\u16f7\u16fa\u0005\u0141\u0000\u0000\u16f8\u16fb\u0003"+ + "\u01c0\u00e0\u0000\u16f9\u16fb\u0003\u0130\u0098\u0000\u16fa\u16f8\u0001"+ + "\u0000\u0000\u0000\u16fa\u16f9\u0001\u0000\u0000\u0000\u16fb\u1702\u0001"+ + "\u0000\u0000\u0000\u16fc\u16fe\u0005\u01be\u0000\u0000\u16fd\u16fc\u0001"+ + "\u0000\u0000\u0000\u16fd\u16fe\u0001\u0000\u0000\u0000\u16fe\u16ff\u0001"+ + "\u0000\u0000\u0000\u16ff\u1700\u0005\u0142\u0000\u0000\u1700\u1702\u0003"+ + "\u0130\u0098\u0000\u1701\u16f5\u0001\u0000\u0000\u0000\u1701\u16fd\u0001"+ + "\u0000\u0000\u0000\u1702\u0197\u0001\u0000\u0000\u0000\u1703\u1737\u0005"+ + "\u0130\u0000\u0000\u1704\u1705\u00076\u0000\u0000\u1705\u1737\u0005\u0211"+ + "\u0000\u0000\u1706\u1737\u0003\u01c6\u00e3\u0000\u1707\u1737\u0003\u019c"+ + "\u00ce\u0000\u1708\u170a\u0005+\u0000\u0000\u1709\u1708\u0001\u0000\u0000"+ + "\u0000\u1709\u170a\u0001\u0000\u0000\u0000\u170a\u170b\u0001\u0000\u0000"+ + "\u0000\u170b\u1737\u0005\u0211\u0000\u0000\u170c\u170e\u0005\u0007\u0000"+ + "\u0000\u170d\u170f\u0003\u0198\u00cc\u0000\u170e\u170d\u0001\u0000\u0000"+ + "\u0000\u170e\u170f\u0001\u0000\u0000\u0000\u170f\u1714\u0001\u0000\u0000"+ + "\u0000\u1710\u1711\u0005\u0004\u0000\u0000\u1711\u1713\u0003\u0198\u00cc"+ + "\u0000\u1712\u1710\u0001\u0000\u0000\u0000\u1713\u1716\u0001\u0000\u0000"+ + "\u0000\u1714\u1712\u0001\u0000\u0000\u0000\u1714\u1715\u0001\u0000\u0000"+ + "\u0000\u1715\u1717\u0001\u0000\u0000\u0000\u1716\u1714\u0001\u0000\u0000"+ + "\u0000\u1717\u1737\u0005\b\u0000\u0000\u1718\u171d\u0005\t\u0000\u0000"+ + "\u1719\u171a\u0003\u0198\u00cc\u0000\u171a\u171b\u0005\u020a\u0000\u0000"+ + "\u171b\u171c\u0003\u0198\u00cc\u0000\u171c\u171e\u0001\u0000\u0000\u0000"+ + "\u171d\u1719\u0001\u0000\u0000\u0000\u171d\u171e\u0001\u0000\u0000\u0000"+ + "\u171e\u1726\u0001\u0000\u0000\u0000\u171f\u1720\u0005\u0004\u0000\u0000"+ + "\u1720\u1721\u0003\u0198\u00cc\u0000\u1721\u1722\u0005\u020a\u0000\u0000"+ + "\u1722\u1723\u0003\u0198\u00cc\u0000\u1723\u1725\u0001\u0000\u0000\u0000"+ + "\u1724\u171f\u0001\u0000\u0000\u0000\u1725\u1728\u0001\u0000\u0000\u0000"+ + "\u1726\u1724\u0001\u0000\u0000\u0000\u1726\u1727\u0001\u0000\u0000\u0000"+ + "\u1727\u1729\u0001\u0000\u0000\u0000\u1728\u1726\u0001\u0000\u0000\u0000"+ + "\u1729\u1737\u0005\n\u0000\u0000\u172a\u172b\u0005\t\u0000\u0000\u172b"+ + "\u1730\u0003\u0198\u00cc\u0000\u172c\u172d\u0005\u0004\u0000\u0000\u172d"+ + "\u172f\u0003\u0198\u00cc\u0000\u172e\u172c\u0001\u0000\u0000\u0000\u172f"+ + "\u1732\u0001\u0000\u0000\u0000\u1730\u172e\u0001\u0000\u0000\u0000\u1730"+ + "\u1731\u0001\u0000\u0000\u0000\u1731\u1733\u0001\u0000\u0000\u0000\u1732"+ + "\u1730\u0001\u0000\u0000\u0000\u1733\u1734\u0005\n\u0000\u0000\u1734\u1737"+ + "\u0001\u0000\u0000\u0000\u1735\u1737\u0005\u014f\u0000\u0000\u1736\u1703"+ + "\u0001\u0000\u0000\u0000\u1736\u1704\u0001\u0000\u0000\u0000\u1736\u1706"+ + "\u0001\u0000\u0000\u0000\u1736\u1707\u0001\u0000\u0000\u0000\u1736\u1709"+ + "\u0001\u0000\u0000\u0000\u1736\u170c\u0001\u0000\u0000\u0000\u1736\u1718"+ + "\u0001\u0000\u0000\u0000\u1736\u172a\u0001\u0000\u0000\u0000\u1736\u1735"+ + "\u0001\u0000\u0000\u0000\u1737\u0199\u0001\u0000\u0000\u0000\u1738\u1739"+ + "\u00077\u0000\u0000\u1739\u019b\u0001\u0000\u0000\u0000\u173a\u173b\u0007"+ + ",\u0000\u0000\u173b\u019d\u0001\u0000\u0000\u0000\u173c\u173d\u0005\u01ee"+ + "\u0000\u0000\u173d\u173e\u0003\u0172\u00b9\u0000\u173e\u173f\u0005\u01c2"+ + "\u0000\u0000\u173f\u1740\u0003\u0172\u00b9\u0000\u1740\u019f\u0001\u0000"+ + "\u0000\u0000\u1741\u1742\u0005\u00e5\u0000\u0000\u1742\u1743\u0003\u0172"+ + "\u00b9\u0000\u1743\u1744\u0003\u01a2\u00d1\u0000\u1744\u01a1\u0001\u0000"+ + "\u0000\u0000\u1745\u1746\u00078\u0000\u0000\u1746\u01a3\u0001\u0000\u0000"+ + "\u0000\u1747\u174c\u0003\u01a6\u00d3\u0000\u1748\u174a\u0005\u012f\u0000"+ + "\u0000\u1749\u1748\u0001\u0000\u0000\u0000\u1749\u174a\u0001\u0000\u0000"+ + "\u0000\u174a\u174b\u0001\u0000\u0000\u0000\u174b\u174d\u0005\u0130\u0000"+ + "\u0000\u174c\u1749\u0001\u0000\u0000\u0000\u174c\u174d\u0001\u0000\u0000"+ + "\u0000\u174d\u01a5\u0001\u0000\u0000\u0000\u174e\u174f\u0005\u001b\u0000"+ + "\u0000\u174f\u1750\u0005\u01fa\u0000\u0000\u1750\u1751\u0003\u01a6\u00d3"+ + "\u0000\u1751\u1752\u0005\u01fc\u0000\u0000\u1752\u1781\u0001\u0000\u0000"+ + "\u0000\u1753\u1754\u0005\u010e\u0000\u0000\u1754\u1755\u0005\u01fa\u0000"+ + "\u0000\u1755\u1756\u0003\u01a6\u00d3\u0000\u1756\u1757\u0005\u0004\u0000"+ + "\u0000\u1757\u1758\u0003\u01a6\u00d3\u0000\u1758\u1759\u0005\u01fc\u0000"+ + "\u0000\u1759\u1781\u0001\u0000\u0000\u0000\u175a\u175b\u0005\u01b1\u0000"+ + "\u0000\u175b\u175c\u0005\u01fa\u0000\u0000\u175c\u175d\u0003\u01aa\u00d5"+ + "\u0000\u175d\u175e\u0005\u01fc\u0000\u0000\u175e\u1781\u0001\u0000\u0000"+ + "\u0000\u175f\u1760\u0005\u01e4\u0000\u0000\u1760\u1761\u0005\u01fa\u0000"+ + "\u0000\u1761\u1762\u0003\u01ae\u00d7\u0000\u1762\u1763\u0005\u01fc\u0000"+ + "\u0000\u1763\u1781\u0001\u0000\u0000\u0000\u1764\u1765\u0005\u0011\u0000"+ + "\u0000\u1765\u1766\u0005\u01fa\u0000\u0000\u1766\u1767\u0003\u018a\u00c5"+ + "\u0000\u1767\u1768\u0005\u0002\u0000\u0000\u1768\u176d\u0003\u01a4\u00d2"+ + "\u0000\u1769\u176a\u0005\u0004\u0000\u0000\u176a\u176c\u0003\u01a4\u00d2"+ + "\u0000\u176b\u1769\u0001\u0000\u0000\u0000\u176c\u176f\u0001\u0000\u0000"+ + "\u0000\u176d\u176b\u0001\u0000\u0000\u0000\u176d\u176e\u0001\u0000\u0000"+ + "\u0000\u176e\u1770\u0001\u0000\u0000\u0000\u176f\u176d\u0001\u0000\u0000"+ + "\u0000\u1770\u1771\u0005\u0003\u0000\u0000\u1771\u1772\u0005\u01fc\u0000"+ + "\u0000\u1772\u1781\u0001\u0000\u0000\u0000\u1773\u177e\u0003\u01a8\u00d4"+ + "\u0000\u1774\u1775\u0005\u0002\u0000\u0000\u1775\u177a\u00079\u0000\u0000"+ + "\u1776\u1777\u0005\u0004\u0000\u0000\u1777\u1779\u0005\u0216\u0000\u0000"+ + "\u1778\u1776\u0001\u0000\u0000\u0000\u1779\u177c\u0001\u0000\u0000\u0000"+ + "\u177a\u1778\u0001\u0000\u0000\u0000\u177a\u177b\u0001\u0000\u0000\u0000"+ + "\u177b\u177d\u0001\u0000\u0000\u0000\u177c\u177a\u0001\u0000\u0000\u0000"+ + "\u177d\u177f\u0005\u0003\u0000\u0000\u177e\u1774\u0001\u0000\u0000\u0000"+ + "\u177e\u177f\u0001\u0000\u0000\u0000\u177f\u1781\u0001\u0000\u0000\u0000"+ + "\u1780\u174e\u0001\u0000\u0000\u0000\u1780\u1753\u0001\u0000\u0000\u0000"+ + "\u1780\u175a\u0001\u0000\u0000\u0000\u1780\u175f\u0001\u0000\u0000\u0000"+ + "\u1780\u1764\u0001\u0000\u0000\u0000\u1780\u1773\u0001\u0000\u0000\u0000"+ + "\u1781\u01a7\u0001\u0000\u0000\u0000\u1782\u17a3\u0005\u01c5\u0000\u0000"+ + "\u1783\u17a3\u0005\u01a0\u0000\u0000\u1784\u17a3\u00073\u0000\u0000\u1785"+ + "\u17a3\u0005)\u0000\u0000\u1786\u17a3\u0005\u00f8\u0000\u0000\u1787\u17a3"+ + "\u00054\u0000\u0000\u1788\u17a3\u0005\u00b3\u0000\u0000\u1789\u17a3\u0005"+ + "\u008d\u0000\u0000\u178a\u17a3\u0005q\u0000\u0000\u178b\u17a3\u0005r\u0000"+ + "\u0000\u178c\u17a3\u0005\u01c3\u0000\u0000\u178d\u17a3\u0005t\u0000\u0000"+ + "\u178e\u17a3\u0005s\u0000\u0000\u178f\u17a3\u0005v\u0000\u0000\u1790\u17a3"+ + "\u0005u\u0000\u0000\u1791\u17a3\u0005.\u0000\u0000\u1792\u17a3\u0005\u0160"+ + "\u0000\u0000\u1793\u17a3\u0005\u00cf\u0000\u0000\u1794\u17a3\u0005\u0011"+ + "\u0000\u0000\u1795\u17a3\u0005\u01b0\u0000\u0000\u1796\u17a3\u0005\u00f2"+ + "\u0000\u0000\u1797\u17a3\u0005\u00f3\u0000\u0000\u1798\u17a3\u0005\u01c0"+ + "\u0000\u0000\u1799\u17a3\u0005\u01e1\u0000\u0000\u179a\u17a3\u0005E\u0000"+ + "\u0000\u179b\u17a3\u0005x\u0000\u0000\u179c\u17a3\u0005y\u0000\u0000\u179d"+ + "\u17a3\u0005z\u0000\u0000\u179e\u17a3\u0005\u00e8\u0000\u0000\u179f\u17a3"+ + "\u0005\u00e9\u0000\u0000\u17a0\u17a3\u0005\u01e4\u0000\u0000\u17a1\u17a3"+ + "\u0005\u0014\u0000\u0000\u17a2\u1782\u0001\u0000\u0000\u0000\u17a2\u1783"+ + "\u0001\u0000\u0000\u0000\u17a2\u1784\u0001\u0000\u0000\u0000\u17a2\u1785"+ + "\u0001\u0000\u0000\u0000\u17a2\u1786\u0001\u0000\u0000\u0000\u17a2\u1787"+ + "\u0001\u0000\u0000\u0000\u17a2\u1788\u0001\u0000\u0000\u0000\u17a2\u1789"+ + "\u0001\u0000\u0000\u0000\u17a2\u178a\u0001\u0000\u0000\u0000\u17a2\u178b"+ + "\u0001\u0000\u0000\u0000\u17a2\u178c\u0001\u0000\u0000\u0000\u17a2\u178d"+ + "\u0001\u0000\u0000\u0000\u17a2\u178e\u0001\u0000\u0000\u0000\u17a2\u178f"+ + "\u0001\u0000\u0000\u0000\u17a2\u1790\u0001\u0000\u0000\u0000\u17a2\u1791"+ + "\u0001\u0000\u0000\u0000\u17a2\u1792\u0001\u0000\u0000\u0000\u17a2\u1793"+ + "\u0001\u0000\u0000\u0000\u17a2\u1794\u0001\u0000\u0000\u0000\u17a2\u1795"+ + "\u0001\u0000\u0000\u0000\u17a2\u1796\u0001\u0000\u0000\u0000\u17a2\u1797"+ + "\u0001\u0000\u0000\u0000\u17a2\u1798\u0001\u0000\u0000\u0000\u17a2\u1799"+ + "\u0001\u0000\u0000\u0000\u17a2\u179a\u0001\u0000\u0000\u0000\u17a2\u179b"+ + "\u0001\u0000\u0000\u0000\u17a2\u179c\u0001\u0000\u0000\u0000\u17a2\u179d"+ + "\u0001\u0000\u0000\u0000\u17a2\u179e\u0001\u0000\u0000\u0000\u17a2\u179f"+ + "\u0001\u0000\u0000\u0000\u17a2\u17a0\u0001\u0000\u0000\u0000\u17a2\u17a1"+ + "\u0001\u0000\u0000\u0000\u17a3\u01a9\u0001\u0000\u0000\u0000\u17a4\u17a9"+ + "\u0003\u01ac\u00d6\u0000\u17a5\u17a6\u0005\u0004\u0000\u0000\u17a6\u17a8"+ + "\u0003\u01ac\u00d6\u0000\u17a7\u17a5\u0001\u0000\u0000\u0000\u17a8\u17ab"+ + "\u0001\u0000\u0000\u0000\u17a9\u17a7\u0001\u0000\u0000\u0000\u17a9\u17aa"+ + "\u0001\u0000\u0000\u0000\u17aa\u01ab\u0001\u0000\u0000\u0000\u17ab\u17a9"+ + "\u0001\u0000\u0000\u0000\u17ac\u17ad\u0003\u01c0\u00e0\u0000\u17ad\u17ae"+ + "\u0005\u020a\u0000\u0000\u17ae\u17b0\u0003\u01a6\u00d3\u0000\u17af\u17b1"+ + "\u0003\u01b4\u00da\u0000\u17b0\u17af\u0001\u0000\u0000\u0000\u17b0\u17b1"+ + "\u0001\u0000\u0000\u0000\u17b1\u01ad\u0001\u0000\u0000\u0000\u17b2\u17b7"+ + "\u0003\u01b0\u00d8\u0000\u17b3\u17b4\u0005\u0004\u0000\u0000\u17b4\u17b6"+ + "\u0003\u01b0\u00d8\u0000\u17b5\u17b3\u0001\u0000\u0000\u0000\u17b6\u17b9"+ + "\u0001\u0000\u0000\u0000\u17b7\u17b5\u0001\u0000\u0000\u0000\u17b7\u17b8"+ + "\u0001\u0000\u0000\u0000\u17b8\u01af\u0001\u0000\u0000\u0000\u17b9\u17b7"+ + "\u0001\u0000\u0000\u0000\u17ba\u17bc\u0003\u01b2\u00d9\u0000\u17bb\u17ba"+ + "\u0001\u0000\u0000\u0000\u17bb\u17bc\u0001\u0000\u0000\u0000\u17bc\u17bd"+ + "\u0001\u0000\u0000\u0000\u17bd\u17be\u0005\u0211\u0000\u0000\u17be\u17bf"+ + "\u0005\u020a\u0000\u0000\u17bf\u17c1\u0003\u01a6\u00d3\u0000\u17c0\u17c2"+ + "\u0003\u01b4\u00da\u0000\u17c1\u17c0\u0001\u0000\u0000\u0000\u17c1\u17c2"+ + "\u0001\u0000\u0000\u0000\u17c2\u01b1\u0001\u0000\u0000\u0000\u17c3\u17c4"+ + "\u0007:\u0000\u0000\u17c4\u01b3\u0001\u0000\u0000\u0000\u17c5\u17c6\u0005"+ + "Q\u0000\u0000\u17c6\u17c7\u0005\u0211\u0000\u0000\u17c7\u01b5\u0001\u0000"+ + "\u0000\u0000\u17c8\u17c9\u0005\u01b9\u0000\u0000\u17c9\u17cb\u0005\u0002"+ + "\u0000\u0000\u17ca\u17cc\u0003\u01b8\u00dc\u0000\u17cb\u17ca\u0001\u0000"+ + "\u0000\u0000\u17cb\u17cc\u0001\u0000\u0000\u0000\u17cc\u17cd\u0001\u0000"+ + "\u0000\u0000\u17cd\u17d0\u0005\u0003\u0000\u0000\u17ce\u17cf\u0005\u0175"+ + "\u0000\u0000\u17cf\u17d1\u0005\u0216\u0000\u0000\u17d0\u17ce\u0001\u0000"+ + "\u0000\u0000\u17d0\u17d1\u0001\u0000\u0000\u0000\u17d1\u01b7\u0001\u0000"+ + "\u0000\u0000\u17d2\u17d3\u0005\u0216\u0000\u0000\u17d3\u17d7\u0005\u014a"+ + "\u0000\u0000\u17d4\u17d5\u0005\u0216\u0000\u0000\u17d5\u17d7\u0005\u018c"+ + "\u0000\u0000\u17d6\u17d2\u0001\u0000\u0000\u0000\u17d6\u17d4\u0001\u0000"+ + "\u0000\u0000\u17d7\u01b9\u0001\u0000\u0000\u0000\u17d8\u17d9\u0005\u00b6"+ + "\u0000\u0000\u17d9\u17da\u0005\u01e8\u0000\u0000\u17da\u17db\u0005\u001c"+ + "\u0000\u0000\u17db\u17dc\u0005\u0133\u0000\u0000\u17dc\u17e3\u0005\u0216"+ + "\u0000\u0000\u17dd\u17de\u0005\u00b6\u0000\u0000\u17de\u17df\u0005\u01c3"+ + "\u0000\u0000\u17df\u17e0\u0005\u001c\u0000\u0000\u17e0\u17e1\u0005\u0133"+ + "\u0000\u0000\u17e1\u17e3\u0005\u0211\u0000\u0000\u17e2\u17d8\u0001\u0000"+ + "\u0000\u0000\u17e2\u17dd\u0001\u0000\u0000\u0000\u17e3\u01bb\u0001\u0000"+ + "\u0000\u0000\u17e4\u17e5\u0003\u01c0\u00e0\u0000\u17e5\u17e6\u0003\u01be"+ + "\u00df\u0000\u17e6\u01bd\u0001\u0000\u0000\u0000\u17e7\u17e8\u0005\u01ff"+ + "\u0000\u0000\u17e8\u17ea\u0003\u01c0\u00e0\u0000\u17e9\u17e7\u0001\u0000"+ + "\u0000\u0000\u17ea\u17eb\u0001\u0000\u0000\u0000\u17eb\u17e9\u0001\u0000"+ + "\u0000\u0000\u17eb\u17ec\u0001\u0000\u0000\u0000\u17ec\u17ef\u0001\u0000"+ + "\u0000\u0000\u17ed\u17ef\u0001\u0000\u0000\u0000\u17ee\u17e9\u0001\u0000"+ + "\u0000\u0000\u17ee\u17ed\u0001\u0000\u0000\u0000\u17ef\u01bf\u0001\u0000"+ + "\u0000\u0000\u17f0\u17f1\u0003\u01c2\u00e1\u0000\u17f1\u01c1\u0001\u0000"+ + "\u0000\u0000\u17f2\u17f6\u0005\u021a\u0000\u0000\u17f3\u17f6\u0003\u01c4"+ + "\u00e2\u0000\u17f4\u17f6\u0003\u01c8\u00e4\u0000\u17f5\u17f2\u0001\u0000"+ + "\u0000\u0000\u17f5\u17f3\u0001\u0000\u0000\u0000\u17f5\u17f4\u0001\u0000"+ + "\u0000\u0000\u17f6\u01c3\u0001\u0000\u0000\u0000\u17f7\u17f8\u0005\u021b"+ + "\u0000\u0000\u17f8\u01c5\u0001\u0000\u0000\u0000\u17f9\u17fb\u0005\u01ff"+ + "\u0000\u0000\u17fa\u17f9\u0001\u0000\u0000\u0000\u17fa\u17fb\u0001\u0000"+ + "\u0000\u0000\u17fb\u17fc\u0001\u0000\u0000\u0000\u17fc\u1802\u0005\u0216"+ + "\u0000\u0000\u17fd\u17ff\u0005\u01ff\u0000\u0000\u17fe\u17fd\u0001\u0000"+ + "\u0000\u0000\u17fe\u17ff\u0001\u0000\u0000\u0000\u17ff\u1800\u0001\u0000"+ + "\u0000\u0000\u1800\u1802\u0007;\u0000\u0000\u1801\u17fa\u0001\u0000\u0000"+ + "\u0000\u1801\u17fe\u0001\u0000\u0000\u0000\u1802\u01c7\u0001\u0000\u0000"+ + "\u0000\u1803\u1804\u0007<\u0000\u0000\u1804\u01c9\u0001\u0000\u0000\u0000"+ + "\u0371\u01cd\u01d1\u01d6\u01db\u01e1\u01e9\u01ed\u01f2\u0200\u0203\u020b"+ + "\u020e\u0216\u021d\u0224\u022d\u0234\u023b\u023f\u0241\u0244\u0248\u025f"+ + "\u0271\u0279\u0280\u0283\u0287\u028a\u028c\u028f\u0293\u0297\u029f\u02a6"+ + "\u02aa\u02ac\u02af\u02bb\u02c9\u02d1\u02d8\u02df\u02e4\u02fe\u030b\u030d"+ + "\u0311\u0316\u0318\u031b\u0323\u0329\u032c\u0331\u0336\u0338\u034d\u0350"+ + "\u0353\u0359\u0360\u0363\u0368\u036b\u0371\u0375\u0378\u0380\u0383\u0386"+ + "\u0389\u038f\u0394\u0397\u03a2\u03a7\u03aa\u03ad\u03b4\u03b7\u03bc\u03bf"+ + "\u03c2\u03c6\u03cc\u03d0\u03d6\u03d9\u03dd\u03e2\u03ea\u03ec\u03f0\u03f3"+ + "\u03fa\u03ff\u0401\u0403\u040a\u040d\u0411\u0415\u041a\u0420\u0427\u042b"+ + "\u0435\u043a\u0440\u0448\u044a\u0451\u0456\u045e\u0462\u0469\u046f\u0473"+ + "\u0476\u047e\u0489\u0496\u049a\u04a2\u04a9\u04b1\u04b4\u04b8\u04bf\u04c3"+ + "\u04ca\u04d2\u04d5\u04db\u04e0\u04e7\u04ea\u04ee\u04f5\u04fa\u0501\u0507"+ + "\u0515\u0519\u0536\u0546\u054c\u0568\u0575\u0582\u0595\u05a3\u05a5\u05b3"+ + "\u05ba\u05c1\u05c8\u05d0\u05d8\u05df\u05e7\u05ef\u05f9\u05fd\u0603\u0607"+ + "\u060b\u0610\u0615\u061d\u0623\u0627\u062b\u063b\u0641\u0644\u064d\u0653"+ + "\u0657\u0663\u0669\u066c\u0679\u0683\u0687\u068b\u0692\u06a3\u06a7\u06b4"+ + "\u06ba\u06be\u06c5\u06ca\u06d2\u06d4\u06da\u06e6\u06ea\u06ed\u06f0\u06fd"+ + "\u0710\u0715\u0718\u0721\u072d\u0731\u073e\u074b\u074f\u0756\u075c\u075f"+ + "\u0765\u0769\u076e\u0771\u0778\u077b\u077d\u0781\u078b\u0797\u079a\u07a3"+ + "\u07aa\u07b2\u07b5\u07b8\u07c6\u07cb\u07ce\u07dc\u07e1\u07e4\u07eb\u07ed"+ + "\u07f3\u07f8\u07fc\u07ff\u0802\u080b\u080d\u0817\u081a\u081e\u0823\u0826"+ + "\u0830\u0836\u083b\u0841\u0844\u0848\u084f\u0852\u0859\u085c\u085f\u0863"+ + "\u0867\u086c\u086f\u0872\u0875\u087b\u087e\u0881\u0884\u088d\u0891\u0894"+ + "\u0897\u089a\u089e\u08a4\u08a7\u08aa\u08b4\u08b7\u08ba\u08bd\u08c3\u08c6"+ + "\u08ca\u08cf\u08d2\u08d7\u08da\u08dd\u08e3\u08ea\u08ee\u08f1\u08f6\u08f9"+ + "\u08fe\u0902\u0908\u0910\u0916\u0919\u0924\u092f\u0931\u0933\u093a\u093d"+ + "\u0940\u0943\u0949\u0951\u0957\u095a\u095d\u0960\u0967\u0969\u0971\u0975"+ + "\u097c\u097f\u0982\u098a\u0993\u0996\u09a4\u09cb\u09d2\u09d4\u09dc\u09df"+ + "\u09e3\u09ef\u09fb\u0a13\u0a1b\u0a21\u0a25\u0a2c\u0a34\u0a37\u0a3d\u0a43"+ + "\u0a48\u0a50\u0a54\u0a5b\u0a64\u0a6a\u0a70\u0a73\u0a79\u0a7c\u0a83\u0a85"+ + "\u0a8e\u0a98\u0a9c\u0aa9\u0aad\u0ab7\u0abe\u0ac4\u0ac6\u0ad8\u0adc\u0ae9"+ + "\u0aed\u0afe\u0b08\u0b0e\u0b16\u0b22\u0b26\u0b2e\u0b30\u0b36\u0b3a\u0b40"+ + "\u0b44\u0b4a\u0b4e\u0b53\u0b75\u0b7c\u0b7f\u0b88\u0b8f\u0b91\u0b95\u0b98"+ + "\u0b9b\u0b9e\u0ba2\u0ba5\u0bab\u0bb1\u0bb3\u0bb7\u0bbb\u0bbe\u0bc1\u0bc4"+ + "\u0bc8\u0bcc\u0bcf\u0bd2\u0bd5\u0bd7\u0be1\u0bef\u0bf6\u0bfe\u0c0b\u0c19"+ + "\u0c20\u0c28\u0c2d\u0c31\u0c34\u0c3b\u0c4b\u0c5c\u0c64\u0c70\u0c76\u0c78"+ + "\u0c81\u0c85\u0c8e\u0c98\u0caf\u0cba\u0cc6\u0ccf\u0cdc\u0ce0\u0ce7\u0cea"+ + "\u0ced\u0cf3\u0cf6\u0cf9\u0d01\u0d04\u0d0a\u0d0d\u0d13\u0d16\u0d19\u0d1f"+ + "\u0d22\u0d26\u0d2e\u0d33\u0d35\u0d37\u0d3a\u0d3e\u0d43\u0d47\u0d4c\u0d50"+ + "\u0d58\u0d61\u0d65\u0d68\u0d6b\u0d72\u0d75\u0d8e\u0d96\u0d9f\u0da4\u0da6"+ + "\u0da8\u0db8\u0dbc\u0dc6\u0dc9\u0dcb\u0dd0\u0ddc\u0de3\u0deb\u0df4\u0df6"+ + "\u0dfc\u0dff\u0e03\u0e08\u0e0f\u0e16\u0e1d\u0e2c\u0e30\u0e36\u0e39\u0e3f"+ + "\u0e43\u0e45\u0e50\u0e57\u0e62\u0e68\u0e6b\u0e80\u0e83\u0e92\u0e97\u0e9a"+ + "\u0ea1\u0ead\u0eb5\u0ebc\u0ec0\u0ec7\u0ece\u0ed3\u0ed8\u0ee1\u0ee7\u0eeb"+ + "\u0ef3\u0ef7\u0eff\u0f07\u0f0e\u0f11\u0f18\u0f1c\u0f1e\u0f25\u0f2c\u0f2e"+ + "\u0f35\u0f3c\u0f40\u0f46\u0f4b\u0f4d\u0f55\u0f57\u0f5e\u0f60\u0f64\u0f6a"+ + "\u0f6c\u0f6f\u0f77\u0f7e\u0f84\u0f89\u0f8d\u0f9b\u0fa0\u0fad\u0faf\u0fb6"+ + "\u0fbe\u0fc2\u0fc7\u0fcc\u0fd1\u0fd9\u0fe2\u0fe5\u0feb\u0fed\u0ff3\u0ffa"+ + "\u1008\u100c\u1011\u1017\u101f\u1022\u1028\u102b\u1034\u1037\u103d\u1047"+ + "\u104b\u104e\u1050\u1055\u105a\u105e\u1064\u106b\u1077\u1079\u1087\u108a"+ + "\u108f\u1097\u109a\u109f\u10a4\u10ae\u10b5\u10b8\u10bb\u10c5\u10cd\u10d3"+ + "\u10d9\u10de\u10e3\u10e6\u10e9\u10ec\u10ef\u10f2\u10f5\u10f8\u10fb\u10fe"+ + "\u1101\u110c\u110f\u1112\u1115\u1118\u111a\u1128\u112f\u1135\u1139\u113e"+ + "\u1145\u114a\u1153\u1155\u115b\u115e\u1162\u1165\u1168\u1176\u1193\u11b6"+ + "\u11b8\u11c1\u11c5\u11ce\u11d4\u11da\u11dd\u11e0\u11e3\u11e6\u11ee\u11f6"+ + "\u11f9\u11fc\u1207\u120d\u1210\u1212\u121d\u1221\u1224\u1227\u122a\u122d"+ + "\u1230\u123b\u1240\u124d\u1254\u1261\u1266\u126b\u126f\u127f\u1286\u128c"+ + "\u1290\u129a\u12a2\u12ad\u12b2\u12bf\u12c2\u12cc\u12cf\u12da\u12e4\u12e7"+ + "\u12ef\u12f2\u12fe\u1303\u130c\u1311\u1316\u131f\u1324\u1326\u132c\u132e"+ + "\u1331\u1337\u133e\u134a\u134d\u1357\u135b\u135e\u1367\u136c\u1370\u137c"+ + "\u1385\u1389\u138e\u1392\u1396\u13a0\u13a6\u13b1\u13b8\u13be\u13c1\u13c4"+ + "\u13c7\u13ca\u13ce\u13d1\u13d6\u13e0\u13e6\u13ef\u13fe\u1407\u140b\u140e"+ + "\u1412\u1414\u141b\u1423\u1429\u1430\u1436\u1439\u143d\u1444\u1447\u144a"+ + "\u1451\u1453\u1458\u145c\u1469\u146b\u146d\u1476\u1478\u147c\u1483\u148a"+ + "\u1490\u1497\u149b\u14a2\u14a9\u14af\u14b5\u14bd\u14c3\u14d4\u14da\u14e5"+ + "\u14eb\u14ed\u14f5\u14fb\u1501\u1508\u1510\u1513\u151e\u1529\u152e\u1531"+ + "\u1538\u153d\u1549\u154f\u1565\u1569\u1577\u1579\u1582\u1585\u158c\u158f"+ + "\u1597\u159c\u15a1\u15a9\u15b2\u15b9\u15be\u15c1\u15c7\u15dc\u15de\u15ed"+ + "\u15f1\u15fa\u15fe\u160f\u1618\u1622\u1627\u1643\u1647\u1652\u165a\u165f"+ + "\u166b\u1677\u1679\u167b\u1688\u168d\u168f\u1694\u169b\u16a5\u16a8\u16aa"+ + "\u16af\u16b4\u16c8\u16cc\u16cf\u16d2\u16df\u16ea\u16f1\u16f5\u16fa\u16fd"+ + "\u1701\u1709\u170e\u1714\u171d\u1726\u1730\u1736\u1749\u174c\u176d\u177a"+ + "\u177e\u1780\u17a2\u17a9\u17b0\u17b7\u17bb\u17c1\u17cb\u17d0\u17d6\u17e2"+ + "\u17eb\u17ee\u17f5\u17fa\u17fe\u1801"; + public static final String _serializedATN = Utils.join( + new String[] { + _serializedATNSegment0, + _serializedATNSegment1, + _serializedATNSegment2 + }, + "" + ); + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens new file mode 100644 index 00000000000000..aca045377c7e08 --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens @@ -0,0 +1,1067 @@ +SEMICOLON=1 +LEFT_PAREN=2 +RIGHT_PAREN=3 +COMMA=4 +DOT=5 +DOTDOTDOT=6 +LEFT_BRACKET=7 +RIGHT_BRACKET=8 +LEFT_BRACE=9 +RIGHT_BRACE=10 +ACCOUNT_LOCK=11 +ACCOUNT_UNLOCK=12 +ACTIONS=13 +ADD=14 +ADMIN=15 +AFTER=16 +AGG_STATE=17 +AGGREGATE=18 +ALIAS=19 +ALL=20 +ALTER=21 +ANALYZE=22 +ANALYZED=23 +AND=24 +ANTI=25 +APPEND=26 +ARRAY=27 +AS=28 +ASC=29 +AT=30 +AUTHORS=31 +AUTO=32 +AUTO_INCREMENT=33 +ALWAYS=34 +BACKEND=35 +BACKENDS=36 +BACKUP=37 +BEGIN=38 +BELONG=39 +BETWEEN=40 +BIGINT=41 +BIN=42 +BINARY=43 +BINLOG=44 +BITAND=45 +BITMAP=46 +BITMAP_EMPTY=47 +BITMAP_UNION=48 +BITOR=49 +BITXOR=50 +BLOB=51 +BOOLEAN=52 +BRIEF=53 +BROKER=54 +BUCKETS=55 +BUILD=56 +BUILTIN=57 +BULK=58 +BY=59 +CACHE=60 +CACHED=61 +CALL=62 +CANCEL=63 +CASE=64 +CAST=65 +CATALOG=66 +CATALOGS=67 +CHAIN=68 +CHAR=69 +CHARSET=70 +CHECK=71 +CLEAN=72 +CLUSTER=73 +CLUSTERS=74 +COLLATE=75 +COLLATION=76 +COLLECT=77 +COLOCATE=78 +COLUMN=79 +COLUMNS=80 +COMMENT=81 +COMMIT=82 +COMMITTED=83 +COMPACT=84 +COMPLETE=85 +COMPRESS_TYPE=86 +COMPUTE=87 +CONDITIONS=88 +CONFIG=89 +CONNECTION=90 +CONNECTION_ID=91 +CONSISTENT=92 +CONSTRAINT=93 +CONSTRAINTS=94 +CONVERT=95 +CONVERT_LSC=96 +COPY=97 +COUNT=98 +CREATE=99 +CREATION=100 +CRON=101 +CROSS=102 +CUBE=103 +CURRENT=104 +CURRENT_CATALOG=105 +CURRENT_DATE=106 +CURRENT_TIME=107 +CURRENT_TIMESTAMP=108 +CURRENT_USER=109 +DATA=110 +DATABASE=111 +DATABASES=112 +DATE=113 +DATETIME=114 +DATETIMEV2=115 +DATEV2=116 +DATETIMEV1=117 +DATEV1=118 +DAY=119 +DECIMAL=120 +DECIMALV2=121 +DECIMALV3=122 +DECOMMISSION=123 +DEFAULT=124 +DEFERRED=125 +DELETE=126 +DEMAND=127 +DESC=128 +DESCRIBE=129 +DIAGNOSE=130 +DIAGNOSIS=131 +DISK=132 +DISTINCT=133 +DISTINCTPC=134 +DISTINCTPCSA=135 +DISTRIBUTED=136 +DISTRIBUTION=137 +DIV=138 +DO=139 +DORIS_INTERNAL_TABLE_ID=140 +DOUBLE=141 +DROP=142 +DROPP=143 +DUAL=144 +DUMP=145 +DUPLICATE=146 +DYNAMIC=147 +E=148 +ELSE=149 +ENABLE=150 +ENCRYPTKEY=151 +ENCRYPTKEYS=152 +END=153 +ENDS=154 +ENGINE=155 +ENGINES=156 +ENTER=157 +ERRORS=158 +EVENTS=159 +EVERY=160 +EXCEPT=161 +EXCLUDE=162 +EXECUTE=163 +EXISTS=164 +EXPIRED=165 +EXPLAIN=166 +EXPORT=167 +EXTENDED=168 +EXTERNAL=169 +EXTRACT=170 +FAILED_LOGIN_ATTEMPTS=171 +FALSE=172 +FAST=173 +FEATURE=174 +FIELDS=175 +FILE=176 +FILTER=177 +FIRST=178 +FLOAT=179 +FOLLOWER=180 +FOLLOWING=181 +FOR=182 +FOREIGN=183 +FORCE=184 +FORMAT=185 +FREE=186 +FROM=187 +FRONTEND=188 +FRONTENDS=189 +FULL=190 +FUNCTION=191 +FUNCTIONS=192 +GENERATED=193 +GENERIC=194 +GLOBAL=195 +GRANT=196 +GRANTS=197 +GRAPH=198 +GROUP=199 +GROUPING=200 +GROUPS=201 +HASH=202 +HAVING=203 +HDFS=204 +HELP=205 +HISTOGRAM=206 +HLL=207 +HLL_UNION=208 +HOSTNAME=209 +HOTSPOT=210 +HOUR=211 +HUB=212 +IDENTIFIED=213 +IF=214 +IGNORE=215 +IMMEDIATE=216 +IN=217 +INCREMENTAL=218 +INDEX=219 +INDEXES=220 +INFILE=221 +INNER=222 +INSERT=223 +INSTALL=224 +INT=225 +INTEGER=226 +INTERMEDIATE=227 +INTERSECT=228 +INTERVAL=229 +INTO=230 +INVERTED=231 +IPV4=232 +IPV6=233 +IS=234 +IS_NOT_NULL_PRED=235 +IS_NULL_PRED=236 +ISNULL=237 +ISOLATION=238 +JOB=239 +JOBS=240 +JOIN=241 +JSON=242 +JSONB=243 +KEY=244 +KEYS=245 +KILL=246 +LABEL=247 +LARGEINT=248 +LAST=249 +LATERAL=250 +LDAP=251 +LDAP_ADMIN_PASSWORD=252 +LEFT=253 +LESS=254 +LEVEL=255 +LIKE=256 +LIMIT=257 +LINES=258 +LINK=259 +LIST=260 +LOAD=261 +LOCAL=262 +LOCALTIME=263 +LOCALTIMESTAMP=264 +LOCATION=265 +LOCK=266 +LOGICAL=267 +LOW_PRIORITY=268 +MANUAL=269 +MAP=270 +MATCH=271 +MATCH_ALL=272 +MATCH_ANY=273 +MATCH_PHRASE=274 +MATCH_PHRASE_EDGE=275 +MATCH_PHRASE_PREFIX=276 +MATCH_REGEXP=277 +MATCH_NAME=278 +MATCH_NAME_GLOB=279 +MATERIALIZED=280 +MAX=281 +MAXVALUE=282 +MEMO=283 +MERGE=284 +MIGRATE=285 +MIGRATIONS=286 +MIN=287 +MINUS=288 +MINUTE=289 +MODIFY=290 +MONTH=291 +MTMV=292 +NAME=293 +NAMES=294 +NATURAL=295 +NEGATIVE=296 +NEVER=297 +NEXT=298 +NGRAM_BF=299 +NO=300 +NO_USE_MV=301 +NON_NULLABLE=302 +NOT=303 +NULL=304 +NULLS=305 +OBSERVER=306 +OF=307 +OFFSET=308 +ON=309 +ONLY=310 +OPEN=311 +OPTIMIZED=312 +OR=313 +ORDER=314 +OUTER=315 +OUTFILE=316 +OVER=317 +OVERWRITE=318 +PARAMETER=319 +PARSED=320 +PARTITION=321 +PARTITIONS=322 +PASSWORD=323 +PASSWORD_EXPIRE=324 +PASSWORD_HISTORY=325 +PASSWORD_LOCK_TIME=326 +PASSWORD_REUSE=327 +PATH=328 +PAUSE=329 +PERCENT=330 +PERIOD=331 +PERMISSIVE=332 +PHYSICAL=333 +PI=334 +PLACEHOLDER=335 +PLAN=336 +PLAY=337 +PRIVILEGES=338 +PROCESS=339 +PLUGIN=340 +PLUGINS=341 +POLICY=342 +PRECEDING=343 +PREPARE=344 +PRIMARY=345 +PROC=346 +PROCEDURE=347 +PROCESSLIST=348 +PROFILE=349 +PROPERTIES=350 +PROPERTY=351 +QUANTILE_STATE=352 +QUANTILE_UNION=353 +QUERY=354 +QUEUED=355 +QUOTA=356 +QUALIFY=357 +QUARTER=358 +RANDOM=359 +RANGE=360 +READ=361 +REAL=362 +REBALANCE=363 +RECENT=364 +RECOVER=365 +RECYCLE=366 +REFRESH=367 +REFERENCES=368 +REGEXP=369 +RELEASE=370 +RENAME=371 +REPAIR=372 +REPEATABLE=373 +REPLACE=374 +REPLACE_IF_NOT_NULL=375 +REPLAYER=376 +REPLICA=377 +REPOSITORIES=378 +REPOSITORY=379 +RESOURCE=380 +RESOURCES=381 +RESTORE=382 +RESTRICTIVE=383 +RESUME=384 +RETURNS=385 +REVOKE=386 +REWRITTEN=387 +RIGHT=388 +RLIKE=389 +ROLE=390 +ROLES=391 +ROLLBACK=392 +ROLLUP=393 +ROUTINE=394 +ROW=395 +ROWS=396 +S3=397 +SAMPLE=398 +SCHEDULE=399 +SCHEDULER=400 +SCHEMA=401 +SCHEMAS=402 +SECOND=403 +SELECT=404 +SEMI=405 +SERIALIZABLE=406 +SESSION=407 +SESSION_USER=408 +SET=409 +SETS=410 +SET_SESSION_VARIABLE=411 +SHAPE=412 +SHOW=413 +SIGNED=414 +SKEW=415 +SMALLINT=416 +SNAPSHOT=417 +SONAME=418 +SPLIT=419 +SQL=420 +SQL_BLOCK_RULE=421 +STAGE=422 +STAGES=423 +START=424 +STARTS=425 +STATS=426 +STATUS=427 +STOP=428 +STORAGE=429 +STREAM=430 +STREAMING=431 +STRING=432 +STRUCT=433 +SUM=434 +SUPERUSER=435 +SWITCH=436 +SYNC=437 +SYSTEM=438 +TABLE=439 +TABLES=440 +TABLESAMPLE=441 +TABLET=442 +TABLETS=443 +TASK=444 +TASKS=445 +TEMPORARY=446 +TERMINATED=447 +TEXT=448 +THAN=449 +THEN=450 +TIME=451 +TIMESTAMP=452 +TINYINT=453 +TO=454 +TRANSACTION=455 +TRASH=456 +TREE=457 +TRIGGERS=458 +TRIM=459 +TRUE=460 +TRUNCATE=461 +TYPE=462 +TYPECAST=463 +TYPES=464 +UNBOUNDED=465 +UNCOMMITTED=466 +UNINSTALL=467 +UNION=468 +UNIQUE=469 +UNLOCK=470 +UNSET=471 +UNSIGNED=472 +UP=473 +UPDATE=474 +USE=475 +USER=476 +USE_MV=477 +USING=478 +VALUE=479 +VALUES=480 +VARCHAR=481 +VARIABLE=482 +VARIABLES=483 +VARIANT=484 +VAULT=485 +VAULTS=486 +VERBOSE=487 +VERSION=488 +VIEW=489 +VIEWS=490 +WARM=491 +WARNINGS=492 +WEEK=493 +WHEN=494 +WHERE=495 +WHITELIST=496 +WITH=497 +WORK=498 +WORKLOAD=499 +WRITE=500 +XOR=501 +YEAR=502 +EQ=503 +NSEQ=504 +NEQ=505 +LT=506 +LTE=507 +GT=508 +GTE=509 +PLUS=510 +SUBTRACT=511 +ASTERISK=512 +SLASH=513 +MOD=514 +TILDE=515 +AMPERSAND=516 +LOGICALAND=517 +LOGICALNOT=518 +PIPE=519 +DOUBLEPIPES=520 +HAT=521 +COLON=522 +ARROW=523 +HINT_START=524 +HINT_END=525 +COMMENT_START=526 +ATSIGN=527 +DOUBLEATSIGN=528 +STRING_LITERAL=529 +LEADING_STRING=530 +BIGINT_LITERAL=531 +SMALLINT_LITERAL=532 +TINYINT_LITERAL=533 +INTEGER_VALUE=534 +EXPONENT_VALUE=535 +DECIMAL_VALUE=536 +BIGDECIMAL_LITERAL=537 +IDENTIFIER=538 +BACKQUOTED_IDENTIFIER=539 +SIMPLE_COMMENT=540 +BRACKETED_COMMENT=541 +FROM_DUAL=542 +WS=543 +UNRECOGNIZED=544 +';'=1 +'('=2 +')'=3 +','=4 +'.'=5 +'...'=6 +'['=7 +']'=8 +'{'=9 +'}'=10 +'ACCOUNT_LOCK'=11 +'ACCOUNT_UNLOCK'=12 +'ACTIONS'=13 +'ADD'=14 +'ADMIN'=15 +'AFTER'=16 +'AGG_STATE'=17 +'AGGREGATE'=18 +'ALIAS'=19 +'ALL'=20 +'ALTER'=21 +'ANALYZE'=22 +'ANALYZED'=23 +'AND'=24 +'ANTI'=25 +'APPEND'=26 +'ARRAY'=27 +'AS'=28 +'ASC'=29 +'AT'=30 +'AUTHORS'=31 +'AUTO'=32 +'AUTO_INCREMENT'=33 +'ALWAYS'=34 +'BACKEND'=35 +'BACKENDS'=36 +'BACKUP'=37 +'BEGIN'=38 +'BELONG'=39 +'BETWEEN'=40 +'BIGINT'=41 +'BIN'=42 +'BINARY'=43 +'BINLOG'=44 +'BITAND'=45 +'BITMAP'=46 +'BITMAP_EMPTY'=47 +'BITMAP_UNION'=48 +'BITOR'=49 +'BITXOR'=50 +'BLOB'=51 +'BOOLEAN'=52 +'BRIEF'=53 +'BROKER'=54 +'BUCKETS'=55 +'BUILD'=56 +'BUILTIN'=57 +'BULK'=58 +'BY'=59 +'CACHE'=60 +'CACHED'=61 +'CALL'=62 +'CANCEL'=63 +'CASE'=64 +'CAST'=65 +'CATALOG'=66 +'CATALOGS'=67 +'CHAIN'=68 +'CHARSET'=70 +'CHECK'=71 +'CLEAN'=72 +'CLUSTER'=73 +'CLUSTERS'=74 +'COLLATE'=75 +'COLLATION'=76 +'COLLECT'=77 +'COLOCATE'=78 +'COLUMN'=79 +'COLUMNS'=80 +'COMMENT'=81 +'COMMIT'=82 +'COMMITTED'=83 +'COMPACT'=84 +'COMPLETE'=85 +'COMPRESS_TYPE'=86 +'COMPUTE'=87 +'CONDITIONS'=88 +'CONFIG'=89 +'CONNECTION'=90 +'CONNECTION_ID'=91 +'CONSISTENT'=92 +'CONSTRAINT'=93 +'CONSTRAINTS'=94 +'CONVERT'=95 +'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'=96 +'COPY'=97 +'COUNT'=98 +'CREATE'=99 +'CREATION'=100 +'CRON'=101 +'CROSS'=102 +'CUBE'=103 +'CURRENT'=104 +'CURRENT_CATALOG'=105 +'CURRENT_DATE'=106 +'CURRENT_TIME'=107 +'CURRENT_TIMESTAMP'=108 +'CURRENT_USER'=109 +'DATA'=110 +'DATABASE'=111 +'DATABASES'=112 +'DATE'=113 +'DATETIME'=114 +'DATETIMEV2'=115 +'DATEV2'=116 +'DATETIMEV1'=117 +'DATEV1'=118 +'DAY'=119 +'DECIMAL'=120 +'DECIMALV2'=121 +'DECIMALV3'=122 +'DECOMMISSION'=123 +'DEFAULT'=124 +'DEFERRED'=125 +'DELETE'=126 +'DEMAND'=127 +'DESC'=128 +'DESCRIBE'=129 +'DIAGNOSE'=130 +'DIAGNOSIS'=131 +'DISK'=132 +'DISTINCT'=133 +'DISTINCTPC'=134 +'DISTINCTPCSA'=135 +'DISTRIBUTED'=136 +'DISTRIBUTION'=137 +'DIV'=138 +'DO'=139 +'DORIS_INTERNAL_TABLE_ID'=140 +'DOUBLE'=141 +'DROP'=142 +'DROPP'=143 +'DUAL'=144 +'DUMP'=145 +'DUPLICATE'=146 +'DYNAMIC'=147 +'E'=148 +'ELSE'=149 +'ENABLE'=150 +'ENCRYPTKEY'=151 +'ENCRYPTKEYS'=152 +'END'=153 +'ENDS'=154 +'ENGINE'=155 +'ENGINES'=156 +'ENTER'=157 +'ERRORS'=158 +'EVENTS'=159 +'EVERY'=160 +'EXCEPT'=161 +'EXCLUDE'=162 +'EXECUTE'=163 +'EXISTS'=164 +'EXPIRED'=165 +'EXPLAIN'=166 +'EXPORT'=167 +'EXTENDED'=168 +'EXTERNAL'=169 +'EXTRACT'=170 +'FAILED_LOGIN_ATTEMPTS'=171 +'FALSE'=172 +'FAST'=173 +'FEATURE'=174 +'FIELDS'=175 +'FILE'=176 +'FILTER'=177 +'FIRST'=178 +'FLOAT'=179 +'FOLLOWER'=180 +'FOLLOWING'=181 +'FOR'=182 +'FOREIGN'=183 +'FORCE'=184 +'FORMAT'=185 +'FREE'=186 +'FROM'=187 +'FRONTEND'=188 +'FRONTENDS'=189 +'FULL'=190 +'FUNCTION'=191 +'FUNCTIONS'=192 +'GENERATED'=193 +'GENERIC'=194 +'GLOBAL'=195 +'GRANT'=196 +'GRANTS'=197 +'GRAPH'=198 +'GROUP'=199 +'GROUPING'=200 +'GROUPS'=201 +'HASH'=202 +'HAVING'=203 +'HDFS'=204 +'HELP'=205 +'HISTOGRAM'=206 +'HLL'=207 +'HLL_UNION'=208 +'HOSTNAME'=209 +'HOTSPOT'=210 +'HOUR'=211 +'HUB'=212 +'IDENTIFIED'=213 +'IF'=214 +'IGNORE'=215 +'IMMEDIATE'=216 +'IN'=217 +'INCREMENTAL'=218 +'INDEX'=219 +'INDEXES'=220 +'INFILE'=221 +'INNER'=222 +'INSERT'=223 +'INSTALL'=224 +'INT'=225 +'INTEGER'=226 +'INTERMEDIATE'=227 +'INTERSECT'=228 +'INTERVAL'=229 +'INTO'=230 +'INVERTED'=231 +'IPV4'=232 +'IPV6'=233 +'IS'=234 +'IS_NOT_NULL_PRED'=235 +'IS_NULL_PRED'=236 +'ISNULL'=237 +'ISOLATION'=238 +'JOB'=239 +'JOBS'=240 +'JOIN'=241 +'JSON'=242 +'JSONB'=243 +'KEY'=244 +'KEYS'=245 +'KILL'=246 +'LABEL'=247 +'LARGEINT'=248 +'LAST'=249 +'LATERAL'=250 +'LDAP'=251 +'LDAP_ADMIN_PASSWORD'=252 +'LEFT'=253 +'LESS'=254 +'LEVEL'=255 +'LIKE'=256 +'LIMIT'=257 +'LINES'=258 +'LINK'=259 +'LIST'=260 +'LOAD'=261 +'LOCAL'=262 +'LOCALTIME'=263 +'LOCALTIMESTAMP'=264 +'LOCATION'=265 +'LOCK'=266 +'LOGICAL'=267 +'LOW_PRIORITY'=268 +'MANUAL'=269 +'MAP'=270 +'MATCH'=271 +'MATCH_ALL'=272 +'MATCH_ANY'=273 +'MATCH_PHRASE'=274 +'MATCH_PHRASE_EDGE'=275 +'MATCH_PHRASE_PREFIX'=276 +'MATCH_REGEXP'=277 +'MATCH_NAME'=278 +'MATCH_NAME_GLOB'=279 +'MATERIALIZED'=280 +'MAX'=281 +'MAXVALUE'=282 +'MEMO'=283 +'MERGE'=284 +'MIGRATE'=285 +'MIGRATIONS'=286 +'MIN'=287 +'MINUS'=288 +'MINUTE'=289 +'MODIFY'=290 +'MONTH'=291 +'MTMV'=292 +'NAME'=293 +'NAMES'=294 +'NATURAL'=295 +'NEGATIVE'=296 +'NEVER'=297 +'NEXT'=298 +'NGRAM_BF'=299 +'NO'=300 +'NO_USE_MV'=301 +'NON_NULLABLE'=302 +'NOT'=303 +'NULL'=304 +'NULLS'=305 +'OBSERVER'=306 +'OF'=307 +'OFFSET'=308 +'ON'=309 +'ONLY'=310 +'OPEN'=311 +'OPTIMIZED'=312 +'OR'=313 +'ORDER'=314 +'OUTER'=315 +'OUTFILE'=316 +'OVER'=317 +'OVERWRITE'=318 +'PARAMETER'=319 +'PARSED'=320 +'PARTITION'=321 +'PARTITIONS'=322 +'PASSWORD'=323 +'PASSWORD_EXPIRE'=324 +'PASSWORD_HISTORY'=325 +'PASSWORD_LOCK_TIME'=326 +'PASSWORD_REUSE'=327 +'PATH'=328 +'PAUSE'=329 +'PERCENT'=330 +'PERIOD'=331 +'PERMISSIVE'=332 +'PHYSICAL'=333 +'PI'=334 +'?'=335 +'PLAN'=336 +'PLAY'=337 +'PRIVILEGES'=338 +'PROCESS'=339 +'PLUGIN'=340 +'PLUGINS'=341 +'POLICY'=342 +'PRECEDING'=343 +'PREPARE'=344 +'PRIMARY'=345 +'PROC'=346 +'PROCEDURE'=347 +'PROCESSLIST'=348 +'PROFILE'=349 +'PROPERTIES'=350 +'PROPERTY'=351 +'QUANTILE_STATE'=352 +'QUANTILE_UNION'=353 +'QUERY'=354 +'QUEUED'=355 +'QUOTA'=356 +'QUALIFY'=357 +'QUARTER'=358 +'RANDOM'=359 +'RANGE'=360 +'READ'=361 +'REAL'=362 +'REBALANCE'=363 +'RECENT'=364 +'RECOVER'=365 +'RECYCLE'=366 +'REFRESH'=367 +'REFERENCES'=368 +'REGEXP'=369 +'RELEASE'=370 +'RENAME'=371 +'REPAIR'=372 +'REPEATABLE'=373 +'REPLACE'=374 +'REPLACE_IF_NOT_NULL'=375 +'REPLAYER'=376 +'REPLICA'=377 +'REPOSITORIES'=378 +'REPOSITORY'=379 +'RESOURCE'=380 +'RESOURCES'=381 +'RESTORE'=382 +'RESTRICTIVE'=383 +'RESUME'=384 +'RETURNS'=385 +'REVOKE'=386 +'REWRITTEN'=387 +'RIGHT'=388 +'RLIKE'=389 +'ROLE'=390 +'ROLES'=391 +'ROLLBACK'=392 +'ROLLUP'=393 +'ROUTINE'=394 +'ROW'=395 +'ROWS'=396 +'S3'=397 +'SAMPLE'=398 +'SCHEDULE'=399 +'SCHEDULER'=400 +'SCHEMA'=401 +'SCHEMAS'=402 +'SECOND'=403 +'SELECT'=404 +'SEMI'=405 +'SERIALIZABLE'=406 +'SESSION'=407 +'SESSION_USER'=408 +'SET'=409 +'SETS'=410 +'SET_SESSION_VARIABLE'=411 +'SHAPE'=412 +'SHOW'=413 +'SIGNED'=414 +'SKEW'=415 +'SMALLINT'=416 +'SNAPSHOT'=417 +'SONAME'=418 +'SPLIT'=419 +'SQL'=420 +'SQL_BLOCK_RULE'=421 +'STAGE'=422 +'STAGES'=423 +'START'=424 +'STARTS'=425 +'STATS'=426 +'STATUS'=427 +'STOP'=428 +'STORAGE'=429 +'STREAM'=430 +'STREAMING'=431 +'STRING'=432 +'STRUCT'=433 +'SUM'=434 +'SUPERUSER'=435 +'SWITCH'=436 +'SYNC'=437 +'SYSTEM'=438 +'TABLE'=439 +'TABLES'=440 +'TABLESAMPLE'=441 +'TABLET'=442 +'TABLETS'=443 +'TASK'=444 +'TASKS'=445 +'TEMPORARY'=446 +'TERMINATED'=447 +'TEXT'=448 +'THAN'=449 +'THEN'=450 +'TIME'=451 +'TIMESTAMP'=452 +'TINYINT'=453 +'TO'=454 +'TRANSACTION'=455 +'TRASH'=456 +'TREE'=457 +'TRIGGERS'=458 +'TRIM'=459 +'TRUE'=460 +'TRUNCATE'=461 +'TYPE'=462 +'TYPE_CAST'=463 +'TYPES'=464 +'UNBOUNDED'=465 +'UNCOMMITTED'=466 +'UNINSTALL'=467 +'UNION'=468 +'UNIQUE'=469 +'UNLOCK'=470 +'UNSET'=471 +'UNSIGNED'=472 +'UP'=473 +'UPDATE'=474 +'USE'=475 +'USER'=476 +'USE_MV'=477 +'USING'=478 +'VALUE'=479 +'VALUES'=480 +'VARCHAR'=481 +'VARIABLE'=482 +'VARIABLES'=483 +'VARIANT'=484 +'VAULT'=485 +'VAULTS'=486 +'VERBOSE'=487 +'VERSION'=488 +'VIEW'=489 +'VIEWS'=490 +'WARM'=491 +'WARNINGS'=492 +'WEEK'=493 +'WHEN'=494 +'WHERE'=495 +'WHITELIST'=496 +'WITH'=497 +'WORK'=498 +'WORKLOAD'=499 +'WRITE'=500 +'XOR'=501 +'YEAR'=502 +'<=>'=504 +'<'=506 +'>'=508 +'+'=510 +'-'=511 +'*'=512 +'/'=513 +'%'=514 +'~'=515 +'&'=516 +'&&'=517 +'!'=518 +'|'=519 +'||'=520 +'^'=521 +':'=522 +'->'=523 +'/*+'=524 +'*/'=525 +'/*'=526 +'@'=527 +'@@'=528 diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java new file mode 100644 index 00000000000000..04705bf6a90cf3 --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java @@ -0,0 +1,7263 @@ +// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 by ANTLR 4.13.1 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link DorisParserListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +@SuppressWarnings("CheckReturnValue") +public class DorisParserBaseListener implements DorisParserListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultiStatements(DorisParser.MultiStatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultiStatements(DorisParser.MultiStatementsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSingleStatement(DorisParser.SingleStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSingleStatement(DorisParser.SingleStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCallProcedure(DorisParser.CallProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCallProcedure(DorisParser.CallProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateProcedure(DorisParser.CreateProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateProcedure(DorisParser.CreateProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropProcedure(DorisParser.DropProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropProcedure(DorisParser.DropProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowConfig(DorisParser.ShowConfigContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowConfig(DorisParser.ShowConfigContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementDefault(DorisParser.StatementDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementDefault(DorisParser.StatementDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnsupported(DorisParser.UnsupportedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnsupported(DorisParser.UnsupportedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateMTMV(DorisParser.CreateMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateMTMV(DorisParser.CreateMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshMTMV(DorisParser.RefreshMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshMTMV(DorisParser.RefreshMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterMTMV(DorisParser.AlterMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterMTMV(DorisParser.AlterMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropMTMV(DorisParser.DropMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropMTMV(DorisParser.DropMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPauseMTMV(DorisParser.PauseMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPauseMTMV(DorisParser.PauseMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResumeMTMV(DorisParser.ResumeMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResumeMTMV(DorisParser.ResumeMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPauseJob(DorisParser.PauseJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPauseJob(DorisParser.PauseJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropJob(DorisParser.DropJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropJob(DorisParser.DropJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResumeJob(DorisParser.ResumeJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResumeJob(DorisParser.ResumeJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelJobTask(DorisParser.CancelJobTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelJobTask(DorisParser.CancelJobTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddConstraint(DorisParser.AddConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddConstraint(DorisParser.AddConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropConstraint(DorisParser.DropConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropConstraint(DorisParser.DropConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowConstraint(DorisParser.ShowConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowConstraint(DorisParser.ShowConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInsertTable(DorisParser.InsertTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInsertTable(DorisParser.InsertTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUpdate(DorisParser.UpdateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUpdate(DorisParser.UpdateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDelete(DorisParser.DeleteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDelete(DorisParser.DeleteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLoad(DorisParser.LoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLoad(DorisParser.LoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExport(DorisParser.ExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExport(DorisParser.ExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplay(DorisParser.ReplayContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplay(DorisParser.ReplayContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTable(DorisParser.CreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTable(DorisParser.CreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateView(DorisParser.CreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateView(DorisParser.CreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateFile(DorisParser.CreateFileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateFile(DorisParser.CreateFileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateTableLike(DorisParser.CreateTableLikeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateTableLike(DorisParser.CreateTableLikeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateRole(DorisParser.CreateRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateRole(DorisParser.CreateRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateCatalog(DorisParser.CreateCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateCatalog(DorisParser.CreateCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBuildIndex(DorisParser.BuildIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBuildIndex(DorisParser.BuildIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateIndex(DorisParser.CreateIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateIndex(DorisParser.CreateIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterSystem(DorisParser.AlterSystemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterSystem(DorisParser.AlterSystemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterView(DorisParser.AlterViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterView(DorisParser.AlterViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterRole(DorisParser.AlterRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterRole(DorisParser.AlterRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterStorageVault(DorisParser.AlterStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterStorageVault(DorisParser.AlterStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterTable(DorisParser.AlterTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterTable(DorisParser.AlterTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterRepository(DorisParser.AlterRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterRepository(DorisParser.AlterRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropEncryptkey(DorisParser.DropEncryptkeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropEncryptkey(DorisParser.DropEncryptkeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropRole(DorisParser.DropRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropRole(DorisParser.DropRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropUser(DorisParser.DropUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropUser(DorisParser.DropUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropCatalog(DorisParser.DropCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropCatalog(DorisParser.DropCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropFile(DorisParser.DropFileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropFile(DorisParser.DropFileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropRepository(DorisParser.DropRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropRepository(DorisParser.DropRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropTable(DorisParser.DropTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropTable(DorisParser.DropTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropDatabase(DorisParser.DropDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropDatabase(DorisParser.DropDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropFunction(DorisParser.DropFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropFunction(DorisParser.DropFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropIndex(DorisParser.DropIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropIndex(DorisParser.DropIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowVariables(DorisParser.ShowVariablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowVariables(DorisParser.ShowVariablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowAuthors(DorisParser.ShowAuthorsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowAuthors(DorisParser.ShowAuthorsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowBroker(DorisParser.ShowBrokerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowBroker(DorisParser.ShowBrokerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowEvents(DorisParser.ShowEventsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowEvents(DorisParser.ShowEventsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowLastInsert(DorisParser.ShowLastInsertContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowLastInsert(DorisParser.ShowLastInsertContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCharset(DorisParser.ShowCharsetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCharset(DorisParser.ShowCharsetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDelete(DorisParser.ShowDeleteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDelete(DorisParser.ShowDeleteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowGrants(DorisParser.ShowGrantsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowGrants(DorisParser.ShowGrantsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowSyncJob(DorisParser.ShowSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowSyncJob(DorisParser.ShowSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowLoadProfile(DorisParser.ShowLoadProfileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowLoadProfile(DorisParser.ShowLoadProfileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowView(DorisParser.ShowViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowView(DorisParser.ShowViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowPlugins(DorisParser.ShowPluginsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowPlugins(DorisParser.ShowPluginsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRepositories(DorisParser.ShowRepositoriesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRepositories(DorisParser.ShowRepositoriesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateTable(DorisParser.ShowCreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateTable(DorisParser.ShowCreateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowProcessList(DorisParser.ShowProcessListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowProcessList(DorisParser.ShowProcessListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRoles(DorisParser.ShowRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRoles(DorisParser.ShowRolesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowPartitionId(DorisParser.ShowPartitionIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowPartitionId(DorisParser.ShowPartitionIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowPrivileges(DorisParser.ShowPrivilegesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowPrivileges(DorisParser.ShowPrivilegesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowProc(DorisParser.ShowProcContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowProc(DorisParser.ShowProcContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowSmallFiles(DorisParser.ShowSmallFilesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowSmallFiles(DorisParser.ShowSmallFilesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCatalog(DorisParser.ShowCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCatalog(DorisParser.ShowCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCatalogs(DorisParser.ShowCatalogsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCatalogs(DorisParser.ShowCatalogsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowUserProperties(DorisParser.ShowUserPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowUserProperties(DorisParser.ShowUserPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowAllProperties(DorisParser.ShowAllPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowAllProperties(DorisParser.ShowAllPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCollation(DorisParser.ShowCollationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCollation(DorisParser.ShowCollationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateView(DorisParser.ShowCreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateView(DorisParser.ShowCreateViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDataTypes(DorisParser.ShowDataTypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDataTypes(DorisParser.ShowDataTypesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowData(DorisParser.ShowDataContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowData(DorisParser.ShowDataContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowBackends(DorisParser.ShowBackendsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowBackends(DorisParser.ShowBackendsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStages(DorisParser.ShowStagesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStages(DorisParser.ShowStagesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTriggers(DorisParser.ShowTriggersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTriggers(DorisParser.ShowTriggersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowFrontends(DorisParser.ShowFrontendsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowFrontends(DorisParser.ShowFrontendsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTableId(DorisParser.ShowTableIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTableId(DorisParser.ShowTableIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTrash(DorisParser.ShowTrashContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTrash(DorisParser.ShowTrashContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStatus(DorisParser.ShowStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStatus(DorisParser.ShowStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowWhitelist(DorisParser.ShowWhitelistContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowWhitelist(DorisParser.ShowWhitelistContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDataSkew(DorisParser.ShowDataSkewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDataSkew(DorisParser.ShowDataSkewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTableCreation(DorisParser.ShowTableCreationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTableCreation(DorisParser.ShowTableCreationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowQueryProfile(DorisParser.ShowQueryProfileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowQueryProfile(DorisParser.ShowQueryProfileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowConvertLsc(DorisParser.ShowConvertLscContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowConvertLsc(DorisParser.ShowConvertLscContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTables(DorisParser.ShowTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTables(DorisParser.ShowTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTableStatus(DorisParser.ShowTableStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTableStatus(DorisParser.ShowTableStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSync(DorisParser.SyncContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSync(DorisParser.SyncContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHelp(DorisParser.HelpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHelp(DorisParser.HelpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInstallPlugin(DorisParser.InstallPluginContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInstallPlugin(DorisParser.InstallPluginContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUninstallPlugin(DorisParser.UninstallPluginContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUninstallPlugin(DorisParser.UninstallPluginContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLockTables(DorisParser.LockTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLockTables(DorisParser.LockTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnlockTables(DorisParser.UnlockTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnlockTables(DorisParser.UnlockTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWarmUpCluster(DorisParser.WarmUpClusterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWarmUpCluster(DorisParser.WarmUpClusterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBackup(DorisParser.BackupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBackup(DorisParser.BackupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRestore(DorisParser.RestoreContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRestore(DorisParser.RestoreContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWarmUpItem(DorisParser.WarmUpItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWarmUpItem(DorisParser.WarmUpItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLockTable(DorisParser.LockTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLockTable(DorisParser.LockTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRowPolicy(DorisParser.ShowRowPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRowPolicy(DorisParser.ShowRowPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowStorageVault(DorisParser.ShowStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowStorageVault(DorisParser.ShowStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowOpenTables(DorisParser.ShowOpenTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowOpenTables(DorisParser.ShowOpenTablesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowViews(DorisParser.ShowViewsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowViews(DorisParser.ShowViewsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowDatabases(DorisParser.ShowDatabasesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowDatabases(DorisParser.ShowDatabasesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowColumns(DorisParser.ShowColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowColumns(DorisParser.ShowColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowLoad(DorisParser.ShowLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowLoad(DorisParser.ShowLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowExport(DorisParser.ShowExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowExport(DorisParser.ShowExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowAlterTable(DorisParser.ShowAlterTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowAlterTable(DorisParser.ShowAlterTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowPartitions(DorisParser.ShowPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowPartitions(DorisParser.ShowPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTabletId(DorisParser.ShowTabletIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTabletId(DorisParser.ShowTabletIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowBackup(DorisParser.ShowBackupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowBackup(DorisParser.ShowBackupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRestore(DorisParser.ShowRestoreContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRestore(DorisParser.ShowRestoreContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowResources(DorisParser.ShowResourcesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowResources(DorisParser.ShowResourcesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowSnapshot(DorisParser.ShowSnapshotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowSnapshot(DorisParser.ShowSnapshotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowFunctions(DorisParser.ShowFunctionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowFunctions(DorisParser.ShowFunctionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTypeCast(DorisParser.ShowTypeCastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTypeCast(DorisParser.ShowTypeCastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowIndex(DorisParser.ShowIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowIndex(DorisParser.ShowIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTransaction(DorisParser.ShowTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTransaction(DorisParser.ShowTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowQueryStats(DorisParser.ShowQueryStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowQueryStats(DorisParser.ShowQueryStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowBuildIndex(DorisParser.ShowBuildIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowBuildIndex(DorisParser.ShowBuildIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowClusters(DorisParser.ShowClustersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowClusters(DorisParser.ShowClustersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCopy(DorisParser.ShowCopyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCopy(DorisParser.ShowCopyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMysqlLoad(DorisParser.MysqlLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMysqlLoad(DorisParser.MysqlLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowCreateLoad(DorisParser.ShowCreateLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowCreateLoad(DorisParser.ShowCreateLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSeparator(DorisParser.SeparatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSeparator(DorisParser.SeparatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportColumns(DorisParser.ImportColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportColumns(DorisParser.ImportColumnsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportWhere(DorisParser.ImportWhereContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportWhere(DorisParser.ImportWhereContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportDeleteOn(DorisParser.ImportDeleteOnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportDeleteOn(DorisParser.ImportDeleteOnContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportSequence(DorisParser.ImportSequenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportSequence(DorisParser.ImportSequenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportPartitions(DorisParser.ImportPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportPartitions(DorisParser.ImportPartitionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportWhereStatement(DorisParser.ImportWhereStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportWhereStatement(DorisParser.ImportWhereStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportColumnDesc(DorisParser.ImportColumnDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportColumnDesc(DorisParser.ImportColumnDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterChannelDescription(DorisParser.ChannelDescriptionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitChannelDescription(DorisParser.ChannelDescriptionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshCatalog(DorisParser.RefreshCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshCatalog(DorisParser.RefreshCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshDatabase(DorisParser.RefreshDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshDatabase(DorisParser.RefreshDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshTable(DorisParser.RefreshTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshTable(DorisParser.RefreshTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCleanAllProfile(DorisParser.CleanAllProfileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCleanAllProfile(DorisParser.CleanAllProfileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCleanLabel(DorisParser.CleanLabelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCleanLabel(DorisParser.CleanLabelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshLdap(DorisParser.RefreshLdapContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshLdap(DorisParser.RefreshLdapContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCleanQueryStats(DorisParser.CleanQueryStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCleanQueryStats(DorisParser.CleanQueryStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelLoad(DorisParser.CancelLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelLoad(DorisParser.CancelLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelExport(DorisParser.CancelExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelExport(DorisParser.CancelExportContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelAlterTable(DorisParser.CancelAlterTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelAlterTable(DorisParser.CancelAlterTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelBackup(DorisParser.CancelBackupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelBackup(DorisParser.CancelBackupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCancelRestore(DorisParser.CancelRestoreContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCancelRestore(DorisParser.CancelRestoreContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminCompactTable(DorisParser.AdminCompactTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminCompactTable(DorisParser.AdminCompactTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRecoverDatabase(DorisParser.RecoverDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRecoverDatabase(DorisParser.RecoverDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRecoverTable(DorisParser.RecoverTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRecoverTable(DorisParser.RecoverTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRecoverPartition(DorisParser.RecoverPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRecoverPartition(DorisParser.RecoverPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminRepairTable(DorisParser.AdminRepairTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminRepairTable(DorisParser.AdminRepairTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBaseTableRef(DorisParser.BaseTableRefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBaseTableRef(DorisParser.BaseTableRefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWildWhere(DorisParser.WildWhereContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWildWhere(DorisParser.WildWhereContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransactionBegin(DorisParser.TransactionBeginContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransactionBegin(DorisParser.TransactionBeginContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTranscationCommit(DorisParser.TranscationCommitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTranscationCommit(DorisParser.TranscationCommitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransactionRollback(DorisParser.TransactionRollbackContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransactionRollback(DorisParser.TransactionRollbackContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGrantRole(DorisParser.GrantRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGrantRole(DorisParser.GrantRoleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrivilege(DorisParser.PrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrivilege(DorisParser.PrivilegeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrivilegeList(DorisParser.PrivilegeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrivilegeList(DorisParser.PrivilegeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterResource(DorisParser.AlterResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterResource(DorisParser.AlterResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterUser(DorisParser.AlterUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterUser(DorisParser.AlterUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddBackendClause(DorisParser.AddBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddBackendClause(DorisParser.AddBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropBackendClause(DorisParser.DropBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropBackendClause(DorisParser.DropBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddObserverClause(DorisParser.AddObserverClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddObserverClause(DorisParser.AddObserverClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropObserverClause(DorisParser.DropObserverClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropObserverClause(DorisParser.DropObserverClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddFollowerClause(DorisParser.AddFollowerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddFollowerClause(DorisParser.AddFollowerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropFollowerClause(DorisParser.DropFollowerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropFollowerClause(DorisParser.DropFollowerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddBrokerClause(DorisParser.AddBrokerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddBrokerClause(DorisParser.AddBrokerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropBrokerClause(DorisParser.DropBrokerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropBrokerClause(DorisParser.DropBrokerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropRollupClause(DorisParser.DropRollupClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropRollupClause(DorisParser.DropRollupClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddRollupClause(DorisParser.AddRollupClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddRollupClause(DorisParser.AddRollupClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddColumnClause(DorisParser.AddColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddColumnClause(DorisParser.AddColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddColumnsClause(DorisParser.AddColumnsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddColumnsClause(DorisParser.AddColumnsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropColumnClause(DorisParser.DropColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropColumnClause(DorisParser.DropColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddPartitionClause(DorisParser.AddPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddPartitionClause(DorisParser.AddPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropPartitionClause(DorisParser.DropPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropPartitionClause(DorisParser.DropPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameClause(DorisParser.RenameClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameClause(DorisParser.RenameClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameRollupClause(DorisParser.RenameRollupClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameRollupClause(DorisParser.RenameRollupClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRenameColumnClause(DorisParser.RenameColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRenameColumnClause(DorisParser.RenameColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAddIndexClause(DorisParser.AddIndexClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAddIndexClause(DorisParser.AddIndexClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropIndexClause(DorisParser.DropIndexClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropIndexClause(DorisParser.DropIndexClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnPosition(DorisParser.ColumnPositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnPosition(DorisParser.ColumnPositionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterToRollup(DorisParser.ToRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitToRollup(DorisParser.ToRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFromRollup(DorisParser.FromRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFromRollup(DorisParser.FromRollupContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropView(DorisParser.DropViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropView(DorisParser.DropViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropResource(DorisParser.DropResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropResource(DorisParser.DropResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropRowPolicy(DorisParser.DropRowPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropRowPolicy(DorisParser.DropRowPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropStage(DorisParser.DropStageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropStage(DorisParser.DropStageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowAnalyze(DorisParser.ShowAnalyzeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowAnalyze(DorisParser.ShowAnalyzeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnalyzeTable(DorisParser.AnalyzeTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnalyzeTable(DorisParser.AnalyzeTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterTableStats(DorisParser.AlterTableStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterTableStats(DorisParser.AlterTableStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAlterColumnStats(DorisParser.AlterColumnStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAlterColumnStats(DorisParser.AlterColumnStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropStats(DorisParser.DropStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropStats(DorisParser.DropStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropCachedStats(DorisParser.DropCachedStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropCachedStats(DorisParser.DropCachedStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropExpiredStats(DorisParser.DropExpiredStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropExpiredStats(DorisParser.DropExpiredStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowTableStats(DorisParser.ShowTableStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowTableStats(DorisParser.ShowTableStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowIndexStats(DorisParser.ShowIndexStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowIndexStats(DorisParser.ShowIndexStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowColumnStats(DorisParser.ShowColumnStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowColumnStats(DorisParser.ShowColumnStatsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateDatabase(DorisParser.CreateDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateDatabase(DorisParser.CreateDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateUser(DorisParser.CreateUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateUser(DorisParser.CreateUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateRepository(DorisParser.CreateRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateRepository(DorisParser.CreateRepositoryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateResource(DorisParser.CreateResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateResource(DorisParser.CreateResourceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateStorageVault(DorisParser.CreateStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateStorageVault(DorisParser.CreateStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCreateStage(DorisParser.CreateStageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCreateStage(DorisParser.CreateStageContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStorageBackend(DorisParser.StorageBackendContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStorageBackend(DorisParser.StorageBackendContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPasswordOption(DorisParser.PasswordOptionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPasswordOption(DorisParser.PasswordOptionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionArguments(DorisParser.FunctionArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionArguments(DorisParser.FunctionArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDataTypeList(DorisParser.DataTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDataTypeList(DorisParser.DataTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetOptions(DorisParser.SetOptionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetOptions(DorisParser.SetOptionsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetUserProperties(DorisParser.SetUserPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetUserProperties(DorisParser.SetUserPropertiesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetTransaction(DorisParser.SetTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetTransaction(DorisParser.SetTransactionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetNames(DorisParser.SetNamesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetNames(DorisParser.SetNamesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetCharset(DorisParser.SetCharsetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetCharset(DorisParser.SetCharsetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetCollate(DorisParser.SetCollateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetCollate(DorisParser.SetCollateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetPassword(DorisParser.SetPasswordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetPassword(DorisParser.SetPasswordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetSystemVariable(DorisParser.SetSystemVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetSystemVariable(DorisParser.SetSystemVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetUserVariable(DorisParser.SetUserVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetUserVariable(DorisParser.SetUserVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIsolationLevel(DorisParser.IsolationLevelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIsolationLevel(DorisParser.IsolationLevelContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchCatalog(DorisParser.SwitchCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchCatalog(DorisParser.SwitchCatalogContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUseDatabase(DorisParser.UseDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUseDatabase(DorisParser.UseDatabaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUseCloudCluster(DorisParser.UseCloudClusterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUseCloudCluster(DorisParser.UseCloudClusterContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTruncateTable(DorisParser.TruncateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTruncateTable(DorisParser.TruncateTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCopyInto(DorisParser.CopyIntoContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCopyInto(DorisParser.CopyIntoContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStageAndPattern(DorisParser.StageAndPatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStageAndPattern(DorisParser.StageAndPatternContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKillConnection(DorisParser.KillConnectionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKillConnection(DorisParser.KillConnectionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKillQuery(DorisParser.KillQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKillQuery(DorisParser.KillQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeTableAll(DorisParser.DescribeTableAllContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeTableAll(DorisParser.DescribeTableAllContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDescribeTable(DorisParser.DescribeTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDescribeTable(DorisParser.DescribeTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstraint(DorisParser.ConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstraint(DorisParser.ConstraintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionSpec(DorisParser.PartitionSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionSpec(DorisParser.PartitionSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionTable(DorisParser.PartitionTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionTable(DorisParser.PartitionTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDataDesc(DorisParser.DataDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDataDesc(DorisParser.DataDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementScope(DorisParser.StatementScopeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementScope(DorisParser.StatementScopeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBuildMode(DorisParser.BuildModeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBuildMode(DorisParser.BuildModeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshTrigger(DorisParser.RefreshTriggerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshTrigger(DorisParser.RefreshTriggerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshSchedule(DorisParser.RefreshScheduleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshSchedule(DorisParser.RefreshScheduleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRefreshMethod(DorisParser.RefreshMethodContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRefreshMethod(DorisParser.RefreshMethodContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMvPartition(DorisParser.MvPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMvPartition(DorisParser.MvPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierOrText(DorisParser.IdentifierOrTextContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierOrText(DorisParser.IdentifierOrTextContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUserIdentify(DorisParser.UserIdentifyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUserIdentify(DorisParser.UserIdentifyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplain(DorisParser.ExplainContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplain(DorisParser.ExplainContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExplainCommand(DorisParser.ExplainCommandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExplainCommand(DorisParser.ExplainCommandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPlanType(DorisParser.PlanTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPlanType(DorisParser.PlanTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplayCommand(DorisParser.ReplayCommandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplayCommand(DorisParser.ReplayCommandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplayType(DorisParser.ReplayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplayType(DorisParser.ReplayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMergeType(DorisParser.MergeTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMergeType(DorisParser.MergeTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPreFilterClause(DorisParser.PreFilterClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPreFilterClause(DorisParser.PreFilterClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeleteOnClause(DorisParser.DeleteOnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeleteOnClause(DorisParser.DeleteOnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSequenceColClause(DorisParser.SequenceColClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSequenceColClause(DorisParser.SequenceColClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColFromPath(DorisParser.ColFromPathContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColFromPath(DorisParser.ColFromPathContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColMappingList(DorisParser.ColMappingListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColMappingList(DorisParser.ColMappingListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMappingExpr(DorisParser.MappingExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMappingExpr(DorisParser.MappingExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResourceDesc(DorisParser.ResourceDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResourceDesc(DorisParser.ResourceDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMysqlDataDesc(DorisParser.MysqlDataDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMysqlDataDesc(DorisParser.MysqlDataDescContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSkipLines(DorisParser.SkipLinesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSkipLines(DorisParser.SkipLinesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOutFileClause(DorisParser.OutFileClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOutFileClause(DorisParser.OutFileClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuery(DorisParser.QueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuery(DorisParser.QueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryTermDefault(DorisParser.QueryTermDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryTermDefault(DorisParser.QueryTermDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetOperation(DorisParser.SetOperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetOperation(DorisParser.SetOperationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSetQuantifier(DorisParser.SetQuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSetQuantifier(DorisParser.SetQuantifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubquery(DorisParser.SubqueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubquery(DorisParser.SubqueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterValuesTable(DorisParser.ValuesTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitValuesTable(DorisParser.ValuesTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCte(DorisParser.CteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCte(DorisParser.CteContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAliasQuery(DorisParser.AliasQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAliasQuery(DorisParser.AliasQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnAliases(DorisParser.ColumnAliasesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnAliases(DorisParser.ColumnAliasesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectClause(DorisParser.SelectClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectClause(DorisParser.SelectClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectColumnClause(DorisParser.SelectColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectColumnClause(DorisParser.SelectColumnClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhereClause(DorisParser.WhereClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhereClause(DorisParser.WhereClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFromClause(DorisParser.FromClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFromClause(DorisParser.FromClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntoClause(DorisParser.IntoClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntoClause(DorisParser.IntoClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBulkCollectClause(DorisParser.BulkCollectClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBulkCollectClause(DorisParser.BulkCollectClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableRow(DorisParser.TableRowContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableRow(DorisParser.TableRowContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelations(DorisParser.RelationsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelations(DorisParser.RelationsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelation(DorisParser.RelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelation(DorisParser.RelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterJoinRelation(DorisParser.JoinRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitJoinRelation(DorisParser.JoinRelationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBracketRelationHint(DorisParser.BracketRelationHintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBracketRelationHint(DorisParser.BracketRelationHintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommentRelationHint(DorisParser.CommentRelationHintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommentRelationHint(DorisParser.CommentRelationHintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAggClause(DorisParser.AggClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAggClause(DorisParser.AggClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGroupingElement(DorisParser.GroupingElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGroupingElement(DorisParser.GroupingElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGroupingSet(DorisParser.GroupingSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGroupingSet(DorisParser.GroupingSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHavingClause(DorisParser.HavingClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHavingClause(DorisParser.HavingClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifyClause(DorisParser.QualifyClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifyClause(DorisParser.QualifyClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectHint(DorisParser.SelectHintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectHint(DorisParser.SelectHintContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHintStatement(DorisParser.HintStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHintStatement(DorisParser.HintStatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterHintAssignment(DorisParser.HintAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitHintAssignment(DorisParser.HintAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUpdateAssignment(DorisParser.UpdateAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUpdateAssignment(DorisParser.UpdateAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLateralView(DorisParser.LateralViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLateralView(DorisParser.LateralViewContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQueryOrganization(DorisParser.QueryOrganizationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQueryOrganization(DorisParser.QueryOrganizationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSortClause(DorisParser.SortClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSortClause(DorisParser.SortClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSortItem(DorisParser.SortItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSortItem(DorisParser.SortItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLimitClause(DorisParser.LimitClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLimitClause(DorisParser.LimitClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionClause(DorisParser.PartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionClause(DorisParser.PartitionClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterJoinType(DorisParser.JoinTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitJoinType(DorisParser.JoinTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterJoinCriteria(DorisParser.JoinCriteriaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitJoinCriteria(DorisParser.JoinCriteriaContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierList(DorisParser.IdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierList(DorisParser.IdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierSeq(DorisParser.IdentifierSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierSeq(DorisParser.IdentifierSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOptScanParams(DorisParser.OptScanParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOptScanParams(DorisParser.OptScanParamsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableName(DorisParser.TableNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableName(DorisParser.TableNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAliasedQuery(DorisParser.AliasedQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAliasedQuery(DorisParser.AliasedQueryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableValuedFunction(DorisParser.TableValuedFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableValuedFunction(DorisParser.TableValuedFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRelationList(DorisParser.RelationListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRelationList(DorisParser.RelationListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMaterializedViewName(DorisParser.MaterializedViewNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMaterializedViewName(DorisParser.MaterializedViewNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyClause(DorisParser.PropertyClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyClause(DorisParser.PropertyClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyItemList(DorisParser.PropertyItemListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyItemList(DorisParser.PropertyItemListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyItem(DorisParser.PropertyItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyItem(DorisParser.PropertyItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyKey(DorisParser.PropertyKeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyKey(DorisParser.PropertyKeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPropertyValue(DorisParser.PropertyValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPropertyValue(DorisParser.PropertyValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableAlias(DorisParser.TableAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableAlias(DorisParser.TableAliasContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnDefs(DorisParser.ColumnDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnDefs(DorisParser.ColumnDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnDef(DorisParser.ColumnDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnDef(DorisParser.ColumnDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIndexDefs(DorisParser.IndexDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIndexDefs(DorisParser.IndexDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIndexDef(DorisParser.IndexDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIndexDef(DorisParser.IndexDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionsDef(DorisParser.PartitionsDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionsDef(DorisParser.PartitionsDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionDef(DorisParser.PartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionDef(DorisParser.PartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStepPartitionDef(DorisParser.StepPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStepPartitionDef(DorisParser.StepPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInPartitionDef(DorisParser.InPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInPartitionDef(DorisParser.InPartitionDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionValueList(DorisParser.PartitionValueListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionValueList(DorisParser.PartitionValueListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPartitionValueDef(DorisParser.PartitionValueDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPartitionValueDef(DorisParser.PartitionValueDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRollupDefs(DorisParser.RollupDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRollupDefs(DorisParser.RollupDefsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRollupDef(DorisParser.RollupDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRollupDef(DorisParser.RollupDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAggTypeDef(DorisParser.AggTypeDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAggTypeDef(DorisParser.AggTypeDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTabletList(DorisParser.TabletListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTabletList(DorisParser.TabletListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInlineTable(DorisParser.InlineTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInlineTable(DorisParser.InlineTableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedExpression(DorisParser.NamedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedExpression(DorisParser.NamedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression(DorisParser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression(DorisParser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLambdaExpression(DorisParser.LambdaExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLambdaExpression(DorisParser.LambdaExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExist(DorisParser.ExistContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExist(DorisParser.ExistContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLogicalNot(DorisParser.LogicalNotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLogicalNot(DorisParser.LogicalNotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPredicated(DorisParser.PredicatedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredicated(DorisParser.PredicatedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIsnull(DorisParser.IsnullContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIsnull(DorisParser.IsnullContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIs_not_null_pred(DorisParser.Is_not_null_predContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIs_not_null_pred(DorisParser.Is_not_null_predContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLogicalBinary(DorisParser.LogicalBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLogicalBinary(DorisParser.LogicalBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDoublePipes(DorisParser.DoublePipesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDoublePipes(DorisParser.DoublePipesContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRowConstructor(DorisParser.RowConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRowConstructor(DorisParser.RowConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRowConstructorItem(DorisParser.RowConstructorItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRowConstructorItem(DorisParser.RowConstructorItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPredicate(DorisParser.PredicateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPredicate(DorisParser.PredicateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComparison(DorisParser.ComparisonContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComparison(DorisParser.ComparisonContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDereference(DorisParser.DereferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDereference(DorisParser.DereferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentDate(DorisParser.CurrentDateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentDate(DorisParser.CurrentDateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCast(DorisParser.CastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCast(DorisParser.CastContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUserVariable(DorisParser.UserVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUserVariable(DorisParser.UserVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementAt(DorisParser.ElementAtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementAt(DorisParser.ElementAtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLocalTimestamp(DorisParser.LocalTimestampContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLocalTimestamp(DorisParser.LocalTimestampContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCharFunction(DorisParser.CharFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCharFunction(DorisParser.CharFunctionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntervalLiteral(DorisParser.IntervalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntervalLiteral(DorisParser.IntervalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSimpleCase(DorisParser.SimpleCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSimpleCase(DorisParser.SimpleCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterColumnReference(DorisParser.ColumnReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitColumnReference(DorisParser.ColumnReferenceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStar(DorisParser.StarContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStar(DorisParser.StarContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSessionUser(DorisParser.SessionUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSessionUser(DorisParser.SessionUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConvertType(DorisParser.ConvertTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConvertType(DorisParser.ConvertTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConvertCharSet(DorisParser.ConvertCharSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConvertCharSet(DorisParser.ConvertCharSetContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSubqueryExpression(DorisParser.SubqueryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSubqueryExpression(DorisParser.SubqueryExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEncryptKey(DorisParser.EncryptKeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEncryptKey(DorisParser.EncryptKeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentTime(DorisParser.CurrentTimeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentTime(DorisParser.CurrentTimeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLocalTime(DorisParser.LocalTimeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLocalTime(DorisParser.LocalTimeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSystemVariable(DorisParser.SystemVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSystemVariable(DorisParser.SystemVariableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCollate(DorisParser.CollateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCollate(DorisParser.CollateContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentUser(DorisParser.CurrentUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentUser(DorisParser.CurrentUserContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstantDefault(DorisParser.ConstantDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstantDefault(DorisParser.ConstantDefaultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExtract(DorisParser.ExtractContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExtract(DorisParser.ExtractContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCurrentTimestamp(DorisParser.CurrentTimestampContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCurrentTimestamp(DorisParser.CurrentTimestampContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionCall(DorisParser.FunctionCallContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionCall(DorisParser.FunctionCallContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArraySlice(DorisParser.ArraySliceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArraySlice(DorisParser.ArraySliceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSearchedCase(DorisParser.SearchedCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSearchedCase(DorisParser.SearchedCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExcept(DorisParser.ExceptContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExcept(DorisParser.ExceptContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReplace(DorisParser.ReplaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReplace(DorisParser.ReplaceContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCastDataType(DorisParser.CastDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCastDataType(DorisParser.CastDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWindowSpec(DorisParser.WindowSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWindowSpec(DorisParser.WindowSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWindowFrame(DorisParser.WindowFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWindowFrame(DorisParser.WindowFrameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFrameUnits(DorisParser.FrameUnitsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFrameUnits(DorisParser.FrameUnitsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFrameBoundary(DorisParser.FrameBoundaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFrameBoundary(DorisParser.FrameBoundaryContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifiedName(DorisParser.QualifiedNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifiedName(DorisParser.QualifiedNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNullLiteral(DorisParser.NullLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNullLiteral(DorisParser.NullLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeConstructor(DorisParser.TypeConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeConstructor(DorisParser.TypeConstructorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumericLiteral(DorisParser.NumericLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumericLiteral(DorisParser.NumericLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBooleanLiteral(DorisParser.BooleanLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBooleanLiteral(DorisParser.BooleanLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStringLiteral(DorisParser.StringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStringLiteral(DorisParser.StringLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayLiteral(DorisParser.ArrayLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayLiteral(DorisParser.ArrayLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMapLiteral(DorisParser.MapLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMapLiteral(DorisParser.MapLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStructLiteral(DorisParser.StructLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStructLiteral(DorisParser.StructLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPlaceholder(DorisParser.PlaceholderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPlaceholder(DorisParser.PlaceholderContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComparisonOperator(DorisParser.ComparisonOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComparisonOperator(DorisParser.ComparisonOperatorContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBooleanValue(DorisParser.BooleanValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBooleanValue(DorisParser.BooleanValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterWhenClause(DorisParser.WhenClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitWhenClause(DorisParser.WhenClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterval(DorisParser.IntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterval(DorisParser.IntervalContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnitIdentifier(DorisParser.UnitIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnitIdentifier(DorisParser.UnitIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComplexDataType(DorisParser.ComplexDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComplexDataType(DorisParser.ComplexDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAggStateDataType(DorisParser.AggStateDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAggStateDataType(DorisParser.AggStateDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComplexColTypeList(DorisParser.ComplexColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComplexColTypeList(DorisParser.ComplexColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComplexColType(DorisParser.ComplexColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComplexColType(DorisParser.ComplexColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariantSubColType(DorisParser.VariantSubColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariantSubColType(DorisParser.VariantSubColTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommentSpec(DorisParser.CommentSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommentSpec(DorisParser.CommentSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSample(DorisParser.SampleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSample(DorisParser.SampleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleByPercentile(DorisParser.SampleByPercentileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleByPercentile(DorisParser.SampleByPercentileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSampleByRows(DorisParser.SampleByRowsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSampleByRows(DorisParser.SampleByRowsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTableSnapshot(DorisParser.TableSnapshotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTableSnapshot(DorisParser.TableSnapshotContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterErrorIdent(DorisParser.ErrorIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitErrorIdent(DorisParser.ErrorIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRealIdent(DorisParser.RealIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRealIdent(DorisParser.RealIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifier(DorisParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifier(DorisParser.IdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIntegerLiteral(DorisParser.IntegerLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIntegerLiteral(DorisParser.IntegerLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecimalLiteral(DorisParser.DecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecimalLiteral(DorisParser.DecimalLiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNonReserved(DorisParser.NonReservedContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNonReserved(DorisParser.NonReservedContext ctx) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java new file mode 100644 index 00000000000000..83b8a7b66bc0bf --- /dev/null +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java @@ -0,0 +1,6893 @@ +// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 by ANTLR 4.13.1 +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link DorisParser}. + */ +public interface DorisParserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link DorisParser#multiStatements}. + * @param ctx the parse tree + */ + void enterMultiStatements(DorisParser.MultiStatementsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#multiStatements}. + * @param ctx the parse tree + */ + void exitMultiStatements(DorisParser.MultiStatementsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#singleStatement}. + * @param ctx the parse tree + */ + void enterSingleStatement(DorisParser.SingleStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#singleStatement}. + * @param ctx the parse tree + */ + void exitSingleStatement(DorisParser.SingleStatementContext ctx); + /** + * Enter a parse tree produced by the {@code statementBaseAlias} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx); + /** + * Exit a parse tree produced by the {@code statementBaseAlias} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx); + /** + * Enter a parse tree produced by the {@code callProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterCallProcedure(DorisParser.CallProcedureContext ctx); + /** + * Exit a parse tree produced by the {@code callProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitCallProcedure(DorisParser.CallProcedureContext ctx); + /** + * Enter a parse tree produced by the {@code createProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterCreateProcedure(DorisParser.CreateProcedureContext ctx); + /** + * Exit a parse tree produced by the {@code createProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitCreateProcedure(DorisParser.CreateProcedureContext ctx); + /** + * Enter a parse tree produced by the {@code dropProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterDropProcedure(DorisParser.DropProcedureContext ctx); + /** + * Exit a parse tree produced by the {@code dropProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitDropProcedure(DorisParser.DropProcedureContext ctx); + /** + * Enter a parse tree produced by the {@code showProcedureStatus} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx); + /** + * Exit a parse tree produced by the {@code showProcedureStatus} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateProcedure} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx); + /** + * Enter a parse tree produced by the {@code showConfig} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void enterShowConfig(DorisParser.ShowConfigContext ctx); + /** + * Exit a parse tree produced by the {@code showConfig} + * labeled alternative in {@link DorisParser#statement}. + * @param ctx the parse tree + */ + void exitShowConfig(DorisParser.ShowConfigContext ctx); + /** + * Enter a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterStatementDefault(DorisParser.StatementDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code statementDefault} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitStatementDefault(DorisParser.StatementDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code supportedDmlStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedDmlStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedCreateStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedCreateStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedAlterStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedAlterStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code materializedViewStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code materializedViewStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedJobStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedJobStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code constraintStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code constraintStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedCleanStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedCleanStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedDescribeStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedDescribeStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedDropStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedDropStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedSetStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedSetStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedUnsetStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedUnsetStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedRefreshStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedRefreshStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedShowStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedShowStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedLoadStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedLoadStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedCancelStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedCancelStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedRecoverStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedRecoverStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedAdminStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedAdminStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedUseStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedUseStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedOtherStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedOtherStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code supportedStatsStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx); + /** + * Exit a parse tree produced by the {@code supportedStatsStatementAlias} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx); + /** + * Enter a parse tree produced by the {@code unsupported} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void enterUnsupported(DorisParser.UnsupportedContext ctx); + /** + * Exit a parse tree produced by the {@code unsupported} + * labeled alternative in {@link DorisParser#statementBase}. + * @param ctx the parse tree + */ + void exitUnsupported(DorisParser.UnsupportedContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#unsupportedStatement}. + * @param ctx the parse tree + */ + void enterUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#unsupportedStatement}. + * @param ctx the parse tree + */ + void exitUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx); + /** + * Enter a parse tree produced by the {@code createMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterCreateMTMV(DorisParser.CreateMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code createMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitCreateMTMV(DorisParser.CreateMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code refreshMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterRefreshMTMV(DorisParser.RefreshMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code refreshMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitRefreshMTMV(DorisParser.RefreshMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code alterMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterAlterMTMV(DorisParser.AlterMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code alterMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitAlterMTMV(DorisParser.AlterMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code dropMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterDropMTMV(DorisParser.DropMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code dropMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitDropMTMV(DorisParser.DropMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code pauseMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterPauseMTMV(DorisParser.PauseMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code pauseMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitPauseMTMV(DorisParser.PauseMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code resumeMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterResumeMTMV(DorisParser.ResumeMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code resumeMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitResumeMTMV(DorisParser.ResumeMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code cancelMTMVTask} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx); + /** + * Exit a parse tree produced by the {@code cancelMTMVTask} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void enterShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateMTMV} + * labeled alternative in {@link DorisParser#materializedViewStatement}. + * @param ctx the parse tree + */ + void exitShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx); + /** + * Enter a parse tree produced by the {@code createScheduledJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void enterCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx); + /** + * Exit a parse tree produced by the {@code createScheduledJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void exitCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx); + /** + * Enter a parse tree produced by the {@code pauseJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void enterPauseJob(DorisParser.PauseJobContext ctx); + /** + * Exit a parse tree produced by the {@code pauseJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void exitPauseJob(DorisParser.PauseJobContext ctx); + /** + * Enter a parse tree produced by the {@code dropJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void enterDropJob(DorisParser.DropJobContext ctx); + /** + * Exit a parse tree produced by the {@code dropJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void exitDropJob(DorisParser.DropJobContext ctx); + /** + * Enter a parse tree produced by the {@code resumeJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void enterResumeJob(DorisParser.ResumeJobContext ctx); + /** + * Exit a parse tree produced by the {@code resumeJob} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void exitResumeJob(DorisParser.ResumeJobContext ctx); + /** + * Enter a parse tree produced by the {@code cancelJobTask} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void enterCancelJobTask(DorisParser.CancelJobTaskContext ctx); + /** + * Exit a parse tree produced by the {@code cancelJobTask} + * labeled alternative in {@link DorisParser#supportedJobStatement}. + * @param ctx the parse tree + */ + void exitCancelJobTask(DorisParser.CancelJobTaskContext ctx); + /** + * Enter a parse tree produced by the {@code addConstraint} + * labeled alternative in {@link DorisParser#constraintStatement}. + * @param ctx the parse tree + */ + void enterAddConstraint(DorisParser.AddConstraintContext ctx); + /** + * Exit a parse tree produced by the {@code addConstraint} + * labeled alternative in {@link DorisParser#constraintStatement}. + * @param ctx the parse tree + */ + void exitAddConstraint(DorisParser.AddConstraintContext ctx); + /** + * Enter a parse tree produced by the {@code dropConstraint} + * labeled alternative in {@link DorisParser#constraintStatement}. + * @param ctx the parse tree + */ + void enterDropConstraint(DorisParser.DropConstraintContext ctx); + /** + * Exit a parse tree produced by the {@code dropConstraint} + * labeled alternative in {@link DorisParser#constraintStatement}. + * @param ctx the parse tree + */ + void exitDropConstraint(DorisParser.DropConstraintContext ctx); + /** + * Enter a parse tree produced by the {@code showConstraint} + * labeled alternative in {@link DorisParser#constraintStatement}. + * @param ctx the parse tree + */ + void enterShowConstraint(DorisParser.ShowConstraintContext ctx); + /** + * Exit a parse tree produced by the {@code showConstraint} + * labeled alternative in {@link DorisParser#constraintStatement}. + * @param ctx the parse tree + */ + void exitShowConstraint(DorisParser.ShowConstraintContext ctx); + /** + * Enter a parse tree produced by the {@code insertTable} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void enterInsertTable(DorisParser.InsertTableContext ctx); + /** + * Exit a parse tree produced by the {@code insertTable} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void exitInsertTable(DorisParser.InsertTableContext ctx); + /** + * Enter a parse tree produced by the {@code update} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void enterUpdate(DorisParser.UpdateContext ctx); + /** + * Exit a parse tree produced by the {@code update} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void exitUpdate(DorisParser.UpdateContext ctx); + /** + * Enter a parse tree produced by the {@code delete} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void enterDelete(DorisParser.DeleteContext ctx); + /** + * Exit a parse tree produced by the {@code delete} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void exitDelete(DorisParser.DeleteContext ctx); + /** + * Enter a parse tree produced by the {@code load} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void enterLoad(DorisParser.LoadContext ctx); + /** + * Exit a parse tree produced by the {@code load} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void exitLoad(DorisParser.LoadContext ctx); + /** + * Enter a parse tree produced by the {@code export} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void enterExport(DorisParser.ExportContext ctx); + /** + * Exit a parse tree produced by the {@code export} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void exitExport(DorisParser.ExportContext ctx); + /** + * Enter a parse tree produced by the {@code replay} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void enterReplay(DorisParser.ReplayContext ctx); + /** + * Exit a parse tree produced by the {@code replay} + * labeled alternative in {@link DorisParser#supportedDmlStatement}. + * @param ctx the parse tree + */ + void exitReplay(DorisParser.ReplayContext ctx); + /** + * Enter a parse tree produced by the {@code createTable} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateTable(DorisParser.CreateTableContext ctx); + /** + * Exit a parse tree produced by the {@code createTable} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateTable(DorisParser.CreateTableContext ctx); + /** + * Enter a parse tree produced by the {@code createView} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateView(DorisParser.CreateViewContext ctx); + /** + * Exit a parse tree produced by the {@code createView} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateView(DorisParser.CreateViewContext ctx); + /** + * Enter a parse tree produced by the {@code createFile} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateFile(DorisParser.CreateFileContext ctx); + /** + * Exit a parse tree produced by the {@code createFile} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateFile(DorisParser.CreateFileContext ctx); + /** + * Enter a parse tree produced by the {@code createTableLike} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateTableLike(DorisParser.CreateTableLikeContext ctx); + /** + * Exit a parse tree produced by the {@code createTableLike} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateTableLike(DorisParser.CreateTableLikeContext ctx); + /** + * Enter a parse tree produced by the {@code createRole} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateRole(DorisParser.CreateRoleContext ctx); + /** + * Exit a parse tree produced by the {@code createRole} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateRole(DorisParser.CreateRoleContext ctx); + /** + * Enter a parse tree produced by the {@code createWorkloadGroup} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx); + /** + * Exit a parse tree produced by the {@code createWorkloadGroup} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx); + /** + * Enter a parse tree produced by the {@code createCatalog} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateCatalog(DorisParser.CreateCatalogContext ctx); + /** + * Exit a parse tree produced by the {@code createCatalog} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateCatalog(DorisParser.CreateCatalogContext ctx); + /** + * Enter a parse tree produced by the {@code createRowPolicy} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx); + /** + * Exit a parse tree produced by the {@code createRowPolicy} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx); + /** + * Enter a parse tree produced by the {@code createStoragePolicy} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx); + /** + * Exit a parse tree produced by the {@code createStoragePolicy} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx); + /** + * Enter a parse tree produced by the {@code buildIndex} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterBuildIndex(DorisParser.BuildIndexContext ctx); + /** + * Exit a parse tree produced by the {@code buildIndex} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitBuildIndex(DorisParser.BuildIndexContext ctx); + /** + * Enter a parse tree produced by the {@code createIndex} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateIndex(DorisParser.CreateIndexContext ctx); + /** + * Exit a parse tree produced by the {@code createIndex} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateIndex(DorisParser.CreateIndexContext ctx); + /** + * Enter a parse tree produced by the {@code createSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx); + /** + * Exit a parse tree produced by the {@code createSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx); + /** + * Enter a parse tree produced by the {@code createEncryptkey} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx); + /** + * Exit a parse tree produced by the {@code createEncryptkey} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx); + /** + * Enter a parse tree produced by the {@code createUserDefineFunction} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code createUserDefineFunction} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code createAliasFunction} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code createAliasFunction} + * labeled alternative in {@link DorisParser#supportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code alterSystem} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterSystem(DorisParser.AlterSystemContext ctx); + /** + * Exit a parse tree produced by the {@code alterSystem} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterSystem(DorisParser.AlterSystemContext ctx); + /** + * Enter a parse tree produced by the {@code alterView} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterView(DorisParser.AlterViewContext ctx); + /** + * Exit a parse tree produced by the {@code alterView} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterView(DorisParser.AlterViewContext ctx); + /** + * Enter a parse tree produced by the {@code alterCatalogRename} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx); + /** + * Exit a parse tree produced by the {@code alterCatalogRename} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx); + /** + * Enter a parse tree produced by the {@code alterRole} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterRole(DorisParser.AlterRoleContext ctx); + /** + * Exit a parse tree produced by the {@code alterRole} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterRole(DorisParser.AlterRoleContext ctx); + /** + * Enter a parse tree produced by the {@code alterStorageVault} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterStorageVault(DorisParser.AlterStorageVaultContext ctx); + /** + * Exit a parse tree produced by the {@code alterStorageVault} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterStorageVault(DorisParser.AlterStorageVaultContext ctx); + /** + * Enter a parse tree produced by the {@code alterWorkloadGroup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx); + /** + * Exit a parse tree produced by the {@code alterWorkloadGroup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx); + /** + * Enter a parse tree produced by the {@code alterCatalogProperties} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code alterCatalogProperties} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code alterWorkloadPolicy} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx); + /** + * Exit a parse tree produced by the {@code alterWorkloadPolicy} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx); + /** + * Enter a parse tree produced by the {@code alterSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx); + /** + * Exit a parse tree produced by the {@code alterSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx); + /** + * Enter a parse tree produced by the {@code alterCatalogComment} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx); + /** + * Exit a parse tree produced by the {@code alterCatalogComment} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx); + /** + * Enter a parse tree produced by the {@code alterDatabaseRename} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx); + /** + * Exit a parse tree produced by the {@code alterDatabaseRename} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx); + /** + * Enter a parse tree produced by the {@code alterTable} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterTable(DorisParser.AlterTableContext ctx); + /** + * Exit a parse tree produced by the {@code alterTable} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterTable(DorisParser.AlterTableContext ctx); + /** + * Enter a parse tree produced by the {@code alterTableAddRollup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx); + /** + * Exit a parse tree produced by the {@code alterTableAddRollup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx); + /** + * Enter a parse tree produced by the {@code alterTableDropRollup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx); + /** + * Exit a parse tree produced by the {@code alterTableDropRollup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx); + /** + * Enter a parse tree produced by the {@code alterTableProperties} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code alterTableProperties} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code alterDatabaseSetQuota} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx); + /** + * Exit a parse tree produced by the {@code alterDatabaseSetQuota} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx); + /** + * Enter a parse tree produced by the {@code alterSystemRenameComputeGroup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx); + /** + * Exit a parse tree produced by the {@code alterSystemRenameComputeGroup} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx); + /** + * Enter a parse tree produced by the {@code alterRepository} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterRepository(DorisParser.AlterRepositoryContext ctx); + /** + * Exit a parse tree produced by the {@code alterRepository} + * labeled alternative in {@link DorisParser#supportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterRepository(DorisParser.AlterRepositoryContext ctx); + /** + * Enter a parse tree produced by the {@code dropCatalogRecycleBin} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx); + /** + * Exit a parse tree produced by the {@code dropCatalogRecycleBin} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx); + /** + * Enter a parse tree produced by the {@code dropEncryptkey} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropEncryptkey(DorisParser.DropEncryptkeyContext ctx); + /** + * Exit a parse tree produced by the {@code dropEncryptkey} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropEncryptkey(DorisParser.DropEncryptkeyContext ctx); + /** + * Enter a parse tree produced by the {@code dropRole} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropRole(DorisParser.DropRoleContext ctx); + /** + * Exit a parse tree produced by the {@code dropRole} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropRole(DorisParser.DropRoleContext ctx); + /** + * Enter a parse tree produced by the {@code dropSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx); + /** + * Exit a parse tree produced by the {@code dropSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx); + /** + * Enter a parse tree produced by the {@code dropUser} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropUser(DorisParser.DropUserContext ctx); + /** + * Exit a parse tree produced by the {@code dropUser} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropUser(DorisParser.DropUserContext ctx); + /** + * Enter a parse tree produced by the {@code dropStoragePolicy} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx); + /** + * Exit a parse tree produced by the {@code dropStoragePolicy} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx); + /** + * Enter a parse tree produced by the {@code dropWorkloadGroup} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx); + /** + * Exit a parse tree produced by the {@code dropWorkloadGroup} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx); + /** + * Enter a parse tree produced by the {@code dropCatalog} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropCatalog(DorisParser.DropCatalogContext ctx); + /** + * Exit a parse tree produced by the {@code dropCatalog} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropCatalog(DorisParser.DropCatalogContext ctx); + /** + * Enter a parse tree produced by the {@code dropFile} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropFile(DorisParser.DropFileContext ctx); + /** + * Exit a parse tree produced by the {@code dropFile} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropFile(DorisParser.DropFileContext ctx); + /** + * Enter a parse tree produced by the {@code dropWorkloadPolicy} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx); + /** + * Exit a parse tree produced by the {@code dropWorkloadPolicy} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx); + /** + * Enter a parse tree produced by the {@code dropRepository} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropRepository(DorisParser.DropRepositoryContext ctx); + /** + * Exit a parse tree produced by the {@code dropRepository} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropRepository(DorisParser.DropRepositoryContext ctx); + /** + * Enter a parse tree produced by the {@code dropTable} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropTable(DorisParser.DropTableContext ctx); + /** + * Exit a parse tree produced by the {@code dropTable} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropTable(DorisParser.DropTableContext ctx); + /** + * Enter a parse tree produced by the {@code dropDatabase} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropDatabase(DorisParser.DropDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code dropDatabase} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropDatabase(DorisParser.DropDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropFunction(DorisParser.DropFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code dropFunction} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropFunction(DorisParser.DropFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code dropIndex} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropIndex(DorisParser.DropIndexContext ctx); + /** + * Exit a parse tree produced by the {@code dropIndex} + * labeled alternative in {@link DorisParser#supportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropIndex(DorisParser.DropIndexContext ctx); + /** + * Enter a parse tree produced by the {@code showVariables} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowVariables(DorisParser.ShowVariablesContext ctx); + /** + * Exit a parse tree produced by the {@code showVariables} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowVariables(DorisParser.ShowVariablesContext ctx); + /** + * Enter a parse tree produced by the {@code showAuthors} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowAuthors(DorisParser.ShowAuthorsContext ctx); + /** + * Exit a parse tree produced by the {@code showAuthors} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowAuthors(DorisParser.ShowAuthorsContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateDatabase} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateDatabase} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code showBroker} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowBroker(DorisParser.ShowBrokerContext ctx); + /** + * Exit a parse tree produced by the {@code showBroker} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowBroker(DorisParser.ShowBrokerContext ctx); + /** + * Enter a parse tree produced by the {@code showDynamicPartition} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx); + /** + * Exit a parse tree produced by the {@code showDynamicPartition} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx); + /** + * Enter a parse tree produced by the {@code showEvents} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowEvents(DorisParser.ShowEventsContext ctx); + /** + * Exit a parse tree produced by the {@code showEvents} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowEvents(DorisParser.ShowEventsContext ctx); + /** + * Enter a parse tree produced by the {@code showLastInsert} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowLastInsert(DorisParser.ShowLastInsertContext ctx); + /** + * Exit a parse tree produced by the {@code showLastInsert} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowLastInsert(DorisParser.ShowLastInsertContext ctx); + /** + * Enter a parse tree produced by the {@code showCharset} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCharset(DorisParser.ShowCharsetContext ctx); + /** + * Exit a parse tree produced by the {@code showCharset} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCharset(DorisParser.ShowCharsetContext ctx); + /** + * Enter a parse tree produced by the {@code showDelete} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDelete(DorisParser.ShowDeleteContext ctx); + /** + * Exit a parse tree produced by the {@code showDelete} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDelete(DorisParser.ShowDeleteContext ctx); + /** + * Enter a parse tree produced by the {@code showGrants} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowGrants(DorisParser.ShowGrantsContext ctx); + /** + * Exit a parse tree produced by the {@code showGrants} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowGrants(DorisParser.ShowGrantsContext ctx); + /** + * Enter a parse tree produced by the {@code showGrantsForUser} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx); + /** + * Exit a parse tree produced by the {@code showGrantsForUser} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx); + /** + * Enter a parse tree produced by the {@code showSyncJob} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowSyncJob(DorisParser.ShowSyncJobContext ctx); + /** + * Exit a parse tree produced by the {@code showSyncJob} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowSyncJob(DorisParser.ShowSyncJobContext ctx); + /** + * Enter a parse tree produced by the {@code showLoadProfile} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowLoadProfile(DorisParser.ShowLoadProfileContext ctx); + /** + * Exit a parse tree produced by the {@code showLoadProfile} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowLoadProfile(DorisParser.ShowLoadProfileContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateRepository} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateRepository} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx); + /** + * Enter a parse tree produced by the {@code showView} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowView(DorisParser.ShowViewContext ctx); + /** + * Exit a parse tree produced by the {@code showView} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowView(DorisParser.ShowViewContext ctx); + /** + * Enter a parse tree produced by the {@code showPlugins} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowPlugins(DorisParser.ShowPluginsContext ctx); + /** + * Exit a parse tree produced by the {@code showPlugins} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowPlugins(DorisParser.ShowPluginsContext ctx); + /** + * Enter a parse tree produced by the {@code showRepositories} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowRepositories(DorisParser.ShowRepositoriesContext ctx); + /** + * Exit a parse tree produced by the {@code showRepositories} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowRepositories(DorisParser.ShowRepositoriesContext ctx); + /** + * Enter a parse tree produced by the {@code showEncryptKeys} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx); + /** + * Exit a parse tree produced by the {@code showEncryptKeys} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateTable(DorisParser.ShowCreateTableContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateTable} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateTable(DorisParser.ShowCreateTableContext ctx); + /** + * Enter a parse tree produced by the {@code showProcessList} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowProcessList(DorisParser.ShowProcessListContext ctx); + /** + * Exit a parse tree produced by the {@code showProcessList} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowProcessList(DorisParser.ShowProcessListContext ctx); + /** + * Enter a parse tree produced by the {@code showRoles} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowRoles(DorisParser.ShowRolesContext ctx); + /** + * Exit a parse tree produced by the {@code showRoles} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowRoles(DorisParser.ShowRolesContext ctx); + /** + * Enter a parse tree produced by the {@code showPartitionId} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowPartitionId(DorisParser.ShowPartitionIdContext ctx); + /** + * Exit a parse tree produced by the {@code showPartitionId} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowPartitionId(DorisParser.ShowPartitionIdContext ctx); + /** + * Enter a parse tree produced by the {@code showPrivileges} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowPrivileges(DorisParser.ShowPrivilegesContext ctx); + /** + * Exit a parse tree produced by the {@code showPrivileges} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowPrivileges(DorisParser.ShowPrivilegesContext ctx); + /** + * Enter a parse tree produced by the {@code showProc} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowProc(DorisParser.ShowProcContext ctx); + /** + * Exit a parse tree produced by the {@code showProc} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowProc(DorisParser.ShowProcContext ctx); + /** + * Enter a parse tree produced by the {@code showSmallFiles} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowSmallFiles(DorisParser.ShowSmallFilesContext ctx); + /** + * Exit a parse tree produced by the {@code showSmallFiles} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowSmallFiles(DorisParser.ShowSmallFilesContext ctx); + /** + * Enter a parse tree produced by the {@code showStorageEngines} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx); + /** + * Exit a parse tree produced by the {@code showStorageEngines} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateCatalog} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateCatalog} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx); + /** + * Enter a parse tree produced by the {@code showCatalog} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCatalog(DorisParser.ShowCatalogContext ctx); + /** + * Exit a parse tree produced by the {@code showCatalog} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCatalog(DorisParser.ShowCatalogContext ctx); + /** + * Enter a parse tree produced by the {@code showCatalogs} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCatalogs(DorisParser.ShowCatalogsContext ctx); + /** + * Exit a parse tree produced by the {@code showCatalogs} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCatalogs(DorisParser.ShowCatalogsContext ctx); + /** + * Enter a parse tree produced by the {@code showUserProperties} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowUserProperties(DorisParser.ShowUserPropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code showUserProperties} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowUserProperties(DorisParser.ShowUserPropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code showAllProperties} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowAllProperties(DorisParser.ShowAllPropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code showAllProperties} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowAllProperties(DorisParser.ShowAllPropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code showCollation} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCollation(DorisParser.ShowCollationContext ctx); + /** + * Exit a parse tree produced by the {@code showCollation} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCollation(DorisParser.ShowCollationContext ctx); + /** + * Enter a parse tree produced by the {@code showStoragePolicy} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx); + /** + * Exit a parse tree produced by the {@code showStoragePolicy} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx); + /** + * Enter a parse tree produced by the {@code showSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx); + /** + * Exit a parse tree produced by the {@code showSqlBlockRule} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateView} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateView(DorisParser.ShowCreateViewContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateView} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateView(DorisParser.ShowCreateViewContext ctx); + /** + * Enter a parse tree produced by the {@code showDataTypes} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDataTypes(DorisParser.ShowDataTypesContext ctx); + /** + * Exit a parse tree produced by the {@code showDataTypes} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDataTypes(DorisParser.ShowDataTypesContext ctx); + /** + * Enter a parse tree produced by the {@code showData} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowData(DorisParser.ShowDataContext ctx); + /** + * Exit a parse tree produced by the {@code showData} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowData(DorisParser.ShowDataContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateMaterializedView} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateMaterializedView} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx); + /** + * Enter a parse tree produced by the {@code showWarningErrors} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx); + /** + * Exit a parse tree produced by the {@code showWarningErrors} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx); + /** + * Enter a parse tree produced by the {@code showWarningErrorCount} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx); + /** + * Exit a parse tree produced by the {@code showWarningErrorCount} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx); + /** + * Enter a parse tree produced by the {@code showBackends} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowBackends(DorisParser.ShowBackendsContext ctx); + /** + * Exit a parse tree produced by the {@code showBackends} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowBackends(DorisParser.ShowBackendsContext ctx); + /** + * Enter a parse tree produced by the {@code showStages} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowStages(DorisParser.ShowStagesContext ctx); + /** + * Exit a parse tree produced by the {@code showStages} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowStages(DorisParser.ShowStagesContext ctx); + /** + * Enter a parse tree produced by the {@code showReplicaDistribution} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx); + /** + * Exit a parse tree produced by the {@code showReplicaDistribution} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx); + /** + * Enter a parse tree produced by the {@code showTriggers} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTriggers(DorisParser.ShowTriggersContext ctx); + /** + * Exit a parse tree produced by the {@code showTriggers} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTriggers(DorisParser.ShowTriggersContext ctx); + /** + * Enter a parse tree produced by the {@code showDiagnoseTablet} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx); + /** + * Exit a parse tree produced by the {@code showDiagnoseTablet} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx); + /** + * Enter a parse tree produced by the {@code showFrontends} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowFrontends(DorisParser.ShowFrontendsContext ctx); + /** + * Exit a parse tree produced by the {@code showFrontends} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowFrontends(DorisParser.ShowFrontendsContext ctx); + /** + * Enter a parse tree produced by the {@code showDatabaseId} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx); + /** + * Exit a parse tree produced by the {@code showDatabaseId} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx); + /** + * Enter a parse tree produced by the {@code showTableId} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTableId(DorisParser.ShowTableIdContext ctx); + /** + * Exit a parse tree produced by the {@code showTableId} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTableId(DorisParser.ShowTableIdContext ctx); + /** + * Enter a parse tree produced by the {@code showTrash} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTrash(DorisParser.ShowTrashContext ctx); + /** + * Exit a parse tree produced by the {@code showTrash} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTrash(DorisParser.ShowTrashContext ctx); + /** + * Enter a parse tree produced by the {@code showStatus} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowStatus(DorisParser.ShowStatusContext ctx); + /** + * Exit a parse tree produced by the {@code showStatus} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowStatus(DorisParser.ShowStatusContext ctx); + /** + * Enter a parse tree produced by the {@code showWhitelist} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowWhitelist(DorisParser.ShowWhitelistContext ctx); + /** + * Exit a parse tree produced by the {@code showWhitelist} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowWhitelist(DorisParser.ShowWhitelistContext ctx); + /** + * Enter a parse tree produced by the {@code showTabletsBelong} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx); + /** + * Exit a parse tree produced by the {@code showTabletsBelong} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx); + /** + * Enter a parse tree produced by the {@code showDataSkew} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDataSkew(DorisParser.ShowDataSkewContext ctx); + /** + * Exit a parse tree produced by the {@code showDataSkew} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDataSkew(DorisParser.ShowDataSkewContext ctx); + /** + * Enter a parse tree produced by the {@code showTableCreation} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTableCreation(DorisParser.ShowTableCreationContext ctx); + /** + * Exit a parse tree produced by the {@code showTableCreation} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTableCreation(DorisParser.ShowTableCreationContext ctx); + /** + * Enter a parse tree produced by the {@code showTabletStorageFormat} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx); + /** + * Exit a parse tree produced by the {@code showTabletStorageFormat} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx); + /** + * Enter a parse tree produced by the {@code showQueryProfile} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowQueryProfile(DorisParser.ShowQueryProfileContext ctx); + /** + * Exit a parse tree produced by the {@code showQueryProfile} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowQueryProfile(DorisParser.ShowQueryProfileContext ctx); + /** + * Enter a parse tree produced by the {@code showConvertLsc} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowConvertLsc(DorisParser.ShowConvertLscContext ctx); + /** + * Exit a parse tree produced by the {@code showConvertLsc} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowConvertLsc(DorisParser.ShowConvertLscContext ctx); + /** + * Enter a parse tree produced by the {@code showTables} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTables(DorisParser.ShowTablesContext ctx); + /** + * Exit a parse tree produced by the {@code showTables} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTables(DorisParser.ShowTablesContext ctx); + /** + * Enter a parse tree produced by the {@code showTableStatus} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTableStatus(DorisParser.ShowTableStatusContext ctx); + /** + * Exit a parse tree produced by the {@code showTableStatus} + * labeled alternative in {@link DorisParser#supportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTableStatus(DorisParser.ShowTableStatusContext ctx); + /** + * Enter a parse tree produced by the {@code sync} + * labeled alternative in {@link DorisParser#supportedLoadStatement}. + * @param ctx the parse tree + */ + void enterSync(DorisParser.SyncContext ctx); + /** + * Exit a parse tree produced by the {@code sync} + * labeled alternative in {@link DorisParser#supportedLoadStatement}. + * @param ctx the parse tree + */ + void exitSync(DorisParser.SyncContext ctx); + /** + * Enter a parse tree produced by the {@code createRoutineLoadAlias} + * labeled alternative in {@link DorisParser#supportedLoadStatement}. + * @param ctx the parse tree + */ + void enterCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx); + /** + * Exit a parse tree produced by the {@code createRoutineLoadAlias} + * labeled alternative in {@link DorisParser#supportedLoadStatement}. + * @param ctx the parse tree + */ + void exitCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx); + /** + * Enter a parse tree produced by the {@code help} + * labeled alternative in {@link DorisParser#supportedOtherStatement}. + * @param ctx the parse tree + */ + void enterHelp(DorisParser.HelpContext ctx); + /** + * Exit a parse tree produced by the {@code help} + * labeled alternative in {@link DorisParser#supportedOtherStatement}. + * @param ctx the parse tree + */ + void exitHelp(DorisParser.HelpContext ctx); + /** + * Enter a parse tree produced by the {@code installPlugin} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterInstallPlugin(DorisParser.InstallPluginContext ctx); + /** + * Exit a parse tree produced by the {@code installPlugin} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitInstallPlugin(DorisParser.InstallPluginContext ctx); + /** + * Enter a parse tree produced by the {@code uninstallPlugin} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterUninstallPlugin(DorisParser.UninstallPluginContext ctx); + /** + * Exit a parse tree produced by the {@code uninstallPlugin} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitUninstallPlugin(DorisParser.UninstallPluginContext ctx); + /** + * Enter a parse tree produced by the {@code lockTables} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterLockTables(DorisParser.LockTablesContext ctx); + /** + * Exit a parse tree produced by the {@code lockTables} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitLockTables(DorisParser.LockTablesContext ctx); + /** + * Enter a parse tree produced by the {@code unlockTables} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterUnlockTables(DorisParser.UnlockTablesContext ctx); + /** + * Exit a parse tree produced by the {@code unlockTables} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitUnlockTables(DorisParser.UnlockTablesContext ctx); + /** + * Enter a parse tree produced by the {@code warmUpCluster} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterWarmUpCluster(DorisParser.WarmUpClusterContext ctx); + /** + * Exit a parse tree produced by the {@code warmUpCluster} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitWarmUpCluster(DorisParser.WarmUpClusterContext ctx); + /** + * Enter a parse tree produced by the {@code backup} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterBackup(DorisParser.BackupContext ctx); + /** + * Exit a parse tree produced by the {@code backup} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitBackup(DorisParser.BackupContext ctx); + /** + * Enter a parse tree produced by the {@code restore} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterRestore(DorisParser.RestoreContext ctx); + /** + * Exit a parse tree produced by the {@code restore} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitRestore(DorisParser.RestoreContext ctx); + /** + * Enter a parse tree produced by the {@code unsupportedStartTransaction} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void enterUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx); + /** + * Exit a parse tree produced by the {@code unsupportedStartTransaction} + * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. + * @param ctx the parse tree + */ + void exitUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#warmUpItem}. + * @param ctx the parse tree + */ + void enterWarmUpItem(DorisParser.WarmUpItemContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#warmUpItem}. + * @param ctx the parse tree + */ + void exitWarmUpItem(DorisParser.WarmUpItemContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#lockTable}. + * @param ctx the parse tree + */ + void enterLockTable(DorisParser.LockTableContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#lockTable}. + * @param ctx the parse tree + */ + void exitLockTable(DorisParser.LockTableContext ctx); + /** + * Enter a parse tree produced by the {@code showRowPolicy} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowRowPolicy(DorisParser.ShowRowPolicyContext ctx); + /** + * Exit a parse tree produced by the {@code showRowPolicy} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowRowPolicy(DorisParser.ShowRowPolicyContext ctx); + /** + * Enter a parse tree produced by the {@code showStorageVault} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowStorageVault(DorisParser.ShowStorageVaultContext ctx); + /** + * Exit a parse tree produced by the {@code showStorageVault} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowStorageVault(DorisParser.ShowStorageVaultContext ctx); + /** + * Enter a parse tree produced by the {@code showOpenTables} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowOpenTables(DorisParser.ShowOpenTablesContext ctx); + /** + * Exit a parse tree produced by the {@code showOpenTables} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowOpenTables(DorisParser.ShowOpenTablesContext ctx); + /** + * Enter a parse tree produced by the {@code showViews} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowViews(DorisParser.ShowViewsContext ctx); + /** + * Exit a parse tree produced by the {@code showViews} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowViews(DorisParser.ShowViewsContext ctx); + /** + * Enter a parse tree produced by the {@code showMaterializedView} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx); + /** + * Exit a parse tree produced by the {@code showMaterializedView} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateFunction} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateFunction} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code showDatabases} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowDatabases(DorisParser.ShowDatabasesContext ctx); + /** + * Exit a parse tree produced by the {@code showDatabases} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowDatabases(DorisParser.ShowDatabasesContext ctx); + /** + * Enter a parse tree produced by the {@code showColumns} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowColumns(DorisParser.ShowColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code showColumns} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowColumns(DorisParser.ShowColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code showLoadWarings} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx); + /** + * Exit a parse tree produced by the {@code showLoadWarings} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx); + /** + * Enter a parse tree produced by the {@code showLoad} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowLoad(DorisParser.ShowLoadContext ctx); + /** + * Exit a parse tree produced by the {@code showLoad} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowLoad(DorisParser.ShowLoadContext ctx); + /** + * Enter a parse tree produced by the {@code showExport} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowExport(DorisParser.ShowExportContext ctx); + /** + * Exit a parse tree produced by the {@code showExport} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowExport(DorisParser.ShowExportContext ctx); + /** + * Enter a parse tree produced by the {@code showAlterTable} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowAlterTable(DorisParser.ShowAlterTableContext ctx); + /** + * Exit a parse tree produced by the {@code showAlterTable} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowAlterTable(DorisParser.ShowAlterTableContext ctx); + /** + * Enter a parse tree produced by the {@code showPartitions} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowPartitions(DorisParser.ShowPartitionsContext ctx); + /** + * Exit a parse tree produced by the {@code showPartitions} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowPartitions(DorisParser.ShowPartitionsContext ctx); + /** + * Enter a parse tree produced by the {@code showTabletId} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTabletId(DorisParser.ShowTabletIdContext ctx); + /** + * Exit a parse tree produced by the {@code showTabletId} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTabletId(DorisParser.ShowTabletIdContext ctx); + /** + * Enter a parse tree produced by the {@code showTabletsFromTable} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx); + /** + * Exit a parse tree produced by the {@code showTabletsFromTable} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx); + /** + * Enter a parse tree produced by the {@code showBackup} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowBackup(DorisParser.ShowBackupContext ctx); + /** + * Exit a parse tree produced by the {@code showBackup} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowBackup(DorisParser.ShowBackupContext ctx); + /** + * Enter a parse tree produced by the {@code showRestore} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowRestore(DorisParser.ShowRestoreContext ctx); + /** + * Exit a parse tree produced by the {@code showRestore} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowRestore(DorisParser.ShowRestoreContext ctx); + /** + * Enter a parse tree produced by the {@code showResources} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowResources(DorisParser.ShowResourcesContext ctx); + /** + * Exit a parse tree produced by the {@code showResources} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowResources(DorisParser.ShowResourcesContext ctx); + /** + * Enter a parse tree produced by the {@code showWorkloadGroups} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx); + /** + * Exit a parse tree produced by the {@code showWorkloadGroups} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx); + /** + * Enter a parse tree produced by the {@code showSnapshot} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowSnapshot(DorisParser.ShowSnapshotContext ctx); + /** + * Exit a parse tree produced by the {@code showSnapshot} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowSnapshot(DorisParser.ShowSnapshotContext ctx); + /** + * Enter a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowFunctions(DorisParser.ShowFunctionsContext ctx); + /** + * Exit a parse tree produced by the {@code showFunctions} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowFunctions(DorisParser.ShowFunctionsContext ctx); + /** + * Enter a parse tree produced by the {@code showGlobalFunctions} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx); + /** + * Exit a parse tree produced by the {@code showGlobalFunctions} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx); + /** + * Enter a parse tree produced by the {@code showTypeCast} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTypeCast(DorisParser.ShowTypeCastContext ctx); + /** + * Exit a parse tree produced by the {@code showTypeCast} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTypeCast(DorisParser.ShowTypeCastContext ctx); + /** + * Enter a parse tree produced by the {@code showIndex} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowIndex(DorisParser.ShowIndexContext ctx); + /** + * Exit a parse tree produced by the {@code showIndex} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowIndex(DorisParser.ShowIndexContext ctx); + /** + * Enter a parse tree produced by the {@code showTransaction} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowTransaction(DorisParser.ShowTransactionContext ctx); + /** + * Exit a parse tree produced by the {@code showTransaction} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowTransaction(DorisParser.ShowTransactionContext ctx); + /** + * Enter a parse tree produced by the {@code showCacheHotSpot} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx); + /** + * Exit a parse tree produced by the {@code showCacheHotSpot} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx); + /** + * Enter a parse tree produced by the {@code showCatalogRecycleBin} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx); + /** + * Exit a parse tree produced by the {@code showCatalogRecycleBin} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx); + /** + * Enter a parse tree produced by the {@code showQueryStats} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowQueryStats(DorisParser.ShowQueryStatsContext ctx); + /** + * Exit a parse tree produced by the {@code showQueryStats} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowQueryStats(DorisParser.ShowQueryStatsContext ctx); + /** + * Enter a parse tree produced by the {@code showBuildIndex} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowBuildIndex(DorisParser.ShowBuildIndexContext ctx); + /** + * Exit a parse tree produced by the {@code showBuildIndex} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowBuildIndex(DorisParser.ShowBuildIndexContext ctx); + /** + * Enter a parse tree produced by the {@code showClusters} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowClusters(DorisParser.ShowClustersContext ctx); + /** + * Exit a parse tree produced by the {@code showClusters} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowClusters(DorisParser.ShowClustersContext ctx); + /** + * Enter a parse tree produced by the {@code showReplicaStatus} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx); + /** + * Exit a parse tree produced by the {@code showReplicaStatus} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx); + /** + * Enter a parse tree produced by the {@code showCopy} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowCopy(DorisParser.ShowCopyContext ctx); + /** + * Exit a parse tree produced by the {@code showCopy} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowCopy(DorisParser.ShowCopyContext ctx); + /** + * Enter a parse tree produced by the {@code showWarmUpJob} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void enterShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx); + /** + * Exit a parse tree produced by the {@code showWarmUpJob} + * labeled alternative in {@link DorisParser#unsupportedShowStatement}. + * @param ctx the parse tree + */ + void exitShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#createRoutineLoad}. + * @param ctx the parse tree + */ + void enterCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#createRoutineLoad}. + * @param ctx the parse tree + */ + void exitCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code mysqlLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterMysqlLoad(DorisParser.MysqlLoadContext ctx); + /** + * Exit a parse tree produced by the {@code mysqlLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitMysqlLoad(DorisParser.MysqlLoadContext ctx); + /** + * Enter a parse tree produced by the {@code createDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx); + /** + * Exit a parse tree produced by the {@code createDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx); + /** + * Enter a parse tree produced by the {@code stopDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx); + /** + * Exit a parse tree produced by the {@code stopDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx); + /** + * Enter a parse tree produced by the {@code resumeDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx); + /** + * Exit a parse tree produced by the {@code resumeDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx); + /** + * Enter a parse tree produced by the {@code pauseDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx); + /** + * Exit a parse tree produced by the {@code pauseDataSyncJob} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx); + /** + * Enter a parse tree produced by the {@code pauseRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code pauseRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code pauseAllRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code pauseAllRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code resumeRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code resumeRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code resumeAllRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code resumeAllRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code stopRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code stopRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code showRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code showRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code showRoutineLoadTask} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx); + /** + * Exit a parse tree produced by the {@code showRoutineLoadTask} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code showCreateLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void enterShowCreateLoad(DorisParser.ShowCreateLoadContext ctx); + /** + * Exit a parse tree produced by the {@code showCreateLoad} + * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. + * @param ctx the parse tree + */ + void exitShowCreateLoad(DorisParser.ShowCreateLoadContext ctx); + /** + * Enter a parse tree produced by the {@code separator} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterSeparator(DorisParser.SeparatorContext ctx); + /** + * Exit a parse tree produced by the {@code separator} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitSeparator(DorisParser.SeparatorContext ctx); + /** + * Enter a parse tree produced by the {@code importColumns} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterImportColumns(DorisParser.ImportColumnsContext ctx); + /** + * Exit a parse tree produced by the {@code importColumns} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitImportColumns(DorisParser.ImportColumnsContext ctx); + /** + * Enter a parse tree produced by the {@code importPrecedingFilter} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx); + /** + * Exit a parse tree produced by the {@code importPrecedingFilter} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx); + /** + * Enter a parse tree produced by the {@code importWhere} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterImportWhere(DorisParser.ImportWhereContext ctx); + /** + * Exit a parse tree produced by the {@code importWhere} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitImportWhere(DorisParser.ImportWhereContext ctx); + /** + * Enter a parse tree produced by the {@code importDeleteOn} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterImportDeleteOn(DorisParser.ImportDeleteOnContext ctx); + /** + * Exit a parse tree produced by the {@code importDeleteOn} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitImportDeleteOn(DorisParser.ImportDeleteOnContext ctx); + /** + * Enter a parse tree produced by the {@code importSequence} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterImportSequence(DorisParser.ImportSequenceContext ctx); + /** + * Exit a parse tree produced by the {@code importSequence} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitImportSequence(DorisParser.ImportSequenceContext ctx); + /** + * Enter a parse tree produced by the {@code importPartitions} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void enterImportPartitions(DorisParser.ImportPartitionsContext ctx); + /** + * Exit a parse tree produced by the {@code importPartitions} + * labeled alternative in {@link DorisParser#loadProperty}. + * @param ctx the parse tree + */ + void exitImportPartitions(DorisParser.ImportPartitionsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#importSequenceStatement}. + * @param ctx the parse tree + */ + void enterImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#importSequenceStatement}. + * @param ctx the parse tree + */ + void exitImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#importDeleteOnStatement}. + * @param ctx the parse tree + */ + void enterImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#importDeleteOnStatement}. + * @param ctx the parse tree + */ + void exitImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#importWhereStatement}. + * @param ctx the parse tree + */ + void enterImportWhereStatement(DorisParser.ImportWhereStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#importWhereStatement}. + * @param ctx the parse tree + */ + void exitImportWhereStatement(DorisParser.ImportWhereStatementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#importPrecedingFilterStatement}. + * @param ctx the parse tree + */ + void enterImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#importPrecedingFilterStatement}. + * @param ctx the parse tree + */ + void exitImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#importColumnsStatement}. + * @param ctx the parse tree + */ + void enterImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#importColumnsStatement}. + * @param ctx the parse tree + */ + void exitImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#importColumnDesc}. + * @param ctx the parse tree + */ + void enterImportColumnDesc(DorisParser.ImportColumnDescContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#importColumnDesc}. + * @param ctx the parse tree + */ + void exitImportColumnDesc(DorisParser.ImportColumnDescContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#channelDescriptions}. + * @param ctx the parse tree + */ + void enterChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#channelDescriptions}. + * @param ctx the parse tree + */ + void exitChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#channelDescription}. + * @param ctx the parse tree + */ + void enterChannelDescription(DorisParser.ChannelDescriptionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#channelDescription}. + * @param ctx the parse tree + */ + void exitChannelDescription(DorisParser.ChannelDescriptionContext ctx); + /** + * Enter a parse tree produced by the {@code refreshCatalog} + * labeled alternative in {@link DorisParser#supportedRefreshStatement}. + * @param ctx the parse tree + */ + void enterRefreshCatalog(DorisParser.RefreshCatalogContext ctx); + /** + * Exit a parse tree produced by the {@code refreshCatalog} + * labeled alternative in {@link DorisParser#supportedRefreshStatement}. + * @param ctx the parse tree + */ + void exitRefreshCatalog(DorisParser.RefreshCatalogContext ctx); + /** + * Enter a parse tree produced by the {@code refreshDatabase} + * labeled alternative in {@link DorisParser#supportedRefreshStatement}. + * @param ctx the parse tree + */ + void enterRefreshDatabase(DorisParser.RefreshDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code refreshDatabase} + * labeled alternative in {@link DorisParser#supportedRefreshStatement}. + * @param ctx the parse tree + */ + void exitRefreshDatabase(DorisParser.RefreshDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code refreshTable} + * labeled alternative in {@link DorisParser#supportedRefreshStatement}. + * @param ctx the parse tree + */ + void enterRefreshTable(DorisParser.RefreshTableContext ctx); + /** + * Exit a parse tree produced by the {@code refreshTable} + * labeled alternative in {@link DorisParser#supportedRefreshStatement}. + * @param ctx the parse tree + */ + void exitRefreshTable(DorisParser.RefreshTableContext ctx); + /** + * Enter a parse tree produced by the {@code cleanAllProfile} + * labeled alternative in {@link DorisParser#supportedCleanStatement}. + * @param ctx the parse tree + */ + void enterCleanAllProfile(DorisParser.CleanAllProfileContext ctx); + /** + * Exit a parse tree produced by the {@code cleanAllProfile} + * labeled alternative in {@link DorisParser#supportedCleanStatement}. + * @param ctx the parse tree + */ + void exitCleanAllProfile(DorisParser.CleanAllProfileContext ctx); + /** + * Enter a parse tree produced by the {@code cleanLabel} + * labeled alternative in {@link DorisParser#supportedCleanStatement}. + * @param ctx the parse tree + */ + void enterCleanLabel(DorisParser.CleanLabelContext ctx); + /** + * Exit a parse tree produced by the {@code cleanLabel} + * labeled alternative in {@link DorisParser#supportedCleanStatement}. + * @param ctx the parse tree + */ + void exitCleanLabel(DorisParser.CleanLabelContext ctx); + /** + * Enter a parse tree produced by the {@code refreshLdap} + * labeled alternative in {@link DorisParser#unsupportedRefreshStatement}. + * @param ctx the parse tree + */ + void enterRefreshLdap(DorisParser.RefreshLdapContext ctx); + /** + * Exit a parse tree produced by the {@code refreshLdap} + * labeled alternative in {@link DorisParser#unsupportedRefreshStatement}. + * @param ctx the parse tree + */ + void exitRefreshLdap(DorisParser.RefreshLdapContext ctx); + /** + * Enter a parse tree produced by the {@code cleanQueryStats} + * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. + * @param ctx the parse tree + */ + void enterCleanQueryStats(DorisParser.CleanQueryStatsContext ctx); + /** + * Exit a parse tree produced by the {@code cleanQueryStats} + * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. + * @param ctx the parse tree + */ + void exitCleanQueryStats(DorisParser.CleanQueryStatsContext ctx); + /** + * Enter a parse tree produced by the {@code cleanAllQueryStats} + * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. + * @param ctx the parse tree + */ + void enterCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx); + /** + * Exit a parse tree produced by the {@code cleanAllQueryStats} + * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. + * @param ctx the parse tree + */ + void exitCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx); + /** + * Enter a parse tree produced by the {@code cancelLoad} + * labeled alternative in {@link DorisParser#supportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelLoad(DorisParser.CancelLoadContext ctx); + /** + * Exit a parse tree produced by the {@code cancelLoad} + * labeled alternative in {@link DorisParser#supportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelLoad(DorisParser.CancelLoadContext ctx); + /** + * Enter a parse tree produced by the {@code cancelExport} + * labeled alternative in {@link DorisParser#supportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelExport(DorisParser.CancelExportContext ctx); + /** + * Exit a parse tree produced by the {@code cancelExport} + * labeled alternative in {@link DorisParser#supportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelExport(DorisParser.CancelExportContext ctx); + /** + * Enter a parse tree produced by the {@code cancelWarmUpJob} + * labeled alternative in {@link DorisParser#supportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx); + /** + * Exit a parse tree produced by the {@code cancelWarmUpJob} + * labeled alternative in {@link DorisParser#supportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx); + /** + * Enter a parse tree produced by the {@code cancelAlterTable} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelAlterTable(DorisParser.CancelAlterTableContext ctx); + /** + * Exit a parse tree produced by the {@code cancelAlterTable} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelAlterTable(DorisParser.CancelAlterTableContext ctx); + /** + * Enter a parse tree produced by the {@code cancelBuildIndex} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx); + /** + * Exit a parse tree produced by the {@code cancelBuildIndex} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx); + /** + * Enter a parse tree produced by the {@code cancelDecommisionBackend} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx); + /** + * Exit a parse tree produced by the {@code cancelDecommisionBackend} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx); + /** + * Enter a parse tree produced by the {@code cancelBackup} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelBackup(DorisParser.CancelBackupContext ctx); + /** + * Exit a parse tree produced by the {@code cancelBackup} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelBackup(DorisParser.CancelBackupContext ctx); + /** + * Enter a parse tree produced by the {@code cancelRestore} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void enterCancelRestore(DorisParser.CancelRestoreContext ctx); + /** + * Exit a parse tree produced by the {@code cancelRestore} + * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. + * @param ctx the parse tree + */ + void exitCancelRestore(DorisParser.CancelRestoreContext ctx); + /** + * Enter a parse tree produced by the {@code adminShowReplicaDistribution} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx); + /** + * Exit a parse tree produced by the {@code adminShowReplicaDistribution} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx); + /** + * Enter a parse tree produced by the {@code adminRebalanceDisk} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx); + /** + * Exit a parse tree produced by the {@code adminRebalanceDisk} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx); + /** + * Enter a parse tree produced by the {@code adminCancelRebalanceDisk} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx); + /** + * Exit a parse tree produced by the {@code adminCancelRebalanceDisk} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx); + /** + * Enter a parse tree produced by the {@code adminDiagnoseTablet} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx); + /** + * Exit a parse tree produced by the {@code adminDiagnoseTablet} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx); + /** + * Enter a parse tree produced by the {@code adminShowReplicaStatus} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx); + /** + * Exit a parse tree produced by the {@code adminShowReplicaStatus} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx); + /** + * Enter a parse tree produced by the {@code adminCompactTable} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminCompactTable(DorisParser.AdminCompactTableContext ctx); + /** + * Exit a parse tree produced by the {@code adminCompactTable} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminCompactTable(DorisParser.AdminCompactTableContext ctx); + /** + * Enter a parse tree produced by the {@code adminCheckTablets} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx); + /** + * Exit a parse tree produced by the {@code adminCheckTablets} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx); + /** + * Enter a parse tree produced by the {@code adminShowTabletStorageFormat} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx); + /** + * Exit a parse tree produced by the {@code adminShowTabletStorageFormat} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx); + /** + * Enter a parse tree produced by the {@code adminCleanTrash} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx); + /** + * Exit a parse tree produced by the {@code adminCleanTrash} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx); + /** + * Enter a parse tree produced by the {@code adminSetTableStatus} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx); + /** + * Exit a parse tree produced by the {@code adminSetTableStatus} + * labeled alternative in {@link DorisParser#supportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx); + /** + * Enter a parse tree produced by the {@code recoverDatabase} + * labeled alternative in {@link DorisParser#supportedRecoverStatement}. + * @param ctx the parse tree + */ + void enterRecoverDatabase(DorisParser.RecoverDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code recoverDatabase} + * labeled alternative in {@link DorisParser#supportedRecoverStatement}. + * @param ctx the parse tree + */ + void exitRecoverDatabase(DorisParser.RecoverDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code recoverTable} + * labeled alternative in {@link DorisParser#supportedRecoverStatement}. + * @param ctx the parse tree + */ + void enterRecoverTable(DorisParser.RecoverTableContext ctx); + /** + * Exit a parse tree produced by the {@code recoverTable} + * labeled alternative in {@link DorisParser#supportedRecoverStatement}. + * @param ctx the parse tree + */ + void exitRecoverTable(DorisParser.RecoverTableContext ctx); + /** + * Enter a parse tree produced by the {@code recoverPartition} + * labeled alternative in {@link DorisParser#supportedRecoverStatement}. + * @param ctx the parse tree + */ + void enterRecoverPartition(DorisParser.RecoverPartitionContext ctx); + /** + * Exit a parse tree produced by the {@code recoverPartition} + * labeled alternative in {@link DorisParser#supportedRecoverStatement}. + * @param ctx the parse tree + */ + void exitRecoverPartition(DorisParser.RecoverPartitionContext ctx); + /** + * Enter a parse tree produced by the {@code adminSetReplicaStatus} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx); + /** + * Exit a parse tree produced by the {@code adminSetReplicaStatus} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx); + /** + * Enter a parse tree produced by the {@code adminSetReplicaVersion} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx); + /** + * Exit a parse tree produced by the {@code adminSetReplicaVersion} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx); + /** + * Enter a parse tree produced by the {@code adminRepairTable} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminRepairTable(DorisParser.AdminRepairTableContext ctx); + /** + * Exit a parse tree produced by the {@code adminRepairTable} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminRepairTable(DorisParser.AdminRepairTableContext ctx); + /** + * Enter a parse tree produced by the {@code adminCancelRepairTable} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx); + /** + * Exit a parse tree produced by the {@code adminCancelRepairTable} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx); + /** + * Enter a parse tree produced by the {@code adminSetFrontendConfig} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx); + /** + * Exit a parse tree produced by the {@code adminSetFrontendConfig} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx); + /** + * Enter a parse tree produced by the {@code adminSetPartitionVersion} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx); + /** + * Exit a parse tree produced by the {@code adminSetPartitionVersion} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx); + /** + * Enter a parse tree produced by the {@code adminCopyTablet} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void enterAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx); + /** + * Exit a parse tree produced by the {@code adminCopyTablet} + * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. + * @param ctx the parse tree + */ + void exitAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#baseTableRef}. + * @param ctx the parse tree + */ + void enterBaseTableRef(DorisParser.BaseTableRefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#baseTableRef}. + * @param ctx the parse tree + */ + void exitBaseTableRef(DorisParser.BaseTableRefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#wildWhere}. + * @param ctx the parse tree + */ + void enterWildWhere(DorisParser.WildWhereContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#wildWhere}. + * @param ctx the parse tree + */ + void exitWildWhere(DorisParser.WildWhereContext ctx); + /** + * Enter a parse tree produced by the {@code transactionBegin} + * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. + * @param ctx the parse tree + */ + void enterTransactionBegin(DorisParser.TransactionBeginContext ctx); + /** + * Exit a parse tree produced by the {@code transactionBegin} + * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. + * @param ctx the parse tree + */ + void exitTransactionBegin(DorisParser.TransactionBeginContext ctx); + /** + * Enter a parse tree produced by the {@code transcationCommit} + * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. + * @param ctx the parse tree + */ + void enterTranscationCommit(DorisParser.TranscationCommitContext ctx); + /** + * Exit a parse tree produced by the {@code transcationCommit} + * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. + * @param ctx the parse tree + */ + void exitTranscationCommit(DorisParser.TranscationCommitContext ctx); + /** + * Enter a parse tree produced by the {@code transactionRollback} + * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. + * @param ctx the parse tree + */ + void enterTransactionRollback(DorisParser.TransactionRollbackContext ctx); + /** + * Exit a parse tree produced by the {@code transactionRollback} + * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. + * @param ctx the parse tree + */ + void exitTransactionRollback(DorisParser.TransactionRollbackContext ctx); + /** + * Enter a parse tree produced by the {@code grantTablePrivilege} + * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. + * @param ctx the parse tree + */ + void enterGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx); + /** + * Exit a parse tree produced by the {@code grantTablePrivilege} + * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. + * @param ctx the parse tree + */ + void exitGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx); + /** + * Enter a parse tree produced by the {@code grantResourcePrivilege} + * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. + * @param ctx the parse tree + */ + void enterGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx); + /** + * Exit a parse tree produced by the {@code grantResourcePrivilege} + * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. + * @param ctx the parse tree + */ + void exitGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx); + /** + * Enter a parse tree produced by the {@code grantRole} + * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. + * @param ctx the parse tree + */ + void enterGrantRole(DorisParser.GrantRoleContext ctx); + /** + * Exit a parse tree produced by the {@code grantRole} + * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. + * @param ctx the parse tree + */ + void exitGrantRole(DorisParser.GrantRoleContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#privilege}. + * @param ctx the parse tree + */ + void enterPrivilege(DorisParser.PrivilegeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#privilege}. + * @param ctx the parse tree + */ + void exitPrivilege(DorisParser.PrivilegeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#privilegeList}. + * @param ctx the parse tree + */ + void enterPrivilegeList(DorisParser.PrivilegeListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#privilegeList}. + * @param ctx the parse tree + */ + void exitPrivilegeList(DorisParser.PrivilegeListContext ctx); + /** + * Enter a parse tree produced by the {@code alterDatabaseProperties} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code alterDatabaseProperties} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code alterResource} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterResource(DorisParser.AlterResourceContext ctx); + /** + * Exit a parse tree produced by the {@code alterResource} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterResource(DorisParser.AlterResourceContext ctx); + /** + * Enter a parse tree produced by the {@code alterColocateGroup} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx); + /** + * Exit a parse tree produced by the {@code alterColocateGroup} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx); + /** + * Enter a parse tree produced by the {@code alterRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx); + /** + * Exit a parse tree produced by the {@code alterRoutineLoad} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx); + /** + * Enter a parse tree produced by the {@code alterStoragePlicy} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx); + /** + * Exit a parse tree produced by the {@code alterStoragePlicy} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx); + /** + * Enter a parse tree produced by the {@code alterUser} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void enterAlterUser(DorisParser.AlterUserContext ctx); + /** + * Exit a parse tree produced by the {@code alterUser} + * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. + * @param ctx the parse tree + */ + void exitAlterUser(DorisParser.AlterUserContext ctx); + /** + * Enter a parse tree produced by the {@code addBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterAddBackendClause(DorisParser.AddBackendClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitAddBackendClause(DorisParser.AddBackendClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterDropBackendClause(DorisParser.DropBackendClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitDropBackendClause(DorisParser.DropBackendClauseContext ctx); + /** + * Enter a parse tree produced by the {@code decommissionBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx); + /** + * Exit a parse tree produced by the {@code decommissionBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addObserverClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterAddObserverClause(DorisParser.AddObserverClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addObserverClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitAddObserverClause(DorisParser.AddObserverClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropObserverClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterDropObserverClause(DorisParser.DropObserverClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropObserverClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitDropObserverClause(DorisParser.DropObserverClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addFollowerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterAddFollowerClause(DorisParser.AddFollowerClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addFollowerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitAddFollowerClause(DorisParser.AddFollowerClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropFollowerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterDropFollowerClause(DorisParser.DropFollowerClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropFollowerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitDropFollowerClause(DorisParser.DropFollowerClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addBrokerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterAddBrokerClause(DorisParser.AddBrokerClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addBrokerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitAddBrokerClause(DorisParser.AddBrokerClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropBrokerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterDropBrokerClause(DorisParser.DropBrokerClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropBrokerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitDropBrokerClause(DorisParser.DropBrokerClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropAllBrokerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropAllBrokerClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx); + /** + * Enter a parse tree produced by the {@code alterLoadErrorUrlClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx); + /** + * Exit a parse tree produced by the {@code alterLoadErrorUrlClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyBackendClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyFrontendOrBackendHostNameClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void enterModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyFrontendOrBackendHostNameClause} + * labeled alternative in {@link DorisParser#alterSystemClause}. + * @param ctx the parse tree + */ + void exitModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#dropRollupClause}. + * @param ctx the parse tree + */ + void enterDropRollupClause(DorisParser.DropRollupClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#dropRollupClause}. + * @param ctx the parse tree + */ + void exitDropRollupClause(DorisParser.DropRollupClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#addRollupClause}. + * @param ctx the parse tree + */ + void enterAddRollupClause(DorisParser.AddRollupClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#addRollupClause}. + * @param ctx the parse tree + */ + void exitAddRollupClause(DorisParser.AddRollupClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterAddColumnClause(DorisParser.AddColumnClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitAddColumnClause(DorisParser.AddColumnClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addColumnsClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterAddColumnsClause(DorisParser.AddColumnsClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addColumnsClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitAddColumnsClause(DorisParser.AddColumnsClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterDropColumnClause(DorisParser.DropColumnClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitDropColumnClause(DorisParser.DropColumnClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx); + /** + * Enter a parse tree produced by the {@code reorderColumnsClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx); + /** + * Exit a parse tree produced by the {@code reorderColumnsClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterAddPartitionClause(DorisParser.AddPartitionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitAddPartitionClause(DorisParser.AddPartitionClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterDropPartitionClause(DorisParser.DropPartitionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitDropPartitionClause(DorisParser.DropPartitionClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx); + /** + * Enter a parse tree produced by the {@code replacePartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code replacePartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx); + /** + * Enter a parse tree produced by the {@code replaceTableClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx); + /** + * Exit a parse tree produced by the {@code replaceTableClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx); + /** + * Enter a parse tree produced by the {@code renameClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterRenameClause(DorisParser.RenameClauseContext ctx); + /** + * Exit a parse tree produced by the {@code renameClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitRenameClause(DorisParser.RenameClauseContext ctx); + /** + * Enter a parse tree produced by the {@code renameRollupClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterRenameRollupClause(DorisParser.RenameRollupClauseContext ctx); + /** + * Exit a parse tree produced by the {@code renameRollupClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitRenameRollupClause(DorisParser.RenameRollupClauseContext ctx); + /** + * Enter a parse tree produced by the {@code renamePartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code renamePartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx); + /** + * Enter a parse tree produced by the {@code renameColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterRenameColumnClause(DorisParser.RenameColumnClauseContext ctx); + /** + * Exit a parse tree produced by the {@code renameColumnClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitRenameColumnClause(DorisParser.RenameColumnClauseContext ctx); + /** + * Enter a parse tree produced by the {@code addIndexClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterAddIndexClause(DorisParser.AddIndexClauseContext ctx); + /** + * Exit a parse tree produced by the {@code addIndexClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitAddIndexClause(DorisParser.AddIndexClauseContext ctx); + /** + * Enter a parse tree produced by the {@code dropIndexClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterDropIndexClause(DorisParser.DropIndexClauseContext ctx); + /** + * Exit a parse tree produced by the {@code dropIndexClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitDropIndexClause(DorisParser.DropIndexClauseContext ctx); + /** + * Enter a parse tree produced by the {@code enableFeatureClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx); + /** + * Exit a parse tree produced by the {@code enableFeatureClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyDistributionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyDistributionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyTableCommentClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyTableCommentClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyColumnCommentClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyColumnCommentClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx); + /** + * Enter a parse tree produced by the {@code modifyEngineClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx); + /** + * Exit a parse tree produced by the {@code modifyEngineClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx); + /** + * Enter a parse tree produced by the {@code alterMultiPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void enterAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx); + /** + * Exit a parse tree produced by the {@code alterMultiPartitionClause} + * labeled alternative in {@link DorisParser#alterTableClause}. + * @param ctx the parse tree + */ + void exitAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#columnPosition}. + * @param ctx the parse tree + */ + void enterColumnPosition(DorisParser.ColumnPositionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#columnPosition}. + * @param ctx the parse tree + */ + void exitColumnPosition(DorisParser.ColumnPositionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#toRollup}. + * @param ctx the parse tree + */ + void enterToRollup(DorisParser.ToRollupContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#toRollup}. + * @param ctx the parse tree + */ + void exitToRollup(DorisParser.ToRollupContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#fromRollup}. + * @param ctx the parse tree + */ + void enterFromRollup(DorisParser.FromRollupContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#fromRollup}. + * @param ctx the parse tree + */ + void exitFromRollup(DorisParser.FromRollupContext ctx); + /** + * Enter a parse tree produced by the {@code dropView} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropView(DorisParser.DropViewContext ctx); + /** + * Exit a parse tree produced by the {@code dropView} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropView(DorisParser.DropViewContext ctx); + /** + * Enter a parse tree produced by the {@code dropResource} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropResource(DorisParser.DropResourceContext ctx); + /** + * Exit a parse tree produced by the {@code dropResource} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropResource(DorisParser.DropResourceContext ctx); + /** + * Enter a parse tree produced by the {@code dropRowPolicy} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropRowPolicy(DorisParser.DropRowPolicyContext ctx); + /** + * Exit a parse tree produced by the {@code dropRowPolicy} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropRowPolicy(DorisParser.DropRowPolicyContext ctx); + /** + * Enter a parse tree produced by the {@code dropStage} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void enterDropStage(DorisParser.DropStageContext ctx); + /** + * Exit a parse tree produced by the {@code dropStage} + * labeled alternative in {@link DorisParser#unsupportedDropStatement}. + * @param ctx the parse tree + */ + void exitDropStage(DorisParser.DropStageContext ctx); + /** + * Enter a parse tree produced by the {@code showAnalyze} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowAnalyze(DorisParser.ShowAnalyzeContext ctx); + /** + * Exit a parse tree produced by the {@code showAnalyze} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowAnalyze(DorisParser.ShowAnalyzeContext ctx); + /** + * Enter a parse tree produced by the {@code showQueuedAnalyzeJobs} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx); + /** + * Exit a parse tree produced by the {@code showQueuedAnalyzeJobs} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx); + /** + * Enter a parse tree produced by the {@code showColumnHistogramStats} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx); + /** + * Exit a parse tree produced by the {@code showColumnHistogramStats} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx); + /** + * Enter a parse tree produced by the {@code analyzeDatabase} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void enterAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code analyzeDatabase} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void exitAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code analyzeTable} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void enterAnalyzeTable(DorisParser.AnalyzeTableContext ctx); + /** + * Exit a parse tree produced by the {@code analyzeTable} + * labeled alternative in {@link DorisParser#supportedStatsStatement}. + * @param ctx the parse tree + */ + void exitAnalyzeTable(DorisParser.AnalyzeTableContext ctx); + /** + * Enter a parse tree produced by the {@code alterTableStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterAlterTableStats(DorisParser.AlterTableStatsContext ctx); + /** + * Exit a parse tree produced by the {@code alterTableStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitAlterTableStats(DorisParser.AlterTableStatsContext ctx); + /** + * Enter a parse tree produced by the {@code alterColumnStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterAlterColumnStats(DorisParser.AlterColumnStatsContext ctx); + /** + * Exit a parse tree produced by the {@code alterColumnStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitAlterColumnStats(DorisParser.AlterColumnStatsContext ctx); + /** + * Enter a parse tree produced by the {@code dropStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterDropStats(DorisParser.DropStatsContext ctx); + /** + * Exit a parse tree produced by the {@code dropStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitDropStats(DorisParser.DropStatsContext ctx); + /** + * Enter a parse tree produced by the {@code dropCachedStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterDropCachedStats(DorisParser.DropCachedStatsContext ctx); + /** + * Exit a parse tree produced by the {@code dropCachedStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitDropCachedStats(DorisParser.DropCachedStatsContext ctx); + /** + * Enter a parse tree produced by the {@code dropExpiredStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterDropExpiredStats(DorisParser.DropExpiredStatsContext ctx); + /** + * Exit a parse tree produced by the {@code dropExpiredStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitDropExpiredStats(DorisParser.DropExpiredStatsContext ctx); + /** + * Enter a parse tree produced by the {@code dropAanalyzeJob} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx); + /** + * Exit a parse tree produced by the {@code dropAanalyzeJob} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx); + /** + * Enter a parse tree produced by the {@code killAnalyzeJob} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx); + /** + * Exit a parse tree produced by the {@code killAnalyzeJob} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx); + /** + * Enter a parse tree produced by the {@code showTableStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowTableStats(DorisParser.ShowTableStatsContext ctx); + /** + * Exit a parse tree produced by the {@code showTableStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowTableStats(DorisParser.ShowTableStatsContext ctx); + /** + * Enter a parse tree produced by the {@code showIndexStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowIndexStats(DorisParser.ShowIndexStatsContext ctx); + /** + * Exit a parse tree produced by the {@code showIndexStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowIndexStats(DorisParser.ShowIndexStatsContext ctx); + /** + * Enter a parse tree produced by the {@code showColumnStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowColumnStats(DorisParser.ShowColumnStatsContext ctx); + /** + * Exit a parse tree produced by the {@code showColumnStats} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowColumnStats(DorisParser.ShowColumnStatsContext ctx); + /** + * Enter a parse tree produced by the {@code showAnalyzeTask} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void enterShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx); + /** + * Exit a parse tree produced by the {@code showAnalyzeTask} + * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. + * @param ctx the parse tree + */ + void exitShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#analyzeProperties}. + * @param ctx the parse tree + */ + void enterAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#analyzeProperties}. + * @param ctx the parse tree + */ + void exitAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code createDatabase} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateDatabase(DorisParser.CreateDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code createDatabase} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateDatabase(DorisParser.CreateDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code createUser} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateUser(DorisParser.CreateUserContext ctx); + /** + * Exit a parse tree produced by the {@code createUser} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateUser(DorisParser.CreateUserContext ctx); + /** + * Enter a parse tree produced by the {@code createRepository} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateRepository(DorisParser.CreateRepositoryContext ctx); + /** + * Exit a parse tree produced by the {@code createRepository} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateRepository(DorisParser.CreateRepositoryContext ctx); + /** + * Enter a parse tree produced by the {@code createResource} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateResource(DorisParser.CreateResourceContext ctx); + /** + * Exit a parse tree produced by the {@code createResource} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateResource(DorisParser.CreateResourceContext ctx); + /** + * Enter a parse tree produced by the {@code createStorageVault} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateStorageVault(DorisParser.CreateStorageVaultContext ctx); + /** + * Exit a parse tree produced by the {@code createStorageVault} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateStorageVault(DorisParser.CreateStorageVaultContext ctx); + /** + * Enter a parse tree produced by the {@code createWorkloadPolicy} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx); + /** + * Exit a parse tree produced by the {@code createWorkloadPolicy} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx); + /** + * Enter a parse tree produced by the {@code createStage} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void enterCreateStage(DorisParser.CreateStageContext ctx); + /** + * Exit a parse tree produced by the {@code createStage} + * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. + * @param ctx the parse tree + */ + void exitCreateStage(DorisParser.CreateStageContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#workloadPolicyActions}. + * @param ctx the parse tree + */ + void enterWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#workloadPolicyActions}. + * @param ctx the parse tree + */ + void exitWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#workloadPolicyAction}. + * @param ctx the parse tree + */ + void enterWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#workloadPolicyAction}. + * @param ctx the parse tree + */ + void exitWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#workloadPolicyConditions}. + * @param ctx the parse tree + */ + void enterWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#workloadPolicyConditions}. + * @param ctx the parse tree + */ + void exitWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#workloadPolicyCondition}. + * @param ctx the parse tree + */ + void enterWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#workloadPolicyCondition}. + * @param ctx the parse tree + */ + void exitWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#storageBackend}. + * @param ctx the parse tree + */ + void enterStorageBackend(DorisParser.StorageBackendContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#storageBackend}. + * @param ctx the parse tree + */ + void exitStorageBackend(DorisParser.StorageBackendContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#passwordOption}. + * @param ctx the parse tree + */ + void enterPasswordOption(DorisParser.PasswordOptionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#passwordOption}. + * @param ctx the parse tree + */ + void exitPasswordOption(DorisParser.PasswordOptionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#functionArguments}. + * @param ctx the parse tree + */ + void enterFunctionArguments(DorisParser.FunctionArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#functionArguments}. + * @param ctx the parse tree + */ + void exitFunctionArguments(DorisParser.FunctionArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#dataTypeList}. + * @param ctx the parse tree + */ + void enterDataTypeList(DorisParser.DataTypeListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#dataTypeList}. + * @param ctx the parse tree + */ + void exitDataTypeList(DorisParser.DataTypeListContext ctx); + /** + * Enter a parse tree produced by the {@code setOptions} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void enterSetOptions(DorisParser.SetOptionsContext ctx); + /** + * Exit a parse tree produced by the {@code setOptions} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void exitSetOptions(DorisParser.SetOptionsContext ctx); + /** + * Enter a parse tree produced by the {@code setDefaultStorageVault} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void enterSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx); + /** + * Exit a parse tree produced by the {@code setDefaultStorageVault} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void exitSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx); + /** + * Enter a parse tree produced by the {@code setUserProperties} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void enterSetUserProperties(DorisParser.SetUserPropertiesContext ctx); + /** + * Exit a parse tree produced by the {@code setUserProperties} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void exitSetUserProperties(DorisParser.SetUserPropertiesContext ctx); + /** + * Enter a parse tree produced by the {@code setTransaction} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void enterSetTransaction(DorisParser.SetTransactionContext ctx); + /** + * Exit a parse tree produced by the {@code setTransaction} + * labeled alternative in {@link DorisParser#supportedSetStatement}. + * @param ctx the parse tree + */ + void exitSetTransaction(DorisParser.SetTransactionContext ctx); + /** + * Enter a parse tree produced by the {@code setVariableWithType} + * labeled alternative in {@link DorisParser#optionWithType}. + * @param ctx the parse tree + */ + void enterSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx); + /** + * Exit a parse tree produced by the {@code setVariableWithType} + * labeled alternative in {@link DorisParser#optionWithType}. + * @param ctx the parse tree + */ + void exitSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx); + /** + * Enter a parse tree produced by the {@code setNames} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void enterSetNames(DorisParser.SetNamesContext ctx); + /** + * Exit a parse tree produced by the {@code setNames} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void exitSetNames(DorisParser.SetNamesContext ctx); + /** + * Enter a parse tree produced by the {@code setCharset} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void enterSetCharset(DorisParser.SetCharsetContext ctx); + /** + * Exit a parse tree produced by the {@code setCharset} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void exitSetCharset(DorisParser.SetCharsetContext ctx); + /** + * Enter a parse tree produced by the {@code setCollate} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void enterSetCollate(DorisParser.SetCollateContext ctx); + /** + * Exit a parse tree produced by the {@code setCollate} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void exitSetCollate(DorisParser.SetCollateContext ctx); + /** + * Enter a parse tree produced by the {@code setPassword} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void enterSetPassword(DorisParser.SetPasswordContext ctx); + /** + * Exit a parse tree produced by the {@code setPassword} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void exitSetPassword(DorisParser.SetPasswordContext ctx); + /** + * Enter a parse tree produced by the {@code setLdapAdminPassword} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void enterSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx); + /** + * Exit a parse tree produced by the {@code setLdapAdminPassword} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void exitSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx); + /** + * Enter a parse tree produced by the {@code setVariableWithoutType} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void enterSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx); + /** + * Exit a parse tree produced by the {@code setVariableWithoutType} + * labeled alternative in {@link DorisParser#optionWithoutType}. + * @param ctx the parse tree + */ + void exitSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx); + /** + * Enter a parse tree produced by the {@code setSystemVariable} + * labeled alternative in {@link DorisParser#variable}. + * @param ctx the parse tree + */ + void enterSetSystemVariable(DorisParser.SetSystemVariableContext ctx); + /** + * Exit a parse tree produced by the {@code setSystemVariable} + * labeled alternative in {@link DorisParser#variable}. + * @param ctx the parse tree + */ + void exitSetSystemVariable(DorisParser.SetSystemVariableContext ctx); + /** + * Enter a parse tree produced by the {@code setUserVariable} + * labeled alternative in {@link DorisParser#variable}. + * @param ctx the parse tree + */ + void enterSetUserVariable(DorisParser.SetUserVariableContext ctx); + /** + * Exit a parse tree produced by the {@code setUserVariable} + * labeled alternative in {@link DorisParser#variable}. + * @param ctx the parse tree + */ + void exitSetUserVariable(DorisParser.SetUserVariableContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#transactionAccessMode}. + * @param ctx the parse tree + */ + void enterTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#transactionAccessMode}. + * @param ctx the parse tree + */ + void exitTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#isolationLevel}. + * @param ctx the parse tree + */ + void enterIsolationLevel(DorisParser.IsolationLevelContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#isolationLevel}. + * @param ctx the parse tree + */ + void exitIsolationLevel(DorisParser.IsolationLevelContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#supportedUnsetStatement}. + * @param ctx the parse tree + */ + void enterSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#supportedUnsetStatement}. + * @param ctx the parse tree + */ + void exitSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx); + /** + * Enter a parse tree produced by the {@code switchCatalog} + * labeled alternative in {@link DorisParser#supportedUseStatement}. + * @param ctx the parse tree + */ + void enterSwitchCatalog(DorisParser.SwitchCatalogContext ctx); + /** + * Exit a parse tree produced by the {@code switchCatalog} + * labeled alternative in {@link DorisParser#supportedUseStatement}. + * @param ctx the parse tree + */ + void exitSwitchCatalog(DorisParser.SwitchCatalogContext ctx); + /** + * Enter a parse tree produced by the {@code useDatabase} + * labeled alternative in {@link DorisParser#supportedUseStatement}. + * @param ctx the parse tree + */ + void enterUseDatabase(DorisParser.UseDatabaseContext ctx); + /** + * Exit a parse tree produced by the {@code useDatabase} + * labeled alternative in {@link DorisParser#supportedUseStatement}. + * @param ctx the parse tree + */ + void exitUseDatabase(DorisParser.UseDatabaseContext ctx); + /** + * Enter a parse tree produced by the {@code useCloudCluster} + * labeled alternative in {@link DorisParser#unsupportedUseStatement}. + * @param ctx the parse tree + */ + void enterUseCloudCluster(DorisParser.UseCloudClusterContext ctx); + /** + * Exit a parse tree produced by the {@code useCloudCluster} + * labeled alternative in {@link DorisParser#unsupportedUseStatement}. + * @param ctx the parse tree + */ + void exitUseCloudCluster(DorisParser.UseCloudClusterContext ctx); + /** + * Enter a parse tree produced by the {@code truncateTable} + * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. + * @param ctx the parse tree + */ + void enterTruncateTable(DorisParser.TruncateTableContext ctx); + /** + * Exit a parse tree produced by the {@code truncateTable} + * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. + * @param ctx the parse tree + */ + void exitTruncateTable(DorisParser.TruncateTableContext ctx); + /** + * Enter a parse tree produced by the {@code copyInto} + * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. + * @param ctx the parse tree + */ + void enterCopyInto(DorisParser.CopyIntoContext ctx); + /** + * Exit a parse tree produced by the {@code copyInto} + * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. + * @param ctx the parse tree + */ + void exitCopyInto(DorisParser.CopyIntoContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#stageAndPattern}. + * @param ctx the parse tree + */ + void enterStageAndPattern(DorisParser.StageAndPatternContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#stageAndPattern}. + * @param ctx the parse tree + */ + void exitStageAndPattern(DorisParser.StageAndPatternContext ctx); + /** + * Enter a parse tree produced by the {@code killConnection} + * labeled alternative in {@link DorisParser#unsupportedKillStatement}. + * @param ctx the parse tree + */ + void enterKillConnection(DorisParser.KillConnectionContext ctx); + /** + * Exit a parse tree produced by the {@code killConnection} + * labeled alternative in {@link DorisParser#unsupportedKillStatement}. + * @param ctx the parse tree + */ + void exitKillConnection(DorisParser.KillConnectionContext ctx); + /** + * Enter a parse tree produced by the {@code killQuery} + * labeled alternative in {@link DorisParser#unsupportedKillStatement}. + * @param ctx the parse tree + */ + void enterKillQuery(DorisParser.KillQueryContext ctx); + /** + * Exit a parse tree produced by the {@code killQuery} + * labeled alternative in {@link DorisParser#unsupportedKillStatement}. + * @param ctx the parse tree + */ + void exitKillQuery(DorisParser.KillQueryContext ctx); + /** + * Enter a parse tree produced by the {@code describeTableValuedFunction} + * labeled alternative in {@link DorisParser#supportedDescribeStatement}. + * @param ctx the parse tree + */ + void enterDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code describeTableValuedFunction} + * labeled alternative in {@link DorisParser#supportedDescribeStatement}. + * @param ctx the parse tree + */ + void exitDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code describeTableAll} + * labeled alternative in {@link DorisParser#supportedDescribeStatement}. + * @param ctx the parse tree + */ + void enterDescribeTableAll(DorisParser.DescribeTableAllContext ctx); + /** + * Exit a parse tree produced by the {@code describeTableAll} + * labeled alternative in {@link DorisParser#supportedDescribeStatement}. + * @param ctx the parse tree + */ + void exitDescribeTableAll(DorisParser.DescribeTableAllContext ctx); + /** + * Enter a parse tree produced by the {@code describeTable} + * labeled alternative in {@link DorisParser#supportedDescribeStatement}. + * @param ctx the parse tree + */ + void enterDescribeTable(DorisParser.DescribeTableContext ctx); + /** + * Exit a parse tree produced by the {@code describeTable} + * labeled alternative in {@link DorisParser#supportedDescribeStatement}. + * @param ctx the parse tree + */ + void exitDescribeTable(DorisParser.DescribeTableContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#constraint}. + * @param ctx the parse tree + */ + void enterConstraint(DorisParser.ConstraintContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#constraint}. + * @param ctx the parse tree + */ + void exitConstraint(DorisParser.ConstraintContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionSpec}. + * @param ctx the parse tree + */ + void enterPartitionSpec(DorisParser.PartitionSpecContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionSpec}. + * @param ctx the parse tree + */ + void exitPartitionSpec(DorisParser.PartitionSpecContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionTable}. + * @param ctx the parse tree + */ + void enterPartitionTable(DorisParser.PartitionTableContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionTable}. + * @param ctx the parse tree + */ + void exitPartitionTable(DorisParser.PartitionTableContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identityOrFunctionList}. + * @param ctx the parse tree + */ + void enterIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identityOrFunctionList}. + * @param ctx the parse tree + */ + void exitIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identityOrFunction}. + * @param ctx the parse tree + */ + void enterIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identityOrFunction}. + * @param ctx the parse tree + */ + void exitIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#dataDesc}. + * @param ctx the parse tree + */ + void enterDataDesc(DorisParser.DataDescContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#dataDesc}. + * @param ctx the parse tree + */ + void exitDataDesc(DorisParser.DataDescContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#statementScope}. + * @param ctx the parse tree + */ + void enterStatementScope(DorisParser.StatementScopeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#statementScope}. + * @param ctx the parse tree + */ + void exitStatementScope(DorisParser.StatementScopeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#buildMode}. + * @param ctx the parse tree + */ + void enterBuildMode(DorisParser.BuildModeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#buildMode}. + * @param ctx the parse tree + */ + void exitBuildMode(DorisParser.BuildModeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#refreshTrigger}. + * @param ctx the parse tree + */ + void enterRefreshTrigger(DorisParser.RefreshTriggerContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#refreshTrigger}. + * @param ctx the parse tree + */ + void exitRefreshTrigger(DorisParser.RefreshTriggerContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#refreshSchedule}. + * @param ctx the parse tree + */ + void enterRefreshSchedule(DorisParser.RefreshScheduleContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#refreshSchedule}. + * @param ctx the parse tree + */ + void exitRefreshSchedule(DorisParser.RefreshScheduleContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#refreshMethod}. + * @param ctx the parse tree + */ + void enterRefreshMethod(DorisParser.RefreshMethodContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#refreshMethod}. + * @param ctx the parse tree + */ + void exitRefreshMethod(DorisParser.RefreshMethodContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#mvPartition}. + * @param ctx the parse tree + */ + void enterMvPartition(DorisParser.MvPartitionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#mvPartition}. + * @param ctx the parse tree + */ + void exitMvPartition(DorisParser.MvPartitionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identifierOrText}. + * @param ctx the parse tree + */ + void enterIdentifierOrText(DorisParser.IdentifierOrTextContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identifierOrText}. + * @param ctx the parse tree + */ + void exitIdentifierOrText(DorisParser.IdentifierOrTextContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identifierOrTextOrAsterisk}. + * @param ctx the parse tree + */ + void enterIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identifierOrTextOrAsterisk}. + * @param ctx the parse tree + */ + void exitIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#multipartIdentifierOrAsterisk}. + * @param ctx the parse tree + */ + void enterMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#multipartIdentifierOrAsterisk}. + * @param ctx the parse tree + */ + void exitMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identifierOrAsterisk}. + * @param ctx the parse tree + */ + void enterIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identifierOrAsterisk}. + * @param ctx the parse tree + */ + void exitIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#userIdentify}. + * @param ctx the parse tree + */ + void enterUserIdentify(DorisParser.UserIdentifyContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#userIdentify}. + * @param ctx the parse tree + */ + void exitUserIdentify(DorisParser.UserIdentifyContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#grantUserIdentify}. + * @param ctx the parse tree + */ + void enterGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#grantUserIdentify}. + * @param ctx the parse tree + */ + void exitGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#explain}. + * @param ctx the parse tree + */ + void enterExplain(DorisParser.ExplainContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#explain}. + * @param ctx the parse tree + */ + void exitExplain(DorisParser.ExplainContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#explainCommand}. + * @param ctx the parse tree + */ + void enterExplainCommand(DorisParser.ExplainCommandContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#explainCommand}. + * @param ctx the parse tree + */ + void exitExplainCommand(DorisParser.ExplainCommandContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#planType}. + * @param ctx the parse tree + */ + void enterPlanType(DorisParser.PlanTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#planType}. + * @param ctx the parse tree + */ + void exitPlanType(DorisParser.PlanTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#replayCommand}. + * @param ctx the parse tree + */ + void enterReplayCommand(DorisParser.ReplayCommandContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#replayCommand}. + * @param ctx the parse tree + */ + void exitReplayCommand(DorisParser.ReplayCommandContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#replayType}. + * @param ctx the parse tree + */ + void enterReplayType(DorisParser.ReplayTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#replayType}. + * @param ctx the parse tree + */ + void exitReplayType(DorisParser.ReplayTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#mergeType}. + * @param ctx the parse tree + */ + void enterMergeType(DorisParser.MergeTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#mergeType}. + * @param ctx the parse tree + */ + void exitMergeType(DorisParser.MergeTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#preFilterClause}. + * @param ctx the parse tree + */ + void enterPreFilterClause(DorisParser.PreFilterClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#preFilterClause}. + * @param ctx the parse tree + */ + void exitPreFilterClause(DorisParser.PreFilterClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#deleteOnClause}. + * @param ctx the parse tree + */ + void enterDeleteOnClause(DorisParser.DeleteOnClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#deleteOnClause}. + * @param ctx the parse tree + */ + void exitDeleteOnClause(DorisParser.DeleteOnClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#sequenceColClause}. + * @param ctx the parse tree + */ + void enterSequenceColClause(DorisParser.SequenceColClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#sequenceColClause}. + * @param ctx the parse tree + */ + void exitSequenceColClause(DorisParser.SequenceColClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#colFromPath}. + * @param ctx the parse tree + */ + void enterColFromPath(DorisParser.ColFromPathContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#colFromPath}. + * @param ctx the parse tree + */ + void exitColFromPath(DorisParser.ColFromPathContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#colMappingList}. + * @param ctx the parse tree + */ + void enterColMappingList(DorisParser.ColMappingListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#colMappingList}. + * @param ctx the parse tree + */ + void exitColMappingList(DorisParser.ColMappingListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#mappingExpr}. + * @param ctx the parse tree + */ + void enterMappingExpr(DorisParser.MappingExprContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#mappingExpr}. + * @param ctx the parse tree + */ + void exitMappingExpr(DorisParser.MappingExprContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#withRemoteStorageSystem}. + * @param ctx the parse tree + */ + void enterWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#withRemoteStorageSystem}. + * @param ctx the parse tree + */ + void exitWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#resourceDesc}. + * @param ctx the parse tree + */ + void enterResourceDesc(DorisParser.ResourceDescContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#resourceDesc}. + * @param ctx the parse tree + */ + void exitResourceDesc(DorisParser.ResourceDescContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#mysqlDataDesc}. + * @param ctx the parse tree + */ + void enterMysqlDataDesc(DorisParser.MysqlDataDescContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#mysqlDataDesc}. + * @param ctx the parse tree + */ + void exitMysqlDataDesc(DorisParser.MysqlDataDescContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#skipLines}. + * @param ctx the parse tree + */ + void enterSkipLines(DorisParser.SkipLinesContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#skipLines}. + * @param ctx the parse tree + */ + void exitSkipLines(DorisParser.SkipLinesContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#outFileClause}. + * @param ctx the parse tree + */ + void enterOutFileClause(DorisParser.OutFileClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#outFileClause}. + * @param ctx the parse tree + */ + void exitOutFileClause(DorisParser.OutFileClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#query}. + * @param ctx the parse tree + */ + void enterQuery(DorisParser.QueryContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#query}. + * @param ctx the parse tree + */ + void exitQuery(DorisParser.QueryContext ctx); + /** + * Enter a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link DorisParser#queryTerm}. + * @param ctx the parse tree + */ + void enterQueryTermDefault(DorisParser.QueryTermDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code queryTermDefault} + * labeled alternative in {@link DorisParser#queryTerm}. + * @param ctx the parse tree + */ + void exitQueryTermDefault(DorisParser.QueryTermDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code setOperation} + * labeled alternative in {@link DorisParser#queryTerm}. + * @param ctx the parse tree + */ + void enterSetOperation(DorisParser.SetOperationContext ctx); + /** + * Exit a parse tree produced by the {@code setOperation} + * labeled alternative in {@link DorisParser#queryTerm}. + * @param ctx the parse tree + */ + void exitSetOperation(DorisParser.SetOperationContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#setQuantifier}. + * @param ctx the parse tree + */ + void enterSetQuantifier(DorisParser.SetQuantifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#setQuantifier}. + * @param ctx the parse tree + */ + void exitSetQuantifier(DorisParser.SetQuantifierContext ctx); + /** + * Enter a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link DorisParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code queryPrimaryDefault} + * labeled alternative in {@link DorisParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code subquery} + * labeled alternative in {@link DorisParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterSubquery(DorisParser.SubqueryContext ctx); + /** + * Exit a parse tree produced by the {@code subquery} + * labeled alternative in {@link DorisParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitSubquery(DorisParser.SubqueryContext ctx); + /** + * Enter a parse tree produced by the {@code valuesTable} + * labeled alternative in {@link DorisParser#queryPrimary}. + * @param ctx the parse tree + */ + void enterValuesTable(DorisParser.ValuesTableContext ctx); + /** + * Exit a parse tree produced by the {@code valuesTable} + * labeled alternative in {@link DorisParser#queryPrimary}. + * @param ctx the parse tree + */ + void exitValuesTable(DorisParser.ValuesTableContext ctx); + /** + * Enter a parse tree produced by the {@code regularQuerySpecification} + * labeled alternative in {@link DorisParser#querySpecification}. + * @param ctx the parse tree + */ + void enterRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx); + /** + * Exit a parse tree produced by the {@code regularQuerySpecification} + * labeled alternative in {@link DorisParser#querySpecification}. + * @param ctx the parse tree + */ + void exitRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#cte}. + * @param ctx the parse tree + */ + void enterCte(DorisParser.CteContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#cte}. + * @param ctx the parse tree + */ + void exitCte(DorisParser.CteContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#aliasQuery}. + * @param ctx the parse tree + */ + void enterAliasQuery(DorisParser.AliasQueryContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#aliasQuery}. + * @param ctx the parse tree + */ + void exitAliasQuery(DorisParser.AliasQueryContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#columnAliases}. + * @param ctx the parse tree + */ + void enterColumnAliases(DorisParser.ColumnAliasesContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#columnAliases}. + * @param ctx the parse tree + */ + void exitColumnAliases(DorisParser.ColumnAliasesContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#selectClause}. + * @param ctx the parse tree + */ + void enterSelectClause(DorisParser.SelectClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#selectClause}. + * @param ctx the parse tree + */ + void exitSelectClause(DorisParser.SelectClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#selectColumnClause}. + * @param ctx the parse tree + */ + void enterSelectColumnClause(DorisParser.SelectColumnClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#selectColumnClause}. + * @param ctx the parse tree + */ + void exitSelectColumnClause(DorisParser.SelectColumnClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#whereClause}. + * @param ctx the parse tree + */ + void enterWhereClause(DorisParser.WhereClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#whereClause}. + * @param ctx the parse tree + */ + void exitWhereClause(DorisParser.WhereClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#fromClause}. + * @param ctx the parse tree + */ + void enterFromClause(DorisParser.FromClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#fromClause}. + * @param ctx the parse tree + */ + void exitFromClause(DorisParser.FromClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#intoClause}. + * @param ctx the parse tree + */ + void enterIntoClause(DorisParser.IntoClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#intoClause}. + * @param ctx the parse tree + */ + void exitIntoClause(DorisParser.IntoClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#bulkCollectClause}. + * @param ctx the parse tree + */ + void enterBulkCollectClause(DorisParser.BulkCollectClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#bulkCollectClause}. + * @param ctx the parse tree + */ + void exitBulkCollectClause(DorisParser.BulkCollectClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#tableRow}. + * @param ctx the parse tree + */ + void enterTableRow(DorisParser.TableRowContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#tableRow}. + * @param ctx the parse tree + */ + void exitTableRow(DorisParser.TableRowContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#relations}. + * @param ctx the parse tree + */ + void enterRelations(DorisParser.RelationsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#relations}. + * @param ctx the parse tree + */ + void exitRelations(DorisParser.RelationsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#relation}. + * @param ctx the parse tree + */ + void enterRelation(DorisParser.RelationContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#relation}. + * @param ctx the parse tree + */ + void exitRelation(DorisParser.RelationContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#joinRelation}. + * @param ctx the parse tree + */ + void enterJoinRelation(DorisParser.JoinRelationContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#joinRelation}. + * @param ctx the parse tree + */ + void exitJoinRelation(DorisParser.JoinRelationContext ctx); + /** + * Enter a parse tree produced by the {@code bracketDistributeType} + * labeled alternative in {@link DorisParser#distributeType}. + * @param ctx the parse tree + */ + void enterBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx); + /** + * Exit a parse tree produced by the {@code bracketDistributeType} + * labeled alternative in {@link DorisParser#distributeType}. + * @param ctx the parse tree + */ + void exitBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx); + /** + * Enter a parse tree produced by the {@code commentDistributeType} + * labeled alternative in {@link DorisParser#distributeType}. + * @param ctx the parse tree + */ + void enterCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx); + /** + * Exit a parse tree produced by the {@code commentDistributeType} + * labeled alternative in {@link DorisParser#distributeType}. + * @param ctx the parse tree + */ + void exitCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx); + /** + * Enter a parse tree produced by the {@code bracketRelationHint} + * labeled alternative in {@link DorisParser#relationHint}. + * @param ctx the parse tree + */ + void enterBracketRelationHint(DorisParser.BracketRelationHintContext ctx); + /** + * Exit a parse tree produced by the {@code bracketRelationHint} + * labeled alternative in {@link DorisParser#relationHint}. + * @param ctx the parse tree + */ + void exitBracketRelationHint(DorisParser.BracketRelationHintContext ctx); + /** + * Enter a parse tree produced by the {@code commentRelationHint} + * labeled alternative in {@link DorisParser#relationHint}. + * @param ctx the parse tree + */ + void enterCommentRelationHint(DorisParser.CommentRelationHintContext ctx); + /** + * Exit a parse tree produced by the {@code commentRelationHint} + * labeled alternative in {@link DorisParser#relationHint}. + * @param ctx the parse tree + */ + void exitCommentRelationHint(DorisParser.CommentRelationHintContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#aggClause}. + * @param ctx the parse tree + */ + void enterAggClause(DorisParser.AggClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#aggClause}. + * @param ctx the parse tree + */ + void exitAggClause(DorisParser.AggClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#groupingElement}. + * @param ctx the parse tree + */ + void enterGroupingElement(DorisParser.GroupingElementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#groupingElement}. + * @param ctx the parse tree + */ + void exitGroupingElement(DorisParser.GroupingElementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#groupingSet}. + * @param ctx the parse tree + */ + void enterGroupingSet(DorisParser.GroupingSetContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#groupingSet}. + * @param ctx the parse tree + */ + void exitGroupingSet(DorisParser.GroupingSetContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#havingClause}. + * @param ctx the parse tree + */ + void enterHavingClause(DorisParser.HavingClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#havingClause}. + * @param ctx the parse tree + */ + void exitHavingClause(DorisParser.HavingClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#qualifyClause}. + * @param ctx the parse tree + */ + void enterQualifyClause(DorisParser.QualifyClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#qualifyClause}. + * @param ctx the parse tree + */ + void exitQualifyClause(DorisParser.QualifyClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#selectHint}. + * @param ctx the parse tree + */ + void enterSelectHint(DorisParser.SelectHintContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#selectHint}. + * @param ctx the parse tree + */ + void exitSelectHint(DorisParser.SelectHintContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#hintStatement}. + * @param ctx the parse tree + */ + void enterHintStatement(DorisParser.HintStatementContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#hintStatement}. + * @param ctx the parse tree + */ + void exitHintStatement(DorisParser.HintStatementContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#hintAssignment}. + * @param ctx the parse tree + */ + void enterHintAssignment(DorisParser.HintAssignmentContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#hintAssignment}. + * @param ctx the parse tree + */ + void exitHintAssignment(DorisParser.HintAssignmentContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#updateAssignment}. + * @param ctx the parse tree + */ + void enterUpdateAssignment(DorisParser.UpdateAssignmentContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#updateAssignment}. + * @param ctx the parse tree + */ + void exitUpdateAssignment(DorisParser.UpdateAssignmentContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#updateAssignmentSeq}. + * @param ctx the parse tree + */ + void enterUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#updateAssignmentSeq}. + * @param ctx the parse tree + */ + void exitUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#lateralView}. + * @param ctx the parse tree + */ + void enterLateralView(DorisParser.LateralViewContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#lateralView}. + * @param ctx the parse tree + */ + void exitLateralView(DorisParser.LateralViewContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#queryOrganization}. + * @param ctx the parse tree + */ + void enterQueryOrganization(DorisParser.QueryOrganizationContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#queryOrganization}. + * @param ctx the parse tree + */ + void exitQueryOrganization(DorisParser.QueryOrganizationContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#sortClause}. + * @param ctx the parse tree + */ + void enterSortClause(DorisParser.SortClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#sortClause}. + * @param ctx the parse tree + */ + void exitSortClause(DorisParser.SortClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#sortItem}. + * @param ctx the parse tree + */ + void enterSortItem(DorisParser.SortItemContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#sortItem}. + * @param ctx the parse tree + */ + void exitSortItem(DorisParser.SortItemContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#limitClause}. + * @param ctx the parse tree + */ + void enterLimitClause(DorisParser.LimitClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#limitClause}. + * @param ctx the parse tree + */ + void exitLimitClause(DorisParser.LimitClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionClause}. + * @param ctx the parse tree + */ + void enterPartitionClause(DorisParser.PartitionClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionClause}. + * @param ctx the parse tree + */ + void exitPartitionClause(DorisParser.PartitionClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#joinType}. + * @param ctx the parse tree + */ + void enterJoinType(DorisParser.JoinTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#joinType}. + * @param ctx the parse tree + */ + void exitJoinType(DorisParser.JoinTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#joinCriteria}. + * @param ctx the parse tree + */ + void enterJoinCriteria(DorisParser.JoinCriteriaContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#joinCriteria}. + * @param ctx the parse tree + */ + void exitJoinCriteria(DorisParser.JoinCriteriaContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identifierList}. + * @param ctx the parse tree + */ + void enterIdentifierList(DorisParser.IdentifierListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identifierList}. + * @param ctx the parse tree + */ + void exitIdentifierList(DorisParser.IdentifierListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identifierSeq}. + * @param ctx the parse tree + */ + void enterIdentifierSeq(DorisParser.IdentifierSeqContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identifierSeq}. + * @param ctx the parse tree + */ + void exitIdentifierSeq(DorisParser.IdentifierSeqContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#optScanParams}. + * @param ctx the parse tree + */ + void enterOptScanParams(DorisParser.OptScanParamsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#optScanParams}. + * @param ctx the parse tree + */ + void exitOptScanParams(DorisParser.OptScanParamsContext ctx); + /** + * Enter a parse tree produced by the {@code tableName} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterTableName(DorisParser.TableNameContext ctx); + /** + * Exit a parse tree produced by the {@code tableName} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitTableName(DorisParser.TableNameContext ctx); + /** + * Enter a parse tree produced by the {@code aliasedQuery} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterAliasedQuery(DorisParser.AliasedQueryContext ctx); + /** + * Exit a parse tree produced by the {@code aliasedQuery} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitAliasedQuery(DorisParser.AliasedQueryContext ctx); + /** + * Enter a parse tree produced by the {@code tableValuedFunction} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterTableValuedFunction(DorisParser.TableValuedFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code tableValuedFunction} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitTableValuedFunction(DorisParser.TableValuedFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code relationList} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void enterRelationList(DorisParser.RelationListContext ctx); + /** + * Exit a parse tree produced by the {@code relationList} + * labeled alternative in {@link DorisParser#relationPrimary}. + * @param ctx the parse tree + */ + void exitRelationList(DorisParser.RelationListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#materializedViewName}. + * @param ctx the parse tree + */ + void enterMaterializedViewName(DorisParser.MaterializedViewNameContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#materializedViewName}. + * @param ctx the parse tree + */ + void exitMaterializedViewName(DorisParser.MaterializedViewNameContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#propertyClause}. + * @param ctx the parse tree + */ + void enterPropertyClause(DorisParser.PropertyClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#propertyClause}. + * @param ctx the parse tree + */ + void exitPropertyClause(DorisParser.PropertyClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#propertyItemList}. + * @param ctx the parse tree + */ + void enterPropertyItemList(DorisParser.PropertyItemListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#propertyItemList}. + * @param ctx the parse tree + */ + void exitPropertyItemList(DorisParser.PropertyItemListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#propertyItem}. + * @param ctx the parse tree + */ + void enterPropertyItem(DorisParser.PropertyItemContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#propertyItem}. + * @param ctx the parse tree + */ + void exitPropertyItem(DorisParser.PropertyItemContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#propertyKey}. + * @param ctx the parse tree + */ + void enterPropertyKey(DorisParser.PropertyKeyContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#propertyKey}. + * @param ctx the parse tree + */ + void exitPropertyKey(DorisParser.PropertyKeyContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#propertyValue}. + * @param ctx the parse tree + */ + void enterPropertyValue(DorisParser.PropertyValueContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#propertyValue}. + * @param ctx the parse tree + */ + void exitPropertyValue(DorisParser.PropertyValueContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#tableAlias}. + * @param ctx the parse tree + */ + void enterTableAlias(DorisParser.TableAliasContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#tableAlias}. + * @param ctx the parse tree + */ + void exitTableAlias(DorisParser.TableAliasContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#multipartIdentifier}. + * @param ctx the parse tree + */ + void enterMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#multipartIdentifier}. + * @param ctx the parse tree + */ + void exitMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#simpleColumnDefs}. + * @param ctx the parse tree + */ + void enterSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#simpleColumnDefs}. + * @param ctx the parse tree + */ + void exitSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#simpleColumnDef}. + * @param ctx the parse tree + */ + void enterSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#simpleColumnDef}. + * @param ctx the parse tree + */ + void exitSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#columnDefs}. + * @param ctx the parse tree + */ + void enterColumnDefs(DorisParser.ColumnDefsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#columnDefs}. + * @param ctx the parse tree + */ + void exitColumnDefs(DorisParser.ColumnDefsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#columnDef}. + * @param ctx the parse tree + */ + void enterColumnDef(DorisParser.ColumnDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#columnDef}. + * @param ctx the parse tree + */ + void exitColumnDef(DorisParser.ColumnDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#indexDefs}. + * @param ctx the parse tree + */ + void enterIndexDefs(DorisParser.IndexDefsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#indexDefs}. + * @param ctx the parse tree + */ + void exitIndexDefs(DorisParser.IndexDefsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#indexDef}. + * @param ctx the parse tree + */ + void enterIndexDef(DorisParser.IndexDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#indexDef}. + * @param ctx the parse tree + */ + void exitIndexDef(DorisParser.IndexDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionsDef}. + * @param ctx the parse tree + */ + void enterPartitionsDef(DorisParser.PartitionsDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionsDef}. + * @param ctx the parse tree + */ + void exitPartitionsDef(DorisParser.PartitionsDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionDef}. + * @param ctx the parse tree + */ + void enterPartitionDef(DorisParser.PartitionDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionDef}. + * @param ctx the parse tree + */ + void exitPartitionDef(DorisParser.PartitionDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#lessThanPartitionDef}. + * @param ctx the parse tree + */ + void enterLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#lessThanPartitionDef}. + * @param ctx the parse tree + */ + void exitLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#fixedPartitionDef}. + * @param ctx the parse tree + */ + void enterFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#fixedPartitionDef}. + * @param ctx the parse tree + */ + void exitFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#stepPartitionDef}. + * @param ctx the parse tree + */ + void enterStepPartitionDef(DorisParser.StepPartitionDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#stepPartitionDef}. + * @param ctx the parse tree + */ + void exitStepPartitionDef(DorisParser.StepPartitionDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#inPartitionDef}. + * @param ctx the parse tree + */ + void enterInPartitionDef(DorisParser.InPartitionDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#inPartitionDef}. + * @param ctx the parse tree + */ + void exitInPartitionDef(DorisParser.InPartitionDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionValueList}. + * @param ctx the parse tree + */ + void enterPartitionValueList(DorisParser.PartitionValueListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionValueList}. + * @param ctx the parse tree + */ + void exitPartitionValueList(DorisParser.PartitionValueListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#partitionValueDef}. + * @param ctx the parse tree + */ + void enterPartitionValueDef(DorisParser.PartitionValueDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#partitionValueDef}. + * @param ctx the parse tree + */ + void exitPartitionValueDef(DorisParser.PartitionValueDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#rollupDefs}. + * @param ctx the parse tree + */ + void enterRollupDefs(DorisParser.RollupDefsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#rollupDefs}. + * @param ctx the parse tree + */ + void exitRollupDefs(DorisParser.RollupDefsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#rollupDef}. + * @param ctx the parse tree + */ + void enterRollupDef(DorisParser.RollupDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#rollupDef}. + * @param ctx the parse tree + */ + void exitRollupDef(DorisParser.RollupDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#aggTypeDef}. + * @param ctx the parse tree + */ + void enterAggTypeDef(DorisParser.AggTypeDefContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#aggTypeDef}. + * @param ctx the parse tree + */ + void exitAggTypeDef(DorisParser.AggTypeDefContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#tabletList}. + * @param ctx the parse tree + */ + void enterTabletList(DorisParser.TabletListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#tabletList}. + * @param ctx the parse tree + */ + void exitTabletList(DorisParser.TabletListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#inlineTable}. + * @param ctx the parse tree + */ + void enterInlineTable(DorisParser.InlineTableContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#inlineTable}. + * @param ctx the parse tree + */ + void exitInlineTable(DorisParser.InlineTableContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#namedExpression}. + * @param ctx the parse tree + */ + void enterNamedExpression(DorisParser.NamedExpressionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#namedExpression}. + * @param ctx the parse tree + */ + void exitNamedExpression(DorisParser.NamedExpressionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#namedExpressionSeq}. + * @param ctx the parse tree + */ + void enterNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#namedExpressionSeq}. + * @param ctx the parse tree + */ + void exitNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#expression}. + * @param ctx the parse tree + */ + void enterExpression(DorisParser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#expression}. + * @param ctx the parse tree + */ + void exitExpression(DorisParser.ExpressionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#lambdaExpression}. + * @param ctx the parse tree + */ + void enterLambdaExpression(DorisParser.LambdaExpressionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#lambdaExpression}. + * @param ctx the parse tree + */ + void exitLambdaExpression(DorisParser.LambdaExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code exist} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterExist(DorisParser.ExistContext ctx); + /** + * Exit a parse tree produced by the {@code exist} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitExist(DorisParser.ExistContext ctx); + /** + * Enter a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterLogicalNot(DorisParser.LogicalNotContext ctx); + /** + * Exit a parse tree produced by the {@code logicalNot} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitLogicalNot(DorisParser.LogicalNotContext ctx); + /** + * Enter a parse tree produced by the {@code predicated} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterPredicated(DorisParser.PredicatedContext ctx); + /** + * Exit a parse tree produced by the {@code predicated} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitPredicated(DorisParser.PredicatedContext ctx); + /** + * Enter a parse tree produced by the {@code isnull} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterIsnull(DorisParser.IsnullContext ctx); + /** + * Exit a parse tree produced by the {@code isnull} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitIsnull(DorisParser.IsnullContext ctx); + /** + * Enter a parse tree produced by the {@code is_not_null_pred} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterIs_not_null_pred(DorisParser.Is_not_null_predContext ctx); + /** + * Exit a parse tree produced by the {@code is_not_null_pred} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitIs_not_null_pred(DorisParser.Is_not_null_predContext ctx); + /** + * Enter a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterLogicalBinary(DorisParser.LogicalBinaryContext ctx); + /** + * Exit a parse tree produced by the {@code logicalBinary} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitLogicalBinary(DorisParser.LogicalBinaryContext ctx); + /** + * Enter a parse tree produced by the {@code doublePipes} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void enterDoublePipes(DorisParser.DoublePipesContext ctx); + /** + * Exit a parse tree produced by the {@code doublePipes} + * labeled alternative in {@link DorisParser#booleanExpression}. + * @param ctx the parse tree + */ + void exitDoublePipes(DorisParser.DoublePipesContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#rowConstructor}. + * @param ctx the parse tree + */ + void enterRowConstructor(DorisParser.RowConstructorContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#rowConstructor}. + * @param ctx the parse tree + */ + void exitRowConstructor(DorisParser.RowConstructorContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#rowConstructorItem}. + * @param ctx the parse tree + */ + void enterRowConstructorItem(DorisParser.RowConstructorItemContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#rowConstructorItem}. + * @param ctx the parse tree + */ + void exitRowConstructorItem(DorisParser.RowConstructorItemContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#predicate}. + * @param ctx the parse tree + */ + void enterPredicate(DorisParser.PredicateContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#predicate}. + * @param ctx the parse tree + */ + void exitPredicate(DorisParser.PredicateContext ctx); + /** + * Enter a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void enterValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code valueExpressionDefault} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void exitValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code comparison} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void enterComparison(DorisParser.ComparisonContext ctx); + /** + * Exit a parse tree produced by the {@code comparison} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void exitComparison(DorisParser.ComparisonContext ctx); + /** + * Enter a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void enterArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx); + /** + * Exit a parse tree produced by the {@code arithmeticBinary} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void exitArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx); + /** + * Enter a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void enterArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx); + /** + * Exit a parse tree produced by the {@code arithmeticUnary} + * labeled alternative in {@link DorisParser#valueExpression}. + * @param ctx the parse tree + */ + void exitArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx); + /** + * Enter a parse tree produced by the {@code dereference} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterDereference(DorisParser.DereferenceContext ctx); + /** + * Exit a parse tree produced by the {@code dereference} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitDereference(DorisParser.DereferenceContext ctx); + /** + * Enter a parse tree produced by the {@code currentDate} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCurrentDate(DorisParser.CurrentDateContext ctx); + /** + * Exit a parse tree produced by the {@code currentDate} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCurrentDate(DorisParser.CurrentDateContext ctx); + /** + * Enter a parse tree produced by the {@code cast} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCast(DorisParser.CastContext ctx); + /** + * Exit a parse tree produced by the {@code cast} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCast(DorisParser.CastContext ctx); + /** + * Enter a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code userVariable} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterUserVariable(DorisParser.UserVariableContext ctx); + /** + * Exit a parse tree produced by the {@code userVariable} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitUserVariable(DorisParser.UserVariableContext ctx); + /** + * Enter a parse tree produced by the {@code elementAt} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterElementAt(DorisParser.ElementAtContext ctx); + /** + * Exit a parse tree produced by the {@code elementAt} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitElementAt(DorisParser.ElementAtContext ctx); + /** + * Enter a parse tree produced by the {@code localTimestamp} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterLocalTimestamp(DorisParser.LocalTimestampContext ctx); + /** + * Exit a parse tree produced by the {@code localTimestamp} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitLocalTimestamp(DorisParser.LocalTimestampContext ctx); + /** + * Enter a parse tree produced by the {@code charFunction} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCharFunction(DorisParser.CharFunctionContext ctx); + /** + * Exit a parse tree produced by the {@code charFunction} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCharFunction(DorisParser.CharFunctionContext ctx); + /** + * Enter a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterIntervalLiteral(DorisParser.IntervalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code intervalLiteral} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitIntervalLiteral(DorisParser.IntervalLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSimpleCase(DorisParser.SimpleCaseContext ctx); + /** + * Exit a parse tree produced by the {@code simpleCase} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSimpleCase(DorisParser.SimpleCaseContext ctx); + /** + * Enter a parse tree produced by the {@code columnReference} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterColumnReference(DorisParser.ColumnReferenceContext ctx); + /** + * Exit a parse tree produced by the {@code columnReference} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitColumnReference(DorisParser.ColumnReferenceContext ctx); + /** + * Enter a parse tree produced by the {@code star} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterStar(DorisParser.StarContext ctx); + /** + * Exit a parse tree produced by the {@code star} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitStar(DorisParser.StarContext ctx); + /** + * Enter a parse tree produced by the {@code sessionUser} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSessionUser(DorisParser.SessionUserContext ctx); + /** + * Exit a parse tree produced by the {@code sessionUser} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSessionUser(DorisParser.SessionUserContext ctx); + /** + * Enter a parse tree produced by the {@code convertType} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterConvertType(DorisParser.ConvertTypeContext ctx); + /** + * Exit a parse tree produced by the {@code convertType} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitConvertType(DorisParser.ConvertTypeContext ctx); + /** + * Enter a parse tree produced by the {@code convertCharSet} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterConvertCharSet(DorisParser.ConvertCharSetContext ctx); + /** + * Exit a parse tree produced by the {@code convertCharSet} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitConvertCharSet(DorisParser.ConvertCharSetContext ctx); + /** + * Enter a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSubqueryExpression(DorisParser.SubqueryExpressionContext ctx); + /** + * Exit a parse tree produced by the {@code subqueryExpression} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSubqueryExpression(DorisParser.SubqueryExpressionContext ctx); + /** + * Enter a parse tree produced by the {@code encryptKey} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterEncryptKey(DorisParser.EncryptKeyContext ctx); + /** + * Exit a parse tree produced by the {@code encryptKey} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitEncryptKey(DorisParser.EncryptKeyContext ctx); + /** + * Enter a parse tree produced by the {@code currentTime} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCurrentTime(DorisParser.CurrentTimeContext ctx); + /** + * Exit a parse tree produced by the {@code currentTime} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCurrentTime(DorisParser.CurrentTimeContext ctx); + /** + * Enter a parse tree produced by the {@code localTime} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterLocalTime(DorisParser.LocalTimeContext ctx); + /** + * Exit a parse tree produced by the {@code localTime} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitLocalTime(DorisParser.LocalTimeContext ctx); + /** + * Enter a parse tree produced by the {@code systemVariable} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSystemVariable(DorisParser.SystemVariableContext ctx); + /** + * Exit a parse tree produced by the {@code systemVariable} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSystemVariable(DorisParser.SystemVariableContext ctx); + /** + * Enter a parse tree produced by the {@code collate} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCollate(DorisParser.CollateContext ctx); + /** + * Exit a parse tree produced by the {@code collate} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCollate(DorisParser.CollateContext ctx); + /** + * Enter a parse tree produced by the {@code currentUser} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCurrentUser(DorisParser.CurrentUserContext ctx); + /** + * Exit a parse tree produced by the {@code currentUser} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCurrentUser(DorisParser.CurrentUserContext ctx); + /** + * Enter a parse tree produced by the {@code constantDefault} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterConstantDefault(DorisParser.ConstantDefaultContext ctx); + /** + * Exit a parse tree produced by the {@code constantDefault} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitConstantDefault(DorisParser.ConstantDefaultContext ctx); + /** + * Enter a parse tree produced by the {@code extract} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterExtract(DorisParser.ExtractContext ctx); + /** + * Exit a parse tree produced by the {@code extract} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitExtract(DorisParser.ExtractContext ctx); + /** + * Enter a parse tree produced by the {@code currentTimestamp} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterCurrentTimestamp(DorisParser.CurrentTimestampContext ctx); + /** + * Exit a parse tree produced by the {@code currentTimestamp} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitCurrentTimestamp(DorisParser.CurrentTimestampContext ctx); + /** + * Enter a parse tree produced by the {@code functionCall} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterFunctionCall(DorisParser.FunctionCallContext ctx); + /** + * Exit a parse tree produced by the {@code functionCall} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitFunctionCall(DorisParser.FunctionCallContext ctx); + /** + * Enter a parse tree produced by the {@code arraySlice} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterArraySlice(DorisParser.ArraySliceContext ctx); + /** + * Exit a parse tree produced by the {@code arraySlice} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitArraySlice(DorisParser.ArraySliceContext ctx); + /** + * Enter a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void enterSearchedCase(DorisParser.SearchedCaseContext ctx); + /** + * Exit a parse tree produced by the {@code searchedCase} + * labeled alternative in {@link DorisParser#primaryExpression}. + * @param ctx the parse tree + */ + void exitSearchedCase(DorisParser.SearchedCaseContext ctx); + /** + * Enter a parse tree produced by the {@code except} + * labeled alternative in {@link DorisParser#exceptOrReplace}. + * @param ctx the parse tree + */ + void enterExcept(DorisParser.ExceptContext ctx); + /** + * Exit a parse tree produced by the {@code except} + * labeled alternative in {@link DorisParser#exceptOrReplace}. + * @param ctx the parse tree + */ + void exitExcept(DorisParser.ExceptContext ctx); + /** + * Enter a parse tree produced by the {@code replace} + * labeled alternative in {@link DorisParser#exceptOrReplace}. + * @param ctx the parse tree + */ + void enterReplace(DorisParser.ReplaceContext ctx); + /** + * Exit a parse tree produced by the {@code replace} + * labeled alternative in {@link DorisParser#exceptOrReplace}. + * @param ctx the parse tree + */ + void exitReplace(DorisParser.ReplaceContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#castDataType}. + * @param ctx the parse tree + */ + void enterCastDataType(DorisParser.CastDataTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#castDataType}. + * @param ctx the parse tree + */ + void exitCastDataType(DorisParser.CastDataTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#functionCallExpression}. + * @param ctx the parse tree + */ + void enterFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#functionCallExpression}. + * @param ctx the parse tree + */ + void exitFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#functionIdentifier}. + * @param ctx the parse tree + */ + void enterFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#functionIdentifier}. + * @param ctx the parse tree + */ + void exitFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#functionNameIdentifier}. + * @param ctx the parse tree + */ + void enterFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#functionNameIdentifier}. + * @param ctx the parse tree + */ + void exitFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#windowSpec}. + * @param ctx the parse tree + */ + void enterWindowSpec(DorisParser.WindowSpecContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#windowSpec}. + * @param ctx the parse tree + */ + void exitWindowSpec(DorisParser.WindowSpecContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#windowFrame}. + * @param ctx the parse tree + */ + void enterWindowFrame(DorisParser.WindowFrameContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#windowFrame}. + * @param ctx the parse tree + */ + void exitWindowFrame(DorisParser.WindowFrameContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#frameUnits}. + * @param ctx the parse tree + */ + void enterFrameUnits(DorisParser.FrameUnitsContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#frameUnits}. + * @param ctx the parse tree + */ + void exitFrameUnits(DorisParser.FrameUnitsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#frameBoundary}. + * @param ctx the parse tree + */ + void enterFrameBoundary(DorisParser.FrameBoundaryContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#frameBoundary}. + * @param ctx the parse tree + */ + void exitFrameBoundary(DorisParser.FrameBoundaryContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#qualifiedName}. + * @param ctx the parse tree + */ + void enterQualifiedName(DorisParser.QualifiedNameContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#qualifiedName}. + * @param ctx the parse tree + */ + void exitQualifiedName(DorisParser.QualifiedNameContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#specifiedPartition}. + * @param ctx the parse tree + */ + void enterSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#specifiedPartition}. + * @param ctx the parse tree + */ + void exitSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx); + /** + * Enter a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterNullLiteral(DorisParser.NullLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitNullLiteral(DorisParser.NullLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterTypeConstructor(DorisParser.TypeConstructorContext ctx); + /** + * Exit a parse tree produced by the {@code typeConstructor} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitTypeConstructor(DorisParser.TypeConstructorContext ctx); + /** + * Enter a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterNumericLiteral(DorisParser.NumericLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitNumericLiteral(DorisParser.NumericLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterBooleanLiteral(DorisParser.BooleanLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitBooleanLiteral(DorisParser.BooleanLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterStringLiteral(DorisParser.StringLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitStringLiteral(DorisParser.StringLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code arrayLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterArrayLiteral(DorisParser.ArrayLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code arrayLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitArrayLiteral(DorisParser.ArrayLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code mapLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterMapLiteral(DorisParser.MapLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code mapLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitMapLiteral(DorisParser.MapLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code structLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterStructLiteral(DorisParser.StructLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code structLiteral} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitStructLiteral(DorisParser.StructLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code placeholder} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void enterPlaceholder(DorisParser.PlaceholderContext ctx); + /** + * Exit a parse tree produced by the {@code placeholder} + * labeled alternative in {@link DorisParser#constant}. + * @param ctx the parse tree + */ + void exitPlaceholder(DorisParser.PlaceholderContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#comparisonOperator}. + * @param ctx the parse tree + */ + void enterComparisonOperator(DorisParser.ComparisonOperatorContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#comparisonOperator}. + * @param ctx the parse tree + */ + void exitComparisonOperator(DorisParser.ComparisonOperatorContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#booleanValue}. + * @param ctx the parse tree + */ + void enterBooleanValue(DorisParser.BooleanValueContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#booleanValue}. + * @param ctx the parse tree + */ + void exitBooleanValue(DorisParser.BooleanValueContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#whenClause}. + * @param ctx the parse tree + */ + void enterWhenClause(DorisParser.WhenClauseContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#whenClause}. + * @param ctx the parse tree + */ + void exitWhenClause(DorisParser.WhenClauseContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#interval}. + * @param ctx the parse tree + */ + void enterInterval(DorisParser.IntervalContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#interval}. + * @param ctx the parse tree + */ + void exitInterval(DorisParser.IntervalContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#unitIdentifier}. + * @param ctx the parse tree + */ + void enterUnitIdentifier(DorisParser.UnitIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#unitIdentifier}. + * @param ctx the parse tree + */ + void exitUnitIdentifier(DorisParser.UnitIdentifierContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#dataTypeWithNullable}. + * @param ctx the parse tree + */ + void enterDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#dataTypeWithNullable}. + * @param ctx the parse tree + */ + void exitDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx); + /** + * Enter a parse tree produced by the {@code complexDataType} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void enterComplexDataType(DorisParser.ComplexDataTypeContext ctx); + /** + * Exit a parse tree produced by the {@code complexDataType} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void exitComplexDataType(DorisParser.ComplexDataTypeContext ctx); + /** + * Enter a parse tree produced by the {@code variantPredefinedFields} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void enterVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx); + /** + * Exit a parse tree produced by the {@code variantPredefinedFields} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void exitVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx); + /** + * Enter a parse tree produced by the {@code aggStateDataType} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void enterAggStateDataType(DorisParser.AggStateDataTypeContext ctx); + /** + * Exit a parse tree produced by the {@code aggStateDataType} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void exitAggStateDataType(DorisParser.AggStateDataTypeContext ctx); + /** + * Enter a parse tree produced by the {@code primitiveDataType} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void enterPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx); + /** + * Exit a parse tree produced by the {@code primitiveDataType} + * labeled alternative in {@link DorisParser#dataType}. + * @param ctx the parse tree + */ + void exitPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#primitiveColType}. + * @param ctx the parse tree + */ + void enterPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#primitiveColType}. + * @param ctx the parse tree + */ + void exitPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#complexColTypeList}. + * @param ctx the parse tree + */ + void enterComplexColTypeList(DorisParser.ComplexColTypeListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#complexColTypeList}. + * @param ctx the parse tree + */ + void exitComplexColTypeList(DorisParser.ComplexColTypeListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#complexColType}. + * @param ctx the parse tree + */ + void enterComplexColType(DorisParser.ComplexColTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#complexColType}. + * @param ctx the parse tree + */ + void exitComplexColType(DorisParser.ComplexColTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#variantSubColTypeList}. + * @param ctx the parse tree + */ + void enterVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#variantSubColTypeList}. + * @param ctx the parse tree + */ + void exitVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#variantSubColType}. + * @param ctx the parse tree + */ + void enterVariantSubColType(DorisParser.VariantSubColTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#variantSubColType}. + * @param ctx the parse tree + */ + void exitVariantSubColType(DorisParser.VariantSubColTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#variantSubColMatchType}. + * @param ctx the parse tree + */ + void enterVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#variantSubColMatchType}. + * @param ctx the parse tree + */ + void exitVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#commentSpec}. + * @param ctx the parse tree + */ + void enterCommentSpec(DorisParser.CommentSpecContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#commentSpec}. + * @param ctx the parse tree + */ + void exitCommentSpec(DorisParser.CommentSpecContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#sample}. + * @param ctx the parse tree + */ + void enterSample(DorisParser.SampleContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#sample}. + * @param ctx the parse tree + */ + void exitSample(DorisParser.SampleContext ctx); + /** + * Enter a parse tree produced by the {@code sampleByPercentile} + * labeled alternative in {@link DorisParser#sampleMethod}. + * @param ctx the parse tree + */ + void enterSampleByPercentile(DorisParser.SampleByPercentileContext ctx); + /** + * Exit a parse tree produced by the {@code sampleByPercentile} + * labeled alternative in {@link DorisParser#sampleMethod}. + * @param ctx the parse tree + */ + void exitSampleByPercentile(DorisParser.SampleByPercentileContext ctx); + /** + * Enter a parse tree produced by the {@code sampleByRows} + * labeled alternative in {@link DorisParser#sampleMethod}. + * @param ctx the parse tree + */ + void enterSampleByRows(DorisParser.SampleByRowsContext ctx); + /** + * Exit a parse tree produced by the {@code sampleByRows} + * labeled alternative in {@link DorisParser#sampleMethod}. + * @param ctx the parse tree + */ + void exitSampleByRows(DorisParser.SampleByRowsContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#tableSnapshot}. + * @param ctx the parse tree + */ + void enterTableSnapshot(DorisParser.TableSnapshotContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#tableSnapshot}. + * @param ctx the parse tree + */ + void exitTableSnapshot(DorisParser.TableSnapshotContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#errorCapturingIdentifier}. + * @param ctx the parse tree + */ + void enterErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#errorCapturingIdentifier}. + * @param ctx the parse tree + */ + void exitErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code errorIdent} + * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void enterErrorIdent(DorisParser.ErrorIdentContext ctx); + /** + * Exit a parse tree produced by the {@code errorIdent} + * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void exitErrorIdent(DorisParser.ErrorIdentContext ctx); + /** + * Enter a parse tree produced by the {@code realIdent} + * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void enterRealIdent(DorisParser.RealIdentContext ctx); + /** + * Exit a parse tree produced by the {@code realIdent} + * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. + * @param ctx the parse tree + */ + void exitRealIdent(DorisParser.RealIdentContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#identifier}. + * @param ctx the parse tree + */ + void enterIdentifier(DorisParser.IdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#identifier}. + * @param ctx the parse tree + */ + void exitIdentifier(DorisParser.IdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link DorisParser#strictIdentifier}. + * @param ctx the parse tree + */ + void enterUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx); + /** + * Exit a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link DorisParser#strictIdentifier}. + * @param ctx the parse tree + */ + void exitUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code quotedIdentifierAlternative} + * labeled alternative in {@link DorisParser#strictIdentifier}. + * @param ctx the parse tree + */ + void enterQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx); + /** + * Exit a parse tree produced by the {@code quotedIdentifierAlternative} + * labeled alternative in {@link DorisParser#strictIdentifier}. + * @param ctx the parse tree + */ + void exitQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#quotedIdentifier}. + * @param ctx the parse tree + */ + void enterQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#quotedIdentifier}. + * @param ctx the parse tree + */ + void exitQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx); + /** + * Enter a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link DorisParser#number}. + * @param ctx the parse tree + */ + void enterIntegerLiteral(DorisParser.IntegerLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link DorisParser#number}. + * @param ctx the parse tree + */ + void exitIntegerLiteral(DorisParser.IntegerLiteralContext ctx); + /** + * Enter a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link DorisParser#number}. + * @param ctx the parse tree + */ + void enterDecimalLiteral(DorisParser.DecimalLiteralContext ctx); + /** + * Exit a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link DorisParser#number}. + * @param ctx the parse tree + */ + void exitDecimalLiteral(DorisParser.DecimalLiteralContext ctx); + /** + * Enter a parse tree produced by {@link DorisParser#nonReserved}. + * @param ctx the parse tree + */ + void enterNonReserved(DorisParser.NonReservedContext ctx); + /** + * Exit a parse tree produced by {@link DorisParser#nonReserved}. + * @param ctx the parse tree + */ + void exitNonReserved(DorisParser.NonReservedContext ctx); +} \ No newline at end of file diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java index 66eb57c04474ce..d14a42c40668a3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java @@ -19,11 +19,14 @@ import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.common.AnalysisException; +import org.apache.doris.nereids.trees.plans.commands.info.IndexDefinition; +import org.apache.doris.nereids.types.DataType; import org.apache.doris.thrift.TInvertedIndexFileStorageFormat; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -258,4 +261,29 @@ public static void checkInvertedIndexProperties(Map properties, } } } + + public static boolean canHaveMultipleInvertedIndexes(DataType colType, List indexDefs) { + if (indexDefs.size() == 0 || indexDefs.size() == 1) { + return true; + } + if (!colType.isStringLikeType() && !colType.isVariantType()) { + return false; + } + if (indexDefs.size() > 2) { + return false; + } + boolean findParsedInvertedIndex = false; + boolean findNonParsedInvertedIndex = false; + for (IndexDefinition indexDef : indexDefs) { + if (indexDef.isAnalyzedInvertedIndex()) { + findParsedInvertedIndex = true; + } else { + findNonParsedInvertedIndex = true; + } + } + if (findParsedInvertedIndex && findNonParsedInvertedIndex) { + return true; + } + return false; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java index 642a9d7891f93f..bb6f3087832a98 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java @@ -38,7 +38,6 @@ import org.apache.doris.common.ErrorReport; import org.apache.doris.common.FeConstants; import org.apache.doris.common.FeNameFormat; -import org.apache.doris.common.Pair; import org.apache.doris.common.util.AutoBucketUtils; import org.apache.doris.common.util.GeneratedColumnUtil; import org.apache.doris.common.util.InternalDatabaseUtil; @@ -143,7 +142,7 @@ public class CreateTableInfo { private String clusterName = null; private List clusterKeysColumnNames = null; private PartitionTableInfo partitionTableInfo; // get when validate - private Map> columnToIndexes = new HashMap<>(); + private Map>> columnToIndexes = new HashMap<>(); /** * constructor for create table @@ -678,9 +677,6 @@ public void validate(ConnectContext ctx) { Set distinct = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); boolean disableInvertedIndexV1ForVariant = false; - Set>> nonInvertedIndexes = new HashSet<>(); - Map, Set> invertedIndexes = new HashMap<>(); - TInvertedIndexFileStorageFormat invertedIndexFileStorageFormat; try { invertedIndexFileStorageFormat = PropertyAnalyzer.analyzeInvertedIndexFileStorageFormat( @@ -704,7 +700,9 @@ public void validate(ConnectContext ctx) { indexDef.checkColumn(column, keysType, isEnableMergeOnWrite, invertedIndexFileStorageFormat, disableInvertedIndexV1ForVariant); found = true; - columnToIndexes.computeIfAbsent(column, k -> new ArrayList<>()).add(indexDef); + columnToIndexes.computeIfAbsent(column, k -> new HashMap<>()) + .computeIfAbsent(indexDef.getIndexType(), k -> new ArrayList<>()) + .add(indexDef); break; } } @@ -714,23 +712,6 @@ public void validate(ConnectContext ctx) { } } distinct.add(indexDef.getIndexName()); - - List colNames = indexDef.getColumnNames().stream() - .map(String::toUpperCase) - .collect(Collectors.toList()); - if (indexDef.isAllStringInvertedIndex(columns)) { - boolean isAnalyzed = indexDef.isAnalyzedInvertedIndex(); - Set analyzedSet = invertedIndexes.computeIfAbsent(colNames, k -> new HashSet<>()); - if (!analyzedSet.add(isAnalyzed)) { - throw new AnalysisException( - "Duplicate inverted index with same analyzed property on columns: " + colNames); - } - } else { - Pair> pair = Pair.of(indexDef.getIndexType(), colNames); - if (!nonInvertedIndexes.add(pair)) { - throw new AnalysisException("Duplicate index type and columns: " + pair); - } - } } if (distinct.size() != indexes.size()) { throw new AnalysisException("index name must be unique."); @@ -1009,53 +990,77 @@ private void generatedColumnCommonCheck() { // 1. if the column is variant type, check it's field pattern is valid // 2. if the column is not variant type, check it's index def is valid private void columnToIndexesCheck() { - for (Map.Entry> entry : columnToIndexes.entrySet()) { + for (Map.Entry>> entry : columnToIndexes.entrySet()) { ColumnDefinition column = entry.getKey(); - List indexDefs = entry.getValue(); - if (column.getType().isVariantType()) { - int variantIndex = 0; - for (IndexDefinition indexDef : indexDefs) { - if (indexDef.getIndexType() != IndexType.INVERTED) { - throw new AnalysisException("column:" + column.getName() + " can only have inverted index."); - } - String fieldPattern = InvertedIndexUtil.getInvertedIndexFieldPattern(indexDef.getProperties()); - if (fieldPattern.isEmpty()) { - ++variantIndex; + Map> indexTypeToIndexDefs = entry.getValue(); + for (Map.Entry> indexDefEntry : indexTypeToIndexDefs.entrySet()) { + IndexType indexType = indexDefEntry.getKey(); + List indexDefs = indexDefEntry.getValue(); + if (indexType != IndexType.INVERTED) { + if (indexDefs.size() > 1) { + throw new AnalysisException("column: " + column.getName() + + " cannot have multiple indexes, index type: " + indexType); + } else { continue; } - boolean findFieldPattern = false; - boolean fieldSupportedIndex = false; - VariantType variantType = (VariantType) column.getType(); - List predefinedFields = variantType.getPredefinedFields(); - for (VariantField field : predefinedFields) { - if (field.getPattern().equals(fieldPattern)) { - findFieldPattern = true; - fieldSupportedIndex = IndexDefinition.isSupportIdxType(field.getDataType()); - break; + } + + // check inverted index + if (column.getType().isVariantType()) { + Map> fieldPatternToIndexDef = new HashMap<>(); + Map fieldPatternToDataType = new HashMap<>(); + for (IndexDefinition indexDef : indexDefs) { + String fieldPattern = InvertedIndexUtil.getInvertedIndexFieldPattern(indexDef.getProperties()); + if (fieldPattern.isEmpty()) { + fieldPatternToIndexDef.computeIfAbsent(fieldPattern, k -> new ArrayList<>()).add(indexDef); + fieldPatternToDataType.put(fieldPattern, column.getType()); + continue; + } + boolean findFieldPattern = false; + VariantType variantType = (VariantType) column.getType(); + List predefinedFields = variantType.getPredefinedFields(); + for (VariantField field : predefinedFields) { + if (field.getPattern().equals(fieldPattern)) { + findFieldPattern = true; + if (!IndexDefinition.isSupportIdxType(field.getDataType())) { + throw new AnalysisException("field pattern: " + + fieldPattern + " is not supported for inverted index" + + " of column: " + column.getName()); + } + fieldPatternToIndexDef.computeIfAbsent(fieldPattern, k -> new ArrayList<>()) + .add(indexDef); + fieldPatternToDataType.put(fieldPattern, field.getDataType()); + break; + } + } + if (!findFieldPattern) { + throw new AnalysisException("can not find field pattern: " + fieldPattern + + " in column: " + column.getName()); + } + } + for (Map.Entry> fieldIndexEntry : fieldPatternToIndexDef.entrySet()) { + String fieldPattern = fieldIndexEntry.getKey(); + List fieldPatternIndexDefs = fieldIndexEntry.getValue(); + DataType dataType = fieldPatternToDataType.get(fieldPattern); + if (!InvertedIndexUtil.canHaveMultipleInvertedIndexes(dataType, fieldPatternIndexDefs)) { + throw new AnalysisException("column: " + + column.getName() + + " cannot have multiple inverted indexes with field pattern: " + + fieldPattern); } } - if (!findFieldPattern) { - throw new AnalysisException("can not find field pattern: " + fieldPattern - + " in column: " + column.getName()); + } else { + for (IndexDefinition indexDef : indexDefs) { + if (!InvertedIndexUtil.getInvertedIndexFieldPattern(indexDef.getProperties()).isEmpty()) { + throw new AnalysisException("column: " + column.getName() + + " cannot have field pattern in index."); + } } - if (!fieldSupportedIndex) { - throw new AnalysisException("field pattern: " - + fieldPattern + " is not supported for inverted index" - + " of column: " + column.getName()); + if (!InvertedIndexUtil.canHaveMultipleInvertedIndexes(column.getType(), indexDefs)) { + throw new AnalysisException("column: " + column.getName() + + " cannot have multiple inverted indexes."); } } - if (variantIndex > 1) { - throw new AnalysisException("column: " + column.getName() - + " can only have one inverted index without field pattern."); - } - } else { - if (indexDefs.size() > 1) { - throw new AnalysisException("column: " + column.getName() + " cannot have multiple indexes."); - } - IndexDefinition indexDef = indexDefs.get(0); - if (!InvertedIndexUtil.getInvertedIndexFieldPattern(indexDef.getProperties()).isEmpty()) { - throw new AnalysisException("column: " + column.getName() + " cannot have field pattern in index."); - } } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java index 874929a791f850..58b6dd10461ead 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/IndexDefinition.java @@ -324,37 +324,4 @@ public boolean isNonAnalyzedInvertedIndex() { && (properties == null || !properties.containsKey(InvertedIndexUtil.INVERTED_INDEX_PARSER_KEY)); } - - /** - * Check whether all columns in this INVERTED index are of string type. - */ - public boolean isAllStringInvertedIndex(List columns) throws AnalysisException { - if (indexType != IndexType.INVERTED) { - return false; - } - - for (String indexColName : getColumnNames()) { - ColumnDefinition targetColumn = null; - for (ColumnDefinition column : columns) { - if (column.getName().equalsIgnoreCase(indexColName)) { - targetColumn = column; - break; - } - } - - if (targetColumn == null) { - throw new AnalysisException( - "Column does not exist in table. invalid column: " + indexColName); - } - - boolean isString = targetColumn.getType().isCharType() - || targetColumn.getType().isVarcharType() - || targetColumn.getType().isStringType(); - - if (!isString) { - return false; - } - } - return true; - } } diff --git a/regression-test/data/variant_p0/predefine/test_predefine_type_multi_index.out b/regression-test/data/variant_p0/predefine/test_predefine_type_multi_index.out new file mode 100644 index 00000000000000..c133b7bcb77050 --- /dev/null +++ b/regression-test/data/variant_p0/predefine/test_predefine_type_multi_index.out @@ -0,0 +1,19 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +3 + +-- !sql -- +3 + +-- !sql -- +13 + +-- !sql -- +13 + +-- !sql -- +13 + +-- !sql -- +13 + diff --git a/regression-test/data/variant_p1/predefine/load.out b/regression-test/data/variant_p1/predefine/load.out new file mode 100644 index 00000000000000..1e6975623acbab --- /dev/null +++ b/regression-test/data/variant_p1/predefine/load.out @@ -0,0 +1,91 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +apache/spark +apache/spark +apache/spark +apache/incubator-pekko +apache/spark +apache/spark +apache/spark +apache/spark +apache/infrastructure-puppet +apache/spark + +-- !sql -- +AttackOnDobby/iOS-Core-Animation-Advanced-Techniques +AttackOnDobby/iOS-Core-Animation-Advanced-Techniques +Avaiga/taipy-core +BrightspaceUI/core +ChutimaNakaew/lab11-core +ChutimaNakaew/lab11-core +CtrlAltT0m/Cyber-Core-Skills-Course +CyanogenMod/android_system_core +CyanogenMod/android_system_core +CyanogenMod/android_system_core + +-- !sql -- +xpressengine/xe-core +xpressengine/xe-core +xpressengine/xe-core +xpressengine/xe-core + +-- !sql -- +Jennyhz7/Container-Apache +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/arrow +apache/arrow + +-- !sql -- +AttackOnDobby/iOS-Core-Animation-Advanced-Techniques +AttackOnDobby/iOS-Core-Animation-Advanced-Techniques +Avaiga/taipy-core +BrightspaceUI/core +ChutimaNakaew/lab11-core +ChutimaNakaew/lab11-core +CtrlAltT0m/Cyber-Core-Skills-Course +CyanogenMod/android_system_core +CyanogenMod/android_system_core +CyanogenMod/android_system_core + +-- !sql -- +xpressengine/xe-core +xpressengine/xe-core +xpressengine/xe-core +xpressengine/xe-core + +-- !sql -- +Jennyhz7/Container-Apache +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/airflow +apache/arrow +apache/arrow + +-- !sql -- +AttackOnDobby/iOS-Core-Animation-Advanced-Techniques +AttackOnDobby/iOS-Core-Animation-Advanced-Techniques +Avaiga/taipy-core +BrightspaceUI/core +ChutimaNakaew/lab11-core +ChutimaNakaew/lab11-core +CtrlAltT0m/Cyber-Core-Skills-Course +CyanogenMod/android_system_core +CyanogenMod/android_system_core +CyanogenMod/android_system_core + +-- !sql -- +xpressengine/xe-core +xpressengine/xe-core +xpressengine/xe-core +xpressengine/xe-core + diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy index 40f351bdd2b9fd..26e839e4cbaeb5 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy @@ -275,4 +275,79 @@ suite("test_predefine_ddl", "p0"){ findException = true } assertTrue(findException) + + findException = false + try { + sql "DROP TABLE IF EXISTS test_ddl_table" + sql """CREATE TABLE test_ddl_table ( + `id` bigint NULL, + `var` variant< + MATCH_NAME 'ab' : int + > NULL, + INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '', + INDEX idx_ab_2 (var) USING INVERTED PROPERTIES("field_pattern"="ab") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" + } catch (Exception e) { + log.info(e.getMessage()) + assertTrue(e.getMessage().contains("column: var cannot have multiple inverted indexes with field pattern: ab")) + findException = true + } + assertTrue(findException) + + findException = false + try { + sql "DROP TABLE IF EXISTS test_ddl_table" + sql """CREATE TABLE test_ddl_table ( + `id` bigint NULL, + `var` variant< + MATCH_NAME 'ab' : string + > NULL, + INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '', + INDEX idx_ab_2 (var) USING INVERTED PROPERTIES("field_pattern"="ab") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" + } catch (Exception e) { + log.info(e.getMessage()) + findException = true + } + assertFalse(findException) + + findException = false + try { + sql "DROP TABLE IF EXISTS test_ddl_table" + sql """CREATE TABLE test_ddl_table ( + `id` bigint NULL, + `var` variant< + MATCH_NAME 'ab' : string + > NULL, + INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '', + INDEX idx_ab_2 (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" + } catch (Exception e) { + log.info(e.getMessage()) + assertTrue(e.getMessage().contains("column: var cannot have multiple inverted indexes with field pattern: ab")) + findException = true + } + assertTrue(findException) + + findException = false + try { + sql "DROP TABLE IF EXISTS test_ddl_table" + sql """CREATE TABLE test_ddl_table ( + `id` bigint NULL, + `var` variant< + MATCH_NAME 'ab' : string + > NULL, + INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab") COMMENT '', + INDEX idx_ab_2 (var) USING INVERTED PROPERTIES("field_pattern"="ab") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" + } catch (Exception e) { + log.info(e.getMessage()) + assertTrue(e.getMessage().contains("column: var cannot have multiple inverted indexes with field pattern: ab")) + findException = true + } + assertTrue(findException) } \ No newline at end of file diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy new file mode 100644 index 00000000000000..4f6520837820e8 --- /dev/null +++ b/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy @@ -0,0 +1,60 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_variant_predefine_type_multi_index", "p0"){ + sql """ set describe_extend_variant_column = true """ + sql """ set enable_match_without_inverted_index = false """ + sql """ set enable_common_expr_pushdown = true """ + + def tableName = "test_variant_predefine_type_multi_index" + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( + `id` bigint NULL, + `var` variant < + MATCH_NAME 'path.string' : string + > NULL, + INDEX idx_a_d (var) USING INVERTED PROPERTIES("field_pattern"="path.string", "parser"="unicode", "support_phrase" = "true") COMMENT '', + INDEX idx_a_d_2 (var) USING INVERTED PROPERTIES("field_pattern"="path.string") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10")""" + + sql """insert into ${tableName} values(1, '{"path" : {"int" : 123, "decimal" : 123.123456789012, "string" : "hello"}}'), + (2, '{"path" : {"int" : 456, "decimal" : 456.456789123456, "string" : "world"}}'), + (3, '{"path" : {"int" : 789, "decimal" : 789.789123456789, "string" : "hello"}}'), + (4, '{"path" : {"int" : 100, "decimal" : 100.100123456789, "string" : "world"}}'), + (5, '{"path" : {"int" : 111, "decimal" : 111.111111111111, "string" : "hello"}}')""" + + sql """ set profile_level = 2""" + sql """ set inverted_index_skip_threshold = 0 """ + sql """ set enable_common_expr_pushdown = true """ + sql """ set enable_match_without_inverted_index = false """ + + qt_sql """ select count() from ${tableName} where var['path']['string'] match 'hello' """ + qt_sql """ select count() from ${tableName} where var['path']['string'] = 'hello' """ + + for (int i = 0; i < 10; i++) { + sql """ insert into ${tableName} values(1, '{"path" : {"int" : 123, "decimal" : 123.123456789012, "string" : "hello"}}') """ + } + + trigger_and_wait_compaction(tableName, "cumulative") + + + qt_sql """ select count() from ${tableName} where var['path']['string'] match 'hello' """ + qt_sql """ select count() from ${tableName} where var['path']['string'] = 'hello' """ + + qt_sql """ select count() from ${tableName} where var['path']['string'] match 'hello' """ + qt_sql """ select count() from ${tableName} where var['path']['string'] = 'hello' """ +} \ No newline at end of file diff --git a/regression-test/suites/variant_p1/predefine/load.groovy b/regression-test/suites/variant_p1/predefine/load.groovy new file mode 100644 index 00000000000000..313fe4826ef9b7 --- /dev/null +++ b/regression-test/suites/variant_p1/predefine/load.groovy @@ -0,0 +1,110 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import org.codehaus.groovy.runtime.IOGroovyMethods + +suite("test_predefine_type_multi_index", "p1"){ + + def load_json_data = {table_name, file_name -> + // load the json data + streamLoad { + table "${table_name}" + + // set http request header params + set 'read_json_by_line', 'true' + set 'format', 'json' + set 'max_filter_ratio', '0.1' + set 'memtable_on_sink_node', 'true' + file file_name // import json file + time 10000 // limit inflight 10s + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + logger.info("Stream load ${file_name} result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + // assertEquals(json.NumberTotalRows, json.NumberLoadedRows + json.NumberUnselectedRows) + assertTrue(json.NumberLoadedRows > 0 && json.LoadBytes > 0) + } + } + } + + def table_name = "github_events" + sql """DROP TABLE IF EXISTS ${table_name}""" + table_name = "github_events" + int rand_subcolumns_count = Math.floor(Math.random() * (611 - 511 + 1)) + 400 + // int rand_subcolumns_count = 0; + sql """ drop table if exists github_events_2 """ + sql """ + CREATE TABLE IF NOT EXISTS ${table_name} ( + k bigint, + v variant< + MATCH_NAME 'repo.name' : string, + MATCH_NAME 'payload.pull_request.additions' : int, + MATCH_NAME 'actor.login' : string, + MATCH_NAME 'type' : string, + MATCH_NAME 'payload.action' : string, + MATCH_NAME 'created_at' : datetime, + MATCH_NAME 'payload.issue.number' : int, + MATCH_NAME 'payload.comment.body' : string, + MATCH_NAME 'type.name' : string + > NULL, + INDEX idx_var (`v`) USING INVERTED PROPERTIES("parser" = "english", "support_phrase" = "true"), + INDEX idx_var_2 (`v`) USING INVERTED + ) + DUPLICATE KEY(`k`) + DISTRIBUTED BY HASH(k) BUCKETS 4 + properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_enable_flatten_nested" = "false", "variant_max_subcolumns_count" = "${rand_subcolumns_count}"); + """ + + // 2015 + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2015-01-01-0.json'}""") + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2015-01-01-1.json'}""") + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2015-01-01-2.json'}""") + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2015-01-01-3.json'}""") + + // 2022 + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-16.json'}""") + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-10.json'}""") + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-22.json'}""") + load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-23.json'}""") + + sql """set enable_match_without_inverted_index = false""" + sql """ set enable_common_expr_pushdown = true """ + + qt_sql """select cast(v["repo"]["name"] as string) from github_events where v["repo"]["name"] match 'apache' order by k limit 10;""" + qt_sql """select cast(v["repo"]["name"] as string) from github_events where cast(v["repo"]["name"] as string) match 'xpressengine/xe-core' order by 1 limit 10;""" + qt_sql """select cast(v["repo"]["name"] as string) from github_events where cast(v["repo"]["name"] as string) = 'xpressengine/xe-core' order by 1 limit 10""" + + sql """ drop table if exists github_events_2 """ + sql """ create table github_events_2 like github_events """ + sql """ insert into github_events_2 select * from github_events """ + + trigger_and_wait_compaction(table_name, "cumulative") + qt_sql """select cast(v["repo"]["name"] as string) from github_events where v["repo"]["name"] match 'apache' order by 1 limit 10;""" + qt_sql """select cast(v["repo"]["name"] as string) from github_events where cast(v["repo"]["name"] as string) match 'xpressengine/xe-core' order by 1 limit 10;""" + qt_sql """select cast(v["repo"]["name"] as string) from github_events where cast(v["repo"]["name"] as string) = 'xpressengine/xe-core' order by 1 limit 10""" + + qt_sql """select cast(v["repo"]["name"] as string) from github_events_2 where v["repo"]["name"] match 'apache' order by 1 limit 10;""" + qt_sql """select cast(v["repo"]["name"] as string) from github_events_2 where cast(v["repo"]["name"] as string) match 'xpressengine/xe-core' order by 1 limit 10;""" + qt_sql """select cast(v["repo"]["name"] as string) from github_events_2 where cast(v["repo"]["name"] as string) = 'xpressengine/xe-core' order by 1 limit 10""" +} From a1d92bad6117ade22ec06bde5d68d36f9203cad4 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Thu, 24 Apr 2025 15:33:32 +0800 Subject: [PATCH 5/8] delete unused --- .../doris/nereids/.antlr/DorisLexer.interp | 1653 - .../doris/nereids/.antlr/DorisLexer.java | 3843 -- .../doris/nereids/.antlr/DorisLexer.tokens | 1067 - .../doris/nereids/.antlr/DorisParser.interp | 1328 - .../doris/nereids/.antlr/DorisParser.java | 53737 ---------------- .../doris/nereids/.antlr/DorisParser.tokens | 1067 - .../.antlr/DorisParserBaseListener.java | 7263 --- .../nereids/.antlr/DorisParserListener.java | 6893 -- 8 files changed, 76851 deletions(-) delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java delete mode 100644 fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp deleted file mode 100644 index 19049a01d60486..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.interp +++ /dev/null @@ -1,1653 +0,0 @@ -token literal names: -null -';' -'(' -')' -',' -'.' -'...' -'[' -']' -'{' -'}' -'ACCOUNT_LOCK' -'ACCOUNT_UNLOCK' -'ACTIONS' -'ADD' -'ADMIN' -'AFTER' -'AGG_STATE' -'AGGREGATE' -'ALIAS' -'ALL' -'ALTER' -'ANALYZE' -'ANALYZED' -'AND' -'ANTI' -'APPEND' -'ARRAY' -'AS' -'ASC' -'AT' -'AUTHORS' -'AUTO' -'AUTO_INCREMENT' -'ALWAYS' -'BACKEND' -'BACKENDS' -'BACKUP' -'BEGIN' -'BELONG' -'BETWEEN' -'BIGINT' -'BIN' -'BINARY' -'BINLOG' -'BITAND' -'BITMAP' -'BITMAP_EMPTY' -'BITMAP_UNION' -'BITOR' -'BITXOR' -'BLOB' -'BOOLEAN' -'BRIEF' -'BROKER' -'BUCKETS' -'BUILD' -'BUILTIN' -'BULK' -'BY' -'CACHE' -'CACHED' -'CALL' -'CANCEL' -'CASE' -'CAST' -'CATALOG' -'CATALOGS' -'CHAIN' -null -'CHARSET' -'CHECK' -'CLEAN' -'CLUSTER' -'CLUSTERS' -'COLLATE' -'COLLATION' -'COLLECT' -'COLOCATE' -'COLUMN' -'COLUMNS' -'COMMENT' -'COMMIT' -'COMMITTED' -'COMPACT' -'COMPLETE' -'COMPRESS_TYPE' -'COMPUTE' -'CONDITIONS' -'CONFIG' -'CONNECTION' -'CONNECTION_ID' -'CONSISTENT' -'CONSTRAINT' -'CONSTRAINTS' -'CONVERT' -'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS' -'COPY' -'COUNT' -'CREATE' -'CREATION' -'CRON' -'CROSS' -'CUBE' -'CURRENT' -'CURRENT_CATALOG' -'CURRENT_DATE' -'CURRENT_TIME' -'CURRENT_TIMESTAMP' -'CURRENT_USER' -'DATA' -'DATABASE' -'DATABASES' -'DATE' -'DATETIME' -'DATETIMEV2' -'DATEV2' -'DATETIMEV1' -'DATEV1' -'DAY' -'DECIMAL' -'DECIMALV2' -'DECIMALV3' -'DECOMMISSION' -'DEFAULT' -'DEFERRED' -'DELETE' -'DEMAND' -'DESC' -'DESCRIBE' -'DIAGNOSE' -'DIAGNOSIS' -'DISK' -'DISTINCT' -'DISTINCTPC' -'DISTINCTPCSA' -'DISTRIBUTED' -'DISTRIBUTION' -'DIV' -'DO' -'DORIS_INTERNAL_TABLE_ID' -'DOUBLE' -'DROP' -'DROPP' -'DUAL' -'DUMP' -'DUPLICATE' -'DYNAMIC' -'E' -'ELSE' -'ENABLE' -'ENCRYPTKEY' -'ENCRYPTKEYS' -'END' -'ENDS' -'ENGINE' -'ENGINES' -'ENTER' -'ERRORS' -'EVENTS' -'EVERY' -'EXCEPT' -'EXCLUDE' -'EXECUTE' -'EXISTS' -'EXPIRED' -'EXPLAIN' -'EXPORT' -'EXTENDED' -'EXTERNAL' -'EXTRACT' -'FAILED_LOGIN_ATTEMPTS' -'FALSE' -'FAST' -'FEATURE' -'FIELDS' -'FILE' -'FILTER' -'FIRST' -'FLOAT' -'FOLLOWER' -'FOLLOWING' -'FOR' -'FOREIGN' -'FORCE' -'FORMAT' -'FREE' -'FROM' -'FRONTEND' -'FRONTENDS' -'FULL' -'FUNCTION' -'FUNCTIONS' -'GENERATED' -'GENERIC' -'GLOBAL' -'GRANT' -'GRANTS' -'GRAPH' -'GROUP' -'GROUPING' -'GROUPS' -'HASH' -'HAVING' -'HDFS' -'HELP' -'HISTOGRAM' -'HLL' -'HLL_UNION' -'HOSTNAME' -'HOTSPOT' -'HOUR' -'HUB' -'IDENTIFIED' -'IF' -'IGNORE' -'IMMEDIATE' -'IN' -'INCREMENTAL' -'INDEX' -'INDEXES' -'INFILE' -'INNER' -'INSERT' -'INSTALL' -'INT' -'INTEGER' -'INTERMEDIATE' -'INTERSECT' -'INTERVAL' -'INTO' -'INVERTED' -'IPV4' -'IPV6' -'IS' -'IS_NOT_NULL_PRED' -'IS_NULL_PRED' -'ISNULL' -'ISOLATION' -'JOB' -'JOBS' -'JOIN' -'JSON' -'JSONB' -'KEY' -'KEYS' -'KILL' -'LABEL' -'LARGEINT' -'LAST' -'LATERAL' -'LDAP' -'LDAP_ADMIN_PASSWORD' -'LEFT' -'LESS' -'LEVEL' -'LIKE' -'LIMIT' -'LINES' -'LINK' -'LIST' -'LOAD' -'LOCAL' -'LOCALTIME' -'LOCALTIMESTAMP' -'LOCATION' -'LOCK' -'LOGICAL' -'LOW_PRIORITY' -'MANUAL' -'MAP' -'MATCH' -'MATCH_ALL' -'MATCH_ANY' -'MATCH_PHRASE' -'MATCH_PHRASE_EDGE' -'MATCH_PHRASE_PREFIX' -'MATCH_REGEXP' -'MATCH_NAME' -'MATCH_NAME_GLOB' -'MATERIALIZED' -'MAX' -'MAXVALUE' -'MEMO' -'MERGE' -'MIGRATE' -'MIGRATIONS' -'MIN' -'MINUS' -'MINUTE' -'MODIFY' -'MONTH' -'MTMV' -'NAME' -'NAMES' -'NATURAL' -'NEGATIVE' -'NEVER' -'NEXT' -'NGRAM_BF' -'NO' -'NO_USE_MV' -'NON_NULLABLE' -'NOT' -'NULL' -'NULLS' -'OBSERVER' -'OF' -'OFFSET' -'ON' -'ONLY' -'OPEN' -'OPTIMIZED' -'OR' -'ORDER' -'OUTER' -'OUTFILE' -'OVER' -'OVERWRITE' -'PARAMETER' -'PARSED' -'PARTITION' -'PARTITIONS' -'PASSWORD' -'PASSWORD_EXPIRE' -'PASSWORD_HISTORY' -'PASSWORD_LOCK_TIME' -'PASSWORD_REUSE' -'PATH' -'PAUSE' -'PERCENT' -'PERIOD' -'PERMISSIVE' -'PHYSICAL' -'PI' -'?' -'PLAN' -'PLAY' -'PRIVILEGES' -'PROCESS' -'PLUGIN' -'PLUGINS' -'POLICY' -'PRECEDING' -'PREPARE' -'PRIMARY' -'PROC' -'PROCEDURE' -'PROCESSLIST' -'PROFILE' -'PROPERTIES' -'PROPERTY' -'QUANTILE_STATE' -'QUANTILE_UNION' -'QUERY' -'QUEUED' -'QUOTA' -'QUALIFY' -'QUARTER' -'RANDOM' -'RANGE' -'READ' -'REAL' -'REBALANCE' -'RECENT' -'RECOVER' -'RECYCLE' -'REFRESH' -'REFERENCES' -'REGEXP' -'RELEASE' -'RENAME' -'REPAIR' -'REPEATABLE' -'REPLACE' -'REPLACE_IF_NOT_NULL' -'REPLAYER' -'REPLICA' -'REPOSITORIES' -'REPOSITORY' -'RESOURCE' -'RESOURCES' -'RESTORE' -'RESTRICTIVE' -'RESUME' -'RETURNS' -'REVOKE' -'REWRITTEN' -'RIGHT' -'RLIKE' -'ROLE' -'ROLES' -'ROLLBACK' -'ROLLUP' -'ROUTINE' -'ROW' -'ROWS' -'S3' -'SAMPLE' -'SCHEDULE' -'SCHEDULER' -'SCHEMA' -'SCHEMAS' -'SECOND' -'SELECT' -'SEMI' -'SERIALIZABLE' -'SESSION' -'SESSION_USER' -'SET' -'SETS' -'SET_SESSION_VARIABLE' -'SHAPE' -'SHOW' -'SIGNED' -'SKEW' -'SMALLINT' -'SNAPSHOT' -'SONAME' -'SPLIT' -'SQL' -'SQL_BLOCK_RULE' -'STAGE' -'STAGES' -'START' -'STARTS' -'STATS' -'STATUS' -'STOP' -'STORAGE' -'STREAM' -'STREAMING' -'STRING' -'STRUCT' -'SUM' -'SUPERUSER' -'SWITCH' -'SYNC' -'SYSTEM' -'TABLE' -'TABLES' -'TABLESAMPLE' -'TABLET' -'TABLETS' -'TASK' -'TASKS' -'TEMPORARY' -'TERMINATED' -'TEXT' -'THAN' -'THEN' -'TIME' -'TIMESTAMP' -'TINYINT' -'TO' -'TRANSACTION' -'TRASH' -'TREE' -'TRIGGERS' -'TRIM' -'TRUE' -'TRUNCATE' -'TYPE' -'TYPE_CAST' -'TYPES' -'UNBOUNDED' -'UNCOMMITTED' -'UNINSTALL' -'UNION' -'UNIQUE' -'UNLOCK' -'UNSET' -'UNSIGNED' -'UP' -'UPDATE' -'USE' -'USER' -'USE_MV' -'USING' -'VALUE' -'VALUES' -'VARCHAR' -'VARIABLE' -'VARIABLES' -'VARIANT' -'VAULT' -'VAULTS' -'VERBOSE' -'VERSION' -'VIEW' -'VIEWS' -'WARM' -'WARNINGS' -'WEEK' -'WHEN' -'WHERE' -'WHITELIST' -'WITH' -'WORK' -'WORKLOAD' -'WRITE' -'XOR' -'YEAR' -null -'<=>' -null -'<' -null -'>' -null -'+' -'-' -'*' -'/' -'%' -'~' -'&' -'&&' -'!' -'|' -'||' -'^' -':' -'->' -'/*+' -'*/' -'/*' -'@' -'@@' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -SEMICOLON -LEFT_PAREN -RIGHT_PAREN -COMMA -DOT -DOTDOTDOT -LEFT_BRACKET -RIGHT_BRACKET -LEFT_BRACE -RIGHT_BRACE -ACCOUNT_LOCK -ACCOUNT_UNLOCK -ACTIONS -ADD -ADMIN -AFTER -AGG_STATE -AGGREGATE -ALIAS -ALL -ALTER -ANALYZE -ANALYZED -AND -ANTI -APPEND -ARRAY -AS -ASC -AT -AUTHORS -AUTO -AUTO_INCREMENT -ALWAYS -BACKEND -BACKENDS -BACKUP -BEGIN -BELONG -BETWEEN -BIGINT -BIN -BINARY -BINLOG -BITAND -BITMAP -BITMAP_EMPTY -BITMAP_UNION -BITOR -BITXOR -BLOB -BOOLEAN -BRIEF -BROKER -BUCKETS -BUILD -BUILTIN -BULK -BY -CACHE -CACHED -CALL -CANCEL -CASE -CAST -CATALOG -CATALOGS -CHAIN -CHAR -CHARSET -CHECK -CLEAN -CLUSTER -CLUSTERS -COLLATE -COLLATION -COLLECT -COLOCATE -COLUMN -COLUMNS -COMMENT -COMMIT -COMMITTED -COMPACT -COMPLETE -COMPRESS_TYPE -COMPUTE -CONDITIONS -CONFIG -CONNECTION -CONNECTION_ID -CONSISTENT -CONSTRAINT -CONSTRAINTS -CONVERT -CONVERT_LSC -COPY -COUNT -CREATE -CREATION -CRON -CROSS -CUBE -CURRENT -CURRENT_CATALOG -CURRENT_DATE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DATA -DATABASE -DATABASES -DATE -DATETIME -DATETIMEV2 -DATEV2 -DATETIMEV1 -DATEV1 -DAY -DECIMAL -DECIMALV2 -DECIMALV3 -DECOMMISSION -DEFAULT -DEFERRED -DELETE -DEMAND -DESC -DESCRIBE -DIAGNOSE -DIAGNOSIS -DISK -DISTINCT -DISTINCTPC -DISTINCTPCSA -DISTRIBUTED -DISTRIBUTION -DIV -DO -DORIS_INTERNAL_TABLE_ID -DOUBLE -DROP -DROPP -DUAL -DUMP -DUPLICATE -DYNAMIC -E -ELSE -ENABLE -ENCRYPTKEY -ENCRYPTKEYS -END -ENDS -ENGINE -ENGINES -ENTER -ERRORS -EVENTS -EVERY -EXCEPT -EXCLUDE -EXECUTE -EXISTS -EXPIRED -EXPLAIN -EXPORT -EXTENDED -EXTERNAL -EXTRACT -FAILED_LOGIN_ATTEMPTS -FALSE -FAST -FEATURE -FIELDS -FILE -FILTER -FIRST -FLOAT -FOLLOWER -FOLLOWING -FOR -FOREIGN -FORCE -FORMAT -FREE -FROM -FRONTEND -FRONTENDS -FULL -FUNCTION -FUNCTIONS -GENERATED -GENERIC -GLOBAL -GRANT -GRANTS -GRAPH -GROUP -GROUPING -GROUPS -HASH -HAVING -HDFS -HELP -HISTOGRAM -HLL -HLL_UNION -HOSTNAME -HOTSPOT -HOUR -HUB -IDENTIFIED -IF -IGNORE -IMMEDIATE -IN -INCREMENTAL -INDEX -INDEXES -INFILE -INNER -INSERT -INSTALL -INT -INTEGER -INTERMEDIATE -INTERSECT -INTERVAL -INTO -INVERTED -IPV4 -IPV6 -IS -IS_NOT_NULL_PRED -IS_NULL_PRED -ISNULL -ISOLATION -JOB -JOBS -JOIN -JSON -JSONB -KEY -KEYS -KILL -LABEL -LARGEINT -LAST -LATERAL -LDAP -LDAP_ADMIN_PASSWORD -LEFT -LESS -LEVEL -LIKE -LIMIT -LINES -LINK -LIST -LOAD -LOCAL -LOCALTIME -LOCALTIMESTAMP -LOCATION -LOCK -LOGICAL -LOW_PRIORITY -MANUAL -MAP -MATCH -MATCH_ALL -MATCH_ANY -MATCH_PHRASE -MATCH_PHRASE_EDGE -MATCH_PHRASE_PREFIX -MATCH_REGEXP -MATCH_NAME -MATCH_NAME_GLOB -MATERIALIZED -MAX -MAXVALUE -MEMO -MERGE -MIGRATE -MIGRATIONS -MIN -MINUS -MINUTE -MODIFY -MONTH -MTMV -NAME -NAMES -NATURAL -NEGATIVE -NEVER -NEXT -NGRAM_BF -NO -NO_USE_MV -NON_NULLABLE -NOT -NULL -NULLS -OBSERVER -OF -OFFSET -ON -ONLY -OPEN -OPTIMIZED -OR -ORDER -OUTER -OUTFILE -OVER -OVERWRITE -PARAMETER -PARSED -PARTITION -PARTITIONS -PASSWORD -PASSWORD_EXPIRE -PASSWORD_HISTORY -PASSWORD_LOCK_TIME -PASSWORD_REUSE -PATH -PAUSE -PERCENT -PERIOD -PERMISSIVE -PHYSICAL -PI -PLACEHOLDER -PLAN -PLAY -PRIVILEGES -PROCESS -PLUGIN -PLUGINS -POLICY -PRECEDING -PREPARE -PRIMARY -PROC -PROCEDURE -PROCESSLIST -PROFILE -PROPERTIES -PROPERTY -QUANTILE_STATE -QUANTILE_UNION -QUERY -QUEUED -QUOTA -QUALIFY -QUARTER -RANDOM -RANGE -READ -REAL -REBALANCE -RECENT -RECOVER -RECYCLE -REFRESH -REFERENCES -REGEXP -RELEASE -RENAME -REPAIR -REPEATABLE -REPLACE -REPLACE_IF_NOT_NULL -REPLAYER -REPLICA -REPOSITORIES -REPOSITORY -RESOURCE -RESOURCES -RESTORE -RESTRICTIVE -RESUME -RETURNS -REVOKE -REWRITTEN -RIGHT -RLIKE -ROLE -ROLES -ROLLBACK -ROLLUP -ROUTINE -ROW -ROWS -S3 -SAMPLE -SCHEDULE -SCHEDULER -SCHEMA -SCHEMAS -SECOND -SELECT -SEMI -SERIALIZABLE -SESSION -SESSION_USER -SET -SETS -SET_SESSION_VARIABLE -SHAPE -SHOW -SIGNED -SKEW -SMALLINT -SNAPSHOT -SONAME -SPLIT -SQL -SQL_BLOCK_RULE -STAGE -STAGES -START -STARTS -STATS -STATUS -STOP -STORAGE -STREAM -STREAMING -STRING -STRUCT -SUM -SUPERUSER -SWITCH -SYNC -SYSTEM -TABLE -TABLES -TABLESAMPLE -TABLET -TABLETS -TASK -TASKS -TEMPORARY -TERMINATED -TEXT -THAN -THEN -TIME -TIMESTAMP -TINYINT -TO -TRANSACTION -TRASH -TREE -TRIGGERS -TRIM -TRUE -TRUNCATE -TYPE -TYPECAST -TYPES -UNBOUNDED -UNCOMMITTED -UNINSTALL -UNION -UNIQUE -UNLOCK -UNSET -UNSIGNED -UP -UPDATE -USE -USER -USE_MV -USING -VALUE -VALUES -VARCHAR -VARIABLE -VARIABLES -VARIANT -VAULT -VAULTS -VERBOSE -VERSION -VIEW -VIEWS -WARM -WARNINGS -WEEK -WHEN -WHERE -WHITELIST -WITH -WORK -WORKLOAD -WRITE -XOR -YEAR -EQ -NSEQ -NEQ -LT -LTE -GT -GTE -PLUS -SUBTRACT -ASTERISK -SLASH -MOD -TILDE -AMPERSAND -LOGICALAND -LOGICALNOT -PIPE -DOUBLEPIPES -HAT -COLON -ARROW -HINT_START -HINT_END -COMMENT_START -ATSIGN -DOUBLEATSIGN -STRING_LITERAL -LEADING_STRING -BIGINT_LITERAL -SMALLINT_LITERAL -TINYINT_LITERAL -INTEGER_VALUE -EXPONENT_VALUE -DECIMAL_VALUE -BIGDECIMAL_LITERAL -IDENTIFIER -BACKQUOTED_IDENTIFIER -SIMPLE_COMMENT -BRACKETED_COMMENT -FROM_DUAL -WS -UNRECOGNIZED - -rule names: -SEMICOLON -LEFT_PAREN -RIGHT_PAREN -COMMA -DOT -DOTDOTDOT -LEFT_BRACKET -RIGHT_BRACKET -LEFT_BRACE -RIGHT_BRACE -ACCOUNT_LOCK -ACCOUNT_UNLOCK -ACTIONS -ADD -ADMIN -AFTER -AGG_STATE -AGGREGATE -ALIAS -ALL -ALTER -ANALYZE -ANALYZED -AND -ANTI -APPEND -ARRAY -AS -ASC -AT -AUTHORS -AUTO -AUTO_INCREMENT -ALWAYS -BACKEND -BACKENDS -BACKUP -BEGIN -BELONG -BETWEEN -BIGINT -BIN -BINARY -BINLOG -BITAND -BITMAP -BITMAP_EMPTY -BITMAP_UNION -BITOR -BITXOR -BLOB -BOOLEAN -BRIEF -BROKER -BUCKETS -BUILD -BUILTIN -BULK -BY -CACHE -CACHED -CALL -CANCEL -CASE -CAST -CATALOG -CATALOGS -CHAIN -CHAR -CHARSET -CHECK -CLEAN -CLUSTER -CLUSTERS -COLLATE -COLLATION -COLLECT -COLOCATE -COLUMN -COLUMNS -COMMENT -COMMIT -COMMITTED -COMPACT -COMPLETE -COMPRESS_TYPE -COMPUTE -CONDITIONS -CONFIG -CONNECTION -CONNECTION_ID -CONSISTENT -CONSTRAINT -CONSTRAINTS -CONVERT -CONVERT_LSC -COPY -COUNT -CREATE -CREATION -CRON -CROSS -CUBE -CURRENT -CURRENT_CATALOG -CURRENT_DATE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DATA -DATABASE -DATABASES -DATE -DATETIME -DATETIMEV2 -DATEV2 -DATETIMEV1 -DATEV1 -DAY -DECIMAL -DECIMALV2 -DECIMALV3 -DECOMMISSION -DEFAULT -DEFERRED -DELETE -DEMAND -DESC -DESCRIBE -DIAGNOSE -DIAGNOSIS -DISK -DISTINCT -DISTINCTPC -DISTINCTPCSA -DISTRIBUTED -DISTRIBUTION -DIV -DO -DORIS_INTERNAL_TABLE_ID -DOUBLE -DROP -DROPP -DUAL -DUMP -DUPLICATE -DYNAMIC -E -ELSE -ENABLE -ENCRYPTKEY -ENCRYPTKEYS -END -ENDS -ENGINE -ENGINES -ENTER -ERRORS -EVENTS -EVERY -EXCEPT -EXCLUDE -EXECUTE -EXISTS -EXPIRED -EXPLAIN -EXPORT -EXTENDED -EXTERNAL -EXTRACT -FAILED_LOGIN_ATTEMPTS -FALSE -FAST -FEATURE -FIELDS -FILE -FILTER -FIRST -FLOAT -FOLLOWER -FOLLOWING -FOR -FOREIGN -FORCE -FORMAT -FREE -FROM -FRONTEND -FRONTENDS -FULL -FUNCTION -FUNCTIONS -GENERATED -GENERIC -GLOBAL -GRANT -GRANTS -GRAPH -GROUP -GROUPING -GROUPS -HASH -HAVING -HDFS -HELP -HISTOGRAM -HLL -HLL_UNION -HOSTNAME -HOTSPOT -HOUR -HUB -IDENTIFIED -IF -IGNORE -IMMEDIATE -IN -INCREMENTAL -INDEX -INDEXES -INFILE -INNER -INSERT -INSTALL -INT -INTEGER -INTERMEDIATE -INTERSECT -INTERVAL -INTO -INVERTED -IPV4 -IPV6 -IS -IS_NOT_NULL_PRED -IS_NULL_PRED -ISNULL -ISOLATION -JOB -JOBS -JOIN -JSON -JSONB -KEY -KEYS -KILL -LABEL -LARGEINT -LAST -LATERAL -LDAP -LDAP_ADMIN_PASSWORD -LEFT -LESS -LEVEL -LIKE -LIMIT -LINES -LINK -LIST -LOAD -LOCAL -LOCALTIME -LOCALTIMESTAMP -LOCATION -LOCK -LOGICAL -LOW_PRIORITY -MANUAL -MAP -MATCH -MATCH_ALL -MATCH_ANY -MATCH_PHRASE -MATCH_PHRASE_EDGE -MATCH_PHRASE_PREFIX -MATCH_REGEXP -MATCH_NAME -MATCH_NAME_GLOB -MATERIALIZED -MAX -MAXVALUE -MEMO -MERGE -MIGRATE -MIGRATIONS -MIN -MINUS -MINUTE -MODIFY -MONTH -MTMV -NAME -NAMES -NATURAL -NEGATIVE -NEVER -NEXT -NGRAM_BF -NO -NO_USE_MV -NON_NULLABLE -NOT -NULL -NULLS -OBSERVER -OF -OFFSET -ON -ONLY -OPEN -OPTIMIZED -OR -ORDER -OUTER -OUTFILE -OVER -OVERWRITE -PARAMETER -PARSED -PARTITION -PARTITIONS -PASSWORD -PASSWORD_EXPIRE -PASSWORD_HISTORY -PASSWORD_LOCK_TIME -PASSWORD_REUSE -PATH -PAUSE -PERCENT -PERIOD -PERMISSIVE -PHYSICAL -PI -PLACEHOLDER -PLAN -PLAY -PRIVILEGES -PROCESS -PLUGIN -PLUGINS -POLICY -PRECEDING -PREPARE -PRIMARY -PROC -PROCEDURE -PROCESSLIST -PROFILE -PROPERTIES -PROPERTY -QUANTILE_STATE -QUANTILE_UNION -QUERY -QUEUED -QUOTA -QUALIFY -QUARTER -RANDOM -RANGE -READ -REAL -REBALANCE -RECENT -RECOVER -RECYCLE -REFRESH -REFERENCES -REGEXP -RELEASE -RENAME -REPAIR -REPEATABLE -REPLACE -REPLACE_IF_NOT_NULL -REPLAYER -REPLICA -REPOSITORIES -REPOSITORY -RESOURCE -RESOURCES -RESTORE -RESTRICTIVE -RESUME -RETURNS -REVOKE -REWRITTEN -RIGHT -RLIKE -ROLE -ROLES -ROLLBACK -ROLLUP -ROUTINE -ROW -ROWS -S3 -SAMPLE -SCHEDULE -SCHEDULER -SCHEMA -SCHEMAS -SECOND -SELECT -SEMI -SERIALIZABLE -SESSION -SESSION_USER -SET -SETS -SET_SESSION_VARIABLE -SHAPE -SHOW -SIGNED -SKEW -SMALLINT -SNAPSHOT -SONAME -SPLIT -SQL -SQL_BLOCK_RULE -STAGE -STAGES -START -STARTS -STATS -STATUS -STOP -STORAGE -STREAM -STREAMING -STRING -STRUCT -SUM -SUPERUSER -SWITCH -SYNC -SYSTEM -TABLE -TABLES -TABLESAMPLE -TABLET -TABLETS -TASK -TASKS -TEMPORARY -TERMINATED -TEXT -THAN -THEN -TIME -TIMESTAMP -TINYINT -TO -TRANSACTION -TRASH -TREE -TRIGGERS -TRIM -TRUE -TRUNCATE -TYPE -TYPECAST -TYPES -UNBOUNDED -UNCOMMITTED -UNINSTALL -UNION -UNIQUE -UNLOCK -UNSET -UNSIGNED -UP -UPDATE -USE -USER -USE_MV -USING -VALUE -VALUES -VARCHAR -VARIABLE -VARIABLES -VARIANT -VAULT -VAULTS -VERBOSE -VERSION -VIEW -VIEWS -WARM -WARNINGS -WEEK -WHEN -WHERE -WHITELIST -WITH -WORK -WORKLOAD -WRITE -XOR -YEAR -EQ -NSEQ -NEQ -LT -LTE -GT -GTE -PLUS -SUBTRACT -ASTERISK -SLASH -MOD -TILDE -AMPERSAND -LOGICALAND -LOGICALNOT -PIPE -DOUBLEPIPES -HAT -COLON -ARROW -HINT_START -HINT_END -COMMENT_START -ATSIGN -DOUBLEATSIGN -STRING_LITERAL -LEADING_STRING -BIGINT_LITERAL -SMALLINT_LITERAL -TINYINT_LITERAL -INTEGER_VALUE -EXPONENT_VALUE -DECIMAL_VALUE -BIGDECIMAL_LITERAL -IDENTIFIER -BACKQUOTED_IDENTIFIER -DECIMAL_DIGITS -EXPONENT -DIGIT -LETTER -SIMPLE_COMMENT -BRACKETED_COMMENT -FROM_DUAL -WS -UNRECOGNIZED - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 544, 5279, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1542, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 3, 502, 4974, 8, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 3, 504, 4984, 8, 504, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 3, 506, 4992, 8, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 3, 508, 5000, 8, 508, 1, 509, 1, 509, 1, 510, 1, 510, 1, 511, 1, 511, 1, 512, 1, 512, 1, 513, 1, 513, 1, 514, 1, 514, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5054, 8, 528, 10, 528, 12, 528, 5057, 9, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5066, 8, 528, 10, 528, 12, 528, 5069, 9, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5076, 8, 528, 10, 528, 12, 528, 5079, 9, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 5086, 8, 528, 10, 528, 12, 528, 5089, 9, 528, 1, 528, 3, 528, 5092, 8, 528, 1, 529, 1, 529, 1, 529, 1, 529, 3, 529, 5098, 8, 529, 1, 530, 4, 530, 5101, 8, 530, 11, 530, 12, 530, 5102, 1, 530, 1, 530, 1, 531, 4, 531, 5108, 8, 531, 11, 531, 12, 531, 5109, 1, 531, 1, 531, 1, 532, 4, 532, 5115, 8, 532, 11, 532, 12, 532, 5116, 1, 532, 1, 532, 1, 533, 4, 533, 5122, 8, 533, 11, 533, 12, 533, 5123, 1, 534, 4, 534, 5127, 8, 534, 11, 534, 12, 534, 5128, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 3, 534, 5137, 8, 534, 1, 535, 1, 535, 1, 535, 1, 536, 4, 536, 5143, 8, 536, 11, 536, 12, 536, 5144, 1, 536, 3, 536, 5148, 8, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 3, 536, 5155, 8, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 3, 536, 5162, 8, 536, 1, 537, 1, 537, 1, 537, 4, 537, 5167, 8, 537, 11, 537, 12, 537, 5168, 1, 538, 1, 538, 1, 538, 1, 538, 5, 538, 5175, 8, 538, 10, 538, 12, 538, 5178, 9, 538, 1, 538, 1, 538, 1, 539, 4, 539, 5183, 8, 539, 11, 539, 12, 539, 5184, 1, 539, 1, 539, 5, 539, 5189, 8, 539, 10, 539, 12, 539, 5192, 9, 539, 1, 539, 1, 539, 4, 539, 5196, 8, 539, 11, 539, 12, 539, 5197, 3, 539, 5200, 8, 539, 1, 540, 1, 540, 3, 540, 5204, 8, 540, 1, 540, 4, 540, 5207, 8, 540, 11, 540, 12, 540, 5208, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 3, 542, 5217, 8, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 5, 543, 5225, 8, 543, 10, 543, 12, 543, 5228, 9, 543, 1, 543, 3, 543, 5231, 8, 543, 1, 543, 3, 543, 5234, 8, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 5, 544, 5241, 8, 544, 10, 544, 12, 544, 5244, 9, 544, 1, 544, 1, 544, 1, 544, 1, 544, 3, 544, 5250, 8, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 4, 545, 5260, 8, 545, 11, 545, 12, 545, 5261, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 4, 546, 5272, 8, 546, 11, 546, 12, 546, 5273, 1, 546, 1, 546, 1, 547, 1, 547, 1, 5242, 0, 548, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 336, 673, 337, 675, 338, 677, 339, 679, 340, 681, 341, 683, 342, 685, 343, 687, 344, 689, 345, 691, 346, 693, 347, 695, 348, 697, 349, 699, 350, 701, 351, 703, 352, 705, 353, 707, 354, 709, 355, 711, 356, 713, 357, 715, 358, 717, 359, 719, 360, 721, 361, 723, 362, 725, 363, 727, 364, 729, 365, 731, 366, 733, 367, 735, 368, 737, 369, 739, 370, 741, 371, 743, 372, 745, 373, 747, 374, 749, 375, 751, 376, 753, 377, 755, 378, 757, 379, 759, 380, 761, 381, 763, 382, 765, 383, 767, 384, 769, 385, 771, 386, 773, 387, 775, 388, 777, 389, 779, 390, 781, 391, 783, 392, 785, 393, 787, 394, 789, 395, 791, 396, 793, 397, 795, 398, 797, 399, 799, 400, 801, 401, 803, 402, 805, 403, 807, 404, 809, 405, 811, 406, 813, 407, 815, 408, 817, 409, 819, 410, 821, 411, 823, 412, 825, 413, 827, 414, 829, 415, 831, 416, 833, 417, 835, 418, 837, 419, 839, 420, 841, 421, 843, 422, 845, 423, 847, 424, 849, 425, 851, 426, 853, 427, 855, 428, 857, 429, 859, 430, 861, 431, 863, 432, 865, 433, 867, 434, 869, 435, 871, 436, 873, 437, 875, 438, 877, 439, 879, 440, 881, 441, 883, 442, 885, 443, 887, 444, 889, 445, 891, 446, 893, 447, 895, 448, 897, 449, 899, 450, 901, 451, 903, 452, 905, 453, 907, 454, 909, 455, 911, 456, 913, 457, 915, 458, 917, 459, 919, 460, 921, 461, 923, 462, 925, 463, 927, 464, 929, 465, 931, 466, 933, 467, 935, 468, 937, 469, 939, 470, 941, 471, 943, 472, 945, 473, 947, 474, 949, 475, 951, 476, 953, 477, 955, 478, 957, 479, 959, 480, 961, 481, 963, 482, 965, 483, 967, 484, 969, 485, 971, 486, 973, 487, 975, 488, 977, 489, 979, 490, 981, 491, 983, 492, 985, 493, 987, 494, 989, 495, 991, 496, 993, 497, 995, 498, 997, 499, 999, 500, 1001, 501, 1003, 502, 1005, 503, 1007, 504, 1009, 505, 1011, 506, 1013, 507, 1015, 508, 1017, 509, 1019, 510, 1021, 511, 1023, 512, 1025, 513, 1027, 514, 1029, 515, 1031, 516, 1033, 517, 1035, 518, 1037, 519, 1039, 520, 1041, 521, 1043, 522, 1045, 523, 1047, 524, 1049, 525, 1051, 526, 1053, 527, 1055, 528, 1057, 529, 1059, 530, 1061, 531, 1063, 532, 1065, 533, 1067, 534, 1069, 535, 1071, 536, 1073, 537, 1075, 538, 1077, 539, 1079, 0, 1081, 0, 1083, 0, 1085, 0, 1087, 540, 1089, 541, 1091, 542, 1093, 543, 1095, 544, 1, 0, 13, 2, 0, 39, 39, 92, 92, 2, 0, 34, 34, 92, 92, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 2, 0, 0, 127, 55296, 56319, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 5325, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 1, 1097, 1, 0, 0, 0, 3, 1099, 1, 0, 0, 0, 5, 1101, 1, 0, 0, 0, 7, 1103, 1, 0, 0, 0, 9, 1105, 1, 0, 0, 0, 11, 1107, 1, 0, 0, 0, 13, 1111, 1, 0, 0, 0, 15, 1113, 1, 0, 0, 0, 17, 1115, 1, 0, 0, 0, 19, 1117, 1, 0, 0, 0, 21, 1119, 1, 0, 0, 0, 23, 1132, 1, 0, 0, 0, 25, 1147, 1, 0, 0, 0, 27, 1155, 1, 0, 0, 0, 29, 1159, 1, 0, 0, 0, 31, 1165, 1, 0, 0, 0, 33, 1171, 1, 0, 0, 0, 35, 1181, 1, 0, 0, 0, 37, 1191, 1, 0, 0, 0, 39, 1197, 1, 0, 0, 0, 41, 1201, 1, 0, 0, 0, 43, 1207, 1, 0, 0, 0, 45, 1215, 1, 0, 0, 0, 47, 1224, 1, 0, 0, 0, 49, 1228, 1, 0, 0, 0, 51, 1233, 1, 0, 0, 0, 53, 1240, 1, 0, 0, 0, 55, 1246, 1, 0, 0, 0, 57, 1249, 1, 0, 0, 0, 59, 1253, 1, 0, 0, 0, 61, 1256, 1, 0, 0, 0, 63, 1264, 1, 0, 0, 0, 65, 1269, 1, 0, 0, 0, 67, 1284, 1, 0, 0, 0, 69, 1291, 1, 0, 0, 0, 71, 1299, 1, 0, 0, 0, 73, 1308, 1, 0, 0, 0, 75, 1315, 1, 0, 0, 0, 77, 1321, 1, 0, 0, 0, 79, 1328, 1, 0, 0, 0, 81, 1336, 1, 0, 0, 0, 83, 1343, 1, 0, 0, 0, 85, 1347, 1, 0, 0, 0, 87, 1354, 1, 0, 0, 0, 89, 1361, 1, 0, 0, 0, 91, 1368, 1, 0, 0, 0, 93, 1375, 1, 0, 0, 0, 95, 1388, 1, 0, 0, 0, 97, 1401, 1, 0, 0, 0, 99, 1407, 1, 0, 0, 0, 101, 1414, 1, 0, 0, 0, 103, 1419, 1, 0, 0, 0, 105, 1427, 1, 0, 0, 0, 107, 1433, 1, 0, 0, 0, 109, 1440, 1, 0, 0, 0, 111, 1448, 1, 0, 0, 0, 113, 1454, 1, 0, 0, 0, 115, 1462, 1, 0, 0, 0, 117, 1467, 1, 0, 0, 0, 119, 1470, 1, 0, 0, 0, 121, 1476, 1, 0, 0, 0, 123, 1483, 1, 0, 0, 0, 125, 1488, 1, 0, 0, 0, 127, 1495, 1, 0, 0, 0, 129, 1500, 1, 0, 0, 0, 131, 1505, 1, 0, 0, 0, 133, 1513, 1, 0, 0, 0, 135, 1522, 1, 0, 0, 0, 137, 1541, 1, 0, 0, 0, 139, 1543, 1, 0, 0, 0, 141, 1551, 1, 0, 0, 0, 143, 1557, 1, 0, 0, 0, 145, 1563, 1, 0, 0, 0, 147, 1571, 1, 0, 0, 0, 149, 1580, 1, 0, 0, 0, 151, 1588, 1, 0, 0, 0, 153, 1598, 1, 0, 0, 0, 155, 1606, 1, 0, 0, 0, 157, 1615, 1, 0, 0, 0, 159, 1622, 1, 0, 0, 0, 161, 1630, 1, 0, 0, 0, 163, 1638, 1, 0, 0, 0, 165, 1645, 1, 0, 0, 0, 167, 1655, 1, 0, 0, 0, 169, 1663, 1, 0, 0, 0, 171, 1672, 1, 0, 0, 0, 173, 1686, 1, 0, 0, 0, 175, 1694, 1, 0, 0, 0, 177, 1705, 1, 0, 0, 0, 179, 1712, 1, 0, 0, 0, 181, 1723, 1, 0, 0, 0, 183, 1737, 1, 0, 0, 0, 185, 1748, 1, 0, 0, 0, 187, 1759, 1, 0, 0, 0, 189, 1771, 1, 0, 0, 0, 191, 1779, 1, 0, 0, 0, 193, 1815, 1, 0, 0, 0, 195, 1820, 1, 0, 0, 0, 197, 1826, 1, 0, 0, 0, 199, 1833, 1, 0, 0, 0, 201, 1842, 1, 0, 0, 0, 203, 1847, 1, 0, 0, 0, 205, 1853, 1, 0, 0, 0, 207, 1858, 1, 0, 0, 0, 209, 1866, 1, 0, 0, 0, 211, 1882, 1, 0, 0, 0, 213, 1895, 1, 0, 0, 0, 215, 1908, 1, 0, 0, 0, 217, 1926, 1, 0, 0, 0, 219, 1939, 1, 0, 0, 0, 221, 1944, 1, 0, 0, 0, 223, 1953, 1, 0, 0, 0, 225, 1963, 1, 0, 0, 0, 227, 1968, 1, 0, 0, 0, 229, 1977, 1, 0, 0, 0, 231, 1988, 1, 0, 0, 0, 233, 1995, 1, 0, 0, 0, 235, 2006, 1, 0, 0, 0, 237, 2013, 1, 0, 0, 0, 239, 2017, 1, 0, 0, 0, 241, 2025, 1, 0, 0, 0, 243, 2035, 1, 0, 0, 0, 245, 2045, 1, 0, 0, 0, 247, 2058, 1, 0, 0, 0, 249, 2066, 1, 0, 0, 0, 251, 2075, 1, 0, 0, 0, 253, 2082, 1, 0, 0, 0, 255, 2089, 1, 0, 0, 0, 257, 2094, 1, 0, 0, 0, 259, 2103, 1, 0, 0, 0, 261, 2112, 1, 0, 0, 0, 263, 2122, 1, 0, 0, 0, 265, 2127, 1, 0, 0, 0, 267, 2136, 1, 0, 0, 0, 269, 2147, 1, 0, 0, 0, 271, 2160, 1, 0, 0, 0, 273, 2172, 1, 0, 0, 0, 275, 2185, 1, 0, 0, 0, 277, 2189, 1, 0, 0, 0, 279, 2192, 1, 0, 0, 0, 281, 2216, 1, 0, 0, 0, 283, 2223, 1, 0, 0, 0, 285, 2228, 1, 0, 0, 0, 287, 2234, 1, 0, 0, 0, 289, 2239, 1, 0, 0, 0, 291, 2244, 1, 0, 0, 0, 293, 2254, 1, 0, 0, 0, 295, 2262, 1, 0, 0, 0, 297, 2264, 1, 0, 0, 0, 299, 2269, 1, 0, 0, 0, 301, 2276, 1, 0, 0, 0, 303, 2287, 1, 0, 0, 0, 305, 2299, 1, 0, 0, 0, 307, 2303, 1, 0, 0, 0, 309, 2308, 1, 0, 0, 0, 311, 2315, 1, 0, 0, 0, 313, 2323, 1, 0, 0, 0, 315, 2329, 1, 0, 0, 0, 317, 2336, 1, 0, 0, 0, 319, 2343, 1, 0, 0, 0, 321, 2349, 1, 0, 0, 0, 323, 2356, 1, 0, 0, 0, 325, 2364, 1, 0, 0, 0, 327, 2372, 1, 0, 0, 0, 329, 2379, 1, 0, 0, 0, 331, 2387, 1, 0, 0, 0, 333, 2395, 1, 0, 0, 0, 335, 2402, 1, 0, 0, 0, 337, 2411, 1, 0, 0, 0, 339, 2420, 1, 0, 0, 0, 341, 2428, 1, 0, 0, 0, 343, 2450, 1, 0, 0, 0, 345, 2456, 1, 0, 0, 0, 347, 2461, 1, 0, 0, 0, 349, 2469, 1, 0, 0, 0, 351, 2476, 1, 0, 0, 0, 353, 2481, 1, 0, 0, 0, 355, 2488, 1, 0, 0, 0, 357, 2494, 1, 0, 0, 0, 359, 2500, 1, 0, 0, 0, 361, 2509, 1, 0, 0, 0, 363, 2519, 1, 0, 0, 0, 365, 2523, 1, 0, 0, 0, 367, 2531, 1, 0, 0, 0, 369, 2537, 1, 0, 0, 0, 371, 2544, 1, 0, 0, 0, 373, 2549, 1, 0, 0, 0, 375, 2554, 1, 0, 0, 0, 377, 2563, 1, 0, 0, 0, 379, 2573, 1, 0, 0, 0, 381, 2578, 1, 0, 0, 0, 383, 2587, 1, 0, 0, 0, 385, 2597, 1, 0, 0, 0, 387, 2607, 1, 0, 0, 0, 389, 2615, 1, 0, 0, 0, 391, 2622, 1, 0, 0, 0, 393, 2628, 1, 0, 0, 0, 395, 2635, 1, 0, 0, 0, 397, 2641, 1, 0, 0, 0, 399, 2647, 1, 0, 0, 0, 401, 2656, 1, 0, 0, 0, 403, 2663, 1, 0, 0, 0, 405, 2668, 1, 0, 0, 0, 407, 2675, 1, 0, 0, 0, 409, 2680, 1, 0, 0, 0, 411, 2685, 1, 0, 0, 0, 413, 2695, 1, 0, 0, 0, 415, 2699, 1, 0, 0, 0, 417, 2709, 1, 0, 0, 0, 419, 2718, 1, 0, 0, 0, 421, 2726, 1, 0, 0, 0, 423, 2731, 1, 0, 0, 0, 425, 2735, 1, 0, 0, 0, 427, 2746, 1, 0, 0, 0, 429, 2749, 1, 0, 0, 0, 431, 2756, 1, 0, 0, 0, 433, 2766, 1, 0, 0, 0, 435, 2769, 1, 0, 0, 0, 437, 2781, 1, 0, 0, 0, 439, 2787, 1, 0, 0, 0, 441, 2795, 1, 0, 0, 0, 443, 2802, 1, 0, 0, 0, 445, 2808, 1, 0, 0, 0, 447, 2815, 1, 0, 0, 0, 449, 2823, 1, 0, 0, 0, 451, 2827, 1, 0, 0, 0, 453, 2835, 1, 0, 0, 0, 455, 2848, 1, 0, 0, 0, 457, 2858, 1, 0, 0, 0, 459, 2867, 1, 0, 0, 0, 461, 2872, 1, 0, 0, 0, 463, 2881, 1, 0, 0, 0, 465, 2886, 1, 0, 0, 0, 467, 2891, 1, 0, 0, 0, 469, 2894, 1, 0, 0, 0, 471, 2911, 1, 0, 0, 0, 473, 2924, 1, 0, 0, 0, 475, 2931, 1, 0, 0, 0, 477, 2941, 1, 0, 0, 0, 479, 2945, 1, 0, 0, 0, 481, 2950, 1, 0, 0, 0, 483, 2955, 1, 0, 0, 0, 485, 2960, 1, 0, 0, 0, 487, 2966, 1, 0, 0, 0, 489, 2970, 1, 0, 0, 0, 491, 2975, 1, 0, 0, 0, 493, 2980, 1, 0, 0, 0, 495, 2986, 1, 0, 0, 0, 497, 2995, 1, 0, 0, 0, 499, 3000, 1, 0, 0, 0, 501, 3008, 1, 0, 0, 0, 503, 3013, 1, 0, 0, 0, 505, 3033, 1, 0, 0, 0, 507, 3038, 1, 0, 0, 0, 509, 3043, 1, 0, 0, 0, 511, 3049, 1, 0, 0, 0, 513, 3054, 1, 0, 0, 0, 515, 3060, 1, 0, 0, 0, 517, 3066, 1, 0, 0, 0, 519, 3071, 1, 0, 0, 0, 521, 3076, 1, 0, 0, 0, 523, 3081, 1, 0, 0, 0, 525, 3087, 1, 0, 0, 0, 527, 3097, 1, 0, 0, 0, 529, 3112, 1, 0, 0, 0, 531, 3121, 1, 0, 0, 0, 533, 3126, 1, 0, 0, 0, 535, 3134, 1, 0, 0, 0, 537, 3147, 1, 0, 0, 0, 539, 3154, 1, 0, 0, 0, 541, 3158, 1, 0, 0, 0, 543, 3164, 1, 0, 0, 0, 545, 3174, 1, 0, 0, 0, 547, 3184, 1, 0, 0, 0, 549, 3197, 1, 0, 0, 0, 551, 3215, 1, 0, 0, 0, 553, 3235, 1, 0, 0, 0, 555, 3248, 1, 0, 0, 0, 557, 3259, 1, 0, 0, 0, 559, 3275, 1, 0, 0, 0, 561, 3288, 1, 0, 0, 0, 563, 3292, 1, 0, 0, 0, 565, 3301, 1, 0, 0, 0, 567, 3306, 1, 0, 0, 0, 569, 3312, 1, 0, 0, 0, 571, 3320, 1, 0, 0, 0, 573, 3331, 1, 0, 0, 0, 575, 3335, 1, 0, 0, 0, 577, 3341, 1, 0, 0, 0, 579, 3348, 1, 0, 0, 0, 581, 3355, 1, 0, 0, 0, 583, 3361, 1, 0, 0, 0, 585, 3366, 1, 0, 0, 0, 587, 3371, 1, 0, 0, 0, 589, 3377, 1, 0, 0, 0, 591, 3385, 1, 0, 0, 0, 593, 3394, 1, 0, 0, 0, 595, 3400, 1, 0, 0, 0, 597, 3405, 1, 0, 0, 0, 599, 3414, 1, 0, 0, 0, 601, 3417, 1, 0, 0, 0, 603, 3427, 1, 0, 0, 0, 605, 3440, 1, 0, 0, 0, 607, 3444, 1, 0, 0, 0, 609, 3449, 1, 0, 0, 0, 611, 3455, 1, 0, 0, 0, 613, 3464, 1, 0, 0, 0, 615, 3467, 1, 0, 0, 0, 617, 3474, 1, 0, 0, 0, 619, 3477, 1, 0, 0, 0, 621, 3482, 1, 0, 0, 0, 623, 3487, 1, 0, 0, 0, 625, 3497, 1, 0, 0, 0, 627, 3500, 1, 0, 0, 0, 629, 3506, 1, 0, 0, 0, 631, 3512, 1, 0, 0, 0, 633, 3520, 1, 0, 0, 0, 635, 3525, 1, 0, 0, 0, 637, 3535, 1, 0, 0, 0, 639, 3545, 1, 0, 0, 0, 641, 3552, 1, 0, 0, 0, 643, 3562, 1, 0, 0, 0, 645, 3573, 1, 0, 0, 0, 647, 3582, 1, 0, 0, 0, 649, 3598, 1, 0, 0, 0, 651, 3615, 1, 0, 0, 0, 653, 3634, 1, 0, 0, 0, 655, 3649, 1, 0, 0, 0, 657, 3654, 1, 0, 0, 0, 659, 3660, 1, 0, 0, 0, 661, 3668, 1, 0, 0, 0, 663, 3675, 1, 0, 0, 0, 665, 3686, 1, 0, 0, 0, 667, 3695, 1, 0, 0, 0, 669, 3698, 1, 0, 0, 0, 671, 3700, 1, 0, 0, 0, 673, 3705, 1, 0, 0, 0, 675, 3710, 1, 0, 0, 0, 677, 3721, 1, 0, 0, 0, 679, 3729, 1, 0, 0, 0, 681, 3736, 1, 0, 0, 0, 683, 3744, 1, 0, 0, 0, 685, 3751, 1, 0, 0, 0, 687, 3761, 1, 0, 0, 0, 689, 3769, 1, 0, 0, 0, 691, 3777, 1, 0, 0, 0, 693, 3782, 1, 0, 0, 0, 695, 3792, 1, 0, 0, 0, 697, 3804, 1, 0, 0, 0, 699, 3812, 1, 0, 0, 0, 701, 3823, 1, 0, 0, 0, 703, 3832, 1, 0, 0, 0, 705, 3847, 1, 0, 0, 0, 707, 3862, 1, 0, 0, 0, 709, 3868, 1, 0, 0, 0, 711, 3875, 1, 0, 0, 0, 713, 3881, 1, 0, 0, 0, 715, 3889, 1, 0, 0, 0, 717, 3897, 1, 0, 0, 0, 719, 3904, 1, 0, 0, 0, 721, 3910, 1, 0, 0, 0, 723, 3915, 1, 0, 0, 0, 725, 3920, 1, 0, 0, 0, 727, 3930, 1, 0, 0, 0, 729, 3937, 1, 0, 0, 0, 731, 3945, 1, 0, 0, 0, 733, 3953, 1, 0, 0, 0, 735, 3961, 1, 0, 0, 0, 737, 3972, 1, 0, 0, 0, 739, 3979, 1, 0, 0, 0, 741, 3987, 1, 0, 0, 0, 743, 3994, 1, 0, 0, 0, 745, 4001, 1, 0, 0, 0, 747, 4012, 1, 0, 0, 0, 749, 4020, 1, 0, 0, 0, 751, 4040, 1, 0, 0, 0, 753, 4049, 1, 0, 0, 0, 755, 4057, 1, 0, 0, 0, 757, 4070, 1, 0, 0, 0, 759, 4081, 1, 0, 0, 0, 761, 4090, 1, 0, 0, 0, 763, 4100, 1, 0, 0, 0, 765, 4108, 1, 0, 0, 0, 767, 4120, 1, 0, 0, 0, 769, 4127, 1, 0, 0, 0, 771, 4135, 1, 0, 0, 0, 773, 4142, 1, 0, 0, 0, 775, 4152, 1, 0, 0, 0, 777, 4158, 1, 0, 0, 0, 779, 4164, 1, 0, 0, 0, 781, 4169, 1, 0, 0, 0, 783, 4175, 1, 0, 0, 0, 785, 4184, 1, 0, 0, 0, 787, 4191, 1, 0, 0, 0, 789, 4199, 1, 0, 0, 0, 791, 4203, 1, 0, 0, 0, 793, 4208, 1, 0, 0, 0, 795, 4211, 1, 0, 0, 0, 797, 4218, 1, 0, 0, 0, 799, 4227, 1, 0, 0, 0, 801, 4237, 1, 0, 0, 0, 803, 4244, 1, 0, 0, 0, 805, 4252, 1, 0, 0, 0, 807, 4259, 1, 0, 0, 0, 809, 4266, 1, 0, 0, 0, 811, 4271, 1, 0, 0, 0, 813, 4284, 1, 0, 0, 0, 815, 4292, 1, 0, 0, 0, 817, 4305, 1, 0, 0, 0, 819, 4309, 1, 0, 0, 0, 821, 4314, 1, 0, 0, 0, 823, 4335, 1, 0, 0, 0, 825, 4341, 1, 0, 0, 0, 827, 4346, 1, 0, 0, 0, 829, 4353, 1, 0, 0, 0, 831, 4358, 1, 0, 0, 0, 833, 4367, 1, 0, 0, 0, 835, 4376, 1, 0, 0, 0, 837, 4383, 1, 0, 0, 0, 839, 4389, 1, 0, 0, 0, 841, 4393, 1, 0, 0, 0, 843, 4408, 1, 0, 0, 0, 845, 4414, 1, 0, 0, 0, 847, 4421, 1, 0, 0, 0, 849, 4427, 1, 0, 0, 0, 851, 4434, 1, 0, 0, 0, 853, 4440, 1, 0, 0, 0, 855, 4447, 1, 0, 0, 0, 857, 4452, 1, 0, 0, 0, 859, 4460, 1, 0, 0, 0, 861, 4467, 1, 0, 0, 0, 863, 4477, 1, 0, 0, 0, 865, 4484, 1, 0, 0, 0, 867, 4491, 1, 0, 0, 0, 869, 4495, 1, 0, 0, 0, 871, 4505, 1, 0, 0, 0, 873, 4512, 1, 0, 0, 0, 875, 4517, 1, 0, 0, 0, 877, 4524, 1, 0, 0, 0, 879, 4530, 1, 0, 0, 0, 881, 4537, 1, 0, 0, 0, 883, 4549, 1, 0, 0, 0, 885, 4556, 1, 0, 0, 0, 887, 4564, 1, 0, 0, 0, 889, 4569, 1, 0, 0, 0, 891, 4575, 1, 0, 0, 0, 893, 4585, 1, 0, 0, 0, 895, 4596, 1, 0, 0, 0, 897, 4601, 1, 0, 0, 0, 899, 4606, 1, 0, 0, 0, 901, 4611, 1, 0, 0, 0, 903, 4616, 1, 0, 0, 0, 905, 4626, 1, 0, 0, 0, 907, 4634, 1, 0, 0, 0, 909, 4637, 1, 0, 0, 0, 911, 4649, 1, 0, 0, 0, 913, 4655, 1, 0, 0, 0, 915, 4660, 1, 0, 0, 0, 917, 4669, 1, 0, 0, 0, 919, 4674, 1, 0, 0, 0, 921, 4679, 1, 0, 0, 0, 923, 4688, 1, 0, 0, 0, 925, 4693, 1, 0, 0, 0, 927, 4703, 1, 0, 0, 0, 929, 4709, 1, 0, 0, 0, 931, 4719, 1, 0, 0, 0, 933, 4731, 1, 0, 0, 0, 935, 4741, 1, 0, 0, 0, 937, 4747, 1, 0, 0, 0, 939, 4754, 1, 0, 0, 0, 941, 4761, 1, 0, 0, 0, 943, 4767, 1, 0, 0, 0, 945, 4776, 1, 0, 0, 0, 947, 4779, 1, 0, 0, 0, 949, 4786, 1, 0, 0, 0, 951, 4790, 1, 0, 0, 0, 953, 4795, 1, 0, 0, 0, 955, 4802, 1, 0, 0, 0, 957, 4808, 1, 0, 0, 0, 959, 4814, 1, 0, 0, 0, 961, 4821, 1, 0, 0, 0, 963, 4829, 1, 0, 0, 0, 965, 4838, 1, 0, 0, 0, 967, 4848, 1, 0, 0, 0, 969, 4856, 1, 0, 0, 0, 971, 4862, 1, 0, 0, 0, 973, 4869, 1, 0, 0, 0, 975, 4877, 1, 0, 0, 0, 977, 4885, 1, 0, 0, 0, 979, 4890, 1, 0, 0, 0, 981, 4896, 1, 0, 0, 0, 983, 4901, 1, 0, 0, 0, 985, 4910, 1, 0, 0, 0, 987, 4915, 1, 0, 0, 0, 989, 4920, 1, 0, 0, 0, 991, 4926, 1, 0, 0, 0, 993, 4936, 1, 0, 0, 0, 995, 4941, 1, 0, 0, 0, 997, 4946, 1, 0, 0, 0, 999, 4955, 1, 0, 0, 0, 1001, 4961, 1, 0, 0, 0, 1003, 4965, 1, 0, 0, 0, 1005, 4973, 1, 0, 0, 0, 1007, 4975, 1, 0, 0, 0, 1009, 4983, 1, 0, 0, 0, 1011, 4985, 1, 0, 0, 0, 1013, 4991, 1, 0, 0, 0, 1015, 4993, 1, 0, 0, 0, 1017, 4999, 1, 0, 0, 0, 1019, 5001, 1, 0, 0, 0, 1021, 5003, 1, 0, 0, 0, 1023, 5005, 1, 0, 0, 0, 1025, 5007, 1, 0, 0, 0, 1027, 5009, 1, 0, 0, 0, 1029, 5011, 1, 0, 0, 0, 1031, 5013, 1, 0, 0, 0, 1033, 5015, 1, 0, 0, 0, 1035, 5018, 1, 0, 0, 0, 1037, 5020, 1, 0, 0, 0, 1039, 5022, 1, 0, 0, 0, 1041, 5025, 1, 0, 0, 0, 1043, 5027, 1, 0, 0, 0, 1045, 5029, 1, 0, 0, 0, 1047, 5032, 1, 0, 0, 0, 1049, 5036, 1, 0, 0, 0, 1051, 5039, 1, 0, 0, 0, 1053, 5042, 1, 0, 0, 0, 1055, 5044, 1, 0, 0, 0, 1057, 5091, 1, 0, 0, 0, 1059, 5097, 1, 0, 0, 0, 1061, 5100, 1, 0, 0, 0, 1063, 5107, 1, 0, 0, 0, 1065, 5114, 1, 0, 0, 0, 1067, 5121, 1, 0, 0, 0, 1069, 5136, 1, 0, 0, 0, 1071, 5138, 1, 0, 0, 0, 1073, 5161, 1, 0, 0, 0, 1075, 5166, 1, 0, 0, 0, 1077, 5170, 1, 0, 0, 0, 1079, 5199, 1, 0, 0, 0, 1081, 5201, 1, 0, 0, 0, 1083, 5210, 1, 0, 0, 0, 1085, 5216, 1, 0, 0, 0, 1087, 5218, 1, 0, 0, 0, 1089, 5237, 1, 0, 0, 0, 1091, 5253, 1, 0, 0, 0, 1093, 5271, 1, 0, 0, 0, 1095, 5277, 1, 0, 0, 0, 1097, 1098, 5, 59, 0, 0, 1098, 2, 1, 0, 0, 0, 1099, 1100, 5, 40, 0, 0, 1100, 4, 1, 0, 0, 0, 1101, 1102, 5, 41, 0, 0, 1102, 6, 1, 0, 0, 0, 1103, 1104, 5, 44, 0, 0, 1104, 8, 1, 0, 0, 0, 1105, 1106, 5, 46, 0, 0, 1106, 10, 1, 0, 0, 0, 1107, 1108, 5, 46, 0, 0, 1108, 1109, 5, 46, 0, 0, 1109, 1110, 5, 46, 0, 0, 1110, 12, 1, 0, 0, 0, 1111, 1112, 5, 91, 0, 0, 1112, 14, 1, 0, 0, 0, 1113, 1114, 5, 93, 0, 0, 1114, 16, 1, 0, 0, 0, 1115, 1116, 5, 123, 0, 0, 1116, 18, 1, 0, 0, 0, 1117, 1118, 5, 125, 0, 0, 1118, 20, 1, 0, 0, 0, 1119, 1120, 5, 65, 0, 0, 1120, 1121, 5, 67, 0, 0, 1121, 1122, 5, 67, 0, 0, 1122, 1123, 5, 79, 0, 0, 1123, 1124, 5, 85, 0, 0, 1124, 1125, 5, 78, 0, 0, 1125, 1126, 5, 84, 0, 0, 1126, 1127, 5, 95, 0, 0, 1127, 1128, 5, 76, 0, 0, 1128, 1129, 5, 79, 0, 0, 1129, 1130, 5, 67, 0, 0, 1130, 1131, 5, 75, 0, 0, 1131, 22, 1, 0, 0, 0, 1132, 1133, 5, 65, 0, 0, 1133, 1134, 5, 67, 0, 0, 1134, 1135, 5, 67, 0, 0, 1135, 1136, 5, 79, 0, 0, 1136, 1137, 5, 85, 0, 0, 1137, 1138, 5, 78, 0, 0, 1138, 1139, 5, 84, 0, 0, 1139, 1140, 5, 95, 0, 0, 1140, 1141, 5, 85, 0, 0, 1141, 1142, 5, 78, 0, 0, 1142, 1143, 5, 76, 0, 0, 1143, 1144, 5, 79, 0, 0, 1144, 1145, 5, 67, 0, 0, 1145, 1146, 5, 75, 0, 0, 1146, 24, 1, 0, 0, 0, 1147, 1148, 5, 65, 0, 0, 1148, 1149, 5, 67, 0, 0, 1149, 1150, 5, 84, 0, 0, 1150, 1151, 5, 73, 0, 0, 1151, 1152, 5, 79, 0, 0, 1152, 1153, 5, 78, 0, 0, 1153, 1154, 5, 83, 0, 0, 1154, 26, 1, 0, 0, 0, 1155, 1156, 5, 65, 0, 0, 1156, 1157, 5, 68, 0, 0, 1157, 1158, 5, 68, 0, 0, 1158, 28, 1, 0, 0, 0, 1159, 1160, 5, 65, 0, 0, 1160, 1161, 5, 68, 0, 0, 1161, 1162, 5, 77, 0, 0, 1162, 1163, 5, 73, 0, 0, 1163, 1164, 5, 78, 0, 0, 1164, 30, 1, 0, 0, 0, 1165, 1166, 5, 65, 0, 0, 1166, 1167, 5, 70, 0, 0, 1167, 1168, 5, 84, 0, 0, 1168, 1169, 5, 69, 0, 0, 1169, 1170, 5, 82, 0, 0, 1170, 32, 1, 0, 0, 0, 1171, 1172, 5, 65, 0, 0, 1172, 1173, 5, 71, 0, 0, 1173, 1174, 5, 71, 0, 0, 1174, 1175, 5, 95, 0, 0, 1175, 1176, 5, 83, 0, 0, 1176, 1177, 5, 84, 0, 0, 1177, 1178, 5, 65, 0, 0, 1178, 1179, 5, 84, 0, 0, 1179, 1180, 5, 69, 0, 0, 1180, 34, 1, 0, 0, 0, 1181, 1182, 5, 65, 0, 0, 1182, 1183, 5, 71, 0, 0, 1183, 1184, 5, 71, 0, 0, 1184, 1185, 5, 82, 0, 0, 1185, 1186, 5, 69, 0, 0, 1186, 1187, 5, 71, 0, 0, 1187, 1188, 5, 65, 0, 0, 1188, 1189, 5, 84, 0, 0, 1189, 1190, 5, 69, 0, 0, 1190, 36, 1, 0, 0, 0, 1191, 1192, 5, 65, 0, 0, 1192, 1193, 5, 76, 0, 0, 1193, 1194, 5, 73, 0, 0, 1194, 1195, 5, 65, 0, 0, 1195, 1196, 5, 83, 0, 0, 1196, 38, 1, 0, 0, 0, 1197, 1198, 5, 65, 0, 0, 1198, 1199, 5, 76, 0, 0, 1199, 1200, 5, 76, 0, 0, 1200, 40, 1, 0, 0, 0, 1201, 1202, 5, 65, 0, 0, 1202, 1203, 5, 76, 0, 0, 1203, 1204, 5, 84, 0, 0, 1204, 1205, 5, 69, 0, 0, 1205, 1206, 5, 82, 0, 0, 1206, 42, 1, 0, 0, 0, 1207, 1208, 5, 65, 0, 0, 1208, 1209, 5, 78, 0, 0, 1209, 1210, 5, 65, 0, 0, 1210, 1211, 5, 76, 0, 0, 1211, 1212, 5, 89, 0, 0, 1212, 1213, 5, 90, 0, 0, 1213, 1214, 5, 69, 0, 0, 1214, 44, 1, 0, 0, 0, 1215, 1216, 5, 65, 0, 0, 1216, 1217, 5, 78, 0, 0, 1217, 1218, 5, 65, 0, 0, 1218, 1219, 5, 76, 0, 0, 1219, 1220, 5, 89, 0, 0, 1220, 1221, 5, 90, 0, 0, 1221, 1222, 5, 69, 0, 0, 1222, 1223, 5, 68, 0, 0, 1223, 46, 1, 0, 0, 0, 1224, 1225, 5, 65, 0, 0, 1225, 1226, 5, 78, 0, 0, 1226, 1227, 5, 68, 0, 0, 1227, 48, 1, 0, 0, 0, 1228, 1229, 5, 65, 0, 0, 1229, 1230, 5, 78, 0, 0, 1230, 1231, 5, 84, 0, 0, 1231, 1232, 5, 73, 0, 0, 1232, 50, 1, 0, 0, 0, 1233, 1234, 5, 65, 0, 0, 1234, 1235, 5, 80, 0, 0, 1235, 1236, 5, 80, 0, 0, 1236, 1237, 5, 69, 0, 0, 1237, 1238, 5, 78, 0, 0, 1238, 1239, 5, 68, 0, 0, 1239, 52, 1, 0, 0, 0, 1240, 1241, 5, 65, 0, 0, 1241, 1242, 5, 82, 0, 0, 1242, 1243, 5, 82, 0, 0, 1243, 1244, 5, 65, 0, 0, 1244, 1245, 5, 89, 0, 0, 1245, 54, 1, 0, 0, 0, 1246, 1247, 5, 65, 0, 0, 1247, 1248, 5, 83, 0, 0, 1248, 56, 1, 0, 0, 0, 1249, 1250, 5, 65, 0, 0, 1250, 1251, 5, 83, 0, 0, 1251, 1252, 5, 67, 0, 0, 1252, 58, 1, 0, 0, 0, 1253, 1254, 5, 65, 0, 0, 1254, 1255, 5, 84, 0, 0, 1255, 60, 1, 0, 0, 0, 1256, 1257, 5, 65, 0, 0, 1257, 1258, 5, 85, 0, 0, 1258, 1259, 5, 84, 0, 0, 1259, 1260, 5, 72, 0, 0, 1260, 1261, 5, 79, 0, 0, 1261, 1262, 5, 82, 0, 0, 1262, 1263, 5, 83, 0, 0, 1263, 62, 1, 0, 0, 0, 1264, 1265, 5, 65, 0, 0, 1265, 1266, 5, 85, 0, 0, 1266, 1267, 5, 84, 0, 0, 1267, 1268, 5, 79, 0, 0, 1268, 64, 1, 0, 0, 0, 1269, 1270, 5, 65, 0, 0, 1270, 1271, 5, 85, 0, 0, 1271, 1272, 5, 84, 0, 0, 1272, 1273, 5, 79, 0, 0, 1273, 1274, 5, 95, 0, 0, 1274, 1275, 5, 73, 0, 0, 1275, 1276, 5, 78, 0, 0, 1276, 1277, 5, 67, 0, 0, 1277, 1278, 5, 82, 0, 0, 1278, 1279, 5, 69, 0, 0, 1279, 1280, 5, 77, 0, 0, 1280, 1281, 5, 69, 0, 0, 1281, 1282, 5, 78, 0, 0, 1282, 1283, 5, 84, 0, 0, 1283, 66, 1, 0, 0, 0, 1284, 1285, 5, 65, 0, 0, 1285, 1286, 5, 76, 0, 0, 1286, 1287, 5, 87, 0, 0, 1287, 1288, 5, 65, 0, 0, 1288, 1289, 5, 89, 0, 0, 1289, 1290, 5, 83, 0, 0, 1290, 68, 1, 0, 0, 0, 1291, 1292, 5, 66, 0, 0, 1292, 1293, 5, 65, 0, 0, 1293, 1294, 5, 67, 0, 0, 1294, 1295, 5, 75, 0, 0, 1295, 1296, 5, 69, 0, 0, 1296, 1297, 5, 78, 0, 0, 1297, 1298, 5, 68, 0, 0, 1298, 70, 1, 0, 0, 0, 1299, 1300, 5, 66, 0, 0, 1300, 1301, 5, 65, 0, 0, 1301, 1302, 5, 67, 0, 0, 1302, 1303, 5, 75, 0, 0, 1303, 1304, 5, 69, 0, 0, 1304, 1305, 5, 78, 0, 0, 1305, 1306, 5, 68, 0, 0, 1306, 1307, 5, 83, 0, 0, 1307, 72, 1, 0, 0, 0, 1308, 1309, 5, 66, 0, 0, 1309, 1310, 5, 65, 0, 0, 1310, 1311, 5, 67, 0, 0, 1311, 1312, 5, 75, 0, 0, 1312, 1313, 5, 85, 0, 0, 1313, 1314, 5, 80, 0, 0, 1314, 74, 1, 0, 0, 0, 1315, 1316, 5, 66, 0, 0, 1316, 1317, 5, 69, 0, 0, 1317, 1318, 5, 71, 0, 0, 1318, 1319, 5, 73, 0, 0, 1319, 1320, 5, 78, 0, 0, 1320, 76, 1, 0, 0, 0, 1321, 1322, 5, 66, 0, 0, 1322, 1323, 5, 69, 0, 0, 1323, 1324, 5, 76, 0, 0, 1324, 1325, 5, 79, 0, 0, 1325, 1326, 5, 78, 0, 0, 1326, 1327, 5, 71, 0, 0, 1327, 78, 1, 0, 0, 0, 1328, 1329, 5, 66, 0, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1331, 5, 84, 0, 0, 1331, 1332, 5, 87, 0, 0, 1332, 1333, 5, 69, 0, 0, 1333, 1334, 5, 69, 0, 0, 1334, 1335, 5, 78, 0, 0, 1335, 80, 1, 0, 0, 0, 1336, 1337, 5, 66, 0, 0, 1337, 1338, 5, 73, 0, 0, 1338, 1339, 5, 71, 0, 0, 1339, 1340, 5, 73, 0, 0, 1340, 1341, 5, 78, 0, 0, 1341, 1342, 5, 84, 0, 0, 1342, 82, 1, 0, 0, 0, 1343, 1344, 5, 66, 0, 0, 1344, 1345, 5, 73, 0, 0, 1345, 1346, 5, 78, 0, 0, 1346, 84, 1, 0, 0, 0, 1347, 1348, 5, 66, 0, 0, 1348, 1349, 5, 73, 0, 0, 1349, 1350, 5, 78, 0, 0, 1350, 1351, 5, 65, 0, 0, 1351, 1352, 5, 82, 0, 0, 1352, 1353, 5, 89, 0, 0, 1353, 86, 1, 0, 0, 0, 1354, 1355, 5, 66, 0, 0, 1355, 1356, 5, 73, 0, 0, 1356, 1357, 5, 78, 0, 0, 1357, 1358, 5, 76, 0, 0, 1358, 1359, 5, 79, 0, 0, 1359, 1360, 5, 71, 0, 0, 1360, 88, 1, 0, 0, 0, 1361, 1362, 5, 66, 0, 0, 1362, 1363, 5, 73, 0, 0, 1363, 1364, 5, 84, 0, 0, 1364, 1365, 5, 65, 0, 0, 1365, 1366, 5, 78, 0, 0, 1366, 1367, 5, 68, 0, 0, 1367, 90, 1, 0, 0, 0, 1368, 1369, 5, 66, 0, 0, 1369, 1370, 5, 73, 0, 0, 1370, 1371, 5, 84, 0, 0, 1371, 1372, 5, 77, 0, 0, 1372, 1373, 5, 65, 0, 0, 1373, 1374, 5, 80, 0, 0, 1374, 92, 1, 0, 0, 0, 1375, 1376, 5, 66, 0, 0, 1376, 1377, 5, 73, 0, 0, 1377, 1378, 5, 84, 0, 0, 1378, 1379, 5, 77, 0, 0, 1379, 1380, 5, 65, 0, 0, 1380, 1381, 5, 80, 0, 0, 1381, 1382, 5, 95, 0, 0, 1382, 1383, 5, 69, 0, 0, 1383, 1384, 5, 77, 0, 0, 1384, 1385, 5, 80, 0, 0, 1385, 1386, 5, 84, 0, 0, 1386, 1387, 5, 89, 0, 0, 1387, 94, 1, 0, 0, 0, 1388, 1389, 5, 66, 0, 0, 1389, 1390, 5, 73, 0, 0, 1390, 1391, 5, 84, 0, 0, 1391, 1392, 5, 77, 0, 0, 1392, 1393, 5, 65, 0, 0, 1393, 1394, 5, 80, 0, 0, 1394, 1395, 5, 95, 0, 0, 1395, 1396, 5, 85, 0, 0, 1396, 1397, 5, 78, 0, 0, 1397, 1398, 5, 73, 0, 0, 1398, 1399, 5, 79, 0, 0, 1399, 1400, 5, 78, 0, 0, 1400, 96, 1, 0, 0, 0, 1401, 1402, 5, 66, 0, 0, 1402, 1403, 5, 73, 0, 0, 1403, 1404, 5, 84, 0, 0, 1404, 1405, 5, 79, 0, 0, 1405, 1406, 5, 82, 0, 0, 1406, 98, 1, 0, 0, 0, 1407, 1408, 5, 66, 0, 0, 1408, 1409, 5, 73, 0, 0, 1409, 1410, 5, 84, 0, 0, 1410, 1411, 5, 88, 0, 0, 1411, 1412, 5, 79, 0, 0, 1412, 1413, 5, 82, 0, 0, 1413, 100, 1, 0, 0, 0, 1414, 1415, 5, 66, 0, 0, 1415, 1416, 5, 76, 0, 0, 1416, 1417, 5, 79, 0, 0, 1417, 1418, 5, 66, 0, 0, 1418, 102, 1, 0, 0, 0, 1419, 1420, 5, 66, 0, 0, 1420, 1421, 5, 79, 0, 0, 1421, 1422, 5, 79, 0, 0, 1422, 1423, 5, 76, 0, 0, 1423, 1424, 5, 69, 0, 0, 1424, 1425, 5, 65, 0, 0, 1425, 1426, 5, 78, 0, 0, 1426, 104, 1, 0, 0, 0, 1427, 1428, 5, 66, 0, 0, 1428, 1429, 5, 82, 0, 0, 1429, 1430, 5, 73, 0, 0, 1430, 1431, 5, 69, 0, 0, 1431, 1432, 5, 70, 0, 0, 1432, 106, 1, 0, 0, 0, 1433, 1434, 5, 66, 0, 0, 1434, 1435, 5, 82, 0, 0, 1435, 1436, 5, 79, 0, 0, 1436, 1437, 5, 75, 0, 0, 1437, 1438, 5, 69, 0, 0, 1438, 1439, 5, 82, 0, 0, 1439, 108, 1, 0, 0, 0, 1440, 1441, 5, 66, 0, 0, 1441, 1442, 5, 85, 0, 0, 1442, 1443, 5, 67, 0, 0, 1443, 1444, 5, 75, 0, 0, 1444, 1445, 5, 69, 0, 0, 1445, 1446, 5, 84, 0, 0, 1446, 1447, 5, 83, 0, 0, 1447, 110, 1, 0, 0, 0, 1448, 1449, 5, 66, 0, 0, 1449, 1450, 5, 85, 0, 0, 1450, 1451, 5, 73, 0, 0, 1451, 1452, 5, 76, 0, 0, 1452, 1453, 5, 68, 0, 0, 1453, 112, 1, 0, 0, 0, 1454, 1455, 5, 66, 0, 0, 1455, 1456, 5, 85, 0, 0, 1456, 1457, 5, 73, 0, 0, 1457, 1458, 5, 76, 0, 0, 1458, 1459, 5, 84, 0, 0, 1459, 1460, 5, 73, 0, 0, 1460, 1461, 5, 78, 0, 0, 1461, 114, 1, 0, 0, 0, 1462, 1463, 5, 66, 0, 0, 1463, 1464, 5, 85, 0, 0, 1464, 1465, 5, 76, 0, 0, 1465, 1466, 5, 75, 0, 0, 1466, 116, 1, 0, 0, 0, 1467, 1468, 5, 66, 0, 0, 1468, 1469, 5, 89, 0, 0, 1469, 118, 1, 0, 0, 0, 1470, 1471, 5, 67, 0, 0, 1471, 1472, 5, 65, 0, 0, 1472, 1473, 5, 67, 0, 0, 1473, 1474, 5, 72, 0, 0, 1474, 1475, 5, 69, 0, 0, 1475, 120, 1, 0, 0, 0, 1476, 1477, 5, 67, 0, 0, 1477, 1478, 5, 65, 0, 0, 1478, 1479, 5, 67, 0, 0, 1479, 1480, 5, 72, 0, 0, 1480, 1481, 5, 69, 0, 0, 1481, 1482, 5, 68, 0, 0, 1482, 122, 1, 0, 0, 0, 1483, 1484, 5, 67, 0, 0, 1484, 1485, 5, 65, 0, 0, 1485, 1486, 5, 76, 0, 0, 1486, 1487, 5, 76, 0, 0, 1487, 124, 1, 0, 0, 0, 1488, 1489, 5, 67, 0, 0, 1489, 1490, 5, 65, 0, 0, 1490, 1491, 5, 78, 0, 0, 1491, 1492, 5, 67, 0, 0, 1492, 1493, 5, 69, 0, 0, 1493, 1494, 5, 76, 0, 0, 1494, 126, 1, 0, 0, 0, 1495, 1496, 5, 67, 0, 0, 1496, 1497, 5, 65, 0, 0, 1497, 1498, 5, 83, 0, 0, 1498, 1499, 5, 69, 0, 0, 1499, 128, 1, 0, 0, 0, 1500, 1501, 5, 67, 0, 0, 1501, 1502, 5, 65, 0, 0, 1502, 1503, 5, 83, 0, 0, 1503, 1504, 5, 84, 0, 0, 1504, 130, 1, 0, 0, 0, 1505, 1506, 5, 67, 0, 0, 1506, 1507, 5, 65, 0, 0, 1507, 1508, 5, 84, 0, 0, 1508, 1509, 5, 65, 0, 0, 1509, 1510, 5, 76, 0, 0, 1510, 1511, 5, 79, 0, 0, 1511, 1512, 5, 71, 0, 0, 1512, 132, 1, 0, 0, 0, 1513, 1514, 5, 67, 0, 0, 1514, 1515, 5, 65, 0, 0, 1515, 1516, 5, 84, 0, 0, 1516, 1517, 5, 65, 0, 0, 1517, 1518, 5, 76, 0, 0, 1518, 1519, 5, 79, 0, 0, 1519, 1520, 5, 71, 0, 0, 1520, 1521, 5, 83, 0, 0, 1521, 134, 1, 0, 0, 0, 1522, 1523, 5, 67, 0, 0, 1523, 1524, 5, 72, 0, 0, 1524, 1525, 5, 65, 0, 0, 1525, 1526, 5, 73, 0, 0, 1526, 1527, 5, 78, 0, 0, 1527, 136, 1, 0, 0, 0, 1528, 1529, 5, 67, 0, 0, 1529, 1530, 5, 72, 0, 0, 1530, 1531, 5, 65, 0, 0, 1531, 1542, 5, 82, 0, 0, 1532, 1533, 5, 67, 0, 0, 1533, 1534, 5, 72, 0, 0, 1534, 1535, 5, 65, 0, 0, 1535, 1536, 5, 82, 0, 0, 1536, 1537, 5, 65, 0, 0, 1537, 1538, 5, 67, 0, 0, 1538, 1539, 5, 84, 0, 0, 1539, 1540, 5, 69, 0, 0, 1540, 1542, 5, 82, 0, 0, 1541, 1528, 1, 0, 0, 0, 1541, 1532, 1, 0, 0, 0, 1542, 138, 1, 0, 0, 0, 1543, 1544, 5, 67, 0, 0, 1544, 1545, 5, 72, 0, 0, 1545, 1546, 5, 65, 0, 0, 1546, 1547, 5, 82, 0, 0, 1547, 1548, 5, 83, 0, 0, 1548, 1549, 5, 69, 0, 0, 1549, 1550, 5, 84, 0, 0, 1550, 140, 1, 0, 0, 0, 1551, 1552, 5, 67, 0, 0, 1552, 1553, 5, 72, 0, 0, 1553, 1554, 5, 69, 0, 0, 1554, 1555, 5, 67, 0, 0, 1555, 1556, 5, 75, 0, 0, 1556, 142, 1, 0, 0, 0, 1557, 1558, 5, 67, 0, 0, 1558, 1559, 5, 76, 0, 0, 1559, 1560, 5, 69, 0, 0, 1560, 1561, 5, 65, 0, 0, 1561, 1562, 5, 78, 0, 0, 1562, 144, 1, 0, 0, 0, 1563, 1564, 5, 67, 0, 0, 1564, 1565, 5, 76, 0, 0, 1565, 1566, 5, 85, 0, 0, 1566, 1567, 5, 83, 0, 0, 1567, 1568, 5, 84, 0, 0, 1568, 1569, 5, 69, 0, 0, 1569, 1570, 5, 82, 0, 0, 1570, 146, 1, 0, 0, 0, 1571, 1572, 5, 67, 0, 0, 1572, 1573, 5, 76, 0, 0, 1573, 1574, 5, 85, 0, 0, 1574, 1575, 5, 83, 0, 0, 1575, 1576, 5, 84, 0, 0, 1576, 1577, 5, 69, 0, 0, 1577, 1578, 5, 82, 0, 0, 1578, 1579, 5, 83, 0, 0, 1579, 148, 1, 0, 0, 0, 1580, 1581, 5, 67, 0, 0, 1581, 1582, 5, 79, 0, 0, 1582, 1583, 5, 76, 0, 0, 1583, 1584, 5, 76, 0, 0, 1584, 1585, 5, 65, 0, 0, 1585, 1586, 5, 84, 0, 0, 1586, 1587, 5, 69, 0, 0, 1587, 150, 1, 0, 0, 0, 1588, 1589, 5, 67, 0, 0, 1589, 1590, 5, 79, 0, 0, 1590, 1591, 5, 76, 0, 0, 1591, 1592, 5, 76, 0, 0, 1592, 1593, 5, 65, 0, 0, 1593, 1594, 5, 84, 0, 0, 1594, 1595, 5, 73, 0, 0, 1595, 1596, 5, 79, 0, 0, 1596, 1597, 5, 78, 0, 0, 1597, 152, 1, 0, 0, 0, 1598, 1599, 5, 67, 0, 0, 1599, 1600, 5, 79, 0, 0, 1600, 1601, 5, 76, 0, 0, 1601, 1602, 5, 76, 0, 0, 1602, 1603, 5, 69, 0, 0, 1603, 1604, 5, 67, 0, 0, 1604, 1605, 5, 84, 0, 0, 1605, 154, 1, 0, 0, 0, 1606, 1607, 5, 67, 0, 0, 1607, 1608, 5, 79, 0, 0, 1608, 1609, 5, 76, 0, 0, 1609, 1610, 5, 79, 0, 0, 1610, 1611, 5, 67, 0, 0, 1611, 1612, 5, 65, 0, 0, 1612, 1613, 5, 84, 0, 0, 1613, 1614, 5, 69, 0, 0, 1614, 156, 1, 0, 0, 0, 1615, 1616, 5, 67, 0, 0, 1616, 1617, 5, 79, 0, 0, 1617, 1618, 5, 76, 0, 0, 1618, 1619, 5, 85, 0, 0, 1619, 1620, 5, 77, 0, 0, 1620, 1621, 5, 78, 0, 0, 1621, 158, 1, 0, 0, 0, 1622, 1623, 5, 67, 0, 0, 1623, 1624, 5, 79, 0, 0, 1624, 1625, 5, 76, 0, 0, 1625, 1626, 5, 85, 0, 0, 1626, 1627, 5, 77, 0, 0, 1627, 1628, 5, 78, 0, 0, 1628, 1629, 5, 83, 0, 0, 1629, 160, 1, 0, 0, 0, 1630, 1631, 5, 67, 0, 0, 1631, 1632, 5, 79, 0, 0, 1632, 1633, 5, 77, 0, 0, 1633, 1634, 5, 77, 0, 0, 1634, 1635, 5, 69, 0, 0, 1635, 1636, 5, 78, 0, 0, 1636, 1637, 5, 84, 0, 0, 1637, 162, 1, 0, 0, 0, 1638, 1639, 5, 67, 0, 0, 1639, 1640, 5, 79, 0, 0, 1640, 1641, 5, 77, 0, 0, 1641, 1642, 5, 77, 0, 0, 1642, 1643, 5, 73, 0, 0, 1643, 1644, 5, 84, 0, 0, 1644, 164, 1, 0, 0, 0, 1645, 1646, 5, 67, 0, 0, 1646, 1647, 5, 79, 0, 0, 1647, 1648, 5, 77, 0, 0, 1648, 1649, 5, 77, 0, 0, 1649, 1650, 5, 73, 0, 0, 1650, 1651, 5, 84, 0, 0, 1651, 1652, 5, 84, 0, 0, 1652, 1653, 5, 69, 0, 0, 1653, 1654, 5, 68, 0, 0, 1654, 166, 1, 0, 0, 0, 1655, 1656, 5, 67, 0, 0, 1656, 1657, 5, 79, 0, 0, 1657, 1658, 5, 77, 0, 0, 1658, 1659, 5, 80, 0, 0, 1659, 1660, 5, 65, 0, 0, 1660, 1661, 5, 67, 0, 0, 1661, 1662, 5, 84, 0, 0, 1662, 168, 1, 0, 0, 0, 1663, 1664, 5, 67, 0, 0, 1664, 1665, 5, 79, 0, 0, 1665, 1666, 5, 77, 0, 0, 1666, 1667, 5, 80, 0, 0, 1667, 1668, 5, 76, 0, 0, 1668, 1669, 5, 69, 0, 0, 1669, 1670, 5, 84, 0, 0, 1670, 1671, 5, 69, 0, 0, 1671, 170, 1, 0, 0, 0, 1672, 1673, 5, 67, 0, 0, 1673, 1674, 5, 79, 0, 0, 1674, 1675, 5, 77, 0, 0, 1675, 1676, 5, 80, 0, 0, 1676, 1677, 5, 82, 0, 0, 1677, 1678, 5, 69, 0, 0, 1678, 1679, 5, 83, 0, 0, 1679, 1680, 5, 83, 0, 0, 1680, 1681, 5, 95, 0, 0, 1681, 1682, 5, 84, 0, 0, 1682, 1683, 5, 89, 0, 0, 1683, 1684, 5, 80, 0, 0, 1684, 1685, 5, 69, 0, 0, 1685, 172, 1, 0, 0, 0, 1686, 1687, 5, 67, 0, 0, 1687, 1688, 5, 79, 0, 0, 1688, 1689, 5, 77, 0, 0, 1689, 1690, 5, 80, 0, 0, 1690, 1691, 5, 85, 0, 0, 1691, 1692, 5, 84, 0, 0, 1692, 1693, 5, 69, 0, 0, 1693, 174, 1, 0, 0, 0, 1694, 1695, 5, 67, 0, 0, 1695, 1696, 5, 79, 0, 0, 1696, 1697, 5, 78, 0, 0, 1697, 1698, 5, 68, 0, 0, 1698, 1699, 5, 73, 0, 0, 1699, 1700, 5, 84, 0, 0, 1700, 1701, 5, 73, 0, 0, 1701, 1702, 5, 79, 0, 0, 1702, 1703, 5, 78, 0, 0, 1703, 1704, 5, 83, 0, 0, 1704, 176, 1, 0, 0, 0, 1705, 1706, 5, 67, 0, 0, 1706, 1707, 5, 79, 0, 0, 1707, 1708, 5, 78, 0, 0, 1708, 1709, 5, 70, 0, 0, 1709, 1710, 5, 73, 0, 0, 1710, 1711, 5, 71, 0, 0, 1711, 178, 1, 0, 0, 0, 1712, 1713, 5, 67, 0, 0, 1713, 1714, 5, 79, 0, 0, 1714, 1715, 5, 78, 0, 0, 1715, 1716, 5, 78, 0, 0, 1716, 1717, 5, 69, 0, 0, 1717, 1718, 5, 67, 0, 0, 1718, 1719, 5, 84, 0, 0, 1719, 1720, 5, 73, 0, 0, 1720, 1721, 5, 79, 0, 0, 1721, 1722, 5, 78, 0, 0, 1722, 180, 1, 0, 0, 0, 1723, 1724, 5, 67, 0, 0, 1724, 1725, 5, 79, 0, 0, 1725, 1726, 5, 78, 0, 0, 1726, 1727, 5, 78, 0, 0, 1727, 1728, 5, 69, 0, 0, 1728, 1729, 5, 67, 0, 0, 1729, 1730, 5, 84, 0, 0, 1730, 1731, 5, 73, 0, 0, 1731, 1732, 5, 79, 0, 0, 1732, 1733, 5, 78, 0, 0, 1733, 1734, 5, 95, 0, 0, 1734, 1735, 5, 73, 0, 0, 1735, 1736, 5, 68, 0, 0, 1736, 182, 1, 0, 0, 0, 1737, 1738, 5, 67, 0, 0, 1738, 1739, 5, 79, 0, 0, 1739, 1740, 5, 78, 0, 0, 1740, 1741, 5, 83, 0, 0, 1741, 1742, 5, 73, 0, 0, 1742, 1743, 5, 83, 0, 0, 1743, 1744, 5, 84, 0, 0, 1744, 1745, 5, 69, 0, 0, 1745, 1746, 5, 78, 0, 0, 1746, 1747, 5, 84, 0, 0, 1747, 184, 1, 0, 0, 0, 1748, 1749, 5, 67, 0, 0, 1749, 1750, 5, 79, 0, 0, 1750, 1751, 5, 78, 0, 0, 1751, 1752, 5, 83, 0, 0, 1752, 1753, 5, 84, 0, 0, 1753, 1754, 5, 82, 0, 0, 1754, 1755, 5, 65, 0, 0, 1755, 1756, 5, 73, 0, 0, 1756, 1757, 5, 78, 0, 0, 1757, 1758, 5, 84, 0, 0, 1758, 186, 1, 0, 0, 0, 1759, 1760, 5, 67, 0, 0, 1760, 1761, 5, 79, 0, 0, 1761, 1762, 5, 78, 0, 0, 1762, 1763, 5, 83, 0, 0, 1763, 1764, 5, 84, 0, 0, 1764, 1765, 5, 82, 0, 0, 1765, 1766, 5, 65, 0, 0, 1766, 1767, 5, 73, 0, 0, 1767, 1768, 5, 78, 0, 0, 1768, 1769, 5, 84, 0, 0, 1769, 1770, 5, 83, 0, 0, 1770, 188, 1, 0, 0, 0, 1771, 1772, 5, 67, 0, 0, 1772, 1773, 5, 79, 0, 0, 1773, 1774, 5, 78, 0, 0, 1774, 1775, 5, 86, 0, 0, 1775, 1776, 5, 69, 0, 0, 1776, 1777, 5, 82, 0, 0, 1777, 1778, 5, 84, 0, 0, 1778, 190, 1, 0, 0, 0, 1779, 1780, 5, 67, 0, 0, 1780, 1781, 5, 79, 0, 0, 1781, 1782, 5, 78, 0, 0, 1782, 1783, 5, 86, 0, 0, 1783, 1784, 5, 69, 0, 0, 1784, 1785, 5, 82, 0, 0, 1785, 1786, 5, 84, 0, 0, 1786, 1787, 5, 95, 0, 0, 1787, 1788, 5, 76, 0, 0, 1788, 1789, 5, 73, 0, 0, 1789, 1790, 5, 71, 0, 0, 1790, 1791, 5, 72, 0, 0, 1791, 1792, 5, 84, 0, 0, 1792, 1793, 5, 95, 0, 0, 1793, 1794, 5, 83, 0, 0, 1794, 1795, 5, 67, 0, 0, 1795, 1796, 5, 72, 0, 0, 1796, 1797, 5, 69, 0, 0, 1797, 1798, 5, 77, 0, 0, 1798, 1799, 5, 65, 0, 0, 1799, 1800, 5, 95, 0, 0, 1800, 1801, 5, 67, 0, 0, 1801, 1802, 5, 72, 0, 0, 1802, 1803, 5, 65, 0, 0, 1803, 1804, 5, 78, 0, 0, 1804, 1805, 5, 71, 0, 0, 1805, 1806, 5, 69, 0, 0, 1806, 1807, 5, 95, 0, 0, 1807, 1808, 5, 80, 0, 0, 1808, 1809, 5, 82, 0, 0, 1809, 1810, 5, 79, 0, 0, 1810, 1811, 5, 67, 0, 0, 1811, 1812, 5, 69, 0, 0, 1812, 1813, 5, 83, 0, 0, 1813, 1814, 5, 83, 0, 0, 1814, 192, 1, 0, 0, 0, 1815, 1816, 5, 67, 0, 0, 1816, 1817, 5, 79, 0, 0, 1817, 1818, 5, 80, 0, 0, 1818, 1819, 5, 89, 0, 0, 1819, 194, 1, 0, 0, 0, 1820, 1821, 5, 67, 0, 0, 1821, 1822, 5, 79, 0, 0, 1822, 1823, 5, 85, 0, 0, 1823, 1824, 5, 78, 0, 0, 1824, 1825, 5, 84, 0, 0, 1825, 196, 1, 0, 0, 0, 1826, 1827, 5, 67, 0, 0, 1827, 1828, 5, 82, 0, 0, 1828, 1829, 5, 69, 0, 0, 1829, 1830, 5, 65, 0, 0, 1830, 1831, 5, 84, 0, 0, 1831, 1832, 5, 69, 0, 0, 1832, 198, 1, 0, 0, 0, 1833, 1834, 5, 67, 0, 0, 1834, 1835, 5, 82, 0, 0, 1835, 1836, 5, 69, 0, 0, 1836, 1837, 5, 65, 0, 0, 1837, 1838, 5, 84, 0, 0, 1838, 1839, 5, 73, 0, 0, 1839, 1840, 5, 79, 0, 0, 1840, 1841, 5, 78, 0, 0, 1841, 200, 1, 0, 0, 0, 1842, 1843, 5, 67, 0, 0, 1843, 1844, 5, 82, 0, 0, 1844, 1845, 5, 79, 0, 0, 1845, 1846, 5, 78, 0, 0, 1846, 202, 1, 0, 0, 0, 1847, 1848, 5, 67, 0, 0, 1848, 1849, 5, 82, 0, 0, 1849, 1850, 5, 79, 0, 0, 1850, 1851, 5, 83, 0, 0, 1851, 1852, 5, 83, 0, 0, 1852, 204, 1, 0, 0, 0, 1853, 1854, 5, 67, 0, 0, 1854, 1855, 5, 85, 0, 0, 1855, 1856, 5, 66, 0, 0, 1856, 1857, 5, 69, 0, 0, 1857, 206, 1, 0, 0, 0, 1858, 1859, 5, 67, 0, 0, 1859, 1860, 5, 85, 0, 0, 1860, 1861, 5, 82, 0, 0, 1861, 1862, 5, 82, 0, 0, 1862, 1863, 5, 69, 0, 0, 1863, 1864, 5, 78, 0, 0, 1864, 1865, 5, 84, 0, 0, 1865, 208, 1, 0, 0, 0, 1866, 1867, 5, 67, 0, 0, 1867, 1868, 5, 85, 0, 0, 1868, 1869, 5, 82, 0, 0, 1869, 1870, 5, 82, 0, 0, 1870, 1871, 5, 69, 0, 0, 1871, 1872, 5, 78, 0, 0, 1872, 1873, 5, 84, 0, 0, 1873, 1874, 5, 95, 0, 0, 1874, 1875, 5, 67, 0, 0, 1875, 1876, 5, 65, 0, 0, 1876, 1877, 5, 84, 0, 0, 1877, 1878, 5, 65, 0, 0, 1878, 1879, 5, 76, 0, 0, 1879, 1880, 5, 79, 0, 0, 1880, 1881, 5, 71, 0, 0, 1881, 210, 1, 0, 0, 0, 1882, 1883, 5, 67, 0, 0, 1883, 1884, 5, 85, 0, 0, 1884, 1885, 5, 82, 0, 0, 1885, 1886, 5, 82, 0, 0, 1886, 1887, 5, 69, 0, 0, 1887, 1888, 5, 78, 0, 0, 1888, 1889, 5, 84, 0, 0, 1889, 1890, 5, 95, 0, 0, 1890, 1891, 5, 68, 0, 0, 1891, 1892, 5, 65, 0, 0, 1892, 1893, 5, 84, 0, 0, 1893, 1894, 5, 69, 0, 0, 1894, 212, 1, 0, 0, 0, 1895, 1896, 5, 67, 0, 0, 1896, 1897, 5, 85, 0, 0, 1897, 1898, 5, 82, 0, 0, 1898, 1899, 5, 82, 0, 0, 1899, 1900, 5, 69, 0, 0, 1900, 1901, 5, 78, 0, 0, 1901, 1902, 5, 84, 0, 0, 1902, 1903, 5, 95, 0, 0, 1903, 1904, 5, 84, 0, 0, 1904, 1905, 5, 73, 0, 0, 1905, 1906, 5, 77, 0, 0, 1906, 1907, 5, 69, 0, 0, 1907, 214, 1, 0, 0, 0, 1908, 1909, 5, 67, 0, 0, 1909, 1910, 5, 85, 0, 0, 1910, 1911, 5, 82, 0, 0, 1911, 1912, 5, 82, 0, 0, 1912, 1913, 5, 69, 0, 0, 1913, 1914, 5, 78, 0, 0, 1914, 1915, 5, 84, 0, 0, 1915, 1916, 5, 95, 0, 0, 1916, 1917, 5, 84, 0, 0, 1917, 1918, 5, 73, 0, 0, 1918, 1919, 5, 77, 0, 0, 1919, 1920, 5, 69, 0, 0, 1920, 1921, 5, 83, 0, 0, 1921, 1922, 5, 84, 0, 0, 1922, 1923, 5, 65, 0, 0, 1923, 1924, 5, 77, 0, 0, 1924, 1925, 5, 80, 0, 0, 1925, 216, 1, 0, 0, 0, 1926, 1927, 5, 67, 0, 0, 1927, 1928, 5, 85, 0, 0, 1928, 1929, 5, 82, 0, 0, 1929, 1930, 5, 82, 0, 0, 1930, 1931, 5, 69, 0, 0, 1931, 1932, 5, 78, 0, 0, 1932, 1933, 5, 84, 0, 0, 1933, 1934, 5, 95, 0, 0, 1934, 1935, 5, 85, 0, 0, 1935, 1936, 5, 83, 0, 0, 1936, 1937, 5, 69, 0, 0, 1937, 1938, 5, 82, 0, 0, 1938, 218, 1, 0, 0, 0, 1939, 1940, 5, 68, 0, 0, 1940, 1941, 5, 65, 0, 0, 1941, 1942, 5, 84, 0, 0, 1942, 1943, 5, 65, 0, 0, 1943, 220, 1, 0, 0, 0, 1944, 1945, 5, 68, 0, 0, 1945, 1946, 5, 65, 0, 0, 1946, 1947, 5, 84, 0, 0, 1947, 1948, 5, 65, 0, 0, 1948, 1949, 5, 66, 0, 0, 1949, 1950, 5, 65, 0, 0, 1950, 1951, 5, 83, 0, 0, 1951, 1952, 5, 69, 0, 0, 1952, 222, 1, 0, 0, 0, 1953, 1954, 5, 68, 0, 0, 1954, 1955, 5, 65, 0, 0, 1955, 1956, 5, 84, 0, 0, 1956, 1957, 5, 65, 0, 0, 1957, 1958, 5, 66, 0, 0, 1958, 1959, 5, 65, 0, 0, 1959, 1960, 5, 83, 0, 0, 1960, 1961, 5, 69, 0, 0, 1961, 1962, 5, 83, 0, 0, 1962, 224, 1, 0, 0, 0, 1963, 1964, 5, 68, 0, 0, 1964, 1965, 5, 65, 0, 0, 1965, 1966, 5, 84, 0, 0, 1966, 1967, 5, 69, 0, 0, 1967, 226, 1, 0, 0, 0, 1968, 1969, 5, 68, 0, 0, 1969, 1970, 5, 65, 0, 0, 1970, 1971, 5, 84, 0, 0, 1971, 1972, 5, 69, 0, 0, 1972, 1973, 5, 84, 0, 0, 1973, 1974, 5, 73, 0, 0, 1974, 1975, 5, 77, 0, 0, 1975, 1976, 5, 69, 0, 0, 1976, 228, 1, 0, 0, 0, 1977, 1978, 5, 68, 0, 0, 1978, 1979, 5, 65, 0, 0, 1979, 1980, 5, 84, 0, 0, 1980, 1981, 5, 69, 0, 0, 1981, 1982, 5, 84, 0, 0, 1982, 1983, 5, 73, 0, 0, 1983, 1984, 5, 77, 0, 0, 1984, 1985, 5, 69, 0, 0, 1985, 1986, 5, 86, 0, 0, 1986, 1987, 5, 50, 0, 0, 1987, 230, 1, 0, 0, 0, 1988, 1989, 5, 68, 0, 0, 1989, 1990, 5, 65, 0, 0, 1990, 1991, 5, 84, 0, 0, 1991, 1992, 5, 69, 0, 0, 1992, 1993, 5, 86, 0, 0, 1993, 1994, 5, 50, 0, 0, 1994, 232, 1, 0, 0, 0, 1995, 1996, 5, 68, 0, 0, 1996, 1997, 5, 65, 0, 0, 1997, 1998, 5, 84, 0, 0, 1998, 1999, 5, 69, 0, 0, 1999, 2000, 5, 84, 0, 0, 2000, 2001, 5, 73, 0, 0, 2001, 2002, 5, 77, 0, 0, 2002, 2003, 5, 69, 0, 0, 2003, 2004, 5, 86, 0, 0, 2004, 2005, 5, 49, 0, 0, 2005, 234, 1, 0, 0, 0, 2006, 2007, 5, 68, 0, 0, 2007, 2008, 5, 65, 0, 0, 2008, 2009, 5, 84, 0, 0, 2009, 2010, 5, 69, 0, 0, 2010, 2011, 5, 86, 0, 0, 2011, 2012, 5, 49, 0, 0, 2012, 236, 1, 0, 0, 0, 2013, 2014, 5, 68, 0, 0, 2014, 2015, 5, 65, 0, 0, 2015, 2016, 5, 89, 0, 0, 2016, 238, 1, 0, 0, 0, 2017, 2018, 5, 68, 0, 0, 2018, 2019, 5, 69, 0, 0, 2019, 2020, 5, 67, 0, 0, 2020, 2021, 5, 73, 0, 0, 2021, 2022, 5, 77, 0, 0, 2022, 2023, 5, 65, 0, 0, 2023, 2024, 5, 76, 0, 0, 2024, 240, 1, 0, 0, 0, 2025, 2026, 5, 68, 0, 0, 2026, 2027, 5, 69, 0, 0, 2027, 2028, 5, 67, 0, 0, 2028, 2029, 5, 73, 0, 0, 2029, 2030, 5, 77, 0, 0, 2030, 2031, 5, 65, 0, 0, 2031, 2032, 5, 76, 0, 0, 2032, 2033, 5, 86, 0, 0, 2033, 2034, 5, 50, 0, 0, 2034, 242, 1, 0, 0, 0, 2035, 2036, 5, 68, 0, 0, 2036, 2037, 5, 69, 0, 0, 2037, 2038, 5, 67, 0, 0, 2038, 2039, 5, 73, 0, 0, 2039, 2040, 5, 77, 0, 0, 2040, 2041, 5, 65, 0, 0, 2041, 2042, 5, 76, 0, 0, 2042, 2043, 5, 86, 0, 0, 2043, 2044, 5, 51, 0, 0, 2044, 244, 1, 0, 0, 0, 2045, 2046, 5, 68, 0, 0, 2046, 2047, 5, 69, 0, 0, 2047, 2048, 5, 67, 0, 0, 2048, 2049, 5, 79, 0, 0, 2049, 2050, 5, 77, 0, 0, 2050, 2051, 5, 77, 0, 0, 2051, 2052, 5, 73, 0, 0, 2052, 2053, 5, 83, 0, 0, 2053, 2054, 5, 83, 0, 0, 2054, 2055, 5, 73, 0, 0, 2055, 2056, 5, 79, 0, 0, 2056, 2057, 5, 78, 0, 0, 2057, 246, 1, 0, 0, 0, 2058, 2059, 5, 68, 0, 0, 2059, 2060, 5, 69, 0, 0, 2060, 2061, 5, 70, 0, 0, 2061, 2062, 5, 65, 0, 0, 2062, 2063, 5, 85, 0, 0, 2063, 2064, 5, 76, 0, 0, 2064, 2065, 5, 84, 0, 0, 2065, 248, 1, 0, 0, 0, 2066, 2067, 5, 68, 0, 0, 2067, 2068, 5, 69, 0, 0, 2068, 2069, 5, 70, 0, 0, 2069, 2070, 5, 69, 0, 0, 2070, 2071, 5, 82, 0, 0, 2071, 2072, 5, 82, 0, 0, 2072, 2073, 5, 69, 0, 0, 2073, 2074, 5, 68, 0, 0, 2074, 250, 1, 0, 0, 0, 2075, 2076, 5, 68, 0, 0, 2076, 2077, 5, 69, 0, 0, 2077, 2078, 5, 76, 0, 0, 2078, 2079, 5, 69, 0, 0, 2079, 2080, 5, 84, 0, 0, 2080, 2081, 5, 69, 0, 0, 2081, 252, 1, 0, 0, 0, 2082, 2083, 5, 68, 0, 0, 2083, 2084, 5, 69, 0, 0, 2084, 2085, 5, 77, 0, 0, 2085, 2086, 5, 65, 0, 0, 2086, 2087, 5, 78, 0, 0, 2087, 2088, 5, 68, 0, 0, 2088, 254, 1, 0, 0, 0, 2089, 2090, 5, 68, 0, 0, 2090, 2091, 5, 69, 0, 0, 2091, 2092, 5, 83, 0, 0, 2092, 2093, 5, 67, 0, 0, 2093, 256, 1, 0, 0, 0, 2094, 2095, 5, 68, 0, 0, 2095, 2096, 5, 69, 0, 0, 2096, 2097, 5, 83, 0, 0, 2097, 2098, 5, 67, 0, 0, 2098, 2099, 5, 82, 0, 0, 2099, 2100, 5, 73, 0, 0, 2100, 2101, 5, 66, 0, 0, 2101, 2102, 5, 69, 0, 0, 2102, 258, 1, 0, 0, 0, 2103, 2104, 5, 68, 0, 0, 2104, 2105, 5, 73, 0, 0, 2105, 2106, 5, 65, 0, 0, 2106, 2107, 5, 71, 0, 0, 2107, 2108, 5, 78, 0, 0, 2108, 2109, 5, 79, 0, 0, 2109, 2110, 5, 83, 0, 0, 2110, 2111, 5, 69, 0, 0, 2111, 260, 1, 0, 0, 0, 2112, 2113, 5, 68, 0, 0, 2113, 2114, 5, 73, 0, 0, 2114, 2115, 5, 65, 0, 0, 2115, 2116, 5, 71, 0, 0, 2116, 2117, 5, 78, 0, 0, 2117, 2118, 5, 79, 0, 0, 2118, 2119, 5, 83, 0, 0, 2119, 2120, 5, 73, 0, 0, 2120, 2121, 5, 83, 0, 0, 2121, 262, 1, 0, 0, 0, 2122, 2123, 5, 68, 0, 0, 2123, 2124, 5, 73, 0, 0, 2124, 2125, 5, 83, 0, 0, 2125, 2126, 5, 75, 0, 0, 2126, 264, 1, 0, 0, 0, 2127, 2128, 5, 68, 0, 0, 2128, 2129, 5, 73, 0, 0, 2129, 2130, 5, 83, 0, 0, 2130, 2131, 5, 84, 0, 0, 2131, 2132, 5, 73, 0, 0, 2132, 2133, 5, 78, 0, 0, 2133, 2134, 5, 67, 0, 0, 2134, 2135, 5, 84, 0, 0, 2135, 266, 1, 0, 0, 0, 2136, 2137, 5, 68, 0, 0, 2137, 2138, 5, 73, 0, 0, 2138, 2139, 5, 83, 0, 0, 2139, 2140, 5, 84, 0, 0, 2140, 2141, 5, 73, 0, 0, 2141, 2142, 5, 78, 0, 0, 2142, 2143, 5, 67, 0, 0, 2143, 2144, 5, 84, 0, 0, 2144, 2145, 5, 80, 0, 0, 2145, 2146, 5, 67, 0, 0, 2146, 268, 1, 0, 0, 0, 2147, 2148, 5, 68, 0, 0, 2148, 2149, 5, 73, 0, 0, 2149, 2150, 5, 83, 0, 0, 2150, 2151, 5, 84, 0, 0, 2151, 2152, 5, 73, 0, 0, 2152, 2153, 5, 78, 0, 0, 2153, 2154, 5, 67, 0, 0, 2154, 2155, 5, 84, 0, 0, 2155, 2156, 5, 80, 0, 0, 2156, 2157, 5, 67, 0, 0, 2157, 2158, 5, 83, 0, 0, 2158, 2159, 5, 65, 0, 0, 2159, 270, 1, 0, 0, 0, 2160, 2161, 5, 68, 0, 0, 2161, 2162, 5, 73, 0, 0, 2162, 2163, 5, 83, 0, 0, 2163, 2164, 5, 84, 0, 0, 2164, 2165, 5, 82, 0, 0, 2165, 2166, 5, 73, 0, 0, 2166, 2167, 5, 66, 0, 0, 2167, 2168, 5, 85, 0, 0, 2168, 2169, 5, 84, 0, 0, 2169, 2170, 5, 69, 0, 0, 2170, 2171, 5, 68, 0, 0, 2171, 272, 1, 0, 0, 0, 2172, 2173, 5, 68, 0, 0, 2173, 2174, 5, 73, 0, 0, 2174, 2175, 5, 83, 0, 0, 2175, 2176, 5, 84, 0, 0, 2176, 2177, 5, 82, 0, 0, 2177, 2178, 5, 73, 0, 0, 2178, 2179, 5, 66, 0, 0, 2179, 2180, 5, 85, 0, 0, 2180, 2181, 5, 84, 0, 0, 2181, 2182, 5, 73, 0, 0, 2182, 2183, 5, 79, 0, 0, 2183, 2184, 5, 78, 0, 0, 2184, 274, 1, 0, 0, 0, 2185, 2186, 5, 68, 0, 0, 2186, 2187, 5, 73, 0, 0, 2187, 2188, 5, 86, 0, 0, 2188, 276, 1, 0, 0, 0, 2189, 2190, 5, 68, 0, 0, 2190, 2191, 5, 79, 0, 0, 2191, 278, 1, 0, 0, 0, 2192, 2193, 5, 68, 0, 0, 2193, 2194, 5, 79, 0, 0, 2194, 2195, 5, 82, 0, 0, 2195, 2196, 5, 73, 0, 0, 2196, 2197, 5, 83, 0, 0, 2197, 2198, 5, 95, 0, 0, 2198, 2199, 5, 73, 0, 0, 2199, 2200, 5, 78, 0, 0, 2200, 2201, 5, 84, 0, 0, 2201, 2202, 5, 69, 0, 0, 2202, 2203, 5, 82, 0, 0, 2203, 2204, 5, 78, 0, 0, 2204, 2205, 5, 65, 0, 0, 2205, 2206, 5, 76, 0, 0, 2206, 2207, 5, 95, 0, 0, 2207, 2208, 5, 84, 0, 0, 2208, 2209, 5, 65, 0, 0, 2209, 2210, 5, 66, 0, 0, 2210, 2211, 5, 76, 0, 0, 2211, 2212, 5, 69, 0, 0, 2212, 2213, 5, 95, 0, 0, 2213, 2214, 5, 73, 0, 0, 2214, 2215, 5, 68, 0, 0, 2215, 280, 1, 0, 0, 0, 2216, 2217, 5, 68, 0, 0, 2217, 2218, 5, 79, 0, 0, 2218, 2219, 5, 85, 0, 0, 2219, 2220, 5, 66, 0, 0, 2220, 2221, 5, 76, 0, 0, 2221, 2222, 5, 69, 0, 0, 2222, 282, 1, 0, 0, 0, 2223, 2224, 5, 68, 0, 0, 2224, 2225, 5, 82, 0, 0, 2225, 2226, 5, 79, 0, 0, 2226, 2227, 5, 80, 0, 0, 2227, 284, 1, 0, 0, 0, 2228, 2229, 5, 68, 0, 0, 2229, 2230, 5, 82, 0, 0, 2230, 2231, 5, 79, 0, 0, 2231, 2232, 5, 80, 0, 0, 2232, 2233, 5, 80, 0, 0, 2233, 286, 1, 0, 0, 0, 2234, 2235, 5, 68, 0, 0, 2235, 2236, 5, 85, 0, 0, 2236, 2237, 5, 65, 0, 0, 2237, 2238, 5, 76, 0, 0, 2238, 288, 1, 0, 0, 0, 2239, 2240, 5, 68, 0, 0, 2240, 2241, 5, 85, 0, 0, 2241, 2242, 5, 77, 0, 0, 2242, 2243, 5, 80, 0, 0, 2243, 290, 1, 0, 0, 0, 2244, 2245, 5, 68, 0, 0, 2245, 2246, 5, 85, 0, 0, 2246, 2247, 5, 80, 0, 0, 2247, 2248, 5, 76, 0, 0, 2248, 2249, 5, 73, 0, 0, 2249, 2250, 5, 67, 0, 0, 2250, 2251, 5, 65, 0, 0, 2251, 2252, 5, 84, 0, 0, 2252, 2253, 5, 69, 0, 0, 2253, 292, 1, 0, 0, 0, 2254, 2255, 5, 68, 0, 0, 2255, 2256, 5, 89, 0, 0, 2256, 2257, 5, 78, 0, 0, 2257, 2258, 5, 65, 0, 0, 2258, 2259, 5, 77, 0, 0, 2259, 2260, 5, 73, 0, 0, 2260, 2261, 5, 67, 0, 0, 2261, 294, 1, 0, 0, 0, 2262, 2263, 5, 69, 0, 0, 2263, 296, 1, 0, 0, 0, 2264, 2265, 5, 69, 0, 0, 2265, 2266, 5, 76, 0, 0, 2266, 2267, 5, 83, 0, 0, 2267, 2268, 5, 69, 0, 0, 2268, 298, 1, 0, 0, 0, 2269, 2270, 5, 69, 0, 0, 2270, 2271, 5, 78, 0, 0, 2271, 2272, 5, 65, 0, 0, 2272, 2273, 5, 66, 0, 0, 2273, 2274, 5, 76, 0, 0, 2274, 2275, 5, 69, 0, 0, 2275, 300, 1, 0, 0, 0, 2276, 2277, 5, 69, 0, 0, 2277, 2278, 5, 78, 0, 0, 2278, 2279, 5, 67, 0, 0, 2279, 2280, 5, 82, 0, 0, 2280, 2281, 5, 89, 0, 0, 2281, 2282, 5, 80, 0, 0, 2282, 2283, 5, 84, 0, 0, 2283, 2284, 5, 75, 0, 0, 2284, 2285, 5, 69, 0, 0, 2285, 2286, 5, 89, 0, 0, 2286, 302, 1, 0, 0, 0, 2287, 2288, 5, 69, 0, 0, 2288, 2289, 5, 78, 0, 0, 2289, 2290, 5, 67, 0, 0, 2290, 2291, 5, 82, 0, 0, 2291, 2292, 5, 89, 0, 0, 2292, 2293, 5, 80, 0, 0, 2293, 2294, 5, 84, 0, 0, 2294, 2295, 5, 75, 0, 0, 2295, 2296, 5, 69, 0, 0, 2296, 2297, 5, 89, 0, 0, 2297, 2298, 5, 83, 0, 0, 2298, 304, 1, 0, 0, 0, 2299, 2300, 5, 69, 0, 0, 2300, 2301, 5, 78, 0, 0, 2301, 2302, 5, 68, 0, 0, 2302, 306, 1, 0, 0, 0, 2303, 2304, 5, 69, 0, 0, 2304, 2305, 5, 78, 0, 0, 2305, 2306, 5, 68, 0, 0, 2306, 2307, 5, 83, 0, 0, 2307, 308, 1, 0, 0, 0, 2308, 2309, 5, 69, 0, 0, 2309, 2310, 5, 78, 0, 0, 2310, 2311, 5, 71, 0, 0, 2311, 2312, 5, 73, 0, 0, 2312, 2313, 5, 78, 0, 0, 2313, 2314, 5, 69, 0, 0, 2314, 310, 1, 0, 0, 0, 2315, 2316, 5, 69, 0, 0, 2316, 2317, 5, 78, 0, 0, 2317, 2318, 5, 71, 0, 0, 2318, 2319, 5, 73, 0, 0, 2319, 2320, 5, 78, 0, 0, 2320, 2321, 5, 69, 0, 0, 2321, 2322, 5, 83, 0, 0, 2322, 312, 1, 0, 0, 0, 2323, 2324, 5, 69, 0, 0, 2324, 2325, 5, 78, 0, 0, 2325, 2326, 5, 84, 0, 0, 2326, 2327, 5, 69, 0, 0, 2327, 2328, 5, 82, 0, 0, 2328, 314, 1, 0, 0, 0, 2329, 2330, 5, 69, 0, 0, 2330, 2331, 5, 82, 0, 0, 2331, 2332, 5, 82, 0, 0, 2332, 2333, 5, 79, 0, 0, 2333, 2334, 5, 82, 0, 0, 2334, 2335, 5, 83, 0, 0, 2335, 316, 1, 0, 0, 0, 2336, 2337, 5, 69, 0, 0, 2337, 2338, 5, 86, 0, 0, 2338, 2339, 5, 69, 0, 0, 2339, 2340, 5, 78, 0, 0, 2340, 2341, 5, 84, 0, 0, 2341, 2342, 5, 83, 0, 0, 2342, 318, 1, 0, 0, 0, 2343, 2344, 5, 69, 0, 0, 2344, 2345, 5, 86, 0, 0, 2345, 2346, 5, 69, 0, 0, 2346, 2347, 5, 82, 0, 0, 2347, 2348, 5, 89, 0, 0, 2348, 320, 1, 0, 0, 0, 2349, 2350, 5, 69, 0, 0, 2350, 2351, 5, 88, 0, 0, 2351, 2352, 5, 67, 0, 0, 2352, 2353, 5, 69, 0, 0, 2353, 2354, 5, 80, 0, 0, 2354, 2355, 5, 84, 0, 0, 2355, 322, 1, 0, 0, 0, 2356, 2357, 5, 69, 0, 0, 2357, 2358, 5, 88, 0, 0, 2358, 2359, 5, 67, 0, 0, 2359, 2360, 5, 76, 0, 0, 2360, 2361, 5, 85, 0, 0, 2361, 2362, 5, 68, 0, 0, 2362, 2363, 5, 69, 0, 0, 2363, 324, 1, 0, 0, 0, 2364, 2365, 5, 69, 0, 0, 2365, 2366, 5, 88, 0, 0, 2366, 2367, 5, 69, 0, 0, 2367, 2368, 5, 67, 0, 0, 2368, 2369, 5, 85, 0, 0, 2369, 2370, 5, 84, 0, 0, 2370, 2371, 5, 69, 0, 0, 2371, 326, 1, 0, 0, 0, 2372, 2373, 5, 69, 0, 0, 2373, 2374, 5, 88, 0, 0, 2374, 2375, 5, 73, 0, 0, 2375, 2376, 5, 83, 0, 0, 2376, 2377, 5, 84, 0, 0, 2377, 2378, 5, 83, 0, 0, 2378, 328, 1, 0, 0, 0, 2379, 2380, 5, 69, 0, 0, 2380, 2381, 5, 88, 0, 0, 2381, 2382, 5, 80, 0, 0, 2382, 2383, 5, 73, 0, 0, 2383, 2384, 5, 82, 0, 0, 2384, 2385, 5, 69, 0, 0, 2385, 2386, 5, 68, 0, 0, 2386, 330, 1, 0, 0, 0, 2387, 2388, 5, 69, 0, 0, 2388, 2389, 5, 88, 0, 0, 2389, 2390, 5, 80, 0, 0, 2390, 2391, 5, 76, 0, 0, 2391, 2392, 5, 65, 0, 0, 2392, 2393, 5, 73, 0, 0, 2393, 2394, 5, 78, 0, 0, 2394, 332, 1, 0, 0, 0, 2395, 2396, 5, 69, 0, 0, 2396, 2397, 5, 88, 0, 0, 2397, 2398, 5, 80, 0, 0, 2398, 2399, 5, 79, 0, 0, 2399, 2400, 5, 82, 0, 0, 2400, 2401, 5, 84, 0, 0, 2401, 334, 1, 0, 0, 0, 2402, 2403, 5, 69, 0, 0, 2403, 2404, 5, 88, 0, 0, 2404, 2405, 5, 84, 0, 0, 2405, 2406, 5, 69, 0, 0, 2406, 2407, 5, 78, 0, 0, 2407, 2408, 5, 68, 0, 0, 2408, 2409, 5, 69, 0, 0, 2409, 2410, 5, 68, 0, 0, 2410, 336, 1, 0, 0, 0, 2411, 2412, 5, 69, 0, 0, 2412, 2413, 5, 88, 0, 0, 2413, 2414, 5, 84, 0, 0, 2414, 2415, 5, 69, 0, 0, 2415, 2416, 5, 82, 0, 0, 2416, 2417, 5, 78, 0, 0, 2417, 2418, 5, 65, 0, 0, 2418, 2419, 5, 76, 0, 0, 2419, 338, 1, 0, 0, 0, 2420, 2421, 5, 69, 0, 0, 2421, 2422, 5, 88, 0, 0, 2422, 2423, 5, 84, 0, 0, 2423, 2424, 5, 82, 0, 0, 2424, 2425, 5, 65, 0, 0, 2425, 2426, 5, 67, 0, 0, 2426, 2427, 5, 84, 0, 0, 2427, 340, 1, 0, 0, 0, 2428, 2429, 5, 70, 0, 0, 2429, 2430, 5, 65, 0, 0, 2430, 2431, 5, 73, 0, 0, 2431, 2432, 5, 76, 0, 0, 2432, 2433, 5, 69, 0, 0, 2433, 2434, 5, 68, 0, 0, 2434, 2435, 5, 95, 0, 0, 2435, 2436, 5, 76, 0, 0, 2436, 2437, 5, 79, 0, 0, 2437, 2438, 5, 71, 0, 0, 2438, 2439, 5, 73, 0, 0, 2439, 2440, 5, 78, 0, 0, 2440, 2441, 5, 95, 0, 0, 2441, 2442, 5, 65, 0, 0, 2442, 2443, 5, 84, 0, 0, 2443, 2444, 5, 84, 0, 0, 2444, 2445, 5, 69, 0, 0, 2445, 2446, 5, 77, 0, 0, 2446, 2447, 5, 80, 0, 0, 2447, 2448, 5, 84, 0, 0, 2448, 2449, 5, 83, 0, 0, 2449, 342, 1, 0, 0, 0, 2450, 2451, 5, 70, 0, 0, 2451, 2452, 5, 65, 0, 0, 2452, 2453, 5, 76, 0, 0, 2453, 2454, 5, 83, 0, 0, 2454, 2455, 5, 69, 0, 0, 2455, 344, 1, 0, 0, 0, 2456, 2457, 5, 70, 0, 0, 2457, 2458, 5, 65, 0, 0, 2458, 2459, 5, 83, 0, 0, 2459, 2460, 5, 84, 0, 0, 2460, 346, 1, 0, 0, 0, 2461, 2462, 5, 70, 0, 0, 2462, 2463, 5, 69, 0, 0, 2463, 2464, 5, 65, 0, 0, 2464, 2465, 5, 84, 0, 0, 2465, 2466, 5, 85, 0, 0, 2466, 2467, 5, 82, 0, 0, 2467, 2468, 5, 69, 0, 0, 2468, 348, 1, 0, 0, 0, 2469, 2470, 5, 70, 0, 0, 2470, 2471, 5, 73, 0, 0, 2471, 2472, 5, 69, 0, 0, 2472, 2473, 5, 76, 0, 0, 2473, 2474, 5, 68, 0, 0, 2474, 2475, 5, 83, 0, 0, 2475, 350, 1, 0, 0, 0, 2476, 2477, 5, 70, 0, 0, 2477, 2478, 5, 73, 0, 0, 2478, 2479, 5, 76, 0, 0, 2479, 2480, 5, 69, 0, 0, 2480, 352, 1, 0, 0, 0, 2481, 2482, 5, 70, 0, 0, 2482, 2483, 5, 73, 0, 0, 2483, 2484, 5, 76, 0, 0, 2484, 2485, 5, 84, 0, 0, 2485, 2486, 5, 69, 0, 0, 2486, 2487, 5, 82, 0, 0, 2487, 354, 1, 0, 0, 0, 2488, 2489, 5, 70, 0, 0, 2489, 2490, 5, 73, 0, 0, 2490, 2491, 5, 82, 0, 0, 2491, 2492, 5, 83, 0, 0, 2492, 2493, 5, 84, 0, 0, 2493, 356, 1, 0, 0, 0, 2494, 2495, 5, 70, 0, 0, 2495, 2496, 5, 76, 0, 0, 2496, 2497, 5, 79, 0, 0, 2497, 2498, 5, 65, 0, 0, 2498, 2499, 5, 84, 0, 0, 2499, 358, 1, 0, 0, 0, 2500, 2501, 5, 70, 0, 0, 2501, 2502, 5, 79, 0, 0, 2502, 2503, 5, 76, 0, 0, 2503, 2504, 5, 76, 0, 0, 2504, 2505, 5, 79, 0, 0, 2505, 2506, 5, 87, 0, 0, 2506, 2507, 5, 69, 0, 0, 2507, 2508, 5, 82, 0, 0, 2508, 360, 1, 0, 0, 0, 2509, 2510, 5, 70, 0, 0, 2510, 2511, 5, 79, 0, 0, 2511, 2512, 5, 76, 0, 0, 2512, 2513, 5, 76, 0, 0, 2513, 2514, 5, 79, 0, 0, 2514, 2515, 5, 87, 0, 0, 2515, 2516, 5, 73, 0, 0, 2516, 2517, 5, 78, 0, 0, 2517, 2518, 5, 71, 0, 0, 2518, 362, 1, 0, 0, 0, 2519, 2520, 5, 70, 0, 0, 2520, 2521, 5, 79, 0, 0, 2521, 2522, 5, 82, 0, 0, 2522, 364, 1, 0, 0, 0, 2523, 2524, 5, 70, 0, 0, 2524, 2525, 5, 79, 0, 0, 2525, 2526, 5, 82, 0, 0, 2526, 2527, 5, 69, 0, 0, 2527, 2528, 5, 73, 0, 0, 2528, 2529, 5, 71, 0, 0, 2529, 2530, 5, 78, 0, 0, 2530, 366, 1, 0, 0, 0, 2531, 2532, 5, 70, 0, 0, 2532, 2533, 5, 79, 0, 0, 2533, 2534, 5, 82, 0, 0, 2534, 2535, 5, 67, 0, 0, 2535, 2536, 5, 69, 0, 0, 2536, 368, 1, 0, 0, 0, 2537, 2538, 5, 70, 0, 0, 2538, 2539, 5, 79, 0, 0, 2539, 2540, 5, 82, 0, 0, 2540, 2541, 5, 77, 0, 0, 2541, 2542, 5, 65, 0, 0, 2542, 2543, 5, 84, 0, 0, 2543, 370, 1, 0, 0, 0, 2544, 2545, 5, 70, 0, 0, 2545, 2546, 5, 82, 0, 0, 2546, 2547, 5, 69, 0, 0, 2547, 2548, 5, 69, 0, 0, 2548, 372, 1, 0, 0, 0, 2549, 2550, 5, 70, 0, 0, 2550, 2551, 5, 82, 0, 0, 2551, 2552, 5, 79, 0, 0, 2552, 2553, 5, 77, 0, 0, 2553, 374, 1, 0, 0, 0, 2554, 2555, 5, 70, 0, 0, 2555, 2556, 5, 82, 0, 0, 2556, 2557, 5, 79, 0, 0, 2557, 2558, 5, 78, 0, 0, 2558, 2559, 5, 84, 0, 0, 2559, 2560, 5, 69, 0, 0, 2560, 2561, 5, 78, 0, 0, 2561, 2562, 5, 68, 0, 0, 2562, 376, 1, 0, 0, 0, 2563, 2564, 5, 70, 0, 0, 2564, 2565, 5, 82, 0, 0, 2565, 2566, 5, 79, 0, 0, 2566, 2567, 5, 78, 0, 0, 2567, 2568, 5, 84, 0, 0, 2568, 2569, 5, 69, 0, 0, 2569, 2570, 5, 78, 0, 0, 2570, 2571, 5, 68, 0, 0, 2571, 2572, 5, 83, 0, 0, 2572, 378, 1, 0, 0, 0, 2573, 2574, 5, 70, 0, 0, 2574, 2575, 5, 85, 0, 0, 2575, 2576, 5, 76, 0, 0, 2576, 2577, 5, 76, 0, 0, 2577, 380, 1, 0, 0, 0, 2578, 2579, 5, 70, 0, 0, 2579, 2580, 5, 85, 0, 0, 2580, 2581, 5, 78, 0, 0, 2581, 2582, 5, 67, 0, 0, 2582, 2583, 5, 84, 0, 0, 2583, 2584, 5, 73, 0, 0, 2584, 2585, 5, 79, 0, 0, 2585, 2586, 5, 78, 0, 0, 2586, 382, 1, 0, 0, 0, 2587, 2588, 5, 70, 0, 0, 2588, 2589, 5, 85, 0, 0, 2589, 2590, 5, 78, 0, 0, 2590, 2591, 5, 67, 0, 0, 2591, 2592, 5, 84, 0, 0, 2592, 2593, 5, 73, 0, 0, 2593, 2594, 5, 79, 0, 0, 2594, 2595, 5, 78, 0, 0, 2595, 2596, 5, 83, 0, 0, 2596, 384, 1, 0, 0, 0, 2597, 2598, 5, 71, 0, 0, 2598, 2599, 5, 69, 0, 0, 2599, 2600, 5, 78, 0, 0, 2600, 2601, 5, 69, 0, 0, 2601, 2602, 5, 82, 0, 0, 2602, 2603, 5, 65, 0, 0, 2603, 2604, 5, 84, 0, 0, 2604, 2605, 5, 69, 0, 0, 2605, 2606, 5, 68, 0, 0, 2606, 386, 1, 0, 0, 0, 2607, 2608, 5, 71, 0, 0, 2608, 2609, 5, 69, 0, 0, 2609, 2610, 5, 78, 0, 0, 2610, 2611, 5, 69, 0, 0, 2611, 2612, 5, 82, 0, 0, 2612, 2613, 5, 73, 0, 0, 2613, 2614, 5, 67, 0, 0, 2614, 388, 1, 0, 0, 0, 2615, 2616, 5, 71, 0, 0, 2616, 2617, 5, 76, 0, 0, 2617, 2618, 5, 79, 0, 0, 2618, 2619, 5, 66, 0, 0, 2619, 2620, 5, 65, 0, 0, 2620, 2621, 5, 76, 0, 0, 2621, 390, 1, 0, 0, 0, 2622, 2623, 5, 71, 0, 0, 2623, 2624, 5, 82, 0, 0, 2624, 2625, 5, 65, 0, 0, 2625, 2626, 5, 78, 0, 0, 2626, 2627, 5, 84, 0, 0, 2627, 392, 1, 0, 0, 0, 2628, 2629, 5, 71, 0, 0, 2629, 2630, 5, 82, 0, 0, 2630, 2631, 5, 65, 0, 0, 2631, 2632, 5, 78, 0, 0, 2632, 2633, 5, 84, 0, 0, 2633, 2634, 5, 83, 0, 0, 2634, 394, 1, 0, 0, 0, 2635, 2636, 5, 71, 0, 0, 2636, 2637, 5, 82, 0, 0, 2637, 2638, 5, 65, 0, 0, 2638, 2639, 5, 80, 0, 0, 2639, 2640, 5, 72, 0, 0, 2640, 396, 1, 0, 0, 0, 2641, 2642, 5, 71, 0, 0, 2642, 2643, 5, 82, 0, 0, 2643, 2644, 5, 79, 0, 0, 2644, 2645, 5, 85, 0, 0, 2645, 2646, 5, 80, 0, 0, 2646, 398, 1, 0, 0, 0, 2647, 2648, 5, 71, 0, 0, 2648, 2649, 5, 82, 0, 0, 2649, 2650, 5, 79, 0, 0, 2650, 2651, 5, 85, 0, 0, 2651, 2652, 5, 80, 0, 0, 2652, 2653, 5, 73, 0, 0, 2653, 2654, 5, 78, 0, 0, 2654, 2655, 5, 71, 0, 0, 2655, 400, 1, 0, 0, 0, 2656, 2657, 5, 71, 0, 0, 2657, 2658, 5, 82, 0, 0, 2658, 2659, 5, 79, 0, 0, 2659, 2660, 5, 85, 0, 0, 2660, 2661, 5, 80, 0, 0, 2661, 2662, 5, 83, 0, 0, 2662, 402, 1, 0, 0, 0, 2663, 2664, 5, 72, 0, 0, 2664, 2665, 5, 65, 0, 0, 2665, 2666, 5, 83, 0, 0, 2666, 2667, 5, 72, 0, 0, 2667, 404, 1, 0, 0, 0, 2668, 2669, 5, 72, 0, 0, 2669, 2670, 5, 65, 0, 0, 2670, 2671, 5, 86, 0, 0, 2671, 2672, 5, 73, 0, 0, 2672, 2673, 5, 78, 0, 0, 2673, 2674, 5, 71, 0, 0, 2674, 406, 1, 0, 0, 0, 2675, 2676, 5, 72, 0, 0, 2676, 2677, 5, 68, 0, 0, 2677, 2678, 5, 70, 0, 0, 2678, 2679, 5, 83, 0, 0, 2679, 408, 1, 0, 0, 0, 2680, 2681, 5, 72, 0, 0, 2681, 2682, 5, 69, 0, 0, 2682, 2683, 5, 76, 0, 0, 2683, 2684, 5, 80, 0, 0, 2684, 410, 1, 0, 0, 0, 2685, 2686, 5, 72, 0, 0, 2686, 2687, 5, 73, 0, 0, 2687, 2688, 5, 83, 0, 0, 2688, 2689, 5, 84, 0, 0, 2689, 2690, 5, 79, 0, 0, 2690, 2691, 5, 71, 0, 0, 2691, 2692, 5, 82, 0, 0, 2692, 2693, 5, 65, 0, 0, 2693, 2694, 5, 77, 0, 0, 2694, 412, 1, 0, 0, 0, 2695, 2696, 5, 72, 0, 0, 2696, 2697, 5, 76, 0, 0, 2697, 2698, 5, 76, 0, 0, 2698, 414, 1, 0, 0, 0, 2699, 2700, 5, 72, 0, 0, 2700, 2701, 5, 76, 0, 0, 2701, 2702, 5, 76, 0, 0, 2702, 2703, 5, 95, 0, 0, 2703, 2704, 5, 85, 0, 0, 2704, 2705, 5, 78, 0, 0, 2705, 2706, 5, 73, 0, 0, 2706, 2707, 5, 79, 0, 0, 2707, 2708, 5, 78, 0, 0, 2708, 416, 1, 0, 0, 0, 2709, 2710, 5, 72, 0, 0, 2710, 2711, 5, 79, 0, 0, 2711, 2712, 5, 83, 0, 0, 2712, 2713, 5, 84, 0, 0, 2713, 2714, 5, 78, 0, 0, 2714, 2715, 5, 65, 0, 0, 2715, 2716, 5, 77, 0, 0, 2716, 2717, 5, 69, 0, 0, 2717, 418, 1, 0, 0, 0, 2718, 2719, 5, 72, 0, 0, 2719, 2720, 5, 79, 0, 0, 2720, 2721, 5, 84, 0, 0, 2721, 2722, 5, 83, 0, 0, 2722, 2723, 5, 80, 0, 0, 2723, 2724, 5, 79, 0, 0, 2724, 2725, 5, 84, 0, 0, 2725, 420, 1, 0, 0, 0, 2726, 2727, 5, 72, 0, 0, 2727, 2728, 5, 79, 0, 0, 2728, 2729, 5, 85, 0, 0, 2729, 2730, 5, 82, 0, 0, 2730, 422, 1, 0, 0, 0, 2731, 2732, 5, 72, 0, 0, 2732, 2733, 5, 85, 0, 0, 2733, 2734, 5, 66, 0, 0, 2734, 424, 1, 0, 0, 0, 2735, 2736, 5, 73, 0, 0, 2736, 2737, 5, 68, 0, 0, 2737, 2738, 5, 69, 0, 0, 2738, 2739, 5, 78, 0, 0, 2739, 2740, 5, 84, 0, 0, 2740, 2741, 5, 73, 0, 0, 2741, 2742, 5, 70, 0, 0, 2742, 2743, 5, 73, 0, 0, 2743, 2744, 5, 69, 0, 0, 2744, 2745, 5, 68, 0, 0, 2745, 426, 1, 0, 0, 0, 2746, 2747, 5, 73, 0, 0, 2747, 2748, 5, 70, 0, 0, 2748, 428, 1, 0, 0, 0, 2749, 2750, 5, 73, 0, 0, 2750, 2751, 5, 71, 0, 0, 2751, 2752, 5, 78, 0, 0, 2752, 2753, 5, 79, 0, 0, 2753, 2754, 5, 82, 0, 0, 2754, 2755, 5, 69, 0, 0, 2755, 430, 1, 0, 0, 0, 2756, 2757, 5, 73, 0, 0, 2757, 2758, 5, 77, 0, 0, 2758, 2759, 5, 77, 0, 0, 2759, 2760, 5, 69, 0, 0, 2760, 2761, 5, 68, 0, 0, 2761, 2762, 5, 73, 0, 0, 2762, 2763, 5, 65, 0, 0, 2763, 2764, 5, 84, 0, 0, 2764, 2765, 5, 69, 0, 0, 2765, 432, 1, 0, 0, 0, 2766, 2767, 5, 73, 0, 0, 2767, 2768, 5, 78, 0, 0, 2768, 434, 1, 0, 0, 0, 2769, 2770, 5, 73, 0, 0, 2770, 2771, 5, 78, 0, 0, 2771, 2772, 5, 67, 0, 0, 2772, 2773, 5, 82, 0, 0, 2773, 2774, 5, 69, 0, 0, 2774, 2775, 5, 77, 0, 0, 2775, 2776, 5, 69, 0, 0, 2776, 2777, 5, 78, 0, 0, 2777, 2778, 5, 84, 0, 0, 2778, 2779, 5, 65, 0, 0, 2779, 2780, 5, 76, 0, 0, 2780, 436, 1, 0, 0, 0, 2781, 2782, 5, 73, 0, 0, 2782, 2783, 5, 78, 0, 0, 2783, 2784, 5, 68, 0, 0, 2784, 2785, 5, 69, 0, 0, 2785, 2786, 5, 88, 0, 0, 2786, 438, 1, 0, 0, 0, 2787, 2788, 5, 73, 0, 0, 2788, 2789, 5, 78, 0, 0, 2789, 2790, 5, 68, 0, 0, 2790, 2791, 5, 69, 0, 0, 2791, 2792, 5, 88, 0, 0, 2792, 2793, 5, 69, 0, 0, 2793, 2794, 5, 83, 0, 0, 2794, 440, 1, 0, 0, 0, 2795, 2796, 5, 73, 0, 0, 2796, 2797, 5, 78, 0, 0, 2797, 2798, 5, 70, 0, 0, 2798, 2799, 5, 73, 0, 0, 2799, 2800, 5, 76, 0, 0, 2800, 2801, 5, 69, 0, 0, 2801, 442, 1, 0, 0, 0, 2802, 2803, 5, 73, 0, 0, 2803, 2804, 5, 78, 0, 0, 2804, 2805, 5, 78, 0, 0, 2805, 2806, 5, 69, 0, 0, 2806, 2807, 5, 82, 0, 0, 2807, 444, 1, 0, 0, 0, 2808, 2809, 5, 73, 0, 0, 2809, 2810, 5, 78, 0, 0, 2810, 2811, 5, 83, 0, 0, 2811, 2812, 5, 69, 0, 0, 2812, 2813, 5, 82, 0, 0, 2813, 2814, 5, 84, 0, 0, 2814, 446, 1, 0, 0, 0, 2815, 2816, 5, 73, 0, 0, 2816, 2817, 5, 78, 0, 0, 2817, 2818, 5, 83, 0, 0, 2818, 2819, 5, 84, 0, 0, 2819, 2820, 5, 65, 0, 0, 2820, 2821, 5, 76, 0, 0, 2821, 2822, 5, 76, 0, 0, 2822, 448, 1, 0, 0, 0, 2823, 2824, 5, 73, 0, 0, 2824, 2825, 5, 78, 0, 0, 2825, 2826, 5, 84, 0, 0, 2826, 450, 1, 0, 0, 0, 2827, 2828, 5, 73, 0, 0, 2828, 2829, 5, 78, 0, 0, 2829, 2830, 5, 84, 0, 0, 2830, 2831, 5, 69, 0, 0, 2831, 2832, 5, 71, 0, 0, 2832, 2833, 5, 69, 0, 0, 2833, 2834, 5, 82, 0, 0, 2834, 452, 1, 0, 0, 0, 2835, 2836, 5, 73, 0, 0, 2836, 2837, 5, 78, 0, 0, 2837, 2838, 5, 84, 0, 0, 2838, 2839, 5, 69, 0, 0, 2839, 2840, 5, 82, 0, 0, 2840, 2841, 5, 77, 0, 0, 2841, 2842, 5, 69, 0, 0, 2842, 2843, 5, 68, 0, 0, 2843, 2844, 5, 73, 0, 0, 2844, 2845, 5, 65, 0, 0, 2845, 2846, 5, 84, 0, 0, 2846, 2847, 5, 69, 0, 0, 2847, 454, 1, 0, 0, 0, 2848, 2849, 5, 73, 0, 0, 2849, 2850, 5, 78, 0, 0, 2850, 2851, 5, 84, 0, 0, 2851, 2852, 5, 69, 0, 0, 2852, 2853, 5, 82, 0, 0, 2853, 2854, 5, 83, 0, 0, 2854, 2855, 5, 69, 0, 0, 2855, 2856, 5, 67, 0, 0, 2856, 2857, 5, 84, 0, 0, 2857, 456, 1, 0, 0, 0, 2858, 2859, 5, 73, 0, 0, 2859, 2860, 5, 78, 0, 0, 2860, 2861, 5, 84, 0, 0, 2861, 2862, 5, 69, 0, 0, 2862, 2863, 5, 82, 0, 0, 2863, 2864, 5, 86, 0, 0, 2864, 2865, 5, 65, 0, 0, 2865, 2866, 5, 76, 0, 0, 2866, 458, 1, 0, 0, 0, 2867, 2868, 5, 73, 0, 0, 2868, 2869, 5, 78, 0, 0, 2869, 2870, 5, 84, 0, 0, 2870, 2871, 5, 79, 0, 0, 2871, 460, 1, 0, 0, 0, 2872, 2873, 5, 73, 0, 0, 2873, 2874, 5, 78, 0, 0, 2874, 2875, 5, 86, 0, 0, 2875, 2876, 5, 69, 0, 0, 2876, 2877, 5, 82, 0, 0, 2877, 2878, 5, 84, 0, 0, 2878, 2879, 5, 69, 0, 0, 2879, 2880, 5, 68, 0, 0, 2880, 462, 1, 0, 0, 0, 2881, 2882, 5, 73, 0, 0, 2882, 2883, 5, 80, 0, 0, 2883, 2884, 5, 86, 0, 0, 2884, 2885, 5, 52, 0, 0, 2885, 464, 1, 0, 0, 0, 2886, 2887, 5, 73, 0, 0, 2887, 2888, 5, 80, 0, 0, 2888, 2889, 5, 86, 0, 0, 2889, 2890, 5, 54, 0, 0, 2890, 466, 1, 0, 0, 0, 2891, 2892, 5, 73, 0, 0, 2892, 2893, 5, 83, 0, 0, 2893, 468, 1, 0, 0, 0, 2894, 2895, 5, 73, 0, 0, 2895, 2896, 5, 83, 0, 0, 2896, 2897, 5, 95, 0, 0, 2897, 2898, 5, 78, 0, 0, 2898, 2899, 5, 79, 0, 0, 2899, 2900, 5, 84, 0, 0, 2900, 2901, 5, 95, 0, 0, 2901, 2902, 5, 78, 0, 0, 2902, 2903, 5, 85, 0, 0, 2903, 2904, 5, 76, 0, 0, 2904, 2905, 5, 76, 0, 0, 2905, 2906, 5, 95, 0, 0, 2906, 2907, 5, 80, 0, 0, 2907, 2908, 5, 82, 0, 0, 2908, 2909, 5, 69, 0, 0, 2909, 2910, 5, 68, 0, 0, 2910, 470, 1, 0, 0, 0, 2911, 2912, 5, 73, 0, 0, 2912, 2913, 5, 83, 0, 0, 2913, 2914, 5, 95, 0, 0, 2914, 2915, 5, 78, 0, 0, 2915, 2916, 5, 85, 0, 0, 2916, 2917, 5, 76, 0, 0, 2917, 2918, 5, 76, 0, 0, 2918, 2919, 5, 95, 0, 0, 2919, 2920, 5, 80, 0, 0, 2920, 2921, 5, 82, 0, 0, 2921, 2922, 5, 69, 0, 0, 2922, 2923, 5, 68, 0, 0, 2923, 472, 1, 0, 0, 0, 2924, 2925, 5, 73, 0, 0, 2925, 2926, 5, 83, 0, 0, 2926, 2927, 5, 78, 0, 0, 2927, 2928, 5, 85, 0, 0, 2928, 2929, 5, 76, 0, 0, 2929, 2930, 5, 76, 0, 0, 2930, 474, 1, 0, 0, 0, 2931, 2932, 5, 73, 0, 0, 2932, 2933, 5, 83, 0, 0, 2933, 2934, 5, 79, 0, 0, 2934, 2935, 5, 76, 0, 0, 2935, 2936, 5, 65, 0, 0, 2936, 2937, 5, 84, 0, 0, 2937, 2938, 5, 73, 0, 0, 2938, 2939, 5, 79, 0, 0, 2939, 2940, 5, 78, 0, 0, 2940, 476, 1, 0, 0, 0, 2941, 2942, 5, 74, 0, 0, 2942, 2943, 5, 79, 0, 0, 2943, 2944, 5, 66, 0, 0, 2944, 478, 1, 0, 0, 0, 2945, 2946, 5, 74, 0, 0, 2946, 2947, 5, 79, 0, 0, 2947, 2948, 5, 66, 0, 0, 2948, 2949, 5, 83, 0, 0, 2949, 480, 1, 0, 0, 0, 2950, 2951, 5, 74, 0, 0, 2951, 2952, 5, 79, 0, 0, 2952, 2953, 5, 73, 0, 0, 2953, 2954, 5, 78, 0, 0, 2954, 482, 1, 0, 0, 0, 2955, 2956, 5, 74, 0, 0, 2956, 2957, 5, 83, 0, 0, 2957, 2958, 5, 79, 0, 0, 2958, 2959, 5, 78, 0, 0, 2959, 484, 1, 0, 0, 0, 2960, 2961, 5, 74, 0, 0, 2961, 2962, 5, 83, 0, 0, 2962, 2963, 5, 79, 0, 0, 2963, 2964, 5, 78, 0, 0, 2964, 2965, 5, 66, 0, 0, 2965, 486, 1, 0, 0, 0, 2966, 2967, 5, 75, 0, 0, 2967, 2968, 5, 69, 0, 0, 2968, 2969, 5, 89, 0, 0, 2969, 488, 1, 0, 0, 0, 2970, 2971, 5, 75, 0, 0, 2971, 2972, 5, 69, 0, 0, 2972, 2973, 5, 89, 0, 0, 2973, 2974, 5, 83, 0, 0, 2974, 490, 1, 0, 0, 0, 2975, 2976, 5, 75, 0, 0, 2976, 2977, 5, 73, 0, 0, 2977, 2978, 5, 76, 0, 0, 2978, 2979, 5, 76, 0, 0, 2979, 492, 1, 0, 0, 0, 2980, 2981, 5, 76, 0, 0, 2981, 2982, 5, 65, 0, 0, 2982, 2983, 5, 66, 0, 0, 2983, 2984, 5, 69, 0, 0, 2984, 2985, 5, 76, 0, 0, 2985, 494, 1, 0, 0, 0, 2986, 2987, 5, 76, 0, 0, 2987, 2988, 5, 65, 0, 0, 2988, 2989, 5, 82, 0, 0, 2989, 2990, 5, 71, 0, 0, 2990, 2991, 5, 69, 0, 0, 2991, 2992, 5, 73, 0, 0, 2992, 2993, 5, 78, 0, 0, 2993, 2994, 5, 84, 0, 0, 2994, 496, 1, 0, 0, 0, 2995, 2996, 5, 76, 0, 0, 2996, 2997, 5, 65, 0, 0, 2997, 2998, 5, 83, 0, 0, 2998, 2999, 5, 84, 0, 0, 2999, 498, 1, 0, 0, 0, 3000, 3001, 5, 76, 0, 0, 3001, 3002, 5, 65, 0, 0, 3002, 3003, 5, 84, 0, 0, 3003, 3004, 5, 69, 0, 0, 3004, 3005, 5, 82, 0, 0, 3005, 3006, 5, 65, 0, 0, 3006, 3007, 5, 76, 0, 0, 3007, 500, 1, 0, 0, 0, 3008, 3009, 5, 76, 0, 0, 3009, 3010, 5, 68, 0, 0, 3010, 3011, 5, 65, 0, 0, 3011, 3012, 5, 80, 0, 0, 3012, 502, 1, 0, 0, 0, 3013, 3014, 5, 76, 0, 0, 3014, 3015, 5, 68, 0, 0, 3015, 3016, 5, 65, 0, 0, 3016, 3017, 5, 80, 0, 0, 3017, 3018, 5, 95, 0, 0, 3018, 3019, 5, 65, 0, 0, 3019, 3020, 5, 68, 0, 0, 3020, 3021, 5, 77, 0, 0, 3021, 3022, 5, 73, 0, 0, 3022, 3023, 5, 78, 0, 0, 3023, 3024, 5, 95, 0, 0, 3024, 3025, 5, 80, 0, 0, 3025, 3026, 5, 65, 0, 0, 3026, 3027, 5, 83, 0, 0, 3027, 3028, 5, 83, 0, 0, 3028, 3029, 5, 87, 0, 0, 3029, 3030, 5, 79, 0, 0, 3030, 3031, 5, 82, 0, 0, 3031, 3032, 5, 68, 0, 0, 3032, 504, 1, 0, 0, 0, 3033, 3034, 5, 76, 0, 0, 3034, 3035, 5, 69, 0, 0, 3035, 3036, 5, 70, 0, 0, 3036, 3037, 5, 84, 0, 0, 3037, 506, 1, 0, 0, 0, 3038, 3039, 5, 76, 0, 0, 3039, 3040, 5, 69, 0, 0, 3040, 3041, 5, 83, 0, 0, 3041, 3042, 5, 83, 0, 0, 3042, 508, 1, 0, 0, 0, 3043, 3044, 5, 76, 0, 0, 3044, 3045, 5, 69, 0, 0, 3045, 3046, 5, 86, 0, 0, 3046, 3047, 5, 69, 0, 0, 3047, 3048, 5, 76, 0, 0, 3048, 510, 1, 0, 0, 0, 3049, 3050, 5, 76, 0, 0, 3050, 3051, 5, 73, 0, 0, 3051, 3052, 5, 75, 0, 0, 3052, 3053, 5, 69, 0, 0, 3053, 512, 1, 0, 0, 0, 3054, 3055, 5, 76, 0, 0, 3055, 3056, 5, 73, 0, 0, 3056, 3057, 5, 77, 0, 0, 3057, 3058, 5, 73, 0, 0, 3058, 3059, 5, 84, 0, 0, 3059, 514, 1, 0, 0, 0, 3060, 3061, 5, 76, 0, 0, 3061, 3062, 5, 73, 0, 0, 3062, 3063, 5, 78, 0, 0, 3063, 3064, 5, 69, 0, 0, 3064, 3065, 5, 83, 0, 0, 3065, 516, 1, 0, 0, 0, 3066, 3067, 5, 76, 0, 0, 3067, 3068, 5, 73, 0, 0, 3068, 3069, 5, 78, 0, 0, 3069, 3070, 5, 75, 0, 0, 3070, 518, 1, 0, 0, 0, 3071, 3072, 5, 76, 0, 0, 3072, 3073, 5, 73, 0, 0, 3073, 3074, 5, 83, 0, 0, 3074, 3075, 5, 84, 0, 0, 3075, 520, 1, 0, 0, 0, 3076, 3077, 5, 76, 0, 0, 3077, 3078, 5, 79, 0, 0, 3078, 3079, 5, 65, 0, 0, 3079, 3080, 5, 68, 0, 0, 3080, 522, 1, 0, 0, 0, 3081, 3082, 5, 76, 0, 0, 3082, 3083, 5, 79, 0, 0, 3083, 3084, 5, 67, 0, 0, 3084, 3085, 5, 65, 0, 0, 3085, 3086, 5, 76, 0, 0, 3086, 524, 1, 0, 0, 0, 3087, 3088, 5, 76, 0, 0, 3088, 3089, 5, 79, 0, 0, 3089, 3090, 5, 67, 0, 0, 3090, 3091, 5, 65, 0, 0, 3091, 3092, 5, 76, 0, 0, 3092, 3093, 5, 84, 0, 0, 3093, 3094, 5, 73, 0, 0, 3094, 3095, 5, 77, 0, 0, 3095, 3096, 5, 69, 0, 0, 3096, 526, 1, 0, 0, 0, 3097, 3098, 5, 76, 0, 0, 3098, 3099, 5, 79, 0, 0, 3099, 3100, 5, 67, 0, 0, 3100, 3101, 5, 65, 0, 0, 3101, 3102, 5, 76, 0, 0, 3102, 3103, 5, 84, 0, 0, 3103, 3104, 5, 73, 0, 0, 3104, 3105, 5, 77, 0, 0, 3105, 3106, 5, 69, 0, 0, 3106, 3107, 5, 83, 0, 0, 3107, 3108, 5, 84, 0, 0, 3108, 3109, 5, 65, 0, 0, 3109, 3110, 5, 77, 0, 0, 3110, 3111, 5, 80, 0, 0, 3111, 528, 1, 0, 0, 0, 3112, 3113, 5, 76, 0, 0, 3113, 3114, 5, 79, 0, 0, 3114, 3115, 5, 67, 0, 0, 3115, 3116, 5, 65, 0, 0, 3116, 3117, 5, 84, 0, 0, 3117, 3118, 5, 73, 0, 0, 3118, 3119, 5, 79, 0, 0, 3119, 3120, 5, 78, 0, 0, 3120, 530, 1, 0, 0, 0, 3121, 3122, 5, 76, 0, 0, 3122, 3123, 5, 79, 0, 0, 3123, 3124, 5, 67, 0, 0, 3124, 3125, 5, 75, 0, 0, 3125, 532, 1, 0, 0, 0, 3126, 3127, 5, 76, 0, 0, 3127, 3128, 5, 79, 0, 0, 3128, 3129, 5, 71, 0, 0, 3129, 3130, 5, 73, 0, 0, 3130, 3131, 5, 67, 0, 0, 3131, 3132, 5, 65, 0, 0, 3132, 3133, 5, 76, 0, 0, 3133, 534, 1, 0, 0, 0, 3134, 3135, 5, 76, 0, 0, 3135, 3136, 5, 79, 0, 0, 3136, 3137, 5, 87, 0, 0, 3137, 3138, 5, 95, 0, 0, 3138, 3139, 5, 80, 0, 0, 3139, 3140, 5, 82, 0, 0, 3140, 3141, 5, 73, 0, 0, 3141, 3142, 5, 79, 0, 0, 3142, 3143, 5, 82, 0, 0, 3143, 3144, 5, 73, 0, 0, 3144, 3145, 5, 84, 0, 0, 3145, 3146, 5, 89, 0, 0, 3146, 536, 1, 0, 0, 0, 3147, 3148, 5, 77, 0, 0, 3148, 3149, 5, 65, 0, 0, 3149, 3150, 5, 78, 0, 0, 3150, 3151, 5, 85, 0, 0, 3151, 3152, 5, 65, 0, 0, 3152, 3153, 5, 76, 0, 0, 3153, 538, 1, 0, 0, 0, 3154, 3155, 5, 77, 0, 0, 3155, 3156, 5, 65, 0, 0, 3156, 3157, 5, 80, 0, 0, 3157, 540, 1, 0, 0, 0, 3158, 3159, 5, 77, 0, 0, 3159, 3160, 5, 65, 0, 0, 3160, 3161, 5, 84, 0, 0, 3161, 3162, 5, 67, 0, 0, 3162, 3163, 5, 72, 0, 0, 3163, 542, 1, 0, 0, 0, 3164, 3165, 5, 77, 0, 0, 3165, 3166, 5, 65, 0, 0, 3166, 3167, 5, 84, 0, 0, 3167, 3168, 5, 67, 0, 0, 3168, 3169, 5, 72, 0, 0, 3169, 3170, 5, 95, 0, 0, 3170, 3171, 5, 65, 0, 0, 3171, 3172, 5, 76, 0, 0, 3172, 3173, 5, 76, 0, 0, 3173, 544, 1, 0, 0, 0, 3174, 3175, 5, 77, 0, 0, 3175, 3176, 5, 65, 0, 0, 3176, 3177, 5, 84, 0, 0, 3177, 3178, 5, 67, 0, 0, 3178, 3179, 5, 72, 0, 0, 3179, 3180, 5, 95, 0, 0, 3180, 3181, 5, 65, 0, 0, 3181, 3182, 5, 78, 0, 0, 3182, 3183, 5, 89, 0, 0, 3183, 546, 1, 0, 0, 0, 3184, 3185, 5, 77, 0, 0, 3185, 3186, 5, 65, 0, 0, 3186, 3187, 5, 84, 0, 0, 3187, 3188, 5, 67, 0, 0, 3188, 3189, 5, 72, 0, 0, 3189, 3190, 5, 95, 0, 0, 3190, 3191, 5, 80, 0, 0, 3191, 3192, 5, 72, 0, 0, 3192, 3193, 5, 82, 0, 0, 3193, 3194, 5, 65, 0, 0, 3194, 3195, 5, 83, 0, 0, 3195, 3196, 5, 69, 0, 0, 3196, 548, 1, 0, 0, 0, 3197, 3198, 5, 77, 0, 0, 3198, 3199, 5, 65, 0, 0, 3199, 3200, 5, 84, 0, 0, 3200, 3201, 5, 67, 0, 0, 3201, 3202, 5, 72, 0, 0, 3202, 3203, 5, 95, 0, 0, 3203, 3204, 5, 80, 0, 0, 3204, 3205, 5, 72, 0, 0, 3205, 3206, 5, 82, 0, 0, 3206, 3207, 5, 65, 0, 0, 3207, 3208, 5, 83, 0, 0, 3208, 3209, 5, 69, 0, 0, 3209, 3210, 5, 95, 0, 0, 3210, 3211, 5, 69, 0, 0, 3211, 3212, 5, 68, 0, 0, 3212, 3213, 5, 71, 0, 0, 3213, 3214, 5, 69, 0, 0, 3214, 550, 1, 0, 0, 0, 3215, 3216, 5, 77, 0, 0, 3216, 3217, 5, 65, 0, 0, 3217, 3218, 5, 84, 0, 0, 3218, 3219, 5, 67, 0, 0, 3219, 3220, 5, 72, 0, 0, 3220, 3221, 5, 95, 0, 0, 3221, 3222, 5, 80, 0, 0, 3222, 3223, 5, 72, 0, 0, 3223, 3224, 5, 82, 0, 0, 3224, 3225, 5, 65, 0, 0, 3225, 3226, 5, 83, 0, 0, 3226, 3227, 5, 69, 0, 0, 3227, 3228, 5, 95, 0, 0, 3228, 3229, 5, 80, 0, 0, 3229, 3230, 5, 82, 0, 0, 3230, 3231, 5, 69, 0, 0, 3231, 3232, 5, 70, 0, 0, 3232, 3233, 5, 73, 0, 0, 3233, 3234, 5, 88, 0, 0, 3234, 552, 1, 0, 0, 0, 3235, 3236, 5, 77, 0, 0, 3236, 3237, 5, 65, 0, 0, 3237, 3238, 5, 84, 0, 0, 3238, 3239, 5, 67, 0, 0, 3239, 3240, 5, 72, 0, 0, 3240, 3241, 5, 95, 0, 0, 3241, 3242, 5, 82, 0, 0, 3242, 3243, 5, 69, 0, 0, 3243, 3244, 5, 71, 0, 0, 3244, 3245, 5, 69, 0, 0, 3245, 3246, 5, 88, 0, 0, 3246, 3247, 5, 80, 0, 0, 3247, 554, 1, 0, 0, 0, 3248, 3249, 5, 77, 0, 0, 3249, 3250, 5, 65, 0, 0, 3250, 3251, 5, 84, 0, 0, 3251, 3252, 5, 67, 0, 0, 3252, 3253, 5, 72, 0, 0, 3253, 3254, 5, 95, 0, 0, 3254, 3255, 5, 78, 0, 0, 3255, 3256, 5, 65, 0, 0, 3256, 3257, 5, 77, 0, 0, 3257, 3258, 5, 69, 0, 0, 3258, 556, 1, 0, 0, 0, 3259, 3260, 5, 77, 0, 0, 3260, 3261, 5, 65, 0, 0, 3261, 3262, 5, 84, 0, 0, 3262, 3263, 5, 67, 0, 0, 3263, 3264, 5, 72, 0, 0, 3264, 3265, 5, 95, 0, 0, 3265, 3266, 5, 78, 0, 0, 3266, 3267, 5, 65, 0, 0, 3267, 3268, 5, 77, 0, 0, 3268, 3269, 5, 69, 0, 0, 3269, 3270, 5, 95, 0, 0, 3270, 3271, 5, 71, 0, 0, 3271, 3272, 5, 76, 0, 0, 3272, 3273, 5, 79, 0, 0, 3273, 3274, 5, 66, 0, 0, 3274, 558, 1, 0, 0, 0, 3275, 3276, 5, 77, 0, 0, 3276, 3277, 5, 65, 0, 0, 3277, 3278, 5, 84, 0, 0, 3278, 3279, 5, 69, 0, 0, 3279, 3280, 5, 82, 0, 0, 3280, 3281, 5, 73, 0, 0, 3281, 3282, 5, 65, 0, 0, 3282, 3283, 5, 76, 0, 0, 3283, 3284, 5, 73, 0, 0, 3284, 3285, 5, 90, 0, 0, 3285, 3286, 5, 69, 0, 0, 3286, 3287, 5, 68, 0, 0, 3287, 560, 1, 0, 0, 0, 3288, 3289, 5, 77, 0, 0, 3289, 3290, 5, 65, 0, 0, 3290, 3291, 5, 88, 0, 0, 3291, 562, 1, 0, 0, 0, 3292, 3293, 5, 77, 0, 0, 3293, 3294, 5, 65, 0, 0, 3294, 3295, 5, 88, 0, 0, 3295, 3296, 5, 86, 0, 0, 3296, 3297, 5, 65, 0, 0, 3297, 3298, 5, 76, 0, 0, 3298, 3299, 5, 85, 0, 0, 3299, 3300, 5, 69, 0, 0, 3300, 564, 1, 0, 0, 0, 3301, 3302, 5, 77, 0, 0, 3302, 3303, 5, 69, 0, 0, 3303, 3304, 5, 77, 0, 0, 3304, 3305, 5, 79, 0, 0, 3305, 566, 1, 0, 0, 0, 3306, 3307, 5, 77, 0, 0, 3307, 3308, 5, 69, 0, 0, 3308, 3309, 5, 82, 0, 0, 3309, 3310, 5, 71, 0, 0, 3310, 3311, 5, 69, 0, 0, 3311, 568, 1, 0, 0, 0, 3312, 3313, 5, 77, 0, 0, 3313, 3314, 5, 73, 0, 0, 3314, 3315, 5, 71, 0, 0, 3315, 3316, 5, 82, 0, 0, 3316, 3317, 5, 65, 0, 0, 3317, 3318, 5, 84, 0, 0, 3318, 3319, 5, 69, 0, 0, 3319, 570, 1, 0, 0, 0, 3320, 3321, 5, 77, 0, 0, 3321, 3322, 5, 73, 0, 0, 3322, 3323, 5, 71, 0, 0, 3323, 3324, 5, 82, 0, 0, 3324, 3325, 5, 65, 0, 0, 3325, 3326, 5, 84, 0, 0, 3326, 3327, 5, 73, 0, 0, 3327, 3328, 5, 79, 0, 0, 3328, 3329, 5, 78, 0, 0, 3329, 3330, 5, 83, 0, 0, 3330, 572, 1, 0, 0, 0, 3331, 3332, 5, 77, 0, 0, 3332, 3333, 5, 73, 0, 0, 3333, 3334, 5, 78, 0, 0, 3334, 574, 1, 0, 0, 0, 3335, 3336, 5, 77, 0, 0, 3336, 3337, 5, 73, 0, 0, 3337, 3338, 5, 78, 0, 0, 3338, 3339, 5, 85, 0, 0, 3339, 3340, 5, 83, 0, 0, 3340, 576, 1, 0, 0, 0, 3341, 3342, 5, 77, 0, 0, 3342, 3343, 5, 73, 0, 0, 3343, 3344, 5, 78, 0, 0, 3344, 3345, 5, 85, 0, 0, 3345, 3346, 5, 84, 0, 0, 3346, 3347, 5, 69, 0, 0, 3347, 578, 1, 0, 0, 0, 3348, 3349, 5, 77, 0, 0, 3349, 3350, 5, 79, 0, 0, 3350, 3351, 5, 68, 0, 0, 3351, 3352, 5, 73, 0, 0, 3352, 3353, 5, 70, 0, 0, 3353, 3354, 5, 89, 0, 0, 3354, 580, 1, 0, 0, 0, 3355, 3356, 5, 77, 0, 0, 3356, 3357, 5, 79, 0, 0, 3357, 3358, 5, 78, 0, 0, 3358, 3359, 5, 84, 0, 0, 3359, 3360, 5, 72, 0, 0, 3360, 582, 1, 0, 0, 0, 3361, 3362, 5, 77, 0, 0, 3362, 3363, 5, 84, 0, 0, 3363, 3364, 5, 77, 0, 0, 3364, 3365, 5, 86, 0, 0, 3365, 584, 1, 0, 0, 0, 3366, 3367, 5, 78, 0, 0, 3367, 3368, 5, 65, 0, 0, 3368, 3369, 5, 77, 0, 0, 3369, 3370, 5, 69, 0, 0, 3370, 586, 1, 0, 0, 0, 3371, 3372, 5, 78, 0, 0, 3372, 3373, 5, 65, 0, 0, 3373, 3374, 5, 77, 0, 0, 3374, 3375, 5, 69, 0, 0, 3375, 3376, 5, 83, 0, 0, 3376, 588, 1, 0, 0, 0, 3377, 3378, 5, 78, 0, 0, 3378, 3379, 5, 65, 0, 0, 3379, 3380, 5, 84, 0, 0, 3380, 3381, 5, 85, 0, 0, 3381, 3382, 5, 82, 0, 0, 3382, 3383, 5, 65, 0, 0, 3383, 3384, 5, 76, 0, 0, 3384, 590, 1, 0, 0, 0, 3385, 3386, 5, 78, 0, 0, 3386, 3387, 5, 69, 0, 0, 3387, 3388, 5, 71, 0, 0, 3388, 3389, 5, 65, 0, 0, 3389, 3390, 5, 84, 0, 0, 3390, 3391, 5, 73, 0, 0, 3391, 3392, 5, 86, 0, 0, 3392, 3393, 5, 69, 0, 0, 3393, 592, 1, 0, 0, 0, 3394, 3395, 5, 78, 0, 0, 3395, 3396, 5, 69, 0, 0, 3396, 3397, 5, 86, 0, 0, 3397, 3398, 5, 69, 0, 0, 3398, 3399, 5, 82, 0, 0, 3399, 594, 1, 0, 0, 0, 3400, 3401, 5, 78, 0, 0, 3401, 3402, 5, 69, 0, 0, 3402, 3403, 5, 88, 0, 0, 3403, 3404, 5, 84, 0, 0, 3404, 596, 1, 0, 0, 0, 3405, 3406, 5, 78, 0, 0, 3406, 3407, 5, 71, 0, 0, 3407, 3408, 5, 82, 0, 0, 3408, 3409, 5, 65, 0, 0, 3409, 3410, 5, 77, 0, 0, 3410, 3411, 5, 95, 0, 0, 3411, 3412, 5, 66, 0, 0, 3412, 3413, 5, 70, 0, 0, 3413, 598, 1, 0, 0, 0, 3414, 3415, 5, 78, 0, 0, 3415, 3416, 5, 79, 0, 0, 3416, 600, 1, 0, 0, 0, 3417, 3418, 5, 78, 0, 0, 3418, 3419, 5, 79, 0, 0, 3419, 3420, 5, 95, 0, 0, 3420, 3421, 5, 85, 0, 0, 3421, 3422, 5, 83, 0, 0, 3422, 3423, 5, 69, 0, 0, 3423, 3424, 5, 95, 0, 0, 3424, 3425, 5, 77, 0, 0, 3425, 3426, 5, 86, 0, 0, 3426, 602, 1, 0, 0, 0, 3427, 3428, 5, 78, 0, 0, 3428, 3429, 5, 79, 0, 0, 3429, 3430, 5, 78, 0, 0, 3430, 3431, 5, 95, 0, 0, 3431, 3432, 5, 78, 0, 0, 3432, 3433, 5, 85, 0, 0, 3433, 3434, 5, 76, 0, 0, 3434, 3435, 5, 76, 0, 0, 3435, 3436, 5, 65, 0, 0, 3436, 3437, 5, 66, 0, 0, 3437, 3438, 5, 76, 0, 0, 3438, 3439, 5, 69, 0, 0, 3439, 604, 1, 0, 0, 0, 3440, 3441, 5, 78, 0, 0, 3441, 3442, 5, 79, 0, 0, 3442, 3443, 5, 84, 0, 0, 3443, 606, 1, 0, 0, 0, 3444, 3445, 5, 78, 0, 0, 3445, 3446, 5, 85, 0, 0, 3446, 3447, 5, 76, 0, 0, 3447, 3448, 5, 76, 0, 0, 3448, 608, 1, 0, 0, 0, 3449, 3450, 5, 78, 0, 0, 3450, 3451, 5, 85, 0, 0, 3451, 3452, 5, 76, 0, 0, 3452, 3453, 5, 76, 0, 0, 3453, 3454, 5, 83, 0, 0, 3454, 610, 1, 0, 0, 0, 3455, 3456, 5, 79, 0, 0, 3456, 3457, 5, 66, 0, 0, 3457, 3458, 5, 83, 0, 0, 3458, 3459, 5, 69, 0, 0, 3459, 3460, 5, 82, 0, 0, 3460, 3461, 5, 86, 0, 0, 3461, 3462, 5, 69, 0, 0, 3462, 3463, 5, 82, 0, 0, 3463, 612, 1, 0, 0, 0, 3464, 3465, 5, 79, 0, 0, 3465, 3466, 5, 70, 0, 0, 3466, 614, 1, 0, 0, 0, 3467, 3468, 5, 79, 0, 0, 3468, 3469, 5, 70, 0, 0, 3469, 3470, 5, 70, 0, 0, 3470, 3471, 5, 83, 0, 0, 3471, 3472, 5, 69, 0, 0, 3472, 3473, 5, 84, 0, 0, 3473, 616, 1, 0, 0, 0, 3474, 3475, 5, 79, 0, 0, 3475, 3476, 5, 78, 0, 0, 3476, 618, 1, 0, 0, 0, 3477, 3478, 5, 79, 0, 0, 3478, 3479, 5, 78, 0, 0, 3479, 3480, 5, 76, 0, 0, 3480, 3481, 5, 89, 0, 0, 3481, 620, 1, 0, 0, 0, 3482, 3483, 5, 79, 0, 0, 3483, 3484, 5, 80, 0, 0, 3484, 3485, 5, 69, 0, 0, 3485, 3486, 5, 78, 0, 0, 3486, 622, 1, 0, 0, 0, 3487, 3488, 5, 79, 0, 0, 3488, 3489, 5, 80, 0, 0, 3489, 3490, 5, 84, 0, 0, 3490, 3491, 5, 73, 0, 0, 3491, 3492, 5, 77, 0, 0, 3492, 3493, 5, 73, 0, 0, 3493, 3494, 5, 90, 0, 0, 3494, 3495, 5, 69, 0, 0, 3495, 3496, 5, 68, 0, 0, 3496, 624, 1, 0, 0, 0, 3497, 3498, 5, 79, 0, 0, 3498, 3499, 5, 82, 0, 0, 3499, 626, 1, 0, 0, 0, 3500, 3501, 5, 79, 0, 0, 3501, 3502, 5, 82, 0, 0, 3502, 3503, 5, 68, 0, 0, 3503, 3504, 5, 69, 0, 0, 3504, 3505, 5, 82, 0, 0, 3505, 628, 1, 0, 0, 0, 3506, 3507, 5, 79, 0, 0, 3507, 3508, 5, 85, 0, 0, 3508, 3509, 5, 84, 0, 0, 3509, 3510, 5, 69, 0, 0, 3510, 3511, 5, 82, 0, 0, 3511, 630, 1, 0, 0, 0, 3512, 3513, 5, 79, 0, 0, 3513, 3514, 5, 85, 0, 0, 3514, 3515, 5, 84, 0, 0, 3515, 3516, 5, 70, 0, 0, 3516, 3517, 5, 73, 0, 0, 3517, 3518, 5, 76, 0, 0, 3518, 3519, 5, 69, 0, 0, 3519, 632, 1, 0, 0, 0, 3520, 3521, 5, 79, 0, 0, 3521, 3522, 5, 86, 0, 0, 3522, 3523, 5, 69, 0, 0, 3523, 3524, 5, 82, 0, 0, 3524, 634, 1, 0, 0, 0, 3525, 3526, 5, 79, 0, 0, 3526, 3527, 5, 86, 0, 0, 3527, 3528, 5, 69, 0, 0, 3528, 3529, 5, 82, 0, 0, 3529, 3530, 5, 87, 0, 0, 3530, 3531, 5, 82, 0, 0, 3531, 3532, 5, 73, 0, 0, 3532, 3533, 5, 84, 0, 0, 3533, 3534, 5, 69, 0, 0, 3534, 636, 1, 0, 0, 0, 3535, 3536, 5, 80, 0, 0, 3536, 3537, 5, 65, 0, 0, 3537, 3538, 5, 82, 0, 0, 3538, 3539, 5, 65, 0, 0, 3539, 3540, 5, 77, 0, 0, 3540, 3541, 5, 69, 0, 0, 3541, 3542, 5, 84, 0, 0, 3542, 3543, 5, 69, 0, 0, 3543, 3544, 5, 82, 0, 0, 3544, 638, 1, 0, 0, 0, 3545, 3546, 5, 80, 0, 0, 3546, 3547, 5, 65, 0, 0, 3547, 3548, 5, 82, 0, 0, 3548, 3549, 5, 83, 0, 0, 3549, 3550, 5, 69, 0, 0, 3550, 3551, 5, 68, 0, 0, 3551, 640, 1, 0, 0, 0, 3552, 3553, 5, 80, 0, 0, 3553, 3554, 5, 65, 0, 0, 3554, 3555, 5, 82, 0, 0, 3555, 3556, 5, 84, 0, 0, 3556, 3557, 5, 73, 0, 0, 3557, 3558, 5, 84, 0, 0, 3558, 3559, 5, 73, 0, 0, 3559, 3560, 5, 79, 0, 0, 3560, 3561, 5, 78, 0, 0, 3561, 642, 1, 0, 0, 0, 3562, 3563, 5, 80, 0, 0, 3563, 3564, 5, 65, 0, 0, 3564, 3565, 5, 82, 0, 0, 3565, 3566, 5, 84, 0, 0, 3566, 3567, 5, 73, 0, 0, 3567, 3568, 5, 84, 0, 0, 3568, 3569, 5, 73, 0, 0, 3569, 3570, 5, 79, 0, 0, 3570, 3571, 5, 78, 0, 0, 3571, 3572, 5, 83, 0, 0, 3572, 644, 1, 0, 0, 0, 3573, 3574, 5, 80, 0, 0, 3574, 3575, 5, 65, 0, 0, 3575, 3576, 5, 83, 0, 0, 3576, 3577, 5, 83, 0, 0, 3577, 3578, 5, 87, 0, 0, 3578, 3579, 5, 79, 0, 0, 3579, 3580, 5, 82, 0, 0, 3580, 3581, 5, 68, 0, 0, 3581, 646, 1, 0, 0, 0, 3582, 3583, 5, 80, 0, 0, 3583, 3584, 5, 65, 0, 0, 3584, 3585, 5, 83, 0, 0, 3585, 3586, 5, 83, 0, 0, 3586, 3587, 5, 87, 0, 0, 3587, 3588, 5, 79, 0, 0, 3588, 3589, 5, 82, 0, 0, 3589, 3590, 5, 68, 0, 0, 3590, 3591, 5, 95, 0, 0, 3591, 3592, 5, 69, 0, 0, 3592, 3593, 5, 88, 0, 0, 3593, 3594, 5, 80, 0, 0, 3594, 3595, 5, 73, 0, 0, 3595, 3596, 5, 82, 0, 0, 3596, 3597, 5, 69, 0, 0, 3597, 648, 1, 0, 0, 0, 3598, 3599, 5, 80, 0, 0, 3599, 3600, 5, 65, 0, 0, 3600, 3601, 5, 83, 0, 0, 3601, 3602, 5, 83, 0, 0, 3602, 3603, 5, 87, 0, 0, 3603, 3604, 5, 79, 0, 0, 3604, 3605, 5, 82, 0, 0, 3605, 3606, 5, 68, 0, 0, 3606, 3607, 5, 95, 0, 0, 3607, 3608, 5, 72, 0, 0, 3608, 3609, 5, 73, 0, 0, 3609, 3610, 5, 83, 0, 0, 3610, 3611, 5, 84, 0, 0, 3611, 3612, 5, 79, 0, 0, 3612, 3613, 5, 82, 0, 0, 3613, 3614, 5, 89, 0, 0, 3614, 650, 1, 0, 0, 0, 3615, 3616, 5, 80, 0, 0, 3616, 3617, 5, 65, 0, 0, 3617, 3618, 5, 83, 0, 0, 3618, 3619, 5, 83, 0, 0, 3619, 3620, 5, 87, 0, 0, 3620, 3621, 5, 79, 0, 0, 3621, 3622, 5, 82, 0, 0, 3622, 3623, 5, 68, 0, 0, 3623, 3624, 5, 95, 0, 0, 3624, 3625, 5, 76, 0, 0, 3625, 3626, 5, 79, 0, 0, 3626, 3627, 5, 67, 0, 0, 3627, 3628, 5, 75, 0, 0, 3628, 3629, 5, 95, 0, 0, 3629, 3630, 5, 84, 0, 0, 3630, 3631, 5, 73, 0, 0, 3631, 3632, 5, 77, 0, 0, 3632, 3633, 5, 69, 0, 0, 3633, 652, 1, 0, 0, 0, 3634, 3635, 5, 80, 0, 0, 3635, 3636, 5, 65, 0, 0, 3636, 3637, 5, 83, 0, 0, 3637, 3638, 5, 83, 0, 0, 3638, 3639, 5, 87, 0, 0, 3639, 3640, 5, 79, 0, 0, 3640, 3641, 5, 82, 0, 0, 3641, 3642, 5, 68, 0, 0, 3642, 3643, 5, 95, 0, 0, 3643, 3644, 5, 82, 0, 0, 3644, 3645, 5, 69, 0, 0, 3645, 3646, 5, 85, 0, 0, 3646, 3647, 5, 83, 0, 0, 3647, 3648, 5, 69, 0, 0, 3648, 654, 1, 0, 0, 0, 3649, 3650, 5, 80, 0, 0, 3650, 3651, 5, 65, 0, 0, 3651, 3652, 5, 84, 0, 0, 3652, 3653, 5, 72, 0, 0, 3653, 656, 1, 0, 0, 0, 3654, 3655, 5, 80, 0, 0, 3655, 3656, 5, 65, 0, 0, 3656, 3657, 5, 85, 0, 0, 3657, 3658, 5, 83, 0, 0, 3658, 3659, 5, 69, 0, 0, 3659, 658, 1, 0, 0, 0, 3660, 3661, 5, 80, 0, 0, 3661, 3662, 5, 69, 0, 0, 3662, 3663, 5, 82, 0, 0, 3663, 3664, 5, 67, 0, 0, 3664, 3665, 5, 69, 0, 0, 3665, 3666, 5, 78, 0, 0, 3666, 3667, 5, 84, 0, 0, 3667, 660, 1, 0, 0, 0, 3668, 3669, 5, 80, 0, 0, 3669, 3670, 5, 69, 0, 0, 3670, 3671, 5, 82, 0, 0, 3671, 3672, 5, 73, 0, 0, 3672, 3673, 5, 79, 0, 0, 3673, 3674, 5, 68, 0, 0, 3674, 662, 1, 0, 0, 0, 3675, 3676, 5, 80, 0, 0, 3676, 3677, 5, 69, 0, 0, 3677, 3678, 5, 82, 0, 0, 3678, 3679, 5, 77, 0, 0, 3679, 3680, 5, 73, 0, 0, 3680, 3681, 5, 83, 0, 0, 3681, 3682, 5, 83, 0, 0, 3682, 3683, 5, 73, 0, 0, 3683, 3684, 5, 86, 0, 0, 3684, 3685, 5, 69, 0, 0, 3685, 664, 1, 0, 0, 0, 3686, 3687, 5, 80, 0, 0, 3687, 3688, 5, 72, 0, 0, 3688, 3689, 5, 89, 0, 0, 3689, 3690, 5, 83, 0, 0, 3690, 3691, 5, 73, 0, 0, 3691, 3692, 5, 67, 0, 0, 3692, 3693, 5, 65, 0, 0, 3693, 3694, 5, 76, 0, 0, 3694, 666, 1, 0, 0, 0, 3695, 3696, 5, 80, 0, 0, 3696, 3697, 5, 73, 0, 0, 3697, 668, 1, 0, 0, 0, 3698, 3699, 5, 63, 0, 0, 3699, 670, 1, 0, 0, 0, 3700, 3701, 5, 80, 0, 0, 3701, 3702, 5, 76, 0, 0, 3702, 3703, 5, 65, 0, 0, 3703, 3704, 5, 78, 0, 0, 3704, 672, 1, 0, 0, 0, 3705, 3706, 5, 80, 0, 0, 3706, 3707, 5, 76, 0, 0, 3707, 3708, 5, 65, 0, 0, 3708, 3709, 5, 89, 0, 0, 3709, 674, 1, 0, 0, 0, 3710, 3711, 5, 80, 0, 0, 3711, 3712, 5, 82, 0, 0, 3712, 3713, 5, 73, 0, 0, 3713, 3714, 5, 86, 0, 0, 3714, 3715, 5, 73, 0, 0, 3715, 3716, 5, 76, 0, 0, 3716, 3717, 5, 69, 0, 0, 3717, 3718, 5, 71, 0, 0, 3718, 3719, 5, 69, 0, 0, 3719, 3720, 5, 83, 0, 0, 3720, 676, 1, 0, 0, 0, 3721, 3722, 5, 80, 0, 0, 3722, 3723, 5, 82, 0, 0, 3723, 3724, 5, 79, 0, 0, 3724, 3725, 5, 67, 0, 0, 3725, 3726, 5, 69, 0, 0, 3726, 3727, 5, 83, 0, 0, 3727, 3728, 5, 83, 0, 0, 3728, 678, 1, 0, 0, 0, 3729, 3730, 5, 80, 0, 0, 3730, 3731, 5, 76, 0, 0, 3731, 3732, 5, 85, 0, 0, 3732, 3733, 5, 71, 0, 0, 3733, 3734, 5, 73, 0, 0, 3734, 3735, 5, 78, 0, 0, 3735, 680, 1, 0, 0, 0, 3736, 3737, 5, 80, 0, 0, 3737, 3738, 5, 76, 0, 0, 3738, 3739, 5, 85, 0, 0, 3739, 3740, 5, 71, 0, 0, 3740, 3741, 5, 73, 0, 0, 3741, 3742, 5, 78, 0, 0, 3742, 3743, 5, 83, 0, 0, 3743, 682, 1, 0, 0, 0, 3744, 3745, 5, 80, 0, 0, 3745, 3746, 5, 79, 0, 0, 3746, 3747, 5, 76, 0, 0, 3747, 3748, 5, 73, 0, 0, 3748, 3749, 5, 67, 0, 0, 3749, 3750, 5, 89, 0, 0, 3750, 684, 1, 0, 0, 0, 3751, 3752, 5, 80, 0, 0, 3752, 3753, 5, 82, 0, 0, 3753, 3754, 5, 69, 0, 0, 3754, 3755, 5, 67, 0, 0, 3755, 3756, 5, 69, 0, 0, 3756, 3757, 5, 68, 0, 0, 3757, 3758, 5, 73, 0, 0, 3758, 3759, 5, 78, 0, 0, 3759, 3760, 5, 71, 0, 0, 3760, 686, 1, 0, 0, 0, 3761, 3762, 5, 80, 0, 0, 3762, 3763, 5, 82, 0, 0, 3763, 3764, 5, 69, 0, 0, 3764, 3765, 5, 80, 0, 0, 3765, 3766, 5, 65, 0, 0, 3766, 3767, 5, 82, 0, 0, 3767, 3768, 5, 69, 0, 0, 3768, 688, 1, 0, 0, 0, 3769, 3770, 5, 80, 0, 0, 3770, 3771, 5, 82, 0, 0, 3771, 3772, 5, 73, 0, 0, 3772, 3773, 5, 77, 0, 0, 3773, 3774, 5, 65, 0, 0, 3774, 3775, 5, 82, 0, 0, 3775, 3776, 5, 89, 0, 0, 3776, 690, 1, 0, 0, 0, 3777, 3778, 5, 80, 0, 0, 3778, 3779, 5, 82, 0, 0, 3779, 3780, 5, 79, 0, 0, 3780, 3781, 5, 67, 0, 0, 3781, 692, 1, 0, 0, 0, 3782, 3783, 5, 80, 0, 0, 3783, 3784, 5, 82, 0, 0, 3784, 3785, 5, 79, 0, 0, 3785, 3786, 5, 67, 0, 0, 3786, 3787, 5, 69, 0, 0, 3787, 3788, 5, 68, 0, 0, 3788, 3789, 5, 85, 0, 0, 3789, 3790, 5, 82, 0, 0, 3790, 3791, 5, 69, 0, 0, 3791, 694, 1, 0, 0, 0, 3792, 3793, 5, 80, 0, 0, 3793, 3794, 5, 82, 0, 0, 3794, 3795, 5, 79, 0, 0, 3795, 3796, 5, 67, 0, 0, 3796, 3797, 5, 69, 0, 0, 3797, 3798, 5, 83, 0, 0, 3798, 3799, 5, 83, 0, 0, 3799, 3800, 5, 76, 0, 0, 3800, 3801, 5, 73, 0, 0, 3801, 3802, 5, 83, 0, 0, 3802, 3803, 5, 84, 0, 0, 3803, 696, 1, 0, 0, 0, 3804, 3805, 5, 80, 0, 0, 3805, 3806, 5, 82, 0, 0, 3806, 3807, 5, 79, 0, 0, 3807, 3808, 5, 70, 0, 0, 3808, 3809, 5, 73, 0, 0, 3809, 3810, 5, 76, 0, 0, 3810, 3811, 5, 69, 0, 0, 3811, 698, 1, 0, 0, 0, 3812, 3813, 5, 80, 0, 0, 3813, 3814, 5, 82, 0, 0, 3814, 3815, 5, 79, 0, 0, 3815, 3816, 5, 80, 0, 0, 3816, 3817, 5, 69, 0, 0, 3817, 3818, 5, 82, 0, 0, 3818, 3819, 5, 84, 0, 0, 3819, 3820, 5, 73, 0, 0, 3820, 3821, 5, 69, 0, 0, 3821, 3822, 5, 83, 0, 0, 3822, 700, 1, 0, 0, 0, 3823, 3824, 5, 80, 0, 0, 3824, 3825, 5, 82, 0, 0, 3825, 3826, 5, 79, 0, 0, 3826, 3827, 5, 80, 0, 0, 3827, 3828, 5, 69, 0, 0, 3828, 3829, 5, 82, 0, 0, 3829, 3830, 5, 84, 0, 0, 3830, 3831, 5, 89, 0, 0, 3831, 702, 1, 0, 0, 0, 3832, 3833, 5, 81, 0, 0, 3833, 3834, 5, 85, 0, 0, 3834, 3835, 5, 65, 0, 0, 3835, 3836, 5, 78, 0, 0, 3836, 3837, 5, 84, 0, 0, 3837, 3838, 5, 73, 0, 0, 3838, 3839, 5, 76, 0, 0, 3839, 3840, 5, 69, 0, 0, 3840, 3841, 5, 95, 0, 0, 3841, 3842, 5, 83, 0, 0, 3842, 3843, 5, 84, 0, 0, 3843, 3844, 5, 65, 0, 0, 3844, 3845, 5, 84, 0, 0, 3845, 3846, 5, 69, 0, 0, 3846, 704, 1, 0, 0, 0, 3847, 3848, 5, 81, 0, 0, 3848, 3849, 5, 85, 0, 0, 3849, 3850, 5, 65, 0, 0, 3850, 3851, 5, 78, 0, 0, 3851, 3852, 5, 84, 0, 0, 3852, 3853, 5, 73, 0, 0, 3853, 3854, 5, 76, 0, 0, 3854, 3855, 5, 69, 0, 0, 3855, 3856, 5, 95, 0, 0, 3856, 3857, 5, 85, 0, 0, 3857, 3858, 5, 78, 0, 0, 3858, 3859, 5, 73, 0, 0, 3859, 3860, 5, 79, 0, 0, 3860, 3861, 5, 78, 0, 0, 3861, 706, 1, 0, 0, 0, 3862, 3863, 5, 81, 0, 0, 3863, 3864, 5, 85, 0, 0, 3864, 3865, 5, 69, 0, 0, 3865, 3866, 5, 82, 0, 0, 3866, 3867, 5, 89, 0, 0, 3867, 708, 1, 0, 0, 0, 3868, 3869, 5, 81, 0, 0, 3869, 3870, 5, 85, 0, 0, 3870, 3871, 5, 69, 0, 0, 3871, 3872, 5, 85, 0, 0, 3872, 3873, 5, 69, 0, 0, 3873, 3874, 5, 68, 0, 0, 3874, 710, 1, 0, 0, 0, 3875, 3876, 5, 81, 0, 0, 3876, 3877, 5, 85, 0, 0, 3877, 3878, 5, 79, 0, 0, 3878, 3879, 5, 84, 0, 0, 3879, 3880, 5, 65, 0, 0, 3880, 712, 1, 0, 0, 0, 3881, 3882, 5, 81, 0, 0, 3882, 3883, 5, 85, 0, 0, 3883, 3884, 5, 65, 0, 0, 3884, 3885, 5, 76, 0, 0, 3885, 3886, 5, 73, 0, 0, 3886, 3887, 5, 70, 0, 0, 3887, 3888, 5, 89, 0, 0, 3888, 714, 1, 0, 0, 0, 3889, 3890, 5, 81, 0, 0, 3890, 3891, 5, 85, 0, 0, 3891, 3892, 5, 65, 0, 0, 3892, 3893, 5, 82, 0, 0, 3893, 3894, 5, 84, 0, 0, 3894, 3895, 5, 69, 0, 0, 3895, 3896, 5, 82, 0, 0, 3896, 716, 1, 0, 0, 0, 3897, 3898, 5, 82, 0, 0, 3898, 3899, 5, 65, 0, 0, 3899, 3900, 5, 78, 0, 0, 3900, 3901, 5, 68, 0, 0, 3901, 3902, 5, 79, 0, 0, 3902, 3903, 5, 77, 0, 0, 3903, 718, 1, 0, 0, 0, 3904, 3905, 5, 82, 0, 0, 3905, 3906, 5, 65, 0, 0, 3906, 3907, 5, 78, 0, 0, 3907, 3908, 5, 71, 0, 0, 3908, 3909, 5, 69, 0, 0, 3909, 720, 1, 0, 0, 0, 3910, 3911, 5, 82, 0, 0, 3911, 3912, 5, 69, 0, 0, 3912, 3913, 5, 65, 0, 0, 3913, 3914, 5, 68, 0, 0, 3914, 722, 1, 0, 0, 0, 3915, 3916, 5, 82, 0, 0, 3916, 3917, 5, 69, 0, 0, 3917, 3918, 5, 65, 0, 0, 3918, 3919, 5, 76, 0, 0, 3919, 724, 1, 0, 0, 0, 3920, 3921, 5, 82, 0, 0, 3921, 3922, 5, 69, 0, 0, 3922, 3923, 5, 66, 0, 0, 3923, 3924, 5, 65, 0, 0, 3924, 3925, 5, 76, 0, 0, 3925, 3926, 5, 65, 0, 0, 3926, 3927, 5, 78, 0, 0, 3927, 3928, 5, 67, 0, 0, 3928, 3929, 5, 69, 0, 0, 3929, 726, 1, 0, 0, 0, 3930, 3931, 5, 82, 0, 0, 3931, 3932, 5, 69, 0, 0, 3932, 3933, 5, 67, 0, 0, 3933, 3934, 5, 69, 0, 0, 3934, 3935, 5, 78, 0, 0, 3935, 3936, 5, 84, 0, 0, 3936, 728, 1, 0, 0, 0, 3937, 3938, 5, 82, 0, 0, 3938, 3939, 5, 69, 0, 0, 3939, 3940, 5, 67, 0, 0, 3940, 3941, 5, 79, 0, 0, 3941, 3942, 5, 86, 0, 0, 3942, 3943, 5, 69, 0, 0, 3943, 3944, 5, 82, 0, 0, 3944, 730, 1, 0, 0, 0, 3945, 3946, 5, 82, 0, 0, 3946, 3947, 5, 69, 0, 0, 3947, 3948, 5, 67, 0, 0, 3948, 3949, 5, 89, 0, 0, 3949, 3950, 5, 67, 0, 0, 3950, 3951, 5, 76, 0, 0, 3951, 3952, 5, 69, 0, 0, 3952, 732, 1, 0, 0, 0, 3953, 3954, 5, 82, 0, 0, 3954, 3955, 5, 69, 0, 0, 3955, 3956, 5, 70, 0, 0, 3956, 3957, 5, 82, 0, 0, 3957, 3958, 5, 69, 0, 0, 3958, 3959, 5, 83, 0, 0, 3959, 3960, 5, 72, 0, 0, 3960, 734, 1, 0, 0, 0, 3961, 3962, 5, 82, 0, 0, 3962, 3963, 5, 69, 0, 0, 3963, 3964, 5, 70, 0, 0, 3964, 3965, 5, 69, 0, 0, 3965, 3966, 5, 82, 0, 0, 3966, 3967, 5, 69, 0, 0, 3967, 3968, 5, 78, 0, 0, 3968, 3969, 5, 67, 0, 0, 3969, 3970, 5, 69, 0, 0, 3970, 3971, 5, 83, 0, 0, 3971, 736, 1, 0, 0, 0, 3972, 3973, 5, 82, 0, 0, 3973, 3974, 5, 69, 0, 0, 3974, 3975, 5, 71, 0, 0, 3975, 3976, 5, 69, 0, 0, 3976, 3977, 5, 88, 0, 0, 3977, 3978, 5, 80, 0, 0, 3978, 738, 1, 0, 0, 0, 3979, 3980, 5, 82, 0, 0, 3980, 3981, 5, 69, 0, 0, 3981, 3982, 5, 76, 0, 0, 3982, 3983, 5, 69, 0, 0, 3983, 3984, 5, 65, 0, 0, 3984, 3985, 5, 83, 0, 0, 3985, 3986, 5, 69, 0, 0, 3986, 740, 1, 0, 0, 0, 3987, 3988, 5, 82, 0, 0, 3988, 3989, 5, 69, 0, 0, 3989, 3990, 5, 78, 0, 0, 3990, 3991, 5, 65, 0, 0, 3991, 3992, 5, 77, 0, 0, 3992, 3993, 5, 69, 0, 0, 3993, 742, 1, 0, 0, 0, 3994, 3995, 5, 82, 0, 0, 3995, 3996, 5, 69, 0, 0, 3996, 3997, 5, 80, 0, 0, 3997, 3998, 5, 65, 0, 0, 3998, 3999, 5, 73, 0, 0, 3999, 4000, 5, 82, 0, 0, 4000, 744, 1, 0, 0, 0, 4001, 4002, 5, 82, 0, 0, 4002, 4003, 5, 69, 0, 0, 4003, 4004, 5, 80, 0, 0, 4004, 4005, 5, 69, 0, 0, 4005, 4006, 5, 65, 0, 0, 4006, 4007, 5, 84, 0, 0, 4007, 4008, 5, 65, 0, 0, 4008, 4009, 5, 66, 0, 0, 4009, 4010, 5, 76, 0, 0, 4010, 4011, 5, 69, 0, 0, 4011, 746, 1, 0, 0, 0, 4012, 4013, 5, 82, 0, 0, 4013, 4014, 5, 69, 0, 0, 4014, 4015, 5, 80, 0, 0, 4015, 4016, 5, 76, 0, 0, 4016, 4017, 5, 65, 0, 0, 4017, 4018, 5, 67, 0, 0, 4018, 4019, 5, 69, 0, 0, 4019, 748, 1, 0, 0, 0, 4020, 4021, 5, 82, 0, 0, 4021, 4022, 5, 69, 0, 0, 4022, 4023, 5, 80, 0, 0, 4023, 4024, 5, 76, 0, 0, 4024, 4025, 5, 65, 0, 0, 4025, 4026, 5, 67, 0, 0, 4026, 4027, 5, 69, 0, 0, 4027, 4028, 5, 95, 0, 0, 4028, 4029, 5, 73, 0, 0, 4029, 4030, 5, 70, 0, 0, 4030, 4031, 5, 95, 0, 0, 4031, 4032, 5, 78, 0, 0, 4032, 4033, 5, 79, 0, 0, 4033, 4034, 5, 84, 0, 0, 4034, 4035, 5, 95, 0, 0, 4035, 4036, 5, 78, 0, 0, 4036, 4037, 5, 85, 0, 0, 4037, 4038, 5, 76, 0, 0, 4038, 4039, 5, 76, 0, 0, 4039, 750, 1, 0, 0, 0, 4040, 4041, 5, 82, 0, 0, 4041, 4042, 5, 69, 0, 0, 4042, 4043, 5, 80, 0, 0, 4043, 4044, 5, 76, 0, 0, 4044, 4045, 5, 65, 0, 0, 4045, 4046, 5, 89, 0, 0, 4046, 4047, 5, 69, 0, 0, 4047, 4048, 5, 82, 0, 0, 4048, 752, 1, 0, 0, 0, 4049, 4050, 5, 82, 0, 0, 4050, 4051, 5, 69, 0, 0, 4051, 4052, 5, 80, 0, 0, 4052, 4053, 5, 76, 0, 0, 4053, 4054, 5, 73, 0, 0, 4054, 4055, 5, 67, 0, 0, 4055, 4056, 5, 65, 0, 0, 4056, 754, 1, 0, 0, 0, 4057, 4058, 5, 82, 0, 0, 4058, 4059, 5, 69, 0, 0, 4059, 4060, 5, 80, 0, 0, 4060, 4061, 5, 79, 0, 0, 4061, 4062, 5, 83, 0, 0, 4062, 4063, 5, 73, 0, 0, 4063, 4064, 5, 84, 0, 0, 4064, 4065, 5, 79, 0, 0, 4065, 4066, 5, 82, 0, 0, 4066, 4067, 5, 73, 0, 0, 4067, 4068, 5, 69, 0, 0, 4068, 4069, 5, 83, 0, 0, 4069, 756, 1, 0, 0, 0, 4070, 4071, 5, 82, 0, 0, 4071, 4072, 5, 69, 0, 0, 4072, 4073, 5, 80, 0, 0, 4073, 4074, 5, 79, 0, 0, 4074, 4075, 5, 83, 0, 0, 4075, 4076, 5, 73, 0, 0, 4076, 4077, 5, 84, 0, 0, 4077, 4078, 5, 79, 0, 0, 4078, 4079, 5, 82, 0, 0, 4079, 4080, 5, 89, 0, 0, 4080, 758, 1, 0, 0, 0, 4081, 4082, 5, 82, 0, 0, 4082, 4083, 5, 69, 0, 0, 4083, 4084, 5, 83, 0, 0, 4084, 4085, 5, 79, 0, 0, 4085, 4086, 5, 85, 0, 0, 4086, 4087, 5, 82, 0, 0, 4087, 4088, 5, 67, 0, 0, 4088, 4089, 5, 69, 0, 0, 4089, 760, 1, 0, 0, 0, 4090, 4091, 5, 82, 0, 0, 4091, 4092, 5, 69, 0, 0, 4092, 4093, 5, 83, 0, 0, 4093, 4094, 5, 79, 0, 0, 4094, 4095, 5, 85, 0, 0, 4095, 4096, 5, 82, 0, 0, 4096, 4097, 5, 67, 0, 0, 4097, 4098, 5, 69, 0, 0, 4098, 4099, 5, 83, 0, 0, 4099, 762, 1, 0, 0, 0, 4100, 4101, 5, 82, 0, 0, 4101, 4102, 5, 69, 0, 0, 4102, 4103, 5, 83, 0, 0, 4103, 4104, 5, 84, 0, 0, 4104, 4105, 5, 79, 0, 0, 4105, 4106, 5, 82, 0, 0, 4106, 4107, 5, 69, 0, 0, 4107, 764, 1, 0, 0, 0, 4108, 4109, 5, 82, 0, 0, 4109, 4110, 5, 69, 0, 0, 4110, 4111, 5, 83, 0, 0, 4111, 4112, 5, 84, 0, 0, 4112, 4113, 5, 82, 0, 0, 4113, 4114, 5, 73, 0, 0, 4114, 4115, 5, 67, 0, 0, 4115, 4116, 5, 84, 0, 0, 4116, 4117, 5, 73, 0, 0, 4117, 4118, 5, 86, 0, 0, 4118, 4119, 5, 69, 0, 0, 4119, 766, 1, 0, 0, 0, 4120, 4121, 5, 82, 0, 0, 4121, 4122, 5, 69, 0, 0, 4122, 4123, 5, 83, 0, 0, 4123, 4124, 5, 85, 0, 0, 4124, 4125, 5, 77, 0, 0, 4125, 4126, 5, 69, 0, 0, 4126, 768, 1, 0, 0, 0, 4127, 4128, 5, 82, 0, 0, 4128, 4129, 5, 69, 0, 0, 4129, 4130, 5, 84, 0, 0, 4130, 4131, 5, 85, 0, 0, 4131, 4132, 5, 82, 0, 0, 4132, 4133, 5, 78, 0, 0, 4133, 4134, 5, 83, 0, 0, 4134, 770, 1, 0, 0, 0, 4135, 4136, 5, 82, 0, 0, 4136, 4137, 5, 69, 0, 0, 4137, 4138, 5, 86, 0, 0, 4138, 4139, 5, 79, 0, 0, 4139, 4140, 5, 75, 0, 0, 4140, 4141, 5, 69, 0, 0, 4141, 772, 1, 0, 0, 0, 4142, 4143, 5, 82, 0, 0, 4143, 4144, 5, 69, 0, 0, 4144, 4145, 5, 87, 0, 0, 4145, 4146, 5, 82, 0, 0, 4146, 4147, 5, 73, 0, 0, 4147, 4148, 5, 84, 0, 0, 4148, 4149, 5, 84, 0, 0, 4149, 4150, 5, 69, 0, 0, 4150, 4151, 5, 78, 0, 0, 4151, 774, 1, 0, 0, 0, 4152, 4153, 5, 82, 0, 0, 4153, 4154, 5, 73, 0, 0, 4154, 4155, 5, 71, 0, 0, 4155, 4156, 5, 72, 0, 0, 4156, 4157, 5, 84, 0, 0, 4157, 776, 1, 0, 0, 0, 4158, 4159, 5, 82, 0, 0, 4159, 4160, 5, 76, 0, 0, 4160, 4161, 5, 73, 0, 0, 4161, 4162, 5, 75, 0, 0, 4162, 4163, 5, 69, 0, 0, 4163, 778, 1, 0, 0, 0, 4164, 4165, 5, 82, 0, 0, 4165, 4166, 5, 79, 0, 0, 4166, 4167, 5, 76, 0, 0, 4167, 4168, 5, 69, 0, 0, 4168, 780, 1, 0, 0, 0, 4169, 4170, 5, 82, 0, 0, 4170, 4171, 5, 79, 0, 0, 4171, 4172, 5, 76, 0, 0, 4172, 4173, 5, 69, 0, 0, 4173, 4174, 5, 83, 0, 0, 4174, 782, 1, 0, 0, 0, 4175, 4176, 5, 82, 0, 0, 4176, 4177, 5, 79, 0, 0, 4177, 4178, 5, 76, 0, 0, 4178, 4179, 5, 76, 0, 0, 4179, 4180, 5, 66, 0, 0, 4180, 4181, 5, 65, 0, 0, 4181, 4182, 5, 67, 0, 0, 4182, 4183, 5, 75, 0, 0, 4183, 784, 1, 0, 0, 0, 4184, 4185, 5, 82, 0, 0, 4185, 4186, 5, 79, 0, 0, 4186, 4187, 5, 76, 0, 0, 4187, 4188, 5, 76, 0, 0, 4188, 4189, 5, 85, 0, 0, 4189, 4190, 5, 80, 0, 0, 4190, 786, 1, 0, 0, 0, 4191, 4192, 5, 82, 0, 0, 4192, 4193, 5, 79, 0, 0, 4193, 4194, 5, 85, 0, 0, 4194, 4195, 5, 84, 0, 0, 4195, 4196, 5, 73, 0, 0, 4196, 4197, 5, 78, 0, 0, 4197, 4198, 5, 69, 0, 0, 4198, 788, 1, 0, 0, 0, 4199, 4200, 5, 82, 0, 0, 4200, 4201, 5, 79, 0, 0, 4201, 4202, 5, 87, 0, 0, 4202, 790, 1, 0, 0, 0, 4203, 4204, 5, 82, 0, 0, 4204, 4205, 5, 79, 0, 0, 4205, 4206, 5, 87, 0, 0, 4206, 4207, 5, 83, 0, 0, 4207, 792, 1, 0, 0, 0, 4208, 4209, 5, 83, 0, 0, 4209, 4210, 5, 51, 0, 0, 4210, 794, 1, 0, 0, 0, 4211, 4212, 5, 83, 0, 0, 4212, 4213, 5, 65, 0, 0, 4213, 4214, 5, 77, 0, 0, 4214, 4215, 5, 80, 0, 0, 4215, 4216, 5, 76, 0, 0, 4216, 4217, 5, 69, 0, 0, 4217, 796, 1, 0, 0, 0, 4218, 4219, 5, 83, 0, 0, 4219, 4220, 5, 67, 0, 0, 4220, 4221, 5, 72, 0, 0, 4221, 4222, 5, 69, 0, 0, 4222, 4223, 5, 68, 0, 0, 4223, 4224, 5, 85, 0, 0, 4224, 4225, 5, 76, 0, 0, 4225, 4226, 5, 69, 0, 0, 4226, 798, 1, 0, 0, 0, 4227, 4228, 5, 83, 0, 0, 4228, 4229, 5, 67, 0, 0, 4229, 4230, 5, 72, 0, 0, 4230, 4231, 5, 69, 0, 0, 4231, 4232, 5, 68, 0, 0, 4232, 4233, 5, 85, 0, 0, 4233, 4234, 5, 76, 0, 0, 4234, 4235, 5, 69, 0, 0, 4235, 4236, 5, 82, 0, 0, 4236, 800, 1, 0, 0, 0, 4237, 4238, 5, 83, 0, 0, 4238, 4239, 5, 67, 0, 0, 4239, 4240, 5, 72, 0, 0, 4240, 4241, 5, 69, 0, 0, 4241, 4242, 5, 77, 0, 0, 4242, 4243, 5, 65, 0, 0, 4243, 802, 1, 0, 0, 0, 4244, 4245, 5, 83, 0, 0, 4245, 4246, 5, 67, 0, 0, 4246, 4247, 5, 72, 0, 0, 4247, 4248, 5, 69, 0, 0, 4248, 4249, 5, 77, 0, 0, 4249, 4250, 5, 65, 0, 0, 4250, 4251, 5, 83, 0, 0, 4251, 804, 1, 0, 0, 0, 4252, 4253, 5, 83, 0, 0, 4253, 4254, 5, 69, 0, 0, 4254, 4255, 5, 67, 0, 0, 4255, 4256, 5, 79, 0, 0, 4256, 4257, 5, 78, 0, 0, 4257, 4258, 5, 68, 0, 0, 4258, 806, 1, 0, 0, 0, 4259, 4260, 5, 83, 0, 0, 4260, 4261, 5, 69, 0, 0, 4261, 4262, 5, 76, 0, 0, 4262, 4263, 5, 69, 0, 0, 4263, 4264, 5, 67, 0, 0, 4264, 4265, 5, 84, 0, 0, 4265, 808, 1, 0, 0, 0, 4266, 4267, 5, 83, 0, 0, 4267, 4268, 5, 69, 0, 0, 4268, 4269, 5, 77, 0, 0, 4269, 4270, 5, 73, 0, 0, 4270, 810, 1, 0, 0, 0, 4271, 4272, 5, 83, 0, 0, 4272, 4273, 5, 69, 0, 0, 4273, 4274, 5, 82, 0, 0, 4274, 4275, 5, 73, 0, 0, 4275, 4276, 5, 65, 0, 0, 4276, 4277, 5, 76, 0, 0, 4277, 4278, 5, 73, 0, 0, 4278, 4279, 5, 90, 0, 0, 4279, 4280, 5, 65, 0, 0, 4280, 4281, 5, 66, 0, 0, 4281, 4282, 5, 76, 0, 0, 4282, 4283, 5, 69, 0, 0, 4283, 812, 1, 0, 0, 0, 4284, 4285, 5, 83, 0, 0, 4285, 4286, 5, 69, 0, 0, 4286, 4287, 5, 83, 0, 0, 4287, 4288, 5, 83, 0, 0, 4288, 4289, 5, 73, 0, 0, 4289, 4290, 5, 79, 0, 0, 4290, 4291, 5, 78, 0, 0, 4291, 814, 1, 0, 0, 0, 4292, 4293, 5, 83, 0, 0, 4293, 4294, 5, 69, 0, 0, 4294, 4295, 5, 83, 0, 0, 4295, 4296, 5, 83, 0, 0, 4296, 4297, 5, 73, 0, 0, 4297, 4298, 5, 79, 0, 0, 4298, 4299, 5, 78, 0, 0, 4299, 4300, 5, 95, 0, 0, 4300, 4301, 5, 85, 0, 0, 4301, 4302, 5, 83, 0, 0, 4302, 4303, 5, 69, 0, 0, 4303, 4304, 5, 82, 0, 0, 4304, 816, 1, 0, 0, 0, 4305, 4306, 5, 83, 0, 0, 4306, 4307, 5, 69, 0, 0, 4307, 4308, 5, 84, 0, 0, 4308, 818, 1, 0, 0, 0, 4309, 4310, 5, 83, 0, 0, 4310, 4311, 5, 69, 0, 0, 4311, 4312, 5, 84, 0, 0, 4312, 4313, 5, 83, 0, 0, 4313, 820, 1, 0, 0, 0, 4314, 4315, 5, 83, 0, 0, 4315, 4316, 5, 69, 0, 0, 4316, 4317, 5, 84, 0, 0, 4317, 4318, 5, 95, 0, 0, 4318, 4319, 5, 83, 0, 0, 4319, 4320, 5, 69, 0, 0, 4320, 4321, 5, 83, 0, 0, 4321, 4322, 5, 83, 0, 0, 4322, 4323, 5, 73, 0, 0, 4323, 4324, 5, 79, 0, 0, 4324, 4325, 5, 78, 0, 0, 4325, 4326, 5, 95, 0, 0, 4326, 4327, 5, 86, 0, 0, 4327, 4328, 5, 65, 0, 0, 4328, 4329, 5, 82, 0, 0, 4329, 4330, 5, 73, 0, 0, 4330, 4331, 5, 65, 0, 0, 4331, 4332, 5, 66, 0, 0, 4332, 4333, 5, 76, 0, 0, 4333, 4334, 5, 69, 0, 0, 4334, 822, 1, 0, 0, 0, 4335, 4336, 5, 83, 0, 0, 4336, 4337, 5, 72, 0, 0, 4337, 4338, 5, 65, 0, 0, 4338, 4339, 5, 80, 0, 0, 4339, 4340, 5, 69, 0, 0, 4340, 824, 1, 0, 0, 0, 4341, 4342, 5, 83, 0, 0, 4342, 4343, 5, 72, 0, 0, 4343, 4344, 5, 79, 0, 0, 4344, 4345, 5, 87, 0, 0, 4345, 826, 1, 0, 0, 0, 4346, 4347, 5, 83, 0, 0, 4347, 4348, 5, 73, 0, 0, 4348, 4349, 5, 71, 0, 0, 4349, 4350, 5, 78, 0, 0, 4350, 4351, 5, 69, 0, 0, 4351, 4352, 5, 68, 0, 0, 4352, 828, 1, 0, 0, 0, 4353, 4354, 5, 83, 0, 0, 4354, 4355, 5, 75, 0, 0, 4355, 4356, 5, 69, 0, 0, 4356, 4357, 5, 87, 0, 0, 4357, 830, 1, 0, 0, 0, 4358, 4359, 5, 83, 0, 0, 4359, 4360, 5, 77, 0, 0, 4360, 4361, 5, 65, 0, 0, 4361, 4362, 5, 76, 0, 0, 4362, 4363, 5, 76, 0, 0, 4363, 4364, 5, 73, 0, 0, 4364, 4365, 5, 78, 0, 0, 4365, 4366, 5, 84, 0, 0, 4366, 832, 1, 0, 0, 0, 4367, 4368, 5, 83, 0, 0, 4368, 4369, 5, 78, 0, 0, 4369, 4370, 5, 65, 0, 0, 4370, 4371, 5, 80, 0, 0, 4371, 4372, 5, 83, 0, 0, 4372, 4373, 5, 72, 0, 0, 4373, 4374, 5, 79, 0, 0, 4374, 4375, 5, 84, 0, 0, 4375, 834, 1, 0, 0, 0, 4376, 4377, 5, 83, 0, 0, 4377, 4378, 5, 79, 0, 0, 4378, 4379, 5, 78, 0, 0, 4379, 4380, 5, 65, 0, 0, 4380, 4381, 5, 77, 0, 0, 4381, 4382, 5, 69, 0, 0, 4382, 836, 1, 0, 0, 0, 4383, 4384, 5, 83, 0, 0, 4384, 4385, 5, 80, 0, 0, 4385, 4386, 5, 76, 0, 0, 4386, 4387, 5, 73, 0, 0, 4387, 4388, 5, 84, 0, 0, 4388, 838, 1, 0, 0, 0, 4389, 4390, 5, 83, 0, 0, 4390, 4391, 5, 81, 0, 0, 4391, 4392, 5, 76, 0, 0, 4392, 840, 1, 0, 0, 0, 4393, 4394, 5, 83, 0, 0, 4394, 4395, 5, 81, 0, 0, 4395, 4396, 5, 76, 0, 0, 4396, 4397, 5, 95, 0, 0, 4397, 4398, 5, 66, 0, 0, 4398, 4399, 5, 76, 0, 0, 4399, 4400, 5, 79, 0, 0, 4400, 4401, 5, 67, 0, 0, 4401, 4402, 5, 75, 0, 0, 4402, 4403, 5, 95, 0, 0, 4403, 4404, 5, 82, 0, 0, 4404, 4405, 5, 85, 0, 0, 4405, 4406, 5, 76, 0, 0, 4406, 4407, 5, 69, 0, 0, 4407, 842, 1, 0, 0, 0, 4408, 4409, 5, 83, 0, 0, 4409, 4410, 5, 84, 0, 0, 4410, 4411, 5, 65, 0, 0, 4411, 4412, 5, 71, 0, 0, 4412, 4413, 5, 69, 0, 0, 4413, 844, 1, 0, 0, 0, 4414, 4415, 5, 83, 0, 0, 4415, 4416, 5, 84, 0, 0, 4416, 4417, 5, 65, 0, 0, 4417, 4418, 5, 71, 0, 0, 4418, 4419, 5, 69, 0, 0, 4419, 4420, 5, 83, 0, 0, 4420, 846, 1, 0, 0, 0, 4421, 4422, 5, 83, 0, 0, 4422, 4423, 5, 84, 0, 0, 4423, 4424, 5, 65, 0, 0, 4424, 4425, 5, 82, 0, 0, 4425, 4426, 5, 84, 0, 0, 4426, 848, 1, 0, 0, 0, 4427, 4428, 5, 83, 0, 0, 4428, 4429, 5, 84, 0, 0, 4429, 4430, 5, 65, 0, 0, 4430, 4431, 5, 82, 0, 0, 4431, 4432, 5, 84, 0, 0, 4432, 4433, 5, 83, 0, 0, 4433, 850, 1, 0, 0, 0, 4434, 4435, 5, 83, 0, 0, 4435, 4436, 5, 84, 0, 0, 4436, 4437, 5, 65, 0, 0, 4437, 4438, 5, 84, 0, 0, 4438, 4439, 5, 83, 0, 0, 4439, 852, 1, 0, 0, 0, 4440, 4441, 5, 83, 0, 0, 4441, 4442, 5, 84, 0, 0, 4442, 4443, 5, 65, 0, 0, 4443, 4444, 5, 84, 0, 0, 4444, 4445, 5, 85, 0, 0, 4445, 4446, 5, 83, 0, 0, 4446, 854, 1, 0, 0, 0, 4447, 4448, 5, 83, 0, 0, 4448, 4449, 5, 84, 0, 0, 4449, 4450, 5, 79, 0, 0, 4450, 4451, 5, 80, 0, 0, 4451, 856, 1, 0, 0, 0, 4452, 4453, 5, 83, 0, 0, 4453, 4454, 5, 84, 0, 0, 4454, 4455, 5, 79, 0, 0, 4455, 4456, 5, 82, 0, 0, 4456, 4457, 5, 65, 0, 0, 4457, 4458, 5, 71, 0, 0, 4458, 4459, 5, 69, 0, 0, 4459, 858, 1, 0, 0, 0, 4460, 4461, 5, 83, 0, 0, 4461, 4462, 5, 84, 0, 0, 4462, 4463, 5, 82, 0, 0, 4463, 4464, 5, 69, 0, 0, 4464, 4465, 5, 65, 0, 0, 4465, 4466, 5, 77, 0, 0, 4466, 860, 1, 0, 0, 0, 4467, 4468, 5, 83, 0, 0, 4468, 4469, 5, 84, 0, 0, 4469, 4470, 5, 82, 0, 0, 4470, 4471, 5, 69, 0, 0, 4471, 4472, 5, 65, 0, 0, 4472, 4473, 5, 77, 0, 0, 4473, 4474, 5, 73, 0, 0, 4474, 4475, 5, 78, 0, 0, 4475, 4476, 5, 71, 0, 0, 4476, 862, 1, 0, 0, 0, 4477, 4478, 5, 83, 0, 0, 4478, 4479, 5, 84, 0, 0, 4479, 4480, 5, 82, 0, 0, 4480, 4481, 5, 73, 0, 0, 4481, 4482, 5, 78, 0, 0, 4482, 4483, 5, 71, 0, 0, 4483, 864, 1, 0, 0, 0, 4484, 4485, 5, 83, 0, 0, 4485, 4486, 5, 84, 0, 0, 4486, 4487, 5, 82, 0, 0, 4487, 4488, 5, 85, 0, 0, 4488, 4489, 5, 67, 0, 0, 4489, 4490, 5, 84, 0, 0, 4490, 866, 1, 0, 0, 0, 4491, 4492, 5, 83, 0, 0, 4492, 4493, 5, 85, 0, 0, 4493, 4494, 5, 77, 0, 0, 4494, 868, 1, 0, 0, 0, 4495, 4496, 5, 83, 0, 0, 4496, 4497, 5, 85, 0, 0, 4497, 4498, 5, 80, 0, 0, 4498, 4499, 5, 69, 0, 0, 4499, 4500, 5, 82, 0, 0, 4500, 4501, 5, 85, 0, 0, 4501, 4502, 5, 83, 0, 0, 4502, 4503, 5, 69, 0, 0, 4503, 4504, 5, 82, 0, 0, 4504, 870, 1, 0, 0, 0, 4505, 4506, 5, 83, 0, 0, 4506, 4507, 5, 87, 0, 0, 4507, 4508, 5, 73, 0, 0, 4508, 4509, 5, 84, 0, 0, 4509, 4510, 5, 67, 0, 0, 4510, 4511, 5, 72, 0, 0, 4511, 872, 1, 0, 0, 0, 4512, 4513, 5, 83, 0, 0, 4513, 4514, 5, 89, 0, 0, 4514, 4515, 5, 78, 0, 0, 4515, 4516, 5, 67, 0, 0, 4516, 874, 1, 0, 0, 0, 4517, 4518, 5, 83, 0, 0, 4518, 4519, 5, 89, 0, 0, 4519, 4520, 5, 83, 0, 0, 4520, 4521, 5, 84, 0, 0, 4521, 4522, 5, 69, 0, 0, 4522, 4523, 5, 77, 0, 0, 4523, 876, 1, 0, 0, 0, 4524, 4525, 5, 84, 0, 0, 4525, 4526, 5, 65, 0, 0, 4526, 4527, 5, 66, 0, 0, 4527, 4528, 5, 76, 0, 0, 4528, 4529, 5, 69, 0, 0, 4529, 878, 1, 0, 0, 0, 4530, 4531, 5, 84, 0, 0, 4531, 4532, 5, 65, 0, 0, 4532, 4533, 5, 66, 0, 0, 4533, 4534, 5, 76, 0, 0, 4534, 4535, 5, 69, 0, 0, 4535, 4536, 5, 83, 0, 0, 4536, 880, 1, 0, 0, 0, 4537, 4538, 5, 84, 0, 0, 4538, 4539, 5, 65, 0, 0, 4539, 4540, 5, 66, 0, 0, 4540, 4541, 5, 76, 0, 0, 4541, 4542, 5, 69, 0, 0, 4542, 4543, 5, 83, 0, 0, 4543, 4544, 5, 65, 0, 0, 4544, 4545, 5, 77, 0, 0, 4545, 4546, 5, 80, 0, 0, 4546, 4547, 5, 76, 0, 0, 4547, 4548, 5, 69, 0, 0, 4548, 882, 1, 0, 0, 0, 4549, 4550, 5, 84, 0, 0, 4550, 4551, 5, 65, 0, 0, 4551, 4552, 5, 66, 0, 0, 4552, 4553, 5, 76, 0, 0, 4553, 4554, 5, 69, 0, 0, 4554, 4555, 5, 84, 0, 0, 4555, 884, 1, 0, 0, 0, 4556, 4557, 5, 84, 0, 0, 4557, 4558, 5, 65, 0, 0, 4558, 4559, 5, 66, 0, 0, 4559, 4560, 5, 76, 0, 0, 4560, 4561, 5, 69, 0, 0, 4561, 4562, 5, 84, 0, 0, 4562, 4563, 5, 83, 0, 0, 4563, 886, 1, 0, 0, 0, 4564, 4565, 5, 84, 0, 0, 4565, 4566, 5, 65, 0, 0, 4566, 4567, 5, 83, 0, 0, 4567, 4568, 5, 75, 0, 0, 4568, 888, 1, 0, 0, 0, 4569, 4570, 5, 84, 0, 0, 4570, 4571, 5, 65, 0, 0, 4571, 4572, 5, 83, 0, 0, 4572, 4573, 5, 75, 0, 0, 4573, 4574, 5, 83, 0, 0, 4574, 890, 1, 0, 0, 0, 4575, 4576, 5, 84, 0, 0, 4576, 4577, 5, 69, 0, 0, 4577, 4578, 5, 77, 0, 0, 4578, 4579, 5, 80, 0, 0, 4579, 4580, 5, 79, 0, 0, 4580, 4581, 5, 82, 0, 0, 4581, 4582, 5, 65, 0, 0, 4582, 4583, 5, 82, 0, 0, 4583, 4584, 5, 89, 0, 0, 4584, 892, 1, 0, 0, 0, 4585, 4586, 5, 84, 0, 0, 4586, 4587, 5, 69, 0, 0, 4587, 4588, 5, 82, 0, 0, 4588, 4589, 5, 77, 0, 0, 4589, 4590, 5, 73, 0, 0, 4590, 4591, 5, 78, 0, 0, 4591, 4592, 5, 65, 0, 0, 4592, 4593, 5, 84, 0, 0, 4593, 4594, 5, 69, 0, 0, 4594, 4595, 5, 68, 0, 0, 4595, 894, 1, 0, 0, 0, 4596, 4597, 5, 84, 0, 0, 4597, 4598, 5, 69, 0, 0, 4598, 4599, 5, 88, 0, 0, 4599, 4600, 5, 84, 0, 0, 4600, 896, 1, 0, 0, 0, 4601, 4602, 5, 84, 0, 0, 4602, 4603, 5, 72, 0, 0, 4603, 4604, 5, 65, 0, 0, 4604, 4605, 5, 78, 0, 0, 4605, 898, 1, 0, 0, 0, 4606, 4607, 5, 84, 0, 0, 4607, 4608, 5, 72, 0, 0, 4608, 4609, 5, 69, 0, 0, 4609, 4610, 5, 78, 0, 0, 4610, 900, 1, 0, 0, 0, 4611, 4612, 5, 84, 0, 0, 4612, 4613, 5, 73, 0, 0, 4613, 4614, 5, 77, 0, 0, 4614, 4615, 5, 69, 0, 0, 4615, 902, 1, 0, 0, 0, 4616, 4617, 5, 84, 0, 0, 4617, 4618, 5, 73, 0, 0, 4618, 4619, 5, 77, 0, 0, 4619, 4620, 5, 69, 0, 0, 4620, 4621, 5, 83, 0, 0, 4621, 4622, 5, 84, 0, 0, 4622, 4623, 5, 65, 0, 0, 4623, 4624, 5, 77, 0, 0, 4624, 4625, 5, 80, 0, 0, 4625, 904, 1, 0, 0, 0, 4626, 4627, 5, 84, 0, 0, 4627, 4628, 5, 73, 0, 0, 4628, 4629, 5, 78, 0, 0, 4629, 4630, 5, 89, 0, 0, 4630, 4631, 5, 73, 0, 0, 4631, 4632, 5, 78, 0, 0, 4632, 4633, 5, 84, 0, 0, 4633, 906, 1, 0, 0, 0, 4634, 4635, 5, 84, 0, 0, 4635, 4636, 5, 79, 0, 0, 4636, 908, 1, 0, 0, 0, 4637, 4638, 5, 84, 0, 0, 4638, 4639, 5, 82, 0, 0, 4639, 4640, 5, 65, 0, 0, 4640, 4641, 5, 78, 0, 0, 4641, 4642, 5, 83, 0, 0, 4642, 4643, 5, 65, 0, 0, 4643, 4644, 5, 67, 0, 0, 4644, 4645, 5, 84, 0, 0, 4645, 4646, 5, 73, 0, 0, 4646, 4647, 5, 79, 0, 0, 4647, 4648, 5, 78, 0, 0, 4648, 910, 1, 0, 0, 0, 4649, 4650, 5, 84, 0, 0, 4650, 4651, 5, 82, 0, 0, 4651, 4652, 5, 65, 0, 0, 4652, 4653, 5, 83, 0, 0, 4653, 4654, 5, 72, 0, 0, 4654, 912, 1, 0, 0, 0, 4655, 4656, 5, 84, 0, 0, 4656, 4657, 5, 82, 0, 0, 4657, 4658, 5, 69, 0, 0, 4658, 4659, 5, 69, 0, 0, 4659, 914, 1, 0, 0, 0, 4660, 4661, 5, 84, 0, 0, 4661, 4662, 5, 82, 0, 0, 4662, 4663, 5, 73, 0, 0, 4663, 4664, 5, 71, 0, 0, 4664, 4665, 5, 71, 0, 0, 4665, 4666, 5, 69, 0, 0, 4666, 4667, 5, 82, 0, 0, 4667, 4668, 5, 83, 0, 0, 4668, 916, 1, 0, 0, 0, 4669, 4670, 5, 84, 0, 0, 4670, 4671, 5, 82, 0, 0, 4671, 4672, 5, 73, 0, 0, 4672, 4673, 5, 77, 0, 0, 4673, 918, 1, 0, 0, 0, 4674, 4675, 5, 84, 0, 0, 4675, 4676, 5, 82, 0, 0, 4676, 4677, 5, 85, 0, 0, 4677, 4678, 5, 69, 0, 0, 4678, 920, 1, 0, 0, 0, 4679, 4680, 5, 84, 0, 0, 4680, 4681, 5, 82, 0, 0, 4681, 4682, 5, 85, 0, 0, 4682, 4683, 5, 78, 0, 0, 4683, 4684, 5, 67, 0, 0, 4684, 4685, 5, 65, 0, 0, 4685, 4686, 5, 84, 0, 0, 4686, 4687, 5, 69, 0, 0, 4687, 922, 1, 0, 0, 0, 4688, 4689, 5, 84, 0, 0, 4689, 4690, 5, 89, 0, 0, 4690, 4691, 5, 80, 0, 0, 4691, 4692, 5, 69, 0, 0, 4692, 924, 1, 0, 0, 0, 4693, 4694, 5, 84, 0, 0, 4694, 4695, 5, 89, 0, 0, 4695, 4696, 5, 80, 0, 0, 4696, 4697, 5, 69, 0, 0, 4697, 4698, 5, 95, 0, 0, 4698, 4699, 5, 67, 0, 0, 4699, 4700, 5, 65, 0, 0, 4700, 4701, 5, 83, 0, 0, 4701, 4702, 5, 84, 0, 0, 4702, 926, 1, 0, 0, 0, 4703, 4704, 5, 84, 0, 0, 4704, 4705, 5, 89, 0, 0, 4705, 4706, 5, 80, 0, 0, 4706, 4707, 5, 69, 0, 0, 4707, 4708, 5, 83, 0, 0, 4708, 928, 1, 0, 0, 0, 4709, 4710, 5, 85, 0, 0, 4710, 4711, 5, 78, 0, 0, 4711, 4712, 5, 66, 0, 0, 4712, 4713, 5, 79, 0, 0, 4713, 4714, 5, 85, 0, 0, 4714, 4715, 5, 78, 0, 0, 4715, 4716, 5, 68, 0, 0, 4716, 4717, 5, 69, 0, 0, 4717, 4718, 5, 68, 0, 0, 4718, 930, 1, 0, 0, 0, 4719, 4720, 5, 85, 0, 0, 4720, 4721, 5, 78, 0, 0, 4721, 4722, 5, 67, 0, 0, 4722, 4723, 5, 79, 0, 0, 4723, 4724, 5, 77, 0, 0, 4724, 4725, 5, 77, 0, 0, 4725, 4726, 5, 73, 0, 0, 4726, 4727, 5, 84, 0, 0, 4727, 4728, 5, 84, 0, 0, 4728, 4729, 5, 69, 0, 0, 4729, 4730, 5, 68, 0, 0, 4730, 932, 1, 0, 0, 0, 4731, 4732, 5, 85, 0, 0, 4732, 4733, 5, 78, 0, 0, 4733, 4734, 5, 73, 0, 0, 4734, 4735, 5, 78, 0, 0, 4735, 4736, 5, 83, 0, 0, 4736, 4737, 5, 84, 0, 0, 4737, 4738, 5, 65, 0, 0, 4738, 4739, 5, 76, 0, 0, 4739, 4740, 5, 76, 0, 0, 4740, 934, 1, 0, 0, 0, 4741, 4742, 5, 85, 0, 0, 4742, 4743, 5, 78, 0, 0, 4743, 4744, 5, 73, 0, 0, 4744, 4745, 5, 79, 0, 0, 4745, 4746, 5, 78, 0, 0, 4746, 936, 1, 0, 0, 0, 4747, 4748, 5, 85, 0, 0, 4748, 4749, 5, 78, 0, 0, 4749, 4750, 5, 73, 0, 0, 4750, 4751, 5, 81, 0, 0, 4751, 4752, 5, 85, 0, 0, 4752, 4753, 5, 69, 0, 0, 4753, 938, 1, 0, 0, 0, 4754, 4755, 5, 85, 0, 0, 4755, 4756, 5, 78, 0, 0, 4756, 4757, 5, 76, 0, 0, 4757, 4758, 5, 79, 0, 0, 4758, 4759, 5, 67, 0, 0, 4759, 4760, 5, 75, 0, 0, 4760, 940, 1, 0, 0, 0, 4761, 4762, 5, 85, 0, 0, 4762, 4763, 5, 78, 0, 0, 4763, 4764, 5, 83, 0, 0, 4764, 4765, 5, 69, 0, 0, 4765, 4766, 5, 84, 0, 0, 4766, 942, 1, 0, 0, 0, 4767, 4768, 5, 85, 0, 0, 4768, 4769, 5, 78, 0, 0, 4769, 4770, 5, 83, 0, 0, 4770, 4771, 5, 73, 0, 0, 4771, 4772, 5, 71, 0, 0, 4772, 4773, 5, 78, 0, 0, 4773, 4774, 5, 69, 0, 0, 4774, 4775, 5, 68, 0, 0, 4775, 944, 1, 0, 0, 0, 4776, 4777, 5, 85, 0, 0, 4777, 4778, 5, 80, 0, 0, 4778, 946, 1, 0, 0, 0, 4779, 4780, 5, 85, 0, 0, 4780, 4781, 5, 80, 0, 0, 4781, 4782, 5, 68, 0, 0, 4782, 4783, 5, 65, 0, 0, 4783, 4784, 5, 84, 0, 0, 4784, 4785, 5, 69, 0, 0, 4785, 948, 1, 0, 0, 0, 4786, 4787, 5, 85, 0, 0, 4787, 4788, 5, 83, 0, 0, 4788, 4789, 5, 69, 0, 0, 4789, 950, 1, 0, 0, 0, 4790, 4791, 5, 85, 0, 0, 4791, 4792, 5, 83, 0, 0, 4792, 4793, 5, 69, 0, 0, 4793, 4794, 5, 82, 0, 0, 4794, 952, 1, 0, 0, 0, 4795, 4796, 5, 85, 0, 0, 4796, 4797, 5, 83, 0, 0, 4797, 4798, 5, 69, 0, 0, 4798, 4799, 5, 95, 0, 0, 4799, 4800, 5, 77, 0, 0, 4800, 4801, 5, 86, 0, 0, 4801, 954, 1, 0, 0, 0, 4802, 4803, 5, 85, 0, 0, 4803, 4804, 5, 83, 0, 0, 4804, 4805, 5, 73, 0, 0, 4805, 4806, 5, 78, 0, 0, 4806, 4807, 5, 71, 0, 0, 4807, 956, 1, 0, 0, 0, 4808, 4809, 5, 86, 0, 0, 4809, 4810, 5, 65, 0, 0, 4810, 4811, 5, 76, 0, 0, 4811, 4812, 5, 85, 0, 0, 4812, 4813, 5, 69, 0, 0, 4813, 958, 1, 0, 0, 0, 4814, 4815, 5, 86, 0, 0, 4815, 4816, 5, 65, 0, 0, 4816, 4817, 5, 76, 0, 0, 4817, 4818, 5, 85, 0, 0, 4818, 4819, 5, 69, 0, 0, 4819, 4820, 5, 83, 0, 0, 4820, 960, 1, 0, 0, 0, 4821, 4822, 5, 86, 0, 0, 4822, 4823, 5, 65, 0, 0, 4823, 4824, 5, 82, 0, 0, 4824, 4825, 5, 67, 0, 0, 4825, 4826, 5, 72, 0, 0, 4826, 4827, 5, 65, 0, 0, 4827, 4828, 5, 82, 0, 0, 4828, 962, 1, 0, 0, 0, 4829, 4830, 5, 86, 0, 0, 4830, 4831, 5, 65, 0, 0, 4831, 4832, 5, 82, 0, 0, 4832, 4833, 5, 73, 0, 0, 4833, 4834, 5, 65, 0, 0, 4834, 4835, 5, 66, 0, 0, 4835, 4836, 5, 76, 0, 0, 4836, 4837, 5, 69, 0, 0, 4837, 964, 1, 0, 0, 0, 4838, 4839, 5, 86, 0, 0, 4839, 4840, 5, 65, 0, 0, 4840, 4841, 5, 82, 0, 0, 4841, 4842, 5, 73, 0, 0, 4842, 4843, 5, 65, 0, 0, 4843, 4844, 5, 66, 0, 0, 4844, 4845, 5, 76, 0, 0, 4845, 4846, 5, 69, 0, 0, 4846, 4847, 5, 83, 0, 0, 4847, 966, 1, 0, 0, 0, 4848, 4849, 5, 86, 0, 0, 4849, 4850, 5, 65, 0, 0, 4850, 4851, 5, 82, 0, 0, 4851, 4852, 5, 73, 0, 0, 4852, 4853, 5, 65, 0, 0, 4853, 4854, 5, 78, 0, 0, 4854, 4855, 5, 84, 0, 0, 4855, 968, 1, 0, 0, 0, 4856, 4857, 5, 86, 0, 0, 4857, 4858, 5, 65, 0, 0, 4858, 4859, 5, 85, 0, 0, 4859, 4860, 5, 76, 0, 0, 4860, 4861, 5, 84, 0, 0, 4861, 970, 1, 0, 0, 0, 4862, 4863, 5, 86, 0, 0, 4863, 4864, 5, 65, 0, 0, 4864, 4865, 5, 85, 0, 0, 4865, 4866, 5, 76, 0, 0, 4866, 4867, 5, 84, 0, 0, 4867, 4868, 5, 83, 0, 0, 4868, 972, 1, 0, 0, 0, 4869, 4870, 5, 86, 0, 0, 4870, 4871, 5, 69, 0, 0, 4871, 4872, 5, 82, 0, 0, 4872, 4873, 5, 66, 0, 0, 4873, 4874, 5, 79, 0, 0, 4874, 4875, 5, 83, 0, 0, 4875, 4876, 5, 69, 0, 0, 4876, 974, 1, 0, 0, 0, 4877, 4878, 5, 86, 0, 0, 4878, 4879, 5, 69, 0, 0, 4879, 4880, 5, 82, 0, 0, 4880, 4881, 5, 83, 0, 0, 4881, 4882, 5, 73, 0, 0, 4882, 4883, 5, 79, 0, 0, 4883, 4884, 5, 78, 0, 0, 4884, 976, 1, 0, 0, 0, 4885, 4886, 5, 86, 0, 0, 4886, 4887, 5, 73, 0, 0, 4887, 4888, 5, 69, 0, 0, 4888, 4889, 5, 87, 0, 0, 4889, 978, 1, 0, 0, 0, 4890, 4891, 5, 86, 0, 0, 4891, 4892, 5, 73, 0, 0, 4892, 4893, 5, 69, 0, 0, 4893, 4894, 5, 87, 0, 0, 4894, 4895, 5, 83, 0, 0, 4895, 980, 1, 0, 0, 0, 4896, 4897, 5, 87, 0, 0, 4897, 4898, 5, 65, 0, 0, 4898, 4899, 5, 82, 0, 0, 4899, 4900, 5, 77, 0, 0, 4900, 982, 1, 0, 0, 0, 4901, 4902, 5, 87, 0, 0, 4902, 4903, 5, 65, 0, 0, 4903, 4904, 5, 82, 0, 0, 4904, 4905, 5, 78, 0, 0, 4905, 4906, 5, 73, 0, 0, 4906, 4907, 5, 78, 0, 0, 4907, 4908, 5, 71, 0, 0, 4908, 4909, 5, 83, 0, 0, 4909, 984, 1, 0, 0, 0, 4910, 4911, 5, 87, 0, 0, 4911, 4912, 5, 69, 0, 0, 4912, 4913, 5, 69, 0, 0, 4913, 4914, 5, 75, 0, 0, 4914, 986, 1, 0, 0, 0, 4915, 4916, 5, 87, 0, 0, 4916, 4917, 5, 72, 0, 0, 4917, 4918, 5, 69, 0, 0, 4918, 4919, 5, 78, 0, 0, 4919, 988, 1, 0, 0, 0, 4920, 4921, 5, 87, 0, 0, 4921, 4922, 5, 72, 0, 0, 4922, 4923, 5, 69, 0, 0, 4923, 4924, 5, 82, 0, 0, 4924, 4925, 5, 69, 0, 0, 4925, 990, 1, 0, 0, 0, 4926, 4927, 5, 87, 0, 0, 4927, 4928, 5, 72, 0, 0, 4928, 4929, 5, 73, 0, 0, 4929, 4930, 5, 84, 0, 0, 4930, 4931, 5, 69, 0, 0, 4931, 4932, 5, 76, 0, 0, 4932, 4933, 5, 73, 0, 0, 4933, 4934, 5, 83, 0, 0, 4934, 4935, 5, 84, 0, 0, 4935, 992, 1, 0, 0, 0, 4936, 4937, 5, 87, 0, 0, 4937, 4938, 5, 73, 0, 0, 4938, 4939, 5, 84, 0, 0, 4939, 4940, 5, 72, 0, 0, 4940, 994, 1, 0, 0, 0, 4941, 4942, 5, 87, 0, 0, 4942, 4943, 5, 79, 0, 0, 4943, 4944, 5, 82, 0, 0, 4944, 4945, 5, 75, 0, 0, 4945, 996, 1, 0, 0, 0, 4946, 4947, 5, 87, 0, 0, 4947, 4948, 5, 79, 0, 0, 4948, 4949, 5, 82, 0, 0, 4949, 4950, 5, 75, 0, 0, 4950, 4951, 5, 76, 0, 0, 4951, 4952, 5, 79, 0, 0, 4952, 4953, 5, 65, 0, 0, 4953, 4954, 5, 68, 0, 0, 4954, 998, 1, 0, 0, 0, 4955, 4956, 5, 87, 0, 0, 4956, 4957, 5, 82, 0, 0, 4957, 4958, 5, 73, 0, 0, 4958, 4959, 5, 84, 0, 0, 4959, 4960, 5, 69, 0, 0, 4960, 1000, 1, 0, 0, 0, 4961, 4962, 5, 88, 0, 0, 4962, 4963, 5, 79, 0, 0, 4963, 4964, 5, 82, 0, 0, 4964, 1002, 1, 0, 0, 0, 4965, 4966, 5, 89, 0, 0, 4966, 4967, 5, 69, 0, 0, 4967, 4968, 5, 65, 0, 0, 4968, 4969, 5, 82, 0, 0, 4969, 1004, 1, 0, 0, 0, 4970, 4974, 5, 61, 0, 0, 4971, 4972, 5, 61, 0, 0, 4972, 4974, 5, 61, 0, 0, 4973, 4970, 1, 0, 0, 0, 4973, 4971, 1, 0, 0, 0, 4974, 1006, 1, 0, 0, 0, 4975, 4976, 5, 60, 0, 0, 4976, 4977, 5, 61, 0, 0, 4977, 4978, 5, 62, 0, 0, 4978, 1008, 1, 0, 0, 0, 4979, 4980, 5, 60, 0, 0, 4980, 4984, 5, 62, 0, 0, 4981, 4982, 5, 33, 0, 0, 4982, 4984, 5, 61, 0, 0, 4983, 4979, 1, 0, 0, 0, 4983, 4981, 1, 0, 0, 0, 4984, 1010, 1, 0, 0, 0, 4985, 4986, 5, 60, 0, 0, 4986, 1012, 1, 0, 0, 0, 4987, 4988, 5, 60, 0, 0, 4988, 4992, 5, 61, 0, 0, 4989, 4990, 5, 33, 0, 0, 4990, 4992, 5, 62, 0, 0, 4991, 4987, 1, 0, 0, 0, 4991, 4989, 1, 0, 0, 0, 4992, 1014, 1, 0, 0, 0, 4993, 4994, 5, 62, 0, 0, 4994, 1016, 1, 0, 0, 0, 4995, 4996, 5, 62, 0, 0, 4996, 5000, 5, 61, 0, 0, 4997, 4998, 5, 33, 0, 0, 4998, 5000, 5, 60, 0, 0, 4999, 4995, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 1018, 1, 0, 0, 0, 5001, 5002, 5, 43, 0, 0, 5002, 1020, 1, 0, 0, 0, 5003, 5004, 5, 45, 0, 0, 5004, 1022, 1, 0, 0, 0, 5005, 5006, 5, 42, 0, 0, 5006, 1024, 1, 0, 0, 0, 5007, 5008, 5, 47, 0, 0, 5008, 1026, 1, 0, 0, 0, 5009, 5010, 5, 37, 0, 0, 5010, 1028, 1, 0, 0, 0, 5011, 5012, 5, 126, 0, 0, 5012, 1030, 1, 0, 0, 0, 5013, 5014, 5, 38, 0, 0, 5014, 1032, 1, 0, 0, 0, 5015, 5016, 5, 38, 0, 0, 5016, 5017, 5, 38, 0, 0, 5017, 1034, 1, 0, 0, 0, 5018, 5019, 5, 33, 0, 0, 5019, 1036, 1, 0, 0, 0, 5020, 5021, 5, 124, 0, 0, 5021, 1038, 1, 0, 0, 0, 5022, 5023, 5, 124, 0, 0, 5023, 5024, 5, 124, 0, 0, 5024, 1040, 1, 0, 0, 0, 5025, 5026, 5, 94, 0, 0, 5026, 1042, 1, 0, 0, 0, 5027, 5028, 5, 58, 0, 0, 5028, 1044, 1, 0, 0, 0, 5029, 5030, 5, 45, 0, 0, 5030, 5031, 5, 62, 0, 0, 5031, 1046, 1, 0, 0, 0, 5032, 5033, 5, 47, 0, 0, 5033, 5034, 5, 42, 0, 0, 5034, 5035, 5, 43, 0, 0, 5035, 1048, 1, 0, 0, 0, 5036, 5037, 5, 42, 0, 0, 5037, 5038, 5, 47, 0, 0, 5038, 1050, 1, 0, 0, 0, 5039, 5040, 5, 47, 0, 0, 5040, 5041, 5, 42, 0, 0, 5041, 1052, 1, 0, 0, 0, 5042, 5043, 5, 64, 0, 0, 5043, 1054, 1, 0, 0, 0, 5044, 5045, 5, 64, 0, 0, 5045, 5046, 5, 64, 0, 0, 5046, 1056, 1, 0, 0, 0, 5047, 5055, 5, 39, 0, 0, 5048, 5049, 5, 92, 0, 0, 5049, 5054, 9, 0, 0, 0, 5050, 5051, 5, 39, 0, 0, 5051, 5054, 5, 39, 0, 0, 5052, 5054, 8, 0, 0, 0, 5053, 5048, 1, 0, 0, 0, 5053, 5050, 1, 0, 0, 0, 5053, 5052, 1, 0, 0, 0, 5054, 5057, 1, 0, 0, 0, 5055, 5053, 1, 0, 0, 0, 5055, 5056, 1, 0, 0, 0, 5056, 5058, 1, 0, 0, 0, 5057, 5055, 1, 0, 0, 0, 5058, 5092, 5, 39, 0, 0, 5059, 5067, 5, 34, 0, 0, 5060, 5061, 5, 92, 0, 0, 5061, 5066, 9, 0, 0, 0, 5062, 5063, 5, 34, 0, 0, 5063, 5066, 5, 34, 0, 0, 5064, 5066, 8, 1, 0, 0, 5065, 5060, 1, 0, 0, 0, 5065, 5062, 1, 0, 0, 0, 5065, 5064, 1, 0, 0, 0, 5066, 5069, 1, 0, 0, 0, 5067, 5065, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5070, 1, 0, 0, 0, 5069, 5067, 1, 0, 0, 0, 5070, 5092, 5, 34, 0, 0, 5071, 5072, 5, 82, 0, 0, 5072, 5073, 5, 39, 0, 0, 5073, 5077, 1, 0, 0, 0, 5074, 5076, 8, 2, 0, 0, 5075, 5074, 1, 0, 0, 0, 5076, 5079, 1, 0, 0, 0, 5077, 5075, 1, 0, 0, 0, 5077, 5078, 1, 0, 0, 0, 5078, 5080, 1, 0, 0, 0, 5079, 5077, 1, 0, 0, 0, 5080, 5092, 5, 39, 0, 0, 5081, 5082, 5, 82, 0, 0, 5082, 5083, 5, 34, 0, 0, 5083, 5087, 1, 0, 0, 0, 5084, 5086, 8, 3, 0, 0, 5085, 5084, 1, 0, 0, 0, 5086, 5089, 1, 0, 0, 0, 5087, 5085, 1, 0, 0, 0, 5087, 5088, 1, 0, 0, 0, 5088, 5090, 1, 0, 0, 0, 5089, 5087, 1, 0, 0, 0, 5090, 5092, 5, 34, 0, 0, 5091, 5047, 1, 0, 0, 0, 5091, 5059, 1, 0, 0, 0, 5091, 5071, 1, 0, 0, 0, 5091, 5081, 1, 0, 0, 0, 5092, 1058, 1, 0, 0, 0, 5093, 5098, 3, 17, 8, 0, 5094, 5098, 3, 19, 9, 0, 5095, 5098, 3, 13, 6, 0, 5096, 5098, 3, 15, 7, 0, 5097, 5093, 1, 0, 0, 0, 5097, 5094, 1, 0, 0, 0, 5097, 5095, 1, 0, 0, 0, 5097, 5096, 1, 0, 0, 0, 5098, 1060, 1, 0, 0, 0, 5099, 5101, 3, 1083, 541, 0, 5100, 5099, 1, 0, 0, 0, 5101, 5102, 1, 0, 0, 0, 5102, 5100, 1, 0, 0, 0, 5102, 5103, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5105, 5, 76, 0, 0, 5105, 1062, 1, 0, 0, 0, 5106, 5108, 3, 1083, 541, 0, 5107, 5106, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5107, 1, 0, 0, 0, 5109, 5110, 1, 0, 0, 0, 5110, 5111, 1, 0, 0, 0, 5111, 5112, 5, 83, 0, 0, 5112, 1064, 1, 0, 0, 0, 5113, 5115, 3, 1083, 541, 0, 5114, 5113, 1, 0, 0, 0, 5115, 5116, 1, 0, 0, 0, 5116, 5114, 1, 0, 0, 0, 5116, 5117, 1, 0, 0, 0, 5117, 5118, 1, 0, 0, 0, 5118, 5119, 5, 89, 0, 0, 5119, 1066, 1, 0, 0, 0, 5120, 5122, 3, 1083, 541, 0, 5121, 5120, 1, 0, 0, 0, 5122, 5123, 1, 0, 0, 0, 5123, 5121, 1, 0, 0, 0, 5123, 5124, 1, 0, 0, 0, 5124, 1068, 1, 0, 0, 0, 5125, 5127, 3, 1083, 541, 0, 5126, 5125, 1, 0, 0, 0, 5127, 5128, 1, 0, 0, 0, 5128, 5126, 1, 0, 0, 0, 5128, 5129, 1, 0, 0, 0, 5129, 5130, 1, 0, 0, 0, 5130, 5131, 3, 1081, 540, 0, 5131, 5137, 1, 0, 0, 0, 5132, 5133, 3, 1079, 539, 0, 5133, 5134, 3, 1081, 540, 0, 5134, 5135, 4, 534, 0, 0, 5135, 5137, 1, 0, 0, 0, 5136, 5126, 1, 0, 0, 0, 5136, 5132, 1, 0, 0, 0, 5137, 1070, 1, 0, 0, 0, 5138, 5139, 3, 1079, 539, 0, 5139, 5140, 4, 535, 1, 0, 5140, 1072, 1, 0, 0, 0, 5141, 5143, 3, 1083, 541, 0, 5142, 5141, 1, 0, 0, 0, 5143, 5144, 1, 0, 0, 0, 5144, 5142, 1, 0, 0, 0, 5144, 5145, 1, 0, 0, 0, 5145, 5147, 1, 0, 0, 0, 5146, 5148, 3, 1081, 540, 0, 5147, 5146, 1, 0, 0, 0, 5147, 5148, 1, 0, 0, 0, 5148, 5149, 1, 0, 0, 0, 5149, 5150, 5, 66, 0, 0, 5150, 5151, 5, 68, 0, 0, 5151, 5162, 1, 0, 0, 0, 5152, 5154, 3, 1079, 539, 0, 5153, 5155, 3, 1081, 540, 0, 5154, 5153, 1, 0, 0, 0, 5154, 5155, 1, 0, 0, 0, 5155, 5156, 1, 0, 0, 0, 5156, 5157, 5, 66, 0, 0, 5157, 5158, 5, 68, 0, 0, 5158, 5159, 1, 0, 0, 0, 5159, 5160, 4, 536, 2, 0, 5160, 5162, 1, 0, 0, 0, 5161, 5142, 1, 0, 0, 0, 5161, 5152, 1, 0, 0, 0, 5162, 1074, 1, 0, 0, 0, 5163, 5167, 3, 1085, 542, 0, 5164, 5167, 3, 1083, 541, 0, 5165, 5167, 5, 95, 0, 0, 5166, 5163, 1, 0, 0, 0, 5166, 5164, 1, 0, 0, 0, 5166, 5165, 1, 0, 0, 0, 5167, 5168, 1, 0, 0, 0, 5168, 5166, 1, 0, 0, 0, 5168, 5169, 1, 0, 0, 0, 5169, 1076, 1, 0, 0, 0, 5170, 5176, 5, 96, 0, 0, 5171, 5175, 8, 4, 0, 0, 5172, 5173, 5, 96, 0, 0, 5173, 5175, 5, 96, 0, 0, 5174, 5171, 1, 0, 0, 0, 5174, 5172, 1, 0, 0, 0, 5175, 5178, 1, 0, 0, 0, 5176, 5174, 1, 0, 0, 0, 5176, 5177, 1, 0, 0, 0, 5177, 5179, 1, 0, 0, 0, 5178, 5176, 1, 0, 0, 0, 5179, 5180, 5, 96, 0, 0, 5180, 1078, 1, 0, 0, 0, 5181, 5183, 3, 1083, 541, 0, 5182, 5181, 1, 0, 0, 0, 5183, 5184, 1, 0, 0, 0, 5184, 5182, 1, 0, 0, 0, 5184, 5185, 1, 0, 0, 0, 5185, 5186, 1, 0, 0, 0, 5186, 5190, 5, 46, 0, 0, 5187, 5189, 3, 1083, 541, 0, 5188, 5187, 1, 0, 0, 0, 5189, 5192, 1, 0, 0, 0, 5190, 5188, 1, 0, 0, 0, 5190, 5191, 1, 0, 0, 0, 5191, 5200, 1, 0, 0, 0, 5192, 5190, 1, 0, 0, 0, 5193, 5195, 5, 46, 0, 0, 5194, 5196, 3, 1083, 541, 0, 5195, 5194, 1, 0, 0, 0, 5196, 5197, 1, 0, 0, 0, 5197, 5195, 1, 0, 0, 0, 5197, 5198, 1, 0, 0, 0, 5198, 5200, 1, 0, 0, 0, 5199, 5182, 1, 0, 0, 0, 5199, 5193, 1, 0, 0, 0, 5200, 1080, 1, 0, 0, 0, 5201, 5203, 5, 69, 0, 0, 5202, 5204, 7, 5, 0, 0, 5203, 5202, 1, 0, 0, 0, 5203, 5204, 1, 0, 0, 0, 5204, 5206, 1, 0, 0, 0, 5205, 5207, 3, 1083, 541, 0, 5206, 5205, 1, 0, 0, 0, 5207, 5208, 1, 0, 0, 0, 5208, 5206, 1, 0, 0, 0, 5208, 5209, 1, 0, 0, 0, 5209, 1082, 1, 0, 0, 0, 5210, 5211, 7, 6, 0, 0, 5211, 1084, 1, 0, 0, 0, 5212, 5217, 7, 7, 0, 0, 5213, 5217, 8, 8, 0, 0, 5214, 5215, 7, 9, 0, 0, 5215, 5217, 7, 10, 0, 0, 5216, 5212, 1, 0, 0, 0, 5216, 5213, 1, 0, 0, 0, 5216, 5214, 1, 0, 0, 0, 5217, 1086, 1, 0, 0, 0, 5218, 5219, 5, 45, 0, 0, 5219, 5220, 5, 45, 0, 0, 5220, 5226, 1, 0, 0, 0, 5221, 5222, 5, 92, 0, 0, 5222, 5225, 5, 10, 0, 0, 5223, 5225, 8, 11, 0, 0, 5224, 5221, 1, 0, 0, 0, 5224, 5223, 1, 0, 0, 0, 5225, 5228, 1, 0, 0, 0, 5226, 5224, 1, 0, 0, 0, 5226, 5227, 1, 0, 0, 0, 5227, 5230, 1, 0, 0, 0, 5228, 5226, 1, 0, 0, 0, 5229, 5231, 5, 13, 0, 0, 5230, 5229, 1, 0, 0, 0, 5230, 5231, 1, 0, 0, 0, 5231, 5233, 1, 0, 0, 0, 5232, 5234, 5, 10, 0, 0, 5233, 5232, 1, 0, 0, 0, 5233, 5234, 1, 0, 0, 0, 5234, 5235, 1, 0, 0, 0, 5235, 5236, 6, 543, 0, 0, 5236, 1088, 1, 0, 0, 0, 5237, 5242, 3, 1051, 525, 0, 5238, 5241, 3, 1089, 544, 0, 5239, 5241, 9, 0, 0, 0, 5240, 5238, 1, 0, 0, 0, 5240, 5239, 1, 0, 0, 0, 5241, 5244, 1, 0, 0, 0, 5242, 5243, 1, 0, 0, 0, 5242, 5240, 1, 0, 0, 0, 5243, 5249, 1, 0, 0, 0, 5244, 5242, 1, 0, 0, 0, 5245, 5246, 5, 42, 0, 0, 5246, 5250, 5, 47, 0, 0, 5247, 5248, 6, 544, 1, 0, 5248, 5250, 5, 0, 0, 1, 5249, 5245, 1, 0, 0, 0, 5249, 5247, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5252, 6, 544, 2, 0, 5252, 1090, 1, 0, 0, 0, 5253, 5254, 5, 70, 0, 0, 5254, 5255, 5, 82, 0, 0, 5255, 5256, 5, 79, 0, 0, 5256, 5257, 5, 77, 0, 0, 5257, 5259, 1, 0, 0, 0, 5258, 5260, 3, 1093, 546, 0, 5259, 5258, 1, 0, 0, 0, 5260, 5261, 1, 0, 0, 0, 5261, 5259, 1, 0, 0, 0, 5261, 5262, 1, 0, 0, 0, 5262, 5263, 1, 0, 0, 0, 5263, 5264, 5, 68, 0, 0, 5264, 5265, 5, 85, 0, 0, 5265, 5266, 5, 65, 0, 0, 5266, 5267, 5, 76, 0, 0, 5267, 5268, 1, 0, 0, 0, 5268, 5269, 6, 545, 0, 0, 5269, 1092, 1, 0, 0, 0, 5270, 5272, 7, 12, 0, 0, 5271, 5270, 1, 0, 0, 0, 5272, 5273, 1, 0, 0, 0, 5273, 5271, 1, 0, 0, 0, 5273, 5274, 1, 0, 0, 0, 5274, 5275, 1, 0, 0, 0, 5275, 5276, 6, 546, 0, 0, 5276, 1094, 1, 0, 0, 0, 5277, 5278, 9, 0, 0, 0, 5278, 1096, 1, 0, 0, 0, 44, 0, 1541, 4973, 4983, 4991, 4999, 5053, 5055, 5065, 5067, 5077, 5087, 5091, 5097, 5102, 5109, 5116, 5123, 5128, 5136, 5144, 5147, 5154, 5161, 5166, 5168, 5174, 5176, 5184, 5190, 5197, 5199, 5203, 5208, 5216, 5224, 5226, 5230, 5233, 5240, 5242, 5249, 5261, 5273, 3, 0, 1, 0, 1, 544, 0, 0, 2, 0] \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java deleted file mode 100644 index 99ef9a550afe1c..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.java +++ /dev/null @@ -1,3843 +0,0 @@ -// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class DorisLexer extends Lexer { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - SEMICOLON=1, LEFT_PAREN=2, RIGHT_PAREN=3, COMMA=4, DOT=5, DOTDOTDOT=6, - LEFT_BRACKET=7, RIGHT_BRACKET=8, LEFT_BRACE=9, RIGHT_BRACE=10, ACCOUNT_LOCK=11, - ACCOUNT_UNLOCK=12, ACTIONS=13, ADD=14, ADMIN=15, AFTER=16, AGG_STATE=17, - AGGREGATE=18, ALIAS=19, ALL=20, ALTER=21, ANALYZE=22, ANALYZED=23, AND=24, - ANTI=25, APPEND=26, ARRAY=27, AS=28, ASC=29, AT=30, AUTHORS=31, AUTO=32, - AUTO_INCREMENT=33, ALWAYS=34, BACKEND=35, BACKENDS=36, BACKUP=37, BEGIN=38, - BELONG=39, BETWEEN=40, BIGINT=41, BIN=42, BINARY=43, BINLOG=44, BITAND=45, - BITMAP=46, BITMAP_EMPTY=47, BITMAP_UNION=48, BITOR=49, BITXOR=50, BLOB=51, - BOOLEAN=52, BRIEF=53, BROKER=54, BUCKETS=55, BUILD=56, BUILTIN=57, BULK=58, - BY=59, CACHE=60, CACHED=61, CALL=62, CANCEL=63, CASE=64, CAST=65, CATALOG=66, - CATALOGS=67, CHAIN=68, CHAR=69, CHARSET=70, CHECK=71, CLEAN=72, CLUSTER=73, - CLUSTERS=74, COLLATE=75, COLLATION=76, COLLECT=77, COLOCATE=78, COLUMN=79, - COLUMNS=80, COMMENT=81, COMMIT=82, COMMITTED=83, COMPACT=84, COMPLETE=85, - COMPRESS_TYPE=86, COMPUTE=87, CONDITIONS=88, CONFIG=89, CONNECTION=90, - CONNECTION_ID=91, CONSISTENT=92, CONSTRAINT=93, CONSTRAINTS=94, CONVERT=95, - CONVERT_LSC=96, COPY=97, COUNT=98, CREATE=99, CREATION=100, CRON=101, - CROSS=102, CUBE=103, CURRENT=104, CURRENT_CATALOG=105, CURRENT_DATE=106, - CURRENT_TIME=107, CURRENT_TIMESTAMP=108, CURRENT_USER=109, DATA=110, DATABASE=111, - DATABASES=112, DATE=113, DATETIME=114, DATETIMEV2=115, DATEV2=116, DATETIMEV1=117, - DATEV1=118, DAY=119, DECIMAL=120, DECIMALV2=121, DECIMALV3=122, DECOMMISSION=123, - DEFAULT=124, DEFERRED=125, DELETE=126, DEMAND=127, DESC=128, DESCRIBE=129, - DIAGNOSE=130, DIAGNOSIS=131, DISK=132, DISTINCT=133, DISTINCTPC=134, DISTINCTPCSA=135, - DISTRIBUTED=136, DISTRIBUTION=137, DIV=138, DO=139, DORIS_INTERNAL_TABLE_ID=140, - DOUBLE=141, DROP=142, DROPP=143, DUAL=144, DUMP=145, DUPLICATE=146, DYNAMIC=147, - E=148, ELSE=149, ENABLE=150, ENCRYPTKEY=151, ENCRYPTKEYS=152, END=153, - ENDS=154, ENGINE=155, ENGINES=156, ENTER=157, ERRORS=158, EVENTS=159, - EVERY=160, EXCEPT=161, EXCLUDE=162, EXECUTE=163, EXISTS=164, EXPIRED=165, - EXPLAIN=166, EXPORT=167, EXTENDED=168, EXTERNAL=169, EXTRACT=170, FAILED_LOGIN_ATTEMPTS=171, - FALSE=172, FAST=173, FEATURE=174, FIELDS=175, FILE=176, FILTER=177, FIRST=178, - FLOAT=179, FOLLOWER=180, FOLLOWING=181, FOR=182, FOREIGN=183, FORCE=184, - FORMAT=185, FREE=186, FROM=187, FRONTEND=188, FRONTENDS=189, FULL=190, - FUNCTION=191, FUNCTIONS=192, GENERATED=193, GENERIC=194, GLOBAL=195, GRANT=196, - GRANTS=197, GRAPH=198, GROUP=199, GROUPING=200, GROUPS=201, HASH=202, - HAVING=203, HDFS=204, HELP=205, HISTOGRAM=206, HLL=207, HLL_UNION=208, - HOSTNAME=209, HOTSPOT=210, HOUR=211, HUB=212, IDENTIFIED=213, IF=214, - IGNORE=215, IMMEDIATE=216, IN=217, INCREMENTAL=218, INDEX=219, INDEXES=220, - INFILE=221, INNER=222, INSERT=223, INSTALL=224, INT=225, INTEGER=226, - INTERMEDIATE=227, INTERSECT=228, INTERVAL=229, INTO=230, INVERTED=231, - IPV4=232, IPV6=233, IS=234, IS_NOT_NULL_PRED=235, IS_NULL_PRED=236, ISNULL=237, - ISOLATION=238, JOB=239, JOBS=240, JOIN=241, JSON=242, JSONB=243, KEY=244, - KEYS=245, KILL=246, LABEL=247, LARGEINT=248, LAST=249, LATERAL=250, LDAP=251, - LDAP_ADMIN_PASSWORD=252, LEFT=253, LESS=254, LEVEL=255, LIKE=256, LIMIT=257, - LINES=258, LINK=259, LIST=260, LOAD=261, LOCAL=262, LOCALTIME=263, LOCALTIMESTAMP=264, - LOCATION=265, LOCK=266, LOGICAL=267, LOW_PRIORITY=268, MANUAL=269, MAP=270, - MATCH=271, MATCH_ALL=272, MATCH_ANY=273, MATCH_PHRASE=274, MATCH_PHRASE_EDGE=275, - MATCH_PHRASE_PREFIX=276, MATCH_REGEXP=277, MATCH_NAME=278, MATCH_NAME_GLOB=279, - MATERIALIZED=280, MAX=281, MAXVALUE=282, MEMO=283, MERGE=284, MIGRATE=285, - MIGRATIONS=286, MIN=287, MINUS=288, MINUTE=289, MODIFY=290, MONTH=291, - MTMV=292, NAME=293, NAMES=294, NATURAL=295, NEGATIVE=296, NEVER=297, NEXT=298, - NGRAM_BF=299, NO=300, NO_USE_MV=301, NON_NULLABLE=302, NOT=303, NULL=304, - NULLS=305, OBSERVER=306, OF=307, OFFSET=308, ON=309, ONLY=310, OPEN=311, - OPTIMIZED=312, OR=313, ORDER=314, OUTER=315, OUTFILE=316, OVER=317, OVERWRITE=318, - PARAMETER=319, PARSED=320, PARTITION=321, PARTITIONS=322, PASSWORD=323, - PASSWORD_EXPIRE=324, PASSWORD_HISTORY=325, PASSWORD_LOCK_TIME=326, PASSWORD_REUSE=327, - PATH=328, PAUSE=329, PERCENT=330, PERIOD=331, PERMISSIVE=332, PHYSICAL=333, - PI=334, PLACEHOLDER=335, PLAN=336, PLAY=337, PRIVILEGES=338, PROCESS=339, - PLUGIN=340, PLUGINS=341, POLICY=342, PRECEDING=343, PREPARE=344, PRIMARY=345, - PROC=346, PROCEDURE=347, PROCESSLIST=348, PROFILE=349, PROPERTIES=350, - PROPERTY=351, QUANTILE_STATE=352, QUANTILE_UNION=353, QUERY=354, QUEUED=355, - QUOTA=356, QUALIFY=357, QUARTER=358, RANDOM=359, RANGE=360, READ=361, - REAL=362, REBALANCE=363, RECENT=364, RECOVER=365, RECYCLE=366, REFRESH=367, - REFERENCES=368, REGEXP=369, RELEASE=370, RENAME=371, REPAIR=372, REPEATABLE=373, - REPLACE=374, REPLACE_IF_NOT_NULL=375, REPLAYER=376, REPLICA=377, REPOSITORIES=378, - REPOSITORY=379, RESOURCE=380, RESOURCES=381, RESTORE=382, RESTRICTIVE=383, - RESUME=384, RETURNS=385, REVOKE=386, REWRITTEN=387, RIGHT=388, RLIKE=389, - ROLE=390, ROLES=391, ROLLBACK=392, ROLLUP=393, ROUTINE=394, ROW=395, ROWS=396, - S3=397, SAMPLE=398, SCHEDULE=399, SCHEDULER=400, SCHEMA=401, SCHEMAS=402, - SECOND=403, SELECT=404, SEMI=405, SERIALIZABLE=406, SESSION=407, SESSION_USER=408, - SET=409, SETS=410, SET_SESSION_VARIABLE=411, SHAPE=412, SHOW=413, SIGNED=414, - SKEW=415, SMALLINT=416, SNAPSHOT=417, SONAME=418, SPLIT=419, SQL=420, - SQL_BLOCK_RULE=421, STAGE=422, STAGES=423, START=424, STARTS=425, STATS=426, - STATUS=427, STOP=428, STORAGE=429, STREAM=430, STREAMING=431, STRING=432, - STRUCT=433, SUM=434, SUPERUSER=435, SWITCH=436, SYNC=437, SYSTEM=438, - TABLE=439, TABLES=440, TABLESAMPLE=441, TABLET=442, TABLETS=443, TASK=444, - TASKS=445, TEMPORARY=446, TERMINATED=447, TEXT=448, THAN=449, THEN=450, - TIME=451, TIMESTAMP=452, TINYINT=453, TO=454, TRANSACTION=455, TRASH=456, - TREE=457, TRIGGERS=458, TRIM=459, TRUE=460, TRUNCATE=461, TYPE=462, TYPECAST=463, - TYPES=464, UNBOUNDED=465, UNCOMMITTED=466, UNINSTALL=467, UNION=468, UNIQUE=469, - UNLOCK=470, UNSET=471, UNSIGNED=472, UP=473, UPDATE=474, USE=475, USER=476, - USE_MV=477, USING=478, VALUE=479, VALUES=480, VARCHAR=481, VARIABLE=482, - VARIABLES=483, VARIANT=484, VAULT=485, VAULTS=486, VERBOSE=487, VERSION=488, - VIEW=489, VIEWS=490, WARM=491, WARNINGS=492, WEEK=493, WHEN=494, WHERE=495, - WHITELIST=496, WITH=497, WORK=498, WORKLOAD=499, WRITE=500, XOR=501, YEAR=502, - EQ=503, NSEQ=504, NEQ=505, LT=506, LTE=507, GT=508, GTE=509, PLUS=510, - SUBTRACT=511, ASTERISK=512, SLASH=513, MOD=514, TILDE=515, AMPERSAND=516, - LOGICALAND=517, LOGICALNOT=518, PIPE=519, DOUBLEPIPES=520, HAT=521, COLON=522, - ARROW=523, HINT_START=524, HINT_END=525, COMMENT_START=526, ATSIGN=527, - DOUBLEATSIGN=528, STRING_LITERAL=529, LEADING_STRING=530, BIGINT_LITERAL=531, - SMALLINT_LITERAL=532, TINYINT_LITERAL=533, INTEGER_VALUE=534, EXPONENT_VALUE=535, - DECIMAL_VALUE=536, BIGDECIMAL_LITERAL=537, IDENTIFIER=538, BACKQUOTED_IDENTIFIER=539, - SIMPLE_COMMENT=540, BRACKETED_COMMENT=541, FROM_DUAL=542, WS=543, UNRECOGNIZED=544; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static String[] modeNames = { - "DEFAULT_MODE" - }; - - private static String[] makeRuleNames() { - return new String[] { - "SEMICOLON", "LEFT_PAREN", "RIGHT_PAREN", "COMMA", "DOT", "DOTDOTDOT", - "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "ACCOUNT_LOCK", - "ACCOUNT_UNLOCK", "ACTIONS", "ADD", "ADMIN", "AFTER", "AGG_STATE", "AGGREGATE", - "ALIAS", "ALL", "ALTER", "ANALYZE", "ANALYZED", "AND", "ANTI", "APPEND", - "ARRAY", "AS", "ASC", "AT", "AUTHORS", "AUTO", "AUTO_INCREMENT", "ALWAYS", - "BACKEND", "BACKENDS", "BACKUP", "BEGIN", "BELONG", "BETWEEN", "BIGINT", - "BIN", "BINARY", "BINLOG", "BITAND", "BITMAP", "BITMAP_EMPTY", "BITMAP_UNION", - "BITOR", "BITXOR", "BLOB", "BOOLEAN", "BRIEF", "BROKER", "BUCKETS", "BUILD", - "BUILTIN", "BULK", "BY", "CACHE", "CACHED", "CALL", "CANCEL", "CASE", - "CAST", "CATALOG", "CATALOGS", "CHAIN", "CHAR", "CHARSET", "CHECK", "CLEAN", - "CLUSTER", "CLUSTERS", "COLLATE", "COLLATION", "COLLECT", "COLOCATE", - "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETE", - "COMPRESS_TYPE", "COMPUTE", "CONDITIONS", "CONFIG", "CONNECTION", "CONNECTION_ID", - "CONSISTENT", "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CONVERT_LSC", - "COPY", "COUNT", "CREATE", "CREATION", "CRON", "CROSS", "CUBE", "CURRENT", - "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", - "DATETIMEV2", "DATEV2", "DATETIMEV1", "DATEV1", "DAY", "DECIMAL", "DECIMALV2", - "DECIMALV3", "DECOMMISSION", "DEFAULT", "DEFERRED", "DELETE", "DEMAND", - "DESC", "DESCRIBE", "DIAGNOSE", "DIAGNOSIS", "DISK", "DISTINCT", "DISTINCTPC", - "DISTINCTPCSA", "DISTRIBUTED", "DISTRIBUTION", "DIV", "DO", "DORIS_INTERNAL_TABLE_ID", - "DOUBLE", "DROP", "DROPP", "DUAL", "DUMP", "DUPLICATE", "DYNAMIC", "E", - "ELSE", "ENABLE", "ENCRYPTKEY", "ENCRYPTKEYS", "END", "ENDS", "ENGINE", - "ENGINES", "ENTER", "ERRORS", "EVENTS", "EVERY", "EXCEPT", "EXCLUDE", - "EXECUTE", "EXISTS", "EXPIRED", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", - "EXTRACT", "FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FEATURE", "FIELDS", - "FILE", "FILTER", "FIRST", "FLOAT", "FOLLOWER", "FOLLOWING", "FOR", "FOREIGN", - "FORCE", "FORMAT", "FREE", "FROM", "FRONTEND", "FRONTENDS", "FULL", "FUNCTION", - "FUNCTIONS", "GENERATED", "GENERIC", "GLOBAL", "GRANT", "GRANTS", "GRAPH", - "GROUP", "GROUPING", "GROUPS", "HASH", "HAVING", "HDFS", "HELP", "HISTOGRAM", - "HLL", "HLL_UNION", "HOSTNAME", "HOTSPOT", "HOUR", "HUB", "IDENTIFIED", - "IF", "IGNORE", "IMMEDIATE", "IN", "INCREMENTAL", "INDEX", "INDEXES", - "INFILE", "INNER", "INSERT", "INSTALL", "INT", "INTEGER", "INTERMEDIATE", - "INTERSECT", "INTERVAL", "INTO", "INVERTED", "IPV4", "IPV6", "IS", "IS_NOT_NULL_PRED", - "IS_NULL_PRED", "ISNULL", "ISOLATION", "JOB", "JOBS", "JOIN", "JSON", - "JSONB", "KEY", "KEYS", "KILL", "LABEL", "LARGEINT", "LAST", "LATERAL", - "LDAP", "LDAP_ADMIN_PASSWORD", "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", - "LINES", "LINK", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", - "LOCATION", "LOCK", "LOGICAL", "LOW_PRIORITY", "MANUAL", "MAP", "MATCH", - "MATCH_ALL", "MATCH_ANY", "MATCH_PHRASE", "MATCH_PHRASE_EDGE", "MATCH_PHRASE_PREFIX", - "MATCH_REGEXP", "MATCH_NAME", "MATCH_NAME_GLOB", "MATERIALIZED", "MAX", - "MAXVALUE", "MEMO", "MERGE", "MIGRATE", "MIGRATIONS", "MIN", "MINUS", - "MINUTE", "MODIFY", "MONTH", "MTMV", "NAME", "NAMES", "NATURAL", "NEGATIVE", - "NEVER", "NEXT", "NGRAM_BF", "NO", "NO_USE_MV", "NON_NULLABLE", "NOT", - "NULL", "NULLS", "OBSERVER", "OF", "OFFSET", "ON", "ONLY", "OPEN", "OPTIMIZED", - "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "OVERWRITE", "PARAMETER", - "PARSED", "PARTITION", "PARTITIONS", "PASSWORD", "PASSWORD_EXPIRE", "PASSWORD_HISTORY", - "PASSWORD_LOCK_TIME", "PASSWORD_REUSE", "PATH", "PAUSE", "PERCENT", "PERIOD", - "PERMISSIVE", "PHYSICAL", "PI", "PLACEHOLDER", "PLAN", "PLAY", "PRIVILEGES", - "PROCESS", "PLUGIN", "PLUGINS", "POLICY", "PRECEDING", "PREPARE", "PRIMARY", - "PROC", "PROCEDURE", "PROCESSLIST", "PROFILE", "PROPERTIES", "PROPERTY", - "QUANTILE_STATE", "QUANTILE_UNION", "QUERY", "QUEUED", "QUOTA", "QUALIFY", - "QUARTER", "RANDOM", "RANGE", "READ", "REAL", "REBALANCE", "RECENT", - "RECOVER", "RECYCLE", "REFRESH", "REFERENCES", "REGEXP", "RELEASE", "RENAME", - "REPAIR", "REPEATABLE", "REPLACE", "REPLACE_IF_NOT_NULL", "REPLAYER", - "REPLICA", "REPOSITORIES", "REPOSITORY", "RESOURCE", "RESOURCES", "RESTORE", - "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITTEN", "RIGHT", "RLIKE", - "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW", "ROWS", "S3", - "SAMPLE", "SCHEDULE", "SCHEDULER", "SCHEMA", "SCHEMAS", "SECOND", "SELECT", - "SEMI", "SERIALIZABLE", "SESSION", "SESSION_USER", "SET", "SETS", "SET_SESSION_VARIABLE", - "SHAPE", "SHOW", "SIGNED", "SKEW", "SMALLINT", "SNAPSHOT", "SONAME", - "SPLIT", "SQL", "SQL_BLOCK_RULE", "STAGE", "STAGES", "START", "STARTS", - "STATS", "STATUS", "STOP", "STORAGE", "STREAM", "STREAMING", "STRING", - "STRUCT", "SUM", "SUPERUSER", "SWITCH", "SYNC", "SYSTEM", "TABLE", "TABLES", - "TABLESAMPLE", "TABLET", "TABLETS", "TASK", "TASKS", "TEMPORARY", "TERMINATED", - "TEXT", "THAN", "THEN", "TIME", "TIMESTAMP", "TINYINT", "TO", "TRANSACTION", - "TRASH", "TREE", "TRIGGERS", "TRIM", "TRUE", "TRUNCATE", "TYPE", "TYPECAST", - "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNINSTALL", "UNION", "UNIQUE", - "UNLOCK", "UNSET", "UNSIGNED", "UP", "UPDATE", "USE", "USER", "USE_MV", - "USING", "VALUE", "VALUES", "VARCHAR", "VARIABLE", "VARIABLES", "VARIANT", - "VAULT", "VAULTS", "VERBOSE", "VERSION", "VIEW", "VIEWS", "WARM", "WARNINGS", - "WEEK", "WHEN", "WHERE", "WHITELIST", "WITH", "WORK", "WORKLOAD", "WRITE", - "XOR", "YEAR", "EQ", "NSEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", - "SUBTRACT", "ASTERISK", "SLASH", "MOD", "TILDE", "AMPERSAND", "LOGICALAND", - "LOGICALNOT", "PIPE", "DOUBLEPIPES", "HAT", "COLON", "ARROW", "HINT_START", - "HINT_END", "COMMENT_START", "ATSIGN", "DOUBLEATSIGN", "STRING_LITERAL", - "LEADING_STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", - "INTEGER_VALUE", "EXPONENT_VALUE", "DECIMAL_VALUE", "BIGDECIMAL_LITERAL", - "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "DECIMAL_DIGITS", "EXPONENT", - "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "FROM_DUAL", - "WS", "UNRECOGNIZED" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "';'", "'('", "')'", "','", "'.'", "'...'", "'['", "']'", "'{'", - "'}'", "'ACCOUNT_LOCK'", "'ACCOUNT_UNLOCK'", "'ACTIONS'", "'ADD'", "'ADMIN'", - "'AFTER'", "'AGG_STATE'", "'AGGREGATE'", "'ALIAS'", "'ALL'", "'ALTER'", - "'ANALYZE'", "'ANALYZED'", "'AND'", "'ANTI'", "'APPEND'", "'ARRAY'", - "'AS'", "'ASC'", "'AT'", "'AUTHORS'", "'AUTO'", "'AUTO_INCREMENT'", "'ALWAYS'", - "'BACKEND'", "'BACKENDS'", "'BACKUP'", "'BEGIN'", "'BELONG'", "'BETWEEN'", - "'BIGINT'", "'BIN'", "'BINARY'", "'BINLOG'", "'BITAND'", "'BITMAP'", - "'BITMAP_EMPTY'", "'BITMAP_UNION'", "'BITOR'", "'BITXOR'", "'BLOB'", - "'BOOLEAN'", "'BRIEF'", "'BROKER'", "'BUCKETS'", "'BUILD'", "'BUILTIN'", - "'BULK'", "'BY'", "'CACHE'", "'CACHED'", "'CALL'", "'CANCEL'", "'CASE'", - "'CAST'", "'CATALOG'", "'CATALOGS'", "'CHAIN'", null, "'CHARSET'", "'CHECK'", - "'CLEAN'", "'CLUSTER'", "'CLUSTERS'", "'COLLATE'", "'COLLATION'", "'COLLECT'", - "'COLOCATE'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", - "'COMPACT'", "'COMPLETE'", "'COMPRESS_TYPE'", "'COMPUTE'", "'CONDITIONS'", - "'CONFIG'", "'CONNECTION'", "'CONNECTION_ID'", "'CONSISTENT'", "'CONSTRAINT'", - "'CONSTRAINTS'", "'CONVERT'", "'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'", - "'COPY'", "'COUNT'", "'CREATE'", "'CREATION'", "'CRON'", "'CROSS'", "'CUBE'", - "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_TIME'", - "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATABASE'", "'DATABASES'", - "'DATE'", "'DATETIME'", "'DATETIMEV2'", "'DATEV2'", "'DATETIMEV1'", "'DATEV1'", - "'DAY'", "'DECIMAL'", "'DECIMALV2'", "'DECIMALV3'", "'DECOMMISSION'", - "'DEFAULT'", "'DEFERRED'", "'DELETE'", "'DEMAND'", "'DESC'", "'DESCRIBE'", - "'DIAGNOSE'", "'DIAGNOSIS'", "'DISK'", "'DISTINCT'", "'DISTINCTPC'", - "'DISTINCTPCSA'", "'DISTRIBUTED'", "'DISTRIBUTION'", "'DIV'", "'DO'", - "'DORIS_INTERNAL_TABLE_ID'", "'DOUBLE'", "'DROP'", "'DROPP'", "'DUAL'", - "'DUMP'", "'DUPLICATE'", "'DYNAMIC'", "'E'", "'ELSE'", "'ENABLE'", "'ENCRYPTKEY'", - "'ENCRYPTKEYS'", "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ENTER'", - "'ERRORS'", "'EVENTS'", "'EVERY'", "'EXCEPT'", "'EXCLUDE'", "'EXECUTE'", - "'EXISTS'", "'EXPIRED'", "'EXPLAIN'", "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", - "'EXTRACT'", "'FAILED_LOGIN_ATTEMPTS'", "'FALSE'", "'FAST'", "'FEATURE'", - "'FIELDS'", "'FILE'", "'FILTER'", "'FIRST'", "'FLOAT'", "'FOLLOWER'", - "'FOLLOWING'", "'FOR'", "'FOREIGN'", "'FORCE'", "'FORMAT'", "'FREE'", - "'FROM'", "'FRONTEND'", "'FRONTENDS'", "'FULL'", "'FUNCTION'", "'FUNCTIONS'", - "'GENERATED'", "'GENERIC'", "'GLOBAL'", "'GRANT'", "'GRANTS'", "'GRAPH'", - "'GROUP'", "'GROUPING'", "'GROUPS'", "'HASH'", "'HAVING'", "'HDFS'", - "'HELP'", "'HISTOGRAM'", "'HLL'", "'HLL_UNION'", "'HOSTNAME'", "'HOTSPOT'", - "'HOUR'", "'HUB'", "'IDENTIFIED'", "'IF'", "'IGNORE'", "'IMMEDIATE'", - "'IN'", "'INCREMENTAL'", "'INDEX'", "'INDEXES'", "'INFILE'", "'INNER'", - "'INSERT'", "'INSTALL'", "'INT'", "'INTEGER'", "'INTERMEDIATE'", "'INTERSECT'", - "'INTERVAL'", "'INTO'", "'INVERTED'", "'IPV4'", "'IPV6'", "'IS'", "'IS_NOT_NULL_PRED'", - "'IS_NULL_PRED'", "'ISNULL'", "'ISOLATION'", "'JOB'", "'JOBS'", "'JOIN'", - "'JSON'", "'JSONB'", "'KEY'", "'KEYS'", "'KILL'", "'LABEL'", "'LARGEINT'", - "'LAST'", "'LATERAL'", "'LDAP'", "'LDAP_ADMIN_PASSWORD'", "'LEFT'", "'LESS'", - "'LEVEL'", "'LIKE'", "'LIMIT'", "'LINES'", "'LINK'", "'LIST'", "'LOAD'", - "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", "'LOCATION'", "'LOCK'", - "'LOGICAL'", "'LOW_PRIORITY'", "'MANUAL'", "'MAP'", "'MATCH'", "'MATCH_ALL'", - "'MATCH_ANY'", "'MATCH_PHRASE'", "'MATCH_PHRASE_EDGE'", "'MATCH_PHRASE_PREFIX'", - "'MATCH_REGEXP'", "'MATCH_NAME'", "'MATCH_NAME_GLOB'", "'MATERIALIZED'", - "'MAX'", "'MAXVALUE'", "'MEMO'", "'MERGE'", "'MIGRATE'", "'MIGRATIONS'", - "'MIN'", "'MINUS'", "'MINUTE'", "'MODIFY'", "'MONTH'", "'MTMV'", "'NAME'", - "'NAMES'", "'NATURAL'", "'NEGATIVE'", "'NEVER'", "'NEXT'", "'NGRAM_BF'", - "'NO'", "'NO_USE_MV'", "'NON_NULLABLE'", "'NOT'", "'NULL'", "'NULLS'", - "'OBSERVER'", "'OF'", "'OFFSET'", "'ON'", "'ONLY'", "'OPEN'", "'OPTIMIZED'", - "'OR'", "'ORDER'", "'OUTER'", "'OUTFILE'", "'OVER'", "'OVERWRITE'", "'PARAMETER'", - "'PARSED'", "'PARTITION'", "'PARTITIONS'", "'PASSWORD'", "'PASSWORD_EXPIRE'", - "'PASSWORD_HISTORY'", "'PASSWORD_LOCK_TIME'", "'PASSWORD_REUSE'", "'PATH'", - "'PAUSE'", "'PERCENT'", "'PERIOD'", "'PERMISSIVE'", "'PHYSICAL'", "'PI'", - "'?'", "'PLAN'", "'PLAY'", "'PRIVILEGES'", "'PROCESS'", "'PLUGIN'", "'PLUGINS'", - "'POLICY'", "'PRECEDING'", "'PREPARE'", "'PRIMARY'", "'PROC'", "'PROCEDURE'", - "'PROCESSLIST'", "'PROFILE'", "'PROPERTIES'", "'PROPERTY'", "'QUANTILE_STATE'", - "'QUANTILE_UNION'", "'QUERY'", "'QUEUED'", "'QUOTA'", "'QUALIFY'", "'QUARTER'", - "'RANDOM'", "'RANGE'", "'READ'", "'REAL'", "'REBALANCE'", "'RECENT'", - "'RECOVER'", "'RECYCLE'", "'REFRESH'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", - "'RENAME'", "'REPAIR'", "'REPEATABLE'", "'REPLACE'", "'REPLACE_IF_NOT_NULL'", - "'REPLAYER'", "'REPLICA'", "'REPOSITORIES'", "'REPOSITORY'", "'RESOURCE'", - "'RESOURCES'", "'RESTORE'", "'RESTRICTIVE'", "'RESUME'", "'RETURNS'", - "'REVOKE'", "'REWRITTEN'", "'RIGHT'", "'RLIKE'", "'ROLE'", "'ROLES'", - "'ROLLBACK'", "'ROLLUP'", "'ROUTINE'", "'ROW'", "'ROWS'", "'S3'", "'SAMPLE'", - "'SCHEDULE'", "'SCHEDULER'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SELECT'", - "'SEMI'", "'SERIALIZABLE'", "'SESSION'", "'SESSION_USER'", "'SET'", "'SETS'", - "'SET_SESSION_VARIABLE'", "'SHAPE'", "'SHOW'", "'SIGNED'", "'SKEW'", - "'SMALLINT'", "'SNAPSHOT'", "'SONAME'", "'SPLIT'", "'SQL'", "'SQL_BLOCK_RULE'", - "'STAGE'", "'STAGES'", "'START'", "'STARTS'", "'STATS'", "'STATUS'", - "'STOP'", "'STORAGE'", "'STREAM'", "'STREAMING'", "'STRING'", "'STRUCT'", - "'SUM'", "'SUPERUSER'", "'SWITCH'", "'SYNC'", "'SYSTEM'", "'TABLE'", - "'TABLES'", "'TABLESAMPLE'", "'TABLET'", "'TABLETS'", "'TASK'", "'TASKS'", - "'TEMPORARY'", "'TERMINATED'", "'TEXT'", "'THAN'", "'THEN'", "'TIME'", - "'TIMESTAMP'", "'TINYINT'", "'TO'", "'TRANSACTION'", "'TRASH'", "'TREE'", - "'TRIGGERS'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", "'TYPE_CAST'", - "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNINSTALL'", "'UNION'", - "'UNIQUE'", "'UNLOCK'", "'UNSET'", "'UNSIGNED'", "'UP'", "'UPDATE'", - "'USE'", "'USER'", "'USE_MV'", "'USING'", "'VALUE'", "'VALUES'", "'VARCHAR'", - "'VARIABLE'", "'VARIABLES'", "'VARIANT'", "'VAULT'", "'VAULTS'", "'VERBOSE'", - "'VERSION'", "'VIEW'", "'VIEWS'", "'WARM'", "'WARNINGS'", "'WEEK'", "'WHEN'", - "'WHERE'", "'WHITELIST'", "'WITH'", "'WORK'", "'WORKLOAD'", "'WRITE'", - "'XOR'", "'YEAR'", null, "'<=>'", null, "'<'", null, "'>'", null, "'+'", - "'-'", "'*'", "'/'", "'%'", "'~'", "'&'", "'&&'", "'!'", "'|'", "'||'", - "'^'", "':'", "'->'", "'/*+'", "'*/'", "'/*'", "'@'", "'@@'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "SEMICOLON", "LEFT_PAREN", "RIGHT_PAREN", "COMMA", "DOT", "DOTDOTDOT", - "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "ACCOUNT_LOCK", - "ACCOUNT_UNLOCK", "ACTIONS", "ADD", "ADMIN", "AFTER", "AGG_STATE", "AGGREGATE", - "ALIAS", "ALL", "ALTER", "ANALYZE", "ANALYZED", "AND", "ANTI", "APPEND", - "ARRAY", "AS", "ASC", "AT", "AUTHORS", "AUTO", "AUTO_INCREMENT", "ALWAYS", - "BACKEND", "BACKENDS", "BACKUP", "BEGIN", "BELONG", "BETWEEN", "BIGINT", - "BIN", "BINARY", "BINLOG", "BITAND", "BITMAP", "BITMAP_EMPTY", "BITMAP_UNION", - "BITOR", "BITXOR", "BLOB", "BOOLEAN", "BRIEF", "BROKER", "BUCKETS", "BUILD", - "BUILTIN", "BULK", "BY", "CACHE", "CACHED", "CALL", "CANCEL", "CASE", - "CAST", "CATALOG", "CATALOGS", "CHAIN", "CHAR", "CHARSET", "CHECK", "CLEAN", - "CLUSTER", "CLUSTERS", "COLLATE", "COLLATION", "COLLECT", "COLOCATE", - "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETE", - "COMPRESS_TYPE", "COMPUTE", "CONDITIONS", "CONFIG", "CONNECTION", "CONNECTION_ID", - "CONSISTENT", "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CONVERT_LSC", - "COPY", "COUNT", "CREATE", "CREATION", "CRON", "CROSS", "CUBE", "CURRENT", - "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", - "DATETIMEV2", "DATEV2", "DATETIMEV1", "DATEV1", "DAY", "DECIMAL", "DECIMALV2", - "DECIMALV3", "DECOMMISSION", "DEFAULT", "DEFERRED", "DELETE", "DEMAND", - "DESC", "DESCRIBE", "DIAGNOSE", "DIAGNOSIS", "DISK", "DISTINCT", "DISTINCTPC", - "DISTINCTPCSA", "DISTRIBUTED", "DISTRIBUTION", "DIV", "DO", "DORIS_INTERNAL_TABLE_ID", - "DOUBLE", "DROP", "DROPP", "DUAL", "DUMP", "DUPLICATE", "DYNAMIC", "E", - "ELSE", "ENABLE", "ENCRYPTKEY", "ENCRYPTKEYS", "END", "ENDS", "ENGINE", - "ENGINES", "ENTER", "ERRORS", "EVENTS", "EVERY", "EXCEPT", "EXCLUDE", - "EXECUTE", "EXISTS", "EXPIRED", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", - "EXTRACT", "FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FEATURE", "FIELDS", - "FILE", "FILTER", "FIRST", "FLOAT", "FOLLOWER", "FOLLOWING", "FOR", "FOREIGN", - "FORCE", "FORMAT", "FREE", "FROM", "FRONTEND", "FRONTENDS", "FULL", "FUNCTION", - "FUNCTIONS", "GENERATED", "GENERIC", "GLOBAL", "GRANT", "GRANTS", "GRAPH", - "GROUP", "GROUPING", "GROUPS", "HASH", "HAVING", "HDFS", "HELP", "HISTOGRAM", - "HLL", "HLL_UNION", "HOSTNAME", "HOTSPOT", "HOUR", "HUB", "IDENTIFIED", - "IF", "IGNORE", "IMMEDIATE", "IN", "INCREMENTAL", "INDEX", "INDEXES", - "INFILE", "INNER", "INSERT", "INSTALL", "INT", "INTEGER", "INTERMEDIATE", - "INTERSECT", "INTERVAL", "INTO", "INVERTED", "IPV4", "IPV6", "IS", "IS_NOT_NULL_PRED", - "IS_NULL_PRED", "ISNULL", "ISOLATION", "JOB", "JOBS", "JOIN", "JSON", - "JSONB", "KEY", "KEYS", "KILL", "LABEL", "LARGEINT", "LAST", "LATERAL", - "LDAP", "LDAP_ADMIN_PASSWORD", "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", - "LINES", "LINK", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", - "LOCATION", "LOCK", "LOGICAL", "LOW_PRIORITY", "MANUAL", "MAP", "MATCH", - "MATCH_ALL", "MATCH_ANY", "MATCH_PHRASE", "MATCH_PHRASE_EDGE", "MATCH_PHRASE_PREFIX", - "MATCH_REGEXP", "MATCH_NAME", "MATCH_NAME_GLOB", "MATERIALIZED", "MAX", - "MAXVALUE", "MEMO", "MERGE", "MIGRATE", "MIGRATIONS", "MIN", "MINUS", - "MINUTE", "MODIFY", "MONTH", "MTMV", "NAME", "NAMES", "NATURAL", "NEGATIVE", - "NEVER", "NEXT", "NGRAM_BF", "NO", "NO_USE_MV", "NON_NULLABLE", "NOT", - "NULL", "NULLS", "OBSERVER", "OF", "OFFSET", "ON", "ONLY", "OPEN", "OPTIMIZED", - "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "OVERWRITE", "PARAMETER", - "PARSED", "PARTITION", "PARTITIONS", "PASSWORD", "PASSWORD_EXPIRE", "PASSWORD_HISTORY", - "PASSWORD_LOCK_TIME", "PASSWORD_REUSE", "PATH", "PAUSE", "PERCENT", "PERIOD", - "PERMISSIVE", "PHYSICAL", "PI", "PLACEHOLDER", "PLAN", "PLAY", "PRIVILEGES", - "PROCESS", "PLUGIN", "PLUGINS", "POLICY", "PRECEDING", "PREPARE", "PRIMARY", - "PROC", "PROCEDURE", "PROCESSLIST", "PROFILE", "PROPERTIES", "PROPERTY", - "QUANTILE_STATE", "QUANTILE_UNION", "QUERY", "QUEUED", "QUOTA", "QUALIFY", - "QUARTER", "RANDOM", "RANGE", "READ", "REAL", "REBALANCE", "RECENT", - "RECOVER", "RECYCLE", "REFRESH", "REFERENCES", "REGEXP", "RELEASE", "RENAME", - "REPAIR", "REPEATABLE", "REPLACE", "REPLACE_IF_NOT_NULL", "REPLAYER", - "REPLICA", "REPOSITORIES", "REPOSITORY", "RESOURCE", "RESOURCES", "RESTORE", - "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITTEN", "RIGHT", "RLIKE", - "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW", "ROWS", "S3", - "SAMPLE", "SCHEDULE", "SCHEDULER", "SCHEMA", "SCHEMAS", "SECOND", "SELECT", - "SEMI", "SERIALIZABLE", "SESSION", "SESSION_USER", "SET", "SETS", "SET_SESSION_VARIABLE", - "SHAPE", "SHOW", "SIGNED", "SKEW", "SMALLINT", "SNAPSHOT", "SONAME", - "SPLIT", "SQL", "SQL_BLOCK_RULE", "STAGE", "STAGES", "START", "STARTS", - "STATS", "STATUS", "STOP", "STORAGE", "STREAM", "STREAMING", "STRING", - "STRUCT", "SUM", "SUPERUSER", "SWITCH", "SYNC", "SYSTEM", "TABLE", "TABLES", - "TABLESAMPLE", "TABLET", "TABLETS", "TASK", "TASKS", "TEMPORARY", "TERMINATED", - "TEXT", "THAN", "THEN", "TIME", "TIMESTAMP", "TINYINT", "TO", "TRANSACTION", - "TRASH", "TREE", "TRIGGERS", "TRIM", "TRUE", "TRUNCATE", "TYPE", "TYPECAST", - "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNINSTALL", "UNION", "UNIQUE", - "UNLOCK", "UNSET", "UNSIGNED", "UP", "UPDATE", "USE", "USER", "USE_MV", - "USING", "VALUE", "VALUES", "VARCHAR", "VARIABLE", "VARIABLES", "VARIANT", - "VAULT", "VAULTS", "VERBOSE", "VERSION", "VIEW", "VIEWS", "WARM", "WARNINGS", - "WEEK", "WHEN", "WHERE", "WHITELIST", "WITH", "WORK", "WORKLOAD", "WRITE", - "XOR", "YEAR", "EQ", "NSEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", - "SUBTRACT", "ASTERISK", "SLASH", "MOD", "TILDE", "AMPERSAND", "LOGICALAND", - "LOGICALNOT", "PIPE", "DOUBLEPIPES", "HAT", "COLON", "ARROW", "HINT_START", - "HINT_END", "COMMENT_START", "ATSIGN", "DOUBLEATSIGN", "STRING_LITERAL", - "LEADING_STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", - "INTEGER_VALUE", "EXPONENT_VALUE", "DECIMAL_VALUE", "BIGDECIMAL_LITERAL", - "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "FROM_DUAL", "WS", "UNRECOGNIZED" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - /** - * When true, parser should throw ParseExcetion for unclosed bracketed comment. - */ - public boolean has_unclosed_bracketed_comment = false; - - /** - * Verify whether current token is a valid decimal token (which contains dot). - * Returns true if the character that follows the token is not a digit or letter or underscore. - * - * For example: - * For char stream "2.3", "2." is not a valid decimal token, because it is followed by digit '3'. - * For char stream "2.3_", "2.3" is not a valid decimal token, because it is followed by '_'. - * For char stream "2.3W", "2.3" is not a valid decimal token, because it is followed by 'W'. - * For char stream "12.0D 34.E2+0.12 " 12.0D is a valid decimal token because it is followed - * by a space. 34.E2 is a valid decimal token because it is followed by symbol '+' - * which is not a digit or letter or underscore. - */ - public boolean isValidDecimal() { - int nextChar = _input.LA(1); - if (nextChar >= 'A' && nextChar <= 'Z' || nextChar >= '0' && nextChar <= '9' || - nextChar == '_') { - return false; - } else { - return true; - } - } - - /** - * This method will be called when the character stream ends and try to find out the - * unclosed bracketed comment. - * If the method be called, it means the end of the entire character stream match, - * and we set the flag and fail later. - */ - public void markUnclosedComment() { - has_unclosed_bracketed_comment = true; - } - - - public DorisLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "DorisLexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - @Override - public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { - switch (ruleIndex) { - case 544: - BRACKETED_COMMENT_action((RuleContext)_localctx, actionIndex); - break; - } - } - private void BRACKETED_COMMENT_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 0: - markUnclosedComment(); - break; - } - } - @Override - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 534: - return EXPONENT_VALUE_sempred((RuleContext)_localctx, predIndex); - case 535: - return DECIMAL_VALUE_sempred((RuleContext)_localctx, predIndex); - case 536: - return BIGDECIMAL_LITERAL_sempred((RuleContext)_localctx, predIndex); - } - return true; - } - private boolean EXPONENT_VALUE_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return isValidDecimal(); - } - return true; - } - private boolean DECIMAL_VALUE_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 1: - return isValidDecimal(); - } - return true; - } - private boolean BIGDECIMAL_LITERAL_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return isValidDecimal(); - } - return true; - } - - private static final String _serializedATNSegment0 = - "\u0004\u0000\u0220\u149f\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ - "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ - "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ - "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ - "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ - "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ - "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ - "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ - "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ - "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ - "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ - "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+ - "&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002"+ - "+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0002"+ - "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+ - "5\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002"+ - ":\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002"+ - "?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002"+ - "D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002"+ - "I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002"+ - "N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002"+ - "S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002"+ - "X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002"+ - "]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+ - "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+ - "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+ - "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+ - "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+ - "v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002"+ - "{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f"+ - "\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082"+ - "\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085"+ - "\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088"+ - "\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b"+ - "\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e"+ - "\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091"+ - "\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094"+ - "\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097"+ - "\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a"+ - "\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d"+ - "\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0"+ - "\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3"+ - "\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6"+ - "\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9"+ - "\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac"+ - "\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af"+ - "\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2"+ - "\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5"+ - "\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8"+ - "\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb"+ - "\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be"+ - "\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1"+ - "\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4"+ - "\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7"+ - "\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca"+ - "\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd"+ - "\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0"+ - "\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3"+ - "\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6"+ - "\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9"+ - "\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc"+ - "\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df"+ - "\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2"+ - "\u0002\u00e3\u0007\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5"+ - "\u0002\u00e6\u0007\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8"+ - "\u0002\u00e9\u0007\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb"+ - "\u0002\u00ec\u0007\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee"+ - "\u0002\u00ef\u0007\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1"+ - "\u0002\u00f2\u0007\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4"+ - "\u0002\u00f5\u0007\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7"+ - "\u0002\u00f8\u0007\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa"+ - "\u0002\u00fb\u0007\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd"+ - "\u0002\u00fe\u0007\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100"+ - "\u0002\u0101\u0007\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103"+ - "\u0002\u0104\u0007\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106"+ - "\u0002\u0107\u0007\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109"+ - "\u0002\u010a\u0007\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c"+ - "\u0002\u010d\u0007\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f"+ - "\u0002\u0110\u0007\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112"+ - "\u0002\u0113\u0007\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115"+ - "\u0002\u0116\u0007\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118"+ - "\u0002\u0119\u0007\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b"+ - "\u0002\u011c\u0007\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e"+ - "\u0002\u011f\u0007\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121"+ - "\u0002\u0122\u0007\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124"+ - "\u0002\u0125\u0007\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127"+ - "\u0002\u0128\u0007\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a"+ - "\u0002\u012b\u0007\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d"+ - "\u0002\u012e\u0007\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130"+ - "\u0002\u0131\u0007\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133"+ - "\u0002\u0134\u0007\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136"+ - "\u0002\u0137\u0007\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139"+ - "\u0002\u013a\u0007\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c"+ - "\u0002\u013d\u0007\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f"+ - "\u0002\u0140\u0007\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142"+ - "\u0002\u0143\u0007\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145"+ - "\u0002\u0146\u0007\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148"+ - "\u0002\u0149\u0007\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b"+ - "\u0002\u014c\u0007\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e"+ - "\u0002\u014f\u0007\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151"+ - "\u0002\u0152\u0007\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154"+ - "\u0002\u0155\u0007\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157"+ - "\u0002\u0158\u0007\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a"+ - "\u0002\u015b\u0007\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d"+ - "\u0002\u015e\u0007\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160"+ - "\u0002\u0161\u0007\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163"+ - "\u0002\u0164\u0007\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166"+ - "\u0002\u0167\u0007\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169"+ - "\u0002\u016a\u0007\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c"+ - "\u0002\u016d\u0007\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f"+ - "\u0002\u0170\u0007\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172"+ - "\u0002\u0173\u0007\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175"+ - "\u0002\u0176\u0007\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178"+ - "\u0002\u0179\u0007\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b"+ - "\u0002\u017c\u0007\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e"+ - "\u0002\u017f\u0007\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181"+ - "\u0002\u0182\u0007\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184"+ - "\u0002\u0185\u0007\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187"+ - "\u0002\u0188\u0007\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a"+ - "\u0002\u018b\u0007\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d"+ - "\u0002\u018e\u0007\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190"+ - "\u0002\u0191\u0007\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193"+ - "\u0002\u0194\u0007\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196"+ - "\u0002\u0197\u0007\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199"+ - "\u0002\u019a\u0007\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c"+ - "\u0002\u019d\u0007\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f"+ - "\u0002\u01a0\u0007\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2"+ - "\u0002\u01a3\u0007\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5"+ - "\u0002\u01a6\u0007\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8"+ - "\u0002\u01a9\u0007\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab"+ - "\u0002\u01ac\u0007\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae"+ - "\u0002\u01af\u0007\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1"+ - "\u0002\u01b2\u0007\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4"+ - "\u0002\u01b5\u0007\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7"+ - "\u0002\u01b8\u0007\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba"+ - "\u0002\u01bb\u0007\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd"+ - "\u0002\u01be\u0007\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0"+ - "\u0002\u01c1\u0007\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3"+ - "\u0002\u01c4\u0007\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6"+ - "\u0002\u01c7\u0007\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9"+ - "\u0002\u01ca\u0007\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc"+ - "\u0002\u01cd\u0007\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf"+ - "\u0002\u01d0\u0007\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2"+ - "\u0002\u01d3\u0007\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5"+ - "\u0002\u01d6\u0007\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8"+ - "\u0002\u01d9\u0007\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db"+ - "\u0002\u01dc\u0007\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de"+ - "\u0002\u01df\u0007\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1"+ - "\u0002\u01e2\u0007\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4"+ - "\u0002\u01e5\u0007\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7"+ - "\u0002\u01e8\u0007\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea"+ - "\u0002\u01eb\u0007\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed"+ - "\u0002\u01ee\u0007\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0"+ - "\u0002\u01f1\u0007\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3"+ - "\u0002\u01f4\u0007\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6"+ - "\u0002\u01f7\u0007\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9"+ - "\u0002\u01fa\u0007\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc"+ - "\u0002\u01fd\u0007\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff"+ - "\u0002\u0200\u0007\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202"+ - "\u0002\u0203\u0007\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205"+ - "\u0002\u0206\u0007\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208"+ - "\u0002\u0209\u0007\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b"+ - "\u0002\u020c\u0007\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e"+ - "\u0002\u020f\u0007\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211"+ - "\u0002\u0212\u0007\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214"+ - "\u0002\u0215\u0007\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217"+ - "\u0002\u0218\u0007\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a"+ - "\u0002\u021b\u0007\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d"+ - "\u0002\u021e\u0007\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220"+ - "\u0002\u0221\u0007\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223"+ - "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007"+ - "\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001"+ - "\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001"+ - "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+ - "\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ - "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ - "\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001"+ - "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001"+ - "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ - "\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+ - "\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001"+ - "\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ - "\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+ - "\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+ - "\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001"+ - "\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001"+ - "\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+ - "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 "+ - "\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001"+ - "!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+ - "\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001%\u0001"+ - "%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ - "&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+ - "\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001)\u0001)\u0001"+ - ")\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001"+ - "+\u0001+\u0001+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001"+ - ",\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ - ".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+ - "/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00010\u0001"+ - "0\u00010\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u0001"+ - "2\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ - "3\u00013\u00014\u00014\u00014\u00014\u00014\u00014\u00015\u00015\u0001"+ - "5\u00015\u00015\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00016\u00016\u00017\u00017\u00017\u00017\u00017\u00017\u00018\u0001"+ - "8\u00018\u00018\u00018\u00018\u00018\u00018\u00019\u00019\u00019\u0001"+ - "9\u00019\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+ - ";\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001=\u0001=\u0001"+ - "=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ - "?\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+ - "A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001"+ - "D\u0001D\u0001D\u0001D\u0001D\u0001D\u0003D\u0606\bD\u0001E\u0001E\u0001"+ - "E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001"+ - "F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001H\u0001H\u0001"+ - "H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001"+ - "I\u0001I\u0001I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+ - "J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001"+ - "K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001"+ - "L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+ - "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+ - "P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+ - "R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+ - "S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001S\u0001T\u0001T\u0001"+ - "T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001"+ - "U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001"+ - "U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001"+ - "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+ - "X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001"+ - "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001"+ - "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ - "Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+ - "[\u0001[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ - "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001]\u0001]"+ - "\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]\u0001^\u0001^\u0001"+ - "^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001"+ - "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+ - "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+ - "_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+ - "_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001"+ - "a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+ - "c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001"+ - "d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+ - "f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001g\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ - "h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001i\u0001"+ - "i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0001"+ - "i\u0001i\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001"+ - "j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"+ - "l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ - "p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+ - "q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001"+ - "s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+ - "w\u0001w\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+ - "x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ - "y\u0001y\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001z\u0001"+ - "z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001"+ - "{\u0001{\u0001{\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001"+ - "|\u0001|\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001"+ - "~\u0001~\u0001~\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+ - "\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080"+ - "\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0081"+ - "\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081"+ - "\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ - "\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+ - "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084"+ - "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ - "\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+ - "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+ - "\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+ - "\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+ - "\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ - "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ - "\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088"+ - "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088"+ - "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+ - "\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c"+ - "\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008d"+ - "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e"+ - "\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008f\u0001\u008f"+ - "\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090"+ - "\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+ - "\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+ - "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+ - "\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094"+ - "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095"+ - "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096"+ - "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096"+ - "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097"+ - "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097"+ - "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098\u0001\u0098\u0001\u0098"+ - "\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099"+ - "\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+ - "\u0001\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+ - "\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c"+ - "\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d"+ - "\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009e\u0001\u009e"+ - "\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009f"+ - "\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u00a0"+ - "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+ - "\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+ - "\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2"+ - "\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3"+ - "\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4"+ - "\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+ - "\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+ - "\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ - "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7"+ - "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ - "\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8"+ - "\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0001\u00a9"+ - "\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9"+ - "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ - "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ - "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+ - "\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00ab\u0001\u00ab"+ - "\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001\u00ac"+ - "\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad"+ - "\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae"+ - "\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae"+ - "\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00b0"+ - "\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+ - "\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+ - "\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+ - "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+ - "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ - "\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4"+ - "\u0001\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6"+ - "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6"+ - "\u0001\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+ - "\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8"+ - "\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9"+ - "\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba"+ - "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ - "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ - "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+ - "\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+ - "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf"+ - "\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+ - "\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1"+ - "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1"+ - "\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+ - "\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+ - "\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+ - "\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ - "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6"+ - "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7"+ - "\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+ - "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+ - "\u0001\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9"+ - "\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca"+ - "\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb"+ - "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd"+ - "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+ - "\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+ - "\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ - "\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0"+ - "\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ - "\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1"+ - "\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2"+ - "\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ - "\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+ - "\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6"+ - "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d7\u0001\u00d7"+ - "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+ - "\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9"+ - "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9"+ - "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da"+ - "\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db"+ - "\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+ - "\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+ - "\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ - "\u0001\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+ - "\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001\u00df\u0001\u00df"+ - "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00e0"+ - "\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+ - "\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2"+ - "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+ - "\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+ - "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+ - "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001\u00e4"+ - "\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4"+ - "\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5"+ - "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+ - "\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7"+ - "\u0001\u00e7\u0001\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8"+ - "\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001\u00ea"+ - "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ - "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea"+ - "\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb"+ - "\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb"+ - "\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00ec\u0001\u00ec"+ - "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ed"+ - "\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+ - "\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee\u0001\u00ee"+ - "\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef"+ - "\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f1"+ - "\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2"+ - "\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3"+ - "\u0001\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4"+ - "\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5"+ - "\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+ - "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7"+ - "\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f8"+ - "\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9"+ - "\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa"+ - "\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ - "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ - "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb"+ - "\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc"+ - "\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd"+ - "\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe"+ - "\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff"+ - "\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100"+ - "\u0001\u0100\u0001\u0100\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+ - "\u0001\u0101\u0001\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102"+ - "\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103"+ - "\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0105"+ - "\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0106"+ - "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106"+ - "\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107\u0001\u0107"+ - "\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+ - "\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+ - "\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108"+ - "\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001\u0109"+ - "\u0001\u0109\u0001\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a"+ - "\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b"+ - "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b"+ - "\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c"+ - "\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+ - "\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e"+ - "\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010f\u0001\u010f"+ - "\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f"+ - "\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110"+ - "\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110"+ - "\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+ - "\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+ - "\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+ - "\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+ - "\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+ - "\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ - "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ - "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+ - "\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0001\u0114"+ - "\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114"+ - "\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0115\u0001\u0115"+ - "\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115"+ - "\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116"+ - "\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+ - "\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+ - "\u0001\u0116\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117"+ - "\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117"+ - "\u0001\u0117\u0001\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118"+ - "\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119"+ - "\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u011a\u0001\u011a\u0001\u011a"+ - "\u0001\u011a\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b"+ - "\u0001\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+ - "\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011d\u0001\u011d"+ - "\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d"+ - "\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e\u0001\u011e"+ - "\u0001\u011e\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f"+ - "\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+ - "\u0001\u0120\u0001\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+ - "\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0122\u0001\u0122\u0001\u0122"+ - "\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001\u0123\u0001\u0123"+ - "\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124"+ - "\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125"+ - "\u0001\u0125\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+ - "\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001\u0127"+ - "\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+ - "\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+ - "\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u012a"+ - "\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+ - "\u0001\u012a\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012c"+ - "\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+ - "\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012d\u0001\u012d\u0001\u012d"+ - "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+ - "\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012e\u0001\u012e"+ - "\u0001\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f"+ - "\u0001\u012f\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130"+ - "\u0001\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131"+ - "\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0132\u0001\u0132"+ - "\u0001\u0132\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133"+ - "\u0001\u0133\u0001\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135"+ - "\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0136\u0001\u0136"+ - "\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0137\u0001\u0137\u0001\u0137"+ - "\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137"+ - "\u0001\u0137\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0139\u0001\u0139"+ - "\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u013a\u0001\u013a"+ - "\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013b\u0001\u013b"+ - "\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+ - "\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013d"+ - "\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+ - "\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013e\u0001\u013e\u0001\u013e"+ - "\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e"+ - "\u0001\u013e\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f"+ - "\u0001\u013f\u0001\u013f\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+ - "\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+ - "\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+ - "\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0142"+ - "\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142"+ - "\u0001\u0142\u0001\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ - "\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ - "\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+ - "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+ - "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+ - "\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0145"+ - "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ - "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ - "\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+ - "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+ - "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+ - "\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147"+ - "\u0001\u0147\u0001\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+ - "\u0001\u0148\u0001\u0148\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149"+ - "\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a"+ - "\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014b"+ - "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+ - "\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014c\u0001\u014c"+ - "\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+ - "\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014e\u0001\u014e"+ - "\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u0150"+ - "\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001\u0151"+ - "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151"+ - "\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001\u0152"+ - "\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0153"+ - "\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+ - "\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+ - "\u0001\u0154\u0001\u0154\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155"+ - "\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0156\u0001\u0156\u0001\u0156"+ - "\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156"+ - "\u0001\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157"+ - "\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0158\u0001\u0158\u0001\u0158"+ - "\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0159"+ - "\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u015a\u0001\u015a"+ - "\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a"+ - "\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+ - "\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+ - "\u0001\u015b\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+ - "\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015d\u0001\u015d"+ - "\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d"+ - "\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015e\u0001\u015e\u0001\u015e"+ - "\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+ - "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+ - "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+ - "\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u0160\u0001\u0160\u0001\u0160"+ - "\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ - "\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+ - "\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161"+ - "\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162"+ - "\u0001\u0162\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163"+ - "\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+ - "\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0165\u0001\u0165\u0001\u0165"+ - "\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0166"+ - "\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166"+ - "\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167"+ - "\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169"+ - "\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u016a\u0001\u016a"+ - "\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a"+ - "\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b"+ - "\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016c\u0001\u016c\u0001\u016c"+ - "\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016d"+ - "\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d"+ - "\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e"+ - "\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f"+ - "\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f"+ - "\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170"+ - "\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0171\u0001\u0171\u0001\u0171"+ - "\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0172"+ - "\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172"+ - "\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+ - "\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+ - "\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+ - "\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175"+ - "\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+ - "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+ - "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+ - "\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0177\u0001\u0177"+ - "\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177"+ - "\u0001\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+ - "\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179"+ - "\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+ - "\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u017a\u0001\u017a"+ - "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+ - "\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017b\u0001\u017b\u0001\u017b"+ - "\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+ - "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c"+ - "\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d"+ - "\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+ - "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ - "\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+ - "\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f"+ - "\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180"+ - "\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181"+ - "\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0182\u0001\u0182"+ - "\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182"+ - "\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183"+ - "\u0001\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184"+ - "\u0001\u0184\u0001\u0184\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185"+ - "\u0001\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186\u0001\u0186"+ - "\u0001\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187"+ - "\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188"+ - "\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189"+ - "\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189"+ - "\u0001\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018b"+ - "\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c"+ - "\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001\u018d"+ - "\u0001\u018d\u0001\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+ - "\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018f"+ - "\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+ - "\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u0190\u0001\u0190\u0001\u0190"+ - "\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0191\u0001\u0191"+ - "\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+ - "\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192"+ - "\u0001\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+ - "\u0001\u0193\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194"+ - "\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+ - "\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+ - "\u0001\u0195\u0001\u0195\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+ - "\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0197\u0001\u0197"+ - "\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+ - "\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198"+ - "\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199"+ - "\u0001\u0199\u0001\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ - "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ - "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+ - "\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019b"+ - "\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c"+ - "\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019d\u0001\u019d"+ - "\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019e"+ - "\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019f\u0001\u019f"+ - "\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f"+ - "\u0001\u019f\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0"+ - "\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1"+ - "\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a2"+ - "\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3"+ - "\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ - "\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ - "\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+ - "\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5"+ - "\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+ - "\u0001\u01a6\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+ - "\u0001\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8"+ - "\u0001\u01a8\u0001\u01a8\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+ - "\u0001\u01a9\u0001\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa"+ - "\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab"+ - "\u0001\u01ab\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac"+ - "\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ad\u0001\u01ad"+ - "\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ae"+ - "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae"+ - "\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01af\u0001\u01af\u0001\u01af"+ - "\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01b0\u0001\u01b0"+ - "\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b1"+ - "\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b2\u0001\u01b2\u0001\u01b2"+ - "\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+ - "\u0001\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3"+ - "\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+ - "\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5"+ - "\u0001\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+ - "\u0001\u01b6\u0001\u01b6\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+ - "\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8"+ - "\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8"+ - "\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001\u01b9\u0001\u01b9"+ - "\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba"+ - "\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba"+ - "\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bc"+ - "\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bd"+ - "\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd"+ - "\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be"+ - "\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be"+ - "\u0001\u01be\u0001\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf"+ - "\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0"+ - "\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c2"+ - "\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c3\u0001\u01c3"+ - "\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3"+ - "\u0001\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4"+ - "\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5"+ - "\u0001\u01c5\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6"+ - "\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6"+ - "\u0001\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7"+ - "\u0001\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+ - "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+ - "\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca"+ - "\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb"+ - "\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+ - "\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cd\u0001\u01cd"+ - "\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce"+ - "\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+ - "\u0001\u01ce\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf"+ - "\u0001\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0"+ - "\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d1"+ - "\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+ - "\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d2"+ - "\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2"+ - "\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3"+ - "\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4"+ - "\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d5\u0001\u01d5"+ - "\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d6"+ - "\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d7"+ - "\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7"+ - "\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9"+ - "\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+ - "\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01db\u0001\u01db"+ - "\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc"+ - "\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dd\u0001\u01dd"+ - "\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01de\u0001\u01de"+ - "\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01df\u0001\u01df"+ - "\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01e0"+ - "\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0"+ - "\u0001\u01e0\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1"+ - "\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e2\u0001\u01e2"+ - "\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2"+ - "\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3"+ - "\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e4\u0001\u01e4"+ - "\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e5\u0001\u01e5"+ - "\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e6"+ - "\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6"+ - "\u0001\u01e6\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7"+ - "\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8"+ - "\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9"+ - "\u0001\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea"+ - "\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb"+ - "\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01ec\u0001\u01ec"+ - "\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed"+ - "\u0001\u01ed\u0001\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee"+ - "\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef"+ - "\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef"+ - "\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f1"+ - "\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f2\u0001\u01f2"+ - "\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2"+ - "\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3"+ - "\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f5"+ - "\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f6\u0001\u01f6"+ - "\u0001\u01f6\u0003\u01f6\u136e\b\u01f6\u0001\u01f7\u0001\u01f7\u0001\u01f7"+ - "\u0001\u01f7\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0003\u01f8"+ - "\u1378\b\u01f8\u0001\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa\u0001\u01fa"+ - "\u0001\u01fa\u0003\u01fa\u1380\b\u01fa\u0001\u01fb\u0001\u01fb\u0001\u01fc"+ - "\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0003\u01fc\u1388\b\u01fc\u0001\u01fd"+ - "\u0001\u01fd\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001\u01ff\u0001\u0200"+ - "\u0001\u0200\u0001\u0201\u0001\u0201\u0001\u0202\u0001\u0202\u0001\u0203"+ - "\u0001\u0203\u0001\u0204\u0001\u0204\u0001\u0204\u0001\u0205\u0001\u0205"+ - "\u0001\u0206\u0001\u0206\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0208"+ - "\u0001\u0208\u0001\u0209\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a"+ - "\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020c\u0001\u020c"+ - "\u0001\u020c\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e"+ - "\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u0210\u0001\u0210\u0001\u0210"+ - "\u0001\u0210\u0001\u0210\u0001\u0210\u0005\u0210\u13be\b\u0210\n\u0210"+ - "\f\u0210\u13c1\t\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+ - "\u0001\u0210\u0001\u0210\u0001\u0210\u0005\u0210\u13ca\b\u0210\n\u0210"+ - "\f\u0210\u13cd\t\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+ - "\u0001\u0210\u0005\u0210\u13d4\b\u0210\n\u0210\f\u0210\u13d7\t\u0210\u0001"+ - "\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0005\u0210\u13de"+ - "\b\u0210\n\u0210\f\u0210\u13e1\t\u0210\u0001\u0210\u0003\u0210\u13e4\b"+ - "\u0210\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0003\u0211\u13ea"+ - "\b\u0211\u0001\u0212\u0004\u0212\u13ed\b\u0212\u000b\u0212\f\u0212\u13ee"+ - "\u0001\u0212\u0001\u0212\u0001\u0213\u0004\u0213\u13f4\b\u0213\u000b\u0213"+ - "\f\u0213\u13f5\u0001\u0213\u0001\u0213\u0001\u0214\u0004\u0214\u13fb\b"+ - "\u0214\u000b\u0214\f\u0214\u13fc\u0001\u0214\u0001\u0214\u0001\u0215\u0004"+ - "\u0215\u1402\b\u0215\u000b\u0215\f\u0215\u1403\u0001\u0216\u0004\u0216"+ - "\u1407\b\u0216\u000b\u0216\f\u0216\u1408\u0001\u0216\u0001\u0216\u0001"+ - "\u0216\u0001\u0216\u0001\u0216\u0001\u0216\u0003\u0216\u1411\b\u0216\u0001"+ - "\u0217\u0001\u0217\u0001\u0217\u0001\u0218\u0004\u0218\u1417\b\u0218\u000b"+ - "\u0218\f\u0218\u1418\u0001\u0218\u0003\u0218\u141c\b\u0218\u0001\u0218"+ - "\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0003\u0218\u1423\b\u0218"+ - "\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0003\u0218"+ - "\u142a\b\u0218\u0001\u0219\u0001\u0219\u0001\u0219\u0004\u0219\u142f\b"+ - "\u0219\u000b\u0219\f\u0219\u1430\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+ - "\u021a\u0005\u021a\u1437\b\u021a\n\u021a\f\u021a\u143a\t\u021a\u0001\u021a"+ - "\u0001\u021a\u0001\u021b\u0004\u021b\u143f\b\u021b\u000b\u021b\f\u021b"+ - "\u1440\u0001\u021b\u0001\u021b\u0005\u021b\u1445\b\u021b\n\u021b\f\u021b"+ - "\u1448\t\u021b\u0001\u021b\u0001\u021b\u0004\u021b\u144c\b\u021b\u000b"+ - "\u021b\f\u021b\u144d\u0003\u021b\u1450\b\u021b\u0001\u021c\u0001\u021c"+ - "\u0003\u021c\u1454\b\u021c\u0001\u021c\u0004\u021c\u1457\b\u021c\u000b"+ - "\u021c\f\u021c\u1458\u0001\u021d\u0001\u021d\u0001\u021e\u0001\u021e\u0001"+ - "\u021e\u0001\u021e\u0003\u021e\u1461\b\u021e\u0001\u021f\u0001\u021f\u0001"+ - "\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0005\u021f\u1469\b\u021f\n"+ - "\u021f\f\u021f\u146c\t\u021f\u0001\u021f\u0003\u021f\u146f\b\u021f\u0001"+ - "\u021f\u0003\u021f\u1472\b\u021f\u0001\u021f\u0001\u021f\u0001\u0220\u0001"+ - "\u0220\u0001\u0220\u0005\u0220\u1479\b\u0220\n\u0220\f\u0220\u147c\t\u0220"+ - "\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0003\u0220\u1482\b\u0220"+ - "\u0001\u0220\u0001\u0220\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221"+ - "\u0001\u0221\u0001\u0221\u0004\u0221\u148c\b\u0221\u000b\u0221\f\u0221"+ - "\u148d\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001"+ - "\u0221\u0001\u0221\u0001\u0222\u0004\u0222\u1498\b\u0222\u000b\u0222\f"+ - "\u0222\u1499\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u147a"+ - "\u0000\u0224\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b"+ - "\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b"+ - "\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016"+ - "-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\""+ - "E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e3g4i5k6m7o8q9s:u;w}?\u007f@\u0081"+ - "A\u0083B\u0085C\u0087D\u0089E\u008bF\u008dG\u008fH\u0091I\u0093J\u0095"+ - "K\u0097L\u0099M\u009bN\u009dO\u009fP\u00a1Q\u00a3R\u00a5S\u00a7T\u00a9"+ - "U\u00abV\u00adW\u00afX\u00b1Y\u00b3Z\u00b5[\u00b7\\\u00b9]\u00bb^\u00bd"+ - "_\u00bf`\u00c1a\u00c3b\u00c5c\u00c7d\u00c9e\u00cbf\u00cdg\u00cfh\u00d1"+ - "i\u00d3j\u00d5k\u00d7l\u00d9m\u00dbn\u00ddo\u00dfp\u00e1q\u00e3r\u00e5"+ - "s\u00e7t\u00e9u\u00ebv\u00edw\u00efx\u00f1y\u00f3z\u00f5{\u00f7|\u00f9"+ - "}\u00fb~\u00fd\u007f\u00ff\u0080\u0101\u0081\u0103\u0082\u0105\u0083\u0107"+ - "\u0084\u0109\u0085\u010b\u0086\u010d\u0087\u010f\u0088\u0111\u0089\u0113"+ - "\u008a\u0115\u008b\u0117\u008c\u0119\u008d\u011b\u008e\u011d\u008f\u011f"+ - "\u0090\u0121\u0091\u0123\u0092\u0125\u0093\u0127\u0094\u0129\u0095\u012b"+ - "\u0096\u012d\u0097\u012f\u0098\u0131\u0099\u0133\u009a\u0135\u009b\u0137"+ - "\u009c\u0139\u009d\u013b\u009e\u013d\u009f\u013f\u00a0\u0141\u00a1\u0143"+ - "\u00a2\u0145\u00a3\u0147\u00a4\u0149\u00a5\u014b\u00a6\u014d\u00a7\u014f"+ - "\u00a8\u0151\u00a9\u0153\u00aa\u0155\u00ab\u0157\u00ac\u0159\u00ad\u015b"+ - "\u00ae\u015d\u00af\u015f\u00b0\u0161\u00b1\u0163\u00b2\u0165\u00b3\u0167"+ - "\u00b4\u0169\u00b5\u016b\u00b6\u016d\u00b7\u016f\u00b8\u0171\u00b9\u0173"+ - "\u00ba\u0175\u00bb\u0177\u00bc\u0179\u00bd\u017b\u00be\u017d\u00bf\u017f"+ - "\u00c0\u0181\u00c1\u0183\u00c2\u0185\u00c3\u0187\u00c4\u0189\u00c5\u018b"+ - "\u00c6\u018d\u00c7\u018f\u00c8\u0191\u00c9\u0193\u00ca\u0195\u00cb\u0197"+ - "\u00cc\u0199\u00cd\u019b\u00ce\u019d\u00cf\u019f\u00d0\u01a1\u00d1\u01a3"+ - "\u00d2\u01a5\u00d3\u01a7\u00d4\u01a9\u00d5\u01ab\u00d6\u01ad\u00d7\u01af"+ - "\u00d8\u01b1\u00d9\u01b3\u00da\u01b5\u00db\u01b7\u00dc\u01b9\u00dd\u01bb"+ - "\u00de\u01bd\u00df\u01bf\u00e0\u01c1\u00e1\u01c3\u00e2\u01c5\u00e3\u01c7"+ - "\u00e4\u01c9\u00e5\u01cb\u00e6\u01cd\u00e7\u01cf\u00e8\u01d1\u00e9\u01d3"+ - "\u00ea\u01d5\u00eb\u01d7\u00ec\u01d9\u00ed\u01db\u00ee\u01dd\u00ef\u01df"+ - "\u00f0\u01e1\u00f1\u01e3\u00f2\u01e5\u00f3\u01e7\u00f4\u01e9\u00f5\u01eb"+ - "\u00f6\u01ed\u00f7\u01ef\u00f8\u01f1\u00f9\u01f3\u00fa\u01f5\u00fb\u01f7"+ - "\u00fc\u01f9\u00fd\u01fb\u00fe\u01fd\u00ff\u01ff\u0100\u0201\u0101\u0203"+ - "\u0102\u0205\u0103\u0207\u0104\u0209\u0105\u020b\u0106\u020d\u0107\u020f"+ - "\u0108\u0211\u0109\u0213\u010a\u0215\u010b\u0217\u010c\u0219\u010d\u021b"+ - "\u010e\u021d\u010f\u021f\u0110\u0221\u0111\u0223\u0112\u0225\u0113\u0227"+ - "\u0114\u0229\u0115\u022b\u0116\u022d\u0117\u022f\u0118\u0231\u0119\u0233"+ - "\u011a\u0235\u011b\u0237\u011c\u0239\u011d\u023b\u011e\u023d\u011f\u023f"+ - "\u0120\u0241\u0121\u0243\u0122\u0245\u0123\u0247\u0124\u0249\u0125\u024b"+ - "\u0126\u024d\u0127\u024f\u0128\u0251\u0129\u0253\u012a\u0255\u012b\u0257"+ - "\u012c\u0259\u012d\u025b\u012e\u025d\u012f\u025f\u0130\u0261\u0131\u0263"+ - "\u0132\u0265\u0133\u0267\u0134\u0269\u0135\u026b\u0136\u026d\u0137\u026f"+ - "\u0138\u0271\u0139\u0273\u013a\u0275\u013b\u0277\u013c\u0279\u013d\u027b"+ - "\u013e\u027d\u013f\u027f\u0140\u0281\u0141\u0283\u0142\u0285\u0143\u0287"+ - "\u0144\u0289\u0145\u028b\u0146\u028d\u0147\u028f\u0148\u0291\u0149\u0293"+ - "\u014a\u0295\u014b\u0297\u014c\u0299\u014d\u029b\u014e\u029d\u014f\u029f"+ - "\u0150\u02a1\u0151\u02a3\u0152\u02a5\u0153\u02a7\u0154\u02a9\u0155\u02ab"+ - "\u0156\u02ad\u0157\u02af\u0158\u02b1\u0159\u02b3\u015a\u02b5\u015b\u02b7"+ - "\u015c\u02b9\u015d\u02bb\u015e\u02bd\u015f\u02bf\u0160\u02c1\u0161\u02c3"+ - "\u0162\u02c5\u0163\u02c7\u0164\u02c9\u0165\u02cb\u0166\u02cd\u0167\u02cf"+ - "\u0168\u02d1\u0169\u02d3\u016a\u02d5\u016b\u02d7\u016c\u02d9\u016d\u02db"+ - "\u016e\u02dd\u016f\u02df\u0170\u02e1\u0171\u02e3\u0172\u02e5\u0173\u02e7"+ - "\u0174\u02e9\u0175\u02eb\u0176\u02ed\u0177\u02ef\u0178\u02f1\u0179\u02f3"+ - "\u017a\u02f5\u017b\u02f7\u017c\u02f9\u017d\u02fb\u017e\u02fd\u017f\u02ff"+ - "\u0180\u0301\u0181\u0303\u0182\u0305\u0183\u0307\u0184\u0309\u0185\u030b"+ - "\u0186\u030d\u0187\u030f\u0188\u0311\u0189\u0313\u018a\u0315\u018b\u0317"+ - "\u018c\u0319\u018d\u031b\u018e\u031d\u018f\u031f\u0190\u0321\u0191\u0323"+ - "\u0192\u0325\u0193\u0327\u0194\u0329\u0195\u032b\u0196\u032d\u0197\u032f"+ - "\u0198\u0331\u0199\u0333\u019a\u0335\u019b\u0337\u019c\u0339\u019d\u033b"+ - "\u019e\u033d\u019f\u033f\u01a0\u0341\u01a1\u0343\u01a2\u0345\u01a3\u0347"+ - "\u01a4\u0349\u01a5\u034b\u01a6\u034d\u01a7\u034f\u01a8\u0351\u01a9\u0353"+ - "\u01aa\u0355\u01ab\u0357\u01ac\u0359\u01ad\u035b\u01ae\u035d\u01af\u035f"+ - "\u01b0\u0361\u01b1\u0363\u01b2\u0365\u01b3\u0367\u01b4\u0369\u01b5\u036b"+ - "\u01b6\u036d\u01b7\u036f\u01b8\u0371\u01b9\u0373\u01ba\u0375\u01bb\u0377"+ - "\u01bc\u0379\u01bd\u037b\u01be\u037d\u01bf\u037f\u01c0\u0381\u01c1\u0383"+ - "\u01c2\u0385\u01c3\u0387\u01c4\u0389\u01c5\u038b\u01c6\u038d\u01c7\u038f"+ - "\u01c8\u0391\u01c9\u0393\u01ca\u0395\u01cb\u0397\u01cc\u0399\u01cd\u039b"+ - "\u01ce\u039d\u01cf\u039f\u01d0\u03a1\u01d1\u03a3\u01d2\u03a5\u01d3\u03a7"+ - "\u01d4\u03a9\u01d5\u03ab\u01d6\u03ad\u01d7\u03af\u01d8\u03b1\u01d9\u03b3"+ - "\u01da\u03b5\u01db\u03b7\u01dc\u03b9\u01dd\u03bb\u01de\u03bd\u01df\u03bf"+ - "\u01e0\u03c1\u01e1\u03c3\u01e2\u03c5\u01e3\u03c7\u01e4\u03c9\u01e5\u03cb"+ - "\u01e6\u03cd\u01e7\u03cf\u01e8\u03d1\u01e9\u03d3\u01ea\u03d5\u01eb\u03d7"+ - "\u01ec\u03d9\u01ed\u03db\u01ee\u03dd\u01ef\u03df\u01f0\u03e1\u01f1\u03e3"+ - "\u01f2\u03e5\u01f3\u03e7\u01f4\u03e9\u01f5\u03eb\u01f6\u03ed\u01f7\u03ef"+ - "\u01f8\u03f1\u01f9\u03f3\u01fa\u03f5\u01fb\u03f7\u01fc\u03f9\u01fd\u03fb"+ - "\u01fe\u03fd\u01ff\u03ff\u0200\u0401\u0201\u0403\u0202\u0405\u0203\u0407"+ - "\u0204\u0409\u0205\u040b\u0206\u040d\u0207\u040f\u0208\u0411\u0209\u0413"+ - "\u020a\u0415\u020b\u0417\u020c\u0419\u020d\u041b\u020e\u041d\u020f\u041f"+ - "\u0210\u0421\u0211\u0423\u0212\u0425\u0213\u0427\u0214\u0429\u0215\u042b"+ - "\u0216\u042d\u0217\u042f\u0218\u0431\u0219\u0433\u021a\u0435\u021b\u0437"+ - "\u0000\u0439\u0000\u043b\u0000\u043d\u0000\u043f\u021c\u0441\u021d\u0443"+ - "\u021e\u0445\u021f\u0447\u0220\u0001\u0000\r\u0002\u0000\'\'\\\\\u0002"+ - "\u0000\"\"\\\\\u0001\u0000\'\'\u0001\u0000\"\"\u0001\u0000``\u0002\u0000"+ - "++--\u0001\u000009\u0004\u0000$$AZ__az\u0002\u0000\u0000\u007f\u8000\ud800"+ - "\u8000\udbff\u0001\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00"+ - "\u8000\udfff\u0002\u0000\n\n\r\r\u0003\u0000\t\n\r\r \u14cd\u0000\u0001"+ - "\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+ - "\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+ - "\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+ - "\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000"+ - "\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000"+ - "\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000"+ - "\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000"+ - "\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000"+ - "\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000"+ - "\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001"+ - "\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000"+ - "\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u0000"+ - "5\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001"+ - "\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000"+ - "\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+ - "C\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001"+ - "\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000"+ - "\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000"+ - "Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001"+ - "\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000"+ - "\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000"+ - "_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001"+ - "\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000g\u0001\u0000\u0000"+ - "\u0000\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001\u0000\u0000\u0000\u0000"+ - "m\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000\u0000\u0000q\u0001"+ - "\u0000\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000u\u0001\u0000\u0000"+ - "\u0000\u0000w\u0001\u0000\u0000\u0000\u0000y\u0001\u0000\u0000\u0000\u0000"+ - "{\u0001\u0000\u0000\u0000\u0000}\u0001\u0000\u0000\u0000\u0000\u007f\u0001"+ - "\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000\u0000\u0000\u0083\u0001"+ - "\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000\u0000\u0000\u0087\u0001"+ - "\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000\u0000\u0000\u008b\u0001"+ - "\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000\u0000\u0000\u008f\u0001"+ - "\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000\u0000\u0000\u0093\u0001"+ - "\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000\u0000\u0000\u0097\u0001"+ - "\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000\u0000\u0000\u009b\u0001"+ - "\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000\u0000\u0000\u009f\u0001"+ - "\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000\u0000\u0000\u00a3\u0001"+ - "\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000\u0000\u0000\u00a7\u0001"+ - "\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000\u0000\u0000\u00ab\u0001"+ - "\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000\u0000\u0000\u00af\u0001"+ - "\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000\u0000\u0000\u00b3\u0001"+ - "\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000\u0000\u0000\u00b7\u0001"+ - "\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00bb\u0001"+ - "\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000\u0000\u0000\u00bf\u0001"+ - "\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000\u0000\u0000\u00c3\u0001"+ - "\u0000\u0000\u0000\u0000\u00c5\u0001\u0000\u0000\u0000\u0000\u00c7\u0001"+ - "\u0000\u0000\u0000\u0000\u00c9\u0001\u0000\u0000\u0000\u0000\u00cb\u0001"+ - "\u0000\u0000\u0000\u0000\u00cd\u0001\u0000\u0000\u0000\u0000\u00cf\u0001"+ - "\u0000\u0000\u0000\u0000\u00d1\u0001\u0000\u0000\u0000\u0000\u00d3\u0001"+ - "\u0000\u0000\u0000\u0000\u00d5\u0001\u0000\u0000\u0000\u0000\u00d7\u0001"+ - "\u0000\u0000\u0000\u0000\u00d9\u0001\u0000\u0000\u0000\u0000\u00db\u0001"+ - "\u0000\u0000\u0000\u0000\u00dd\u0001\u0000\u0000\u0000\u0000\u00df\u0001"+ - "\u0000\u0000\u0000\u0000\u00e1\u0001\u0000\u0000\u0000\u0000\u00e3\u0001"+ - "\u0000\u0000\u0000\u0000\u00e5\u0001\u0000\u0000\u0000\u0000\u00e7\u0001"+ - "\u0000\u0000\u0000\u0000\u00e9\u0001\u0000\u0000\u0000\u0000\u00eb\u0001"+ - "\u0000\u0000\u0000\u0000\u00ed\u0001\u0000\u0000\u0000\u0000\u00ef\u0001"+ - "\u0000\u0000\u0000\u0000\u00f1\u0001\u0000\u0000\u0000\u0000\u00f3\u0001"+ - "\u0000\u0000\u0000\u0000\u00f5\u0001\u0000\u0000\u0000\u0000\u00f7\u0001"+ - "\u0000\u0000\u0000\u0000\u00f9\u0001\u0000\u0000\u0000\u0000\u00fb\u0001"+ - "\u0000\u0000\u0000\u0000\u00fd\u0001\u0000\u0000\u0000\u0000\u00ff\u0001"+ - "\u0000\u0000\u0000\u0000\u0101\u0001\u0000\u0000\u0000\u0000\u0103\u0001"+ - "\u0000\u0000\u0000\u0000\u0105\u0001\u0000\u0000\u0000\u0000\u0107\u0001"+ - "\u0000\u0000\u0000\u0000\u0109\u0001\u0000\u0000\u0000\u0000\u010b\u0001"+ - "\u0000\u0000\u0000\u0000\u010d\u0001\u0000\u0000\u0000\u0000\u010f\u0001"+ - "\u0000\u0000\u0000\u0000\u0111\u0001\u0000\u0000\u0000\u0000\u0113\u0001"+ - "\u0000\u0000\u0000\u0000\u0115\u0001\u0000\u0000\u0000\u0000\u0117\u0001"+ - "\u0000\u0000\u0000\u0000\u0119\u0001\u0000\u0000\u0000\u0000\u011b\u0001"+ - "\u0000\u0000\u0000\u0000\u011d\u0001\u0000\u0000\u0000\u0000\u011f\u0001"+ - "\u0000\u0000\u0000\u0000\u0121\u0001\u0000\u0000\u0000\u0000\u0123\u0001"+ - "\u0000\u0000\u0000\u0000\u0125\u0001\u0000\u0000\u0000\u0000\u0127\u0001"+ - "\u0000\u0000\u0000\u0000\u0129\u0001\u0000\u0000\u0000\u0000\u012b\u0001"+ - "\u0000\u0000\u0000\u0000\u012d\u0001\u0000\u0000\u0000\u0000\u012f\u0001"+ - "\u0000\u0000\u0000\u0000\u0131\u0001\u0000\u0000\u0000\u0000\u0133\u0001"+ - "\u0000\u0000\u0000\u0000\u0135\u0001\u0000\u0000\u0000\u0000\u0137\u0001"+ - "\u0000\u0000\u0000\u0000\u0139\u0001\u0000\u0000\u0000\u0000\u013b\u0001"+ - "\u0000\u0000\u0000\u0000\u013d\u0001\u0000\u0000\u0000\u0000\u013f\u0001"+ - "\u0000\u0000\u0000\u0000\u0141\u0001\u0000\u0000\u0000\u0000\u0143\u0001"+ - "\u0000\u0000\u0000\u0000\u0145\u0001\u0000\u0000\u0000\u0000\u0147\u0001"+ - "\u0000\u0000\u0000\u0000\u0149\u0001\u0000\u0000\u0000\u0000\u014b\u0001"+ - "\u0000\u0000\u0000\u0000\u014d\u0001\u0000\u0000\u0000\u0000\u014f\u0001"+ - "\u0000\u0000\u0000\u0000\u0151\u0001\u0000\u0000\u0000\u0000\u0153\u0001"+ - "\u0000\u0000\u0000\u0000\u0155\u0001\u0000\u0000\u0000\u0000\u0157\u0001"+ - "\u0000\u0000\u0000\u0000\u0159\u0001\u0000\u0000\u0000\u0000\u015b\u0001"+ - "\u0000\u0000\u0000\u0000\u015d\u0001\u0000\u0000\u0000\u0000\u015f\u0001"+ - "\u0000\u0000\u0000\u0000\u0161\u0001\u0000\u0000\u0000\u0000\u0163\u0001"+ - "\u0000\u0000\u0000\u0000\u0165\u0001\u0000\u0000\u0000\u0000\u0167\u0001"+ - "\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000\u0000\u0000\u016b\u0001"+ - "\u0000\u0000\u0000\u0000\u016d\u0001\u0000\u0000\u0000\u0000\u016f\u0001"+ - "\u0000\u0000\u0000\u0000\u0171\u0001\u0000\u0000\u0000\u0000\u0173\u0001"+ - "\u0000\u0000\u0000\u0000\u0175\u0001\u0000\u0000\u0000\u0000\u0177\u0001"+ - "\u0000\u0000\u0000\u0000\u0179\u0001\u0000\u0000\u0000\u0000\u017b\u0001"+ - "\u0000\u0000\u0000\u0000\u017d\u0001\u0000\u0000\u0000\u0000\u017f\u0001"+ - "\u0000\u0000\u0000\u0000\u0181\u0001\u0000\u0000\u0000\u0000\u0183\u0001"+ - "\u0000\u0000\u0000\u0000\u0185\u0001\u0000\u0000\u0000\u0000\u0187\u0001"+ - "\u0000\u0000\u0000\u0000\u0189\u0001\u0000\u0000\u0000\u0000\u018b\u0001"+ - "\u0000\u0000\u0000\u0000\u018d\u0001\u0000\u0000\u0000\u0000\u018f\u0001"+ - "\u0000\u0000\u0000\u0000\u0191\u0001\u0000\u0000\u0000\u0000\u0193\u0001"+ - "\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000\u0000\u0000\u0197\u0001"+ - "\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000\u0000\u0000\u019b\u0001"+ - "\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000\u0000\u0000\u019f\u0001"+ - "\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000\u0000\u0000\u01a3\u0001"+ - "\u0000\u0000\u0000\u0000\u01a5\u0001\u0000\u0000\u0000\u0000\u01a7\u0001"+ - "\u0000\u0000\u0000\u0000\u01a9\u0001\u0000\u0000\u0000\u0000\u01ab\u0001"+ - "\u0000\u0000\u0000\u0000\u01ad\u0001\u0000\u0000\u0000\u0000\u01af\u0001"+ - "\u0000\u0000\u0000\u0000\u01b1\u0001\u0000\u0000\u0000\u0000\u01b3\u0001"+ - "\u0000\u0000\u0000\u0000\u01b5\u0001\u0000\u0000\u0000\u0000\u01b7\u0001"+ - "\u0000\u0000\u0000\u0000\u01b9\u0001\u0000\u0000\u0000\u0000\u01bb\u0001"+ - "\u0000\u0000\u0000\u0000\u01bd\u0001\u0000\u0000\u0000\u0000\u01bf\u0001"+ - "\u0000\u0000\u0000\u0000\u01c1\u0001\u0000\u0000\u0000\u0000\u01c3\u0001"+ - "\u0000\u0000\u0000\u0000\u01c5\u0001\u0000\u0000\u0000\u0000\u01c7\u0001"+ - "\u0000\u0000\u0000\u0000\u01c9\u0001\u0000\u0000\u0000\u0000\u01cb\u0001"+ - "\u0000\u0000\u0000\u0000\u01cd\u0001\u0000\u0000\u0000\u0000\u01cf\u0001"+ - "\u0000\u0000\u0000\u0000\u01d1\u0001\u0000\u0000\u0000\u0000\u01d3\u0001"+ - "\u0000\u0000\u0000\u0000\u01d5\u0001\u0000\u0000\u0000\u0000\u01d7\u0001"+ - "\u0000\u0000\u0000\u0000\u01d9\u0001\u0000\u0000\u0000\u0000\u01db\u0001"+ - "\u0000\u0000\u0000\u0000\u01dd\u0001\u0000\u0000\u0000\u0000\u01df\u0001"+ - "\u0000\u0000\u0000\u0000\u01e1\u0001\u0000\u0000\u0000\u0000\u01e3\u0001"+ - "\u0000\u0000\u0000\u0000\u01e5\u0001\u0000\u0000\u0000\u0000\u01e7\u0001"+ - "\u0000\u0000\u0000\u0000\u01e9\u0001\u0000\u0000\u0000\u0000\u01eb\u0001"+ - "\u0000\u0000\u0000\u0000\u01ed\u0001\u0000\u0000\u0000\u0000\u01ef\u0001"+ - "\u0000\u0000\u0000\u0000\u01f1\u0001\u0000\u0000\u0000\u0000\u01f3\u0001"+ - "\u0000\u0000\u0000\u0000\u01f5\u0001\u0000\u0000\u0000\u0000\u01f7\u0001"+ - "\u0000\u0000\u0000\u0000\u01f9\u0001\u0000\u0000\u0000\u0000\u01fb\u0001"+ - "\u0000\u0000\u0000\u0000\u01fd\u0001\u0000\u0000\u0000\u0000\u01ff\u0001"+ - "\u0000\u0000\u0000\u0000\u0201\u0001\u0000\u0000\u0000\u0000\u0203\u0001"+ - "\u0000\u0000\u0000\u0000\u0205\u0001\u0000\u0000\u0000\u0000\u0207\u0001"+ - "\u0000\u0000\u0000\u0000\u0209\u0001\u0000\u0000\u0000\u0000\u020b\u0001"+ - "\u0000\u0000\u0000\u0000\u020d\u0001\u0000\u0000\u0000\u0000\u020f\u0001"+ - "\u0000\u0000\u0000\u0000\u0211\u0001\u0000\u0000\u0000\u0000\u0213\u0001"+ - "\u0000\u0000\u0000\u0000\u0215\u0001\u0000\u0000\u0000\u0000\u0217\u0001"+ - "\u0000\u0000\u0000\u0000\u0219\u0001\u0000\u0000\u0000\u0000\u021b\u0001"+ - "\u0000\u0000\u0000\u0000\u021d\u0001\u0000\u0000\u0000\u0000\u021f\u0001"+ - "\u0000\u0000\u0000\u0000\u0221\u0001\u0000\u0000\u0000\u0000\u0223\u0001"+ - "\u0000\u0000\u0000\u0000\u0225\u0001\u0000\u0000\u0000\u0000\u0227\u0001"+ - "\u0000\u0000\u0000\u0000\u0229\u0001\u0000\u0000\u0000\u0000\u022b\u0001"+ - "\u0000\u0000\u0000\u0000\u022d\u0001\u0000\u0000\u0000\u0000\u022f\u0001"+ - "\u0000\u0000\u0000\u0000\u0231\u0001\u0000\u0000\u0000\u0000\u0233\u0001"+ - "\u0000\u0000\u0000\u0000\u0235\u0001\u0000\u0000\u0000\u0000\u0237\u0001"+ - "\u0000\u0000\u0000\u0000\u0239\u0001\u0000\u0000\u0000\u0000\u023b\u0001"+ - "\u0000\u0000\u0000\u0000\u023d\u0001\u0000\u0000\u0000\u0000\u023f\u0001"+ - "\u0000\u0000\u0000\u0000\u0241\u0001\u0000\u0000\u0000\u0000\u0243\u0001"+ - "\u0000\u0000\u0000\u0000\u0245\u0001\u0000\u0000\u0000\u0000\u0247\u0001"+ - "\u0000\u0000\u0000\u0000\u0249\u0001\u0000\u0000\u0000\u0000\u024b\u0001"+ - "\u0000\u0000\u0000\u0000\u024d\u0001\u0000\u0000\u0000\u0000\u024f\u0001"+ - "\u0000\u0000\u0000\u0000\u0251\u0001\u0000\u0000\u0000\u0000\u0253\u0001"+ - "\u0000\u0000\u0000\u0000\u0255\u0001\u0000\u0000\u0000\u0000\u0257\u0001"+ - "\u0000\u0000\u0000\u0000\u0259\u0001\u0000\u0000\u0000\u0000\u025b\u0001"+ - "\u0000\u0000\u0000\u0000\u025d\u0001\u0000\u0000\u0000\u0000\u025f\u0001"+ - "\u0000\u0000\u0000\u0000\u0261\u0001\u0000\u0000\u0000\u0000\u0263\u0001"+ - "\u0000\u0000\u0000\u0000\u0265\u0001\u0000\u0000\u0000\u0000\u0267\u0001"+ - "\u0000\u0000\u0000\u0000\u0269\u0001\u0000\u0000\u0000\u0000\u026b\u0001"+ - "\u0000\u0000\u0000\u0000\u026d\u0001\u0000\u0000\u0000\u0000\u026f\u0001"+ - "\u0000\u0000\u0000\u0000\u0271\u0001\u0000\u0000\u0000\u0000\u0273\u0001"+ - "\u0000\u0000\u0000\u0000\u0275\u0001\u0000\u0000\u0000\u0000\u0277\u0001"+ - "\u0000\u0000\u0000\u0000\u0279\u0001\u0000\u0000\u0000\u0000\u027b\u0001"+ - "\u0000\u0000\u0000\u0000\u027d\u0001\u0000\u0000\u0000\u0000\u027f\u0001"+ - "\u0000\u0000\u0000\u0000\u0281\u0001\u0000\u0000\u0000\u0000\u0283\u0001"+ - "\u0000\u0000\u0000\u0000\u0285\u0001\u0000\u0000\u0000\u0000\u0287\u0001"+ - "\u0000\u0000\u0000\u0000\u0289\u0001\u0000\u0000\u0000\u0000\u028b\u0001"+ - "\u0000\u0000\u0000\u0000\u028d\u0001\u0000\u0000\u0000\u0000\u028f\u0001"+ - "\u0000\u0000\u0000\u0000\u0291\u0001\u0000\u0000\u0000\u0000\u0293\u0001"+ - "\u0000\u0000\u0000\u0000\u0295\u0001\u0000\u0000\u0000\u0000\u0297\u0001"+ - "\u0000\u0000\u0000\u0000\u0299\u0001\u0000\u0000\u0000\u0000\u029b\u0001"+ - "\u0000\u0000\u0000\u0000\u029d\u0001\u0000\u0000\u0000\u0000\u029f\u0001"+ - "\u0000\u0000\u0000\u0000\u02a1\u0001\u0000\u0000\u0000\u0000\u02a3\u0001"+ - "\u0000\u0000\u0000\u0000\u02a5\u0001\u0000\u0000\u0000\u0000\u02a7\u0001"+ - "\u0000\u0000\u0000\u0000\u02a9\u0001\u0000\u0000\u0000\u0000\u02ab\u0001"+ - "\u0000\u0000\u0000\u0000\u02ad\u0001\u0000\u0000\u0000\u0000\u02af\u0001"+ - "\u0000\u0000\u0000\u0000\u02b1\u0001\u0000\u0000\u0000\u0000\u02b3\u0001"+ - "\u0000\u0000\u0000\u0000\u02b5\u0001\u0000\u0000\u0000\u0000\u02b7\u0001"+ - "\u0000\u0000\u0000\u0000\u02b9\u0001\u0000\u0000\u0000\u0000\u02bb\u0001"+ - "\u0000\u0000\u0000\u0000\u02bd\u0001\u0000\u0000\u0000\u0000\u02bf\u0001"+ - "\u0000\u0000\u0000\u0000\u02c1\u0001\u0000\u0000\u0000\u0000\u02c3\u0001"+ - "\u0000\u0000\u0000\u0000\u02c5\u0001\u0000\u0000\u0000\u0000\u02c7\u0001"+ - "\u0000\u0000\u0000\u0000\u02c9\u0001\u0000\u0000\u0000\u0000\u02cb\u0001"+ - "\u0000\u0000\u0000\u0000\u02cd\u0001\u0000\u0000\u0000\u0000\u02cf\u0001"+ - "\u0000\u0000\u0000\u0000\u02d1\u0001\u0000\u0000\u0000\u0000\u02d3\u0001"+ - "\u0000\u0000\u0000\u0000\u02d5\u0001\u0000\u0000\u0000\u0000\u02d7\u0001"+ - "\u0000\u0000\u0000\u0000\u02d9\u0001\u0000\u0000\u0000\u0000\u02db\u0001"+ - "\u0000\u0000\u0000\u0000\u02dd\u0001\u0000\u0000\u0000\u0000\u02df\u0001"+ - "\u0000\u0000\u0000\u0000\u02e1\u0001\u0000\u0000\u0000\u0000\u02e3\u0001"+ - "\u0000\u0000\u0000\u0000\u02e5\u0001\u0000\u0000\u0000\u0000\u02e7\u0001"+ - "\u0000\u0000\u0000\u0000\u02e9\u0001\u0000\u0000\u0000\u0000\u02eb\u0001"+ - "\u0000\u0000\u0000\u0000\u02ed\u0001\u0000\u0000\u0000\u0000\u02ef\u0001"+ - "\u0000\u0000\u0000\u0000\u02f1\u0001\u0000\u0000\u0000\u0000\u02f3\u0001"+ - "\u0000\u0000\u0000\u0000\u02f5\u0001\u0000\u0000\u0000\u0000\u02f7\u0001"+ - "\u0000\u0000\u0000\u0000\u02f9\u0001\u0000\u0000\u0000\u0000\u02fb\u0001"+ - "\u0000\u0000\u0000\u0000\u02fd\u0001\u0000\u0000\u0000\u0000\u02ff\u0001"+ - "\u0000\u0000\u0000\u0000\u0301\u0001\u0000\u0000\u0000\u0000\u0303\u0001"+ - "\u0000\u0000\u0000\u0000\u0305\u0001\u0000\u0000\u0000\u0000\u0307\u0001"+ - "\u0000\u0000\u0000\u0000\u0309\u0001\u0000\u0000\u0000\u0000\u030b\u0001"+ - "\u0000\u0000\u0000\u0000\u030d\u0001\u0000\u0000\u0000\u0000\u030f\u0001"+ - "\u0000\u0000\u0000\u0000\u0311\u0001\u0000\u0000\u0000\u0000\u0313\u0001"+ - "\u0000\u0000\u0000\u0000\u0315\u0001\u0000\u0000\u0000\u0000\u0317\u0001"+ - "\u0000\u0000\u0000\u0000\u0319\u0001\u0000\u0000\u0000\u0000\u031b\u0001"+ - "\u0000\u0000\u0000\u0000\u031d\u0001\u0000\u0000\u0000\u0000\u031f\u0001"+ - "\u0000\u0000\u0000\u0000\u0321\u0001\u0000\u0000\u0000\u0000\u0323\u0001"+ - "\u0000\u0000\u0000\u0000\u0325\u0001\u0000\u0000\u0000\u0000\u0327\u0001"+ - "\u0000\u0000\u0000\u0000\u0329\u0001\u0000\u0000\u0000\u0000\u032b\u0001"+ - "\u0000\u0000\u0000\u0000\u032d\u0001\u0000\u0000\u0000\u0000\u032f\u0001"+ - "\u0000\u0000\u0000\u0000\u0331\u0001\u0000\u0000\u0000\u0000\u0333\u0001"+ - "\u0000\u0000\u0000\u0000\u0335\u0001\u0000\u0000\u0000\u0000\u0337\u0001"+ - "\u0000\u0000\u0000\u0000\u0339\u0001\u0000\u0000\u0000\u0000\u033b\u0001"+ - "\u0000\u0000\u0000\u0000\u033d\u0001\u0000\u0000\u0000\u0000\u033f\u0001"+ - "\u0000\u0000\u0000\u0000\u0341\u0001\u0000\u0000\u0000\u0000\u0343\u0001"+ - "\u0000\u0000\u0000\u0000\u0345\u0001\u0000\u0000\u0000\u0000\u0347\u0001"+ - "\u0000\u0000\u0000\u0000\u0349\u0001\u0000\u0000\u0000\u0000\u034b\u0001"+ - "\u0000\u0000\u0000\u0000\u034d\u0001\u0000\u0000\u0000\u0000\u034f\u0001"+ - "\u0000\u0000\u0000\u0000\u0351\u0001\u0000\u0000\u0000\u0000\u0353\u0001"+ - "\u0000\u0000\u0000\u0000\u0355\u0001\u0000\u0000\u0000\u0000\u0357\u0001"+ - "\u0000\u0000\u0000\u0000\u0359\u0001\u0000\u0000\u0000\u0000\u035b\u0001"+ - "\u0000\u0000\u0000\u0000\u035d\u0001\u0000\u0000\u0000\u0000\u035f\u0001"+ - "\u0000\u0000\u0000\u0000\u0361\u0001\u0000\u0000\u0000\u0000\u0363\u0001"+ - "\u0000\u0000\u0000\u0000\u0365\u0001\u0000\u0000\u0000\u0000\u0367\u0001"+ - "\u0000\u0000\u0000\u0000\u0369\u0001\u0000\u0000\u0000\u0000\u036b\u0001"+ - "\u0000\u0000\u0000\u0000\u036d\u0001\u0000\u0000\u0000\u0000\u036f\u0001"+ - "\u0000\u0000\u0000\u0000\u0371\u0001\u0000\u0000\u0000\u0000\u0373\u0001"+ - "\u0000\u0000\u0000\u0000\u0375\u0001\u0000\u0000\u0000\u0000\u0377\u0001"+ - "\u0000\u0000\u0000\u0000\u0379\u0001\u0000\u0000\u0000\u0000\u037b\u0001"+ - "\u0000\u0000\u0000\u0000\u037d\u0001\u0000\u0000\u0000\u0000\u037f\u0001"+ - "\u0000\u0000\u0000\u0000\u0381\u0001\u0000\u0000\u0000\u0000\u0383\u0001"+ - "\u0000\u0000\u0000\u0000\u0385\u0001\u0000\u0000\u0000\u0000\u0387\u0001"+ - "\u0000\u0000\u0000\u0000\u0389\u0001\u0000\u0000\u0000\u0000\u038b\u0001"+ - "\u0000\u0000\u0000\u0000\u038d\u0001\u0000\u0000\u0000\u0000\u038f\u0001"+ - "\u0000\u0000\u0000\u0000\u0391\u0001\u0000\u0000\u0000\u0000\u0393\u0001"+ - "\u0000\u0000\u0000\u0000\u0395\u0001\u0000\u0000\u0000\u0000\u0397\u0001"+ - "\u0000\u0000\u0000\u0000\u0399\u0001\u0000\u0000\u0000\u0000\u039b\u0001"+ - "\u0000\u0000\u0000\u0000\u039d\u0001\u0000\u0000\u0000\u0000\u039f\u0001"+ - "\u0000\u0000\u0000\u0000\u03a1\u0001\u0000\u0000\u0000\u0000\u03a3\u0001"+ - "\u0000\u0000\u0000\u0000\u03a5\u0001\u0000\u0000\u0000\u0000\u03a7\u0001"+ - "\u0000\u0000\u0000\u0000\u03a9\u0001\u0000\u0000\u0000\u0000\u03ab\u0001"+ - "\u0000\u0000\u0000\u0000\u03ad\u0001\u0000\u0000\u0000\u0000\u03af\u0001"+ - "\u0000\u0000\u0000\u0000\u03b1\u0001\u0000\u0000\u0000\u0000\u03b3\u0001"+ - "\u0000\u0000\u0000\u0000\u03b5\u0001\u0000\u0000\u0000\u0000\u03b7\u0001"+ - "\u0000\u0000\u0000\u0000\u03b9\u0001\u0000\u0000\u0000\u0000\u03bb\u0001"+ - "\u0000\u0000\u0000\u0000\u03bd\u0001\u0000\u0000\u0000\u0000\u03bf\u0001"+ - "\u0000\u0000\u0000\u0000\u03c1\u0001\u0000\u0000\u0000\u0000\u03c3\u0001"+ - "\u0000\u0000\u0000\u0000\u03c5\u0001\u0000\u0000\u0000\u0000\u03c7\u0001"+ - "\u0000\u0000\u0000\u0000\u03c9\u0001\u0000\u0000\u0000\u0000\u03cb\u0001"+ - "\u0000\u0000\u0000\u0000\u03cd\u0001\u0000\u0000\u0000\u0000\u03cf\u0001"+ - "\u0000\u0000\u0000\u0000\u03d1\u0001\u0000\u0000\u0000\u0000\u03d3\u0001"+ - "\u0000\u0000\u0000\u0000\u03d5\u0001\u0000\u0000\u0000\u0000\u03d7\u0001"+ - "\u0000\u0000\u0000\u0000\u03d9\u0001\u0000\u0000\u0000\u0000\u03db\u0001"+ - "\u0000\u0000\u0000\u0000\u03dd\u0001\u0000\u0000\u0000\u0000\u03df\u0001"+ - "\u0000\u0000\u0000\u0000\u03e1\u0001\u0000\u0000\u0000\u0000\u03e3\u0001"+ - "\u0000\u0000\u0000\u0000\u03e5\u0001\u0000\u0000\u0000\u0000\u03e7\u0001"+ - "\u0000\u0000\u0000\u0000\u03e9\u0001\u0000\u0000\u0000\u0000\u03eb\u0001"+ - "\u0000\u0000\u0000\u0000\u03ed\u0001\u0000\u0000\u0000\u0000\u03ef\u0001"+ - "\u0000\u0000\u0000\u0000\u03f1\u0001\u0000\u0000\u0000\u0000\u03f3\u0001"+ - "\u0000\u0000\u0000\u0000\u03f5\u0001\u0000\u0000\u0000\u0000\u03f7\u0001"+ - "\u0000\u0000\u0000\u0000\u03f9\u0001\u0000\u0000\u0000\u0000\u03fb\u0001"+ - "\u0000\u0000\u0000\u0000\u03fd\u0001\u0000\u0000\u0000\u0000\u03ff\u0001"+ - "\u0000\u0000\u0000\u0000\u0401\u0001\u0000\u0000\u0000\u0000\u0403\u0001"+ - "\u0000\u0000\u0000\u0000\u0405\u0001\u0000\u0000\u0000\u0000\u0407\u0001"+ - "\u0000\u0000\u0000\u0000\u0409\u0001\u0000\u0000\u0000\u0000\u040b\u0001"+ - "\u0000\u0000\u0000\u0000\u040d\u0001\u0000\u0000\u0000\u0000\u040f\u0001"+ - "\u0000\u0000\u0000\u0000\u0411\u0001\u0000\u0000\u0000\u0000\u0413\u0001"+ - "\u0000\u0000\u0000\u0000\u0415\u0001\u0000\u0000\u0000\u0000\u0417\u0001"+ - "\u0000\u0000\u0000\u0000\u0419\u0001\u0000\u0000\u0000\u0000\u041b\u0001"+ - "\u0000\u0000\u0000\u0000\u041d\u0001\u0000\u0000\u0000\u0000\u041f\u0001"+ - "\u0000\u0000\u0000\u0000\u0421\u0001\u0000\u0000\u0000\u0000\u0423\u0001"+ - "\u0000\u0000\u0000\u0000\u0425\u0001\u0000\u0000\u0000\u0000\u0427\u0001"+ - "\u0000\u0000\u0000\u0000\u0429\u0001\u0000\u0000\u0000\u0000\u042b\u0001"+ - "\u0000\u0000\u0000\u0000\u042d\u0001\u0000\u0000\u0000\u0000\u042f\u0001"+ - "\u0000\u0000\u0000\u0000\u0431\u0001\u0000\u0000\u0000\u0000\u0433\u0001"+ - "\u0000\u0000\u0000\u0000\u0435\u0001\u0000\u0000\u0000\u0000\u043f\u0001"+ - "\u0000\u0000\u0000\u0000\u0441\u0001\u0000\u0000\u0000\u0000\u0443\u0001"+ - "\u0000\u0000\u0000\u0000\u0445\u0001\u0000\u0000\u0000\u0000\u0447\u0001"+ - "\u0000\u0000\u0000\u0001\u0449\u0001\u0000\u0000\u0000\u0003\u044b\u0001"+ - "\u0000\u0000\u0000\u0005\u044d\u0001\u0000\u0000\u0000\u0007\u044f\u0001"+ - "\u0000\u0000\u0000\t\u0451\u0001\u0000\u0000\u0000\u000b\u0453\u0001\u0000"+ - "\u0000\u0000\r\u0457\u0001\u0000\u0000\u0000\u000f\u0459\u0001\u0000\u0000"+ - "\u0000\u0011\u045b\u0001\u0000\u0000\u0000\u0013\u045d\u0001\u0000\u0000"+ - "\u0000\u0015\u045f\u0001\u0000\u0000\u0000\u0017\u046c\u0001\u0000\u0000"+ - "\u0000\u0019\u047b\u0001\u0000\u0000\u0000\u001b\u0483\u0001\u0000\u0000"+ - "\u0000\u001d\u0487\u0001\u0000\u0000\u0000\u001f\u048d\u0001\u0000\u0000"+ - "\u0000!\u0493\u0001\u0000\u0000\u0000#\u049d\u0001\u0000\u0000\u0000%"+ - "\u04a7\u0001\u0000\u0000\u0000\'\u04ad\u0001\u0000\u0000\u0000)\u04b1"+ - "\u0001\u0000\u0000\u0000+\u04b7\u0001\u0000\u0000\u0000-\u04bf\u0001\u0000"+ - "\u0000\u0000/\u04c8\u0001\u0000\u0000\u00001\u04cc\u0001\u0000\u0000\u0000"+ - "3\u04d1\u0001\u0000\u0000\u00005\u04d8\u0001\u0000\u0000\u00007\u04de"+ - "\u0001\u0000\u0000\u00009\u04e1\u0001\u0000\u0000\u0000;\u04e5\u0001\u0000"+ - "\u0000\u0000=\u04e8\u0001\u0000\u0000\u0000?\u04f0\u0001\u0000\u0000\u0000"+ - "A\u04f5\u0001\u0000\u0000\u0000C\u0504\u0001\u0000\u0000\u0000E\u050b"+ - "\u0001\u0000\u0000\u0000G\u0513\u0001\u0000\u0000\u0000I\u051c\u0001\u0000"+ - "\u0000\u0000K\u0523\u0001\u0000\u0000\u0000M\u0529\u0001\u0000\u0000\u0000"+ - "O\u0530\u0001\u0000\u0000\u0000Q\u0538\u0001\u0000\u0000\u0000S\u053f"+ - "\u0001\u0000\u0000\u0000U\u0543\u0001\u0000\u0000\u0000W\u054a\u0001\u0000"+ - "\u0000\u0000Y\u0551\u0001\u0000\u0000\u0000[\u0558\u0001\u0000\u0000\u0000"+ - "]\u055f\u0001\u0000\u0000\u0000_\u056c\u0001\u0000\u0000\u0000a\u0579"+ - "\u0001\u0000\u0000\u0000c\u057f\u0001\u0000\u0000\u0000e\u0586\u0001\u0000"+ - "\u0000\u0000g\u058b\u0001\u0000\u0000\u0000i\u0593\u0001\u0000\u0000\u0000"+ - "k\u0599\u0001\u0000\u0000\u0000m\u05a0\u0001\u0000\u0000\u0000o\u05a8"+ - "\u0001\u0000\u0000\u0000q\u05ae\u0001\u0000\u0000\u0000s\u05b6\u0001\u0000"+ - "\u0000\u0000u\u05bb\u0001\u0000\u0000\u0000w\u05be\u0001\u0000\u0000\u0000"+ - "y\u05c4\u0001\u0000\u0000\u0000{\u05cb\u0001\u0000\u0000\u0000}\u05d0"+ - "\u0001\u0000\u0000\u0000\u007f\u05d7\u0001\u0000\u0000\u0000\u0081\u05dc"+ - "\u0001\u0000\u0000\u0000\u0083\u05e1\u0001\u0000\u0000\u0000\u0085\u05e9"+ - "\u0001\u0000\u0000\u0000\u0087\u05f2\u0001\u0000\u0000\u0000\u0089\u0605"+ - "\u0001\u0000\u0000\u0000\u008b\u0607\u0001\u0000\u0000\u0000\u008d\u060f"+ - "\u0001\u0000\u0000\u0000\u008f\u0615\u0001\u0000\u0000\u0000\u0091\u061b"+ - "\u0001\u0000\u0000\u0000\u0093\u0623\u0001\u0000\u0000\u0000\u0095\u062c"+ - "\u0001\u0000\u0000\u0000\u0097\u0634\u0001\u0000\u0000\u0000\u0099\u063e"+ - "\u0001\u0000\u0000\u0000\u009b\u0646\u0001\u0000\u0000\u0000\u009d\u064f"+ - "\u0001\u0000\u0000\u0000\u009f\u0656\u0001\u0000\u0000\u0000\u00a1\u065e"+ - "\u0001\u0000\u0000\u0000\u00a3\u0666\u0001\u0000\u0000\u0000\u00a5\u066d"+ - "\u0001\u0000\u0000\u0000\u00a7\u0677\u0001\u0000\u0000\u0000\u00a9\u067f"+ - "\u0001\u0000\u0000\u0000\u00ab\u0688\u0001\u0000\u0000\u0000\u00ad\u0696"+ - "\u0001\u0000\u0000\u0000\u00af\u069e\u0001\u0000\u0000\u0000\u00b1\u06a9"+ - "\u0001\u0000\u0000\u0000\u00b3\u06b0\u0001\u0000\u0000\u0000\u00b5\u06bb"+ - "\u0001\u0000\u0000\u0000\u00b7\u06c9\u0001\u0000\u0000\u0000\u00b9\u06d4"+ - "\u0001\u0000\u0000\u0000\u00bb\u06df\u0001\u0000\u0000\u0000\u00bd\u06eb"+ - "\u0001\u0000\u0000\u0000\u00bf\u06f3\u0001\u0000\u0000\u0000\u00c1\u0717"+ - "\u0001\u0000\u0000\u0000\u00c3\u071c\u0001\u0000\u0000\u0000\u00c5\u0722"+ - "\u0001\u0000\u0000\u0000\u00c7\u0729\u0001\u0000\u0000\u0000\u00c9\u0732"+ - "\u0001\u0000\u0000\u0000\u00cb\u0737\u0001\u0000\u0000\u0000\u00cd\u073d"+ - "\u0001\u0000\u0000\u0000\u00cf\u0742\u0001\u0000\u0000\u0000\u00d1\u074a"+ - "\u0001\u0000\u0000\u0000\u00d3\u075a\u0001\u0000\u0000\u0000\u00d5\u0767"+ - "\u0001\u0000\u0000\u0000\u00d7\u0774\u0001\u0000\u0000\u0000\u00d9\u0786"+ - "\u0001\u0000\u0000\u0000\u00db\u0793\u0001\u0000\u0000\u0000\u00dd\u0798"+ - "\u0001\u0000\u0000\u0000\u00df\u07a1\u0001\u0000\u0000\u0000\u00e1\u07ab"+ - "\u0001\u0000\u0000\u0000\u00e3\u07b0\u0001\u0000\u0000\u0000\u00e5\u07b9"+ - "\u0001\u0000\u0000\u0000\u00e7\u07c4\u0001\u0000\u0000\u0000\u00e9\u07cb"+ - "\u0001\u0000\u0000\u0000\u00eb\u07d6\u0001\u0000\u0000\u0000\u00ed\u07dd"+ - "\u0001\u0000\u0000\u0000\u00ef\u07e1\u0001\u0000\u0000\u0000\u00f1\u07e9"+ - "\u0001\u0000\u0000\u0000\u00f3\u07f3\u0001\u0000\u0000\u0000\u00f5\u07fd"+ - "\u0001\u0000\u0000\u0000\u00f7\u080a\u0001\u0000\u0000\u0000\u00f9\u0812"+ - "\u0001\u0000\u0000\u0000\u00fb\u081b\u0001\u0000\u0000\u0000\u00fd\u0822"+ - "\u0001\u0000\u0000\u0000\u00ff\u0829\u0001\u0000\u0000\u0000\u0101\u082e"+ - "\u0001\u0000\u0000\u0000\u0103\u0837\u0001\u0000\u0000\u0000\u0105\u0840"+ - "\u0001\u0000\u0000\u0000\u0107\u084a\u0001\u0000\u0000\u0000\u0109\u084f"+ - "\u0001\u0000\u0000\u0000\u010b\u0858\u0001\u0000\u0000\u0000\u010d\u0863"+ - "\u0001\u0000\u0000\u0000\u010f\u0870\u0001\u0000\u0000\u0000\u0111\u087c"+ - "\u0001\u0000\u0000\u0000\u0113\u0889\u0001\u0000\u0000\u0000\u0115\u088d"+ - "\u0001\u0000\u0000\u0000\u0117\u0890\u0001\u0000\u0000\u0000\u0119\u08a8"+ - "\u0001\u0000\u0000\u0000\u011b\u08af\u0001\u0000\u0000\u0000\u011d\u08b4"+ - "\u0001\u0000\u0000\u0000\u011f\u08ba\u0001\u0000\u0000\u0000\u0121\u08bf"+ - "\u0001\u0000\u0000\u0000\u0123\u08c4\u0001\u0000\u0000\u0000\u0125\u08ce"+ - "\u0001\u0000\u0000\u0000\u0127\u08d6\u0001\u0000\u0000\u0000\u0129\u08d8"+ - "\u0001\u0000\u0000\u0000\u012b\u08dd\u0001\u0000\u0000\u0000\u012d\u08e4"+ - "\u0001\u0000\u0000\u0000\u012f\u08ef\u0001\u0000\u0000\u0000\u0131\u08fb"+ - "\u0001\u0000\u0000\u0000\u0133\u08ff\u0001\u0000\u0000\u0000\u0135\u0904"+ - "\u0001\u0000\u0000\u0000\u0137\u090b\u0001\u0000\u0000\u0000\u0139\u0913"+ - "\u0001\u0000\u0000\u0000\u013b\u0919\u0001\u0000\u0000\u0000\u013d\u0920"+ - "\u0001\u0000\u0000\u0000\u013f\u0927\u0001\u0000\u0000\u0000\u0141\u092d"+ - "\u0001\u0000\u0000\u0000\u0143\u0934\u0001\u0000\u0000\u0000\u0145\u093c"+ - "\u0001\u0000\u0000\u0000\u0147\u0944\u0001\u0000\u0000\u0000\u0149\u094b"+ - "\u0001\u0000\u0000\u0000\u014b\u0953\u0001\u0000\u0000\u0000\u014d\u095b"+ - "\u0001\u0000\u0000\u0000\u014f\u0962\u0001\u0000\u0000\u0000\u0151\u096b"+ - "\u0001\u0000\u0000\u0000\u0153\u0974\u0001\u0000\u0000\u0000\u0155\u097c"+ - "\u0001\u0000\u0000\u0000\u0157\u0992\u0001\u0000\u0000\u0000\u0159\u0998"+ - "\u0001\u0000\u0000\u0000\u015b\u099d\u0001\u0000\u0000\u0000\u015d\u09a5"+ - "\u0001\u0000\u0000\u0000\u015f\u09ac\u0001\u0000\u0000\u0000\u0161\u09b1"+ - "\u0001\u0000\u0000\u0000\u0163\u09b8\u0001\u0000\u0000\u0000\u0165\u09be"+ - "\u0001\u0000\u0000\u0000\u0167\u09c4\u0001\u0000\u0000\u0000\u0169\u09cd"+ - "\u0001\u0000\u0000\u0000\u016b\u09d7\u0001\u0000\u0000\u0000\u016d\u09db"+ - "\u0001\u0000\u0000\u0000\u016f\u09e3\u0001\u0000\u0000\u0000\u0171\u09e9"+ - "\u0001\u0000\u0000\u0000\u0173\u09f0\u0001\u0000\u0000\u0000\u0175\u09f5"+ - "\u0001\u0000\u0000\u0000\u0177\u09fa\u0001\u0000\u0000\u0000\u0179\u0a03"+ - "\u0001\u0000\u0000\u0000\u017b\u0a0d\u0001\u0000\u0000\u0000\u017d\u0a12"+ - "\u0001\u0000\u0000\u0000\u017f\u0a1b\u0001\u0000\u0000\u0000\u0181\u0a25"+ - "\u0001\u0000\u0000\u0000\u0183\u0a2f\u0001\u0000\u0000\u0000\u0185\u0a37"+ - "\u0001\u0000\u0000\u0000\u0187\u0a3e\u0001\u0000\u0000\u0000\u0189\u0a44"+ - "\u0001\u0000\u0000\u0000\u018b\u0a4b\u0001\u0000\u0000\u0000\u018d\u0a51"+ - "\u0001\u0000\u0000\u0000\u018f\u0a57\u0001\u0000\u0000\u0000\u0191\u0a60"+ - "\u0001\u0000\u0000\u0000\u0193\u0a67\u0001\u0000\u0000\u0000\u0195\u0a6c"+ - "\u0001\u0000\u0000\u0000\u0197\u0a73\u0001\u0000\u0000\u0000\u0199\u0a78"+ - "\u0001\u0000\u0000\u0000\u019b\u0a7d\u0001\u0000\u0000\u0000\u019d\u0a87"+ - "\u0001\u0000\u0000\u0000\u019f\u0a8b\u0001\u0000\u0000\u0000\u01a1\u0a95"+ - "\u0001\u0000\u0000\u0000\u01a3\u0a9e\u0001\u0000\u0000\u0000\u01a5\u0aa6"+ - "\u0001\u0000\u0000\u0000\u01a7\u0aab\u0001\u0000\u0000\u0000\u01a9\u0aaf"+ - "\u0001\u0000\u0000\u0000\u01ab\u0aba\u0001\u0000\u0000\u0000\u01ad\u0abd"+ - "\u0001\u0000\u0000\u0000\u01af\u0ac4\u0001\u0000\u0000\u0000\u01b1\u0ace"+ - "\u0001\u0000\u0000\u0000\u01b3\u0ad1\u0001\u0000\u0000\u0000\u01b5\u0add"+ - "\u0001\u0000\u0000\u0000\u01b7\u0ae3\u0001\u0000\u0000\u0000\u01b9\u0aeb"+ - "\u0001\u0000\u0000\u0000\u01bb\u0af2\u0001\u0000\u0000\u0000\u01bd\u0af8"+ - "\u0001\u0000\u0000\u0000\u01bf\u0aff\u0001\u0000\u0000\u0000\u01c1\u0b07"+ - "\u0001\u0000\u0000\u0000\u01c3\u0b0b\u0001\u0000\u0000\u0000\u01c5\u0b13"+ - "\u0001\u0000\u0000\u0000\u01c7\u0b20\u0001\u0000\u0000\u0000\u01c9\u0b2a"+ - "\u0001\u0000\u0000\u0000\u01cb\u0b33\u0001\u0000\u0000\u0000\u01cd\u0b38"+ - "\u0001\u0000\u0000\u0000\u01cf\u0b41\u0001\u0000\u0000\u0000\u01d1\u0b46"+ - "\u0001\u0000\u0000\u0000\u01d3\u0b4b\u0001\u0000\u0000\u0000\u01d5\u0b4e"+ - "\u0001\u0000\u0000\u0000\u01d7\u0b5f\u0001\u0000\u0000\u0000\u01d9\u0b6c"+ - "\u0001\u0000\u0000\u0000\u01db\u0b73\u0001\u0000\u0000\u0000\u01dd\u0b7d"+ - "\u0001\u0000\u0000\u0000\u01df\u0b81\u0001\u0000\u0000\u0000\u01e1\u0b86"+ - "\u0001\u0000\u0000\u0000\u01e3\u0b8b\u0001\u0000\u0000\u0000\u01e5\u0b90"+ - "\u0001\u0000\u0000\u0000\u01e7\u0b96\u0001\u0000\u0000\u0000\u01e9\u0b9a"+ - "\u0001\u0000\u0000\u0000\u01eb\u0b9f\u0001\u0000\u0000\u0000\u01ed\u0ba4"+ - "\u0001\u0000\u0000\u0000\u01ef\u0baa\u0001\u0000\u0000\u0000\u01f1\u0bb3"+ - "\u0001\u0000\u0000\u0000\u01f3\u0bb8\u0001\u0000\u0000\u0000\u01f5\u0bc0"+ - "\u0001\u0000\u0000\u0000\u01f7\u0bc5\u0001\u0000\u0000\u0000\u01f9\u0bd9"+ - "\u0001\u0000\u0000\u0000\u01fb\u0bde\u0001\u0000\u0000\u0000\u01fd\u0be3"+ - "\u0001\u0000\u0000\u0000\u01ff\u0be9\u0001\u0000\u0000\u0000\u0201\u0bee"+ - "\u0001\u0000\u0000\u0000\u0203\u0bf4\u0001\u0000\u0000\u0000\u0205\u0bfa"+ - "\u0001\u0000\u0000\u0000\u0207\u0bff\u0001\u0000\u0000\u0000\u0209\u0c04"+ - "\u0001\u0000\u0000\u0000\u020b\u0c09\u0001\u0000\u0000\u0000\u020d\u0c0f"+ - "\u0001\u0000\u0000\u0000\u020f\u0c19\u0001\u0000\u0000\u0000\u0211\u0c28"+ - "\u0001\u0000\u0000\u0000\u0213\u0c31\u0001\u0000\u0000\u0000\u0215\u0c36"+ - "\u0001\u0000\u0000\u0000\u0217\u0c3e\u0001\u0000\u0000\u0000\u0219\u0c4b"+ - "\u0001\u0000\u0000\u0000\u021b\u0c52\u0001\u0000\u0000\u0000\u021d\u0c56"+ - "\u0001\u0000\u0000\u0000\u021f\u0c5c\u0001\u0000\u0000\u0000\u0221\u0c66"+ - "\u0001\u0000\u0000\u0000\u0223\u0c70\u0001\u0000\u0000\u0000\u0225\u0c7d"+ - "\u0001\u0000\u0000\u0000\u0227\u0c8f\u0001\u0000\u0000\u0000\u0229\u0ca3"+ - "\u0001\u0000\u0000\u0000\u022b\u0cb0\u0001\u0000\u0000\u0000\u022d\u0cbb"+ - "\u0001\u0000\u0000\u0000\u022f\u0ccb\u0001\u0000\u0000\u0000\u0231\u0cd8"+ - "\u0001\u0000\u0000\u0000\u0233\u0cdc\u0001\u0000\u0000\u0000\u0235\u0ce5"+ - "\u0001\u0000\u0000\u0000\u0237\u0cea\u0001\u0000\u0000\u0000\u0239\u0cf0"+ - "\u0001\u0000\u0000\u0000\u023b\u0cf8\u0001\u0000\u0000\u0000\u023d\u0d03"+ - "\u0001\u0000\u0000\u0000\u023f\u0d07\u0001\u0000\u0000\u0000\u0241\u0d0d"+ - "\u0001\u0000\u0000\u0000\u0243\u0d14\u0001\u0000\u0000\u0000\u0245\u0d1b"+ - "\u0001\u0000\u0000\u0000\u0247\u0d21\u0001\u0000\u0000\u0000\u0249\u0d26"+ - "\u0001\u0000\u0000\u0000\u024b\u0d2b\u0001\u0000\u0000\u0000\u024d\u0d31"+ - "\u0001\u0000\u0000\u0000\u024f\u0d39\u0001\u0000\u0000\u0000\u0251\u0d42"+ - "\u0001\u0000\u0000\u0000\u0253\u0d48\u0001\u0000\u0000\u0000\u0255\u0d4d"+ - "\u0001\u0000\u0000\u0000\u0257\u0d56\u0001\u0000\u0000\u0000\u0259\u0d59"+ - "\u0001\u0000\u0000\u0000\u025b\u0d63\u0001\u0000\u0000\u0000\u025d\u0d70"+ - "\u0001\u0000\u0000\u0000\u025f\u0d74\u0001\u0000\u0000\u0000\u0261\u0d79"+ - "\u0001\u0000\u0000\u0000\u0263\u0d7f\u0001\u0000\u0000\u0000\u0265\u0d88"+ - "\u0001\u0000\u0000\u0000\u0267\u0d8b\u0001\u0000\u0000\u0000\u0269\u0d92"+ - "\u0001\u0000\u0000\u0000\u026b\u0d95\u0001\u0000\u0000\u0000\u026d\u0d9a"+ - "\u0001\u0000\u0000\u0000\u026f\u0d9f\u0001\u0000\u0000\u0000\u0271\u0da9"+ - "\u0001\u0000\u0000\u0000\u0273\u0dac\u0001\u0000\u0000\u0000\u0275\u0db2"+ - "\u0001\u0000\u0000\u0000\u0277\u0db8\u0001\u0000\u0000\u0000\u0279\u0dc0"+ - "\u0001\u0000\u0000\u0000\u027b\u0dc5\u0001\u0000\u0000\u0000\u027d\u0dcf"+ - "\u0001\u0000\u0000\u0000\u027f\u0dd9\u0001\u0000\u0000\u0000\u0281\u0de0"+ - "\u0001\u0000\u0000\u0000\u0283\u0dea\u0001\u0000\u0000\u0000\u0285\u0df5"+ - "\u0001\u0000\u0000\u0000\u0287\u0dfe\u0001\u0000\u0000\u0000\u0289\u0e0e"+ - "\u0001\u0000\u0000\u0000\u028b\u0e1f\u0001\u0000\u0000\u0000\u028d\u0e32"+ - "\u0001\u0000\u0000\u0000\u028f\u0e41\u0001\u0000\u0000\u0000\u0291\u0e46"+ - "\u0001\u0000\u0000\u0000\u0293\u0e4c\u0001\u0000\u0000\u0000\u0295\u0e54"+ - "\u0001\u0000\u0000\u0000\u0297\u0e5b\u0001\u0000\u0000\u0000\u0299\u0e66"+ - "\u0001\u0000\u0000\u0000\u029b\u0e6f\u0001\u0000\u0000\u0000\u029d\u0e72"+ - "\u0001\u0000\u0000\u0000\u029f\u0e74\u0001\u0000\u0000\u0000\u02a1\u0e79"+ - "\u0001\u0000\u0000\u0000\u02a3\u0e7e\u0001\u0000\u0000\u0000\u02a5\u0e89"+ - "\u0001\u0000\u0000\u0000\u02a7\u0e91\u0001\u0000\u0000\u0000\u02a9\u0e98"+ - "\u0001\u0000\u0000\u0000\u02ab\u0ea0\u0001\u0000\u0000\u0000\u02ad\u0ea7"+ - "\u0001\u0000\u0000\u0000\u02af\u0eb1\u0001\u0000\u0000\u0000\u02b1\u0eb9"+ - "\u0001\u0000\u0000\u0000\u02b3\u0ec1\u0001\u0000\u0000\u0000\u02b5\u0ec6"+ - "\u0001\u0000\u0000\u0000\u02b7\u0ed0\u0001\u0000\u0000\u0000\u02b9\u0edc"+ - "\u0001\u0000\u0000\u0000\u02bb\u0ee4\u0001\u0000\u0000\u0000\u02bd\u0eef"+ - "\u0001\u0000\u0000\u0000\u02bf\u0ef8\u0001\u0000\u0000\u0000\u02c1\u0f07"+ - "\u0001\u0000\u0000\u0000\u02c3\u0f16\u0001\u0000\u0000\u0000\u02c5\u0f1c"+ - "\u0001\u0000\u0000\u0000\u02c7\u0f23\u0001\u0000\u0000\u0000\u02c9\u0f29"+ - "\u0001\u0000\u0000\u0000\u02cb\u0f31\u0001\u0000\u0000\u0000\u02cd\u0f39"+ - "\u0001\u0000\u0000\u0000\u02cf\u0f40\u0001\u0000\u0000\u0000\u02d1\u0f46"+ - "\u0001\u0000\u0000\u0000\u02d3\u0f4b\u0001\u0000\u0000\u0000\u02d5\u0f50"+ - "\u0001\u0000\u0000\u0000\u02d7\u0f5a\u0001\u0000\u0000\u0000\u02d9\u0f61"+ - "\u0001\u0000\u0000\u0000\u02db\u0f69\u0001\u0000\u0000\u0000\u02dd\u0f71"+ - "\u0001\u0000\u0000\u0000\u02df\u0f79\u0001\u0000\u0000\u0000\u02e1\u0f84"+ - "\u0001\u0000\u0000\u0000\u02e3\u0f8b\u0001\u0000\u0000\u0000\u02e5\u0f93"+ - "\u0001\u0000\u0000\u0000\u02e7\u0f9a\u0001\u0000\u0000\u0000\u02e9\u0fa1"+ - "\u0001\u0000\u0000\u0000\u02eb\u0fac\u0001\u0000\u0000\u0000\u02ed\u0fb4"+ - "\u0001\u0000\u0000\u0000\u02ef\u0fc8\u0001\u0000\u0000\u0000\u02f1\u0fd1"+ - "\u0001\u0000\u0000\u0000\u02f3\u0fd9\u0001\u0000\u0000\u0000\u02f5\u0fe6"+ - "\u0001\u0000\u0000\u0000\u02f7\u0ff1\u0001\u0000\u0000\u0000\u02f9\u0ffa"+ - "\u0001\u0000\u0000\u0000\u02fb\u1004\u0001\u0000\u0000\u0000\u02fd\u100c"+ - "\u0001\u0000\u0000\u0000\u02ff\u1018\u0001\u0000\u0000\u0000\u0301\u101f"+ - "\u0001\u0000\u0000\u0000\u0303\u1027\u0001\u0000\u0000\u0000\u0305\u102e"+ - "\u0001\u0000\u0000\u0000\u0307\u1038\u0001\u0000\u0000\u0000\u0309\u103e"+ - "\u0001\u0000\u0000\u0000\u030b\u1044\u0001\u0000\u0000\u0000\u030d\u1049"+ - "\u0001\u0000\u0000\u0000\u030f\u104f\u0001\u0000\u0000\u0000\u0311\u1058"+ - "\u0001\u0000\u0000\u0000\u0313\u105f\u0001\u0000\u0000\u0000\u0315\u1067"+ - "\u0001\u0000\u0000\u0000\u0317\u106b\u0001\u0000\u0000\u0000\u0319\u1070"+ - "\u0001\u0000\u0000\u0000\u031b\u1073\u0001\u0000\u0000\u0000\u031d\u107a"+ - "\u0001\u0000\u0000\u0000\u031f\u1083\u0001\u0000\u0000\u0000\u0321\u108d"+ - "\u0001\u0000\u0000\u0000\u0323\u1094\u0001\u0000\u0000\u0000\u0325\u109c"+ - "\u0001\u0000\u0000\u0000\u0327\u10a3\u0001\u0000\u0000\u0000\u0329\u10aa"+ - "\u0001\u0000\u0000\u0000\u032b\u10af\u0001\u0000\u0000\u0000\u032d\u10bc"+ - "\u0001\u0000\u0000\u0000\u032f\u10c4\u0001\u0000\u0000\u0000\u0331\u10d1"+ - "\u0001\u0000\u0000\u0000\u0333\u10d5\u0001\u0000\u0000\u0000\u0335\u10da"+ - "\u0001\u0000\u0000\u0000\u0337\u10ef\u0001\u0000\u0000\u0000\u0339\u10f5"+ - "\u0001\u0000\u0000\u0000\u033b\u10fa\u0001\u0000\u0000\u0000\u033d\u1101"+ - "\u0001\u0000\u0000\u0000\u033f\u1106\u0001\u0000\u0000\u0000\u0341\u110f"+ - "\u0001\u0000\u0000\u0000\u0343\u1118\u0001\u0000\u0000\u0000\u0345\u111f"+ - "\u0001\u0000\u0000\u0000\u0347\u1125\u0001\u0000\u0000\u0000\u0349\u1129"+ - "\u0001\u0000\u0000\u0000\u034b\u1138\u0001\u0000\u0000\u0000\u034d\u113e"+ - "\u0001\u0000\u0000\u0000\u034f\u1145\u0001\u0000\u0000\u0000\u0351\u114b"+ - "\u0001\u0000\u0000\u0000\u0353\u1152\u0001\u0000\u0000\u0000\u0355\u1158"+ - "\u0001\u0000\u0000\u0000\u0357\u115f\u0001\u0000\u0000\u0000\u0359\u1164"+ - "\u0001\u0000\u0000\u0000\u035b\u116c\u0001\u0000\u0000\u0000\u035d\u1173"+ - "\u0001\u0000\u0000\u0000\u035f\u117d\u0001\u0000\u0000\u0000\u0361\u1184"+ - "\u0001\u0000\u0000\u0000\u0363\u118b\u0001\u0000\u0000\u0000\u0365\u118f"+ - "\u0001\u0000\u0000\u0000\u0367\u1199\u0001\u0000\u0000\u0000\u0369\u11a0"+ - "\u0001\u0000\u0000\u0000\u036b\u11a5\u0001\u0000\u0000\u0000\u036d\u11ac"+ - "\u0001\u0000\u0000\u0000\u036f\u11b2\u0001\u0000\u0000\u0000\u0371\u11b9"+ - "\u0001\u0000\u0000\u0000\u0373\u11c5\u0001\u0000\u0000\u0000\u0375\u11cc"+ - "\u0001\u0000\u0000\u0000\u0377\u11d4\u0001\u0000\u0000\u0000\u0379\u11d9"+ - "\u0001\u0000\u0000\u0000\u037b\u11df\u0001\u0000\u0000\u0000\u037d\u11e9"+ - "\u0001\u0000\u0000\u0000\u037f\u11f4\u0001\u0000\u0000\u0000\u0381\u11f9"+ - "\u0001\u0000\u0000\u0000\u0383\u11fe\u0001\u0000\u0000\u0000\u0385\u1203"+ - "\u0001\u0000\u0000\u0000\u0387\u1208\u0001\u0000\u0000\u0000\u0389\u1212"+ - "\u0001\u0000\u0000\u0000\u038b\u121a\u0001\u0000\u0000\u0000\u038d\u121d"+ - "\u0001\u0000\u0000\u0000\u038f\u1229\u0001\u0000\u0000\u0000\u0391\u122f"+ - "\u0001\u0000\u0000\u0000\u0393\u1234\u0001\u0000\u0000\u0000\u0395\u123d"+ - "\u0001\u0000\u0000\u0000\u0397\u1242\u0001\u0000\u0000\u0000\u0399\u1247"+ - "\u0001\u0000\u0000\u0000\u039b\u1250\u0001\u0000\u0000\u0000\u039d\u1255"+ - "\u0001\u0000\u0000\u0000\u039f\u125f\u0001\u0000\u0000\u0000\u03a1\u1265"+ - "\u0001\u0000\u0000\u0000\u03a3\u126f\u0001\u0000\u0000\u0000\u03a5\u127b"+ - "\u0001\u0000\u0000\u0000\u03a7\u1285\u0001\u0000\u0000\u0000\u03a9\u128b"+ - "\u0001\u0000\u0000\u0000\u03ab\u1292\u0001\u0000\u0000\u0000\u03ad\u1299"+ - "\u0001\u0000\u0000\u0000\u03af\u129f\u0001\u0000\u0000\u0000\u03b1\u12a8"+ - "\u0001\u0000\u0000\u0000\u03b3\u12ab\u0001\u0000\u0000\u0000\u03b5\u12b2"+ - "\u0001\u0000\u0000\u0000\u03b7\u12b6\u0001\u0000\u0000\u0000\u03b9\u12bb"+ - "\u0001\u0000\u0000\u0000\u03bb\u12c2\u0001\u0000\u0000\u0000\u03bd\u12c8"+ - "\u0001\u0000\u0000\u0000\u03bf\u12ce\u0001\u0000\u0000\u0000\u03c1\u12d5"+ - "\u0001\u0000\u0000\u0000\u03c3\u12dd\u0001\u0000\u0000\u0000\u03c5\u12e6"+ - "\u0001\u0000\u0000\u0000\u03c7\u12f0\u0001\u0000\u0000\u0000\u03c9\u12f8"+ - "\u0001\u0000\u0000\u0000\u03cb\u12fe\u0001\u0000\u0000\u0000\u03cd\u1305"+ - "\u0001\u0000\u0000\u0000\u03cf\u130d\u0001\u0000\u0000\u0000\u03d1\u1315"+ - "\u0001\u0000\u0000\u0000\u03d3\u131a\u0001\u0000\u0000\u0000\u03d5\u1320"+ - "\u0001\u0000\u0000\u0000\u03d7\u1325\u0001\u0000\u0000\u0000\u03d9\u132e"+ - "\u0001\u0000\u0000\u0000\u03db\u1333\u0001\u0000\u0000\u0000\u03dd\u1338"+ - "\u0001\u0000\u0000\u0000\u03df\u133e\u0001\u0000\u0000\u0000\u03e1\u1348"+ - "\u0001\u0000\u0000\u0000\u03e3\u134d\u0001\u0000\u0000\u0000\u03e5\u1352"+ - "\u0001\u0000\u0000\u0000\u03e7\u135b\u0001\u0000\u0000\u0000\u03e9\u1361"+ - "\u0001\u0000\u0000\u0000\u03eb\u1365\u0001\u0000\u0000\u0000\u03ed\u136d"+ - "\u0001\u0000\u0000\u0000\u03ef\u136f\u0001\u0000\u0000\u0000\u03f1\u1377"+ - "\u0001\u0000\u0000\u0000\u03f3\u1379\u0001\u0000\u0000\u0000\u03f5\u137f"+ - "\u0001\u0000\u0000\u0000\u03f7\u1381\u0001\u0000\u0000\u0000\u03f9\u1387"+ - "\u0001\u0000\u0000\u0000\u03fb\u1389\u0001\u0000\u0000\u0000\u03fd\u138b"+ - "\u0001\u0000\u0000\u0000\u03ff\u138d\u0001\u0000\u0000\u0000\u0401\u138f"+ - "\u0001\u0000\u0000\u0000\u0403\u1391\u0001\u0000\u0000\u0000\u0405\u1393"+ - "\u0001\u0000\u0000\u0000\u0407\u1395\u0001\u0000\u0000\u0000\u0409\u1397"+ - "\u0001\u0000\u0000\u0000\u040b\u139a\u0001\u0000\u0000\u0000\u040d\u139c"+ - "\u0001\u0000\u0000\u0000\u040f\u139e\u0001\u0000\u0000\u0000\u0411\u13a1"+ - "\u0001\u0000\u0000\u0000\u0413\u13a3\u0001\u0000\u0000\u0000\u0415\u13a5"+ - "\u0001\u0000\u0000\u0000\u0417\u13a8\u0001\u0000\u0000\u0000\u0419\u13ac"+ - "\u0001\u0000\u0000\u0000\u041b\u13af\u0001\u0000\u0000\u0000\u041d\u13b2"+ - "\u0001\u0000\u0000\u0000\u041f\u13b4\u0001\u0000\u0000\u0000\u0421\u13e3"+ - "\u0001\u0000\u0000\u0000\u0423\u13e9\u0001\u0000\u0000\u0000\u0425\u13ec"+ - "\u0001\u0000\u0000\u0000\u0427\u13f3\u0001\u0000\u0000\u0000\u0429\u13fa"+ - "\u0001\u0000\u0000\u0000\u042b\u1401\u0001\u0000\u0000\u0000\u042d\u1410"+ - "\u0001\u0000\u0000\u0000\u042f\u1412\u0001\u0000\u0000\u0000\u0431\u1429"+ - "\u0001\u0000\u0000\u0000\u0433\u142e\u0001\u0000\u0000\u0000\u0435\u1432"+ - "\u0001\u0000\u0000\u0000\u0437\u144f\u0001\u0000\u0000\u0000\u0439\u1451"+ - "\u0001\u0000\u0000\u0000\u043b\u145a\u0001\u0000\u0000\u0000\u043d\u1460"+ - "\u0001\u0000\u0000\u0000\u043f\u1462\u0001\u0000\u0000\u0000\u0441\u1475"+ - "\u0001\u0000\u0000\u0000\u0443\u1485\u0001\u0000\u0000\u0000\u0445\u1497"+ - "\u0001\u0000\u0000\u0000\u0447\u149d\u0001\u0000\u0000\u0000\u0449\u044a"+ - "\u0005;\u0000\u0000\u044a\u0002\u0001\u0000\u0000\u0000\u044b\u044c\u0005"+ - "(\u0000\u0000\u044c\u0004\u0001\u0000\u0000\u0000\u044d\u044e\u0005)\u0000"+ - "\u0000\u044e\u0006\u0001\u0000\u0000\u0000\u044f\u0450\u0005,\u0000\u0000"+ - "\u0450\b\u0001\u0000\u0000\u0000\u0451\u0452\u0005.\u0000\u0000\u0452"+ - "\n\u0001\u0000\u0000\u0000\u0453\u0454\u0005.\u0000\u0000\u0454\u0455"+ - "\u0005.\u0000\u0000\u0455\u0456\u0005.\u0000\u0000\u0456\f\u0001\u0000"+ - "\u0000\u0000\u0457\u0458\u0005[\u0000\u0000\u0458\u000e\u0001\u0000\u0000"+ - "\u0000\u0459\u045a\u0005]\u0000\u0000\u045a\u0010\u0001\u0000\u0000\u0000"+ - "\u045b\u045c\u0005{\u0000\u0000\u045c\u0012\u0001\u0000\u0000\u0000\u045d"+ - "\u045e\u0005}\u0000\u0000\u045e\u0014\u0001\u0000\u0000\u0000\u045f\u0460"+ - "\u0005A\u0000\u0000\u0460\u0461\u0005C\u0000\u0000\u0461\u0462\u0005C"+ - "\u0000\u0000\u0462\u0463\u0005O\u0000\u0000\u0463\u0464\u0005U\u0000\u0000"+ - "\u0464\u0465\u0005N\u0000\u0000\u0465\u0466\u0005T\u0000\u0000\u0466\u0467"+ - "\u0005_\u0000\u0000\u0467\u0468\u0005L\u0000\u0000\u0468\u0469\u0005O"+ - "\u0000\u0000\u0469\u046a\u0005C\u0000\u0000\u046a\u046b\u0005K\u0000\u0000"+ - "\u046b\u0016\u0001\u0000\u0000\u0000\u046c\u046d\u0005A\u0000\u0000\u046d"+ - "\u046e\u0005C\u0000\u0000\u046e\u046f\u0005C\u0000\u0000\u046f\u0470\u0005"+ - "O\u0000\u0000\u0470\u0471\u0005U\u0000\u0000\u0471\u0472\u0005N\u0000"+ - "\u0000\u0472\u0473\u0005T\u0000\u0000\u0473\u0474\u0005_\u0000\u0000\u0474"+ - "\u0475\u0005U\u0000\u0000\u0475\u0476\u0005N\u0000\u0000\u0476\u0477\u0005"+ - "L\u0000\u0000\u0477\u0478\u0005O\u0000\u0000\u0478\u0479\u0005C\u0000"+ - "\u0000\u0479\u047a\u0005K\u0000\u0000\u047a\u0018\u0001\u0000\u0000\u0000"+ - "\u047b\u047c\u0005A\u0000\u0000\u047c\u047d\u0005C\u0000\u0000\u047d\u047e"+ - "\u0005T\u0000\u0000\u047e\u047f\u0005I\u0000\u0000\u047f\u0480\u0005O"+ - "\u0000\u0000\u0480\u0481\u0005N\u0000\u0000\u0481\u0482\u0005S\u0000\u0000"+ - "\u0482\u001a\u0001\u0000\u0000\u0000\u0483\u0484\u0005A\u0000\u0000\u0484"+ - "\u0485\u0005D\u0000\u0000\u0485\u0486\u0005D\u0000\u0000\u0486\u001c\u0001"+ - "\u0000\u0000\u0000\u0487\u0488\u0005A\u0000\u0000\u0488\u0489\u0005D\u0000"+ - "\u0000\u0489\u048a\u0005M\u0000\u0000\u048a\u048b\u0005I\u0000\u0000\u048b"+ - "\u048c\u0005N\u0000\u0000\u048c\u001e\u0001\u0000\u0000\u0000\u048d\u048e"+ - "\u0005A\u0000\u0000\u048e\u048f\u0005F\u0000\u0000\u048f\u0490\u0005T"+ - "\u0000\u0000\u0490\u0491\u0005E\u0000\u0000\u0491\u0492\u0005R\u0000\u0000"+ - "\u0492 \u0001\u0000\u0000\u0000\u0493\u0494\u0005A\u0000\u0000\u0494\u0495"+ - "\u0005G\u0000\u0000\u0495\u0496\u0005G\u0000\u0000\u0496\u0497\u0005_"+ - "\u0000\u0000\u0497\u0498\u0005S\u0000\u0000\u0498\u0499\u0005T\u0000\u0000"+ - "\u0499\u049a\u0005A\u0000\u0000\u049a\u049b\u0005T\u0000\u0000\u049b\u049c"+ - "\u0005E\u0000\u0000\u049c\"\u0001\u0000\u0000\u0000\u049d\u049e\u0005"+ - "A\u0000\u0000\u049e\u049f\u0005G\u0000\u0000\u049f\u04a0\u0005G\u0000"+ - "\u0000\u04a0\u04a1\u0005R\u0000\u0000\u04a1\u04a2\u0005E\u0000\u0000\u04a2"+ - "\u04a3\u0005G\u0000\u0000\u04a3\u04a4\u0005A\u0000\u0000\u04a4\u04a5\u0005"+ - "T\u0000\u0000\u04a5\u04a6\u0005E\u0000\u0000\u04a6$\u0001\u0000\u0000"+ - "\u0000\u04a7\u04a8\u0005A\u0000\u0000\u04a8\u04a9\u0005L\u0000\u0000\u04a9"+ - "\u04aa\u0005I\u0000\u0000\u04aa\u04ab\u0005A\u0000\u0000\u04ab\u04ac\u0005"+ - "S\u0000\u0000\u04ac&\u0001\u0000\u0000\u0000\u04ad\u04ae\u0005A\u0000"+ - "\u0000\u04ae\u04af\u0005L\u0000\u0000\u04af\u04b0\u0005L\u0000\u0000\u04b0"+ - "(\u0001\u0000\u0000\u0000\u04b1\u04b2\u0005A\u0000\u0000\u04b2\u04b3\u0005"+ - "L\u0000\u0000\u04b3\u04b4\u0005T\u0000\u0000\u04b4\u04b5\u0005E\u0000"+ - "\u0000\u04b5\u04b6\u0005R\u0000\u0000\u04b6*\u0001\u0000\u0000\u0000\u04b7"+ - "\u04b8\u0005A\u0000\u0000\u04b8\u04b9\u0005N\u0000\u0000\u04b9\u04ba\u0005"+ - "A\u0000\u0000\u04ba\u04bb\u0005L\u0000\u0000\u04bb\u04bc\u0005Y\u0000"+ - "\u0000\u04bc\u04bd\u0005Z\u0000\u0000\u04bd\u04be\u0005E\u0000\u0000\u04be"+ - ",\u0001\u0000\u0000\u0000\u04bf\u04c0\u0005A\u0000\u0000\u04c0\u04c1\u0005"+ - "N\u0000\u0000\u04c1\u04c2\u0005A\u0000\u0000\u04c2\u04c3\u0005L\u0000"+ - "\u0000\u04c3\u04c4\u0005Y\u0000\u0000\u04c4\u04c5\u0005Z\u0000\u0000\u04c5"+ - "\u04c6\u0005E\u0000\u0000\u04c6\u04c7\u0005D\u0000\u0000\u04c7.\u0001"+ - "\u0000\u0000\u0000\u04c8\u04c9\u0005A\u0000\u0000\u04c9\u04ca\u0005N\u0000"+ - "\u0000\u04ca\u04cb\u0005D\u0000\u0000\u04cb0\u0001\u0000\u0000\u0000\u04cc"+ - "\u04cd\u0005A\u0000\u0000\u04cd\u04ce\u0005N\u0000\u0000\u04ce\u04cf\u0005"+ - "T\u0000\u0000\u04cf\u04d0\u0005I\u0000\u0000\u04d02\u0001\u0000\u0000"+ - "\u0000\u04d1\u04d2\u0005A\u0000\u0000\u04d2\u04d3\u0005P\u0000\u0000\u04d3"+ - "\u04d4\u0005P\u0000\u0000\u04d4\u04d5\u0005E\u0000\u0000\u04d5\u04d6\u0005"+ - "N\u0000\u0000\u04d6\u04d7\u0005D\u0000\u0000\u04d74\u0001\u0000\u0000"+ - "\u0000\u04d8\u04d9\u0005A\u0000\u0000\u04d9\u04da\u0005R\u0000\u0000\u04da"+ - "\u04db\u0005R\u0000\u0000\u04db\u04dc\u0005A\u0000\u0000\u04dc\u04dd\u0005"+ - "Y\u0000\u0000\u04dd6\u0001\u0000\u0000\u0000\u04de\u04df\u0005A\u0000"+ - "\u0000\u04df\u04e0\u0005S\u0000\u0000\u04e08\u0001\u0000\u0000\u0000\u04e1"+ - "\u04e2\u0005A\u0000\u0000\u04e2\u04e3\u0005S\u0000\u0000\u04e3\u04e4\u0005"+ - "C\u0000\u0000\u04e4:\u0001\u0000\u0000\u0000\u04e5\u04e6\u0005A\u0000"+ - "\u0000\u04e6\u04e7\u0005T\u0000\u0000\u04e7<\u0001\u0000\u0000\u0000\u04e8"+ - "\u04e9\u0005A\u0000\u0000\u04e9\u04ea\u0005U\u0000\u0000\u04ea\u04eb\u0005"+ - "T\u0000\u0000\u04eb\u04ec\u0005H\u0000\u0000\u04ec\u04ed\u0005O\u0000"+ - "\u0000\u04ed\u04ee\u0005R\u0000\u0000\u04ee\u04ef\u0005S\u0000\u0000\u04ef"+ - ">\u0001\u0000\u0000\u0000\u04f0\u04f1\u0005A\u0000\u0000\u04f1\u04f2\u0005"+ - "U\u0000\u0000\u04f2\u04f3\u0005T\u0000\u0000\u04f3\u04f4\u0005O\u0000"+ - "\u0000\u04f4@\u0001\u0000\u0000\u0000\u04f5\u04f6\u0005A\u0000\u0000\u04f6"+ - "\u04f7\u0005U\u0000\u0000\u04f7\u04f8\u0005T\u0000\u0000\u04f8\u04f9\u0005"+ - "O\u0000\u0000\u04f9\u04fa\u0005_\u0000\u0000\u04fa\u04fb\u0005I\u0000"+ - "\u0000\u04fb\u04fc\u0005N\u0000\u0000\u04fc\u04fd\u0005C\u0000\u0000\u04fd"+ - "\u04fe\u0005R\u0000\u0000\u04fe\u04ff\u0005E\u0000\u0000\u04ff\u0500\u0005"+ - "M\u0000\u0000\u0500\u0501\u0005E\u0000\u0000\u0501\u0502\u0005N\u0000"+ - "\u0000\u0502\u0503\u0005T\u0000\u0000\u0503B\u0001\u0000\u0000\u0000\u0504"+ - "\u0505\u0005A\u0000\u0000\u0505\u0506\u0005L\u0000\u0000\u0506\u0507\u0005"+ - "W\u0000\u0000\u0507\u0508\u0005A\u0000\u0000\u0508\u0509\u0005Y\u0000"+ - "\u0000\u0509\u050a\u0005S\u0000\u0000\u050aD\u0001\u0000\u0000\u0000\u050b"+ - "\u050c\u0005B\u0000\u0000\u050c\u050d\u0005A\u0000\u0000\u050d\u050e\u0005"+ - "C\u0000\u0000\u050e\u050f\u0005K\u0000\u0000\u050f\u0510\u0005E\u0000"+ - "\u0000\u0510\u0511\u0005N\u0000\u0000\u0511\u0512\u0005D\u0000\u0000\u0512"+ - "F\u0001\u0000\u0000\u0000\u0513\u0514\u0005B\u0000\u0000\u0514\u0515\u0005"+ - "A\u0000\u0000\u0515\u0516\u0005C\u0000\u0000\u0516\u0517\u0005K\u0000"+ - "\u0000\u0517\u0518\u0005E\u0000\u0000\u0518\u0519\u0005N\u0000\u0000\u0519"+ - "\u051a\u0005D\u0000\u0000\u051a\u051b\u0005S\u0000\u0000\u051bH\u0001"+ - "\u0000\u0000\u0000\u051c\u051d\u0005B\u0000\u0000\u051d\u051e\u0005A\u0000"+ - "\u0000\u051e\u051f\u0005C\u0000\u0000\u051f\u0520\u0005K\u0000\u0000\u0520"+ - "\u0521\u0005U\u0000\u0000\u0521\u0522\u0005P\u0000\u0000\u0522J\u0001"+ - "\u0000\u0000\u0000\u0523\u0524\u0005B\u0000\u0000\u0524\u0525\u0005E\u0000"+ - "\u0000\u0525\u0526\u0005G\u0000\u0000\u0526\u0527\u0005I\u0000\u0000\u0527"+ - "\u0528\u0005N\u0000\u0000\u0528L\u0001\u0000\u0000\u0000\u0529\u052a\u0005"+ - "B\u0000\u0000\u052a\u052b\u0005E\u0000\u0000\u052b\u052c\u0005L\u0000"+ - "\u0000\u052c\u052d\u0005O\u0000\u0000\u052d\u052e\u0005N\u0000\u0000\u052e"+ - "\u052f\u0005G\u0000\u0000\u052fN\u0001\u0000\u0000\u0000\u0530\u0531\u0005"+ - "B\u0000\u0000\u0531\u0532\u0005E\u0000\u0000\u0532\u0533\u0005T\u0000"+ - "\u0000\u0533\u0534\u0005W\u0000\u0000\u0534\u0535\u0005E\u0000\u0000\u0535"+ - "\u0536\u0005E\u0000\u0000\u0536\u0537\u0005N\u0000\u0000\u0537P\u0001"+ - "\u0000\u0000\u0000\u0538\u0539\u0005B\u0000\u0000\u0539\u053a\u0005I\u0000"+ - "\u0000\u053a\u053b\u0005G\u0000\u0000\u053b\u053c\u0005I\u0000\u0000\u053c"+ - "\u053d\u0005N\u0000\u0000\u053d\u053e\u0005T\u0000\u0000\u053eR\u0001"+ - "\u0000\u0000\u0000\u053f\u0540\u0005B\u0000\u0000\u0540\u0541\u0005I\u0000"+ - "\u0000\u0541\u0542\u0005N\u0000\u0000\u0542T\u0001\u0000\u0000\u0000\u0543"+ - "\u0544\u0005B\u0000\u0000\u0544\u0545\u0005I\u0000\u0000\u0545\u0546\u0005"+ - "N\u0000\u0000\u0546\u0547\u0005A\u0000\u0000\u0547\u0548\u0005R\u0000"+ - "\u0000\u0548\u0549\u0005Y\u0000\u0000\u0549V\u0001\u0000\u0000\u0000\u054a"+ - "\u054b\u0005B\u0000\u0000\u054b\u054c\u0005I\u0000\u0000\u054c\u054d\u0005"+ - "N\u0000\u0000\u054d\u054e\u0005L\u0000\u0000\u054e\u054f\u0005O\u0000"+ - "\u0000\u054f\u0550\u0005G\u0000\u0000\u0550X\u0001\u0000\u0000\u0000\u0551"+ - "\u0552\u0005B\u0000\u0000\u0552\u0553\u0005I\u0000\u0000\u0553\u0554\u0005"+ - "T\u0000\u0000\u0554\u0555\u0005A\u0000\u0000\u0555\u0556\u0005N\u0000"+ - "\u0000\u0556\u0557\u0005D\u0000\u0000\u0557Z\u0001\u0000\u0000\u0000\u0558"+ - "\u0559\u0005B\u0000\u0000\u0559\u055a\u0005I\u0000\u0000\u055a\u055b\u0005"+ - "T\u0000\u0000\u055b\u055c\u0005M\u0000\u0000\u055c\u055d\u0005A\u0000"+ - "\u0000\u055d\u055e\u0005P\u0000\u0000\u055e\\\u0001\u0000\u0000\u0000"+ - "\u055f\u0560\u0005B\u0000\u0000\u0560\u0561\u0005I\u0000\u0000\u0561\u0562"+ - "\u0005T\u0000\u0000\u0562\u0563\u0005M\u0000\u0000\u0563\u0564\u0005A"+ - "\u0000\u0000\u0564\u0565\u0005P\u0000\u0000\u0565\u0566\u0005_\u0000\u0000"+ - "\u0566\u0567\u0005E\u0000\u0000\u0567\u0568\u0005M\u0000\u0000\u0568\u0569"+ - "\u0005P\u0000\u0000\u0569\u056a\u0005T\u0000\u0000\u056a\u056b\u0005Y"+ - "\u0000\u0000\u056b^\u0001\u0000\u0000\u0000\u056c\u056d\u0005B\u0000\u0000"+ - "\u056d\u056e\u0005I\u0000\u0000\u056e\u056f\u0005T\u0000\u0000\u056f\u0570"+ - "\u0005M\u0000\u0000\u0570\u0571\u0005A\u0000\u0000\u0571\u0572\u0005P"+ - "\u0000\u0000\u0572\u0573\u0005_\u0000\u0000\u0573\u0574\u0005U\u0000\u0000"+ - "\u0574\u0575\u0005N\u0000\u0000\u0575\u0576\u0005I\u0000\u0000\u0576\u0577"+ - "\u0005O\u0000\u0000\u0577\u0578\u0005N\u0000\u0000\u0578`\u0001\u0000"+ - "\u0000\u0000\u0579\u057a\u0005B\u0000\u0000\u057a\u057b\u0005I\u0000\u0000"+ - "\u057b\u057c\u0005T\u0000\u0000\u057c\u057d\u0005O\u0000\u0000\u057d\u057e"+ - "\u0005R\u0000\u0000\u057eb\u0001\u0000\u0000\u0000\u057f\u0580\u0005B"+ - "\u0000\u0000\u0580\u0581\u0005I\u0000\u0000\u0581\u0582\u0005T\u0000\u0000"+ - "\u0582\u0583\u0005X\u0000\u0000\u0583\u0584\u0005O\u0000\u0000\u0584\u0585"+ - "\u0005R\u0000\u0000\u0585d\u0001\u0000\u0000\u0000\u0586\u0587\u0005B"+ - "\u0000\u0000\u0587\u0588\u0005L\u0000\u0000\u0588\u0589\u0005O\u0000\u0000"+ - "\u0589\u058a\u0005B\u0000\u0000\u058af\u0001\u0000\u0000\u0000\u058b\u058c"+ - "\u0005B\u0000\u0000\u058c\u058d\u0005O\u0000\u0000\u058d\u058e\u0005O"+ - "\u0000\u0000\u058e\u058f\u0005L\u0000\u0000\u058f\u0590\u0005E\u0000\u0000"+ - "\u0590\u0591\u0005A\u0000\u0000\u0591\u0592\u0005N\u0000\u0000\u0592h"+ - "\u0001\u0000\u0000\u0000\u0593\u0594\u0005B\u0000\u0000\u0594\u0595\u0005"+ - "R\u0000\u0000\u0595\u0596\u0005I\u0000\u0000\u0596\u0597\u0005E\u0000"+ - "\u0000\u0597\u0598\u0005F\u0000\u0000\u0598j\u0001\u0000\u0000\u0000\u0599"+ - "\u059a\u0005B\u0000\u0000\u059a\u059b\u0005R\u0000\u0000\u059b\u059c\u0005"+ - "O\u0000\u0000\u059c\u059d\u0005K\u0000\u0000\u059d\u059e\u0005E\u0000"+ - "\u0000\u059e\u059f\u0005R\u0000\u0000\u059fl\u0001\u0000\u0000\u0000\u05a0"+ - "\u05a1\u0005B\u0000\u0000\u05a1\u05a2\u0005U\u0000\u0000\u05a2\u05a3\u0005"+ - "C\u0000\u0000\u05a3\u05a4\u0005K\u0000\u0000\u05a4\u05a5\u0005E\u0000"+ - "\u0000\u05a5\u05a6\u0005T\u0000\u0000\u05a6\u05a7\u0005S\u0000\u0000\u05a7"+ - "n\u0001\u0000\u0000\u0000\u05a8\u05a9\u0005B\u0000\u0000\u05a9\u05aa\u0005"+ - "U\u0000\u0000\u05aa\u05ab\u0005I\u0000\u0000\u05ab\u05ac\u0005L\u0000"+ - "\u0000\u05ac\u05ad\u0005D\u0000\u0000\u05adp\u0001\u0000\u0000\u0000\u05ae"+ - "\u05af\u0005B\u0000\u0000\u05af\u05b0\u0005U\u0000\u0000\u05b0\u05b1\u0005"+ - "I\u0000\u0000\u05b1\u05b2\u0005L\u0000\u0000\u05b2\u05b3\u0005T\u0000"+ - "\u0000\u05b3\u05b4\u0005I\u0000\u0000\u05b4\u05b5\u0005N\u0000\u0000\u05b5"+ - "r\u0001\u0000\u0000\u0000\u05b6\u05b7\u0005B\u0000\u0000\u05b7\u05b8\u0005"+ - "U\u0000\u0000\u05b8\u05b9\u0005L\u0000\u0000\u05b9\u05ba\u0005K\u0000"+ - "\u0000\u05bat\u0001\u0000\u0000\u0000\u05bb\u05bc\u0005B\u0000\u0000\u05bc"+ - "\u05bd\u0005Y\u0000\u0000\u05bdv\u0001\u0000\u0000\u0000\u05be\u05bf\u0005"+ - "C\u0000\u0000\u05bf\u05c0\u0005A\u0000\u0000\u05c0\u05c1\u0005C\u0000"+ - "\u0000\u05c1\u05c2\u0005H\u0000\u0000\u05c2\u05c3\u0005E\u0000\u0000\u05c3"+ - "x\u0001\u0000\u0000\u0000\u05c4\u05c5\u0005C\u0000\u0000\u05c5\u05c6\u0005"+ - "A\u0000\u0000\u05c6\u05c7\u0005C\u0000\u0000\u05c7\u05c8\u0005H\u0000"+ - "\u0000\u05c8\u05c9\u0005E\u0000\u0000\u05c9\u05ca\u0005D\u0000\u0000\u05ca"+ - "z\u0001\u0000\u0000\u0000\u05cb\u05cc\u0005C\u0000\u0000\u05cc\u05cd\u0005"+ - "A\u0000\u0000\u05cd\u05ce\u0005L\u0000\u0000\u05ce\u05cf\u0005L\u0000"+ - "\u0000\u05cf|\u0001\u0000\u0000\u0000\u05d0\u05d1\u0005C\u0000\u0000\u05d1"+ - "\u05d2\u0005A\u0000\u0000\u05d2\u05d3\u0005N\u0000\u0000\u05d3\u05d4\u0005"+ - "C\u0000\u0000\u05d4\u05d5\u0005E\u0000\u0000\u05d5\u05d6\u0005L\u0000"+ - "\u0000\u05d6~\u0001\u0000\u0000\u0000\u05d7\u05d8\u0005C\u0000\u0000\u05d8"+ - "\u05d9\u0005A\u0000\u0000\u05d9\u05da\u0005S\u0000\u0000\u05da\u05db\u0005"+ - "E\u0000\u0000\u05db\u0080\u0001\u0000\u0000\u0000\u05dc\u05dd\u0005C\u0000"+ - "\u0000\u05dd\u05de\u0005A\u0000\u0000\u05de\u05df\u0005S\u0000\u0000\u05df"+ - "\u05e0\u0005T\u0000\u0000\u05e0\u0082\u0001\u0000\u0000\u0000\u05e1\u05e2"+ - "\u0005C\u0000\u0000\u05e2\u05e3\u0005A\u0000\u0000\u05e3\u05e4\u0005T"+ - "\u0000\u0000\u05e4\u05e5\u0005A\u0000\u0000\u05e5\u05e6\u0005L\u0000\u0000"+ - "\u05e6\u05e7\u0005O\u0000\u0000\u05e7\u05e8\u0005G\u0000\u0000\u05e8\u0084"+ - "\u0001\u0000\u0000\u0000\u05e9\u05ea\u0005C\u0000\u0000\u05ea\u05eb\u0005"+ - "A\u0000\u0000\u05eb\u05ec\u0005T\u0000\u0000\u05ec\u05ed\u0005A\u0000"+ - "\u0000\u05ed\u05ee\u0005L\u0000\u0000\u05ee\u05ef\u0005O\u0000\u0000\u05ef"+ - "\u05f0\u0005G\u0000\u0000\u05f0\u05f1\u0005S\u0000\u0000\u05f1\u0086\u0001"+ - "\u0000\u0000\u0000\u05f2\u05f3\u0005C\u0000\u0000\u05f3\u05f4\u0005H\u0000"+ - "\u0000\u05f4\u05f5\u0005A\u0000\u0000\u05f5\u05f6\u0005I\u0000\u0000\u05f6"+ - "\u05f7\u0005N\u0000\u0000\u05f7\u0088\u0001\u0000\u0000\u0000\u05f8\u05f9"+ - "\u0005C\u0000\u0000\u05f9\u05fa\u0005H\u0000\u0000\u05fa\u05fb\u0005A"+ - "\u0000\u0000\u05fb\u0606\u0005R\u0000\u0000\u05fc\u05fd\u0005C\u0000\u0000"+ - "\u05fd\u05fe\u0005H\u0000\u0000\u05fe\u05ff\u0005A\u0000\u0000\u05ff\u0600"+ - "\u0005R\u0000\u0000\u0600\u0601\u0005A\u0000\u0000\u0601\u0602\u0005C"+ - "\u0000\u0000\u0602\u0603\u0005T\u0000\u0000\u0603\u0604\u0005E\u0000\u0000"+ - "\u0604\u0606\u0005R\u0000\u0000\u0605\u05f8\u0001\u0000\u0000\u0000\u0605"+ - "\u05fc\u0001\u0000\u0000\u0000\u0606\u008a\u0001\u0000\u0000\u0000\u0607"+ - "\u0608\u0005C\u0000\u0000\u0608\u0609\u0005H\u0000\u0000\u0609\u060a\u0005"+ - "A\u0000\u0000\u060a\u060b\u0005R\u0000\u0000\u060b\u060c\u0005S\u0000"+ - "\u0000\u060c\u060d\u0005E\u0000\u0000\u060d\u060e\u0005T\u0000\u0000\u060e"+ - "\u008c\u0001\u0000\u0000\u0000\u060f\u0610\u0005C\u0000\u0000\u0610\u0611"+ - "\u0005H\u0000\u0000\u0611\u0612\u0005E\u0000\u0000\u0612\u0613\u0005C"+ - "\u0000\u0000\u0613\u0614\u0005K\u0000\u0000\u0614\u008e\u0001\u0000\u0000"+ - "\u0000\u0615\u0616\u0005C\u0000\u0000\u0616\u0617\u0005L\u0000\u0000\u0617"+ - "\u0618\u0005E\u0000\u0000\u0618\u0619\u0005A\u0000\u0000\u0619\u061a\u0005"+ - "N\u0000\u0000\u061a\u0090\u0001\u0000\u0000\u0000\u061b\u061c\u0005C\u0000"+ - "\u0000\u061c\u061d\u0005L\u0000\u0000\u061d\u061e\u0005U\u0000\u0000\u061e"+ - "\u061f\u0005S\u0000\u0000\u061f\u0620\u0005T\u0000\u0000\u0620\u0621\u0005"+ - "E\u0000\u0000\u0621\u0622\u0005R\u0000\u0000\u0622\u0092\u0001\u0000\u0000"+ - "\u0000\u0623\u0624\u0005C\u0000\u0000\u0624\u0625\u0005L\u0000\u0000\u0625"+ - "\u0626\u0005U\u0000\u0000\u0626\u0627\u0005S\u0000\u0000\u0627\u0628\u0005"+ - "T\u0000\u0000\u0628\u0629\u0005E\u0000\u0000\u0629\u062a\u0005R\u0000"+ - "\u0000\u062a\u062b\u0005S\u0000\u0000\u062b\u0094\u0001\u0000\u0000\u0000"+ - "\u062c\u062d\u0005C\u0000\u0000\u062d\u062e\u0005O\u0000\u0000\u062e\u062f"+ - "\u0005L\u0000\u0000\u062f\u0630\u0005L\u0000\u0000\u0630\u0631\u0005A"+ - "\u0000\u0000\u0631\u0632\u0005T\u0000\u0000\u0632\u0633\u0005E\u0000\u0000"+ - "\u0633\u0096\u0001\u0000\u0000\u0000\u0634\u0635\u0005C\u0000\u0000\u0635"+ - "\u0636\u0005O\u0000\u0000\u0636\u0637\u0005L\u0000\u0000\u0637\u0638\u0005"+ - "L\u0000\u0000\u0638\u0639\u0005A\u0000\u0000\u0639\u063a\u0005T\u0000"+ - "\u0000\u063a\u063b\u0005I\u0000\u0000\u063b\u063c\u0005O\u0000\u0000\u063c"+ - "\u063d\u0005N\u0000\u0000\u063d\u0098\u0001\u0000\u0000\u0000\u063e\u063f"+ - "\u0005C\u0000\u0000\u063f\u0640\u0005O\u0000\u0000\u0640\u0641\u0005L"+ - "\u0000\u0000\u0641\u0642\u0005L\u0000\u0000\u0642\u0643\u0005E\u0000\u0000"+ - "\u0643\u0644\u0005C\u0000\u0000\u0644\u0645\u0005T\u0000\u0000\u0645\u009a"+ - "\u0001\u0000\u0000\u0000\u0646\u0647\u0005C\u0000\u0000\u0647\u0648\u0005"+ - "O\u0000\u0000\u0648\u0649\u0005L\u0000\u0000\u0649\u064a\u0005O\u0000"+ - "\u0000\u064a\u064b\u0005C\u0000\u0000\u064b\u064c\u0005A\u0000\u0000\u064c"+ - "\u064d\u0005T\u0000\u0000\u064d\u064e\u0005E\u0000\u0000\u064e\u009c\u0001"+ - "\u0000\u0000\u0000\u064f\u0650\u0005C\u0000\u0000\u0650\u0651\u0005O\u0000"+ - "\u0000\u0651\u0652\u0005L\u0000\u0000\u0652\u0653\u0005U\u0000\u0000\u0653"+ - "\u0654\u0005M\u0000\u0000\u0654\u0655\u0005N\u0000\u0000\u0655\u009e\u0001"+ - "\u0000\u0000\u0000\u0656\u0657\u0005C\u0000\u0000\u0657\u0658\u0005O\u0000"+ - "\u0000\u0658\u0659\u0005L\u0000\u0000\u0659\u065a\u0005U\u0000\u0000\u065a"+ - "\u065b\u0005M\u0000\u0000\u065b\u065c\u0005N\u0000\u0000\u065c\u065d\u0005"+ - "S\u0000\u0000\u065d\u00a0\u0001\u0000\u0000\u0000\u065e\u065f\u0005C\u0000"+ - "\u0000\u065f\u0660\u0005O\u0000\u0000\u0660\u0661\u0005M\u0000\u0000\u0661"+ - "\u0662\u0005M\u0000\u0000\u0662\u0663\u0005E\u0000\u0000\u0663\u0664\u0005"+ - "N\u0000\u0000\u0664\u0665\u0005T\u0000\u0000\u0665\u00a2\u0001\u0000\u0000"+ - "\u0000\u0666\u0667\u0005C\u0000\u0000\u0667\u0668\u0005O\u0000\u0000\u0668"+ - "\u0669\u0005M\u0000\u0000\u0669\u066a\u0005M\u0000\u0000\u066a\u066b\u0005"+ - "I\u0000\u0000\u066b\u066c\u0005T\u0000\u0000\u066c\u00a4\u0001\u0000\u0000"+ - "\u0000\u066d\u066e\u0005C\u0000\u0000\u066e\u066f\u0005O\u0000\u0000\u066f"+ - "\u0670\u0005M\u0000\u0000\u0670\u0671\u0005M\u0000\u0000\u0671\u0672\u0005"+ - "I\u0000\u0000\u0672\u0673\u0005T\u0000\u0000\u0673\u0674\u0005T\u0000"+ - "\u0000\u0674\u0675\u0005E\u0000\u0000\u0675\u0676\u0005D\u0000\u0000\u0676"+ - "\u00a6\u0001\u0000\u0000\u0000\u0677\u0678\u0005C\u0000\u0000\u0678\u0679"+ - "\u0005O\u0000\u0000\u0679\u067a\u0005M\u0000\u0000\u067a\u067b\u0005P"+ - "\u0000\u0000\u067b\u067c\u0005A\u0000\u0000\u067c\u067d\u0005C\u0000\u0000"+ - "\u067d\u067e\u0005T\u0000\u0000\u067e\u00a8\u0001\u0000\u0000\u0000\u067f"+ - "\u0680\u0005C\u0000\u0000\u0680\u0681\u0005O\u0000\u0000\u0681\u0682\u0005"+ - "M\u0000\u0000\u0682\u0683\u0005P\u0000\u0000\u0683\u0684\u0005L\u0000"+ - "\u0000\u0684\u0685\u0005E\u0000\u0000\u0685\u0686\u0005T\u0000\u0000\u0686"+ - "\u0687\u0005E\u0000\u0000\u0687\u00aa\u0001\u0000\u0000\u0000\u0688\u0689"+ - "\u0005C\u0000\u0000\u0689\u068a\u0005O\u0000\u0000\u068a\u068b\u0005M"+ - "\u0000\u0000\u068b\u068c\u0005P\u0000\u0000\u068c\u068d\u0005R\u0000\u0000"+ - "\u068d\u068e\u0005E\u0000"; - private static final String _serializedATNSegment1 = - "\u0000\u068e\u068f\u0005S\u0000\u0000\u068f\u0690\u0005S\u0000\u0000\u0690"+ - "\u0691\u0005_\u0000\u0000\u0691\u0692\u0005T\u0000\u0000\u0692\u0693\u0005"+ - "Y\u0000\u0000\u0693\u0694\u0005P\u0000\u0000\u0694\u0695\u0005E\u0000"+ - "\u0000\u0695\u00ac\u0001\u0000\u0000\u0000\u0696\u0697\u0005C\u0000\u0000"+ - "\u0697\u0698\u0005O\u0000\u0000\u0698\u0699\u0005M\u0000\u0000\u0699\u069a"+ - "\u0005P\u0000\u0000\u069a\u069b\u0005U\u0000\u0000\u069b\u069c\u0005T"+ - "\u0000\u0000\u069c\u069d\u0005E\u0000\u0000\u069d\u00ae\u0001\u0000\u0000"+ - "\u0000\u069e\u069f\u0005C\u0000\u0000\u069f\u06a0\u0005O\u0000\u0000\u06a0"+ - "\u06a1\u0005N\u0000\u0000\u06a1\u06a2\u0005D\u0000\u0000\u06a2\u06a3\u0005"+ - "I\u0000\u0000\u06a3\u06a4\u0005T\u0000\u0000\u06a4\u06a5\u0005I\u0000"+ - "\u0000\u06a5\u06a6\u0005O\u0000\u0000\u06a6\u06a7\u0005N\u0000\u0000\u06a7"+ - "\u06a8\u0005S\u0000\u0000\u06a8\u00b0\u0001\u0000\u0000\u0000\u06a9\u06aa"+ - "\u0005C\u0000\u0000\u06aa\u06ab\u0005O\u0000\u0000\u06ab\u06ac\u0005N"+ - "\u0000\u0000\u06ac\u06ad\u0005F\u0000\u0000\u06ad\u06ae\u0005I\u0000\u0000"+ - "\u06ae\u06af\u0005G\u0000\u0000\u06af\u00b2\u0001\u0000\u0000\u0000\u06b0"+ - "\u06b1\u0005C\u0000\u0000\u06b1\u06b2\u0005O\u0000\u0000\u06b2\u06b3\u0005"+ - "N\u0000\u0000\u06b3\u06b4\u0005N\u0000\u0000\u06b4\u06b5\u0005E\u0000"+ - "\u0000\u06b5\u06b6\u0005C\u0000\u0000\u06b6\u06b7\u0005T\u0000\u0000\u06b7"+ - "\u06b8\u0005I\u0000\u0000\u06b8\u06b9\u0005O\u0000\u0000\u06b9\u06ba\u0005"+ - "N\u0000\u0000\u06ba\u00b4\u0001\u0000\u0000\u0000\u06bb\u06bc\u0005C\u0000"+ - "\u0000\u06bc\u06bd\u0005O\u0000\u0000\u06bd\u06be\u0005N\u0000\u0000\u06be"+ - "\u06bf\u0005N\u0000\u0000\u06bf\u06c0\u0005E\u0000\u0000\u06c0\u06c1\u0005"+ - "C\u0000\u0000\u06c1\u06c2\u0005T\u0000\u0000\u06c2\u06c3\u0005I\u0000"+ - "\u0000\u06c3\u06c4\u0005O\u0000\u0000\u06c4\u06c5\u0005N\u0000\u0000\u06c5"+ - "\u06c6\u0005_\u0000\u0000\u06c6\u06c7\u0005I\u0000\u0000\u06c7\u06c8\u0005"+ - "D\u0000\u0000\u06c8\u00b6\u0001\u0000\u0000\u0000\u06c9\u06ca\u0005C\u0000"+ - "\u0000\u06ca\u06cb\u0005O\u0000\u0000\u06cb\u06cc\u0005N\u0000\u0000\u06cc"+ - "\u06cd\u0005S\u0000\u0000\u06cd\u06ce\u0005I\u0000\u0000\u06ce\u06cf\u0005"+ - "S\u0000\u0000\u06cf\u06d0\u0005T\u0000\u0000\u06d0\u06d1\u0005E\u0000"+ - "\u0000\u06d1\u06d2\u0005N\u0000\u0000\u06d2\u06d3\u0005T\u0000\u0000\u06d3"+ - "\u00b8\u0001\u0000\u0000\u0000\u06d4\u06d5\u0005C\u0000\u0000\u06d5\u06d6"+ - "\u0005O\u0000\u0000\u06d6\u06d7\u0005N\u0000\u0000\u06d7\u06d8\u0005S"+ - "\u0000\u0000\u06d8\u06d9\u0005T\u0000\u0000\u06d9\u06da\u0005R\u0000\u0000"+ - "\u06da\u06db\u0005A\u0000\u0000\u06db\u06dc\u0005I\u0000\u0000\u06dc\u06dd"+ - "\u0005N\u0000\u0000\u06dd\u06de\u0005T\u0000\u0000\u06de\u00ba\u0001\u0000"+ - "\u0000\u0000\u06df\u06e0\u0005C\u0000\u0000\u06e0\u06e1\u0005O\u0000\u0000"+ - "\u06e1\u06e2\u0005N\u0000\u0000\u06e2\u06e3\u0005S\u0000\u0000\u06e3\u06e4"+ - "\u0005T\u0000\u0000\u06e4\u06e5\u0005R\u0000\u0000\u06e5\u06e6\u0005A"+ - "\u0000\u0000\u06e6\u06e7\u0005I\u0000\u0000\u06e7\u06e8\u0005N\u0000\u0000"+ - "\u06e8\u06e9\u0005T\u0000\u0000\u06e9\u06ea\u0005S\u0000\u0000\u06ea\u00bc"+ - "\u0001\u0000\u0000\u0000\u06eb\u06ec\u0005C\u0000\u0000\u06ec\u06ed\u0005"+ - "O\u0000\u0000\u06ed\u06ee\u0005N\u0000\u0000\u06ee\u06ef\u0005V\u0000"+ - "\u0000\u06ef\u06f0\u0005E\u0000\u0000\u06f0\u06f1\u0005R\u0000\u0000\u06f1"+ - "\u06f2\u0005T\u0000\u0000\u06f2\u00be\u0001\u0000\u0000\u0000\u06f3\u06f4"+ - "\u0005C\u0000\u0000\u06f4\u06f5\u0005O\u0000\u0000\u06f5\u06f6\u0005N"+ - "\u0000\u0000\u06f6\u06f7\u0005V\u0000\u0000\u06f7\u06f8\u0005E\u0000\u0000"+ - "\u06f8\u06f9\u0005R\u0000\u0000\u06f9\u06fa\u0005T\u0000\u0000\u06fa\u06fb"+ - "\u0005_\u0000\u0000\u06fb\u06fc\u0005L\u0000\u0000\u06fc\u06fd\u0005I"+ - "\u0000\u0000\u06fd\u06fe\u0005G\u0000\u0000\u06fe\u06ff\u0005H\u0000\u0000"+ - "\u06ff\u0700\u0005T\u0000\u0000\u0700\u0701\u0005_\u0000\u0000\u0701\u0702"+ - "\u0005S\u0000\u0000\u0702\u0703\u0005C\u0000\u0000\u0703\u0704\u0005H"+ - "\u0000\u0000\u0704\u0705\u0005E\u0000\u0000\u0705\u0706\u0005M\u0000\u0000"+ - "\u0706\u0707\u0005A\u0000\u0000\u0707\u0708\u0005_\u0000\u0000\u0708\u0709"+ - "\u0005C\u0000\u0000\u0709\u070a\u0005H\u0000\u0000\u070a\u070b\u0005A"+ - "\u0000\u0000\u070b\u070c\u0005N\u0000\u0000\u070c\u070d\u0005G\u0000\u0000"+ - "\u070d\u070e\u0005E\u0000\u0000\u070e\u070f\u0005_\u0000\u0000\u070f\u0710"+ - "\u0005P\u0000\u0000\u0710\u0711\u0005R\u0000\u0000\u0711\u0712\u0005O"+ - "\u0000\u0000\u0712\u0713\u0005C\u0000\u0000\u0713\u0714\u0005E\u0000\u0000"+ - "\u0714\u0715\u0005S\u0000\u0000\u0715\u0716\u0005S\u0000\u0000\u0716\u00c0"+ - "\u0001\u0000\u0000\u0000\u0717\u0718\u0005C\u0000\u0000\u0718\u0719\u0005"+ - "O\u0000\u0000\u0719\u071a\u0005P\u0000\u0000\u071a\u071b\u0005Y\u0000"+ - "\u0000\u071b\u00c2\u0001\u0000\u0000\u0000\u071c\u071d\u0005C\u0000\u0000"+ - "\u071d\u071e\u0005O\u0000\u0000\u071e\u071f\u0005U\u0000\u0000\u071f\u0720"+ - "\u0005N\u0000\u0000\u0720\u0721\u0005T\u0000\u0000\u0721\u00c4\u0001\u0000"+ - "\u0000\u0000\u0722\u0723\u0005C\u0000\u0000\u0723\u0724\u0005R\u0000\u0000"+ - "\u0724\u0725\u0005E\u0000\u0000\u0725\u0726\u0005A\u0000\u0000\u0726\u0727"+ - "\u0005T\u0000\u0000\u0727\u0728\u0005E\u0000\u0000\u0728\u00c6\u0001\u0000"+ - "\u0000\u0000\u0729\u072a\u0005C\u0000\u0000\u072a\u072b\u0005R\u0000\u0000"+ - "\u072b\u072c\u0005E\u0000\u0000\u072c\u072d\u0005A\u0000\u0000\u072d\u072e"+ - "\u0005T\u0000\u0000\u072e\u072f\u0005I\u0000\u0000\u072f\u0730\u0005O"+ - "\u0000\u0000\u0730\u0731\u0005N\u0000\u0000\u0731\u00c8\u0001\u0000\u0000"+ - "\u0000\u0732\u0733\u0005C\u0000\u0000\u0733\u0734\u0005R\u0000\u0000\u0734"+ - "\u0735\u0005O\u0000\u0000\u0735\u0736\u0005N\u0000\u0000\u0736\u00ca\u0001"+ - "\u0000\u0000\u0000\u0737\u0738\u0005C\u0000\u0000\u0738\u0739\u0005R\u0000"+ - "\u0000\u0739\u073a\u0005O\u0000\u0000\u073a\u073b\u0005S\u0000\u0000\u073b"+ - "\u073c\u0005S\u0000\u0000\u073c\u00cc\u0001\u0000\u0000\u0000\u073d\u073e"+ - "\u0005C\u0000\u0000\u073e\u073f\u0005U\u0000\u0000\u073f\u0740\u0005B"+ - "\u0000\u0000\u0740\u0741\u0005E\u0000\u0000\u0741\u00ce\u0001\u0000\u0000"+ - "\u0000\u0742\u0743\u0005C\u0000\u0000\u0743\u0744\u0005U\u0000\u0000\u0744"+ - "\u0745\u0005R\u0000\u0000\u0745\u0746\u0005R\u0000\u0000\u0746\u0747\u0005"+ - "E\u0000\u0000\u0747\u0748\u0005N\u0000\u0000\u0748\u0749\u0005T\u0000"+ - "\u0000\u0749\u00d0\u0001\u0000\u0000\u0000\u074a\u074b\u0005C\u0000\u0000"+ - "\u074b\u074c\u0005U\u0000\u0000\u074c\u074d\u0005R\u0000\u0000\u074d\u074e"+ - "\u0005R\u0000\u0000\u074e\u074f\u0005E\u0000\u0000\u074f\u0750\u0005N"+ - "\u0000\u0000\u0750\u0751\u0005T\u0000\u0000\u0751\u0752\u0005_\u0000\u0000"+ - "\u0752\u0753\u0005C\u0000\u0000\u0753\u0754\u0005A\u0000\u0000\u0754\u0755"+ - "\u0005T\u0000\u0000\u0755\u0756\u0005A\u0000\u0000\u0756\u0757\u0005L"+ - "\u0000\u0000\u0757\u0758\u0005O\u0000\u0000\u0758\u0759\u0005G\u0000\u0000"+ - "\u0759\u00d2\u0001\u0000\u0000\u0000\u075a\u075b\u0005C\u0000\u0000\u075b"+ - "\u075c\u0005U\u0000\u0000\u075c\u075d\u0005R\u0000\u0000\u075d\u075e\u0005"+ - "R\u0000\u0000\u075e\u075f\u0005E\u0000\u0000\u075f\u0760\u0005N\u0000"+ - "\u0000\u0760\u0761\u0005T\u0000\u0000\u0761\u0762\u0005_\u0000\u0000\u0762"+ - "\u0763\u0005D\u0000\u0000\u0763\u0764\u0005A\u0000\u0000\u0764\u0765\u0005"+ - "T\u0000\u0000\u0765\u0766\u0005E\u0000\u0000\u0766\u00d4\u0001\u0000\u0000"+ - "\u0000\u0767\u0768\u0005C\u0000\u0000\u0768\u0769\u0005U\u0000\u0000\u0769"+ - "\u076a\u0005R\u0000\u0000\u076a\u076b\u0005R\u0000\u0000\u076b\u076c\u0005"+ - "E\u0000\u0000\u076c\u076d\u0005N\u0000\u0000\u076d\u076e\u0005T\u0000"+ - "\u0000\u076e\u076f\u0005_\u0000\u0000\u076f\u0770\u0005T\u0000\u0000\u0770"+ - "\u0771\u0005I\u0000\u0000\u0771\u0772\u0005M\u0000\u0000\u0772\u0773\u0005"+ - "E\u0000\u0000\u0773\u00d6\u0001\u0000\u0000\u0000\u0774\u0775\u0005C\u0000"+ - "\u0000\u0775\u0776\u0005U\u0000\u0000\u0776\u0777\u0005R\u0000\u0000\u0777"+ - "\u0778\u0005R\u0000\u0000\u0778\u0779\u0005E\u0000\u0000\u0779\u077a\u0005"+ - "N\u0000\u0000\u077a\u077b\u0005T\u0000\u0000\u077b\u077c\u0005_\u0000"+ - "\u0000\u077c\u077d\u0005T\u0000\u0000\u077d\u077e\u0005I\u0000\u0000\u077e"+ - "\u077f\u0005M\u0000\u0000\u077f\u0780\u0005E\u0000\u0000\u0780\u0781\u0005"+ - "S\u0000\u0000\u0781\u0782\u0005T\u0000\u0000\u0782\u0783\u0005A\u0000"+ - "\u0000\u0783\u0784\u0005M\u0000\u0000\u0784\u0785\u0005P\u0000\u0000\u0785"+ - "\u00d8\u0001\u0000\u0000\u0000\u0786\u0787\u0005C\u0000\u0000\u0787\u0788"+ - "\u0005U\u0000\u0000\u0788\u0789\u0005R\u0000\u0000\u0789\u078a\u0005R"+ - "\u0000\u0000\u078a\u078b\u0005E\u0000\u0000\u078b\u078c\u0005N\u0000\u0000"+ - "\u078c\u078d\u0005T\u0000\u0000\u078d\u078e\u0005_\u0000\u0000\u078e\u078f"+ - "\u0005U\u0000\u0000\u078f\u0790\u0005S\u0000\u0000\u0790\u0791\u0005E"+ - "\u0000\u0000\u0791\u0792\u0005R\u0000\u0000\u0792\u00da\u0001\u0000\u0000"+ - "\u0000\u0793\u0794\u0005D\u0000\u0000\u0794\u0795\u0005A\u0000\u0000\u0795"+ - "\u0796\u0005T\u0000\u0000\u0796\u0797\u0005A\u0000\u0000\u0797\u00dc\u0001"+ - "\u0000\u0000\u0000\u0798\u0799\u0005D\u0000\u0000\u0799\u079a\u0005A\u0000"+ - "\u0000\u079a\u079b\u0005T\u0000\u0000\u079b\u079c\u0005A\u0000\u0000\u079c"+ - "\u079d\u0005B\u0000\u0000\u079d\u079e\u0005A\u0000\u0000\u079e\u079f\u0005"+ - "S\u0000\u0000\u079f\u07a0\u0005E\u0000\u0000\u07a0\u00de\u0001\u0000\u0000"+ - "\u0000\u07a1\u07a2\u0005D\u0000\u0000\u07a2\u07a3\u0005A\u0000\u0000\u07a3"+ - "\u07a4\u0005T\u0000\u0000\u07a4\u07a5\u0005A\u0000\u0000\u07a5\u07a6\u0005"+ - "B\u0000\u0000\u07a6\u07a7\u0005A\u0000\u0000\u07a7\u07a8\u0005S\u0000"+ - "\u0000\u07a8\u07a9\u0005E\u0000\u0000\u07a9\u07aa\u0005S\u0000\u0000\u07aa"+ - "\u00e0\u0001\u0000\u0000\u0000\u07ab\u07ac\u0005D\u0000\u0000\u07ac\u07ad"+ - "\u0005A\u0000\u0000\u07ad\u07ae\u0005T\u0000\u0000\u07ae\u07af\u0005E"+ - "\u0000\u0000\u07af\u00e2\u0001\u0000\u0000\u0000\u07b0\u07b1\u0005D\u0000"+ - "\u0000\u07b1\u07b2\u0005A\u0000\u0000\u07b2\u07b3\u0005T\u0000\u0000\u07b3"+ - "\u07b4\u0005E\u0000\u0000\u07b4\u07b5\u0005T\u0000\u0000\u07b5\u07b6\u0005"+ - "I\u0000\u0000\u07b6\u07b7\u0005M\u0000\u0000\u07b7\u07b8\u0005E\u0000"+ - "\u0000\u07b8\u00e4\u0001\u0000\u0000\u0000\u07b9\u07ba\u0005D\u0000\u0000"+ - "\u07ba\u07bb\u0005A\u0000\u0000\u07bb\u07bc\u0005T\u0000\u0000\u07bc\u07bd"+ - "\u0005E\u0000\u0000\u07bd\u07be\u0005T\u0000\u0000\u07be\u07bf\u0005I"+ - "\u0000\u0000\u07bf\u07c0\u0005M\u0000\u0000\u07c0\u07c1\u0005E\u0000\u0000"+ - "\u07c1\u07c2\u0005V\u0000\u0000\u07c2\u07c3\u00052\u0000\u0000\u07c3\u00e6"+ - "\u0001\u0000\u0000\u0000\u07c4\u07c5\u0005D\u0000\u0000\u07c5\u07c6\u0005"+ - "A\u0000\u0000\u07c6\u07c7\u0005T\u0000\u0000\u07c7\u07c8\u0005E\u0000"+ - "\u0000\u07c8\u07c9\u0005V\u0000\u0000\u07c9\u07ca\u00052\u0000\u0000\u07ca"+ - "\u00e8\u0001\u0000\u0000\u0000\u07cb\u07cc\u0005D\u0000\u0000\u07cc\u07cd"+ - "\u0005A\u0000\u0000\u07cd\u07ce\u0005T\u0000\u0000\u07ce\u07cf\u0005E"+ - "\u0000\u0000\u07cf\u07d0\u0005T\u0000\u0000\u07d0\u07d1\u0005I\u0000\u0000"+ - "\u07d1\u07d2\u0005M\u0000\u0000\u07d2\u07d3\u0005E\u0000\u0000\u07d3\u07d4"+ - "\u0005V\u0000\u0000\u07d4\u07d5\u00051\u0000\u0000\u07d5\u00ea\u0001\u0000"+ - "\u0000\u0000\u07d6\u07d7\u0005D\u0000\u0000\u07d7\u07d8\u0005A\u0000\u0000"+ - "\u07d8\u07d9\u0005T\u0000\u0000\u07d9\u07da\u0005E\u0000\u0000\u07da\u07db"+ - "\u0005V\u0000\u0000\u07db\u07dc\u00051\u0000\u0000\u07dc\u00ec\u0001\u0000"+ - "\u0000\u0000\u07dd\u07de\u0005D\u0000\u0000\u07de\u07df\u0005A\u0000\u0000"+ - "\u07df\u07e0\u0005Y\u0000\u0000\u07e0\u00ee\u0001\u0000\u0000\u0000\u07e1"+ - "\u07e2\u0005D\u0000\u0000\u07e2\u07e3\u0005E\u0000\u0000\u07e3\u07e4\u0005"+ - "C\u0000\u0000\u07e4\u07e5\u0005I\u0000\u0000\u07e5\u07e6\u0005M\u0000"+ - "\u0000\u07e6\u07e7\u0005A\u0000\u0000\u07e7\u07e8\u0005L\u0000\u0000\u07e8"+ - "\u00f0\u0001\u0000\u0000\u0000\u07e9\u07ea\u0005D\u0000\u0000\u07ea\u07eb"+ - "\u0005E\u0000\u0000\u07eb\u07ec\u0005C\u0000\u0000\u07ec\u07ed\u0005I"+ - "\u0000\u0000\u07ed\u07ee\u0005M\u0000\u0000\u07ee\u07ef\u0005A\u0000\u0000"+ - "\u07ef\u07f0\u0005L\u0000\u0000\u07f0\u07f1\u0005V\u0000\u0000\u07f1\u07f2"+ - "\u00052\u0000\u0000\u07f2\u00f2\u0001\u0000\u0000\u0000\u07f3\u07f4\u0005"+ - "D\u0000\u0000\u07f4\u07f5\u0005E\u0000\u0000\u07f5\u07f6\u0005C\u0000"+ - "\u0000\u07f6\u07f7\u0005I\u0000\u0000\u07f7\u07f8\u0005M\u0000\u0000\u07f8"+ - "\u07f9\u0005A\u0000\u0000\u07f9\u07fa\u0005L\u0000\u0000\u07fa\u07fb\u0005"+ - "V\u0000\u0000\u07fb\u07fc\u00053\u0000\u0000\u07fc\u00f4\u0001\u0000\u0000"+ - "\u0000\u07fd\u07fe\u0005D\u0000\u0000\u07fe\u07ff\u0005E\u0000\u0000\u07ff"+ - "\u0800\u0005C\u0000\u0000\u0800\u0801\u0005O\u0000\u0000\u0801\u0802\u0005"+ - "M\u0000\u0000\u0802\u0803\u0005M\u0000\u0000\u0803\u0804\u0005I\u0000"+ - "\u0000\u0804\u0805\u0005S\u0000\u0000\u0805\u0806\u0005S\u0000\u0000\u0806"+ - "\u0807\u0005I\u0000\u0000\u0807\u0808\u0005O\u0000\u0000\u0808\u0809\u0005"+ - "N\u0000\u0000\u0809\u00f6\u0001\u0000\u0000\u0000\u080a\u080b\u0005D\u0000"+ - "\u0000\u080b\u080c\u0005E\u0000\u0000\u080c\u080d\u0005F\u0000\u0000\u080d"+ - "\u080e\u0005A\u0000\u0000\u080e\u080f\u0005U\u0000\u0000\u080f\u0810\u0005"+ - "L\u0000\u0000\u0810\u0811\u0005T\u0000\u0000\u0811\u00f8\u0001\u0000\u0000"+ - "\u0000\u0812\u0813\u0005D\u0000\u0000\u0813\u0814\u0005E\u0000\u0000\u0814"+ - "\u0815\u0005F\u0000\u0000\u0815\u0816\u0005E\u0000\u0000\u0816\u0817\u0005"+ - "R\u0000\u0000\u0817\u0818\u0005R\u0000\u0000\u0818\u0819\u0005E\u0000"+ - "\u0000\u0819\u081a\u0005D\u0000\u0000\u081a\u00fa\u0001\u0000\u0000\u0000"+ - "\u081b\u081c\u0005D\u0000\u0000\u081c\u081d\u0005E\u0000\u0000\u081d\u081e"+ - "\u0005L\u0000\u0000\u081e\u081f\u0005E\u0000\u0000\u081f\u0820\u0005T"+ - "\u0000\u0000\u0820\u0821\u0005E\u0000\u0000\u0821\u00fc\u0001\u0000\u0000"+ - "\u0000\u0822\u0823\u0005D\u0000\u0000\u0823\u0824\u0005E\u0000\u0000\u0824"+ - "\u0825\u0005M\u0000\u0000\u0825\u0826\u0005A\u0000\u0000\u0826\u0827\u0005"+ - "N\u0000\u0000\u0827\u0828\u0005D\u0000\u0000\u0828\u00fe\u0001\u0000\u0000"+ - "\u0000\u0829\u082a\u0005D\u0000\u0000\u082a\u082b\u0005E\u0000\u0000\u082b"+ - "\u082c\u0005S\u0000\u0000\u082c\u082d\u0005C\u0000\u0000\u082d\u0100\u0001"+ - "\u0000\u0000\u0000\u082e\u082f\u0005D\u0000\u0000\u082f\u0830\u0005E\u0000"+ - "\u0000\u0830\u0831\u0005S\u0000\u0000\u0831\u0832\u0005C\u0000\u0000\u0832"+ - "\u0833\u0005R\u0000\u0000\u0833\u0834\u0005I\u0000\u0000\u0834\u0835\u0005"+ - "B\u0000\u0000\u0835\u0836\u0005E\u0000\u0000\u0836\u0102\u0001\u0000\u0000"+ - "\u0000\u0837\u0838\u0005D\u0000\u0000\u0838\u0839\u0005I\u0000\u0000\u0839"+ - "\u083a\u0005A\u0000\u0000\u083a\u083b\u0005G\u0000\u0000\u083b\u083c\u0005"+ - "N\u0000\u0000\u083c\u083d\u0005O\u0000\u0000\u083d\u083e\u0005S\u0000"+ - "\u0000\u083e\u083f\u0005E\u0000\u0000\u083f\u0104\u0001\u0000\u0000\u0000"+ - "\u0840\u0841\u0005D\u0000\u0000\u0841\u0842\u0005I\u0000\u0000\u0842\u0843"+ - "\u0005A\u0000\u0000\u0843\u0844\u0005G\u0000\u0000\u0844\u0845\u0005N"+ - "\u0000\u0000\u0845\u0846\u0005O\u0000\u0000\u0846\u0847\u0005S\u0000\u0000"+ - "\u0847\u0848\u0005I\u0000\u0000\u0848\u0849\u0005S\u0000\u0000\u0849\u0106"+ - "\u0001\u0000\u0000\u0000\u084a\u084b\u0005D\u0000\u0000\u084b\u084c\u0005"+ - "I\u0000\u0000\u084c\u084d\u0005S\u0000\u0000\u084d\u084e\u0005K\u0000"+ - "\u0000\u084e\u0108\u0001\u0000\u0000\u0000\u084f\u0850\u0005D\u0000\u0000"+ - "\u0850\u0851\u0005I\u0000\u0000\u0851\u0852\u0005S\u0000\u0000\u0852\u0853"+ - "\u0005T\u0000\u0000\u0853\u0854\u0005I\u0000\u0000\u0854\u0855\u0005N"+ - "\u0000\u0000\u0855\u0856\u0005C\u0000\u0000\u0856\u0857\u0005T\u0000\u0000"+ - "\u0857\u010a\u0001\u0000\u0000\u0000\u0858\u0859\u0005D\u0000\u0000\u0859"+ - "\u085a\u0005I\u0000\u0000\u085a\u085b\u0005S\u0000\u0000\u085b\u085c\u0005"+ - "T\u0000\u0000\u085c\u085d\u0005I\u0000\u0000\u085d\u085e\u0005N\u0000"+ - "\u0000\u085e\u085f\u0005C\u0000\u0000\u085f\u0860\u0005T\u0000\u0000\u0860"+ - "\u0861\u0005P\u0000\u0000\u0861\u0862\u0005C\u0000\u0000\u0862\u010c\u0001"+ - "\u0000\u0000\u0000\u0863\u0864\u0005D\u0000\u0000\u0864\u0865\u0005I\u0000"+ - "\u0000\u0865\u0866\u0005S\u0000\u0000\u0866\u0867\u0005T\u0000\u0000\u0867"+ - "\u0868\u0005I\u0000\u0000\u0868\u0869\u0005N\u0000\u0000\u0869\u086a\u0005"+ - "C\u0000\u0000\u086a\u086b\u0005T\u0000\u0000\u086b\u086c\u0005P\u0000"+ - "\u0000\u086c\u086d\u0005C\u0000\u0000\u086d\u086e\u0005S\u0000\u0000\u086e"+ - "\u086f\u0005A\u0000\u0000\u086f\u010e\u0001\u0000\u0000\u0000\u0870\u0871"+ - "\u0005D\u0000\u0000\u0871\u0872\u0005I\u0000\u0000\u0872\u0873\u0005S"+ - "\u0000\u0000\u0873\u0874\u0005T\u0000\u0000\u0874\u0875\u0005R\u0000\u0000"+ - "\u0875\u0876\u0005I\u0000\u0000\u0876\u0877\u0005B\u0000\u0000\u0877\u0878"+ - "\u0005U\u0000\u0000\u0878\u0879\u0005T\u0000\u0000\u0879\u087a\u0005E"+ - "\u0000\u0000\u087a\u087b\u0005D\u0000\u0000\u087b\u0110\u0001\u0000\u0000"+ - "\u0000\u087c\u087d\u0005D\u0000\u0000\u087d\u087e\u0005I\u0000\u0000\u087e"+ - "\u087f\u0005S\u0000\u0000\u087f\u0880\u0005T\u0000\u0000\u0880\u0881\u0005"+ - "R\u0000\u0000\u0881\u0882\u0005I\u0000\u0000\u0882\u0883\u0005B\u0000"+ - "\u0000\u0883\u0884\u0005U\u0000\u0000\u0884\u0885\u0005T\u0000\u0000\u0885"+ - "\u0886\u0005I\u0000\u0000\u0886\u0887\u0005O\u0000\u0000\u0887\u0888\u0005"+ - "N\u0000\u0000\u0888\u0112\u0001\u0000\u0000\u0000\u0889\u088a\u0005D\u0000"+ - "\u0000\u088a\u088b\u0005I\u0000\u0000\u088b\u088c\u0005V\u0000\u0000\u088c"+ - "\u0114\u0001\u0000\u0000\u0000\u088d\u088e\u0005D\u0000\u0000\u088e\u088f"+ - "\u0005O\u0000\u0000\u088f\u0116\u0001\u0000\u0000\u0000\u0890\u0891\u0005"+ - "D\u0000\u0000\u0891\u0892\u0005O\u0000\u0000\u0892\u0893\u0005R\u0000"+ - "\u0000\u0893\u0894\u0005I\u0000\u0000\u0894\u0895\u0005S\u0000\u0000\u0895"+ - "\u0896\u0005_\u0000\u0000\u0896\u0897\u0005I\u0000\u0000\u0897\u0898\u0005"+ - "N\u0000\u0000\u0898\u0899\u0005T\u0000\u0000\u0899\u089a\u0005E\u0000"+ - "\u0000\u089a\u089b\u0005R\u0000\u0000\u089b\u089c\u0005N\u0000\u0000\u089c"+ - "\u089d\u0005A\u0000\u0000\u089d\u089e\u0005L\u0000\u0000\u089e\u089f\u0005"+ - "_\u0000\u0000\u089f\u08a0\u0005T\u0000\u0000\u08a0\u08a1\u0005A\u0000"+ - "\u0000\u08a1\u08a2\u0005B\u0000\u0000\u08a2\u08a3\u0005L\u0000\u0000\u08a3"+ - "\u08a4\u0005E\u0000\u0000\u08a4\u08a5\u0005_\u0000\u0000\u08a5\u08a6\u0005"+ - "I\u0000\u0000\u08a6\u08a7\u0005D\u0000\u0000\u08a7\u0118\u0001\u0000\u0000"+ - "\u0000\u08a8\u08a9\u0005D\u0000\u0000\u08a9\u08aa\u0005O\u0000\u0000\u08aa"+ - "\u08ab\u0005U\u0000\u0000\u08ab\u08ac\u0005B\u0000\u0000\u08ac\u08ad\u0005"+ - "L\u0000\u0000\u08ad\u08ae\u0005E\u0000\u0000\u08ae\u011a\u0001\u0000\u0000"+ - "\u0000\u08af\u08b0\u0005D\u0000\u0000\u08b0\u08b1\u0005R\u0000\u0000\u08b1"+ - "\u08b2\u0005O\u0000\u0000\u08b2\u08b3\u0005P\u0000\u0000\u08b3\u011c\u0001"+ - "\u0000\u0000\u0000\u08b4\u08b5\u0005D\u0000\u0000\u08b5\u08b6\u0005R\u0000"+ - "\u0000\u08b6\u08b7\u0005O\u0000\u0000\u08b7\u08b8\u0005P\u0000\u0000\u08b8"+ - "\u08b9\u0005P\u0000\u0000\u08b9\u011e\u0001\u0000\u0000\u0000\u08ba\u08bb"+ - "\u0005D\u0000\u0000\u08bb\u08bc\u0005U\u0000\u0000\u08bc\u08bd\u0005A"+ - "\u0000\u0000\u08bd\u08be\u0005L\u0000\u0000\u08be\u0120\u0001\u0000\u0000"+ - "\u0000\u08bf\u08c0\u0005D\u0000\u0000\u08c0\u08c1\u0005U\u0000\u0000\u08c1"+ - "\u08c2\u0005M\u0000\u0000\u08c2\u08c3\u0005P\u0000\u0000\u08c3\u0122\u0001"+ - "\u0000\u0000\u0000\u08c4\u08c5\u0005D\u0000\u0000\u08c5\u08c6\u0005U\u0000"+ - "\u0000\u08c6\u08c7\u0005P\u0000\u0000\u08c7\u08c8\u0005L\u0000\u0000\u08c8"+ - "\u08c9\u0005I\u0000\u0000\u08c9\u08ca\u0005C\u0000\u0000\u08ca\u08cb\u0005"+ - "A\u0000\u0000\u08cb\u08cc\u0005T\u0000\u0000\u08cc\u08cd\u0005E\u0000"+ - "\u0000\u08cd\u0124\u0001\u0000\u0000\u0000\u08ce\u08cf\u0005D\u0000\u0000"+ - "\u08cf\u08d0\u0005Y\u0000\u0000\u08d0\u08d1\u0005N\u0000\u0000\u08d1\u08d2"+ - "\u0005A\u0000\u0000\u08d2\u08d3\u0005M\u0000\u0000\u08d3\u08d4\u0005I"+ - "\u0000\u0000\u08d4\u08d5\u0005C\u0000\u0000\u08d5\u0126\u0001\u0000\u0000"+ - "\u0000\u08d6\u08d7\u0005E\u0000\u0000\u08d7\u0128\u0001\u0000\u0000\u0000"+ - "\u08d8\u08d9\u0005E\u0000\u0000\u08d9\u08da\u0005L\u0000\u0000\u08da\u08db"+ - "\u0005S\u0000\u0000\u08db\u08dc\u0005E\u0000\u0000\u08dc\u012a\u0001\u0000"+ - "\u0000\u0000\u08dd\u08de\u0005E\u0000\u0000\u08de\u08df\u0005N\u0000\u0000"+ - "\u08df\u08e0\u0005A\u0000\u0000\u08e0\u08e1\u0005B\u0000\u0000\u08e1\u08e2"+ - "\u0005L\u0000\u0000\u08e2\u08e3\u0005E\u0000\u0000\u08e3\u012c\u0001\u0000"+ - "\u0000\u0000\u08e4\u08e5\u0005E\u0000\u0000\u08e5\u08e6\u0005N\u0000\u0000"+ - "\u08e6\u08e7\u0005C\u0000\u0000\u08e7\u08e8\u0005R\u0000\u0000\u08e8\u08e9"+ - "\u0005Y\u0000\u0000\u08e9\u08ea\u0005P\u0000\u0000\u08ea\u08eb\u0005T"+ - "\u0000\u0000\u08eb\u08ec\u0005K\u0000\u0000\u08ec\u08ed\u0005E\u0000\u0000"+ - "\u08ed\u08ee\u0005Y\u0000\u0000\u08ee\u012e\u0001\u0000\u0000\u0000\u08ef"+ - "\u08f0\u0005E\u0000\u0000\u08f0\u08f1\u0005N\u0000\u0000\u08f1\u08f2\u0005"+ - "C\u0000\u0000\u08f2\u08f3\u0005R\u0000\u0000\u08f3\u08f4\u0005Y\u0000"+ - "\u0000\u08f4\u08f5\u0005P\u0000\u0000\u08f5\u08f6\u0005T\u0000\u0000\u08f6"+ - "\u08f7\u0005K\u0000\u0000\u08f7\u08f8\u0005E\u0000\u0000\u08f8\u08f9\u0005"+ - "Y\u0000\u0000\u08f9\u08fa\u0005S\u0000\u0000\u08fa\u0130\u0001\u0000\u0000"+ - "\u0000\u08fb\u08fc\u0005E\u0000\u0000\u08fc\u08fd\u0005N\u0000\u0000\u08fd"+ - "\u08fe\u0005D\u0000\u0000\u08fe\u0132\u0001\u0000\u0000\u0000\u08ff\u0900"+ - "\u0005E\u0000\u0000\u0900\u0901\u0005N\u0000\u0000\u0901\u0902\u0005D"+ - "\u0000\u0000\u0902\u0903\u0005S\u0000\u0000\u0903\u0134\u0001\u0000\u0000"+ - "\u0000\u0904\u0905\u0005E\u0000\u0000\u0905\u0906\u0005N\u0000\u0000\u0906"+ - "\u0907\u0005G\u0000\u0000\u0907\u0908\u0005I\u0000\u0000\u0908\u0909\u0005"+ - "N\u0000\u0000\u0909\u090a\u0005E\u0000\u0000\u090a\u0136\u0001\u0000\u0000"+ - "\u0000\u090b\u090c\u0005E\u0000\u0000\u090c\u090d\u0005N\u0000\u0000\u090d"+ - "\u090e\u0005G\u0000\u0000\u090e\u090f\u0005I\u0000\u0000\u090f\u0910\u0005"+ - "N\u0000\u0000\u0910\u0911\u0005E\u0000\u0000\u0911\u0912\u0005S\u0000"+ - "\u0000\u0912\u0138\u0001\u0000\u0000\u0000\u0913\u0914\u0005E\u0000\u0000"+ - "\u0914\u0915\u0005N\u0000\u0000\u0915\u0916\u0005T\u0000\u0000\u0916\u0917"+ - "\u0005E\u0000\u0000\u0917\u0918\u0005R\u0000\u0000\u0918\u013a\u0001\u0000"+ - "\u0000\u0000\u0919\u091a\u0005E\u0000\u0000\u091a\u091b\u0005R\u0000\u0000"+ - "\u091b\u091c\u0005R\u0000\u0000\u091c\u091d\u0005O\u0000\u0000\u091d\u091e"+ - "\u0005R\u0000\u0000\u091e\u091f\u0005S\u0000\u0000\u091f\u013c\u0001\u0000"+ - "\u0000\u0000\u0920\u0921\u0005E\u0000\u0000\u0921\u0922\u0005V\u0000\u0000"+ - "\u0922\u0923\u0005E\u0000\u0000\u0923\u0924\u0005N\u0000\u0000\u0924\u0925"+ - "\u0005T\u0000\u0000\u0925\u0926\u0005S\u0000\u0000\u0926\u013e\u0001\u0000"+ - "\u0000\u0000\u0927\u0928\u0005E\u0000\u0000\u0928\u0929\u0005V\u0000\u0000"+ - "\u0929\u092a\u0005E\u0000\u0000\u092a\u092b\u0005R\u0000\u0000\u092b\u092c"+ - "\u0005Y\u0000\u0000\u092c\u0140\u0001\u0000\u0000\u0000\u092d\u092e\u0005"+ - "E\u0000\u0000\u092e\u092f\u0005X\u0000\u0000\u092f\u0930\u0005C\u0000"+ - "\u0000\u0930\u0931\u0005E\u0000\u0000\u0931\u0932\u0005P\u0000\u0000\u0932"+ - "\u0933\u0005T\u0000\u0000\u0933\u0142\u0001\u0000\u0000\u0000\u0934\u0935"+ - "\u0005E\u0000\u0000\u0935\u0936\u0005X\u0000\u0000\u0936\u0937\u0005C"+ - "\u0000\u0000\u0937\u0938\u0005L\u0000\u0000\u0938\u0939\u0005U\u0000\u0000"+ - "\u0939\u093a\u0005D\u0000\u0000\u093a\u093b\u0005E\u0000\u0000\u093b\u0144"+ - "\u0001\u0000\u0000\u0000\u093c\u093d\u0005E\u0000\u0000\u093d\u093e\u0005"+ - "X\u0000\u0000\u093e\u093f\u0005E\u0000\u0000\u093f\u0940\u0005C\u0000"+ - "\u0000\u0940\u0941\u0005U\u0000\u0000\u0941\u0942\u0005T\u0000\u0000\u0942"+ - "\u0943\u0005E\u0000\u0000\u0943\u0146\u0001\u0000\u0000\u0000\u0944\u0945"+ - "\u0005E\u0000\u0000\u0945\u0946\u0005X\u0000\u0000\u0946\u0947\u0005I"+ - "\u0000\u0000\u0947\u0948\u0005S\u0000\u0000\u0948\u0949\u0005T\u0000\u0000"+ - "\u0949\u094a\u0005S\u0000\u0000\u094a\u0148\u0001\u0000\u0000\u0000\u094b"+ - "\u094c\u0005E\u0000\u0000\u094c\u094d\u0005X\u0000\u0000\u094d\u094e\u0005"+ - "P\u0000\u0000\u094e\u094f\u0005I\u0000\u0000\u094f\u0950\u0005R\u0000"+ - "\u0000\u0950\u0951\u0005E\u0000\u0000\u0951\u0952\u0005D\u0000\u0000\u0952"+ - "\u014a\u0001\u0000\u0000\u0000\u0953\u0954\u0005E\u0000\u0000\u0954\u0955"+ - "\u0005X\u0000\u0000\u0955\u0956\u0005P\u0000\u0000\u0956\u0957\u0005L"+ - "\u0000\u0000\u0957\u0958\u0005A\u0000\u0000\u0958\u0959\u0005I\u0000\u0000"+ - "\u0959\u095a\u0005N\u0000\u0000\u095a\u014c\u0001\u0000\u0000\u0000\u095b"+ - "\u095c\u0005E\u0000\u0000\u095c\u095d\u0005X\u0000\u0000\u095d\u095e\u0005"+ - "P\u0000\u0000\u095e\u095f\u0005O\u0000\u0000\u095f\u0960\u0005R\u0000"+ - "\u0000\u0960\u0961\u0005T\u0000\u0000\u0961\u014e\u0001\u0000\u0000\u0000"+ - "\u0962\u0963\u0005E\u0000\u0000\u0963\u0964\u0005X\u0000\u0000\u0964\u0965"+ - "\u0005T\u0000\u0000\u0965\u0966\u0005E\u0000\u0000\u0966\u0967\u0005N"+ - "\u0000\u0000\u0967\u0968\u0005D\u0000\u0000\u0968\u0969\u0005E\u0000\u0000"+ - "\u0969\u096a\u0005D\u0000\u0000\u096a\u0150\u0001\u0000\u0000\u0000\u096b"+ - "\u096c\u0005E\u0000\u0000\u096c\u096d\u0005X\u0000\u0000\u096d\u096e\u0005"+ - "T\u0000\u0000\u096e\u096f\u0005E\u0000\u0000\u096f\u0970\u0005R\u0000"+ - "\u0000\u0970\u0971\u0005N\u0000\u0000\u0971\u0972\u0005A\u0000\u0000\u0972"+ - "\u0973\u0005L\u0000\u0000\u0973\u0152\u0001\u0000\u0000\u0000\u0974\u0975"+ - "\u0005E\u0000\u0000\u0975\u0976\u0005X\u0000\u0000\u0976\u0977\u0005T"+ - "\u0000\u0000\u0977\u0978\u0005R\u0000\u0000\u0978\u0979\u0005A\u0000\u0000"+ - "\u0979\u097a\u0005C\u0000\u0000\u097a\u097b\u0005T\u0000\u0000\u097b\u0154"+ - "\u0001\u0000\u0000\u0000\u097c\u097d\u0005F\u0000\u0000\u097d\u097e\u0005"+ - "A\u0000\u0000\u097e\u097f\u0005I\u0000\u0000\u097f\u0980\u0005L\u0000"+ - "\u0000\u0980\u0981\u0005E\u0000\u0000\u0981\u0982\u0005D\u0000\u0000\u0982"+ - "\u0983\u0005_\u0000\u0000\u0983\u0984\u0005L\u0000\u0000\u0984\u0985\u0005"+ - "O\u0000\u0000\u0985\u0986\u0005G\u0000\u0000\u0986\u0987\u0005I\u0000"+ - "\u0000\u0987\u0988\u0005N\u0000\u0000\u0988\u0989\u0005_\u0000\u0000\u0989"+ - "\u098a\u0005A\u0000\u0000\u098a\u098b\u0005T\u0000\u0000\u098b\u098c\u0005"+ - "T\u0000\u0000\u098c\u098d\u0005E\u0000\u0000\u098d\u098e\u0005M\u0000"+ - "\u0000\u098e\u098f\u0005P\u0000\u0000\u098f\u0990\u0005T\u0000\u0000\u0990"+ - "\u0991\u0005S\u0000\u0000\u0991\u0156\u0001\u0000\u0000\u0000\u0992\u0993"+ - "\u0005F\u0000\u0000\u0993\u0994\u0005A\u0000\u0000\u0994\u0995\u0005L"+ - "\u0000\u0000\u0995\u0996\u0005S\u0000\u0000\u0996\u0997\u0005E\u0000\u0000"+ - "\u0997\u0158\u0001\u0000\u0000\u0000\u0998\u0999\u0005F\u0000\u0000\u0999"+ - "\u099a\u0005A\u0000\u0000\u099a\u099b\u0005S\u0000\u0000\u099b\u099c\u0005"+ - "T\u0000\u0000\u099c\u015a\u0001\u0000\u0000\u0000\u099d\u099e\u0005F\u0000"+ - "\u0000\u099e\u099f\u0005E\u0000\u0000\u099f\u09a0\u0005A\u0000\u0000\u09a0"+ - "\u09a1\u0005T\u0000\u0000\u09a1\u09a2\u0005U\u0000\u0000\u09a2\u09a3\u0005"+ - "R\u0000\u0000\u09a3\u09a4\u0005E\u0000\u0000\u09a4\u015c\u0001\u0000\u0000"+ - "\u0000\u09a5\u09a6\u0005F\u0000\u0000\u09a6\u09a7\u0005I\u0000\u0000\u09a7"+ - "\u09a8\u0005E\u0000\u0000\u09a8\u09a9\u0005L\u0000\u0000\u09a9\u09aa\u0005"+ - "D\u0000\u0000\u09aa\u09ab\u0005S\u0000\u0000\u09ab\u015e\u0001\u0000\u0000"+ - "\u0000\u09ac\u09ad\u0005F\u0000\u0000\u09ad\u09ae\u0005I\u0000\u0000\u09ae"+ - "\u09af\u0005L\u0000\u0000\u09af\u09b0\u0005E\u0000\u0000\u09b0\u0160\u0001"+ - "\u0000\u0000\u0000\u09b1\u09b2\u0005F\u0000\u0000\u09b2\u09b3\u0005I\u0000"+ - "\u0000\u09b3\u09b4\u0005L\u0000\u0000\u09b4\u09b5\u0005T\u0000\u0000\u09b5"+ - "\u09b6\u0005E\u0000\u0000\u09b6\u09b7\u0005R\u0000\u0000\u09b7\u0162\u0001"+ - "\u0000\u0000\u0000\u09b8\u09b9\u0005F\u0000\u0000\u09b9\u09ba\u0005I\u0000"+ - "\u0000\u09ba\u09bb\u0005R\u0000\u0000\u09bb\u09bc\u0005S\u0000\u0000\u09bc"+ - "\u09bd\u0005T\u0000\u0000\u09bd\u0164\u0001\u0000\u0000\u0000\u09be\u09bf"+ - "\u0005F\u0000\u0000\u09bf\u09c0\u0005L\u0000\u0000\u09c0\u09c1\u0005O"+ - "\u0000\u0000\u09c1\u09c2\u0005A\u0000\u0000\u09c2\u09c3\u0005T\u0000\u0000"+ - "\u09c3\u0166\u0001\u0000\u0000\u0000\u09c4\u09c5\u0005F\u0000\u0000\u09c5"+ - "\u09c6\u0005O\u0000\u0000\u09c6\u09c7\u0005L\u0000\u0000\u09c7\u09c8\u0005"+ - "L\u0000\u0000\u09c8\u09c9\u0005O\u0000\u0000\u09c9\u09ca\u0005W\u0000"+ - "\u0000\u09ca\u09cb\u0005E\u0000\u0000\u09cb\u09cc\u0005R\u0000\u0000\u09cc"+ - "\u0168\u0001\u0000\u0000\u0000\u09cd\u09ce\u0005F\u0000\u0000\u09ce\u09cf"+ - "\u0005O\u0000\u0000\u09cf\u09d0\u0005L\u0000\u0000\u09d0\u09d1\u0005L"+ - "\u0000\u0000\u09d1\u09d2\u0005O\u0000\u0000\u09d2\u09d3\u0005W\u0000\u0000"+ - "\u09d3\u09d4\u0005I\u0000\u0000\u09d4\u09d5\u0005N\u0000\u0000\u09d5\u09d6"+ - "\u0005G\u0000\u0000\u09d6\u016a\u0001\u0000\u0000\u0000\u09d7\u09d8\u0005"+ - "F\u0000\u0000\u09d8\u09d9\u0005O\u0000\u0000\u09d9\u09da\u0005R\u0000"+ - "\u0000\u09da\u016c\u0001\u0000\u0000\u0000\u09db\u09dc\u0005F\u0000\u0000"+ - "\u09dc\u09dd\u0005O\u0000\u0000\u09dd\u09de\u0005R\u0000\u0000\u09de\u09df"+ - "\u0005E\u0000\u0000\u09df\u09e0\u0005I\u0000\u0000\u09e0\u09e1\u0005G"+ - "\u0000\u0000\u09e1\u09e2\u0005N\u0000\u0000\u09e2\u016e\u0001\u0000\u0000"+ - "\u0000\u09e3\u09e4\u0005F\u0000\u0000\u09e4\u09e5\u0005O\u0000\u0000\u09e5"+ - "\u09e6\u0005R\u0000\u0000\u09e6\u09e7\u0005C\u0000\u0000\u09e7\u09e8\u0005"+ - "E\u0000\u0000\u09e8\u0170\u0001\u0000\u0000\u0000\u09e9\u09ea\u0005F\u0000"+ - "\u0000\u09ea\u09eb\u0005O\u0000\u0000\u09eb\u09ec\u0005R\u0000\u0000\u09ec"+ - "\u09ed\u0005M\u0000\u0000\u09ed\u09ee\u0005A\u0000\u0000\u09ee\u09ef\u0005"+ - "T\u0000\u0000\u09ef\u0172\u0001\u0000\u0000\u0000\u09f0\u09f1\u0005F\u0000"+ - "\u0000\u09f1\u09f2\u0005R\u0000\u0000\u09f2\u09f3\u0005E\u0000\u0000\u09f3"+ - "\u09f4\u0005E\u0000\u0000\u09f4\u0174\u0001\u0000\u0000\u0000\u09f5\u09f6"+ - "\u0005F\u0000\u0000\u09f6\u09f7\u0005R\u0000\u0000\u09f7\u09f8\u0005O"+ - "\u0000\u0000\u09f8\u09f9\u0005M\u0000\u0000\u09f9\u0176\u0001\u0000\u0000"+ - "\u0000\u09fa\u09fb\u0005F\u0000\u0000\u09fb\u09fc\u0005R\u0000\u0000\u09fc"+ - "\u09fd\u0005O\u0000\u0000\u09fd\u09fe\u0005N\u0000\u0000\u09fe\u09ff\u0005"+ - "T\u0000\u0000\u09ff\u0a00\u0005E\u0000\u0000\u0a00\u0a01\u0005N\u0000"+ - "\u0000\u0a01\u0a02\u0005D\u0000\u0000\u0a02\u0178\u0001\u0000\u0000\u0000"+ - "\u0a03\u0a04\u0005F\u0000\u0000\u0a04\u0a05\u0005R\u0000\u0000\u0a05\u0a06"+ - "\u0005O\u0000\u0000\u0a06\u0a07\u0005N\u0000\u0000\u0a07\u0a08\u0005T"+ - "\u0000\u0000\u0a08\u0a09\u0005E\u0000\u0000\u0a09\u0a0a\u0005N\u0000\u0000"+ - "\u0a0a\u0a0b\u0005D\u0000\u0000\u0a0b\u0a0c\u0005S\u0000\u0000\u0a0c\u017a"+ - "\u0001\u0000\u0000\u0000\u0a0d\u0a0e\u0005F\u0000\u0000\u0a0e\u0a0f\u0005"+ - "U\u0000\u0000\u0a0f\u0a10\u0005L\u0000\u0000\u0a10\u0a11\u0005L\u0000"+ - "\u0000\u0a11\u017c\u0001\u0000\u0000\u0000\u0a12\u0a13\u0005F\u0000\u0000"+ - "\u0a13\u0a14\u0005U\u0000\u0000\u0a14\u0a15\u0005N\u0000\u0000\u0a15\u0a16"+ - "\u0005C\u0000\u0000\u0a16\u0a17\u0005T\u0000\u0000\u0a17\u0a18\u0005I"+ - "\u0000\u0000\u0a18\u0a19\u0005O\u0000\u0000\u0a19\u0a1a\u0005N\u0000\u0000"+ - "\u0a1a\u017e\u0001\u0000\u0000\u0000\u0a1b\u0a1c\u0005F\u0000\u0000\u0a1c"+ - "\u0a1d\u0005U\u0000\u0000\u0a1d\u0a1e\u0005N\u0000\u0000\u0a1e\u0a1f\u0005"+ - "C\u0000\u0000\u0a1f\u0a20\u0005T\u0000\u0000\u0a20\u0a21\u0005I\u0000"+ - "\u0000\u0a21\u0a22\u0005O\u0000\u0000\u0a22\u0a23\u0005N\u0000\u0000\u0a23"+ - "\u0a24\u0005S\u0000\u0000\u0a24\u0180\u0001\u0000\u0000\u0000\u0a25\u0a26"+ - "\u0005G\u0000\u0000\u0a26\u0a27\u0005E\u0000\u0000\u0a27\u0a28\u0005N"+ - "\u0000\u0000\u0a28\u0a29\u0005E\u0000\u0000\u0a29\u0a2a\u0005R\u0000\u0000"+ - "\u0a2a\u0a2b\u0005A\u0000\u0000\u0a2b\u0a2c\u0005T\u0000\u0000\u0a2c\u0a2d"+ - "\u0005E\u0000\u0000\u0a2d\u0a2e\u0005D\u0000\u0000\u0a2e\u0182\u0001\u0000"+ - "\u0000\u0000\u0a2f\u0a30\u0005G\u0000\u0000\u0a30\u0a31\u0005E\u0000\u0000"+ - "\u0a31\u0a32\u0005N\u0000\u0000\u0a32\u0a33\u0005E\u0000\u0000\u0a33\u0a34"+ - "\u0005R\u0000\u0000\u0a34\u0a35\u0005I\u0000\u0000\u0a35\u0a36\u0005C"+ - "\u0000\u0000\u0a36\u0184\u0001\u0000\u0000\u0000\u0a37\u0a38\u0005G\u0000"+ - "\u0000\u0a38\u0a39\u0005L\u0000\u0000\u0a39\u0a3a\u0005O\u0000\u0000\u0a3a"+ - "\u0a3b\u0005B\u0000\u0000\u0a3b\u0a3c\u0005A\u0000\u0000\u0a3c\u0a3d\u0005"+ - "L\u0000\u0000\u0a3d\u0186\u0001\u0000\u0000\u0000\u0a3e\u0a3f\u0005G\u0000"+ - "\u0000\u0a3f\u0a40\u0005R\u0000\u0000\u0a40\u0a41\u0005A\u0000\u0000\u0a41"+ - "\u0a42\u0005N\u0000\u0000\u0a42\u0a43\u0005T\u0000\u0000\u0a43\u0188\u0001"+ - "\u0000\u0000\u0000\u0a44\u0a45\u0005G\u0000\u0000\u0a45\u0a46\u0005R\u0000"+ - "\u0000\u0a46\u0a47\u0005A\u0000\u0000\u0a47\u0a48\u0005N\u0000\u0000\u0a48"+ - "\u0a49\u0005T\u0000\u0000\u0a49\u0a4a\u0005S\u0000\u0000\u0a4a\u018a\u0001"+ - "\u0000\u0000\u0000\u0a4b\u0a4c\u0005G\u0000\u0000\u0a4c\u0a4d\u0005R\u0000"+ - "\u0000\u0a4d\u0a4e\u0005A\u0000\u0000\u0a4e\u0a4f\u0005P\u0000\u0000\u0a4f"+ - "\u0a50\u0005H\u0000\u0000\u0a50\u018c\u0001\u0000\u0000\u0000\u0a51\u0a52"+ - "\u0005G\u0000\u0000\u0a52\u0a53\u0005R\u0000\u0000\u0a53\u0a54\u0005O"+ - "\u0000\u0000\u0a54\u0a55\u0005U\u0000\u0000\u0a55\u0a56\u0005P\u0000\u0000"+ - "\u0a56\u018e\u0001\u0000\u0000\u0000\u0a57\u0a58\u0005G\u0000\u0000\u0a58"+ - "\u0a59\u0005R\u0000\u0000\u0a59\u0a5a\u0005O\u0000\u0000\u0a5a\u0a5b\u0005"+ - "U\u0000\u0000\u0a5b\u0a5c\u0005P\u0000\u0000\u0a5c\u0a5d\u0005I\u0000"+ - "\u0000\u0a5d\u0a5e\u0005N\u0000\u0000\u0a5e\u0a5f\u0005G\u0000\u0000\u0a5f"+ - "\u0190\u0001\u0000\u0000\u0000\u0a60\u0a61\u0005G\u0000\u0000\u0a61\u0a62"+ - "\u0005R\u0000\u0000\u0a62\u0a63\u0005O\u0000\u0000\u0a63\u0a64\u0005U"+ - "\u0000\u0000\u0a64\u0a65\u0005P\u0000\u0000\u0a65\u0a66\u0005S\u0000\u0000"+ - "\u0a66\u0192\u0001\u0000\u0000\u0000\u0a67\u0a68\u0005H\u0000\u0000\u0a68"+ - "\u0a69\u0005A\u0000\u0000\u0a69\u0a6a\u0005S\u0000\u0000\u0a6a\u0a6b\u0005"+ - "H\u0000\u0000\u0a6b\u0194\u0001\u0000\u0000\u0000\u0a6c\u0a6d\u0005H\u0000"+ - "\u0000\u0a6d\u0a6e\u0005A\u0000\u0000\u0a6e\u0a6f\u0005V\u0000\u0000\u0a6f"+ - "\u0a70\u0005I\u0000\u0000\u0a70\u0a71\u0005N\u0000\u0000\u0a71\u0a72\u0005"+ - "G\u0000\u0000\u0a72\u0196\u0001\u0000\u0000\u0000\u0a73\u0a74\u0005H\u0000"+ - "\u0000\u0a74\u0a75\u0005D\u0000\u0000\u0a75\u0a76\u0005F\u0000\u0000\u0a76"+ - "\u0a77\u0005S\u0000\u0000\u0a77\u0198\u0001\u0000\u0000\u0000\u0a78\u0a79"+ - "\u0005H\u0000\u0000\u0a79\u0a7a\u0005E\u0000\u0000\u0a7a\u0a7b\u0005L"+ - "\u0000\u0000\u0a7b\u0a7c\u0005P\u0000\u0000\u0a7c\u019a\u0001\u0000\u0000"+ - "\u0000\u0a7d\u0a7e\u0005H\u0000\u0000\u0a7e\u0a7f\u0005I\u0000\u0000\u0a7f"+ - "\u0a80\u0005S\u0000\u0000\u0a80\u0a81\u0005T\u0000\u0000\u0a81\u0a82\u0005"+ - "O\u0000\u0000\u0a82\u0a83\u0005G\u0000\u0000\u0a83\u0a84\u0005R\u0000"+ - "\u0000\u0a84\u0a85\u0005A\u0000\u0000\u0a85\u0a86\u0005M\u0000\u0000\u0a86"+ - "\u019c\u0001\u0000\u0000\u0000\u0a87\u0a88\u0005H\u0000\u0000\u0a88\u0a89"+ - "\u0005L\u0000\u0000\u0a89\u0a8a\u0005L\u0000\u0000\u0a8a\u019e\u0001\u0000"+ - "\u0000\u0000\u0a8b\u0a8c\u0005H\u0000\u0000\u0a8c\u0a8d\u0005L\u0000\u0000"+ - "\u0a8d\u0a8e\u0005L\u0000\u0000\u0a8e\u0a8f\u0005_\u0000\u0000\u0a8f\u0a90"+ - "\u0005U\u0000\u0000\u0a90\u0a91\u0005N\u0000\u0000\u0a91\u0a92\u0005I"+ - "\u0000\u0000\u0a92\u0a93\u0005O\u0000\u0000\u0a93\u0a94\u0005N\u0000\u0000"+ - "\u0a94\u01a0\u0001\u0000\u0000\u0000\u0a95\u0a96\u0005H\u0000\u0000\u0a96"+ - "\u0a97\u0005O\u0000\u0000\u0a97\u0a98\u0005S\u0000\u0000\u0a98\u0a99\u0005"+ - "T\u0000\u0000\u0a99\u0a9a\u0005N\u0000\u0000\u0a9a\u0a9b\u0005A\u0000"+ - "\u0000\u0a9b\u0a9c\u0005M\u0000\u0000\u0a9c\u0a9d\u0005E\u0000\u0000\u0a9d"+ - "\u01a2\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0005H\u0000\u0000\u0a9f\u0aa0"+ - "\u0005O\u0000\u0000\u0aa0\u0aa1\u0005T\u0000\u0000\u0aa1\u0aa2\u0005S"+ - "\u0000\u0000\u0aa2\u0aa3\u0005P\u0000\u0000\u0aa3\u0aa4\u0005O\u0000\u0000"+ - "\u0aa4\u0aa5\u0005T\u0000\u0000\u0aa5\u01a4\u0001\u0000\u0000\u0000\u0aa6"+ - "\u0aa7\u0005H\u0000\u0000\u0aa7\u0aa8\u0005O\u0000\u0000\u0aa8\u0aa9\u0005"+ - "U\u0000\u0000\u0aa9\u0aaa\u0005R\u0000\u0000\u0aaa\u01a6\u0001\u0000\u0000"+ - "\u0000\u0aab\u0aac\u0005H\u0000\u0000\u0aac\u0aad\u0005U\u0000\u0000\u0aad"+ - "\u0aae\u0005B\u0000\u0000\u0aae\u01a8\u0001\u0000\u0000\u0000\u0aaf\u0ab0"+ - "\u0005I\u0000\u0000\u0ab0\u0ab1\u0005D\u0000\u0000\u0ab1\u0ab2\u0005E"+ - "\u0000\u0000\u0ab2\u0ab3\u0005N\u0000\u0000\u0ab3\u0ab4\u0005T\u0000\u0000"+ - "\u0ab4\u0ab5\u0005I\u0000\u0000\u0ab5\u0ab6\u0005F\u0000\u0000\u0ab6\u0ab7"+ - "\u0005I\u0000\u0000\u0ab7\u0ab8\u0005E\u0000\u0000\u0ab8\u0ab9\u0005D"+ - "\u0000\u0000\u0ab9\u01aa\u0001\u0000\u0000\u0000\u0aba\u0abb\u0005I\u0000"+ - "\u0000\u0abb\u0abc\u0005F\u0000\u0000\u0abc\u01ac\u0001\u0000\u0000\u0000"+ - "\u0abd\u0abe\u0005I\u0000\u0000\u0abe\u0abf\u0005G\u0000\u0000\u0abf\u0ac0"+ - "\u0005N\u0000\u0000\u0ac0\u0ac1\u0005O\u0000\u0000\u0ac1\u0ac2\u0005R"+ - "\u0000\u0000\u0ac2\u0ac3\u0005E\u0000\u0000\u0ac3\u01ae\u0001\u0000\u0000"+ - "\u0000\u0ac4\u0ac5\u0005I\u0000\u0000\u0ac5\u0ac6\u0005M\u0000\u0000\u0ac6"+ - "\u0ac7\u0005M\u0000\u0000\u0ac7\u0ac8\u0005E\u0000\u0000\u0ac8\u0ac9\u0005"+ - "D\u0000\u0000\u0ac9\u0aca\u0005I\u0000\u0000\u0aca\u0acb\u0005A\u0000"+ - "\u0000\u0acb\u0acc\u0005T\u0000\u0000\u0acc\u0acd\u0005E\u0000\u0000\u0acd"+ - "\u01b0\u0001\u0000\u0000\u0000\u0ace\u0acf\u0005I\u0000\u0000\u0acf\u0ad0"+ - "\u0005N\u0000\u0000\u0ad0\u01b2\u0001\u0000\u0000\u0000\u0ad1\u0ad2\u0005"+ - "I\u0000\u0000\u0ad2\u0ad3\u0005N\u0000\u0000\u0ad3\u0ad4\u0005C\u0000"+ - "\u0000\u0ad4\u0ad5\u0005R\u0000\u0000\u0ad5\u0ad6\u0005E\u0000\u0000\u0ad6"+ - "\u0ad7\u0005M\u0000\u0000\u0ad7\u0ad8\u0005E\u0000\u0000\u0ad8\u0ad9\u0005"+ - "N\u0000\u0000\u0ad9\u0ada\u0005T\u0000\u0000\u0ada\u0adb\u0005A\u0000"+ - "\u0000\u0adb\u0adc\u0005L\u0000\u0000\u0adc\u01b4\u0001\u0000\u0000\u0000"+ - "\u0add\u0ade\u0005I\u0000\u0000\u0ade\u0adf\u0005N\u0000\u0000\u0adf\u0ae0"+ - "\u0005D\u0000\u0000\u0ae0\u0ae1\u0005E\u0000\u0000\u0ae1\u0ae2\u0005X"+ - "\u0000\u0000\u0ae2\u01b6\u0001\u0000\u0000\u0000\u0ae3\u0ae4\u0005I\u0000"+ - "\u0000\u0ae4\u0ae5\u0005N\u0000\u0000\u0ae5\u0ae6\u0005D\u0000\u0000\u0ae6"+ - "\u0ae7\u0005E\u0000\u0000\u0ae7\u0ae8\u0005X\u0000\u0000\u0ae8\u0ae9\u0005"+ - "E\u0000\u0000\u0ae9\u0aea\u0005S\u0000\u0000\u0aea\u01b8\u0001\u0000\u0000"+ - "\u0000\u0aeb\u0aec\u0005I\u0000\u0000\u0aec\u0aed\u0005N\u0000\u0000\u0aed"+ - "\u0aee\u0005F\u0000\u0000\u0aee\u0aef\u0005I\u0000\u0000\u0aef\u0af0\u0005"+ - "L\u0000\u0000\u0af0\u0af1\u0005E\u0000\u0000\u0af1\u01ba\u0001\u0000\u0000"+ - "\u0000\u0af2\u0af3\u0005I\u0000\u0000\u0af3\u0af4\u0005N\u0000\u0000\u0af4"+ - "\u0af5\u0005N\u0000\u0000\u0af5\u0af6\u0005E\u0000\u0000\u0af6\u0af7\u0005"+ - "R\u0000\u0000\u0af7\u01bc\u0001\u0000\u0000\u0000\u0af8\u0af9\u0005I\u0000"+ - "\u0000\u0af9\u0afa\u0005N\u0000\u0000\u0afa\u0afb\u0005S\u0000\u0000\u0afb"+ - "\u0afc\u0005E\u0000\u0000\u0afc\u0afd\u0005R\u0000\u0000\u0afd\u0afe\u0005"+ - "T\u0000\u0000\u0afe\u01be\u0001\u0000\u0000\u0000\u0aff\u0b00\u0005I\u0000"+ - "\u0000\u0b00\u0b01\u0005N\u0000\u0000\u0b01\u0b02\u0005S\u0000\u0000\u0b02"+ - "\u0b03\u0005T\u0000\u0000\u0b03\u0b04\u0005A\u0000\u0000\u0b04\u0b05\u0005"+ - "L\u0000\u0000\u0b05\u0b06\u0005L\u0000\u0000\u0b06\u01c0\u0001\u0000\u0000"+ - "\u0000\u0b07\u0b08\u0005I\u0000\u0000\u0b08\u0b09\u0005N\u0000\u0000\u0b09"+ - "\u0b0a\u0005T\u0000\u0000\u0b0a\u01c2\u0001\u0000\u0000\u0000\u0b0b\u0b0c"+ - "\u0005I\u0000\u0000\u0b0c\u0b0d\u0005N\u0000\u0000\u0b0d\u0b0e\u0005T"+ - "\u0000\u0000\u0b0e\u0b0f\u0005E\u0000\u0000\u0b0f\u0b10\u0005G\u0000\u0000"+ - "\u0b10\u0b11\u0005E\u0000\u0000\u0b11\u0b12\u0005R\u0000\u0000\u0b12\u01c4"+ - "\u0001\u0000\u0000\u0000\u0b13\u0b14\u0005I\u0000\u0000\u0b14\u0b15\u0005"+ - "N\u0000\u0000\u0b15\u0b16\u0005T\u0000\u0000\u0b16\u0b17\u0005E\u0000"+ - "\u0000\u0b17\u0b18\u0005R\u0000\u0000\u0b18\u0b19\u0005M\u0000\u0000\u0b19"+ - "\u0b1a\u0005E\u0000\u0000\u0b1a\u0b1b\u0005D\u0000\u0000\u0b1b\u0b1c\u0005"+ - "I\u0000\u0000\u0b1c\u0b1d\u0005A\u0000\u0000\u0b1d\u0b1e\u0005T\u0000"+ - "\u0000\u0b1e\u0b1f\u0005E\u0000\u0000\u0b1f\u01c6\u0001\u0000\u0000\u0000"+ - "\u0b20\u0b21\u0005I\u0000\u0000\u0b21\u0b22\u0005N\u0000\u0000\u0b22\u0b23"+ - "\u0005T\u0000\u0000\u0b23\u0b24\u0005E\u0000\u0000\u0b24\u0b25\u0005R"+ - "\u0000\u0000\u0b25\u0b26\u0005S\u0000\u0000\u0b26\u0b27\u0005E\u0000\u0000"+ - "\u0b27\u0b28\u0005C\u0000\u0000\u0b28\u0b29\u0005T\u0000\u0000\u0b29\u01c8"+ - "\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0005I\u0000\u0000\u0b2b\u0b2c\u0005"+ - "N\u0000\u0000\u0b2c\u0b2d\u0005T\u0000\u0000\u0b2d\u0b2e\u0005E\u0000"+ - "\u0000\u0b2e\u0b2f\u0005R\u0000\u0000\u0b2f\u0b30\u0005V\u0000\u0000\u0b30"+ - "\u0b31\u0005A\u0000\u0000\u0b31\u0b32\u0005L\u0000\u0000\u0b32\u01ca\u0001"+ - "\u0000\u0000\u0000\u0b33\u0b34\u0005I\u0000\u0000\u0b34\u0b35\u0005N\u0000"+ - "\u0000\u0b35\u0b36\u0005T\u0000\u0000\u0b36\u0b37\u0005O\u0000\u0000\u0b37"+ - "\u01cc\u0001\u0000\u0000\u0000\u0b38\u0b39\u0005I\u0000\u0000\u0b39\u0b3a"+ - "\u0005N\u0000\u0000\u0b3a\u0b3b\u0005V\u0000\u0000\u0b3b\u0b3c\u0005E"+ - "\u0000\u0000\u0b3c\u0b3d\u0005R\u0000\u0000\u0b3d\u0b3e\u0005T\u0000\u0000"+ - "\u0b3e\u0b3f\u0005E\u0000\u0000\u0b3f\u0b40\u0005D\u0000\u0000\u0b40\u01ce"+ - "\u0001\u0000\u0000\u0000\u0b41\u0b42\u0005I\u0000\u0000\u0b42\u0b43\u0005"+ - "P\u0000\u0000\u0b43\u0b44\u0005V\u0000\u0000\u0b44\u0b45\u00054\u0000"+ - "\u0000\u0b45\u01d0\u0001\u0000\u0000\u0000\u0b46\u0b47\u0005I\u0000\u0000"+ - "\u0b47\u0b48\u0005P\u0000\u0000\u0b48\u0b49\u0005V\u0000\u0000\u0b49\u0b4a"+ - "\u00056\u0000\u0000\u0b4a\u01d2\u0001\u0000\u0000\u0000\u0b4b\u0b4c\u0005"+ - "I\u0000\u0000\u0b4c\u0b4d\u0005S\u0000\u0000\u0b4d\u01d4\u0001\u0000\u0000"+ - "\u0000\u0b4e\u0b4f\u0005I\u0000\u0000\u0b4f\u0b50\u0005S\u0000\u0000\u0b50"+ - "\u0b51\u0005_\u0000\u0000\u0b51\u0b52\u0005N\u0000\u0000\u0b52\u0b53\u0005"+ - "O\u0000\u0000\u0b53\u0b54\u0005T\u0000\u0000\u0b54\u0b55\u0005_\u0000"+ - "\u0000\u0b55\u0b56\u0005N\u0000\u0000\u0b56\u0b57\u0005U\u0000\u0000\u0b57"+ - "\u0b58\u0005L\u0000\u0000\u0b58\u0b59\u0005L\u0000\u0000\u0b59\u0b5a\u0005"+ - "_\u0000\u0000\u0b5a\u0b5b\u0005P\u0000\u0000\u0b5b\u0b5c\u0005R\u0000"+ - "\u0000\u0b5c\u0b5d\u0005E\u0000\u0000\u0b5d\u0b5e\u0005D\u0000\u0000\u0b5e"+ - "\u01d6\u0001\u0000\u0000\u0000\u0b5f\u0b60\u0005I\u0000\u0000\u0b60\u0b61"+ - "\u0005S\u0000\u0000\u0b61\u0b62\u0005_\u0000\u0000\u0b62\u0b63\u0005N"+ - "\u0000\u0000\u0b63\u0b64\u0005U\u0000\u0000\u0b64\u0b65\u0005L\u0000\u0000"+ - "\u0b65\u0b66\u0005L\u0000\u0000\u0b66\u0b67\u0005_\u0000\u0000\u0b67\u0b68"+ - "\u0005P\u0000\u0000\u0b68\u0b69\u0005R\u0000\u0000\u0b69\u0b6a\u0005E"+ - "\u0000\u0000\u0b6a\u0b6b\u0005D\u0000\u0000\u0b6b\u01d8\u0001\u0000\u0000"+ - "\u0000\u0b6c\u0b6d\u0005I\u0000\u0000\u0b6d\u0b6e\u0005S\u0000\u0000\u0b6e"+ - "\u0b6f\u0005N\u0000\u0000\u0b6f\u0b70\u0005U\u0000\u0000\u0b70\u0b71\u0005"+ - "L\u0000\u0000\u0b71\u0b72\u0005L\u0000\u0000\u0b72\u01da\u0001\u0000\u0000"+ - "\u0000\u0b73\u0b74\u0005I\u0000\u0000\u0b74\u0b75\u0005S\u0000\u0000\u0b75"+ - "\u0b76\u0005O\u0000\u0000\u0b76\u0b77\u0005L\u0000\u0000\u0b77\u0b78\u0005"+ - "A\u0000\u0000\u0b78\u0b79\u0005T\u0000\u0000\u0b79\u0b7a\u0005I\u0000"+ - "\u0000\u0b7a\u0b7b\u0005O\u0000\u0000\u0b7b\u0b7c\u0005N\u0000\u0000\u0b7c"+ - "\u01dc\u0001\u0000\u0000\u0000\u0b7d\u0b7e\u0005J\u0000\u0000\u0b7e\u0b7f"+ - "\u0005O\u0000\u0000\u0b7f\u0b80\u0005B\u0000\u0000\u0b80\u01de\u0001\u0000"+ - "\u0000\u0000\u0b81\u0b82\u0005J\u0000\u0000\u0b82\u0b83\u0005O\u0000\u0000"+ - "\u0b83\u0b84\u0005B\u0000\u0000\u0b84\u0b85\u0005S\u0000\u0000\u0b85\u01e0"+ - "\u0001\u0000\u0000\u0000\u0b86\u0b87\u0005J\u0000\u0000\u0b87\u0b88\u0005"+ - "O\u0000\u0000\u0b88\u0b89\u0005I\u0000\u0000\u0b89\u0b8a\u0005N\u0000"+ - "\u0000\u0b8a\u01e2\u0001\u0000\u0000\u0000\u0b8b\u0b8c\u0005J\u0000\u0000"+ - "\u0b8c\u0b8d\u0005S\u0000\u0000\u0b8d\u0b8e\u0005O\u0000\u0000\u0b8e\u0b8f"+ - "\u0005N\u0000\u0000\u0b8f\u01e4\u0001\u0000\u0000\u0000\u0b90\u0b91\u0005"+ - "J\u0000\u0000\u0b91\u0b92\u0005S\u0000\u0000\u0b92\u0b93\u0005O\u0000"+ - "\u0000\u0b93\u0b94\u0005N\u0000\u0000\u0b94\u0b95\u0005B\u0000\u0000\u0b95"+ - "\u01e6\u0001\u0000\u0000\u0000\u0b96\u0b97\u0005K\u0000\u0000\u0b97\u0b98"+ - "\u0005E\u0000\u0000\u0b98\u0b99\u0005Y\u0000\u0000\u0b99\u01e8\u0001\u0000"+ - "\u0000\u0000\u0b9a\u0b9b\u0005K\u0000\u0000\u0b9b\u0b9c\u0005E\u0000\u0000"+ - "\u0b9c\u0b9d\u0005Y\u0000\u0000\u0b9d\u0b9e\u0005S\u0000\u0000\u0b9e\u01ea"+ - "\u0001\u0000\u0000\u0000\u0b9f\u0ba0\u0005K\u0000\u0000\u0ba0\u0ba1\u0005"+ - "I\u0000\u0000\u0ba1\u0ba2\u0005L\u0000\u0000\u0ba2\u0ba3\u0005L\u0000"+ - "\u0000\u0ba3\u01ec\u0001\u0000\u0000\u0000\u0ba4\u0ba5\u0005L\u0000\u0000"+ - "\u0ba5\u0ba6\u0005A\u0000\u0000\u0ba6\u0ba7\u0005B\u0000\u0000\u0ba7\u0ba8"+ - "\u0005E\u0000\u0000\u0ba8\u0ba9\u0005L\u0000\u0000\u0ba9\u01ee\u0001\u0000"+ - "\u0000\u0000\u0baa\u0bab\u0005L\u0000\u0000\u0bab\u0bac\u0005A\u0000\u0000"+ - "\u0bac\u0bad\u0005R\u0000\u0000\u0bad\u0bae\u0005G\u0000\u0000\u0bae\u0baf"+ - "\u0005E\u0000\u0000\u0baf\u0bb0\u0005I\u0000\u0000\u0bb0\u0bb1\u0005N"+ - "\u0000\u0000\u0bb1\u0bb2\u0005T\u0000\u0000\u0bb2\u01f0\u0001\u0000\u0000"+ - "\u0000\u0bb3\u0bb4\u0005L\u0000\u0000\u0bb4\u0bb5\u0005A\u0000\u0000\u0bb5"+ - "\u0bb6\u0005S\u0000\u0000\u0bb6\u0bb7\u0005T\u0000\u0000\u0bb7\u01f2\u0001"+ - "\u0000\u0000\u0000\u0bb8\u0bb9\u0005L\u0000\u0000\u0bb9\u0bba\u0005A\u0000"+ - "\u0000\u0bba\u0bbb\u0005T\u0000\u0000\u0bbb\u0bbc\u0005E\u0000\u0000\u0bbc"+ - "\u0bbd\u0005R\u0000\u0000\u0bbd\u0bbe\u0005A\u0000\u0000\u0bbe\u0bbf\u0005"+ - "L\u0000\u0000\u0bbf\u01f4\u0001\u0000\u0000\u0000\u0bc0\u0bc1\u0005L\u0000"+ - "\u0000\u0bc1\u0bc2\u0005D\u0000\u0000\u0bc2\u0bc3\u0005A\u0000\u0000\u0bc3"+ - "\u0bc4\u0005P\u0000\u0000\u0bc4\u01f6\u0001\u0000\u0000\u0000\u0bc5\u0bc6"+ - "\u0005L\u0000\u0000\u0bc6\u0bc7\u0005D\u0000\u0000\u0bc7\u0bc8\u0005A"+ - "\u0000\u0000\u0bc8\u0bc9\u0005P\u0000\u0000\u0bc9\u0bca\u0005_\u0000\u0000"+ - "\u0bca\u0bcb\u0005A\u0000\u0000\u0bcb\u0bcc\u0005D\u0000\u0000\u0bcc\u0bcd"+ - "\u0005M\u0000\u0000\u0bcd\u0bce\u0005I\u0000\u0000\u0bce\u0bcf\u0005N"+ - "\u0000\u0000\u0bcf\u0bd0\u0005_\u0000\u0000\u0bd0\u0bd1\u0005P\u0000\u0000"+ - "\u0bd1\u0bd2\u0005A\u0000\u0000\u0bd2\u0bd3\u0005S\u0000\u0000\u0bd3\u0bd4"+ - "\u0005S\u0000\u0000\u0bd4\u0bd5\u0005W\u0000\u0000\u0bd5\u0bd6\u0005O"+ - "\u0000\u0000\u0bd6\u0bd7\u0005R\u0000\u0000\u0bd7\u0bd8\u0005D\u0000\u0000"+ - "\u0bd8\u01f8\u0001\u0000\u0000\u0000\u0bd9\u0bda\u0005L\u0000\u0000\u0bda"+ - "\u0bdb\u0005E\u0000\u0000\u0bdb\u0bdc\u0005F\u0000\u0000\u0bdc\u0bdd\u0005"+ - "T\u0000\u0000\u0bdd\u01fa\u0001\u0000\u0000\u0000\u0bde\u0bdf\u0005L\u0000"+ - "\u0000\u0bdf\u0be0\u0005E\u0000\u0000\u0be0\u0be1\u0005S\u0000\u0000\u0be1"+ - "\u0be2\u0005S\u0000\u0000\u0be2\u01fc\u0001\u0000\u0000\u0000\u0be3\u0be4"+ - "\u0005L\u0000\u0000\u0be4\u0be5\u0005E\u0000\u0000\u0be5\u0be6\u0005V"+ - "\u0000\u0000\u0be6\u0be7\u0005E\u0000\u0000\u0be7\u0be8\u0005L\u0000\u0000"+ - "\u0be8\u01fe\u0001\u0000\u0000\u0000\u0be9\u0bea\u0005L\u0000\u0000\u0bea"+ - "\u0beb\u0005I\u0000\u0000\u0beb\u0bec\u0005K\u0000\u0000\u0bec\u0bed\u0005"+ - "E\u0000\u0000\u0bed\u0200\u0001\u0000\u0000\u0000\u0bee\u0bef\u0005L\u0000"+ - "\u0000\u0bef\u0bf0\u0005I\u0000\u0000\u0bf0\u0bf1\u0005M\u0000\u0000\u0bf1"+ - "\u0bf2\u0005I\u0000\u0000\u0bf2\u0bf3\u0005T\u0000\u0000\u0bf3\u0202\u0001"+ - "\u0000\u0000\u0000\u0bf4\u0bf5\u0005L\u0000\u0000\u0bf5\u0bf6\u0005I\u0000"+ - "\u0000\u0bf6\u0bf7\u0005N\u0000\u0000\u0bf7\u0bf8\u0005E\u0000\u0000\u0bf8"+ - "\u0bf9\u0005S\u0000\u0000\u0bf9\u0204\u0001\u0000\u0000\u0000\u0bfa\u0bfb"+ - "\u0005L\u0000\u0000\u0bfb\u0bfc\u0005I\u0000\u0000\u0bfc\u0bfd\u0005N"+ - "\u0000\u0000\u0bfd\u0bfe\u0005K\u0000\u0000\u0bfe\u0206\u0001\u0000\u0000"+ - "\u0000\u0bff\u0c00\u0005L\u0000\u0000\u0c00\u0c01\u0005I\u0000\u0000\u0c01"+ - "\u0c02\u0005S\u0000\u0000\u0c02\u0c03\u0005T\u0000\u0000\u0c03\u0208\u0001"+ - "\u0000\u0000\u0000\u0c04\u0c05\u0005L\u0000\u0000\u0c05\u0c06\u0005O\u0000"+ - "\u0000\u0c06\u0c07\u0005A\u0000\u0000\u0c07\u0c08\u0005D\u0000\u0000\u0c08"+ - "\u020a\u0001\u0000\u0000\u0000\u0c09\u0c0a\u0005L\u0000\u0000\u0c0a\u0c0b"+ - "\u0005O\u0000\u0000\u0c0b\u0c0c\u0005C\u0000\u0000\u0c0c\u0c0d\u0005A"+ - "\u0000\u0000\u0c0d\u0c0e\u0005L\u0000\u0000\u0c0e\u020c\u0001\u0000\u0000"+ - "\u0000\u0c0f\u0c10\u0005L\u0000\u0000\u0c10\u0c11\u0005O\u0000\u0000\u0c11"+ - "\u0c12\u0005C\u0000\u0000\u0c12\u0c13\u0005A\u0000\u0000\u0c13\u0c14\u0005"+ - "L\u0000\u0000\u0c14\u0c15\u0005T\u0000\u0000\u0c15\u0c16\u0005I\u0000"+ - "\u0000\u0c16\u0c17\u0005M\u0000\u0000\u0c17\u0c18\u0005E\u0000\u0000\u0c18"+ - "\u020e\u0001\u0000\u0000\u0000\u0c19\u0c1a\u0005L\u0000\u0000\u0c1a\u0c1b"+ - "\u0005O\u0000\u0000\u0c1b\u0c1c\u0005C\u0000\u0000\u0c1c\u0c1d\u0005A"+ - "\u0000\u0000\u0c1d\u0c1e\u0005L\u0000\u0000\u0c1e\u0c1f\u0005T\u0000\u0000"+ - "\u0c1f\u0c20\u0005I\u0000\u0000\u0c20\u0c21\u0005M\u0000\u0000\u0c21\u0c22"+ - "\u0005E\u0000\u0000\u0c22\u0c23\u0005S\u0000\u0000\u0c23\u0c24\u0005T"+ - "\u0000\u0000\u0c24\u0c25\u0005A\u0000\u0000\u0c25\u0c26\u0005M\u0000\u0000"+ - "\u0c26\u0c27\u0005P\u0000\u0000\u0c27\u0210\u0001\u0000\u0000\u0000\u0c28"+ - "\u0c29\u0005L\u0000\u0000\u0c29\u0c2a\u0005O\u0000\u0000\u0c2a\u0c2b\u0005"+ - "C\u0000\u0000\u0c2b\u0c2c\u0005A\u0000\u0000\u0c2c\u0c2d\u0005T\u0000"+ - "\u0000\u0c2d\u0c2e\u0005I\u0000\u0000\u0c2e\u0c2f\u0005O\u0000\u0000\u0c2f"+ - "\u0c30\u0005N\u0000\u0000\u0c30\u0212\u0001\u0000\u0000\u0000\u0c31\u0c32"+ - "\u0005L\u0000\u0000\u0c32\u0c33\u0005O\u0000\u0000\u0c33\u0c34\u0005C"+ - "\u0000\u0000\u0c34\u0c35\u0005K\u0000\u0000\u0c35\u0214\u0001\u0000\u0000"+ - "\u0000\u0c36\u0c37\u0005L\u0000\u0000\u0c37\u0c38\u0005O\u0000\u0000\u0c38"+ - "\u0c39\u0005G\u0000\u0000\u0c39\u0c3a\u0005I\u0000\u0000\u0c3a\u0c3b\u0005"+ - "C\u0000\u0000\u0c3b\u0c3c\u0005A\u0000\u0000\u0c3c\u0c3d\u0005L\u0000"+ - "\u0000\u0c3d\u0216\u0001\u0000\u0000\u0000\u0c3e\u0c3f\u0005L\u0000\u0000"+ - "\u0c3f\u0c40\u0005O\u0000\u0000\u0c40\u0c41\u0005W\u0000\u0000\u0c41\u0c42"+ - "\u0005_\u0000\u0000\u0c42\u0c43\u0005P\u0000\u0000\u0c43\u0c44\u0005R"+ - "\u0000\u0000\u0c44\u0c45\u0005I\u0000\u0000\u0c45\u0c46\u0005O\u0000\u0000"+ - "\u0c46\u0c47\u0005R\u0000\u0000\u0c47\u0c48\u0005I\u0000\u0000\u0c48\u0c49"+ - "\u0005T\u0000\u0000\u0c49\u0c4a\u0005Y\u0000\u0000\u0c4a\u0218\u0001\u0000"+ - "\u0000\u0000\u0c4b\u0c4c\u0005M\u0000\u0000\u0c4c\u0c4d\u0005A\u0000\u0000"+ - "\u0c4d\u0c4e\u0005N\u0000\u0000\u0c4e\u0c4f\u0005U\u0000\u0000\u0c4f\u0c50"+ - "\u0005A\u0000\u0000\u0c50\u0c51\u0005L\u0000\u0000\u0c51\u021a\u0001\u0000"+ - "\u0000\u0000\u0c52\u0c53\u0005M\u0000\u0000\u0c53\u0c54\u0005A\u0000\u0000"+ - "\u0c54\u0c55\u0005P\u0000\u0000\u0c55\u021c\u0001\u0000\u0000\u0000\u0c56"+ - "\u0c57\u0005M\u0000\u0000\u0c57\u0c58\u0005A\u0000\u0000\u0c58\u0c59\u0005"+ - "T\u0000\u0000\u0c59\u0c5a\u0005C\u0000\u0000\u0c5a\u0c5b\u0005H\u0000"+ - "\u0000\u0c5b\u021e\u0001\u0000\u0000\u0000\u0c5c\u0c5d\u0005M\u0000\u0000"+ - "\u0c5d\u0c5e\u0005A\u0000\u0000\u0c5e\u0c5f\u0005T\u0000\u0000\u0c5f\u0c60"+ - "\u0005C\u0000\u0000\u0c60\u0c61\u0005H\u0000\u0000\u0c61\u0c62\u0005_"+ - "\u0000\u0000\u0c62\u0c63\u0005A\u0000\u0000\u0c63\u0c64\u0005L\u0000\u0000"+ - "\u0c64\u0c65\u0005L\u0000\u0000\u0c65\u0220\u0001\u0000\u0000\u0000\u0c66"+ - "\u0c67\u0005M\u0000\u0000\u0c67\u0c68\u0005A\u0000\u0000\u0c68\u0c69\u0005"+ - "T\u0000\u0000\u0c69\u0c6a\u0005C\u0000\u0000\u0c6a\u0c6b\u0005H\u0000"+ - "\u0000\u0c6b\u0c6c\u0005_\u0000\u0000\u0c6c\u0c6d\u0005A\u0000\u0000\u0c6d"+ - "\u0c6e\u0005N\u0000\u0000\u0c6e\u0c6f\u0005Y\u0000\u0000\u0c6f\u0222\u0001"+ - "\u0000\u0000\u0000\u0c70\u0c71\u0005M\u0000\u0000\u0c71\u0c72\u0005A\u0000"+ - "\u0000\u0c72\u0c73\u0005T\u0000\u0000\u0c73\u0c74\u0005C\u0000\u0000\u0c74"+ - "\u0c75\u0005H\u0000\u0000\u0c75\u0c76\u0005_\u0000\u0000\u0c76\u0c77\u0005"+ - "P\u0000\u0000\u0c77\u0c78\u0005H\u0000\u0000\u0c78\u0c79\u0005R\u0000"+ - "\u0000\u0c79\u0c7a\u0005A\u0000\u0000\u0c7a\u0c7b\u0005S\u0000\u0000\u0c7b"+ - "\u0c7c\u0005E\u0000\u0000\u0c7c\u0224\u0001\u0000\u0000\u0000\u0c7d\u0c7e"+ - "\u0005M\u0000\u0000\u0c7e\u0c7f\u0005A\u0000\u0000\u0c7f\u0c80\u0005T"+ - "\u0000\u0000\u0c80\u0c81\u0005C\u0000\u0000\u0c81\u0c82\u0005H\u0000\u0000"+ - "\u0c82\u0c83\u0005_\u0000\u0000\u0c83\u0c84\u0005P\u0000\u0000\u0c84\u0c85"+ - "\u0005H\u0000\u0000\u0c85\u0c86\u0005R\u0000\u0000\u0c86\u0c87\u0005A"+ - "\u0000\u0000\u0c87\u0c88\u0005S\u0000\u0000\u0c88\u0c89\u0005E\u0000\u0000"+ - "\u0c89\u0c8a\u0005_\u0000\u0000\u0c8a\u0c8b\u0005E\u0000\u0000\u0c8b\u0c8c"+ - "\u0005D\u0000\u0000\u0c8c\u0c8d\u0005G\u0000\u0000\u0c8d\u0c8e\u0005E"+ - "\u0000\u0000\u0c8e\u0226\u0001\u0000\u0000\u0000\u0c8f\u0c90\u0005M\u0000"+ - "\u0000\u0c90\u0c91\u0005A\u0000\u0000\u0c91\u0c92\u0005T\u0000\u0000\u0c92"+ - "\u0c93\u0005C\u0000\u0000\u0c93\u0c94\u0005H\u0000\u0000\u0c94\u0c95\u0005"+ - "_\u0000\u0000\u0c95\u0c96\u0005P\u0000\u0000\u0c96\u0c97\u0005H\u0000"+ - "\u0000\u0c97\u0c98\u0005R\u0000\u0000\u0c98\u0c99\u0005A\u0000\u0000\u0c99"+ - "\u0c9a\u0005S\u0000\u0000\u0c9a\u0c9b\u0005E\u0000\u0000\u0c9b\u0c9c\u0005"+ - "_\u0000\u0000\u0c9c\u0c9d\u0005P\u0000\u0000\u0c9d\u0c9e\u0005R\u0000"+ - "\u0000\u0c9e\u0c9f\u0005E\u0000\u0000\u0c9f\u0ca0\u0005F\u0000\u0000\u0ca0"+ - "\u0ca1\u0005I\u0000\u0000\u0ca1\u0ca2\u0005X\u0000\u0000\u0ca2\u0228\u0001"+ - "\u0000\u0000\u0000\u0ca3\u0ca4\u0005M\u0000\u0000\u0ca4\u0ca5\u0005A\u0000"+ - "\u0000\u0ca5\u0ca6\u0005T\u0000\u0000\u0ca6\u0ca7\u0005C\u0000\u0000\u0ca7"+ - "\u0ca8\u0005H\u0000\u0000\u0ca8\u0ca9\u0005_\u0000\u0000\u0ca9\u0caa\u0005"+ - "R\u0000\u0000\u0caa\u0cab\u0005E\u0000\u0000\u0cab\u0cac\u0005G\u0000"+ - "\u0000\u0cac\u0cad\u0005E\u0000\u0000\u0cad\u0cae\u0005X\u0000\u0000\u0cae"+ - "\u0caf\u0005P\u0000\u0000\u0caf\u022a\u0001\u0000\u0000\u0000\u0cb0\u0cb1"+ - "\u0005M\u0000\u0000\u0cb1\u0cb2\u0005A\u0000\u0000\u0cb2\u0cb3\u0005T"+ - "\u0000\u0000\u0cb3\u0cb4\u0005C\u0000\u0000\u0cb4\u0cb5\u0005H\u0000\u0000"+ - "\u0cb5\u0cb6\u0005_\u0000\u0000\u0cb6\u0cb7\u0005N\u0000\u0000\u0cb7\u0cb8"+ - "\u0005A\u0000\u0000\u0cb8\u0cb9\u0005M\u0000\u0000\u0cb9\u0cba\u0005E"+ - "\u0000\u0000\u0cba\u022c\u0001\u0000\u0000\u0000\u0cbb\u0cbc\u0005M\u0000"+ - "\u0000\u0cbc\u0cbd\u0005A\u0000\u0000\u0cbd\u0cbe\u0005T\u0000\u0000\u0cbe"+ - "\u0cbf\u0005C\u0000\u0000\u0cbf\u0cc0\u0005H\u0000\u0000\u0cc0\u0cc1\u0005"+ - "_\u0000\u0000\u0cc1\u0cc2\u0005N\u0000\u0000\u0cc2\u0cc3\u0005A\u0000"+ - "\u0000\u0cc3\u0cc4\u0005M\u0000\u0000\u0cc4\u0cc5\u0005E\u0000\u0000\u0cc5"+ - "\u0cc6\u0005_\u0000\u0000\u0cc6\u0cc7\u0005G\u0000\u0000\u0cc7\u0cc8\u0005"+ - "L\u0000\u0000\u0cc8\u0cc9\u0005O\u0000\u0000\u0cc9\u0cca\u0005B\u0000"+ - "\u0000\u0cca\u022e\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0005M\u0000\u0000"+ - "\u0ccc\u0ccd\u0005A\u0000\u0000\u0ccd\u0cce\u0005T\u0000\u0000\u0cce\u0ccf"+ - "\u0005E\u0000\u0000\u0ccf\u0cd0\u0005R\u0000\u0000\u0cd0\u0cd1\u0005I"+ - "\u0000\u0000\u0cd1\u0cd2\u0005A\u0000\u0000\u0cd2\u0cd3\u0005L\u0000\u0000"+ - "\u0cd3\u0cd4\u0005I\u0000\u0000\u0cd4\u0cd5\u0005Z\u0000\u0000\u0cd5\u0cd6"+ - "\u0005E\u0000\u0000\u0cd6\u0cd7\u0005D\u0000\u0000\u0cd7\u0230\u0001\u0000"+ - "\u0000\u0000\u0cd8\u0cd9\u0005M\u0000\u0000\u0cd9\u0cda\u0005A\u0000\u0000"+ - "\u0cda\u0cdb\u0005X\u0000\u0000\u0cdb\u0232\u0001\u0000\u0000\u0000\u0cdc"+ - "\u0cdd\u0005M\u0000\u0000\u0cdd\u0cde\u0005A\u0000\u0000\u0cde\u0cdf\u0005"+ - "X\u0000\u0000\u0cdf\u0ce0\u0005V\u0000\u0000\u0ce0\u0ce1\u0005A\u0000"+ - "\u0000\u0ce1\u0ce2\u0005L\u0000\u0000\u0ce2\u0ce3\u0005U\u0000\u0000\u0ce3"+ - "\u0ce4\u0005E\u0000\u0000\u0ce4\u0234\u0001\u0000\u0000\u0000\u0ce5\u0ce6"+ - "\u0005M\u0000\u0000\u0ce6\u0ce7\u0005E\u0000\u0000\u0ce7\u0ce8\u0005M"+ - "\u0000\u0000\u0ce8\u0ce9\u0005O\u0000\u0000\u0ce9\u0236\u0001\u0000\u0000"+ - "\u0000\u0cea\u0ceb\u0005M\u0000\u0000\u0ceb\u0cec\u0005E\u0000\u0000\u0cec"+ - "\u0ced\u0005R\u0000\u0000\u0ced\u0cee\u0005G\u0000\u0000\u0cee\u0cef\u0005"+ - "E\u0000\u0000\u0cef\u0238\u0001\u0000\u0000\u0000\u0cf0\u0cf1\u0005M\u0000"+ - "\u0000\u0cf1\u0cf2\u0005I\u0000\u0000\u0cf2\u0cf3\u0005G\u0000\u0000\u0cf3"+ - "\u0cf4\u0005R\u0000\u0000\u0cf4\u0cf5\u0005A\u0000\u0000\u0cf5\u0cf6\u0005"+ - "T\u0000\u0000\u0cf6\u0cf7\u0005E\u0000\u0000\u0cf7\u023a\u0001\u0000\u0000"+ - "\u0000\u0cf8\u0cf9\u0005M\u0000\u0000\u0cf9\u0cfa\u0005I\u0000\u0000\u0cfa"+ - "\u0cfb\u0005G\u0000\u0000\u0cfb\u0cfc\u0005R\u0000\u0000\u0cfc\u0cfd\u0005"+ - "A\u0000\u0000\u0cfd\u0cfe\u0005T\u0000\u0000\u0cfe\u0cff\u0005I\u0000"+ - "\u0000\u0cff\u0d00\u0005O\u0000\u0000\u0d00\u0d01\u0005N\u0000\u0000\u0d01"+ - "\u0d02\u0005S\u0000\u0000\u0d02\u023c\u0001\u0000\u0000\u0000\u0d03\u0d04"+ - "\u0005M\u0000\u0000\u0d04\u0d05\u0005I\u0000\u0000\u0d05\u0d06\u0005N"+ - "\u0000\u0000\u0d06\u023e\u0001\u0000\u0000\u0000\u0d07\u0d08\u0005M\u0000"+ - "\u0000\u0d08\u0d09\u0005I\u0000\u0000\u0d09\u0d0a\u0005N\u0000\u0000\u0d0a"+ - "\u0d0b\u0005U\u0000\u0000\u0d0b\u0d0c\u0005S\u0000\u0000\u0d0c\u0240\u0001"+ - "\u0000\u0000\u0000\u0d0d\u0d0e\u0005M\u0000\u0000\u0d0e\u0d0f\u0005I\u0000"+ - "\u0000\u0d0f\u0d10\u0005N\u0000\u0000\u0d10\u0d11\u0005U\u0000\u0000\u0d11"+ - "\u0d12\u0005T\u0000\u0000\u0d12\u0d13\u0005E\u0000\u0000\u0d13\u0242\u0001"+ - "\u0000\u0000\u0000\u0d14\u0d15\u0005M\u0000\u0000\u0d15\u0d16\u0005O\u0000"+ - "\u0000\u0d16\u0d17\u0005D\u0000\u0000\u0d17\u0d18\u0005I\u0000\u0000\u0d18"+ - "\u0d19\u0005F\u0000\u0000\u0d19\u0d1a\u0005Y\u0000\u0000\u0d1a\u0244\u0001"+ - "\u0000\u0000\u0000\u0d1b\u0d1c\u0005M\u0000\u0000\u0d1c\u0d1d\u0005O\u0000"+ - "\u0000\u0d1d\u0d1e\u0005N\u0000\u0000\u0d1e\u0d1f\u0005T\u0000\u0000\u0d1f"+ - "\u0d20\u0005H\u0000\u0000\u0d20\u0246\u0001\u0000\u0000\u0000\u0d21\u0d22"+ - "\u0005M\u0000\u0000\u0d22\u0d23\u0005T\u0000\u0000\u0d23\u0d24\u0005M"+ - "\u0000\u0000\u0d24\u0d25\u0005V\u0000\u0000\u0d25\u0248\u0001\u0000\u0000"+ - "\u0000\u0d26\u0d27\u0005N\u0000\u0000\u0d27\u0d28\u0005A\u0000\u0000\u0d28"+ - "\u0d29\u0005M\u0000\u0000\u0d29\u0d2a\u0005E\u0000\u0000\u0d2a\u024a\u0001"+ - "\u0000\u0000\u0000\u0d2b\u0d2c\u0005N\u0000\u0000\u0d2c\u0d2d\u0005A\u0000"+ - "\u0000\u0d2d\u0d2e\u0005M\u0000\u0000\u0d2e\u0d2f\u0005E\u0000\u0000\u0d2f"+ - "\u0d30\u0005S\u0000\u0000\u0d30\u024c\u0001\u0000\u0000\u0000\u0d31\u0d32"+ - "\u0005N\u0000\u0000\u0d32\u0d33\u0005A\u0000\u0000\u0d33\u0d34\u0005T"+ - "\u0000\u0000\u0d34\u0d35\u0005U\u0000\u0000\u0d35\u0d36\u0005R\u0000\u0000"+ - "\u0d36\u0d37\u0005A\u0000\u0000\u0d37\u0d38\u0005L\u0000\u0000\u0d38\u024e"+ - "\u0001\u0000\u0000\u0000\u0d39\u0d3a\u0005N\u0000\u0000\u0d3a\u0d3b\u0005"+ - "E\u0000\u0000\u0d3b\u0d3c\u0005G\u0000\u0000\u0d3c\u0d3d\u0005A\u0000"+ - "\u0000\u0d3d\u0d3e\u0005T\u0000\u0000\u0d3e\u0d3f\u0005I\u0000\u0000\u0d3f"+ - "\u0d40\u0005V\u0000\u0000\u0d40\u0d41\u0005E\u0000\u0000\u0d41\u0250\u0001"+ - "\u0000\u0000\u0000\u0d42\u0d43\u0005N\u0000\u0000\u0d43\u0d44\u0005E\u0000"+ - "\u0000\u0d44\u0d45\u0005V\u0000\u0000\u0d45\u0d46\u0005E\u0000\u0000\u0d46"+ - "\u0d47\u0005R\u0000\u0000\u0d47\u0252\u0001\u0000\u0000\u0000\u0d48\u0d49"+ - "\u0005N\u0000\u0000\u0d49\u0d4a\u0005E\u0000\u0000\u0d4a\u0d4b\u0005X"+ - "\u0000\u0000\u0d4b\u0d4c\u0005T\u0000\u0000\u0d4c\u0254\u0001\u0000\u0000"+ - "\u0000\u0d4d\u0d4e\u0005N\u0000\u0000\u0d4e\u0d4f\u0005G\u0000\u0000\u0d4f"+ - "\u0d50\u0005R\u0000\u0000\u0d50\u0d51\u0005A\u0000\u0000\u0d51\u0d52\u0005"+ - "M\u0000\u0000\u0d52\u0d53\u0005_\u0000\u0000\u0d53\u0d54\u0005B\u0000"+ - "\u0000\u0d54\u0d55\u0005F\u0000\u0000\u0d55\u0256\u0001\u0000\u0000\u0000"+ - "\u0d56\u0d57\u0005N\u0000\u0000\u0d57\u0d58\u0005O\u0000\u0000\u0d58\u0258"+ - "\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0005N\u0000\u0000\u0d5a\u0d5b\u0005"+ - "O\u0000\u0000\u0d5b\u0d5c\u0005_\u0000\u0000\u0d5c\u0d5d\u0005U\u0000"+ - "\u0000\u0d5d\u0d5e\u0005S\u0000\u0000\u0d5e\u0d5f\u0005E\u0000\u0000\u0d5f"+ - "\u0d60\u0005_\u0000\u0000\u0d60\u0d61\u0005M\u0000\u0000\u0d61\u0d62\u0005"+ - "V\u0000\u0000\u0d62\u025a\u0001\u0000\u0000\u0000\u0d63\u0d64\u0005N\u0000"+ - "\u0000\u0d64\u0d65\u0005O\u0000\u0000\u0d65\u0d66\u0005N\u0000\u0000\u0d66"+ - "\u0d67\u0005_\u0000\u0000\u0d67\u0d68\u0005N\u0000\u0000\u0d68\u0d69\u0005"+ - "U\u0000\u0000\u0d69\u0d6a\u0005L\u0000\u0000\u0d6a\u0d6b\u0005L\u0000"+ - "\u0000\u0d6b\u0d6c\u0005A\u0000\u0000\u0d6c\u0d6d\u0005B\u0000\u0000\u0d6d"+ - "\u0d6e\u0005L\u0000\u0000\u0d6e\u0d6f\u0005E\u0000\u0000\u0d6f\u025c\u0001"+ - "\u0000\u0000\u0000\u0d70\u0d71\u0005N\u0000\u0000\u0d71\u0d72\u0005O\u0000"+ - "\u0000\u0d72\u0d73\u0005T\u0000\u0000\u0d73\u025e\u0001\u0000\u0000\u0000"+ - "\u0d74\u0d75\u0005N\u0000\u0000\u0d75\u0d76\u0005U\u0000\u0000\u0d76\u0d77"+ - "\u0005L\u0000\u0000\u0d77\u0d78\u0005L\u0000\u0000\u0d78\u0260\u0001\u0000"+ - "\u0000\u0000\u0d79\u0d7a\u0005N\u0000\u0000\u0d7a\u0d7b\u0005U\u0000\u0000"+ - "\u0d7b\u0d7c\u0005L\u0000\u0000\u0d7c\u0d7d\u0005L\u0000\u0000\u0d7d\u0d7e"+ - "\u0005S\u0000\u0000\u0d7e\u0262\u0001\u0000\u0000\u0000\u0d7f\u0d80\u0005"+ - "O\u0000\u0000\u0d80\u0d81\u0005B\u0000\u0000\u0d81\u0d82\u0005S\u0000"+ - "\u0000\u0d82\u0d83\u0005E\u0000\u0000\u0d83\u0d84\u0005R\u0000\u0000\u0d84"+ - "\u0d85\u0005V\u0000\u0000\u0d85\u0d86\u0005E\u0000\u0000\u0d86\u0d87\u0005"+ - "R\u0000\u0000\u0d87\u0264\u0001\u0000\u0000\u0000\u0d88\u0d89\u0005O\u0000"+ - "\u0000\u0d89\u0d8a\u0005F\u0000\u0000\u0d8a\u0266\u0001\u0000\u0000\u0000"+ - "\u0d8b\u0d8c\u0005O\u0000\u0000\u0d8c\u0d8d\u0005F\u0000\u0000\u0d8d\u0d8e"+ - "\u0005F\u0000\u0000\u0d8e\u0d8f\u0005S\u0000\u0000\u0d8f\u0d90\u0005E"+ - "\u0000\u0000\u0d90\u0d91\u0005T\u0000\u0000\u0d91\u0268\u0001\u0000\u0000"+ - "\u0000\u0d92\u0d93\u0005O\u0000\u0000\u0d93\u0d94\u0005N\u0000\u0000\u0d94"+ - "\u026a\u0001\u0000\u0000\u0000\u0d95\u0d96\u0005O\u0000\u0000\u0d96\u0d97"+ - "\u0005N\u0000\u0000\u0d97\u0d98\u0005L\u0000\u0000\u0d98\u0d99\u0005Y"+ - "\u0000\u0000\u0d99\u026c\u0001\u0000\u0000\u0000\u0d9a\u0d9b\u0005O\u0000"+ - "\u0000\u0d9b\u0d9c\u0005P\u0000\u0000\u0d9c\u0d9d\u0005E\u0000\u0000\u0d9d"+ - "\u0d9e\u0005N\u0000\u0000\u0d9e\u026e\u0001\u0000\u0000\u0000\u0d9f\u0da0"+ - "\u0005O\u0000\u0000\u0da0\u0da1\u0005P\u0000\u0000\u0da1\u0da2\u0005T"+ - "\u0000\u0000\u0da2\u0da3\u0005I\u0000\u0000\u0da3\u0da4\u0005M\u0000\u0000"+ - "\u0da4\u0da5\u0005I\u0000\u0000\u0da5\u0da6\u0005Z\u0000\u0000\u0da6\u0da7"+ - "\u0005E\u0000\u0000\u0da7\u0da8\u0005D\u0000\u0000\u0da8\u0270\u0001\u0000"+ - "\u0000\u0000\u0da9\u0daa\u0005O\u0000\u0000\u0daa\u0dab\u0005R\u0000\u0000"+ - "\u0dab\u0272\u0001\u0000\u0000\u0000\u0dac\u0dad\u0005O\u0000\u0000\u0dad"+ - "\u0dae\u0005R\u0000\u0000\u0dae\u0daf\u0005D\u0000\u0000\u0daf\u0db0\u0005"+ - "E\u0000\u0000\u0db0\u0db1\u0005R\u0000\u0000\u0db1\u0274\u0001\u0000\u0000"+ - "\u0000\u0db2\u0db3\u0005O\u0000\u0000\u0db3\u0db4\u0005U\u0000\u0000\u0db4"+ - "\u0db5\u0005T\u0000\u0000\u0db5\u0db6\u0005E\u0000\u0000\u0db6\u0db7\u0005"+ - "R\u0000\u0000\u0db7\u0276\u0001\u0000\u0000\u0000\u0db8\u0db9\u0005O\u0000"+ - "\u0000\u0db9\u0dba\u0005U\u0000\u0000\u0dba\u0dbb\u0005T\u0000\u0000\u0dbb"+ - "\u0dbc\u0005F\u0000\u0000\u0dbc\u0dbd\u0005I\u0000\u0000\u0dbd\u0dbe\u0005"+ - "L\u0000\u0000\u0dbe\u0dbf\u0005E\u0000\u0000\u0dbf\u0278\u0001\u0000\u0000"+ - "\u0000\u0dc0\u0dc1\u0005O\u0000\u0000\u0dc1\u0dc2\u0005V\u0000\u0000\u0dc2"+ - "\u0dc3\u0005E\u0000\u0000\u0dc3\u0dc4\u0005R\u0000\u0000\u0dc4\u027a\u0001"+ - "\u0000\u0000\u0000\u0dc5\u0dc6\u0005O\u0000\u0000\u0dc6\u0dc7\u0005V\u0000"+ - "\u0000\u0dc7\u0dc8\u0005E\u0000\u0000\u0dc8\u0dc9\u0005R\u0000\u0000\u0dc9"+ - "\u0dca\u0005W\u0000\u0000\u0dca\u0dcb\u0005R\u0000\u0000\u0dcb\u0dcc\u0005"+ - "I\u0000\u0000\u0dcc\u0dcd\u0005T\u0000\u0000\u0dcd\u0dce\u0005E\u0000"+ - "\u0000\u0dce\u027c\u0001\u0000\u0000\u0000\u0dcf\u0dd0\u0005P\u0000\u0000"+ - "\u0dd0\u0dd1\u0005A\u0000\u0000\u0dd1\u0dd2\u0005R\u0000\u0000\u0dd2\u0dd3"+ - "\u0005A\u0000\u0000\u0dd3\u0dd4\u0005M\u0000\u0000\u0dd4\u0dd5\u0005E"+ - "\u0000\u0000\u0dd5\u0dd6\u0005T\u0000\u0000\u0dd6\u0dd7\u0005E\u0000\u0000"+ - "\u0dd7\u0dd8\u0005R\u0000\u0000\u0dd8\u027e\u0001\u0000\u0000\u0000\u0dd9"+ - "\u0dda\u0005P\u0000\u0000\u0dda\u0ddb\u0005A\u0000\u0000\u0ddb\u0ddc\u0005"+ - "R\u0000\u0000\u0ddc\u0ddd\u0005S\u0000\u0000\u0ddd\u0dde\u0005E\u0000"+ - "\u0000\u0dde\u0ddf\u0005D\u0000\u0000\u0ddf\u0280\u0001\u0000\u0000\u0000"+ - "\u0de0\u0de1\u0005P\u0000\u0000\u0de1\u0de2\u0005A\u0000\u0000\u0de2\u0de3"+ - "\u0005R\u0000\u0000\u0de3\u0de4\u0005T\u0000\u0000\u0de4\u0de5\u0005I"+ - "\u0000\u0000\u0de5\u0de6\u0005T\u0000\u0000\u0de6\u0de7\u0005I\u0000\u0000"+ - "\u0de7\u0de8\u0005O\u0000\u0000\u0de8\u0de9\u0005N\u0000\u0000\u0de9\u0282"+ - "\u0001\u0000\u0000\u0000\u0dea\u0deb\u0005P\u0000\u0000\u0deb\u0dec\u0005"+ - "A\u0000\u0000\u0dec\u0ded\u0005R\u0000\u0000\u0ded\u0dee\u0005T\u0000"+ - "\u0000\u0dee\u0def\u0005I\u0000\u0000\u0def\u0df0\u0005T\u0000\u0000\u0df0"+ - "\u0df1\u0005I\u0000\u0000\u0df1\u0df2\u0005O\u0000\u0000\u0df2\u0df3\u0005"+ - "N\u0000\u0000\u0df3\u0df4\u0005S\u0000\u0000\u0df4\u0284\u0001\u0000\u0000"+ - "\u0000\u0df5\u0df6\u0005P\u0000\u0000\u0df6\u0df7\u0005A\u0000\u0000\u0df7"+ - "\u0df8\u0005S\u0000\u0000\u0df8\u0df9\u0005S\u0000\u0000\u0df9\u0dfa\u0005"+ - "W\u0000\u0000\u0dfa\u0dfb\u0005O\u0000\u0000\u0dfb\u0dfc\u0005R\u0000"+ - "\u0000\u0dfc\u0dfd\u0005D\u0000\u0000\u0dfd\u0286\u0001\u0000\u0000\u0000"+ - "\u0dfe\u0dff\u0005P\u0000\u0000\u0dff\u0e00\u0005A\u0000\u0000\u0e00\u0e01"+ - "\u0005S\u0000\u0000\u0e01\u0e02\u0005S\u0000\u0000\u0e02\u0e03\u0005W"+ - "\u0000\u0000\u0e03\u0e04\u0005O\u0000\u0000\u0e04\u0e05\u0005R\u0000\u0000"+ - "\u0e05\u0e06\u0005D\u0000\u0000\u0e06\u0e07\u0005_\u0000\u0000\u0e07\u0e08"+ - "\u0005E\u0000\u0000\u0e08\u0e09\u0005X\u0000\u0000\u0e09\u0e0a\u0005P"+ - "\u0000\u0000\u0e0a\u0e0b\u0005I\u0000\u0000\u0e0b\u0e0c\u0005R\u0000\u0000"+ - "\u0e0c\u0e0d\u0005E\u0000\u0000\u0e0d\u0288\u0001\u0000\u0000\u0000\u0e0e"+ - "\u0e0f\u0005P\u0000\u0000\u0e0f\u0e10\u0005A\u0000\u0000\u0e10\u0e11\u0005"+ - "S\u0000\u0000\u0e11\u0e12\u0005S\u0000\u0000\u0e12\u0e13\u0005W\u0000"+ - "\u0000\u0e13\u0e14\u0005O\u0000\u0000\u0e14\u0e15\u0005R\u0000\u0000\u0e15"+ - "\u0e16\u0005D\u0000\u0000\u0e16\u0e17\u0005_\u0000\u0000\u0e17\u0e18\u0005"+ - "H\u0000\u0000\u0e18\u0e19\u0005I\u0000\u0000\u0e19\u0e1a\u0005S\u0000"+ - "\u0000\u0e1a\u0e1b\u0005T\u0000\u0000\u0e1b\u0e1c\u0005O\u0000\u0000\u0e1c"+ - "\u0e1d\u0005R\u0000\u0000\u0e1d\u0e1e\u0005Y\u0000\u0000\u0e1e\u028a\u0001"+ - "\u0000\u0000\u0000\u0e1f\u0e20\u0005P\u0000\u0000\u0e20\u0e21\u0005A\u0000"+ - "\u0000\u0e21\u0e22\u0005S\u0000\u0000\u0e22\u0e23\u0005S\u0000\u0000\u0e23"+ - "\u0e24\u0005W\u0000\u0000\u0e24\u0e25\u0005O\u0000\u0000\u0e25\u0e26\u0005"+ - "R\u0000\u0000\u0e26\u0e27\u0005D\u0000\u0000\u0e27\u0e28\u0005_\u0000"+ - "\u0000\u0e28\u0e29\u0005L\u0000\u0000\u0e29\u0e2a\u0005O\u0000\u0000\u0e2a"+ - "\u0e2b\u0005C\u0000\u0000\u0e2b\u0e2c\u0005K\u0000\u0000\u0e2c\u0e2d\u0005"+ - "_\u0000\u0000\u0e2d\u0e2e\u0005T\u0000\u0000\u0e2e\u0e2f\u0005I\u0000"+ - "\u0000\u0e2f\u0e30\u0005M\u0000\u0000\u0e30\u0e31\u0005E\u0000\u0000\u0e31"+ - "\u028c\u0001\u0000\u0000\u0000\u0e32\u0e33\u0005P\u0000\u0000\u0e33\u0e34"+ - "\u0005A\u0000\u0000\u0e34\u0e35\u0005S\u0000\u0000\u0e35\u0e36\u0005S"+ - "\u0000\u0000\u0e36\u0e37\u0005W\u0000\u0000\u0e37\u0e38\u0005O\u0000\u0000"+ - "\u0e38\u0e39\u0005R\u0000\u0000\u0e39\u0e3a\u0005D\u0000\u0000\u0e3a\u0e3b"+ - "\u0005_\u0000\u0000\u0e3b\u0e3c\u0005R\u0000\u0000\u0e3c\u0e3d\u0005E"+ - "\u0000\u0000\u0e3d\u0e3e\u0005U\u0000\u0000\u0e3e\u0e3f\u0005S\u0000\u0000"+ - "\u0e3f\u0e40\u0005E\u0000\u0000\u0e40\u028e\u0001\u0000\u0000\u0000\u0e41"+ - "\u0e42\u0005P\u0000\u0000\u0e42\u0e43\u0005A\u0000\u0000\u0e43\u0e44\u0005"+ - "T\u0000\u0000\u0e44\u0e45\u0005H\u0000\u0000\u0e45\u0290\u0001\u0000\u0000"+ - "\u0000\u0e46\u0e47\u0005P\u0000\u0000\u0e47\u0e48\u0005A\u0000\u0000\u0e48"+ - "\u0e49\u0005U\u0000\u0000\u0e49\u0e4a\u0005S\u0000\u0000\u0e4a\u0e4b\u0005"+ - "E\u0000\u0000\u0e4b\u0292\u0001\u0000\u0000\u0000\u0e4c\u0e4d\u0005P\u0000"+ - "\u0000\u0e4d\u0e4e\u0005E\u0000\u0000\u0e4e\u0e4f\u0005R\u0000\u0000\u0e4f"+ - "\u0e50\u0005C\u0000\u0000\u0e50\u0e51\u0005E\u0000\u0000\u0e51\u0e52\u0005"+ - "N\u0000\u0000\u0e52\u0e53\u0005T\u0000\u0000\u0e53\u0294\u0001\u0000\u0000"+ - "\u0000\u0e54\u0e55\u0005P\u0000\u0000\u0e55\u0e56\u0005E\u0000\u0000\u0e56"+ - "\u0e57\u0005R\u0000\u0000\u0e57\u0e58\u0005I\u0000\u0000\u0e58\u0e59\u0005"+ - "O\u0000\u0000\u0e59\u0e5a\u0005D\u0000\u0000\u0e5a\u0296\u0001\u0000\u0000"+ - "\u0000\u0e5b\u0e5c\u0005P\u0000\u0000\u0e5c\u0e5d\u0005E\u0000\u0000\u0e5d"+ - "\u0e5e\u0005R\u0000\u0000\u0e5e\u0e5f\u0005M\u0000\u0000\u0e5f\u0e60\u0005"+ - "I\u0000\u0000\u0e60\u0e61\u0005S\u0000\u0000\u0e61\u0e62\u0005S\u0000"+ - "\u0000\u0e62\u0e63\u0005I\u0000\u0000\u0e63\u0e64\u0005V\u0000\u0000\u0e64"+ - "\u0e65\u0005E\u0000\u0000\u0e65\u0298\u0001\u0000\u0000\u0000\u0e66\u0e67"+ - "\u0005P\u0000\u0000\u0e67\u0e68\u0005H\u0000\u0000\u0e68\u0e69\u0005Y"+ - "\u0000\u0000\u0e69\u0e6a\u0005S\u0000\u0000\u0e6a\u0e6b\u0005I\u0000\u0000"+ - "\u0e6b\u0e6c\u0005C\u0000\u0000\u0e6c\u0e6d\u0005A\u0000\u0000\u0e6d\u0e6e"+ - "\u0005L\u0000\u0000\u0e6e\u029a\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0005"+ - "P\u0000\u0000\u0e70\u0e71\u0005I\u0000\u0000\u0e71\u029c\u0001\u0000\u0000"+ - "\u0000\u0e72\u0e73\u0005?\u0000\u0000\u0e73\u029e\u0001\u0000\u0000\u0000"+ - "\u0e74\u0e75\u0005P\u0000\u0000\u0e75\u0e76\u0005L\u0000\u0000\u0e76\u0e77"+ - "\u0005A\u0000\u0000\u0e77\u0e78\u0005N\u0000\u0000\u0e78\u02a0\u0001\u0000"+ - "\u0000\u0000\u0e79\u0e7a\u0005P\u0000\u0000\u0e7a\u0e7b\u0005L\u0000\u0000"+ - "\u0e7b\u0e7c\u0005A\u0000\u0000\u0e7c\u0e7d\u0005Y\u0000\u0000\u0e7d\u02a2"+ - "\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0005P\u0000\u0000\u0e7f\u0e80\u0005"+ - "R\u0000\u0000\u0e80\u0e81\u0005I\u0000\u0000\u0e81\u0e82\u0005V\u0000"+ - "\u0000\u0e82\u0e83\u0005I\u0000\u0000\u0e83\u0e84\u0005L\u0000\u0000\u0e84"+ - "\u0e85\u0005E\u0000\u0000\u0e85\u0e86\u0005G\u0000\u0000\u0e86\u0e87\u0005"+ - "E\u0000\u0000\u0e87\u0e88\u0005S\u0000\u0000\u0e88\u02a4\u0001\u0000\u0000"+ - "\u0000\u0e89\u0e8a\u0005P\u0000\u0000\u0e8a\u0e8b\u0005R\u0000\u0000\u0e8b"+ - "\u0e8c\u0005O\u0000\u0000\u0e8c\u0e8d\u0005C\u0000\u0000\u0e8d\u0e8e\u0005"+ - "E\u0000\u0000\u0e8e\u0e8f\u0005S\u0000\u0000\u0e8f\u0e90\u0005S\u0000"+ - "\u0000\u0e90\u02a6\u0001\u0000\u0000\u0000\u0e91\u0e92\u0005P\u0000\u0000"+ - "\u0e92\u0e93\u0005L\u0000\u0000\u0e93\u0e94\u0005U\u0000\u0000\u0e94\u0e95"+ - "\u0005G\u0000\u0000\u0e95\u0e96\u0005I\u0000\u0000\u0e96\u0e97\u0005N"+ - "\u0000\u0000\u0e97\u02a8\u0001\u0000\u0000\u0000\u0e98\u0e99\u0005P\u0000"+ - "\u0000\u0e99\u0e9a\u0005L\u0000\u0000\u0e9a\u0e9b\u0005U\u0000\u0000\u0e9b"+ - "\u0e9c\u0005G\u0000\u0000\u0e9c\u0e9d\u0005I\u0000\u0000\u0e9d\u0e9e\u0005"+ - "N\u0000\u0000\u0e9e\u0e9f\u0005S\u0000\u0000\u0e9f\u02aa\u0001\u0000\u0000"+ - "\u0000\u0ea0\u0ea1\u0005P\u0000\u0000\u0ea1\u0ea2\u0005O\u0000\u0000\u0ea2"+ - "\u0ea3\u0005L\u0000\u0000\u0ea3\u0ea4\u0005I\u0000\u0000\u0ea4\u0ea5\u0005"+ - "C\u0000\u0000\u0ea5\u0ea6\u0005Y\u0000\u0000\u0ea6\u02ac\u0001\u0000\u0000"+ - "\u0000\u0ea7\u0ea8\u0005P\u0000\u0000\u0ea8\u0ea9\u0005R\u0000\u0000\u0ea9"+ - "\u0eaa\u0005E\u0000\u0000\u0eaa\u0eab\u0005C\u0000\u0000\u0eab\u0eac\u0005"+ - "E\u0000\u0000\u0eac\u0ead\u0005D\u0000\u0000\u0ead\u0eae\u0005I\u0000"+ - "\u0000\u0eae\u0eaf\u0005N\u0000\u0000\u0eaf\u0eb0\u0005G\u0000\u0000\u0eb0"+ - "\u02ae\u0001\u0000\u0000\u0000\u0eb1\u0eb2\u0005P\u0000\u0000\u0eb2\u0eb3"+ - "\u0005R\u0000\u0000\u0eb3\u0eb4\u0005E\u0000\u0000\u0eb4\u0eb5\u0005P"+ - "\u0000\u0000\u0eb5\u0eb6\u0005A\u0000\u0000\u0eb6\u0eb7\u0005R\u0000\u0000"+ - "\u0eb7\u0eb8\u0005E\u0000\u0000\u0eb8\u02b0\u0001\u0000\u0000\u0000\u0eb9"+ - "\u0eba\u0005P\u0000\u0000\u0eba\u0ebb\u0005R\u0000\u0000\u0ebb\u0ebc\u0005"+ - "I\u0000\u0000\u0ebc\u0ebd\u0005M\u0000\u0000\u0ebd\u0ebe\u0005A\u0000"+ - "\u0000\u0ebe\u0ebf\u0005R\u0000\u0000\u0ebf\u0ec0\u0005Y\u0000\u0000\u0ec0"+ - "\u02b2\u0001\u0000\u0000\u0000\u0ec1\u0ec2\u0005P\u0000\u0000\u0ec2\u0ec3"+ - "\u0005R\u0000\u0000\u0ec3\u0ec4\u0005O\u0000\u0000\u0ec4\u0ec5\u0005C"+ - "\u0000\u0000\u0ec5\u02b4\u0001\u0000\u0000\u0000\u0ec6\u0ec7\u0005P\u0000"+ - "\u0000\u0ec7\u0ec8\u0005R\u0000\u0000\u0ec8\u0ec9\u0005O\u0000\u0000\u0ec9"+ - "\u0eca\u0005C\u0000\u0000\u0eca\u0ecb\u0005E\u0000\u0000\u0ecb\u0ecc\u0005"+ - "D\u0000\u0000\u0ecc\u0ecd\u0005U\u0000\u0000\u0ecd\u0ece\u0005R\u0000"+ - "\u0000\u0ece\u0ecf\u0005E\u0000\u0000\u0ecf\u02b6\u0001\u0000\u0000\u0000"+ - "\u0ed0\u0ed1\u0005P\u0000\u0000\u0ed1\u0ed2\u0005R\u0000\u0000\u0ed2\u0ed3"+ - "\u0005O\u0000\u0000\u0ed3\u0ed4\u0005C\u0000\u0000\u0ed4\u0ed5\u0005E"+ - "\u0000\u0000\u0ed5\u0ed6\u0005S\u0000\u0000\u0ed6\u0ed7\u0005S\u0000\u0000"+ - "\u0ed7\u0ed8\u0005L\u0000\u0000\u0ed8\u0ed9\u0005I\u0000\u0000\u0ed9\u0eda"+ - "\u0005S\u0000\u0000\u0eda\u0edb\u0005T\u0000\u0000\u0edb\u02b8\u0001\u0000"+ - "\u0000\u0000\u0edc\u0edd\u0005P\u0000\u0000\u0edd\u0ede\u0005R\u0000\u0000"+ - "\u0ede\u0edf\u0005O\u0000\u0000\u0edf\u0ee0\u0005F\u0000\u0000\u0ee0\u0ee1"+ - "\u0005I\u0000\u0000\u0ee1\u0ee2\u0005L\u0000\u0000\u0ee2\u0ee3\u0005E"+ - "\u0000\u0000\u0ee3\u02ba\u0001\u0000\u0000\u0000\u0ee4\u0ee5\u0005P\u0000"+ - "\u0000\u0ee5\u0ee6\u0005R\u0000\u0000\u0ee6\u0ee7\u0005O\u0000\u0000\u0ee7"+ - "\u0ee8\u0005P\u0000\u0000\u0ee8\u0ee9\u0005E\u0000\u0000\u0ee9\u0eea\u0005"+ - "R\u0000\u0000\u0eea\u0eeb\u0005T\u0000\u0000\u0eeb\u0eec\u0005I\u0000"+ - "\u0000\u0eec\u0eed\u0005E\u0000\u0000\u0eed\u0eee\u0005S\u0000\u0000\u0eee"+ - "\u02bc\u0001\u0000\u0000\u0000\u0eef\u0ef0\u0005P\u0000\u0000\u0ef0\u0ef1"+ - "\u0005R\u0000\u0000\u0ef1\u0ef2\u0005O\u0000\u0000\u0ef2\u0ef3\u0005P"+ - "\u0000\u0000\u0ef3\u0ef4\u0005E\u0000\u0000\u0ef4\u0ef5\u0005R\u0000\u0000"+ - "\u0ef5\u0ef6\u0005T\u0000\u0000\u0ef6\u0ef7\u0005Y\u0000\u0000\u0ef7\u02be"+ - "\u0001\u0000\u0000\u0000\u0ef8\u0ef9\u0005Q\u0000\u0000\u0ef9\u0efa\u0005"+ - "U\u0000\u0000\u0efa\u0efb\u0005A\u0000\u0000\u0efb\u0efc\u0005N\u0000"+ - "\u0000\u0efc\u0efd\u0005T\u0000\u0000\u0efd\u0efe\u0005I\u0000\u0000\u0efe"+ - "\u0eff\u0005L\u0000\u0000\u0eff\u0f00\u0005E\u0000\u0000\u0f00\u0f01\u0005"+ - "_\u0000\u0000\u0f01\u0f02\u0005S\u0000\u0000\u0f02\u0f03\u0005T\u0000"+ - "\u0000\u0f03\u0f04\u0005A\u0000\u0000\u0f04\u0f05\u0005T\u0000\u0000\u0f05"+ - "\u0f06\u0005E\u0000\u0000\u0f06\u02c0\u0001\u0000\u0000\u0000\u0f07\u0f08"+ - "\u0005Q\u0000\u0000\u0f08\u0f09\u0005U\u0000\u0000\u0f09\u0f0a\u0005A"+ - "\u0000\u0000\u0f0a\u0f0b\u0005N\u0000\u0000\u0f0b\u0f0c\u0005T\u0000\u0000"+ - "\u0f0c\u0f0d\u0005I\u0000\u0000\u0f0d\u0f0e\u0005L\u0000\u0000\u0f0e\u0f0f"+ - "\u0005E\u0000\u0000\u0f0f\u0f10\u0005_\u0000\u0000\u0f10\u0f11\u0005U"+ - "\u0000\u0000\u0f11\u0f12\u0005N\u0000\u0000\u0f12\u0f13\u0005I\u0000\u0000"+ - "\u0f13\u0f14\u0005O\u0000\u0000\u0f14\u0f15\u0005N\u0000\u0000\u0f15\u02c2"+ - "\u0001\u0000\u0000\u0000\u0f16\u0f17\u0005Q\u0000\u0000\u0f17\u0f18\u0005"+ - "U\u0000\u0000\u0f18\u0f19\u0005E\u0000\u0000\u0f19\u0f1a\u0005R\u0000"+ - "\u0000\u0f1a\u0f1b\u0005Y\u0000\u0000\u0f1b\u02c4\u0001\u0000\u0000\u0000"+ - "\u0f1c\u0f1d\u0005Q\u0000\u0000\u0f1d\u0f1e\u0005U\u0000\u0000\u0f1e\u0f1f"+ - "\u0005E\u0000\u0000\u0f1f\u0f20\u0005U\u0000\u0000\u0f20\u0f21\u0005E"+ - "\u0000\u0000\u0f21\u0f22\u0005D\u0000\u0000\u0f22\u02c6\u0001\u0000\u0000"+ - "\u0000\u0f23\u0f24\u0005Q\u0000\u0000\u0f24\u0f25\u0005U\u0000\u0000\u0f25"+ - "\u0f26\u0005O\u0000\u0000\u0f26\u0f27\u0005T\u0000\u0000\u0f27\u0f28\u0005"+ - "A\u0000\u0000\u0f28\u02c8\u0001\u0000\u0000\u0000\u0f29\u0f2a\u0005Q\u0000"+ - "\u0000\u0f2a\u0f2b\u0005U\u0000\u0000\u0f2b\u0f2c\u0005A\u0000\u0000\u0f2c"+ - "\u0f2d\u0005L\u0000\u0000\u0f2d\u0f2e\u0005I\u0000\u0000\u0f2e\u0f2f\u0005"+ - "F\u0000\u0000\u0f2f\u0f30\u0005Y\u0000\u0000\u0f30\u02ca\u0001\u0000\u0000"+ - "\u0000\u0f31\u0f32\u0005Q\u0000\u0000\u0f32\u0f33\u0005U\u0000\u0000\u0f33"+ - "\u0f34\u0005A\u0000\u0000\u0f34\u0f35\u0005R\u0000\u0000\u0f35\u0f36\u0005"+ - "T\u0000\u0000\u0f36\u0f37\u0005E\u0000\u0000\u0f37\u0f38\u0005R\u0000"+ - "\u0000\u0f38\u02cc\u0001\u0000\u0000\u0000\u0f39\u0f3a\u0005R\u0000\u0000"+ - "\u0f3a\u0f3b\u0005A\u0000\u0000\u0f3b\u0f3c\u0005N\u0000\u0000\u0f3c\u0f3d"+ - "\u0005D\u0000\u0000\u0f3d\u0f3e\u0005O\u0000\u0000\u0f3e\u0f3f\u0005M"+ - "\u0000\u0000\u0f3f\u02ce\u0001\u0000\u0000\u0000\u0f40\u0f41\u0005R\u0000"+ - "\u0000\u0f41\u0f42\u0005A\u0000\u0000\u0f42\u0f43\u0005N\u0000\u0000\u0f43"+ - "\u0f44\u0005G\u0000\u0000\u0f44\u0f45\u0005E\u0000\u0000\u0f45\u02d0\u0001"+ - "\u0000\u0000\u0000\u0f46\u0f47\u0005R\u0000\u0000\u0f47\u0f48\u0005E\u0000"+ - "\u0000\u0f48\u0f49\u0005A\u0000\u0000\u0f49\u0f4a\u0005D\u0000\u0000\u0f4a"+ - "\u02d2\u0001\u0000\u0000\u0000\u0f4b\u0f4c\u0005R\u0000\u0000\u0f4c\u0f4d"+ - "\u0005E\u0000\u0000\u0f4d\u0f4e\u0005A\u0000\u0000\u0f4e\u0f4f\u0005L"+ - "\u0000\u0000\u0f4f\u02d4\u0001\u0000\u0000\u0000\u0f50\u0f51\u0005R\u0000"+ - "\u0000\u0f51\u0f52\u0005E\u0000\u0000\u0f52\u0f53\u0005B\u0000\u0000\u0f53"+ - "\u0f54\u0005A\u0000\u0000\u0f54\u0f55\u0005L\u0000\u0000\u0f55\u0f56\u0005"+ - "A\u0000\u0000\u0f56\u0f57\u0005N\u0000\u0000\u0f57\u0f58\u0005C\u0000"+ - "\u0000\u0f58\u0f59\u0005E\u0000\u0000\u0f59\u02d6\u0001\u0000\u0000\u0000"+ - "\u0f5a\u0f5b\u0005R\u0000\u0000\u0f5b\u0f5c\u0005E\u0000\u0000\u0f5c\u0f5d"+ - "\u0005C\u0000\u0000\u0f5d\u0f5e\u0005E\u0000\u0000\u0f5e\u0f5f\u0005N"+ - "\u0000\u0000\u0f5f\u0f60\u0005T\u0000\u0000\u0f60\u02d8\u0001\u0000\u0000"+ - "\u0000\u0f61\u0f62\u0005R\u0000\u0000\u0f62\u0f63\u0005E\u0000\u0000\u0f63"+ - "\u0f64\u0005C\u0000\u0000\u0f64\u0f65\u0005O\u0000\u0000\u0f65\u0f66\u0005"+ - "V\u0000\u0000\u0f66\u0f67\u0005E\u0000\u0000\u0f67\u0f68\u0005R\u0000"+ - "\u0000\u0f68\u02da\u0001\u0000\u0000\u0000\u0f69\u0f6a\u0005R\u0000\u0000"+ - "\u0f6a\u0f6b\u0005E\u0000\u0000\u0f6b\u0f6c\u0005C\u0000\u0000\u0f6c\u0f6d"+ - "\u0005Y\u0000\u0000\u0f6d\u0f6e\u0005C\u0000\u0000\u0f6e\u0f6f\u0005L"+ - "\u0000\u0000\u0f6f\u0f70\u0005E\u0000\u0000\u0f70\u02dc\u0001\u0000\u0000"+ - "\u0000\u0f71\u0f72\u0005R\u0000\u0000\u0f72\u0f73\u0005E\u0000\u0000\u0f73"+ - "\u0f74\u0005F\u0000\u0000\u0f74\u0f75\u0005R\u0000\u0000\u0f75\u0f76\u0005"+ - "E\u0000\u0000\u0f76\u0f77\u0005S\u0000\u0000\u0f77\u0f78\u0005H\u0000"+ - "\u0000\u0f78\u02de\u0001\u0000\u0000\u0000\u0f79\u0f7a\u0005R\u0000\u0000"+ - "\u0f7a\u0f7b\u0005E\u0000\u0000\u0f7b\u0f7c\u0005F\u0000\u0000\u0f7c\u0f7d"+ - "\u0005E\u0000\u0000\u0f7d\u0f7e\u0005R\u0000\u0000\u0f7e\u0f7f\u0005E"+ - "\u0000\u0000\u0f7f\u0f80\u0005N\u0000\u0000\u0f80\u0f81\u0005C\u0000\u0000"+ - "\u0f81\u0f82\u0005E\u0000\u0000\u0f82\u0f83\u0005S\u0000\u0000\u0f83\u02e0"+ - "\u0001\u0000\u0000\u0000\u0f84\u0f85\u0005R\u0000\u0000\u0f85\u0f86\u0005"+ - "E\u0000\u0000\u0f86\u0f87\u0005G\u0000\u0000\u0f87\u0f88\u0005E\u0000"+ - "\u0000\u0f88\u0f89\u0005X\u0000\u0000\u0f89\u0f8a\u0005P\u0000\u0000\u0f8a"+ - "\u02e2\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0005R\u0000\u0000\u0f8c\u0f8d"+ - "\u0005E\u0000\u0000\u0f8d\u0f8e\u0005L\u0000\u0000\u0f8e\u0f8f\u0005E"+ - "\u0000\u0000\u0f8f\u0f90\u0005A\u0000\u0000\u0f90\u0f91\u0005S\u0000\u0000"+ - "\u0f91\u0f92\u0005E\u0000\u0000\u0f92\u02e4\u0001\u0000\u0000\u0000\u0f93"+ - "\u0f94\u0005R\u0000\u0000\u0f94\u0f95\u0005E\u0000\u0000\u0f95\u0f96\u0005"+ - "N\u0000\u0000\u0f96\u0f97\u0005A\u0000\u0000\u0f97\u0f98\u0005M\u0000"+ - "\u0000\u0f98\u0f99\u0005E\u0000\u0000\u0f99\u02e6\u0001\u0000\u0000\u0000"+ - "\u0f9a\u0f9b\u0005R\u0000\u0000\u0f9b\u0f9c\u0005E\u0000\u0000\u0f9c\u0f9d"+ - "\u0005P\u0000\u0000\u0f9d\u0f9e\u0005A\u0000\u0000\u0f9e\u0f9f\u0005I"+ - "\u0000\u0000\u0f9f\u0fa0\u0005R\u0000\u0000\u0fa0\u02e8\u0001\u0000\u0000"+ - "\u0000\u0fa1\u0fa2\u0005R\u0000\u0000\u0fa2\u0fa3\u0005E\u0000\u0000\u0fa3"+ - "\u0fa4\u0005P\u0000\u0000\u0fa4\u0fa5\u0005E\u0000\u0000\u0fa5\u0fa6\u0005"+ - "A\u0000\u0000\u0fa6\u0fa7\u0005T\u0000\u0000\u0fa7\u0fa8\u0005A\u0000"+ - "\u0000\u0fa8\u0fa9\u0005B\u0000\u0000\u0fa9\u0faa\u0005L\u0000\u0000\u0faa"+ - "\u0fab\u0005E\u0000\u0000\u0fab\u02ea\u0001\u0000\u0000\u0000\u0fac\u0fad"+ - "\u0005R\u0000\u0000\u0fad\u0fae\u0005E\u0000\u0000\u0fae\u0faf\u0005P"+ - "\u0000\u0000\u0faf\u0fb0\u0005L\u0000\u0000\u0fb0\u0fb1\u0005A\u0000\u0000"+ - "\u0fb1\u0fb2\u0005C\u0000\u0000\u0fb2\u0fb3\u0005E\u0000\u0000\u0fb3\u02ec"+ - "\u0001\u0000\u0000\u0000\u0fb4\u0fb5\u0005R\u0000\u0000\u0fb5\u0fb6\u0005"+ - "E\u0000\u0000\u0fb6\u0fb7\u0005P\u0000\u0000\u0fb7\u0fb8\u0005L\u0000"+ - "\u0000\u0fb8\u0fb9\u0005A\u0000\u0000\u0fb9\u0fba\u0005C\u0000\u0000\u0fba"+ - "\u0fbb\u0005E\u0000\u0000\u0fbb\u0fbc\u0005_\u0000\u0000\u0fbc\u0fbd\u0005"+ - "I\u0000\u0000\u0fbd\u0fbe\u0005F\u0000\u0000\u0fbe\u0fbf\u0005_\u0000"+ - "\u0000\u0fbf\u0fc0\u0005N\u0000\u0000\u0fc0\u0fc1\u0005O\u0000\u0000\u0fc1"+ - "\u0fc2\u0005T\u0000\u0000\u0fc2\u0fc3\u0005_\u0000\u0000\u0fc3\u0fc4\u0005"+ - "N\u0000\u0000\u0fc4\u0fc5\u0005U\u0000\u0000\u0fc5\u0fc6\u0005L\u0000"+ - "\u0000\u0fc6\u0fc7\u0005L\u0000\u0000\u0fc7\u02ee\u0001\u0000\u0000\u0000"+ - "\u0fc8\u0fc9\u0005R\u0000\u0000\u0fc9\u0fca\u0005E\u0000\u0000\u0fca\u0fcb"+ - "\u0005P\u0000\u0000\u0fcb\u0fcc\u0005L\u0000\u0000\u0fcc\u0fcd\u0005A"+ - "\u0000\u0000\u0fcd\u0fce\u0005Y\u0000\u0000\u0fce\u0fcf\u0005E\u0000\u0000"+ - "\u0fcf\u0fd0\u0005R\u0000\u0000\u0fd0\u02f0\u0001\u0000\u0000\u0000\u0fd1"+ - "\u0fd2\u0005R\u0000\u0000\u0fd2\u0fd3\u0005E\u0000\u0000\u0fd3\u0fd4\u0005"+ - "P\u0000\u0000\u0fd4\u0fd5\u0005L\u0000\u0000\u0fd5\u0fd6\u0005I\u0000"+ - "\u0000\u0fd6\u0fd7\u0005C\u0000\u0000\u0fd7\u0fd8\u0005A\u0000\u0000\u0fd8"+ - "\u02f2\u0001\u0000\u0000\u0000\u0fd9\u0fda\u0005R\u0000\u0000\u0fda\u0fdb"+ - "\u0005E\u0000\u0000\u0fdb\u0fdc\u0005P\u0000\u0000\u0fdc\u0fdd\u0005O"+ - "\u0000\u0000\u0fdd\u0fde\u0005S\u0000\u0000\u0fde\u0fdf\u0005I\u0000\u0000"+ - "\u0fdf\u0fe0\u0005T\u0000\u0000\u0fe0\u0fe1\u0005O\u0000\u0000\u0fe1\u0fe2"+ - "\u0005R\u0000\u0000\u0fe2\u0fe3\u0005I\u0000\u0000\u0fe3\u0fe4\u0005E"+ - "\u0000\u0000\u0fe4\u0fe5\u0005S\u0000\u0000\u0fe5\u02f4\u0001\u0000\u0000"+ - "\u0000\u0fe6\u0fe7\u0005R\u0000\u0000\u0fe7\u0fe8\u0005E\u0000\u0000\u0fe8"+ - "\u0fe9\u0005P\u0000\u0000\u0fe9\u0fea\u0005O\u0000\u0000\u0fea\u0feb\u0005"+ - "S\u0000\u0000\u0feb\u0fec\u0005I\u0000\u0000\u0fec\u0fed\u0005T\u0000"+ - "\u0000\u0fed\u0fee\u0005O\u0000\u0000\u0fee\u0fef\u0005R\u0000\u0000\u0fef"+ - "\u0ff0\u0005Y\u0000\u0000\u0ff0\u02f6\u0001\u0000\u0000\u0000\u0ff1\u0ff2"+ - "\u0005R\u0000\u0000\u0ff2\u0ff3\u0005E\u0000\u0000\u0ff3\u0ff4\u0005S"+ - "\u0000\u0000\u0ff4\u0ff5\u0005O\u0000\u0000\u0ff5\u0ff6\u0005U\u0000\u0000"+ - "\u0ff6\u0ff7\u0005R\u0000\u0000\u0ff7\u0ff8\u0005C\u0000\u0000\u0ff8\u0ff9"+ - "\u0005E\u0000\u0000\u0ff9\u02f8\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0005"+ - "R\u0000\u0000\u0ffb\u0ffc\u0005E\u0000\u0000\u0ffc\u0ffd\u0005S\u0000"+ - "\u0000\u0ffd\u0ffe\u0005O\u0000\u0000\u0ffe\u0fff\u0005U\u0000\u0000\u0fff"+ - "\u1000\u0005R\u0000\u0000\u1000\u1001\u0005C\u0000\u0000\u1001\u1002\u0005"+ - "E\u0000\u0000\u1002\u1003\u0005S\u0000\u0000\u1003\u02fa\u0001\u0000\u0000"+ - "\u0000\u1004\u1005\u0005R\u0000\u0000\u1005\u1006\u0005E\u0000\u0000\u1006"+ - "\u1007\u0005S\u0000\u0000\u1007\u1008\u0005T\u0000\u0000\u1008\u1009\u0005"+ - "O\u0000\u0000\u1009\u100a\u0005R\u0000\u0000\u100a\u100b\u0005E\u0000"+ - "\u0000\u100b\u02fc\u0001\u0000\u0000\u0000\u100c\u100d\u0005R\u0000\u0000"+ - "\u100d\u100e\u0005E\u0000\u0000\u100e\u100f\u0005S\u0000\u0000\u100f\u1010"+ - "\u0005T\u0000\u0000\u1010\u1011\u0005R\u0000\u0000\u1011\u1012\u0005I"+ - "\u0000\u0000\u1012\u1013\u0005C\u0000\u0000\u1013\u1014\u0005T\u0000\u0000"+ - "\u1014\u1015\u0005I\u0000\u0000\u1015\u1016\u0005V\u0000\u0000\u1016\u1017"+ - "\u0005E\u0000\u0000\u1017\u02fe\u0001\u0000\u0000\u0000\u1018\u1019\u0005"+ - "R\u0000\u0000\u1019\u101a\u0005E\u0000\u0000\u101a\u101b\u0005S\u0000"+ - "\u0000\u101b\u101c\u0005U\u0000\u0000\u101c\u101d\u0005M\u0000\u0000\u101d"+ - "\u101e\u0005E\u0000\u0000\u101e\u0300\u0001\u0000\u0000\u0000\u101f\u1020"+ - "\u0005R\u0000\u0000\u1020\u1021\u0005E\u0000\u0000\u1021\u1022\u0005T"+ - "\u0000\u0000\u1022\u1023\u0005U\u0000\u0000\u1023\u1024\u0005R\u0000\u0000"+ - "\u1024\u1025\u0005N\u0000\u0000\u1025\u1026\u0005S\u0000\u0000\u1026\u0302"+ - "\u0001\u0000\u0000\u0000\u1027\u1028\u0005R\u0000\u0000\u1028\u1029\u0005"+ - "E\u0000\u0000\u1029\u102a\u0005V\u0000\u0000\u102a\u102b\u0005O\u0000"+ - "\u0000\u102b\u102c\u0005K\u0000\u0000\u102c\u102d\u0005E\u0000\u0000\u102d"+ - "\u0304\u0001\u0000\u0000\u0000\u102e\u102f\u0005R\u0000\u0000\u102f\u1030"+ - "\u0005E\u0000\u0000\u1030\u1031\u0005W\u0000\u0000\u1031\u1032\u0005R"+ - "\u0000\u0000\u1032\u1033\u0005I\u0000\u0000\u1033\u1034\u0005T\u0000\u0000"+ - "\u1034\u1035\u0005T\u0000\u0000\u1035\u1036\u0005E\u0000\u0000\u1036\u1037"+ - "\u0005N\u0000\u0000\u1037\u0306\u0001\u0000\u0000\u0000\u1038\u1039\u0005"+ - "R\u0000\u0000\u1039\u103a\u0005I\u0000\u0000\u103a\u103b\u0005G\u0000"+ - "\u0000\u103b\u103c\u0005H\u0000\u0000\u103c\u103d\u0005T\u0000\u0000\u103d"+ - "\u0308\u0001\u0000\u0000\u0000\u103e\u103f\u0005R\u0000\u0000\u103f\u1040"+ - "\u0005L\u0000\u0000\u1040\u1041\u0005I\u0000\u0000\u1041\u1042\u0005K"+ - "\u0000\u0000\u1042\u1043\u0005E\u0000\u0000\u1043\u030a\u0001\u0000\u0000"+ - "\u0000\u1044\u1045\u0005R\u0000\u0000\u1045\u1046\u0005O\u0000\u0000\u1046"+ - "\u1047\u0005L\u0000\u0000\u1047\u1048\u0005E\u0000\u0000\u1048\u030c\u0001"+ - "\u0000\u0000\u0000\u1049\u104a\u0005R\u0000\u0000\u104a\u104b\u0005O\u0000"+ - "\u0000\u104b\u104c\u0005L\u0000\u0000\u104c\u104d\u0005E\u0000\u0000\u104d"+ - "\u104e\u0005S\u0000\u0000\u104e\u030e\u0001\u0000\u0000\u0000\u104f\u1050"+ - "\u0005R\u0000\u0000\u1050\u1051\u0005O\u0000\u0000\u1051\u1052\u0005L"+ - "\u0000\u0000\u1052\u1053\u0005L\u0000\u0000\u1053\u1054\u0005B\u0000\u0000"+ - "\u1054\u1055\u0005A\u0000\u0000\u1055\u1056\u0005C\u0000\u0000\u1056\u1057"+ - "\u0005K\u0000\u0000\u1057\u0310\u0001\u0000\u0000\u0000\u1058\u1059\u0005"+ - "R\u0000\u0000\u1059\u105a\u0005O\u0000\u0000\u105a\u105b\u0005L\u0000"+ - "\u0000\u105b\u105c\u0005L\u0000\u0000\u105c\u105d\u0005U\u0000\u0000\u105d"+ - "\u105e\u0005P\u0000\u0000\u105e\u0312\u0001\u0000\u0000\u0000\u105f\u1060"+ - "\u0005R\u0000\u0000\u1060\u1061\u0005O\u0000\u0000\u1061\u1062\u0005U"+ - "\u0000\u0000\u1062\u1063\u0005T\u0000\u0000\u1063\u1064\u0005I\u0000\u0000"+ - "\u1064\u1065\u0005N\u0000\u0000\u1065\u1066\u0005E\u0000\u0000\u1066\u0314"+ - "\u0001\u0000\u0000\u0000\u1067\u1068\u0005R\u0000\u0000\u1068\u1069\u0005"+ - "O\u0000\u0000\u1069\u106a\u0005W\u0000\u0000\u106a\u0316\u0001\u0000\u0000"+ - "\u0000\u106b\u106c\u0005R\u0000\u0000\u106c\u106d\u0005O\u0000\u0000\u106d"+ - "\u106e\u0005W\u0000\u0000\u106e\u106f\u0005S\u0000\u0000\u106f\u0318\u0001"+ - "\u0000\u0000\u0000\u1070\u1071\u0005S\u0000\u0000\u1071\u1072\u00053\u0000"+ - "\u0000\u1072\u031a\u0001\u0000\u0000\u0000\u1073\u1074\u0005S\u0000\u0000"+ - "\u1074\u1075\u0005A\u0000\u0000\u1075\u1076\u0005M\u0000\u0000\u1076\u1077"+ - "\u0005P\u0000\u0000\u1077\u1078\u0005L\u0000\u0000\u1078\u1079\u0005E"+ - "\u0000\u0000\u1079\u031c\u0001\u0000\u0000\u0000\u107a\u107b\u0005S\u0000"+ - "\u0000\u107b\u107c\u0005C\u0000\u0000\u107c\u107d\u0005H\u0000\u0000\u107d"+ - "\u107e\u0005E\u0000\u0000\u107e\u107f\u0005D\u0000\u0000\u107f\u1080\u0005"+ - "U\u0000\u0000\u1080\u1081\u0005L\u0000\u0000\u1081\u1082\u0005E\u0000"+ - "\u0000\u1082\u031e\u0001\u0000\u0000\u0000\u1083\u1084\u0005S\u0000\u0000"+ - "\u1084\u1085\u0005C\u0000\u0000\u1085\u1086\u0005H\u0000\u0000\u1086\u1087"+ - "\u0005E\u0000\u0000\u1087\u1088\u0005D\u0000\u0000\u1088\u1089\u0005U"+ - "\u0000\u0000\u1089\u108a\u0005L\u0000\u0000\u108a\u108b\u0005E\u0000\u0000"+ - "\u108b\u108c\u0005R\u0000\u0000\u108c\u0320\u0001\u0000\u0000\u0000\u108d"+ - "\u108e\u0005S\u0000\u0000\u108e\u108f\u0005C\u0000\u0000\u108f\u1090\u0005"+ - "H\u0000\u0000\u1090\u1091\u0005E\u0000\u0000\u1091\u1092\u0005M\u0000"+ - "\u0000\u1092\u1093\u0005A\u0000\u0000\u1093\u0322\u0001\u0000\u0000\u0000"+ - "\u1094\u1095\u0005S\u0000\u0000\u1095\u1096\u0005C\u0000\u0000\u1096\u1097"+ - "\u0005H\u0000\u0000\u1097\u1098\u0005E\u0000\u0000\u1098\u1099\u0005M"+ - "\u0000\u0000\u1099\u109a\u0005A\u0000\u0000\u109a\u109b\u0005S\u0000\u0000"+ - "\u109b\u0324\u0001\u0000\u0000\u0000\u109c\u109d\u0005S\u0000\u0000\u109d"+ - "\u109e\u0005E\u0000\u0000\u109e\u109f\u0005C\u0000\u0000\u109f\u10a0\u0005"+ - "O\u0000\u0000\u10a0\u10a1\u0005N\u0000\u0000\u10a1\u10a2\u0005D\u0000"+ - "\u0000\u10a2\u0326\u0001\u0000\u0000\u0000\u10a3\u10a4\u0005S\u0000\u0000"+ - "\u10a4\u10a5\u0005E\u0000\u0000\u10a5\u10a6\u0005L\u0000\u0000\u10a6\u10a7"+ - "\u0005E\u0000\u0000\u10a7\u10a8\u0005C\u0000\u0000\u10a8\u10a9\u0005T"+ - "\u0000\u0000\u10a9\u0328\u0001\u0000\u0000\u0000\u10aa\u10ab\u0005S\u0000"+ - "\u0000\u10ab\u10ac\u0005E\u0000\u0000\u10ac\u10ad\u0005M\u0000\u0000\u10ad"+ - "\u10ae\u0005I\u0000\u0000\u10ae\u032a\u0001\u0000\u0000\u0000\u10af\u10b0"+ - "\u0005S\u0000\u0000\u10b0\u10b1\u0005E\u0000\u0000\u10b1\u10b2\u0005R"+ - "\u0000\u0000\u10b2\u10b3\u0005I\u0000\u0000\u10b3\u10b4\u0005A\u0000\u0000"+ - "\u10b4\u10b5\u0005L\u0000\u0000\u10b5\u10b6\u0005I\u0000\u0000\u10b6\u10b7"+ - "\u0005Z\u0000\u0000\u10b7\u10b8\u0005A\u0000\u0000\u10b8\u10b9\u0005B"+ - "\u0000\u0000\u10b9\u10ba\u0005L\u0000\u0000\u10ba\u10bb\u0005E\u0000\u0000"+ - "\u10bb\u032c\u0001\u0000\u0000\u0000\u10bc\u10bd\u0005S\u0000\u0000\u10bd"+ - "\u10be\u0005E\u0000\u0000\u10be\u10bf\u0005S\u0000\u0000\u10bf\u10c0\u0005"+ - "S\u0000\u0000\u10c0\u10c1\u0005I\u0000\u0000\u10c1\u10c2\u0005O\u0000"+ - "\u0000\u10c2\u10c3\u0005N\u0000\u0000\u10c3\u032e\u0001\u0000\u0000\u0000"+ - "\u10c4\u10c5\u0005S\u0000\u0000\u10c5\u10c6\u0005E\u0000\u0000\u10c6\u10c7"+ - "\u0005S\u0000\u0000\u10c7\u10c8\u0005S\u0000\u0000\u10c8\u10c9\u0005I"+ - "\u0000\u0000\u10c9\u10ca\u0005O\u0000\u0000\u10ca\u10cb\u0005N\u0000\u0000"+ - "\u10cb\u10cc\u0005_\u0000\u0000\u10cc\u10cd\u0005U\u0000\u0000\u10cd\u10ce"+ - "\u0005S\u0000\u0000\u10ce\u10cf\u0005E\u0000\u0000\u10cf\u10d0\u0005R"+ - "\u0000\u0000\u10d0\u0330\u0001\u0000\u0000\u0000\u10d1\u10d2\u0005S\u0000"+ - "\u0000\u10d2\u10d3\u0005E\u0000\u0000\u10d3\u10d4\u0005T\u0000\u0000\u10d4"+ - "\u0332\u0001\u0000\u0000\u0000\u10d5\u10d6\u0005S\u0000\u0000\u10d6\u10d7"+ - "\u0005E\u0000\u0000\u10d7\u10d8\u0005T\u0000\u0000\u10d8\u10d9\u0005S"+ - "\u0000\u0000\u10d9\u0334\u0001\u0000\u0000\u0000\u10da\u10db\u0005S\u0000"+ - "\u0000\u10db\u10dc\u0005E\u0000\u0000\u10dc\u10dd\u0005T\u0000\u0000\u10dd"+ - "\u10de\u0005_\u0000\u0000\u10de\u10df\u0005S\u0000\u0000\u10df\u10e0\u0005"+ - "E\u0000\u0000\u10e0\u10e1\u0005S\u0000\u0000\u10e1\u10e2\u0005S\u0000"+ - "\u0000\u10e2\u10e3\u0005I\u0000\u0000\u10e3\u10e4\u0005O\u0000\u0000\u10e4"+ - "\u10e5\u0005N\u0000\u0000\u10e5\u10e6\u0005_\u0000\u0000\u10e6\u10e7\u0005"+ - "V\u0000\u0000\u10e7\u10e8\u0005A\u0000\u0000\u10e8\u10e9\u0005R\u0000"+ - "\u0000\u10e9\u10ea\u0005I\u0000\u0000\u10ea\u10eb\u0005A\u0000\u0000\u10eb"+ - "\u10ec\u0005B\u0000\u0000\u10ec\u10ed\u0005L\u0000\u0000\u10ed\u10ee\u0005"+ - "E\u0000\u0000\u10ee\u0336\u0001\u0000\u0000\u0000\u10ef\u10f0\u0005S\u0000"+ - "\u0000\u10f0\u10f1\u0005H\u0000\u0000\u10f1\u10f2\u0005A\u0000\u0000\u10f2"+ - "\u10f3\u0005P\u0000\u0000\u10f3\u10f4\u0005E\u0000\u0000\u10f4\u0338\u0001"+ - "\u0000\u0000\u0000\u10f5\u10f6\u0005S\u0000\u0000\u10f6\u10f7\u0005H\u0000"+ - "\u0000\u10f7\u10f8\u0005O\u0000\u0000\u10f8\u10f9\u0005W\u0000\u0000\u10f9"+ - "\u033a\u0001\u0000\u0000\u0000\u10fa\u10fb\u0005S\u0000\u0000\u10fb\u10fc"+ - "\u0005I\u0000\u0000\u10fc\u10fd\u0005G\u0000\u0000\u10fd\u10fe\u0005N"+ - "\u0000\u0000\u10fe\u10ff\u0005E\u0000\u0000\u10ff\u1100\u0005D\u0000\u0000"+ - "\u1100\u033c\u0001\u0000\u0000\u0000\u1101\u1102\u0005S\u0000\u0000\u1102"+ - "\u1103\u0005K\u0000\u0000\u1103\u1104\u0005E\u0000\u0000\u1104\u1105\u0005"+ - "W\u0000\u0000\u1105\u033e\u0001\u0000\u0000\u0000\u1106\u1107\u0005S\u0000"+ - "\u0000\u1107\u1108\u0005M\u0000\u0000\u1108\u1109\u0005A\u0000\u0000\u1109"+ - "\u110a\u0005L\u0000\u0000\u110a\u110b\u0005L\u0000\u0000\u110b\u110c\u0005"+ - "I\u0000\u0000\u110c\u110d\u0005N\u0000\u0000\u110d\u110e\u0005T\u0000"+ - "\u0000\u110e\u0340\u0001\u0000\u0000\u0000\u110f\u1110\u0005S\u0000\u0000"+ - "\u1110\u1111\u0005N\u0000\u0000\u1111\u1112\u0005A\u0000\u0000\u1112\u1113"+ - "\u0005P\u0000\u0000\u1113\u1114\u0005S\u0000\u0000\u1114\u1115\u0005H"+ - "\u0000\u0000\u1115\u1116\u0005O\u0000\u0000\u1116\u1117\u0005T\u0000\u0000"+ - "\u1117\u0342\u0001\u0000\u0000\u0000\u1118\u1119\u0005S\u0000\u0000\u1119"+ - "\u111a\u0005O\u0000\u0000\u111a\u111b\u0005N\u0000\u0000\u111b\u111c\u0005"+ - "A\u0000\u0000\u111c\u111d\u0005M\u0000\u0000\u111d\u111e\u0005E\u0000"+ - "\u0000\u111e\u0344\u0001\u0000\u0000\u0000\u111f\u1120\u0005S\u0000\u0000"+ - "\u1120\u1121\u0005P\u0000\u0000\u1121\u1122\u0005L\u0000\u0000\u1122\u1123"+ - "\u0005I\u0000\u0000\u1123\u1124\u0005T\u0000\u0000\u1124\u0346\u0001\u0000"+ - "\u0000\u0000\u1125\u1126\u0005S\u0000\u0000\u1126\u1127\u0005Q\u0000\u0000"+ - "\u1127\u1128\u0005L\u0000\u0000\u1128\u0348\u0001\u0000\u0000\u0000\u1129"+ - "\u112a\u0005S\u0000\u0000\u112a\u112b\u0005Q\u0000\u0000\u112b\u112c\u0005"+ - "L\u0000\u0000\u112c\u112d\u0005_\u0000\u0000\u112d\u112e\u0005B\u0000"+ - "\u0000\u112e\u112f\u0005L\u0000\u0000\u112f\u1130\u0005O\u0000\u0000\u1130"+ - "\u1131\u0005C\u0000\u0000\u1131\u1132\u0005K\u0000\u0000\u1132\u1133\u0005"+ - "_\u0000\u0000\u1133\u1134\u0005R\u0000\u0000\u1134\u1135\u0005U\u0000"+ - "\u0000\u1135\u1136\u0005L\u0000\u0000\u1136\u1137\u0005E\u0000\u0000\u1137"+ - "\u034a\u0001\u0000\u0000\u0000\u1138\u1139\u0005S\u0000\u0000\u1139\u113a"+ - "\u0005T\u0000\u0000\u113a\u113b\u0005A\u0000\u0000\u113b\u113c\u0005G"+ - "\u0000\u0000\u113c\u113d\u0005E\u0000\u0000\u113d\u034c\u0001\u0000\u0000"+ - "\u0000\u113e\u113f\u0005S\u0000\u0000\u113f\u1140\u0005T\u0000\u0000\u1140"+ - "\u1141\u0005A\u0000\u0000\u1141\u1142\u0005G\u0000\u0000\u1142\u1143\u0005"+ - "E\u0000\u0000\u1143\u1144\u0005S\u0000\u0000\u1144\u034e\u0001\u0000\u0000"+ - "\u0000\u1145\u1146\u0005S\u0000\u0000\u1146\u1147\u0005T\u0000\u0000\u1147"+ - "\u1148\u0005A\u0000\u0000\u1148\u1149\u0005R\u0000\u0000\u1149\u114a\u0005"+ - "T\u0000\u0000\u114a\u0350\u0001\u0000\u0000\u0000\u114b\u114c\u0005S\u0000"+ - "\u0000\u114c\u114d\u0005T\u0000\u0000\u114d\u114e\u0005A\u0000\u0000\u114e"+ - "\u114f\u0005R\u0000\u0000\u114f\u1150\u0005T\u0000\u0000\u1150\u1151\u0005"+ - "S\u0000\u0000\u1151\u0352\u0001\u0000\u0000\u0000\u1152\u1153\u0005S\u0000"+ - "\u0000\u1153\u1154\u0005T\u0000\u0000\u1154\u1155\u0005A\u0000\u0000\u1155"+ - "\u1156\u0005T\u0000\u0000\u1156\u1157\u0005S\u0000\u0000\u1157\u0354\u0001"+ - "\u0000\u0000\u0000\u1158\u1159\u0005S\u0000\u0000\u1159\u115a\u0005T\u0000"+ - "\u0000\u115a\u115b\u0005A\u0000\u0000\u115b\u115c\u0005T\u0000\u0000\u115c"+ - "\u115d\u0005U\u0000\u0000\u115d\u115e\u0005S\u0000\u0000\u115e\u0356\u0001"+ - "\u0000\u0000\u0000\u115f\u1160\u0005S\u0000\u0000\u1160\u1161\u0005T\u0000"+ - "\u0000\u1161\u1162\u0005O\u0000\u0000\u1162\u1163\u0005P\u0000\u0000\u1163"+ - "\u0358\u0001\u0000\u0000\u0000\u1164\u1165\u0005S\u0000\u0000\u1165\u1166"+ - "\u0005T\u0000\u0000\u1166\u1167\u0005O\u0000\u0000\u1167\u1168\u0005R"+ - "\u0000\u0000\u1168\u1169\u0005A\u0000\u0000\u1169\u116a\u0005G\u0000\u0000"+ - "\u116a\u116b\u0005E\u0000\u0000\u116b\u035a\u0001\u0000\u0000\u0000\u116c"+ - "\u116d\u0005S\u0000\u0000\u116d\u116e\u0005T\u0000\u0000\u116e\u116f\u0005"+ - "R\u0000\u0000\u116f\u1170\u0005E\u0000\u0000\u1170\u1171\u0005A\u0000"+ - "\u0000\u1171\u1172\u0005M\u0000\u0000\u1172\u035c\u0001\u0000\u0000\u0000"+ - "\u1173\u1174\u0005S\u0000\u0000\u1174\u1175\u0005T\u0000\u0000\u1175\u1176"+ - "\u0005R\u0000\u0000\u1176\u1177\u0005E\u0000\u0000\u1177\u1178\u0005A"+ - "\u0000\u0000\u1178\u1179\u0005M\u0000\u0000\u1179\u117a\u0005I\u0000\u0000"+ - "\u117a\u117b\u0005N\u0000\u0000\u117b\u117c\u0005G\u0000\u0000\u117c\u035e"+ - "\u0001\u0000\u0000\u0000\u117d\u117e\u0005S\u0000\u0000\u117e\u117f\u0005"+ - "T\u0000\u0000\u117f\u1180\u0005R\u0000\u0000\u1180\u1181\u0005I\u0000"+ - "\u0000\u1181\u1182\u0005N\u0000\u0000\u1182\u1183\u0005G\u0000\u0000\u1183"+ - "\u0360\u0001\u0000\u0000\u0000\u1184\u1185\u0005S\u0000\u0000\u1185\u1186"+ - "\u0005T\u0000\u0000\u1186\u1187\u0005R\u0000\u0000\u1187\u1188\u0005U"+ - "\u0000\u0000\u1188\u1189\u0005C\u0000\u0000\u1189\u118a\u0005T\u0000\u0000"+ - "\u118a\u0362\u0001\u0000\u0000\u0000\u118b\u118c\u0005S\u0000\u0000\u118c"+ - "\u118d\u0005U\u0000\u0000\u118d\u118e\u0005M\u0000\u0000\u118e\u0364\u0001"+ - "\u0000\u0000\u0000\u118f\u1190\u0005S\u0000\u0000\u1190\u1191\u0005U\u0000"+ - "\u0000\u1191\u1192\u0005P\u0000\u0000\u1192\u1193\u0005E\u0000\u0000\u1193"+ - "\u1194\u0005R\u0000\u0000\u1194\u1195\u0005U\u0000\u0000\u1195\u1196\u0005"+ - "S\u0000\u0000\u1196\u1197\u0005E\u0000\u0000\u1197\u1198\u0005R\u0000"+ - "\u0000\u1198\u0366\u0001\u0000\u0000\u0000\u1199\u119a\u0005S\u0000\u0000"+ - "\u119a\u119b\u0005W\u0000\u0000\u119b\u119c\u0005I\u0000\u0000\u119c\u119d"+ - "\u0005T\u0000\u0000\u119d\u119e\u0005C\u0000\u0000\u119e\u119f\u0005H"+ - "\u0000\u0000\u119f\u0368\u0001\u0000\u0000\u0000\u11a0\u11a1\u0005S\u0000"+ - "\u0000\u11a1\u11a2\u0005Y\u0000\u0000\u11a2\u11a3\u0005N\u0000\u0000\u11a3"+ - "\u11a4\u0005C\u0000\u0000\u11a4\u036a\u0001\u0000\u0000\u0000\u11a5\u11a6"+ - "\u0005S\u0000\u0000\u11a6\u11a7\u0005Y\u0000\u0000\u11a7\u11a8\u0005S"+ - "\u0000\u0000\u11a8\u11a9\u0005T\u0000\u0000\u11a9\u11aa\u0005E\u0000\u0000"+ - "\u11aa\u11ab\u0005M\u0000\u0000\u11ab\u036c\u0001\u0000\u0000\u0000\u11ac"+ - "\u11ad\u0005T\u0000\u0000\u11ad\u11ae\u0005A\u0000\u0000\u11ae\u11af\u0005"+ - "B\u0000\u0000\u11af\u11b0\u0005L\u0000\u0000\u11b0\u11b1\u0005E\u0000"+ - "\u0000\u11b1\u036e\u0001\u0000\u0000\u0000\u11b2\u11b3\u0005T\u0000\u0000"+ - "\u11b3\u11b4\u0005A\u0000\u0000\u11b4\u11b5\u0005B\u0000\u0000\u11b5\u11b6"+ - "\u0005L\u0000\u0000\u11b6\u11b7\u0005E\u0000\u0000\u11b7\u11b8\u0005S"+ - "\u0000\u0000\u11b8\u0370\u0001\u0000\u0000\u0000\u11b9\u11ba\u0005T\u0000"+ - "\u0000\u11ba\u11bb\u0005A\u0000\u0000\u11bb\u11bc\u0005B\u0000\u0000\u11bc"+ - "\u11bd\u0005L\u0000\u0000\u11bd\u11be\u0005E\u0000\u0000\u11be\u11bf\u0005"+ - "S\u0000\u0000\u11bf\u11c0\u0005A\u0000\u0000\u11c0\u11c1\u0005M\u0000"+ - "\u0000\u11c1\u11c2\u0005P\u0000\u0000\u11c2\u11c3\u0005L\u0000\u0000\u11c3"+ - "\u11c4\u0005E\u0000\u0000\u11c4\u0372\u0001\u0000\u0000\u0000\u11c5\u11c6"+ - "\u0005T\u0000\u0000\u11c6\u11c7\u0005A\u0000\u0000\u11c7\u11c8\u0005B"+ - "\u0000\u0000\u11c8\u11c9\u0005L\u0000\u0000\u11c9\u11ca\u0005E\u0000\u0000"+ - "\u11ca\u11cb\u0005T\u0000\u0000\u11cb\u0374\u0001\u0000\u0000\u0000\u11cc"+ - "\u11cd\u0005T\u0000\u0000\u11cd\u11ce\u0005A\u0000\u0000\u11ce\u11cf\u0005"+ - "B\u0000\u0000\u11cf\u11d0\u0005L\u0000\u0000\u11d0\u11d1\u0005E\u0000"+ - "\u0000\u11d1\u11d2\u0005T\u0000\u0000\u11d2\u11d3\u0005S\u0000\u0000\u11d3"+ - "\u0376\u0001\u0000\u0000\u0000\u11d4\u11d5\u0005T\u0000\u0000\u11d5\u11d6"+ - "\u0005A\u0000\u0000\u11d6\u11d7\u0005S\u0000\u0000\u11d7\u11d8\u0005K"+ - "\u0000\u0000\u11d8\u0378\u0001\u0000\u0000\u0000\u11d9\u11da\u0005T\u0000"+ - "\u0000\u11da\u11db\u0005A\u0000\u0000\u11db\u11dc\u0005S\u0000\u0000\u11dc"+ - "\u11dd\u0005K\u0000\u0000\u11dd\u11de\u0005S\u0000\u0000\u11de\u037a\u0001"+ - "\u0000\u0000\u0000\u11df\u11e0\u0005T\u0000\u0000\u11e0\u11e1\u0005E\u0000"+ - "\u0000\u11e1\u11e2\u0005M\u0000\u0000\u11e2\u11e3\u0005P\u0000\u0000\u11e3"+ - "\u11e4\u0005O\u0000\u0000\u11e4\u11e5\u0005R\u0000\u0000\u11e5\u11e6\u0005"+ - "A\u0000\u0000\u11e6\u11e7\u0005R\u0000\u0000\u11e7\u11e8\u0005Y\u0000"+ - "\u0000\u11e8\u037c\u0001\u0000\u0000\u0000\u11e9\u11ea\u0005T\u0000\u0000"+ - "\u11ea\u11eb\u0005E\u0000\u0000\u11eb\u11ec\u0005R\u0000\u0000\u11ec\u11ed"+ - "\u0005M\u0000\u0000\u11ed\u11ee\u0005I\u0000\u0000\u11ee\u11ef\u0005N"+ - "\u0000\u0000\u11ef\u11f0\u0005A\u0000\u0000\u11f0\u11f1\u0005T\u0000\u0000"+ - "\u11f1\u11f2\u0005E\u0000\u0000\u11f2\u11f3\u0005D\u0000\u0000\u11f3\u037e"+ - "\u0001\u0000\u0000\u0000\u11f4\u11f5\u0005T\u0000\u0000\u11f5\u11f6\u0005"+ - "E\u0000\u0000\u11f6\u11f7\u0005X\u0000\u0000\u11f7\u11f8\u0005T\u0000"+ - "\u0000\u11f8\u0380\u0001\u0000\u0000\u0000\u11f9\u11fa\u0005T\u0000\u0000"+ - "\u11fa\u11fb\u0005H\u0000\u0000\u11fb\u11fc\u0005A\u0000\u0000\u11fc\u11fd"+ - "\u0005N\u0000\u0000\u11fd\u0382\u0001\u0000\u0000\u0000\u11fe\u11ff\u0005"+ - "T\u0000\u0000\u11ff\u1200\u0005H\u0000\u0000\u1200\u1201\u0005E\u0000"+ - "\u0000\u1201\u1202\u0005N\u0000\u0000\u1202\u0384\u0001\u0000\u0000\u0000"+ - "\u1203\u1204\u0005T\u0000\u0000\u1204\u1205\u0005I\u0000\u0000\u1205\u1206"+ - "\u0005M\u0000\u0000\u1206\u1207\u0005E\u0000\u0000\u1207\u0386\u0001\u0000"+ - "\u0000\u0000\u1208\u1209\u0005T\u0000\u0000\u1209\u120a\u0005I\u0000\u0000"+ - "\u120a\u120b\u0005M\u0000\u0000\u120b\u120c\u0005E\u0000\u0000\u120c\u120d"+ - "\u0005S\u0000\u0000\u120d\u120e\u0005T\u0000\u0000\u120e\u120f\u0005A"+ - "\u0000\u0000\u120f\u1210\u0005M\u0000\u0000\u1210\u1211\u0005P\u0000\u0000"+ - "\u1211\u0388\u0001\u0000\u0000\u0000\u1212\u1213\u0005T\u0000\u0000\u1213"+ - "\u1214\u0005I\u0000\u0000\u1214\u1215\u0005N\u0000\u0000\u1215\u1216\u0005"+ - "Y\u0000\u0000\u1216\u1217\u0005I\u0000\u0000\u1217\u1218\u0005N\u0000"+ - "\u0000\u1218\u1219\u0005T\u0000\u0000\u1219\u038a\u0001\u0000\u0000\u0000"+ - "\u121a\u121b\u0005T\u0000\u0000\u121b\u121c\u0005O\u0000\u0000\u121c\u038c"+ - "\u0001\u0000\u0000\u0000\u121d\u121e\u0005T\u0000\u0000\u121e\u121f\u0005"+ - "R\u0000\u0000\u121f\u1220\u0005A\u0000\u0000\u1220\u1221\u0005N\u0000"+ - "\u0000\u1221\u1222\u0005S\u0000\u0000\u1222\u1223\u0005A\u0000\u0000\u1223"+ - "\u1224\u0005C\u0000\u0000\u1224\u1225\u0005T\u0000\u0000\u1225\u1226\u0005"+ - "I\u0000\u0000\u1226\u1227\u0005O\u0000\u0000\u1227\u1228\u0005N\u0000"+ - "\u0000\u1228\u038e\u0001\u0000\u0000\u0000\u1229\u122a\u0005T\u0000\u0000"+ - "\u122a\u122b\u0005R\u0000\u0000\u122b\u122c\u0005A\u0000\u0000\u122c\u122d"+ - "\u0005S\u0000\u0000\u122d\u122e\u0005H\u0000\u0000\u122e\u0390\u0001\u0000"+ - "\u0000\u0000\u122f\u1230\u0005T\u0000\u0000\u1230\u1231\u0005R\u0000\u0000"+ - "\u1231\u1232\u0005E\u0000\u0000\u1232\u1233\u0005E\u0000\u0000\u1233\u0392"+ - "\u0001\u0000\u0000\u0000\u1234\u1235\u0005T\u0000\u0000\u1235\u1236\u0005"+ - "R\u0000\u0000\u1236\u1237\u0005I\u0000\u0000\u1237\u1238\u0005G\u0000"+ - "\u0000\u1238\u1239\u0005G\u0000\u0000\u1239\u123a\u0005E\u0000\u0000\u123a"+ - "\u123b\u0005R\u0000\u0000\u123b\u123c\u0005S\u0000\u0000\u123c\u0394\u0001"+ - "\u0000\u0000\u0000\u123d\u123e\u0005T\u0000\u0000\u123e\u123f\u0005R\u0000"+ - "\u0000\u123f\u1240\u0005I\u0000\u0000\u1240\u1241\u0005M\u0000\u0000\u1241"+ - "\u0396\u0001\u0000\u0000\u0000\u1242\u1243\u0005T\u0000\u0000\u1243\u1244"+ - "\u0005R\u0000\u0000\u1244\u1245\u0005U\u0000\u0000\u1245\u1246\u0005E"+ - "\u0000\u0000\u1246\u0398\u0001\u0000\u0000\u0000\u1247\u1248\u0005T\u0000"+ - "\u0000\u1248\u1249\u0005R\u0000\u0000\u1249\u124a\u0005U\u0000\u0000\u124a"+ - "\u124b\u0005N\u0000\u0000\u124b\u124c\u0005C\u0000\u0000\u124c\u124d\u0005"+ - "A\u0000\u0000\u124d\u124e\u0005T\u0000\u0000\u124e\u124f\u0005E\u0000"+ - "\u0000\u124f\u039a\u0001\u0000\u0000\u0000\u1250\u1251\u0005T\u0000\u0000"+ - "\u1251\u1252\u0005Y\u0000\u0000\u1252\u1253\u0005P\u0000\u0000\u1253\u1254"+ - "\u0005E\u0000\u0000\u1254\u039c\u0001\u0000\u0000\u0000\u1255\u1256\u0005"+ - "T\u0000\u0000\u1256\u1257\u0005Y\u0000\u0000\u1257\u1258\u0005P\u0000"+ - "\u0000\u1258\u1259\u0005E\u0000\u0000\u1259\u125a\u0005_\u0000\u0000\u125a"+ - "\u125b\u0005C\u0000\u0000\u125b\u125c\u0005A\u0000\u0000\u125c\u125d\u0005"+ - "S\u0000\u0000\u125d\u125e\u0005T\u0000\u0000\u125e\u039e\u0001\u0000\u0000"+ - "\u0000\u125f\u1260\u0005T\u0000\u0000\u1260\u1261\u0005Y\u0000\u0000\u1261"+ - "\u1262\u0005P\u0000\u0000\u1262\u1263\u0005E\u0000\u0000\u1263\u1264\u0005"+ - "S\u0000\u0000\u1264\u03a0\u0001\u0000\u0000\u0000\u1265\u1266\u0005U\u0000"+ - "\u0000\u1266\u1267\u0005N\u0000\u0000\u1267\u1268\u0005B\u0000\u0000\u1268"+ - "\u1269\u0005O\u0000\u0000\u1269\u126a\u0005U\u0000\u0000\u126a\u126b\u0005"+ - "N\u0000\u0000\u126b\u126c\u0005D\u0000\u0000\u126c\u126d\u0005E\u0000"+ - "\u0000\u126d\u126e\u0005D\u0000\u0000\u126e\u03a2\u0001\u0000\u0000\u0000"+ - "\u126f\u1270\u0005U\u0000\u0000\u1270\u1271\u0005N\u0000\u0000\u1271\u1272"+ - "\u0005C\u0000\u0000\u1272\u1273\u0005O\u0000\u0000\u1273\u1274\u0005M"+ - "\u0000\u0000\u1274\u1275\u0005M\u0000\u0000\u1275\u1276\u0005I\u0000\u0000"+ - "\u1276\u1277\u0005T\u0000\u0000\u1277\u1278\u0005T\u0000\u0000\u1278\u1279"+ - "\u0005E\u0000\u0000\u1279\u127a\u0005D\u0000\u0000\u127a\u03a4\u0001\u0000"+ - "\u0000\u0000\u127b\u127c\u0005U\u0000\u0000\u127c\u127d\u0005N\u0000\u0000"+ - "\u127d\u127e\u0005I\u0000\u0000\u127e\u127f\u0005N\u0000\u0000\u127f\u1280"+ - "\u0005S\u0000\u0000\u1280\u1281\u0005T\u0000\u0000\u1281\u1282\u0005A"+ - "\u0000\u0000\u1282\u1283\u0005L\u0000\u0000\u1283\u1284\u0005L\u0000\u0000"+ - "\u1284\u03a6\u0001\u0000\u0000\u0000\u1285\u1286\u0005U\u0000\u0000\u1286"+ - "\u1287\u0005N\u0000\u0000\u1287\u1288\u0005I\u0000\u0000\u1288\u1289\u0005"+ - "O\u0000\u0000\u1289\u128a\u0005N\u0000\u0000\u128a\u03a8\u0001\u0000\u0000"+ - "\u0000\u128b\u128c\u0005U\u0000\u0000\u128c\u128d\u0005N\u0000\u0000\u128d"+ - "\u128e\u0005I\u0000\u0000\u128e\u128f\u0005Q\u0000\u0000\u128f\u1290\u0005"+ - "U\u0000\u0000\u1290\u1291\u0005E\u0000\u0000\u1291\u03aa\u0001\u0000\u0000"+ - "\u0000\u1292\u1293\u0005U\u0000\u0000\u1293\u1294\u0005N\u0000\u0000\u1294"+ - "\u1295\u0005L\u0000\u0000\u1295\u1296\u0005O\u0000\u0000\u1296\u1297\u0005"+ - "C\u0000\u0000\u1297\u1298\u0005K\u0000\u0000\u1298\u03ac\u0001\u0000\u0000"+ - "\u0000\u1299\u129a\u0005U\u0000\u0000\u129a\u129b\u0005N\u0000\u0000\u129b"+ - "\u129c\u0005S\u0000\u0000\u129c\u129d\u0005E\u0000\u0000\u129d\u129e\u0005"+ - "T\u0000\u0000\u129e\u03ae\u0001\u0000\u0000\u0000\u129f\u12a0\u0005U\u0000"+ - "\u0000\u12a0\u12a1\u0005N\u0000\u0000\u12a1\u12a2\u0005S\u0000\u0000\u12a2"+ - "\u12a3\u0005I\u0000\u0000\u12a3\u12a4\u0005G\u0000\u0000\u12a4\u12a5\u0005"+ - "N\u0000\u0000\u12a5\u12a6\u0005E\u0000\u0000\u12a6\u12a7\u0005D\u0000"+ - "\u0000\u12a7\u03b0\u0001\u0000\u0000\u0000\u12a8\u12a9\u0005U\u0000\u0000"+ - "\u12a9\u12aa\u0005P\u0000\u0000\u12aa\u03b2\u0001\u0000\u0000\u0000\u12ab"+ - "\u12ac\u0005U\u0000\u0000\u12ac\u12ad\u0005P\u0000\u0000\u12ad\u12ae\u0005"+ - "D\u0000\u0000\u12ae\u12af\u0005A\u0000\u0000\u12af\u12b0\u0005T\u0000"+ - "\u0000\u12b0\u12b1\u0005E\u0000\u0000\u12b1\u03b4\u0001\u0000\u0000\u0000"+ - "\u12b2\u12b3\u0005U\u0000\u0000\u12b3\u12b4\u0005S\u0000\u0000\u12b4\u12b5"+ - "\u0005E\u0000\u0000\u12b5\u03b6\u0001\u0000\u0000\u0000\u12b6\u12b7\u0005"+ - "U\u0000\u0000\u12b7\u12b8\u0005S\u0000\u0000\u12b8\u12b9\u0005E\u0000"+ - "\u0000\u12b9\u12ba\u0005R\u0000\u0000\u12ba\u03b8\u0001\u0000\u0000\u0000"+ - "\u12bb\u12bc\u0005U\u0000\u0000\u12bc\u12bd\u0005S\u0000\u0000\u12bd\u12be"+ - "\u0005E\u0000\u0000\u12be\u12bf\u0005_\u0000\u0000\u12bf\u12c0\u0005M"+ - "\u0000\u0000\u12c0\u12c1\u0005V\u0000\u0000\u12c1\u03ba\u0001\u0000\u0000"+ - "\u0000\u12c2\u12c3\u0005U\u0000\u0000\u12c3\u12c4\u0005S\u0000\u0000\u12c4"+ - "\u12c5\u0005I\u0000\u0000\u12c5\u12c6\u0005N\u0000\u0000\u12c6\u12c7\u0005"+ - "G\u0000\u0000\u12c7\u03bc\u0001\u0000\u0000\u0000\u12c8\u12c9\u0005V\u0000"+ - "\u0000\u12c9\u12ca\u0005A\u0000\u0000\u12ca\u12cb\u0005L\u0000\u0000\u12cb"+ - "\u12cc\u0005U\u0000\u0000\u12cc\u12cd\u0005E\u0000\u0000\u12cd\u03be\u0001"+ - "\u0000\u0000\u0000\u12ce\u12cf\u0005V\u0000\u0000\u12cf\u12d0\u0005A\u0000"+ - "\u0000\u12d0\u12d1\u0005L\u0000\u0000\u12d1\u12d2\u0005U\u0000\u0000\u12d2"+ - "\u12d3\u0005E\u0000\u0000\u12d3\u12d4\u0005S\u0000\u0000\u12d4\u03c0\u0001"+ - "\u0000\u0000\u0000\u12d5\u12d6\u0005V\u0000\u0000\u12d6\u12d7\u0005A\u0000"+ - "\u0000\u12d7\u12d8\u0005R\u0000\u0000\u12d8\u12d9\u0005C\u0000\u0000\u12d9"+ - "\u12da\u0005H\u0000\u0000\u12da\u12db\u0005A\u0000\u0000\u12db\u12dc\u0005"+ - "R\u0000\u0000\u12dc\u03c2\u0001\u0000\u0000\u0000\u12dd\u12de\u0005V\u0000"+ - "\u0000\u12de\u12df\u0005A\u0000\u0000\u12df\u12e0\u0005R\u0000\u0000\u12e0"+ - "\u12e1\u0005I\u0000\u0000\u12e1\u12e2\u0005A\u0000\u0000\u12e2\u12e3\u0005"+ - "B\u0000\u0000\u12e3\u12e4\u0005L\u0000\u0000\u12e4\u12e5\u0005E\u0000"+ - "\u0000\u12e5\u03c4\u0001\u0000\u0000\u0000\u12e6\u12e7\u0005V\u0000\u0000"+ - "\u12e7\u12e8\u0005A\u0000\u0000\u12e8\u12e9\u0005R\u0000\u0000\u12e9\u12ea"+ - "\u0005I\u0000\u0000\u12ea\u12eb\u0005A\u0000\u0000\u12eb\u12ec\u0005B"+ - "\u0000\u0000\u12ec\u12ed\u0005L\u0000\u0000\u12ed\u12ee\u0005E\u0000\u0000"+ - "\u12ee\u12ef\u0005S\u0000\u0000\u12ef\u03c6\u0001\u0000\u0000\u0000\u12f0"+ - "\u12f1\u0005V\u0000\u0000\u12f1\u12f2\u0005A\u0000\u0000\u12f2\u12f3\u0005"+ - "R\u0000\u0000\u12f3\u12f4\u0005I\u0000\u0000\u12f4\u12f5\u0005A\u0000"+ - "\u0000\u12f5\u12f6\u0005N\u0000\u0000\u12f6\u12f7\u0005T\u0000\u0000\u12f7"+ - "\u03c8\u0001\u0000\u0000\u0000\u12f8\u12f9\u0005V\u0000\u0000\u12f9\u12fa"+ - "\u0005A\u0000\u0000\u12fa\u12fb\u0005U\u0000\u0000\u12fb\u12fc\u0005L"+ - "\u0000\u0000\u12fc\u12fd\u0005T\u0000\u0000\u12fd\u03ca\u0001\u0000\u0000"+ - "\u0000\u12fe\u12ff\u0005V\u0000\u0000\u12ff\u1300\u0005A\u0000\u0000\u1300"+ - "\u1301\u0005U\u0000\u0000\u1301\u1302\u0005L\u0000\u0000\u1302\u1303\u0005"+ - "T\u0000\u0000\u1303\u1304\u0005S\u0000\u0000\u1304\u03cc\u0001\u0000\u0000"+ - "\u0000\u1305\u1306\u0005V\u0000\u0000\u1306\u1307\u0005E\u0000\u0000\u1307"+ - "\u1308\u0005R\u0000\u0000\u1308\u1309\u0005B\u0000\u0000\u1309\u130a\u0005"+ - "O\u0000\u0000\u130a\u130b\u0005S\u0000\u0000\u130b\u130c\u0005E\u0000"+ - "\u0000\u130c\u03ce\u0001\u0000\u0000\u0000\u130d\u130e\u0005V\u0000\u0000"+ - "\u130e\u130f\u0005E\u0000\u0000\u130f\u1310\u0005R\u0000\u0000\u1310\u1311"+ - "\u0005S\u0000\u0000\u1311\u1312\u0005I\u0000\u0000\u1312\u1313\u0005O"+ - "\u0000\u0000\u1313\u1314\u0005N\u0000\u0000\u1314\u03d0\u0001\u0000\u0000"+ - "\u0000\u1315\u1316\u0005V\u0000\u0000\u1316\u1317\u0005I\u0000\u0000\u1317"+ - "\u1318\u0005E\u0000\u0000\u1318\u1319\u0005W\u0000\u0000\u1319\u03d2\u0001"+ - "\u0000\u0000\u0000\u131a\u131b\u0005V\u0000\u0000\u131b\u131c\u0005I\u0000"+ - "\u0000\u131c\u131d\u0005E\u0000\u0000\u131d\u131e\u0005W\u0000\u0000\u131e"+ - "\u131f\u0005S\u0000\u0000\u131f\u03d4\u0001\u0000\u0000\u0000\u1320\u1321"+ - "\u0005W\u0000\u0000\u1321\u1322\u0005A\u0000\u0000\u1322\u1323\u0005R"+ - "\u0000\u0000\u1323\u1324\u0005M\u0000\u0000\u1324\u03d6\u0001\u0000\u0000"+ - "\u0000\u1325\u1326\u0005W\u0000\u0000\u1326\u1327\u0005A\u0000\u0000\u1327"+ - "\u1328\u0005R\u0000\u0000\u1328\u1329\u0005N\u0000\u0000\u1329\u132a\u0005"+ - "I\u0000\u0000\u132a\u132b\u0005N\u0000\u0000\u132b\u132c\u0005G\u0000"+ - "\u0000\u132c\u132d\u0005S\u0000\u0000\u132d\u03d8\u0001\u0000\u0000\u0000"+ - "\u132e\u132f\u0005W\u0000\u0000\u132f\u1330\u0005E\u0000\u0000\u1330\u1331"+ - "\u0005E\u0000\u0000\u1331\u1332\u0005K\u0000\u0000\u1332\u03da\u0001\u0000"+ - "\u0000\u0000\u1333\u1334\u0005W\u0000\u0000\u1334\u1335\u0005H\u0000\u0000"+ - "\u1335\u1336\u0005E\u0000\u0000\u1336\u1337\u0005N\u0000\u0000\u1337\u03dc"+ - "\u0001\u0000\u0000\u0000\u1338\u1339\u0005W\u0000\u0000\u1339\u133a\u0005"+ - "H\u0000\u0000\u133a\u133b\u0005E\u0000\u0000\u133b\u133c\u0005R\u0000"+ - "\u0000\u133c\u133d\u0005E\u0000\u0000\u133d\u03de\u0001\u0000\u0000\u0000"+ - "\u133e\u133f\u0005W\u0000\u0000\u133f\u1340\u0005H\u0000\u0000\u1340\u1341"+ - "\u0005I\u0000\u0000\u1341\u1342\u0005T\u0000\u0000\u1342\u1343\u0005E"+ - "\u0000\u0000\u1343\u1344\u0005L\u0000\u0000\u1344\u1345\u0005I\u0000\u0000"+ - "\u1345\u1346\u0005S\u0000\u0000\u1346\u1347\u0005T\u0000\u0000\u1347\u03e0"+ - "\u0001\u0000\u0000\u0000\u1348\u1349\u0005W\u0000\u0000\u1349\u134a\u0005"+ - "I\u0000\u0000\u134a\u134b\u0005T\u0000\u0000\u134b\u134c\u0005H\u0000"+ - "\u0000\u134c\u03e2\u0001\u0000\u0000\u0000\u134d\u134e\u0005W\u0000\u0000"+ - "\u134e\u134f\u0005O\u0000\u0000\u134f\u1350\u0005R\u0000\u0000\u1350\u1351"+ - "\u0005K\u0000\u0000\u1351\u03e4\u0001\u0000\u0000\u0000\u1352\u1353\u0005"+ - "W\u0000\u0000\u1353\u1354\u0005O\u0000\u0000\u1354\u1355\u0005R\u0000"+ - "\u0000\u1355\u1356\u0005K\u0000\u0000\u1356\u1357\u0005L\u0000\u0000\u1357"+ - "\u1358\u0005O\u0000\u0000\u1358\u1359\u0005A\u0000\u0000\u1359\u135a\u0005"+ - "D\u0000\u0000\u135a\u03e6\u0001\u0000\u0000\u0000\u135b\u135c\u0005W\u0000"+ - "\u0000\u135c\u135d\u0005R\u0000\u0000\u135d\u135e\u0005I\u0000\u0000\u135e"+ - "\u135f\u0005T\u0000\u0000\u135f\u1360\u0005E\u0000\u0000\u1360\u03e8\u0001"+ - "\u0000\u0000\u0000\u1361\u1362\u0005X\u0000\u0000\u1362\u1363\u0005O\u0000"+ - "\u0000\u1363\u1364\u0005R\u0000\u0000\u1364\u03ea\u0001\u0000\u0000\u0000"+ - "\u1365\u1366\u0005Y\u0000\u0000\u1366\u1367\u0005E\u0000\u0000\u1367\u1368"+ - "\u0005A\u0000\u0000\u1368\u1369\u0005R\u0000\u0000\u1369\u03ec\u0001\u0000"+ - "\u0000\u0000\u136a\u136e\u0005=\u0000\u0000\u136b\u136c\u0005=\u0000\u0000"+ - "\u136c\u136e\u0005=\u0000\u0000\u136d\u136a\u0001\u0000\u0000\u0000\u136d"+ - "\u136b\u0001\u0000\u0000\u0000\u136e\u03ee\u0001\u0000\u0000\u0000\u136f"+ - "\u1370\u0005<\u0000\u0000\u1370\u1371\u0005=\u0000\u0000\u1371\u1372\u0005"+ - ">\u0000\u0000\u1372\u03f0\u0001\u0000\u0000\u0000\u1373\u1374\u0005<\u0000"+ - "\u0000\u1374\u1378\u0005>\u0000\u0000\u1375\u1376\u0005!\u0000\u0000\u1376"+ - "\u1378\u0005=\u0000\u0000\u1377\u1373\u0001\u0000\u0000\u0000\u1377\u1375"+ - "\u0001\u0000\u0000\u0000\u1378\u03f2\u0001\u0000\u0000\u0000\u1379\u137a"+ - "\u0005<\u0000\u0000\u137a\u03f4\u0001\u0000\u0000\u0000\u137b\u137c\u0005"+ - "<\u0000\u0000\u137c\u1380\u0005=\u0000\u0000\u137d\u137e\u0005!\u0000"+ - "\u0000\u137e\u1380\u0005>\u0000\u0000\u137f\u137b\u0001\u0000\u0000\u0000"+ - "\u137f\u137d\u0001\u0000\u0000\u0000\u1380\u03f6\u0001\u0000\u0000\u0000"+ - "\u1381\u1382\u0005>\u0000\u0000\u1382\u03f8\u0001\u0000\u0000\u0000\u1383"+ - "\u1384\u0005>\u0000\u0000\u1384\u1388\u0005=\u0000\u0000\u1385\u1386\u0005"+ - "!\u0000\u0000\u1386\u1388\u0005<\u0000\u0000\u1387\u1383\u0001\u0000\u0000"+ - "\u0000\u1387\u1385\u0001\u0000\u0000\u0000\u1388\u03fa\u0001\u0000\u0000"+ - "\u0000\u1389\u138a\u0005+\u0000\u0000\u138a\u03fc\u0001\u0000\u0000\u0000"+ - "\u138b\u138c\u0005-\u0000\u0000\u138c\u03fe\u0001\u0000\u0000\u0000\u138d"+ - "\u138e\u0005*\u0000\u0000\u138e\u0400\u0001\u0000\u0000\u0000\u138f\u1390"+ - "\u0005/\u0000\u0000\u1390\u0402\u0001\u0000\u0000\u0000\u1391\u1392\u0005"+ - "%\u0000\u0000\u1392\u0404\u0001\u0000\u0000\u0000\u1393\u1394\u0005~\u0000"+ - "\u0000\u1394\u0406\u0001\u0000\u0000\u0000\u1395\u1396\u0005&\u0000\u0000"+ - "\u1396\u0408\u0001\u0000\u0000\u0000\u1397\u1398\u0005&\u0000\u0000\u1398"+ - "\u1399\u0005&\u0000\u0000\u1399\u040a\u0001\u0000\u0000\u0000\u139a\u139b"+ - "\u0005!\u0000\u0000\u139b\u040c\u0001\u0000\u0000\u0000\u139c\u139d\u0005"+ - "|\u0000\u0000\u139d\u040e\u0001\u0000\u0000\u0000\u139e\u139f\u0005|\u0000"+ - "\u0000\u139f\u13a0\u0005|\u0000\u0000\u13a0\u0410\u0001\u0000\u0000\u0000"+ - "\u13a1\u13a2\u0005^\u0000\u0000\u13a2\u0412\u0001\u0000\u0000\u0000\u13a3"+ - "\u13a4\u0005:\u0000\u0000\u13a4\u0414\u0001\u0000\u0000\u0000\u13a5\u13a6"+ - "\u0005-\u0000\u0000\u13a6\u13a7\u0005>\u0000\u0000\u13a7\u0416\u0001\u0000"+ - "\u0000\u0000\u13a8\u13a9\u0005/\u0000\u0000\u13a9\u13aa\u0005*\u0000\u0000"+ - "\u13aa\u13ab\u0005+\u0000\u0000\u13ab\u0418\u0001\u0000\u0000\u0000\u13ac"+ - "\u13ad\u0005*\u0000\u0000\u13ad\u13ae\u0005/\u0000\u0000\u13ae\u041a\u0001"+ - "\u0000\u0000\u0000\u13af\u13b0\u0005/\u0000\u0000\u13b0\u13b1\u0005*\u0000"+ - "\u0000\u13b1\u041c\u0001\u0000\u0000\u0000\u13b2\u13b3\u0005@\u0000\u0000"+ - "\u13b3\u041e\u0001\u0000\u0000\u0000\u13b4\u13b5\u0005@\u0000\u0000\u13b5"+ - "\u13b6\u0005@\u0000\u0000\u13b6\u0420\u0001\u0000\u0000\u0000\u13b7\u13bf"+ - "\u0005\'\u0000\u0000\u13b8\u13b9\u0005\\\u0000\u0000\u13b9\u13be\t\u0000"+ - "\u0000\u0000\u13ba\u13bb\u0005\'\u0000\u0000\u13bb\u13be\u0005\'\u0000"+ - "\u0000\u13bc\u13be\b\u0000\u0000\u0000\u13bd\u13b8\u0001\u0000\u0000\u0000"+ - "\u13bd\u13ba\u0001\u0000\u0000\u0000\u13bd\u13bc\u0001\u0000\u0000\u0000"+ - "\u13be\u13c1\u0001\u0000\u0000\u0000\u13bf\u13bd\u0001\u0000\u0000\u0000"+ - "\u13bf\u13c0\u0001\u0000\u0000\u0000\u13c0\u13c2\u0001\u0000\u0000\u0000"+ - "\u13c1\u13bf\u0001\u0000\u0000\u0000\u13c2\u13e4\u0005\'\u0000\u0000\u13c3"+ - "\u13cb\u0005\"\u0000\u0000\u13c4\u13c5\u0005\\\u0000\u0000\u13c5\u13ca"+ - "\t\u0000\u0000\u0000\u13c6\u13c7\u0005\"\u0000\u0000\u13c7\u13ca\u0005"+ - "\"\u0000\u0000\u13c8\u13ca\b\u0001\u0000\u0000\u13c9\u13c4\u0001\u0000"+ - "\u0000\u0000\u13c9\u13c6\u0001\u0000\u0000\u0000\u13c9\u13c8\u0001\u0000"+ - "\u0000\u0000\u13ca\u13cd\u0001\u0000\u0000\u0000\u13cb\u13c9\u0001\u0000"+ - "\u0000\u0000\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13ce\u0001\u0000"+ - "\u0000\u0000\u13cd\u13cb\u0001\u0000\u0000\u0000\u13ce\u13e4\u0005\"\u0000"+ - "\u0000\u13cf\u13d0\u0005R\u0000\u0000\u13d0\u13d1\u0005\'\u0000\u0000"+ - "\u13d1\u13d5\u0001\u0000\u0000\u0000\u13d2\u13d4\b\u0002\u0000\u0000\u13d3"+ - "\u13d2\u0001\u0000\u0000\u0000\u13d4\u13d7\u0001\u0000\u0000\u0000\u13d5"+ - "\u13d3\u0001\u0000\u0000\u0000\u13d5\u13d6\u0001\u0000\u0000\u0000\u13d6"+ - "\u13d8\u0001\u0000\u0000\u0000\u13d7\u13d5\u0001\u0000\u0000\u0000\u13d8"+ - "\u13e4\u0005\'\u0000\u0000\u13d9\u13da\u0005R\u0000\u0000\u13da\u13db"+ - "\u0005\"\u0000\u0000\u13db\u13df\u0001\u0000\u0000\u0000\u13dc\u13de\b"+ - "\u0003\u0000\u0000\u13dd\u13dc\u0001\u0000\u0000\u0000\u13de\u13e1\u0001"+ - "\u0000\u0000\u0000\u13df\u13dd\u0001\u0000\u0000\u0000\u13df\u13e0\u0001"+ - "\u0000\u0000\u0000\u13e0\u13e2\u0001\u0000\u0000\u0000\u13e1\u13df\u0001"+ - "\u0000\u0000\u0000\u13e2\u13e4\u0005\"\u0000\u0000\u13e3\u13b7\u0001\u0000"+ - "\u0000\u0000\u13e3\u13c3\u0001\u0000\u0000\u0000\u13e3\u13cf\u0001\u0000"+ - "\u0000\u0000\u13e3\u13d9\u0001\u0000\u0000\u0000\u13e4\u0422\u0001\u0000"+ - "\u0000\u0000\u13e5\u13ea\u0003\u0011\b\u0000\u13e6\u13ea\u0003\u0013\t"+ - "\u0000\u13e7\u13ea\u0003\r\u0006\u0000\u13e8\u13ea\u0003\u000f\u0007\u0000"+ - "\u13e9\u13e5\u0001\u0000\u0000\u0000\u13e9\u13e6\u0001\u0000\u0000\u0000"+ - "\u13e9\u13e7\u0001\u0000\u0000\u0000\u13e9\u13e8\u0001\u0000\u0000\u0000"+ - "\u13ea\u0424\u0001\u0000\u0000\u0000\u13eb\u13ed\u0003\u043b\u021d\u0000"+ - "\u13ec\u13eb\u0001\u0000\u0000\u0000\u13ed\u13ee\u0001\u0000\u0000\u0000"+ - "\u13ee\u13ec\u0001\u0000\u0000\u0000\u13ee\u13ef\u0001\u0000\u0000\u0000"+ - "\u13ef\u13f0\u0001\u0000\u0000\u0000\u13f0\u13f1\u0005L\u0000\u0000\u13f1"+ - "\u0426\u0001\u0000\u0000\u0000\u13f2\u13f4\u0003\u043b\u021d\u0000\u13f3"+ - "\u13f2\u0001\u0000\u0000\u0000\u13f4\u13f5\u0001\u0000\u0000\u0000\u13f5"+ - "\u13f3\u0001\u0000\u0000\u0000\u13f5\u13f6\u0001\u0000\u0000\u0000\u13f6"+ - "\u13f7\u0001\u0000\u0000\u0000\u13f7\u13f8\u0005S\u0000\u0000\u13f8\u0428"+ - "\u0001\u0000\u0000\u0000\u13f9\u13fb\u0003\u043b\u021d\u0000\u13fa\u13f9"+ - "\u0001\u0000\u0000\u0000\u13fb\u13fc\u0001\u0000\u0000\u0000\u13fc\u13fa"+ - "\u0001\u0000\u0000\u0000\u13fc\u13fd\u0001\u0000\u0000\u0000\u13fd\u13fe"+ - "\u0001\u0000\u0000\u0000\u13fe\u13ff\u0005Y\u0000\u0000\u13ff\u042a\u0001"+ - "\u0000\u0000\u0000\u1400\u1402\u0003\u043b\u021d\u0000\u1401\u1400\u0001"+ - "\u0000\u0000\u0000\u1402\u1403\u0001\u0000\u0000\u0000\u1403\u1401\u0001"+ - "\u0000\u0000\u0000\u1403\u1404\u0001\u0000\u0000\u0000\u1404\u042c\u0001"+ - "\u0000\u0000\u0000\u1405\u1407\u0003\u043b\u021d\u0000\u1406\u1405\u0001"+ - "\u0000\u0000\u0000\u1407\u1408\u0001\u0000\u0000\u0000\u1408\u1406\u0001"+ - "\u0000\u0000\u0000\u1408\u1409\u0001\u0000\u0000\u0000\u1409\u140a\u0001"+ - "\u0000\u0000\u0000\u140a\u140b\u0003\u0439\u021c\u0000\u140b\u1411\u0001"+ - "\u0000\u0000\u0000\u140c\u140d\u0003\u0437\u021b\u0000\u140d\u140e\u0003"+ - "\u0439\u021c\u0000\u140e\u140f\u0004\u0216\u0000\u0000\u140f\u1411\u0001"+ - "\u0000\u0000\u0000\u1410\u1406\u0001\u0000\u0000\u0000\u1410\u140c\u0001"+ - "\u0000\u0000\u0000\u1411\u042e\u0001\u0000\u0000\u0000\u1412\u1413\u0003"+ - "\u0437\u021b\u0000\u1413\u1414\u0004\u0217\u0001\u0000\u1414\u0430\u0001"+ - "\u0000\u0000\u0000\u1415\u1417\u0003\u043b\u021d\u0000\u1416\u1415\u0001"+ - "\u0000\u0000\u0000\u1417\u1418\u0001\u0000\u0000\u0000\u1418\u1416\u0001"+ - "\u0000\u0000\u0000\u1418\u1419\u0001\u0000\u0000\u0000\u1419\u141b\u0001"+ - "\u0000\u0000\u0000\u141a\u141c\u0003\u0439\u021c\u0000\u141b\u141a\u0001"+ - "\u0000\u0000\u0000\u141b\u141c\u0001\u0000\u0000\u0000\u141c\u141d\u0001"+ - "\u0000\u0000\u0000\u141d\u141e\u0005B\u0000\u0000\u141e\u141f\u0005D\u0000"+ - "\u0000\u141f\u142a\u0001\u0000\u0000\u0000\u1420\u1422\u0003\u0437\u021b"+ - "\u0000\u1421\u1423\u0003\u0439\u021c\u0000\u1422\u1421\u0001\u0000\u0000"+ - "\u0000\u1422\u1423\u0001\u0000\u0000\u0000\u1423\u1424\u0001\u0000\u0000"+ - "\u0000\u1424\u1425\u0005B\u0000\u0000\u1425\u1426\u0005D\u0000\u0000\u1426"+ - "\u1427\u0001\u0000\u0000\u0000\u1427\u1428\u0004\u0218\u0002\u0000\u1428"+ - "\u142a\u0001\u0000\u0000\u0000\u1429\u1416\u0001\u0000\u0000\u0000\u1429"+ - "\u1420\u0001\u0000\u0000\u0000\u142a\u0432\u0001\u0000\u0000\u0000\u142b"+ - "\u142f\u0003\u043d\u021e\u0000\u142c\u142f\u0003\u043b\u021d\u0000\u142d"+ - "\u142f\u0005_\u0000\u0000\u142e\u142b\u0001\u0000\u0000\u0000\u142e\u142c"+ - "\u0001\u0000\u0000\u0000\u142e\u142d\u0001\u0000\u0000\u0000\u142f\u1430"+ - "\u0001\u0000\u0000\u0000\u1430\u142e\u0001\u0000\u0000\u0000\u1430\u1431"+ - "\u0001\u0000\u0000\u0000\u1431\u0434\u0001\u0000\u0000\u0000\u1432\u1438"+ - "\u0005`\u0000\u0000\u1433\u1437\b\u0004\u0000\u0000\u1434\u1435\u0005"+ - "`\u0000\u0000\u1435\u1437\u0005`\u0000\u0000\u1436\u1433\u0001\u0000\u0000"+ - "\u0000\u1436\u1434\u0001\u0000\u0000\u0000\u1437\u143a\u0001\u0000\u0000"+ - "\u0000\u1438\u1436\u0001\u0000\u0000\u0000\u1438\u1439\u0001\u0000\u0000"+ - "\u0000\u1439\u143b\u0001\u0000\u0000\u0000\u143a\u1438\u0001\u0000\u0000"+ - "\u0000\u143b\u143c\u0005`\u0000\u0000\u143c\u0436\u0001\u0000\u0000\u0000"+ - "\u143d\u143f\u0003\u043b\u021d\u0000\u143e\u143d\u0001\u0000\u0000\u0000"+ - "\u143f\u1440\u0001\u0000\u0000\u0000\u1440\u143e\u0001\u0000\u0000\u0000"+ - "\u1440\u1441\u0001\u0000\u0000\u0000\u1441\u1442\u0001\u0000\u0000\u0000"+ - "\u1442\u1446\u0005.\u0000\u0000\u1443\u1445\u0003\u043b\u021d\u0000\u1444"+ - "\u1443\u0001\u0000\u0000\u0000\u1445\u1448\u0001\u0000\u0000\u0000\u1446"+ - "\u1444\u0001\u0000\u0000\u0000\u1446\u1447\u0001\u0000\u0000\u0000\u1447"+ - "\u1450\u0001\u0000\u0000\u0000\u1448\u1446\u0001\u0000\u0000\u0000\u1449"+ - "\u144b\u0005.\u0000\u0000\u144a\u144c\u0003\u043b\u021d\u0000\u144b\u144a"+ - "\u0001\u0000\u0000\u0000\u144c\u144d\u0001\u0000\u0000\u0000\u144d\u144b"+ - "\u0001\u0000\u0000\u0000\u144d\u144e\u0001\u0000\u0000\u0000\u144e\u1450"+ - "\u0001\u0000\u0000\u0000\u144f\u143e\u0001\u0000\u0000\u0000\u144f\u1449"+ - "\u0001\u0000\u0000\u0000\u1450\u0438\u0001\u0000\u0000\u0000\u1451\u1453"+ - "\u0005E\u0000\u0000\u1452\u1454\u0007\u0005\u0000\u0000\u1453\u1452\u0001"+ - "\u0000\u0000\u0000\u1453\u1454\u0001\u0000\u0000\u0000\u1454\u1456\u0001"+ - "\u0000\u0000\u0000\u1455\u1457\u0003\u043b\u021d\u0000\u1456\u1455\u0001"+ - "\u0000\u0000\u0000\u1457\u1458\u0001\u0000\u0000\u0000\u1458\u1456\u0001"+ - "\u0000\u0000\u0000\u1458\u1459\u0001\u0000\u0000\u0000\u1459\u043a\u0001"+ - "\u0000\u0000\u0000\u145a\u145b\u0007\u0006\u0000\u0000\u145b\u043c\u0001"+ - "\u0000\u0000\u0000\u145c\u1461\u0007\u0007\u0000\u0000\u145d\u1461\b\b"+ - "\u0000\u0000\u145e\u145f\u0007\t\u0000\u0000\u145f\u1461\u0007\n\u0000"+ - "\u0000\u1460\u145c\u0001\u0000\u0000\u0000\u1460\u145d\u0001\u0000\u0000"+ - "\u0000\u1460\u145e\u0001\u0000\u0000\u0000\u1461\u043e\u0001\u0000\u0000"+ - "\u0000\u1462\u1463\u0005-\u0000\u0000\u1463\u1464\u0005-\u0000\u0000\u1464"+ - "\u146a\u0001\u0000\u0000\u0000\u1465\u1466\u0005\\\u0000\u0000\u1466\u1469"+ - "\u0005\n\u0000\u0000\u1467\u1469\b\u000b\u0000\u0000\u1468\u1465\u0001"+ - "\u0000\u0000\u0000\u1468\u1467\u0001\u0000\u0000\u0000\u1469\u146c\u0001"+ - "\u0000\u0000\u0000\u146a\u1468\u0001\u0000\u0000\u0000\u146a\u146b\u0001"+ - "\u0000\u0000\u0000\u146b\u146e\u0001\u0000\u0000\u0000\u146c\u146a\u0001"+ - "\u0000\u0000\u0000\u146d\u146f\u0005\r\u0000\u0000\u146e\u146d\u0001\u0000"+ - "\u0000\u0000\u146e\u146f\u0001\u0000\u0000\u0000\u146f\u1471\u0001\u0000"+ - "\u0000\u0000\u1470\u1472\u0005\n\u0000\u0000\u1471\u1470\u0001\u0000\u0000"+ - "\u0000\u1471\u1472\u0001\u0000\u0000\u0000\u1472\u1473\u0001\u0000\u0000"+ - "\u0000\u1473\u1474\u0006\u021f\u0000\u0000\u1474\u0440\u0001\u0000\u0000"+ - "\u0000\u1475\u147a\u0003\u041b\u020d\u0000\u1476\u1479\u0003\u0441\u0220"+ - "\u0000\u1477\u1479\t\u0000\u0000\u0000\u1478\u1476\u0001\u0000\u0000\u0000"+ - "\u1478\u1477\u0001\u0000\u0000\u0000\u1479\u147c\u0001\u0000\u0000\u0000"+ - "\u147a\u147b\u0001\u0000\u0000\u0000\u147a\u1478\u0001\u0000\u0000\u0000"+ - "\u147b\u1481\u0001\u0000\u0000\u0000\u147c\u147a\u0001\u0000\u0000\u0000"+ - "\u147d\u147e\u0005*\u0000\u0000\u147e\u1482\u0005/\u0000\u0000\u147f\u1480"+ - "\u0006\u0220\u0001\u0000\u1480\u1482\u0005\u0000\u0000\u0001\u1481\u147d"+ - "\u0001\u0000\u0000\u0000\u1481\u147f\u0001\u0000\u0000\u0000\u1482\u1483"+ - "\u0001\u0000\u0000\u0000\u1483\u1484\u0006\u0220\u0002\u0000\u1484\u0442"+ - "\u0001\u0000\u0000\u0000\u1485\u1486\u0005F\u0000\u0000\u1486\u1487\u0005"+ - "R\u0000\u0000\u1487\u1488\u0005O\u0000\u0000\u1488\u1489\u0005M\u0000"+ - "\u0000\u1489\u148b\u0001\u0000\u0000\u0000\u148a\u148c\u0003\u0445\u0222"+ - "\u0000\u148b\u148a\u0001\u0000\u0000\u0000\u148c\u148d\u0001\u0000\u0000"+ - "\u0000\u148d\u148b\u0001\u0000\u0000\u0000\u148d\u148e\u0001\u0000\u0000"+ - "\u0000\u148e\u148f\u0001\u0000\u0000\u0000\u148f\u1490\u0005D\u0000\u0000"+ - "\u1490\u1491\u0005U\u0000\u0000\u1491\u1492\u0005A\u0000\u0000\u1492\u1493"+ - "\u0005L\u0000\u0000\u1493\u1494\u0001\u0000\u0000\u0000\u1494\u1495\u0006"+ - "\u0221\u0000\u0000\u1495\u0444\u0001\u0000"; - private static final String _serializedATNSegment2 = - "\u0000\u0000\u1496\u1498\u0007\f\u0000\u0000\u1497\u1496\u0001\u0000\u0000"+ - "\u0000\u1498\u1499\u0001\u0000\u0000\u0000\u1499\u1497\u0001\u0000\u0000"+ - "\u0000\u1499\u149a\u0001\u0000\u0000\u0000\u149a\u149b\u0001\u0000\u0000"+ - "\u0000\u149b\u149c\u0006\u0222\u0000\u0000\u149c\u0446\u0001\u0000\u0000"+ - "\u0000\u149d\u149e\t\u0000\u0000\u0000\u149e\u0448\u0001\u0000\u0000\u0000"+ - ",\u0000\u0605\u136d\u1377\u137f\u1387\u13bd\u13bf\u13c9\u13cb\u13d5\u13df"+ - "\u13e3\u13e9\u13ee\u13f5\u13fc\u1403\u1408\u1410\u1418\u141b\u1422\u1429"+ - "\u142e\u1430\u1436\u1438\u1440\u1446\u144d\u144f\u1453\u1458\u1460\u1468"+ - "\u146a\u146e\u1471\u1478\u147a\u1481\u148d\u1499\u0003\u0000\u0001\u0000"+ - "\u0001\u0220\u0000\u0000\u0002\u0000"; - public static final String _serializedATN = Utils.join( - new String[] { - _serializedATNSegment0, - _serializedATNSegment1, - _serializedATNSegment2 - }, - "" - ); - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens deleted file mode 100644 index aca045377c7e08..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisLexer.tokens +++ /dev/null @@ -1,1067 +0,0 @@ -SEMICOLON=1 -LEFT_PAREN=2 -RIGHT_PAREN=3 -COMMA=4 -DOT=5 -DOTDOTDOT=6 -LEFT_BRACKET=7 -RIGHT_BRACKET=8 -LEFT_BRACE=9 -RIGHT_BRACE=10 -ACCOUNT_LOCK=11 -ACCOUNT_UNLOCK=12 -ACTIONS=13 -ADD=14 -ADMIN=15 -AFTER=16 -AGG_STATE=17 -AGGREGATE=18 -ALIAS=19 -ALL=20 -ALTER=21 -ANALYZE=22 -ANALYZED=23 -AND=24 -ANTI=25 -APPEND=26 -ARRAY=27 -AS=28 -ASC=29 -AT=30 -AUTHORS=31 -AUTO=32 -AUTO_INCREMENT=33 -ALWAYS=34 -BACKEND=35 -BACKENDS=36 -BACKUP=37 -BEGIN=38 -BELONG=39 -BETWEEN=40 -BIGINT=41 -BIN=42 -BINARY=43 -BINLOG=44 -BITAND=45 -BITMAP=46 -BITMAP_EMPTY=47 -BITMAP_UNION=48 -BITOR=49 -BITXOR=50 -BLOB=51 -BOOLEAN=52 -BRIEF=53 -BROKER=54 -BUCKETS=55 -BUILD=56 -BUILTIN=57 -BULK=58 -BY=59 -CACHE=60 -CACHED=61 -CALL=62 -CANCEL=63 -CASE=64 -CAST=65 -CATALOG=66 -CATALOGS=67 -CHAIN=68 -CHAR=69 -CHARSET=70 -CHECK=71 -CLEAN=72 -CLUSTER=73 -CLUSTERS=74 -COLLATE=75 -COLLATION=76 -COLLECT=77 -COLOCATE=78 -COLUMN=79 -COLUMNS=80 -COMMENT=81 -COMMIT=82 -COMMITTED=83 -COMPACT=84 -COMPLETE=85 -COMPRESS_TYPE=86 -COMPUTE=87 -CONDITIONS=88 -CONFIG=89 -CONNECTION=90 -CONNECTION_ID=91 -CONSISTENT=92 -CONSTRAINT=93 -CONSTRAINTS=94 -CONVERT=95 -CONVERT_LSC=96 -COPY=97 -COUNT=98 -CREATE=99 -CREATION=100 -CRON=101 -CROSS=102 -CUBE=103 -CURRENT=104 -CURRENT_CATALOG=105 -CURRENT_DATE=106 -CURRENT_TIME=107 -CURRENT_TIMESTAMP=108 -CURRENT_USER=109 -DATA=110 -DATABASE=111 -DATABASES=112 -DATE=113 -DATETIME=114 -DATETIMEV2=115 -DATEV2=116 -DATETIMEV1=117 -DATEV1=118 -DAY=119 -DECIMAL=120 -DECIMALV2=121 -DECIMALV3=122 -DECOMMISSION=123 -DEFAULT=124 -DEFERRED=125 -DELETE=126 -DEMAND=127 -DESC=128 -DESCRIBE=129 -DIAGNOSE=130 -DIAGNOSIS=131 -DISK=132 -DISTINCT=133 -DISTINCTPC=134 -DISTINCTPCSA=135 -DISTRIBUTED=136 -DISTRIBUTION=137 -DIV=138 -DO=139 -DORIS_INTERNAL_TABLE_ID=140 -DOUBLE=141 -DROP=142 -DROPP=143 -DUAL=144 -DUMP=145 -DUPLICATE=146 -DYNAMIC=147 -E=148 -ELSE=149 -ENABLE=150 -ENCRYPTKEY=151 -ENCRYPTKEYS=152 -END=153 -ENDS=154 -ENGINE=155 -ENGINES=156 -ENTER=157 -ERRORS=158 -EVENTS=159 -EVERY=160 -EXCEPT=161 -EXCLUDE=162 -EXECUTE=163 -EXISTS=164 -EXPIRED=165 -EXPLAIN=166 -EXPORT=167 -EXTENDED=168 -EXTERNAL=169 -EXTRACT=170 -FAILED_LOGIN_ATTEMPTS=171 -FALSE=172 -FAST=173 -FEATURE=174 -FIELDS=175 -FILE=176 -FILTER=177 -FIRST=178 -FLOAT=179 -FOLLOWER=180 -FOLLOWING=181 -FOR=182 -FOREIGN=183 -FORCE=184 -FORMAT=185 -FREE=186 -FROM=187 -FRONTEND=188 -FRONTENDS=189 -FULL=190 -FUNCTION=191 -FUNCTIONS=192 -GENERATED=193 -GENERIC=194 -GLOBAL=195 -GRANT=196 -GRANTS=197 -GRAPH=198 -GROUP=199 -GROUPING=200 -GROUPS=201 -HASH=202 -HAVING=203 -HDFS=204 -HELP=205 -HISTOGRAM=206 -HLL=207 -HLL_UNION=208 -HOSTNAME=209 -HOTSPOT=210 -HOUR=211 -HUB=212 -IDENTIFIED=213 -IF=214 -IGNORE=215 -IMMEDIATE=216 -IN=217 -INCREMENTAL=218 -INDEX=219 -INDEXES=220 -INFILE=221 -INNER=222 -INSERT=223 -INSTALL=224 -INT=225 -INTEGER=226 -INTERMEDIATE=227 -INTERSECT=228 -INTERVAL=229 -INTO=230 -INVERTED=231 -IPV4=232 -IPV6=233 -IS=234 -IS_NOT_NULL_PRED=235 -IS_NULL_PRED=236 -ISNULL=237 -ISOLATION=238 -JOB=239 -JOBS=240 -JOIN=241 -JSON=242 -JSONB=243 -KEY=244 -KEYS=245 -KILL=246 -LABEL=247 -LARGEINT=248 -LAST=249 -LATERAL=250 -LDAP=251 -LDAP_ADMIN_PASSWORD=252 -LEFT=253 -LESS=254 -LEVEL=255 -LIKE=256 -LIMIT=257 -LINES=258 -LINK=259 -LIST=260 -LOAD=261 -LOCAL=262 -LOCALTIME=263 -LOCALTIMESTAMP=264 -LOCATION=265 -LOCK=266 -LOGICAL=267 -LOW_PRIORITY=268 -MANUAL=269 -MAP=270 -MATCH=271 -MATCH_ALL=272 -MATCH_ANY=273 -MATCH_PHRASE=274 -MATCH_PHRASE_EDGE=275 -MATCH_PHRASE_PREFIX=276 -MATCH_REGEXP=277 -MATCH_NAME=278 -MATCH_NAME_GLOB=279 -MATERIALIZED=280 -MAX=281 -MAXVALUE=282 -MEMO=283 -MERGE=284 -MIGRATE=285 -MIGRATIONS=286 -MIN=287 -MINUS=288 -MINUTE=289 -MODIFY=290 -MONTH=291 -MTMV=292 -NAME=293 -NAMES=294 -NATURAL=295 -NEGATIVE=296 -NEVER=297 -NEXT=298 -NGRAM_BF=299 -NO=300 -NO_USE_MV=301 -NON_NULLABLE=302 -NOT=303 -NULL=304 -NULLS=305 -OBSERVER=306 -OF=307 -OFFSET=308 -ON=309 -ONLY=310 -OPEN=311 -OPTIMIZED=312 -OR=313 -ORDER=314 -OUTER=315 -OUTFILE=316 -OVER=317 -OVERWRITE=318 -PARAMETER=319 -PARSED=320 -PARTITION=321 -PARTITIONS=322 -PASSWORD=323 -PASSWORD_EXPIRE=324 -PASSWORD_HISTORY=325 -PASSWORD_LOCK_TIME=326 -PASSWORD_REUSE=327 -PATH=328 -PAUSE=329 -PERCENT=330 -PERIOD=331 -PERMISSIVE=332 -PHYSICAL=333 -PI=334 -PLACEHOLDER=335 -PLAN=336 -PLAY=337 -PRIVILEGES=338 -PROCESS=339 -PLUGIN=340 -PLUGINS=341 -POLICY=342 -PRECEDING=343 -PREPARE=344 -PRIMARY=345 -PROC=346 -PROCEDURE=347 -PROCESSLIST=348 -PROFILE=349 -PROPERTIES=350 -PROPERTY=351 -QUANTILE_STATE=352 -QUANTILE_UNION=353 -QUERY=354 -QUEUED=355 -QUOTA=356 -QUALIFY=357 -QUARTER=358 -RANDOM=359 -RANGE=360 -READ=361 -REAL=362 -REBALANCE=363 -RECENT=364 -RECOVER=365 -RECYCLE=366 -REFRESH=367 -REFERENCES=368 -REGEXP=369 -RELEASE=370 -RENAME=371 -REPAIR=372 -REPEATABLE=373 -REPLACE=374 -REPLACE_IF_NOT_NULL=375 -REPLAYER=376 -REPLICA=377 -REPOSITORIES=378 -REPOSITORY=379 -RESOURCE=380 -RESOURCES=381 -RESTORE=382 -RESTRICTIVE=383 -RESUME=384 -RETURNS=385 -REVOKE=386 -REWRITTEN=387 -RIGHT=388 -RLIKE=389 -ROLE=390 -ROLES=391 -ROLLBACK=392 -ROLLUP=393 -ROUTINE=394 -ROW=395 -ROWS=396 -S3=397 -SAMPLE=398 -SCHEDULE=399 -SCHEDULER=400 -SCHEMA=401 -SCHEMAS=402 -SECOND=403 -SELECT=404 -SEMI=405 -SERIALIZABLE=406 -SESSION=407 -SESSION_USER=408 -SET=409 -SETS=410 -SET_SESSION_VARIABLE=411 -SHAPE=412 -SHOW=413 -SIGNED=414 -SKEW=415 -SMALLINT=416 -SNAPSHOT=417 -SONAME=418 -SPLIT=419 -SQL=420 -SQL_BLOCK_RULE=421 -STAGE=422 -STAGES=423 -START=424 -STARTS=425 -STATS=426 -STATUS=427 -STOP=428 -STORAGE=429 -STREAM=430 -STREAMING=431 -STRING=432 -STRUCT=433 -SUM=434 -SUPERUSER=435 -SWITCH=436 -SYNC=437 -SYSTEM=438 -TABLE=439 -TABLES=440 -TABLESAMPLE=441 -TABLET=442 -TABLETS=443 -TASK=444 -TASKS=445 -TEMPORARY=446 -TERMINATED=447 -TEXT=448 -THAN=449 -THEN=450 -TIME=451 -TIMESTAMP=452 -TINYINT=453 -TO=454 -TRANSACTION=455 -TRASH=456 -TREE=457 -TRIGGERS=458 -TRIM=459 -TRUE=460 -TRUNCATE=461 -TYPE=462 -TYPECAST=463 -TYPES=464 -UNBOUNDED=465 -UNCOMMITTED=466 -UNINSTALL=467 -UNION=468 -UNIQUE=469 -UNLOCK=470 -UNSET=471 -UNSIGNED=472 -UP=473 -UPDATE=474 -USE=475 -USER=476 -USE_MV=477 -USING=478 -VALUE=479 -VALUES=480 -VARCHAR=481 -VARIABLE=482 -VARIABLES=483 -VARIANT=484 -VAULT=485 -VAULTS=486 -VERBOSE=487 -VERSION=488 -VIEW=489 -VIEWS=490 -WARM=491 -WARNINGS=492 -WEEK=493 -WHEN=494 -WHERE=495 -WHITELIST=496 -WITH=497 -WORK=498 -WORKLOAD=499 -WRITE=500 -XOR=501 -YEAR=502 -EQ=503 -NSEQ=504 -NEQ=505 -LT=506 -LTE=507 -GT=508 -GTE=509 -PLUS=510 -SUBTRACT=511 -ASTERISK=512 -SLASH=513 -MOD=514 -TILDE=515 -AMPERSAND=516 -LOGICALAND=517 -LOGICALNOT=518 -PIPE=519 -DOUBLEPIPES=520 -HAT=521 -COLON=522 -ARROW=523 -HINT_START=524 -HINT_END=525 -COMMENT_START=526 -ATSIGN=527 -DOUBLEATSIGN=528 -STRING_LITERAL=529 -LEADING_STRING=530 -BIGINT_LITERAL=531 -SMALLINT_LITERAL=532 -TINYINT_LITERAL=533 -INTEGER_VALUE=534 -EXPONENT_VALUE=535 -DECIMAL_VALUE=536 -BIGDECIMAL_LITERAL=537 -IDENTIFIER=538 -BACKQUOTED_IDENTIFIER=539 -SIMPLE_COMMENT=540 -BRACKETED_COMMENT=541 -FROM_DUAL=542 -WS=543 -UNRECOGNIZED=544 -';'=1 -'('=2 -')'=3 -','=4 -'.'=5 -'...'=6 -'['=7 -']'=8 -'{'=9 -'}'=10 -'ACCOUNT_LOCK'=11 -'ACCOUNT_UNLOCK'=12 -'ACTIONS'=13 -'ADD'=14 -'ADMIN'=15 -'AFTER'=16 -'AGG_STATE'=17 -'AGGREGATE'=18 -'ALIAS'=19 -'ALL'=20 -'ALTER'=21 -'ANALYZE'=22 -'ANALYZED'=23 -'AND'=24 -'ANTI'=25 -'APPEND'=26 -'ARRAY'=27 -'AS'=28 -'ASC'=29 -'AT'=30 -'AUTHORS'=31 -'AUTO'=32 -'AUTO_INCREMENT'=33 -'ALWAYS'=34 -'BACKEND'=35 -'BACKENDS'=36 -'BACKUP'=37 -'BEGIN'=38 -'BELONG'=39 -'BETWEEN'=40 -'BIGINT'=41 -'BIN'=42 -'BINARY'=43 -'BINLOG'=44 -'BITAND'=45 -'BITMAP'=46 -'BITMAP_EMPTY'=47 -'BITMAP_UNION'=48 -'BITOR'=49 -'BITXOR'=50 -'BLOB'=51 -'BOOLEAN'=52 -'BRIEF'=53 -'BROKER'=54 -'BUCKETS'=55 -'BUILD'=56 -'BUILTIN'=57 -'BULK'=58 -'BY'=59 -'CACHE'=60 -'CACHED'=61 -'CALL'=62 -'CANCEL'=63 -'CASE'=64 -'CAST'=65 -'CATALOG'=66 -'CATALOGS'=67 -'CHAIN'=68 -'CHARSET'=70 -'CHECK'=71 -'CLEAN'=72 -'CLUSTER'=73 -'CLUSTERS'=74 -'COLLATE'=75 -'COLLATION'=76 -'COLLECT'=77 -'COLOCATE'=78 -'COLUMN'=79 -'COLUMNS'=80 -'COMMENT'=81 -'COMMIT'=82 -'COMMITTED'=83 -'COMPACT'=84 -'COMPLETE'=85 -'COMPRESS_TYPE'=86 -'COMPUTE'=87 -'CONDITIONS'=88 -'CONFIG'=89 -'CONNECTION'=90 -'CONNECTION_ID'=91 -'CONSISTENT'=92 -'CONSTRAINT'=93 -'CONSTRAINTS'=94 -'CONVERT'=95 -'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'=96 -'COPY'=97 -'COUNT'=98 -'CREATE'=99 -'CREATION'=100 -'CRON'=101 -'CROSS'=102 -'CUBE'=103 -'CURRENT'=104 -'CURRENT_CATALOG'=105 -'CURRENT_DATE'=106 -'CURRENT_TIME'=107 -'CURRENT_TIMESTAMP'=108 -'CURRENT_USER'=109 -'DATA'=110 -'DATABASE'=111 -'DATABASES'=112 -'DATE'=113 -'DATETIME'=114 -'DATETIMEV2'=115 -'DATEV2'=116 -'DATETIMEV1'=117 -'DATEV1'=118 -'DAY'=119 -'DECIMAL'=120 -'DECIMALV2'=121 -'DECIMALV3'=122 -'DECOMMISSION'=123 -'DEFAULT'=124 -'DEFERRED'=125 -'DELETE'=126 -'DEMAND'=127 -'DESC'=128 -'DESCRIBE'=129 -'DIAGNOSE'=130 -'DIAGNOSIS'=131 -'DISK'=132 -'DISTINCT'=133 -'DISTINCTPC'=134 -'DISTINCTPCSA'=135 -'DISTRIBUTED'=136 -'DISTRIBUTION'=137 -'DIV'=138 -'DO'=139 -'DORIS_INTERNAL_TABLE_ID'=140 -'DOUBLE'=141 -'DROP'=142 -'DROPP'=143 -'DUAL'=144 -'DUMP'=145 -'DUPLICATE'=146 -'DYNAMIC'=147 -'E'=148 -'ELSE'=149 -'ENABLE'=150 -'ENCRYPTKEY'=151 -'ENCRYPTKEYS'=152 -'END'=153 -'ENDS'=154 -'ENGINE'=155 -'ENGINES'=156 -'ENTER'=157 -'ERRORS'=158 -'EVENTS'=159 -'EVERY'=160 -'EXCEPT'=161 -'EXCLUDE'=162 -'EXECUTE'=163 -'EXISTS'=164 -'EXPIRED'=165 -'EXPLAIN'=166 -'EXPORT'=167 -'EXTENDED'=168 -'EXTERNAL'=169 -'EXTRACT'=170 -'FAILED_LOGIN_ATTEMPTS'=171 -'FALSE'=172 -'FAST'=173 -'FEATURE'=174 -'FIELDS'=175 -'FILE'=176 -'FILTER'=177 -'FIRST'=178 -'FLOAT'=179 -'FOLLOWER'=180 -'FOLLOWING'=181 -'FOR'=182 -'FOREIGN'=183 -'FORCE'=184 -'FORMAT'=185 -'FREE'=186 -'FROM'=187 -'FRONTEND'=188 -'FRONTENDS'=189 -'FULL'=190 -'FUNCTION'=191 -'FUNCTIONS'=192 -'GENERATED'=193 -'GENERIC'=194 -'GLOBAL'=195 -'GRANT'=196 -'GRANTS'=197 -'GRAPH'=198 -'GROUP'=199 -'GROUPING'=200 -'GROUPS'=201 -'HASH'=202 -'HAVING'=203 -'HDFS'=204 -'HELP'=205 -'HISTOGRAM'=206 -'HLL'=207 -'HLL_UNION'=208 -'HOSTNAME'=209 -'HOTSPOT'=210 -'HOUR'=211 -'HUB'=212 -'IDENTIFIED'=213 -'IF'=214 -'IGNORE'=215 -'IMMEDIATE'=216 -'IN'=217 -'INCREMENTAL'=218 -'INDEX'=219 -'INDEXES'=220 -'INFILE'=221 -'INNER'=222 -'INSERT'=223 -'INSTALL'=224 -'INT'=225 -'INTEGER'=226 -'INTERMEDIATE'=227 -'INTERSECT'=228 -'INTERVAL'=229 -'INTO'=230 -'INVERTED'=231 -'IPV4'=232 -'IPV6'=233 -'IS'=234 -'IS_NOT_NULL_PRED'=235 -'IS_NULL_PRED'=236 -'ISNULL'=237 -'ISOLATION'=238 -'JOB'=239 -'JOBS'=240 -'JOIN'=241 -'JSON'=242 -'JSONB'=243 -'KEY'=244 -'KEYS'=245 -'KILL'=246 -'LABEL'=247 -'LARGEINT'=248 -'LAST'=249 -'LATERAL'=250 -'LDAP'=251 -'LDAP_ADMIN_PASSWORD'=252 -'LEFT'=253 -'LESS'=254 -'LEVEL'=255 -'LIKE'=256 -'LIMIT'=257 -'LINES'=258 -'LINK'=259 -'LIST'=260 -'LOAD'=261 -'LOCAL'=262 -'LOCALTIME'=263 -'LOCALTIMESTAMP'=264 -'LOCATION'=265 -'LOCK'=266 -'LOGICAL'=267 -'LOW_PRIORITY'=268 -'MANUAL'=269 -'MAP'=270 -'MATCH'=271 -'MATCH_ALL'=272 -'MATCH_ANY'=273 -'MATCH_PHRASE'=274 -'MATCH_PHRASE_EDGE'=275 -'MATCH_PHRASE_PREFIX'=276 -'MATCH_REGEXP'=277 -'MATCH_NAME'=278 -'MATCH_NAME_GLOB'=279 -'MATERIALIZED'=280 -'MAX'=281 -'MAXVALUE'=282 -'MEMO'=283 -'MERGE'=284 -'MIGRATE'=285 -'MIGRATIONS'=286 -'MIN'=287 -'MINUS'=288 -'MINUTE'=289 -'MODIFY'=290 -'MONTH'=291 -'MTMV'=292 -'NAME'=293 -'NAMES'=294 -'NATURAL'=295 -'NEGATIVE'=296 -'NEVER'=297 -'NEXT'=298 -'NGRAM_BF'=299 -'NO'=300 -'NO_USE_MV'=301 -'NON_NULLABLE'=302 -'NOT'=303 -'NULL'=304 -'NULLS'=305 -'OBSERVER'=306 -'OF'=307 -'OFFSET'=308 -'ON'=309 -'ONLY'=310 -'OPEN'=311 -'OPTIMIZED'=312 -'OR'=313 -'ORDER'=314 -'OUTER'=315 -'OUTFILE'=316 -'OVER'=317 -'OVERWRITE'=318 -'PARAMETER'=319 -'PARSED'=320 -'PARTITION'=321 -'PARTITIONS'=322 -'PASSWORD'=323 -'PASSWORD_EXPIRE'=324 -'PASSWORD_HISTORY'=325 -'PASSWORD_LOCK_TIME'=326 -'PASSWORD_REUSE'=327 -'PATH'=328 -'PAUSE'=329 -'PERCENT'=330 -'PERIOD'=331 -'PERMISSIVE'=332 -'PHYSICAL'=333 -'PI'=334 -'?'=335 -'PLAN'=336 -'PLAY'=337 -'PRIVILEGES'=338 -'PROCESS'=339 -'PLUGIN'=340 -'PLUGINS'=341 -'POLICY'=342 -'PRECEDING'=343 -'PREPARE'=344 -'PRIMARY'=345 -'PROC'=346 -'PROCEDURE'=347 -'PROCESSLIST'=348 -'PROFILE'=349 -'PROPERTIES'=350 -'PROPERTY'=351 -'QUANTILE_STATE'=352 -'QUANTILE_UNION'=353 -'QUERY'=354 -'QUEUED'=355 -'QUOTA'=356 -'QUALIFY'=357 -'QUARTER'=358 -'RANDOM'=359 -'RANGE'=360 -'READ'=361 -'REAL'=362 -'REBALANCE'=363 -'RECENT'=364 -'RECOVER'=365 -'RECYCLE'=366 -'REFRESH'=367 -'REFERENCES'=368 -'REGEXP'=369 -'RELEASE'=370 -'RENAME'=371 -'REPAIR'=372 -'REPEATABLE'=373 -'REPLACE'=374 -'REPLACE_IF_NOT_NULL'=375 -'REPLAYER'=376 -'REPLICA'=377 -'REPOSITORIES'=378 -'REPOSITORY'=379 -'RESOURCE'=380 -'RESOURCES'=381 -'RESTORE'=382 -'RESTRICTIVE'=383 -'RESUME'=384 -'RETURNS'=385 -'REVOKE'=386 -'REWRITTEN'=387 -'RIGHT'=388 -'RLIKE'=389 -'ROLE'=390 -'ROLES'=391 -'ROLLBACK'=392 -'ROLLUP'=393 -'ROUTINE'=394 -'ROW'=395 -'ROWS'=396 -'S3'=397 -'SAMPLE'=398 -'SCHEDULE'=399 -'SCHEDULER'=400 -'SCHEMA'=401 -'SCHEMAS'=402 -'SECOND'=403 -'SELECT'=404 -'SEMI'=405 -'SERIALIZABLE'=406 -'SESSION'=407 -'SESSION_USER'=408 -'SET'=409 -'SETS'=410 -'SET_SESSION_VARIABLE'=411 -'SHAPE'=412 -'SHOW'=413 -'SIGNED'=414 -'SKEW'=415 -'SMALLINT'=416 -'SNAPSHOT'=417 -'SONAME'=418 -'SPLIT'=419 -'SQL'=420 -'SQL_BLOCK_RULE'=421 -'STAGE'=422 -'STAGES'=423 -'START'=424 -'STARTS'=425 -'STATS'=426 -'STATUS'=427 -'STOP'=428 -'STORAGE'=429 -'STREAM'=430 -'STREAMING'=431 -'STRING'=432 -'STRUCT'=433 -'SUM'=434 -'SUPERUSER'=435 -'SWITCH'=436 -'SYNC'=437 -'SYSTEM'=438 -'TABLE'=439 -'TABLES'=440 -'TABLESAMPLE'=441 -'TABLET'=442 -'TABLETS'=443 -'TASK'=444 -'TASKS'=445 -'TEMPORARY'=446 -'TERMINATED'=447 -'TEXT'=448 -'THAN'=449 -'THEN'=450 -'TIME'=451 -'TIMESTAMP'=452 -'TINYINT'=453 -'TO'=454 -'TRANSACTION'=455 -'TRASH'=456 -'TREE'=457 -'TRIGGERS'=458 -'TRIM'=459 -'TRUE'=460 -'TRUNCATE'=461 -'TYPE'=462 -'TYPE_CAST'=463 -'TYPES'=464 -'UNBOUNDED'=465 -'UNCOMMITTED'=466 -'UNINSTALL'=467 -'UNION'=468 -'UNIQUE'=469 -'UNLOCK'=470 -'UNSET'=471 -'UNSIGNED'=472 -'UP'=473 -'UPDATE'=474 -'USE'=475 -'USER'=476 -'USE_MV'=477 -'USING'=478 -'VALUE'=479 -'VALUES'=480 -'VARCHAR'=481 -'VARIABLE'=482 -'VARIABLES'=483 -'VARIANT'=484 -'VAULT'=485 -'VAULTS'=486 -'VERBOSE'=487 -'VERSION'=488 -'VIEW'=489 -'VIEWS'=490 -'WARM'=491 -'WARNINGS'=492 -'WEEK'=493 -'WHEN'=494 -'WHERE'=495 -'WHITELIST'=496 -'WITH'=497 -'WORK'=498 -'WORKLOAD'=499 -'WRITE'=500 -'XOR'=501 -'YEAR'=502 -'<=>'=504 -'<'=506 -'>'=508 -'+'=510 -'-'=511 -'*'=512 -'/'=513 -'%'=514 -'~'=515 -'&'=516 -'&&'=517 -'!'=518 -'|'=519 -'||'=520 -'^'=521 -':'=522 -'->'=523 -'/*+'=524 -'*/'=525 -'/*'=526 -'@'=527 -'@@'=528 diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp deleted file mode 100644 index 281aee1130e097..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.interp +++ /dev/null @@ -1,1328 +0,0 @@ -token literal names: -null -';' -'(' -')' -',' -'.' -'...' -'[' -']' -'{' -'}' -'ACCOUNT_LOCK' -'ACCOUNT_UNLOCK' -'ACTIONS' -'ADD' -'ADMIN' -'AFTER' -'AGG_STATE' -'AGGREGATE' -'ALIAS' -'ALL' -'ALTER' -'ANALYZE' -'ANALYZED' -'AND' -'ANTI' -'APPEND' -'ARRAY' -'AS' -'ASC' -'AT' -'AUTHORS' -'AUTO' -'AUTO_INCREMENT' -'ALWAYS' -'BACKEND' -'BACKENDS' -'BACKUP' -'BEGIN' -'BELONG' -'BETWEEN' -'BIGINT' -'BIN' -'BINARY' -'BINLOG' -'BITAND' -'BITMAP' -'BITMAP_EMPTY' -'BITMAP_UNION' -'BITOR' -'BITXOR' -'BLOB' -'BOOLEAN' -'BRIEF' -'BROKER' -'BUCKETS' -'BUILD' -'BUILTIN' -'BULK' -'BY' -'CACHE' -'CACHED' -'CALL' -'CANCEL' -'CASE' -'CAST' -'CATALOG' -'CATALOGS' -'CHAIN' -null -'CHARSET' -'CHECK' -'CLEAN' -'CLUSTER' -'CLUSTERS' -'COLLATE' -'COLLATION' -'COLLECT' -'COLOCATE' -'COLUMN' -'COLUMNS' -'COMMENT' -'COMMIT' -'COMMITTED' -'COMPACT' -'COMPLETE' -'COMPRESS_TYPE' -'COMPUTE' -'CONDITIONS' -'CONFIG' -'CONNECTION' -'CONNECTION_ID' -'CONSISTENT' -'CONSTRAINT' -'CONSTRAINTS' -'CONVERT' -'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS' -'COPY' -'COUNT' -'CREATE' -'CREATION' -'CRON' -'CROSS' -'CUBE' -'CURRENT' -'CURRENT_CATALOG' -'CURRENT_DATE' -'CURRENT_TIME' -'CURRENT_TIMESTAMP' -'CURRENT_USER' -'DATA' -'DATABASE' -'DATABASES' -'DATE' -'DATETIME' -'DATETIMEV2' -'DATEV2' -'DATETIMEV1' -'DATEV1' -'DAY' -'DECIMAL' -'DECIMALV2' -'DECIMALV3' -'DECOMMISSION' -'DEFAULT' -'DEFERRED' -'DELETE' -'DEMAND' -'DESC' -'DESCRIBE' -'DIAGNOSE' -'DIAGNOSIS' -'DISK' -'DISTINCT' -'DISTINCTPC' -'DISTINCTPCSA' -'DISTRIBUTED' -'DISTRIBUTION' -'DIV' -'DO' -'DORIS_INTERNAL_TABLE_ID' -'DOUBLE' -'DROP' -'DROPP' -'DUAL' -'DUMP' -'DUPLICATE' -'DYNAMIC' -'E' -'ELSE' -'ENABLE' -'ENCRYPTKEY' -'ENCRYPTKEYS' -'END' -'ENDS' -'ENGINE' -'ENGINES' -'ENTER' -'ERRORS' -'EVENTS' -'EVERY' -'EXCEPT' -'EXCLUDE' -'EXECUTE' -'EXISTS' -'EXPIRED' -'EXPLAIN' -'EXPORT' -'EXTENDED' -'EXTERNAL' -'EXTRACT' -'FAILED_LOGIN_ATTEMPTS' -'FALSE' -'FAST' -'FEATURE' -'FIELDS' -'FILE' -'FILTER' -'FIRST' -'FLOAT' -'FOLLOWER' -'FOLLOWING' -'FOR' -'FOREIGN' -'FORCE' -'FORMAT' -'FREE' -'FROM' -'FRONTEND' -'FRONTENDS' -'FULL' -'FUNCTION' -'FUNCTIONS' -'GENERATED' -'GENERIC' -'GLOBAL' -'GRANT' -'GRANTS' -'GRAPH' -'GROUP' -'GROUPING' -'GROUPS' -'HASH' -'HAVING' -'HDFS' -'HELP' -'HISTOGRAM' -'HLL' -'HLL_UNION' -'HOSTNAME' -'HOTSPOT' -'HOUR' -'HUB' -'IDENTIFIED' -'IF' -'IGNORE' -'IMMEDIATE' -'IN' -'INCREMENTAL' -'INDEX' -'INDEXES' -'INFILE' -'INNER' -'INSERT' -'INSTALL' -'INT' -'INTEGER' -'INTERMEDIATE' -'INTERSECT' -'INTERVAL' -'INTO' -'INVERTED' -'IPV4' -'IPV6' -'IS' -'IS_NOT_NULL_PRED' -'IS_NULL_PRED' -'ISNULL' -'ISOLATION' -'JOB' -'JOBS' -'JOIN' -'JSON' -'JSONB' -'KEY' -'KEYS' -'KILL' -'LABEL' -'LARGEINT' -'LAST' -'LATERAL' -'LDAP' -'LDAP_ADMIN_PASSWORD' -'LEFT' -'LESS' -'LEVEL' -'LIKE' -'LIMIT' -'LINES' -'LINK' -'LIST' -'LOAD' -'LOCAL' -'LOCALTIME' -'LOCALTIMESTAMP' -'LOCATION' -'LOCK' -'LOGICAL' -'LOW_PRIORITY' -'MANUAL' -'MAP' -'MATCH' -'MATCH_ALL' -'MATCH_ANY' -'MATCH_PHRASE' -'MATCH_PHRASE_EDGE' -'MATCH_PHRASE_PREFIX' -'MATCH_REGEXP' -'MATCH_NAME' -'MATCH_NAME_GLOB' -'MATERIALIZED' -'MAX' -'MAXVALUE' -'MEMO' -'MERGE' -'MIGRATE' -'MIGRATIONS' -'MIN' -'MINUS' -'MINUTE' -'MODIFY' -'MONTH' -'MTMV' -'NAME' -'NAMES' -'NATURAL' -'NEGATIVE' -'NEVER' -'NEXT' -'NGRAM_BF' -'NO' -'NO_USE_MV' -'NON_NULLABLE' -'NOT' -'NULL' -'NULLS' -'OBSERVER' -'OF' -'OFFSET' -'ON' -'ONLY' -'OPEN' -'OPTIMIZED' -'OR' -'ORDER' -'OUTER' -'OUTFILE' -'OVER' -'OVERWRITE' -'PARAMETER' -'PARSED' -'PARTITION' -'PARTITIONS' -'PASSWORD' -'PASSWORD_EXPIRE' -'PASSWORD_HISTORY' -'PASSWORD_LOCK_TIME' -'PASSWORD_REUSE' -'PATH' -'PAUSE' -'PERCENT' -'PERIOD' -'PERMISSIVE' -'PHYSICAL' -'PI' -'?' -'PLAN' -'PLAY' -'PRIVILEGES' -'PROCESS' -'PLUGIN' -'PLUGINS' -'POLICY' -'PRECEDING' -'PREPARE' -'PRIMARY' -'PROC' -'PROCEDURE' -'PROCESSLIST' -'PROFILE' -'PROPERTIES' -'PROPERTY' -'QUANTILE_STATE' -'QUANTILE_UNION' -'QUERY' -'QUEUED' -'QUOTA' -'QUALIFY' -'QUARTER' -'RANDOM' -'RANGE' -'READ' -'REAL' -'REBALANCE' -'RECENT' -'RECOVER' -'RECYCLE' -'REFRESH' -'REFERENCES' -'REGEXP' -'RELEASE' -'RENAME' -'REPAIR' -'REPEATABLE' -'REPLACE' -'REPLACE_IF_NOT_NULL' -'REPLAYER' -'REPLICA' -'REPOSITORIES' -'REPOSITORY' -'RESOURCE' -'RESOURCES' -'RESTORE' -'RESTRICTIVE' -'RESUME' -'RETURNS' -'REVOKE' -'REWRITTEN' -'RIGHT' -'RLIKE' -'ROLE' -'ROLES' -'ROLLBACK' -'ROLLUP' -'ROUTINE' -'ROW' -'ROWS' -'S3' -'SAMPLE' -'SCHEDULE' -'SCHEDULER' -'SCHEMA' -'SCHEMAS' -'SECOND' -'SELECT' -'SEMI' -'SERIALIZABLE' -'SESSION' -'SESSION_USER' -'SET' -'SETS' -'SET_SESSION_VARIABLE' -'SHAPE' -'SHOW' -'SIGNED' -'SKEW' -'SMALLINT' -'SNAPSHOT' -'SONAME' -'SPLIT' -'SQL' -'SQL_BLOCK_RULE' -'STAGE' -'STAGES' -'START' -'STARTS' -'STATS' -'STATUS' -'STOP' -'STORAGE' -'STREAM' -'STREAMING' -'STRING' -'STRUCT' -'SUM' -'SUPERUSER' -'SWITCH' -'SYNC' -'SYSTEM' -'TABLE' -'TABLES' -'TABLESAMPLE' -'TABLET' -'TABLETS' -'TASK' -'TASKS' -'TEMPORARY' -'TERMINATED' -'TEXT' -'THAN' -'THEN' -'TIME' -'TIMESTAMP' -'TINYINT' -'TO' -'TRANSACTION' -'TRASH' -'TREE' -'TRIGGERS' -'TRIM' -'TRUE' -'TRUNCATE' -'TYPE' -'TYPE_CAST' -'TYPES' -'UNBOUNDED' -'UNCOMMITTED' -'UNINSTALL' -'UNION' -'UNIQUE' -'UNLOCK' -'UNSET' -'UNSIGNED' -'UP' -'UPDATE' -'USE' -'USER' -'USE_MV' -'USING' -'VALUE' -'VALUES' -'VARCHAR' -'VARIABLE' -'VARIABLES' -'VARIANT' -'VAULT' -'VAULTS' -'VERBOSE' -'VERSION' -'VIEW' -'VIEWS' -'WARM' -'WARNINGS' -'WEEK' -'WHEN' -'WHERE' -'WHITELIST' -'WITH' -'WORK' -'WORKLOAD' -'WRITE' -'XOR' -'YEAR' -null -'<=>' -null -'<' -null -'>' -null -'+' -'-' -'*' -'/' -'%' -'~' -'&' -'&&' -'!' -'|' -'||' -'^' -':' -'->' -'/*+' -'*/' -'/*' -'@' -'@@' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -SEMICOLON -LEFT_PAREN -RIGHT_PAREN -COMMA -DOT -DOTDOTDOT -LEFT_BRACKET -RIGHT_BRACKET -LEFT_BRACE -RIGHT_BRACE -ACCOUNT_LOCK -ACCOUNT_UNLOCK -ACTIONS -ADD -ADMIN -AFTER -AGG_STATE -AGGREGATE -ALIAS -ALL -ALTER -ANALYZE -ANALYZED -AND -ANTI -APPEND -ARRAY -AS -ASC -AT -AUTHORS -AUTO -AUTO_INCREMENT -ALWAYS -BACKEND -BACKENDS -BACKUP -BEGIN -BELONG -BETWEEN -BIGINT -BIN -BINARY -BINLOG -BITAND -BITMAP -BITMAP_EMPTY -BITMAP_UNION -BITOR -BITXOR -BLOB -BOOLEAN -BRIEF -BROKER -BUCKETS -BUILD -BUILTIN -BULK -BY -CACHE -CACHED -CALL -CANCEL -CASE -CAST -CATALOG -CATALOGS -CHAIN -CHAR -CHARSET -CHECK -CLEAN -CLUSTER -CLUSTERS -COLLATE -COLLATION -COLLECT -COLOCATE -COLUMN -COLUMNS -COMMENT -COMMIT -COMMITTED -COMPACT -COMPLETE -COMPRESS_TYPE -COMPUTE -CONDITIONS -CONFIG -CONNECTION -CONNECTION_ID -CONSISTENT -CONSTRAINT -CONSTRAINTS -CONVERT -CONVERT_LSC -COPY -COUNT -CREATE -CREATION -CRON -CROSS -CUBE -CURRENT -CURRENT_CATALOG -CURRENT_DATE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DATA -DATABASE -DATABASES -DATE -DATETIME -DATETIMEV2 -DATEV2 -DATETIMEV1 -DATEV1 -DAY -DECIMAL -DECIMALV2 -DECIMALV3 -DECOMMISSION -DEFAULT -DEFERRED -DELETE -DEMAND -DESC -DESCRIBE -DIAGNOSE -DIAGNOSIS -DISK -DISTINCT -DISTINCTPC -DISTINCTPCSA -DISTRIBUTED -DISTRIBUTION -DIV -DO -DORIS_INTERNAL_TABLE_ID -DOUBLE -DROP -DROPP -DUAL -DUMP -DUPLICATE -DYNAMIC -E -ELSE -ENABLE -ENCRYPTKEY -ENCRYPTKEYS -END -ENDS -ENGINE -ENGINES -ENTER -ERRORS -EVENTS -EVERY -EXCEPT -EXCLUDE -EXECUTE -EXISTS -EXPIRED -EXPLAIN -EXPORT -EXTENDED -EXTERNAL -EXTRACT -FAILED_LOGIN_ATTEMPTS -FALSE -FAST -FEATURE -FIELDS -FILE -FILTER -FIRST -FLOAT -FOLLOWER -FOLLOWING -FOR -FOREIGN -FORCE -FORMAT -FREE -FROM -FRONTEND -FRONTENDS -FULL -FUNCTION -FUNCTIONS -GENERATED -GENERIC -GLOBAL -GRANT -GRANTS -GRAPH -GROUP -GROUPING -GROUPS -HASH -HAVING -HDFS -HELP -HISTOGRAM -HLL -HLL_UNION -HOSTNAME -HOTSPOT -HOUR -HUB -IDENTIFIED -IF -IGNORE -IMMEDIATE -IN -INCREMENTAL -INDEX -INDEXES -INFILE -INNER -INSERT -INSTALL -INT -INTEGER -INTERMEDIATE -INTERSECT -INTERVAL -INTO -INVERTED -IPV4 -IPV6 -IS -IS_NOT_NULL_PRED -IS_NULL_PRED -ISNULL -ISOLATION -JOB -JOBS -JOIN -JSON -JSONB -KEY -KEYS -KILL -LABEL -LARGEINT -LAST -LATERAL -LDAP -LDAP_ADMIN_PASSWORD -LEFT -LESS -LEVEL -LIKE -LIMIT -LINES -LINK -LIST -LOAD -LOCAL -LOCALTIME -LOCALTIMESTAMP -LOCATION -LOCK -LOGICAL -LOW_PRIORITY -MANUAL -MAP -MATCH -MATCH_ALL -MATCH_ANY -MATCH_PHRASE -MATCH_PHRASE_EDGE -MATCH_PHRASE_PREFIX -MATCH_REGEXP -MATCH_NAME -MATCH_NAME_GLOB -MATERIALIZED -MAX -MAXVALUE -MEMO -MERGE -MIGRATE -MIGRATIONS -MIN -MINUS -MINUTE -MODIFY -MONTH -MTMV -NAME -NAMES -NATURAL -NEGATIVE -NEVER -NEXT -NGRAM_BF -NO -NO_USE_MV -NON_NULLABLE -NOT -NULL -NULLS -OBSERVER -OF -OFFSET -ON -ONLY -OPEN -OPTIMIZED -OR -ORDER -OUTER -OUTFILE -OVER -OVERWRITE -PARAMETER -PARSED -PARTITION -PARTITIONS -PASSWORD -PASSWORD_EXPIRE -PASSWORD_HISTORY -PASSWORD_LOCK_TIME -PASSWORD_REUSE -PATH -PAUSE -PERCENT -PERIOD -PERMISSIVE -PHYSICAL -PI -PLACEHOLDER -PLAN -PLAY -PRIVILEGES -PROCESS -PLUGIN -PLUGINS -POLICY -PRECEDING -PREPARE -PRIMARY -PROC -PROCEDURE -PROCESSLIST -PROFILE -PROPERTIES -PROPERTY -QUANTILE_STATE -QUANTILE_UNION -QUERY -QUEUED -QUOTA -QUALIFY -QUARTER -RANDOM -RANGE -READ -REAL -REBALANCE -RECENT -RECOVER -RECYCLE -REFRESH -REFERENCES -REGEXP -RELEASE -RENAME -REPAIR -REPEATABLE -REPLACE -REPLACE_IF_NOT_NULL -REPLAYER -REPLICA -REPOSITORIES -REPOSITORY -RESOURCE -RESOURCES -RESTORE -RESTRICTIVE -RESUME -RETURNS -REVOKE -REWRITTEN -RIGHT -RLIKE -ROLE -ROLES -ROLLBACK -ROLLUP -ROUTINE -ROW -ROWS -S3 -SAMPLE -SCHEDULE -SCHEDULER -SCHEMA -SCHEMAS -SECOND -SELECT -SEMI -SERIALIZABLE -SESSION -SESSION_USER -SET -SETS -SET_SESSION_VARIABLE -SHAPE -SHOW -SIGNED -SKEW -SMALLINT -SNAPSHOT -SONAME -SPLIT -SQL -SQL_BLOCK_RULE -STAGE -STAGES -START -STARTS -STATS -STATUS -STOP -STORAGE -STREAM -STREAMING -STRING -STRUCT -SUM -SUPERUSER -SWITCH -SYNC -SYSTEM -TABLE -TABLES -TABLESAMPLE -TABLET -TABLETS -TASK -TASKS -TEMPORARY -TERMINATED -TEXT -THAN -THEN -TIME -TIMESTAMP -TINYINT -TO -TRANSACTION -TRASH -TREE -TRIGGERS -TRIM -TRUE -TRUNCATE -TYPE -TYPECAST -TYPES -UNBOUNDED -UNCOMMITTED -UNINSTALL -UNION -UNIQUE -UNLOCK -UNSET -UNSIGNED -UP -UPDATE -USE -USER -USE_MV -USING -VALUE -VALUES -VARCHAR -VARIABLE -VARIABLES -VARIANT -VAULT -VAULTS -VERBOSE -VERSION -VIEW -VIEWS -WARM -WARNINGS -WEEK -WHEN -WHERE -WHITELIST -WITH -WORK -WORKLOAD -WRITE -XOR -YEAR -EQ -NSEQ -NEQ -LT -LTE -GT -GTE -PLUS -SUBTRACT -ASTERISK -SLASH -MOD -TILDE -AMPERSAND -LOGICALAND -LOGICALNOT -PIPE -DOUBLEPIPES -HAT -COLON -ARROW -HINT_START -HINT_END -COMMENT_START -ATSIGN -DOUBLEATSIGN -STRING_LITERAL -LEADING_STRING -BIGINT_LITERAL -SMALLINT_LITERAL -TINYINT_LITERAL -INTEGER_VALUE -EXPONENT_VALUE -DECIMAL_VALUE -BIGDECIMAL_LITERAL -IDENTIFIER -BACKQUOTED_IDENTIFIER -SIMPLE_COMMENT -BRACKETED_COMMENT -FROM_DUAL -WS -UNRECOGNIZED - -rule names: -multiStatements -singleStatement -statement -statementBase -unsupportedStatement -materializedViewStatement -supportedJobStatement -constraintStatement -supportedDmlStatement -supportedCreateStatement -supportedAlterStatement -supportedDropStatement -supportedShowStatement -supportedLoadStatement -supportedOtherStatement -unsupportedOtherStatement -warmUpItem -lockTable -unsupportedShowStatement -createRoutineLoad -unsupportedLoadStatement -loadProperty -importSequenceStatement -importDeleteOnStatement -importWhereStatement -importPrecedingFilterStatement -importColumnsStatement -importColumnDesc -channelDescriptions -channelDescription -supportedRefreshStatement -supportedCleanStatement -unsupportedRefreshStatement -unsupportedCleanStatement -supportedCancelStatement -unsupportedCancelStatement -supportedAdminStatement -supportedRecoverStatement -unsupportedAdminStatement -baseTableRef -wildWhere -unsupportedTransactionStatement -unsupportedGrantRevokeStatement -privilege -privilegeList -unsupportedAlterStatement -alterSystemClause -dropRollupClause -addRollupClause -alterTableClause -columnPosition -toRollup -fromRollup -unsupportedDropStatement -supportedStatsStatement -unsupportedStatsStatement -analyzeProperties -unsupportedCreateStatement -workloadPolicyActions -workloadPolicyAction -workloadPolicyConditions -workloadPolicyCondition -storageBackend -passwordOption -functionArguments -dataTypeList -supportedSetStatement -optionWithType -optionWithoutType -variable -transactionAccessMode -isolationLevel -supportedUnsetStatement -supportedUseStatement -unsupportedUseStatement -unsupportedDmlStatement -stageAndPattern -unsupportedKillStatement -supportedDescribeStatement -constraint -partitionSpec -partitionTable -identityOrFunctionList -identityOrFunction -dataDesc -statementScope -buildMode -refreshTrigger -refreshSchedule -refreshMethod -mvPartition -identifierOrText -identifierOrTextOrAsterisk -multipartIdentifierOrAsterisk -identifierOrAsterisk -userIdentify -grantUserIdentify -explain -explainCommand -planType -replayCommand -replayType -mergeType -preFilterClause -deleteOnClause -sequenceColClause -colFromPath -colMappingList -mappingExpr -withRemoteStorageSystem -resourceDesc -mysqlDataDesc -skipLines -outFileClause -query -queryTerm -setQuantifier -queryPrimary -querySpecification -cte -aliasQuery -columnAliases -selectClause -selectColumnClause -whereClause -fromClause -intoClause -bulkCollectClause -tableRow -relations -relation -joinRelation -distributeType -relationHint -aggClause -groupingElement -groupingSet -havingClause -qualifyClause -selectHint -hintStatement -hintAssignment -updateAssignment -updateAssignmentSeq -lateralView -queryOrganization -sortClause -sortItem -limitClause -partitionClause -joinType -joinCriteria -identifierList -identifierSeq -optScanParams -relationPrimary -materializedViewName -propertyClause -propertyItemList -propertyItem -propertyKey -propertyValue -tableAlias -multipartIdentifier -simpleColumnDefs -simpleColumnDef -columnDefs -columnDef -indexDefs -indexDef -partitionsDef -partitionDef -lessThanPartitionDef -fixedPartitionDef -stepPartitionDef -inPartitionDef -partitionValueList -partitionValueDef -rollupDefs -rollupDef -aggTypeDef -tabletList -inlineTable -namedExpression -namedExpressionSeq -expression -lambdaExpression -booleanExpression -rowConstructor -rowConstructorItem -predicate -valueExpression -primaryExpression -exceptOrReplace -castDataType -functionCallExpression -functionIdentifier -functionNameIdentifier -windowSpec -windowFrame -frameUnits -frameBoundary -qualifiedName -specifiedPartition -constant -comparisonOperator -booleanValue -whenClause -interval -unitIdentifier -dataTypeWithNullable -dataType -primitiveColType -complexColTypeList -complexColType -variantSubColTypeList -variantSubColType -variantSubColMatchType -commentSpec -sample -sampleMethod -tableSnapshot -errorCapturingIdentifier -errorCapturingIdentifierExtra -identifier -strictIdentifier -quotedIdentifier -number -nonReserved - - -atn: -[4, 1, 544, 6150, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 1, 0, 5, 0, 460, 8, 0, 10, 0, 12, 0, 463, 9, 0, 1, 0, 3, 0, 466, 8, 0, 1, 0, 4, 0, 469, 8, 0, 11, 0, 12, 0, 470, 1, 0, 5, 0, 474, 8, 0, 10, 0, 12, 0, 477, 9, 0, 1, 0, 5, 0, 480, 8, 0, 10, 0, 12, 0, 483, 9, 0, 1, 0, 1, 0, 1, 1, 5, 1, 488, 8, 1, 10, 1, 12, 1, 491, 9, 1, 1, 1, 3, 1, 494, 8, 1, 1, 1, 5, 1, 497, 8, 1, 10, 1, 12, 1, 500, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 511, 8, 2, 10, 2, 12, 2, 514, 9, 2, 3, 2, 516, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 524, 8, 2, 1, 2, 3, 2, 527, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 533, 8, 2, 10, 2, 12, 2, 536, 9, 2, 1, 2, 1, 2, 5, 2, 540, 8, 2, 10, 2, 12, 2, 543, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 549, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 558, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 565, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 572, 8, 2, 1, 2, 1, 2, 3, 2, 576, 8, 2, 3, 2, 578, 8, 2, 1, 3, 3, 3, 581, 8, 3, 1, 3, 1, 3, 3, 3, 585, 8, 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, 608, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 626, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 634, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 641, 8, 5, 1, 5, 3, 5, 644, 8, 5, 1, 5, 1, 5, 3, 5, 648, 8, 5, 1, 5, 3, 5, 651, 8, 5, 3, 5, 653, 8, 5, 1, 5, 3, 5, 656, 8, 5, 1, 5, 1, 5, 3, 5, 660, 8, 5, 1, 5, 1, 5, 3, 5, 664, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 672, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 679, 8, 5, 1, 5, 1, 5, 3, 5, 683, 8, 5, 3, 5, 685, 8, 5, 1, 5, 3, 5, 688, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 700, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 714, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 722, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 729, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 736, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 741, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 767, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 780, 8, 6, 3, 6, 782, 8, 6, 1, 6, 1, 6, 3, 6, 786, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 791, 8, 6, 3, 6, 793, 8, 6, 1, 6, 3, 6, 796, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 804, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 810, 8, 6, 1, 6, 3, 6, 813, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 818, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 823, 8, 6, 3, 6, 825, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 846, 8, 7, 1, 8, 3, 8, 849, 8, 8, 1, 8, 3, 8, 852, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 858, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 865, 8, 8, 1, 8, 3, 8, 868, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 873, 8, 8, 1, 8, 3, 8, 876, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 882, 8, 8, 1, 8, 1, 8, 3, 8, 886, 8, 8, 1, 8, 3, 8, 889, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 897, 8, 8, 1, 8, 3, 8, 900, 8, 8, 1, 8, 3, 8, 903, 8, 8, 1, 8, 3, 8, 906, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 912, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 917, 8, 8, 1, 8, 3, 8, 920, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 929, 8, 8, 10, 8, 12, 8, 932, 9, 8, 1, 8, 1, 8, 3, 8, 936, 8, 8, 1, 8, 3, 8, 939, 8, 8, 1, 8, 3, 8, 942, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 949, 8, 8, 1, 8, 3, 8, 952, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 957, 8, 8, 1, 8, 3, 8, 960, 8, 8, 1, 8, 3, 8, 963, 8, 8, 1, 9, 1, 9, 3, 9, 967, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 973, 8, 9, 1, 9, 1, 9, 3, 9, 977, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 983, 8, 9, 1, 9, 3, 9, 986, 8, 9, 1, 9, 1, 9, 3, 9, 990, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 995, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1003, 8, 9, 3, 9, 1005, 8, 9, 1, 9, 1, 9, 3, 9, 1009, 8, 9, 1, 9, 3, 9, 1012, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1019, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1024, 8, 9, 3, 9, 1026, 8, 9, 3, 9, 1028, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1035, 8, 9, 1, 9, 3, 9, 1038, 8, 9, 1, 9, 1, 9, 3, 9, 1042, 8, 9, 1, 9, 1, 9, 3, 9, 1046, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1051, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1057, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1064, 8, 9, 1, 9, 1, 9, 3, 9, 1068, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1078, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1083, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1089, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1097, 8, 9, 3, 9, 1099, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1106, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1111, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1119, 8, 9, 1, 9, 1, 9, 3, 9, 1123, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1130, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1136, 8, 9, 1, 9, 1, 9, 3, 9, 1140, 8, 9, 1, 9, 3, 9, 1143, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1151, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1162, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1175, 8, 9, 1, 9, 1, 9, 3, 9, 1179, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1187, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1194, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1202, 8, 9, 1, 9, 3, 9, 1205, 8, 9, 1, 9, 1, 9, 3, 9, 1209, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1216, 8, 9, 1, 9, 1, 9, 3, 9, 1220, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1227, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1235, 8, 9, 1, 9, 3, 9, 1238, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1244, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1249, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1256, 8, 9, 1, 9, 3, 9, 1259, 8, 9, 1, 9, 1, 9, 3, 9, 1263, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1270, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1275, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1282, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1288, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1302, 8, 10, 1, 10, 1, 10, 3, 10, 1306, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1335, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1351, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1357, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1383, 8, 10, 10, 10, 12, 10, 1386, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1396, 8, 10, 10, 10, 12, 10, 1399, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1409, 8, 10, 10, 10, 12, 10, 1412, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1430, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1444, 8, 10, 3, 10, 1446, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1460, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1467, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1474, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1481, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1489, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1497, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1504, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1512, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1520, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1530, 8, 11, 1, 11, 1, 11, 3, 11, 1534, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1540, 8, 11, 1, 11, 1, 11, 3, 11, 1544, 8, 11, 1, 11, 1, 11, 3, 11, 1548, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1553, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1558, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1566, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1572, 8, 11, 1, 12, 1, 12, 3, 12, 1576, 8, 12, 1, 12, 1, 12, 3, 12, 1580, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1596, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1602, 8, 12, 1, 12, 3, 12, 1605, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1614, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1620, 8, 12, 1, 12, 1, 12, 3, 12, 1624, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1636, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1642, 8, 12, 1, 12, 3, 12, 1645, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1658, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1668, 8, 12, 1, 12, 1, 12, 3, 12, 1672, 8, 12, 1, 12, 1, 12, 3, 12, 1676, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1683, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1700, 8, 12, 1, 12, 1, 12, 3, 12, 1704, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1717, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1723, 8, 12, 1, 12, 1, 12, 3, 12, 1727, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1734, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1739, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1747, 8, 12, 3, 12, 1749, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1755, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1767, 8, 12, 1, 12, 1, 12, 3, 12, 1771, 8, 12, 1, 12, 3, 12, 1774, 8, 12, 1, 12, 3, 12, 1777, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1790, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1809, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1814, 8, 12, 1, 12, 3, 12, 1817, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1826, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1838, 8, 12, 1, 12, 1, 12, 3, 12, 1842, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 1853, 8, 12, 10, 12, 12, 12, 1856, 9, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1868, 8, 12, 1, 12, 1, 12, 3, 12, 1872, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1879, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1885, 8, 12, 1, 12, 3, 12, 1888, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1894, 8, 12, 1, 12, 1, 12, 3, 12, 1898, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1903, 8, 12, 1, 12, 3, 12, 1906, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1913, 8, 12, 1, 12, 3, 12, 1916, 8, 12, 3, 12, 1918, 8, 12, 1, 13, 1, 13, 3, 13, 1922, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1932, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 1942, 8, 15, 10, 15, 12, 15, 1945, 9, 15, 3, 15, 1947, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1956, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1963, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 1969, 8, 15, 10, 15, 12, 15, 1972, 9, 15, 3, 15, 1974, 8, 15, 1, 15, 3, 15, 1977, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 1989, 8, 15, 10, 15, 12, 15, 1992, 9, 15, 1, 15, 1, 15, 3, 15, 1996, 8, 15, 1, 15, 3, 15, 1999, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 2011, 8, 15, 10, 15, 12, 15, 2014, 9, 15, 1, 15, 1, 15, 3, 15, 2018, 8, 15, 1, 15, 3, 15, 2021, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 2028, 8, 15, 3, 15, 2030, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 2036, 8, 16, 1, 17, 1, 17, 1, 17, 3, 17, 2041, 8, 17, 1, 17, 1, 17, 3, 17, 2045, 8, 17, 1, 17, 3, 17, 2048, 8, 17, 1, 17, 3, 17, 2051, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2060, 8, 18, 3, 18, 2062, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2072, 8, 18, 1, 18, 3, 18, 2075, 8, 18, 1, 18, 1, 18, 3, 18, 2079, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2084, 8, 18, 1, 18, 3, 18, 2087, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2097, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2103, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2108, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2114, 8, 18, 1, 18, 3, 18, 2117, 8, 18, 1, 18, 1, 18, 3, 18, 2121, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2128, 8, 18, 1, 18, 3, 18, 2131, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2138, 8, 18, 1, 18, 3, 18, 2141, 8, 18, 1, 18, 3, 18, 2144, 8, 18, 1, 18, 1, 18, 3, 18, 2148, 8, 18, 1, 18, 1, 18, 3, 18, 2152, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2157, 8, 18, 1, 18, 3, 18, 2160, 8, 18, 1, 18, 3, 18, 2163, 8, 18, 1, 18, 3, 18, 2166, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2172, 8, 18, 1, 18, 3, 18, 2175, 8, 18, 1, 18, 3, 18, 2178, 8, 18, 1, 18, 3, 18, 2181, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2190, 8, 18, 1, 18, 1, 18, 3, 18, 2194, 8, 18, 1, 18, 3, 18, 2197, 8, 18, 1, 18, 3, 18, 2200, 8, 18, 1, 18, 3, 18, 2203, 8, 18, 1, 18, 1, 18, 3, 18, 2207, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2213, 8, 18, 1, 18, 3, 18, 2216, 8, 18, 1, 18, 3, 18, 2219, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2229, 8, 18, 1, 18, 3, 18, 2232, 8, 18, 1, 18, 3, 18, 2235, 8, 18, 1, 18, 3, 18, 2238, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2244, 8, 18, 1, 18, 3, 18, 2247, 8, 18, 1, 18, 1, 18, 3, 18, 2251, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2256, 8, 18, 1, 18, 3, 18, 2259, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2264, 8, 18, 1, 18, 3, 18, 2267, 8, 18, 1, 18, 3, 18, 2270, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2276, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2283, 8, 18, 1, 18, 1, 18, 3, 18, 2287, 8, 18, 1, 18, 3, 18, 2290, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2295, 8, 18, 1, 18, 3, 18, 2298, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2303, 8, 18, 1, 18, 1, 18, 3, 18, 2307, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2313, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2321, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2327, 8, 18, 1, 18, 3, 18, 2330, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2341, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2352, 8, 18, 3, 18, 2354, 8, 18, 3, 18, 2356, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2363, 8, 18, 1, 18, 3, 18, 2366, 8, 18, 1, 18, 3, 18, 2369, 8, 18, 1, 18, 3, 18, 2372, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2378, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2386, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2392, 8, 18, 1, 18, 3, 18, 2395, 8, 18, 1, 18, 3, 18, 2398, 8, 18, 1, 18, 3, 18, 2401, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 2408, 8, 18, 3, 18, 2410, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2418, 8, 19, 1, 19, 1, 19, 3, 19, 2422, 8, 19, 1, 19, 1, 19, 1, 19, 5, 19, 2427, 8, 19, 10, 19, 12, 19, 2430, 9, 19, 3, 19, 2432, 8, 19, 1, 19, 3, 19, 2435, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2443, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2452, 8, 20, 1, 20, 3, 20, 2455, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2469, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2508, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2515, 8, 20, 3, 20, 2517, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2525, 8, 20, 1, 20, 3, 20, 2528, 8, 20, 1, 20, 1, 20, 3, 20, 2532, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2544, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 2556, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 2578, 8, 26, 10, 26, 12, 26, 2581, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 3, 27, 2588, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 2594, 8, 27, 1, 27, 1, 27, 3, 27, 2598, 8, 27, 1, 28, 1, 28, 1, 28, 5, 28, 2603, 8, 28, 10, 28, 12, 28, 2606, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 2613, 8, 29, 1, 29, 3, 29, 2616, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2622, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2628, 8, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2633, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 2641, 8, 31, 1, 31, 1, 31, 3, 31, 2645, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 2652, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 2661, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 2667, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2673, 8, 34, 1, 34, 3, 34, 2676, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2682, 8, 34, 1, 34, 3, 34, 2685, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2692, 8, 34, 3, 34, 2694, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2703, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 2711, 8, 35, 10, 35, 12, 35, 2714, 9, 35, 1, 35, 3, 35, 2717, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 2728, 8, 35, 10, 35, 12, 35, 2731, 9, 35, 1, 35, 3, 35, 2734, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 2742, 8, 35, 10, 35, 12, 35, 2745, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2751, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2757, 8, 35, 3, 35, 2759, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 2775, 8, 36, 10, 36, 12, 36, 2778, 9, 36, 1, 36, 3, 36, 2781, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 2792, 8, 36, 10, 36, 12, 36, 2795, 9, 36, 1, 36, 3, 36, 2798, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2815, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2825, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2831, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2839, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 2849, 8, 36, 10, 36, 12, 36, 2852, 9, 36, 1, 36, 3, 36, 2855, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2863, 8, 36, 3, 36, 2865, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2871, 8, 37, 1, 37, 1, 37, 3, 37, 2875, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2881, 8, 37, 1, 37, 1, 37, 3, 37, 2885, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2891, 8, 37, 1, 37, 1, 37, 3, 37, 2895, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2900, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2934, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2941, 8, 38, 1, 38, 3, 38, 2944, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2953, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2960, 8, 38, 3, 38, 2962, 8, 38, 1, 39, 1, 39, 3, 39, 2966, 8, 39, 1, 39, 3, 39, 2969, 8, 39, 1, 39, 3, 39, 2972, 8, 39, 1, 39, 3, 39, 2975, 8, 39, 1, 39, 1, 39, 3, 39, 2979, 8, 39, 1, 39, 3, 39, 2982, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 2988, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 2994, 8, 41, 3, 41, 2996, 8, 41, 1, 41, 1, 41, 3, 41, 3000, 8, 41, 1, 41, 1, 41, 3, 41, 3004, 8, 41, 1, 41, 3, 41, 3007, 8, 41, 1, 41, 3, 41, 3010, 8, 41, 1, 41, 3, 41, 3013, 8, 41, 1, 41, 1, 41, 3, 41, 3017, 8, 41, 1, 41, 1, 41, 3, 41, 3021, 8, 41, 1, 41, 3, 41, 3024, 8, 41, 1, 41, 3, 41, 3027, 8, 41, 1, 41, 3, 41, 3030, 8, 41, 3, 41, 3032, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3042, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3056, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3063, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 3069, 8, 42, 10, 42, 12, 42, 3072, 9, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3084, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3098, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 3105, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 3111, 8, 42, 10, 42, 12, 42, 3114, 9, 42, 1, 42, 1, 42, 3, 42, 3118, 8, 42, 1, 43, 1, 43, 3, 43, 3122, 8, 43, 1, 43, 3, 43, 3125, 8, 43, 1, 44, 1, 44, 1, 44, 5, 44, 3130, 8, 44, 10, 44, 12, 44, 3133, 9, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3148, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3165, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3173, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3185, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 3191, 8, 45, 3, 45, 3193, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3200, 8, 46, 10, 46, 12, 46, 3203, 9, 46, 1, 46, 3, 46, 3206, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3213, 8, 46, 10, 46, 12, 46, 3216, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3223, 8, 46, 10, 46, 12, 46, 3226, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3246, 8, 46, 10, 46, 12, 46, 3249, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3257, 8, 46, 10, 46, 12, 46, 3260, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 3271, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 3278, 8, 46, 10, 46, 12, 46, 3281, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 3293, 8, 46, 1, 47, 1, 47, 3, 47, 3297, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 3304, 8, 48, 1, 48, 3, 48, 3307, 8, 48, 1, 48, 3, 48, 3310, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3316, 8, 49, 1, 49, 3, 49, 3319, 8, 49, 1, 49, 3, 49, 3322, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3330, 8, 49, 1, 49, 3, 49, 3333, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3339, 8, 49, 1, 49, 3, 49, 3342, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3348, 8, 49, 1, 49, 3, 49, 3351, 8, 49, 1, 49, 3, 49, 3354, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3360, 8, 49, 1, 49, 3, 49, 3363, 8, 49, 1, 49, 1, 49, 3, 49, 3367, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3375, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3380, 8, 49, 3, 49, 3382, 8, 49, 3, 49, 3384, 8, 49, 1, 49, 3, 49, 3387, 8, 49, 1, 49, 1, 49, 3, 49, 3391, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3396, 8, 49, 1, 49, 1, 49, 3, 49, 3400, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3405, 8, 49, 1, 49, 1, 49, 3, 49, 3409, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3417, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3426, 8, 49, 1, 49, 1, 49, 3, 49, 3430, 8, 49, 1, 49, 3, 49, 3433, 8, 49, 1, 49, 3, 49, 3436, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3443, 8, 49, 1, 49, 3, 49, 3446, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3471, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3479, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3488, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3493, 8, 49, 3, 49, 3495, 8, 49, 3, 49, 3497, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3513, 8, 49, 1, 49, 1, 49, 3, 49, 3517, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 3527, 8, 49, 1, 49, 3, 49, 3530, 8, 49, 3, 49, 3532, 8, 49, 1, 50, 1, 50, 1, 50, 3, 50, 3537, 8, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3549, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3556, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3564, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3573, 8, 53, 3, 53, 3575, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 3581, 8, 53, 1, 53, 3, 53, 3584, 8, 53, 1, 54, 1, 54, 3, 54, 3588, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3593, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3600, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3607, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3614, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 3627, 8, 54, 10, 54, 12, 54, 3630, 9, 54, 1, 54, 3, 54, 3633, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 3639, 8, 54, 1, 54, 3, 54, 3642, 8, 54, 1, 54, 1, 54, 5, 54, 3646, 8, 54, 10, 54, 12, 54, 3649, 9, 54, 1, 54, 3, 54, 3652, 8, 54, 3, 54, 3654, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3665, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3672, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3683, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3689, 8, 55, 1, 55, 3, 55, 3692, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3713, 8, 55, 1, 55, 3, 55, 3716, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3731, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3736, 8, 55, 1, 55, 3, 55, 3739, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 3746, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 3758, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 3766, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3773, 8, 57, 1, 57, 1, 57, 3, 57, 3777, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3784, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3791, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3796, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3801, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3810, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3816, 8, 57, 1, 57, 1, 57, 3, 57, 3820, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3828, 8, 57, 1, 57, 1, 57, 3, 57, 3832, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3840, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3848, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3855, 8, 57, 1, 57, 3, 57, 3858, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 3865, 8, 57, 1, 57, 1, 57, 3, 57, 3869, 8, 57, 3, 57, 3871, 8, 57, 1, 58, 1, 58, 1, 58, 5, 58, 3876, 8, 58, 10, 58, 12, 58, 3879, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 3885, 8, 59, 3, 59, 3887, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 3892, 8, 60, 10, 60, 12, 60, 3895, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 3901, 8, 61, 1, 62, 1, 62, 3, 62, 3905, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 3911, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 3916, 8, 63, 3, 63, 3918, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 3926, 8, 63, 3, 63, 3928, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 3935, 8, 63, 3, 63, 3937, 8, 63, 1, 63, 1, 63, 3, 63, 3941, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 3947, 8, 63, 3, 63, 3949, 8, 63, 1, 63, 3, 63, 3952, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 3960, 8, 64, 1, 65, 1, 65, 1, 65, 5, 65, 3965, 8, 65, 10, 65, 12, 65, 3968, 9, 65, 1, 66, 1, 66, 1, 66, 3, 66, 3973, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 3978, 8, 66, 5, 66, 3980, 8, 66, 10, 66, 12, 66, 3983, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 3996, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 4001, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 4014, 8, 66, 3, 66, 4016, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 4023, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4031, 8, 68, 1, 68, 1, 68, 3, 68, 4035, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4040, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4045, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4050, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4058, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 4067, 8, 68, 1, 68, 3, 68, 4070, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 4076, 8, 69, 3, 69, 4078, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 4084, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 4091, 8, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 4105, 8, 71, 1, 72, 1, 72, 3, 72, 4109, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 4114, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 4120, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 4128, 8, 73, 1, 73, 3, 73, 4131, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 4137, 8, 74, 1, 74, 3, 74, 4140, 8, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 4149, 8, 75, 1, 75, 3, 75, 4152, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 4158, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 4168, 8, 75, 1, 75, 1, 75, 3, 75, 4172, 8, 75, 1, 75, 3, 75, 4175, 8, 75, 3, 75, 4177, 8, 75, 1, 76, 1, 76, 1, 76, 3, 76, 4182, 8, 76, 1, 76, 1, 76, 1, 76, 3, 76, 4187, 8, 76, 1, 77, 1, 77, 3, 77, 4191, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 4197, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 4204, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 4216, 8, 78, 3, 78, 4218, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 4232, 8, 79, 1, 80, 3, 80, 4235, 8, 80, 1, 80, 1, 80, 1, 80, 3, 80, 4240, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 4248, 8, 80, 1, 81, 3, 81, 4251, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 4256, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 4261, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 4269, 8, 82, 10, 82, 12, 82, 4272, 9, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 4278, 8, 83, 1, 84, 3, 84, 4281, 8, 84, 1, 84, 3, 84, 4284, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 5, 84, 4292, 8, 84, 10, 84, 12, 84, 4295, 9, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4302, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4308, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4314, 8, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4319, 8, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4324, 8, 84, 1, 84, 3, 84, 4327, 8, 84, 1, 84, 3, 84, 4330, 8, 84, 1, 84, 3, 84, 4333, 8, 84, 1, 84, 3, 84, 4336, 8, 84, 1, 84, 3, 84, 4339, 8, 84, 1, 84, 3, 84, 4342, 8, 84, 1, 84, 3, 84, 4345, 8, 84, 1, 84, 3, 84, 4348, 8, 84, 1, 84, 3, 84, 4351, 8, 84, 1, 84, 3, 84, 4354, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 4365, 8, 84, 1, 84, 3, 84, 4368, 8, 84, 1, 84, 3, 84, 4371, 8, 84, 1, 84, 3, 84, 4374, 8, 84, 1, 84, 3, 84, 4377, 8, 84, 3, 84, 4379, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 4393, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 4400, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 3, 90, 4406, 8, 90, 1, 91, 1, 91, 3, 91, 4410, 8, 91, 1, 92, 1, 92, 1, 92, 3, 92, 4415, 8, 92, 1, 93, 1, 93, 1, 93, 5, 93, 4420, 8, 93, 10, 93, 12, 93, 4423, 9, 93, 1, 94, 1, 94, 3, 94, 4427, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 4436, 8, 95, 3, 95, 4438, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 4444, 8, 96, 1, 96, 3, 96, 4447, 8, 96, 1, 97, 1, 97, 3, 97, 4451, 8, 97, 1, 97, 3, 97, 4454, 8, 97, 1, 97, 3, 97, 4457, 8, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 4471, 8, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 5, 107, 4498, 8, 107, 10, 107, 12, 107, 4501, 9, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 4535, 8, 109, 3, 109, 4537, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 4546, 8, 110, 1, 111, 1, 111, 3, 111, 4550, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 4559, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 4565, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 4571, 8, 111, 1, 111, 3, 111, 4574, 8, 111, 1, 111, 3, 111, 4577, 8, 111, 1, 111, 3, 111, 4580, 8, 111, 1, 111, 3, 111, 4583, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 4591, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 4599, 8, 113, 1, 113, 3, 113, 4602, 8, 113, 1, 114, 3, 114, 4605, 8, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 4616, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 4622, 8, 115, 1, 115, 5, 115, 4625, 8, 115, 10, 115, 12, 115, 4628, 9, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 4638, 8, 117, 1, 118, 1, 118, 3, 118, 4642, 8, 118, 1, 118, 3, 118, 4645, 8, 118, 1, 118, 3, 118, 4648, 8, 118, 1, 118, 3, 118, 4651, 8, 118, 1, 118, 3, 118, 4654, 8, 118, 1, 118, 3, 118, 4657, 8, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 4666, 8, 119, 10, 119, 12, 119, 4669, 9, 119, 1, 120, 1, 120, 3, 120, 4673, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 4684, 8, 121, 10, 121, 12, 121, 4687, 9, 121, 1, 121, 1, 121, 1, 122, 1, 122, 3, 122, 4693, 8, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 3, 126, 4706, 8, 126, 1, 126, 1, 126, 1, 126, 3, 126, 4711, 8, 126, 1, 126, 1, 126, 1, 126, 3, 126, 4716, 8, 126, 5, 126, 4718, 8, 126, 10, 126, 12, 126, 4721, 9, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 5, 129, 4734, 8, 129, 10, 129, 12, 129, 4737, 9, 129, 1, 130, 1, 130, 5, 130, 4741, 8, 130, 10, 130, 12, 130, 4744, 9, 130, 1, 131, 1, 131, 1, 131, 3, 131, 4749, 8, 131, 1, 131, 1, 131, 3, 131, 4753, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 4763, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 4769, 8, 133, 10, 133, 12, 133, 4772, 9, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 4780, 8, 133, 10, 133, 12, 133, 4783, 9, 133, 1, 133, 1, 133, 3, 133, 4787, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4798, 8, 135, 10, 135, 12, 135, 4801, 9, 135, 3, 135, 4803, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4811, 8, 135, 10, 135, 12, 135, 4814, 9, 135, 3, 135, 4816, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4825, 8, 135, 10, 135, 12, 135, 4828, 9, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 4835, 8, 135, 10, 135, 12, 135, 4838, 9, 135, 3, 135, 4840, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 5, 136, 4846, 8, 136, 10, 136, 12, 136, 4849, 9, 136, 3, 136, 4851, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 4863, 8, 139, 1, 139, 5, 139, 4866, 8, 139, 10, 139, 12, 139, 4869, 9, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 4877, 8, 140, 1, 140, 5, 140, 4880, 8, 140, 10, 140, 12, 140, 4883, 9, 140, 1, 140, 1, 140, 3, 140, 4887, 8, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 4894, 8, 140, 10, 140, 12, 140, 4897, 9, 140, 1, 140, 1, 140, 3, 140, 4901, 8, 140, 3, 140, 4903, 8, 140, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 4909, 8, 141, 3, 141, 4911, 8, 141, 1, 141, 3, 141, 4914, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4920, 8, 142, 1, 143, 1, 143, 1, 143, 5, 143, 4925, 8, 143, 10, 143, 12, 143, 4928, 9, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 5, 144, 4937, 8, 144, 10, 144, 12, 144, 4940, 9, 144, 3, 144, 4942, 8, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 5, 144, 4950, 8, 144, 10, 144, 12, 144, 4953, 9, 144, 1, 145, 3, 145, 4956, 8, 145, 1, 145, 3, 145, 4959, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 4966, 8, 146, 10, 146, 12, 146, 4969, 9, 146, 1, 147, 1, 147, 3, 147, 4973, 8, 147, 1, 147, 1, 147, 3, 147, 4977, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 4989, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 5, 149, 4996, 8, 149, 10, 149, 12, 149, 4999, 9, 149, 1, 150, 3, 150, 5002, 8, 150, 1, 150, 1, 150, 1, 150, 3, 150, 5007, 8, 150, 1, 150, 1, 150, 3, 150, 5011, 8, 150, 1, 150, 1, 150, 3, 150, 5015, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 5025, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 5031, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 5, 153, 5040, 8, 153, 10, 153, 12, 153, 5043, 9, 153, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 5049, 8, 154, 1, 154, 1, 154, 1, 155, 1, 155, 3, 155, 5055, 8, 155, 1, 155, 3, 155, 5058, 8, 155, 1, 155, 3, 155, 5061, 8, 155, 1, 155, 3, 155, 5064, 8, 155, 1, 155, 3, 155, 5067, 8, 155, 1, 155, 1, 155, 3, 155, 5071, 8, 155, 1, 155, 3, 155, 5074, 8, 155, 1, 155, 5, 155, 5077, 8, 155, 10, 155, 12, 155, 5080, 9, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 5087, 8, 155, 10, 155, 12, 155, 5090, 9, 155, 1, 155, 1, 155, 1, 155, 3, 155, 5095, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 5104, 8, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 5117, 8, 158, 10, 158, 12, 158, 5120, 9, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 3, 160, 5128, 8, 160, 1, 161, 1, 161, 3, 161, 5132, 8, 161, 1, 162, 3, 162, 5135, 8, 162, 1, 162, 1, 162, 3, 162, 5139, 8, 162, 3, 162, 5141, 8, 162, 1, 163, 1, 163, 1, 163, 5, 163, 5146, 8, 163, 10, 163, 12, 163, 5149, 9, 163, 1, 164, 1, 164, 1, 164, 5, 164, 5154, 8, 164, 10, 164, 12, 164, 5157, 9, 164, 1, 165, 1, 165, 1, 165, 3, 165, 5162, 8, 165, 1, 166, 1, 166, 1, 166, 5, 166, 5167, 8, 166, 10, 166, 12, 166, 5170, 9, 166, 1, 167, 1, 167, 1, 167, 3, 167, 5175, 8, 167, 1, 167, 3, 167, 5178, 8, 167, 1, 167, 1, 167, 3, 167, 5182, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5189, 8, 167, 1, 167, 3, 167, 5192, 8, 167, 1, 167, 3, 167, 5195, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5202, 8, 167, 3, 167, 5204, 8, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5209, 8, 167, 1, 167, 1, 167, 3, 167, 5213, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5226, 8, 167, 3, 167, 5228, 8, 167, 3, 167, 5230, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 5239, 8, 167, 3, 167, 5241, 8, 167, 1, 167, 1, 167, 3, 167, 5245, 8, 167, 1, 168, 1, 168, 1, 168, 5, 168, 5250, 8, 168, 10, 168, 12, 168, 5253, 9, 168, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 5259, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 5265, 8, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 5272, 8, 169, 1, 169, 1, 169, 3, 169, 5276, 8, 169, 1, 170, 1, 170, 1, 170, 5, 170, 5281, 8, 170, 10, 170, 12, 170, 5284, 9, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 5290, 8, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 5296, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 5302, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 5310, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 5316, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 5333, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 5339, 8, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 5, 175, 5348, 8, 175, 10, 175, 12, 175, 5351, 9, 175, 1, 175, 1, 175, 1, 175, 3, 175, 5356, 8, 175, 3, 175, 5358, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 5364, 8, 176, 10, 176, 12, 176, 5367, 9, 176, 1, 176, 1, 176, 1, 177, 3, 177, 5372, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 5378, 8, 177, 1, 178, 1, 178, 1, 178, 5, 178, 5383, 8, 178, 10, 178, 12, 178, 5386, 9, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 5393, 8, 179, 1, 179, 3, 179, 5396, 8, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 5405, 8, 181, 10, 181, 12, 181, 5408, 9, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 5416, 8, 182, 10, 182, 12, 182, 5419, 9, 182, 1, 183, 1, 183, 3, 183, 5423, 8, 183, 1, 183, 3, 183, 5426, 8, 183, 1, 184, 1, 184, 1, 184, 5, 184, 5431, 8, 184, 10, 184, 12, 184, 5434, 9, 184, 1, 185, 1, 185, 3, 185, 5438, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 4, 186, 5448, 8, 186, 11, 186, 12, 186, 5449, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 5456, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 5478, 8, 187, 1, 187, 1, 187, 3, 187, 5482, 8, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 5, 187, 5496, 8, 187, 10, 187, 12, 187, 5499, 9, 187, 1, 188, 1, 188, 1, 188, 1, 188, 5, 188, 5505, 8, 188, 10, 188, 12, 188, 5508, 9, 188, 3, 188, 5510, 8, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 3, 189, 5517, 8, 189, 1, 190, 3, 190, 5520, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5528, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5533, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5538, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5546, 8, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 5553, 8, 190, 10, 190, 12, 190, 5556, 9, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5562, 8, 190, 1, 190, 1, 190, 1, 190, 3, 190, 5567, 8, 190, 1, 190, 3, 190, 5570, 8, 190, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 5576, 8, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 5597, 8, 191, 10, 191, 12, 191, 5600, 9, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 4, 192, 5612, 8, 192, 11, 192, 12, 192, 5613, 1, 192, 1, 192, 3, 192, 5618, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 4, 192, 5625, 8, 192, 11, 192, 12, 192, 5626, 1, 192, 1, 192, 3, 192, 5631, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 5646, 8, 192, 10, 192, 12, 192, 5649, 9, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 5655, 8, 192, 10, 192, 12, 192, 5658, 9, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 5, 192, 5665, 8, 192, 10, 192, 12, 192, 5668, 9, 192, 1, 192, 1, 192, 3, 192, 5672, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5700, 8, 192, 1, 192, 1, 192, 3, 192, 5704, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5715, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5723, 8, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5728, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5740, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 5752, 8, 192, 5, 192, 5754, 8, 192, 10, 192, 12, 192, 5757, 9, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 5769, 8, 193, 1, 194, 1, 194, 1, 194, 3, 194, 5774, 8, 194, 3, 194, 5776, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 5781, 8, 195, 1, 195, 1, 195, 1, 195, 5, 195, 5786, 8, 195, 10, 195, 12, 195, 5789, 9, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 5, 195, 5796, 8, 195, 10, 195, 12, 195, 5799, 9, 195, 3, 195, 5801, 8, 195, 3, 195, 5803, 8, 195, 1, 195, 1, 195, 1, 195, 3, 195, 5808, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 5813, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 5833, 8, 197, 1, 198, 1, 198, 3, 198, 5837, 8, 198, 1, 198, 3, 198, 5840, 8, 198, 1, 198, 3, 198, 5843, 8, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 5856, 8, 199, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 5867, 8, 201, 1, 202, 1, 202, 1, 202, 5, 202, 5872, 8, 202, 10, 202, 12, 202, 5875, 9, 202, 1, 203, 3, 203, 5878, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 5883, 8, 203, 1, 203, 3, 203, 5886, 8, 203, 1, 203, 1, 203, 3, 203, 5890, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5898, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5903, 8, 204, 1, 204, 1, 204, 5, 204, 5907, 8, 204, 10, 204, 12, 204, 5910, 9, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5918, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 5, 204, 5925, 8, 204, 10, 204, 12, 204, 5928, 9, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 5, 204, 5935, 8, 204, 10, 204, 12, 204, 5938, 9, 204, 1, 204, 1, 204, 1, 204, 3, 204, 5943, 8, 204, 1, 205, 1, 205, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 210, 1, 210, 3, 210, 5962, 8, 210, 1, 210, 3, 210, 5965, 8, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 5, 211, 5996, 8, 211, 10, 211, 12, 211, 5999, 9, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 5, 211, 6009, 8, 211, 10, 211, 12, 211, 6012, 9, 211, 1, 211, 3, 211, 6015, 8, 211, 3, 211, 6017, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 6051, 8, 212, 1, 213, 1, 213, 1, 213, 5, 213, 6056, 8, 213, 10, 213, 12, 213, 6059, 9, 213, 1, 214, 1, 214, 1, 214, 1, 214, 3, 214, 6065, 8, 214, 1, 215, 1, 215, 1, 215, 5, 215, 6070, 8, 215, 10, 215, 12, 215, 6073, 9, 215, 1, 216, 3, 216, 6076, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 6082, 8, 216, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 3, 219, 6092, 8, 219, 1, 219, 1, 219, 1, 219, 3, 219, 6097, 8, 219, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 6103, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 6115, 8, 221, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 4, 223, 6122, 8, 223, 11, 223, 12, 223, 6123, 1, 223, 3, 223, 6127, 8, 223, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 3, 225, 6134, 8, 225, 1, 226, 1, 226, 1, 227, 3, 227, 6139, 8, 227, 1, 227, 1, 227, 3, 227, 6143, 8, 227, 1, 227, 3, 227, 6146, 8, 227, 1, 228, 1, 228, 1, 228, 2, 534, 541, 4, 230, 374, 382, 384, 229, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 0, 61, 1, 0, 346, 347, 2, 0, 191, 191, 347, 347, 2, 0, 35, 35, 188, 188, 2, 0, 32, 32, 534, 534, 2, 0, 169, 169, 446, 446, 3, 0, 18, 18, 146, 146, 469, 469, 2, 0, 187, 187, 217, 217, 2, 0, 332, 332, 383, 383, 3, 0, 46, 46, 231, 231, 299, 299, 2, 0, 18, 18, 440, 440, 3, 0, 110, 110, 377, 377, 455, 455, 2, 0, 111, 111, 401, 401, 2, 0, 158, 158, 492, 492, 2, 0, 162, 162, 309, 309, 1, 0, 485, 486, 2, 0, 112, 112, 402, 402, 2, 0, 80, 80, 175, 175, 2, 0, 219, 220, 244, 245, 3, 0, 26, 26, 126, 126, 284, 284, 1, 0, 142, 143, 2, 0, 217, 217, 454, 454, 4, 0, 54, 54, 204, 204, 262, 262, 397, 397, 3, 0, 119, 119, 211, 211, 403, 403, 1, 0, 11, 12, 2, 0, 310, 310, 500, 500, 2, 0, 529, 529, 534, 534, 1, 0, 321, 322, 2, 0, 260, 260, 360, 360, 3, 0, 195, 195, 262, 262, 407, 407, 2, 0, 125, 125, 216, 216, 2, 0, 32, 32, 85, 85, 5, 0, 145, 145, 198, 198, 336, 336, 457, 457, 487, 487, 2, 0, 128, 129, 166, 166, 10, 0, 20, 20, 23, 23, 136, 136, 267, 267, 283, 283, 312, 312, 320, 320, 333, 333, 387, 387, 412, 412, 3, 0, 161, 161, 288, 288, 468, 468, 2, 0, 20, 20, 133, 133, 2, 0, 301, 301, 477, 477, 2, 0, 29, 29, 128, 128, 2, 0, 178, 178, 249, 249, 8, 0, 48, 48, 194, 194, 208, 208, 281, 281, 287, 287, 353, 353, 374, 375, 434, 434, 1, 0, 236, 237, 2, 0, 24, 24, 517, 517, 3, 0, 256, 256, 369, 369, 389, 389, 1, 0, 271, 277, 2, 0, 172, 172, 460, 460, 2, 0, 510, 511, 515, 515, 2, 0, 138, 138, 512, 514, 1, 0, 510, 511, 2, 0, 195, 195, 407, 407, 2, 0, 113, 113, 452, 452, 2, 0, 414, 414, 472, 472, 1, 0, 225, 226, 2, 0, 360, 360, 396, 396, 2, 0, 181, 181, 343, 343, 4, 0, 113, 113, 116, 116, 118, 118, 452, 452, 1, 0, 503, 509, 8, 0, 119, 119, 211, 211, 289, 289, 291, 291, 358, 358, 403, 403, 493, 493, 502, 502, 2, 0, 512, 512, 534, 534, 1, 0, 278, 279, 1, 0, 535, 536, 99, 0, 9, 10, 13, 13, 16, 19, 23, 23, 27, 27, 30, 31, 33, 34, 36, 39, 42, 42, 45, 58, 60, 62, 66, 71, 73, 74, 76, 78, 80, 92, 94, 98, 100, 101, 105, 110, 113, 122, 125, 125, 127, 127, 130, 131, 134, 135, 139, 140, 144, 144, 147, 148, 150, 156, 158, 160, 162, 162, 165, 165, 169, 169, 171, 171, 173, 178, 185, 186, 189, 189, 191, 191, 193, 195, 198, 198, 200, 202, 204, 206, 208, 213, 215, 216, 218, 218, 220, 220, 231, 233, 235, 240, 242, 243, 247, 247, 249, 249, 251, 252, 254, 255, 258, 259, 262, 267, 269, 270, 272, 277, 280, 281, 283, 287, 289, 294, 296, 300, 302, 302, 305, 305, 307, 308, 310, 312, 319, 320, 322, 334, 336, 336, 338, 342, 346, 346, 348, 359, 364, 367, 373, 376, 378, 385, 387, 387, 389, 389, 392, 394, 397, 401, 403, 403, 406, 408, 411, 412, 415, 415, 417, 420, 422, 434, 440, 440, 444, 446, 448, 449, 451, 452, 455, 455, 457, 458, 461, 462, 464, 464, 466, 466, 470, 471, 473, 473, 476, 476, 479, 479, 481, 493, 498, 498, 502, 502, 524, 526, 7260, 0, 461, 1, 0, 0, 0, 2, 489, 1, 0, 0, 0, 4, 577, 1, 0, 0, 0, 6, 607, 1, 0, 0, 0, 8, 625, 1, 0, 0, 0, 10, 766, 1, 0, 0, 0, 12, 824, 1, 0, 0, 0, 14, 845, 1, 0, 0, 0, 16, 962, 1, 0, 0, 0, 18, 1287, 1, 0, 0, 0, 20, 1445, 1, 0, 0, 0, 22, 1571, 1, 0, 0, 0, 24, 1917, 1, 0, 0, 0, 26, 1921, 1, 0, 0, 0, 28, 1923, 1, 0, 0, 0, 30, 2029, 1, 0, 0, 0, 32, 2031, 1, 0, 0, 0, 34, 2037, 1, 0, 0, 0, 36, 2409, 1, 0, 0, 0, 38, 2411, 1, 0, 0, 0, 40, 2543, 1, 0, 0, 0, 42, 2555, 1, 0, 0, 0, 44, 2557, 1, 0, 0, 0, 46, 2561, 1, 0, 0, 0, 48, 2565, 1, 0, 0, 0, 50, 2568, 1, 0, 0, 0, 52, 2572, 1, 0, 0, 0, 54, 2597, 1, 0, 0, 0, 56, 2599, 1, 0, 0, 0, 58, 2607, 1, 0, 0, 0, 60, 2632, 1, 0, 0, 0, 62, 2644, 1, 0, 0, 0, 64, 2646, 1, 0, 0, 0, 66, 2666, 1, 0, 0, 0, 68, 2693, 1, 0, 0, 0, 70, 2758, 1, 0, 0, 0, 72, 2864, 1, 0, 0, 0, 74, 2899, 1, 0, 0, 0, 76, 2961, 1, 0, 0, 0, 78, 2963, 1, 0, 0, 0, 80, 2987, 1, 0, 0, 0, 82, 3031, 1, 0, 0, 0, 84, 3117, 1, 0, 0, 0, 86, 3124, 1, 0, 0, 0, 88, 3126, 1, 0, 0, 0, 90, 3192, 1, 0, 0, 0, 92, 3292, 1, 0, 0, 0, 94, 3294, 1, 0, 0, 0, 96, 3298, 1, 0, 0, 0, 98, 3531, 1, 0, 0, 0, 100, 3536, 1, 0, 0, 0, 102, 3538, 1, 0, 0, 0, 104, 3541, 1, 0, 0, 0, 106, 3583, 1, 0, 0, 0, 108, 3653, 1, 0, 0, 0, 110, 3745, 1, 0, 0, 0, 112, 3765, 1, 0, 0, 0, 114, 3870, 1, 0, 0, 0, 116, 3872, 1, 0, 0, 0, 118, 3886, 1, 0, 0, 0, 120, 3888, 1, 0, 0, 0, 122, 3896, 1, 0, 0, 0, 124, 3902, 1, 0, 0, 0, 126, 3917, 1, 0, 0, 0, 128, 3959, 1, 0, 0, 0, 130, 3961, 1, 0, 0, 0, 132, 4015, 1, 0, 0, 0, 134, 4017, 1, 0, 0, 0, 136, 4069, 1, 0, 0, 0, 138, 4090, 1, 0, 0, 0, 140, 4092, 1, 0, 0, 0, 142, 4095, 1, 0, 0, 0, 144, 4119, 1, 0, 0, 0, 146, 4130, 1, 0, 0, 0, 148, 4132, 1, 0, 0, 0, 150, 4176, 1, 0, 0, 0, 152, 4178, 1, 0, 0, 0, 154, 4196, 1, 0, 0, 0, 156, 4217, 1, 0, 0, 0, 158, 4231, 1, 0, 0, 0, 160, 4247, 1, 0, 0, 0, 162, 4250, 1, 0, 0, 0, 164, 4264, 1, 0, 0, 0, 166, 4277, 1, 0, 0, 0, 168, 4378, 1, 0, 0, 0, 170, 4380, 1, 0, 0, 0, 172, 4382, 1, 0, 0, 0, 174, 4392, 1, 0, 0, 0, 176, 4394, 1, 0, 0, 0, 178, 4401, 1, 0, 0, 0, 180, 4405, 1, 0, 0, 0, 182, 4409, 1, 0, 0, 0, 184, 4414, 1, 0, 0, 0, 186, 4416, 1, 0, 0, 0, 188, 4426, 1, 0, 0, 0, 190, 4428, 1, 0, 0, 0, 192, 4439, 1, 0, 0, 0, 194, 4448, 1, 0, 0, 0, 196, 4458, 1, 0, 0, 0, 198, 4460, 1, 0, 0, 0, 200, 4462, 1, 0, 0, 0, 202, 4470, 1, 0, 0, 0, 204, 4472, 1, 0, 0, 0, 206, 4474, 1, 0, 0, 0, 208, 4478, 1, 0, 0, 0, 210, 4482, 1, 0, 0, 0, 212, 4486, 1, 0, 0, 0, 214, 4492, 1, 0, 0, 0, 216, 4504, 1, 0, 0, 0, 218, 4536, 1, 0, 0, 0, 220, 4538, 1, 0, 0, 0, 222, 4547, 1, 0, 0, 0, 224, 4590, 1, 0, 0, 0, 226, 4592, 1, 0, 0, 0, 228, 4604, 1, 0, 0, 0, 230, 4609, 1, 0, 0, 0, 232, 4629, 1, 0, 0, 0, 234, 4637, 1, 0, 0, 0, 236, 4639, 1, 0, 0, 0, 238, 4661, 1, 0, 0, 0, 240, 4670, 1, 0, 0, 0, 242, 4679, 1, 0, 0, 0, 244, 4690, 1, 0, 0, 0, 246, 4696, 1, 0, 0, 0, 248, 4698, 1, 0, 0, 0, 250, 4701, 1, 0, 0, 0, 252, 4705, 1, 0, 0, 0, 254, 4722, 1, 0, 0, 0, 256, 4725, 1, 0, 0, 0, 258, 4730, 1, 0, 0, 0, 260, 4738, 1, 0, 0, 0, 262, 4745, 1, 0, 0, 0, 264, 4762, 1, 0, 0, 0, 266, 4786, 1, 0, 0, 0, 268, 4788, 1, 0, 0, 0, 270, 4839, 1, 0, 0, 0, 272, 4841, 1, 0, 0, 0, 274, 4854, 1, 0, 0, 0, 276, 4857, 1, 0, 0, 0, 278, 4860, 1, 0, 0, 0, 280, 4902, 1, 0, 0, 0, 282, 4913, 1, 0, 0, 0, 284, 4915, 1, 0, 0, 0, 286, 4921, 1, 0, 0, 0, 288, 4929, 1, 0, 0, 0, 290, 4955, 1, 0, 0, 0, 292, 4960, 1, 0, 0, 0, 294, 4970, 1, 0, 0, 0, 296, 4988, 1, 0, 0, 0, 298, 4990, 1, 0, 0, 0, 300, 5024, 1, 0, 0, 0, 302, 5030, 1, 0, 0, 0, 304, 5032, 1, 0, 0, 0, 306, 5036, 1, 0, 0, 0, 308, 5044, 1, 0, 0, 0, 310, 5103, 1, 0, 0, 0, 312, 5105, 1, 0, 0, 0, 314, 5108, 1, 0, 0, 0, 316, 5113, 1, 0, 0, 0, 318, 5121, 1, 0, 0, 0, 320, 5127, 1, 0, 0, 0, 322, 5131, 1, 0, 0, 0, 324, 5140, 1, 0, 0, 0, 326, 5142, 1, 0, 0, 0, 328, 5150, 1, 0, 0, 0, 330, 5158, 1, 0, 0, 0, 332, 5163, 1, 0, 0, 0, 334, 5171, 1, 0, 0, 0, 336, 5246, 1, 0, 0, 0, 338, 5254, 1, 0, 0, 0, 340, 5277, 1, 0, 0, 0, 342, 5289, 1, 0, 0, 0, 344, 5297, 1, 0, 0, 0, 346, 5311, 1, 0, 0, 0, 348, 5325, 1, 0, 0, 0, 350, 5334, 1, 0, 0, 0, 352, 5359, 1, 0, 0, 0, 354, 5377, 1, 0, 0, 0, 356, 5379, 1, 0, 0, 0, 358, 5387, 1, 0, 0, 0, 360, 5397, 1, 0, 0, 0, 362, 5399, 1, 0, 0, 0, 364, 5411, 1, 0, 0, 0, 366, 5420, 1, 0, 0, 0, 368, 5427, 1, 0, 0, 0, 370, 5437, 1, 0, 0, 0, 372, 5455, 1, 0, 0, 0, 374, 5481, 1, 0, 0, 0, 376, 5500, 1, 0, 0, 0, 378, 5516, 1, 0, 0, 0, 380, 5569, 1, 0, 0, 0, 382, 5575, 1, 0, 0, 0, 384, 5727, 1, 0, 0, 0, 386, 5768, 1, 0, 0, 0, 388, 5775, 1, 0, 0, 0, 390, 5777, 1, 0, 0, 0, 392, 5812, 1, 0, 0, 0, 394, 5832, 1, 0, 0, 0, 396, 5834, 1, 0, 0, 0, 398, 5855, 1, 0, 0, 0, 400, 5857, 1, 0, 0, 0, 402, 5866, 1, 0, 0, 0, 404, 5868, 1, 0, 0, 0, 406, 5889, 1, 0, 0, 0, 408, 5942, 1, 0, 0, 0, 410, 5944, 1, 0, 0, 0, 412, 5946, 1, 0, 0, 0, 414, 5948, 1, 0, 0, 0, 416, 5953, 1, 0, 0, 0, 418, 5957, 1, 0, 0, 0, 420, 5959, 1, 0, 0, 0, 422, 6016, 1, 0, 0, 0, 424, 6050, 1, 0, 0, 0, 426, 6052, 1, 0, 0, 0, 428, 6060, 1, 0, 0, 0, 430, 6066, 1, 0, 0, 0, 432, 6075, 1, 0, 0, 0, 434, 6083, 1, 0, 0, 0, 436, 6085, 1, 0, 0, 0, 438, 6088, 1, 0, 0, 0, 440, 6102, 1, 0, 0, 0, 442, 6114, 1, 0, 0, 0, 444, 6116, 1, 0, 0, 0, 446, 6126, 1, 0, 0, 0, 448, 6128, 1, 0, 0, 0, 450, 6133, 1, 0, 0, 0, 452, 6135, 1, 0, 0, 0, 454, 6145, 1, 0, 0, 0, 456, 6147, 1, 0, 0, 0, 458, 460, 5, 1, 0, 0, 459, 458, 1, 0, 0, 0, 460, 463, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 465, 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 464, 466, 3, 4, 2, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 475, 1, 0, 0, 0, 467, 469, 5, 1, 0, 0, 468, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, 3, 4, 2, 0, 473, 468, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 480, 5, 1, 0, 0, 479, 478, 1, 0, 0, 0, 480, 483, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 484, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 484, 485, 5, 0, 0, 1, 485, 1, 1, 0, 0, 0, 486, 488, 5, 1, 0, 0, 487, 486, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 494, 3, 4, 2, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 498, 1, 0, 0, 0, 495, 497, 5, 1, 0, 0, 496, 495, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 501, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 501, 502, 5, 0, 0, 1, 502, 3, 1, 0, 0, 0, 503, 578, 3, 6, 3, 0, 504, 505, 5, 62, 0, 0, 505, 506, 3, 326, 163, 0, 506, 515, 5, 2, 0, 0, 507, 512, 3, 370, 185, 0, 508, 509, 5, 4, 0, 0, 509, 511, 3, 370, 185, 0, 510, 508, 1, 0, 0, 0, 511, 514, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 516, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 515, 507, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 5, 3, 0, 0, 518, 578, 1, 0, 0, 0, 519, 527, 5, 21, 0, 0, 520, 523, 5, 99, 0, 0, 521, 522, 5, 313, 0, 0, 522, 524, 5, 374, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 527, 5, 374, 0, 0, 526, 519, 1, 0, 0, 0, 526, 520, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 7, 0, 0, 0, 529, 530, 3, 326, 163, 0, 530, 534, 5, 2, 0, 0, 531, 533, 9, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 536, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, 537, 1, 0, 0, 0, 536, 534, 1, 0, 0, 0, 537, 541, 5, 3, 0, 0, 538, 540, 9, 0, 0, 0, 539, 538, 1, 0, 0, 0, 540, 543, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 578, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 544, 545, 5, 142, 0, 0, 545, 548, 7, 0, 0, 0, 546, 547, 5, 214, 0, 0, 547, 549, 5, 164, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 578, 3, 326, 163, 0, 551, 552, 5, 413, 0, 0, 552, 553, 7, 1, 0, 0, 553, 557, 5, 427, 0, 0, 554, 555, 5, 256, 0, 0, 555, 558, 3, 382, 191, 0, 556, 558, 3, 248, 124, 0, 557, 554, 1, 0, 0, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 578, 1, 0, 0, 0, 559, 560, 5, 413, 0, 0, 560, 561, 5, 99, 0, 0, 561, 562, 5, 347, 0, 0, 562, 578, 3, 326, 163, 0, 563, 565, 5, 15, 0, 0, 564, 563, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 5, 413, 0, 0, 567, 568, 7, 2, 0, 0, 568, 571, 5, 89, 0, 0, 569, 570, 5, 256, 0, 0, 570, 572, 3, 382, 191, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 575, 1, 0, 0, 0, 573, 574, 5, 187, 0, 0, 574, 576, 5, 534, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 578, 1, 0, 0, 0, 577, 503, 1, 0, 0, 0, 577, 504, 1, 0, 0, 0, 577, 526, 1, 0, 0, 0, 577, 544, 1, 0, 0, 0, 577, 551, 1, 0, 0, 0, 577, 559, 1, 0, 0, 0, 577, 564, 1, 0, 0, 0, 578, 5, 1, 0, 0, 0, 579, 581, 3, 194, 97, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584, 3, 228, 114, 0, 583, 585, 3, 226, 113, 0, 584, 583, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 608, 1, 0, 0, 0, 586, 608, 3, 16, 8, 0, 587, 608, 3, 18, 9, 0, 588, 608, 3, 20, 10, 0, 589, 608, 3, 10, 5, 0, 590, 608, 3, 12, 6, 0, 591, 608, 3, 14, 7, 0, 592, 608, 3, 62, 31, 0, 593, 608, 3, 156, 78, 0, 594, 608, 3, 22, 11, 0, 595, 608, 3, 132, 66, 0, 596, 608, 3, 144, 72, 0, 597, 608, 3, 60, 30, 0, 598, 608, 3, 24, 12, 0, 599, 608, 3, 26, 13, 0, 600, 608, 3, 68, 34, 0, 601, 608, 3, 74, 37, 0, 602, 608, 3, 72, 36, 0, 603, 608, 3, 146, 73, 0, 604, 608, 3, 28, 14, 0, 605, 608, 3, 108, 54, 0, 606, 608, 3, 8, 4, 0, 607, 580, 1, 0, 0, 0, 607, 586, 1, 0, 0, 0, 607, 587, 1, 0, 0, 0, 607, 588, 1, 0, 0, 0, 607, 589, 1, 0, 0, 0, 607, 590, 1, 0, 0, 0, 607, 591, 1, 0, 0, 0, 607, 592, 1, 0, 0, 0, 607, 593, 1, 0, 0, 0, 607, 594, 1, 0, 0, 0, 607, 595, 1, 0, 0, 0, 607, 596, 1, 0, 0, 0, 607, 597, 1, 0, 0, 0, 607, 598, 1, 0, 0, 0, 607, 599, 1, 0, 0, 0, 607, 600, 1, 0, 0, 0, 607, 601, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 603, 1, 0, 0, 0, 607, 604, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 7, 1, 0, 0, 0, 609, 626, 3, 148, 74, 0, 610, 626, 3, 150, 75, 0, 611, 626, 3, 154, 77, 0, 612, 626, 3, 114, 57, 0, 613, 626, 3, 106, 53, 0, 614, 626, 3, 110, 55, 0, 615, 626, 3, 90, 45, 0, 616, 626, 3, 84, 42, 0, 617, 626, 3, 76, 38, 0, 618, 626, 3, 82, 41, 0, 619, 626, 3, 70, 35, 0, 620, 626, 3, 66, 33, 0, 621, 626, 3, 64, 32, 0, 622, 626, 3, 40, 20, 0, 623, 626, 3, 36, 18, 0, 624, 626, 3, 30, 15, 0, 625, 609, 1, 0, 0, 0, 625, 610, 1, 0, 0, 0, 625, 611, 1, 0, 0, 0, 625, 612, 1, 0, 0, 0, 625, 613, 1, 0, 0, 0, 625, 614, 1, 0, 0, 0, 625, 615, 1, 0, 0, 0, 625, 616, 1, 0, 0, 0, 625, 617, 1, 0, 0, 0, 625, 618, 1, 0, 0, 0, 625, 619, 1, 0, 0, 0, 625, 620, 1, 0, 0, 0, 625, 621, 1, 0, 0, 0, 625, 622, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 624, 1, 0, 0, 0, 626, 9, 1, 0, 0, 0, 627, 628, 5, 99, 0, 0, 628, 629, 5, 280, 0, 0, 629, 633, 5, 489, 0, 0, 630, 631, 5, 214, 0, 0, 631, 632, 5, 303, 0, 0, 632, 634, 5, 164, 0, 0, 633, 630, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 640, 3, 326, 163, 0, 636, 637, 5, 2, 0, 0, 637, 638, 3, 328, 164, 0, 638, 639, 5, 3, 0, 0, 639, 641, 1, 0, 0, 0, 640, 636, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 643, 1, 0, 0, 0, 642, 644, 3, 172, 86, 0, 643, 642, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 652, 1, 0, 0, 0, 645, 647, 5, 367, 0, 0, 646, 648, 3, 178, 89, 0, 647, 646, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 1, 0, 0, 0, 649, 651, 3, 174, 87, 0, 650, 649, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 653, 1, 0, 0, 0, 652, 645, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 659, 1, 0, 0, 0, 654, 656, 5, 146, 0, 0, 655, 654, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 5, 244, 0, 0, 658, 660, 3, 304, 152, 0, 659, 655, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 662, 5, 81, 0, 0, 662, 664, 5, 529, 0, 0, 663, 661, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 671, 1, 0, 0, 0, 665, 666, 5, 321, 0, 0, 666, 667, 5, 59, 0, 0, 667, 668, 5, 2, 0, 0, 668, 669, 3, 180, 90, 0, 669, 670, 5, 3, 0, 0, 670, 672, 1, 0, 0, 0, 671, 665, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 684, 1, 0, 0, 0, 673, 674, 5, 136, 0, 0, 674, 678, 5, 59, 0, 0, 675, 676, 5, 202, 0, 0, 676, 679, 3, 304, 152, 0, 677, 679, 5, 359, 0, 0, 678, 675, 1, 0, 0, 0, 678, 677, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 681, 5, 55, 0, 0, 681, 683, 7, 3, 0, 0, 682, 680, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 685, 1, 0, 0, 0, 684, 673, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 687, 1, 0, 0, 0, 686, 688, 3, 314, 157, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 5, 28, 0, 0, 690, 691, 3, 228, 114, 0, 691, 767, 1, 0, 0, 0, 692, 693, 5, 367, 0, 0, 693, 694, 5, 280, 0, 0, 694, 695, 5, 489, 0, 0, 695, 699, 3, 326, 163, 0, 696, 700, 3, 160, 80, 0, 697, 700, 5, 85, 0, 0, 698, 700, 5, 32, 0, 0, 699, 696, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 698, 1, 0, 0, 0, 700, 767, 1, 0, 0, 0, 701, 702, 5, 21, 0, 0, 702, 703, 5, 280, 0, 0, 703, 704, 5, 489, 0, 0, 704, 728, 3, 326, 163, 0, 705, 706, 5, 371, 0, 0, 706, 729, 3, 448, 224, 0, 707, 713, 5, 367, 0, 0, 708, 714, 3, 178, 89, 0, 709, 714, 3, 174, 87, 0, 710, 711, 3, 178, 89, 0, 711, 712, 3, 174, 87, 0, 712, 714, 1, 0, 0, 0, 713, 708, 1, 0, 0, 0, 713, 709, 1, 0, 0, 0, 713, 710, 1, 0, 0, 0, 714, 729, 1, 0, 0, 0, 715, 716, 5, 374, 0, 0, 716, 717, 5, 497, 0, 0, 717, 718, 5, 280, 0, 0, 718, 719, 5, 489, 0, 0, 719, 721, 3, 448, 224, 0, 720, 722, 3, 314, 157, 0, 721, 720, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 729, 1, 0, 0, 0, 723, 724, 5, 409, 0, 0, 724, 725, 5, 2, 0, 0, 725, 726, 3, 316, 158, 0, 726, 727, 5, 3, 0, 0, 727, 729, 1, 0, 0, 0, 728, 705, 1, 0, 0, 0, 728, 707, 1, 0, 0, 0, 728, 715, 1, 0, 0, 0, 728, 723, 1, 0, 0, 0, 729, 767, 1, 0, 0, 0, 730, 731, 5, 142, 0, 0, 731, 732, 5, 280, 0, 0, 732, 735, 5, 489, 0, 0, 733, 734, 5, 214, 0, 0, 734, 736, 5, 164, 0, 0, 735, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 740, 3, 326, 163, 0, 738, 739, 5, 309, 0, 0, 739, 741, 3, 326, 163, 0, 740, 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 767, 1, 0, 0, 0, 742, 743, 5, 329, 0, 0, 743, 744, 5, 280, 0, 0, 744, 745, 5, 489, 0, 0, 745, 746, 5, 239, 0, 0, 746, 747, 5, 309, 0, 0, 747, 767, 3, 326, 163, 0, 748, 749, 5, 384, 0, 0, 749, 750, 5, 280, 0, 0, 750, 751, 5, 489, 0, 0, 751, 752, 5, 239, 0, 0, 752, 753, 5, 309, 0, 0, 753, 767, 3, 326, 163, 0, 754, 755, 5, 63, 0, 0, 755, 756, 5, 280, 0, 0, 756, 757, 5, 489, 0, 0, 757, 758, 5, 444, 0, 0, 758, 759, 5, 534, 0, 0, 759, 760, 5, 309, 0, 0, 760, 767, 3, 326, 163, 0, 761, 762, 5, 413, 0, 0, 762, 763, 5, 99, 0, 0, 763, 764, 5, 280, 0, 0, 764, 765, 5, 489, 0, 0, 765, 767, 3, 326, 163, 0, 766, 627, 1, 0, 0, 0, 766, 692, 1, 0, 0, 0, 766, 701, 1, 0, 0, 0, 766, 730, 1, 0, 0, 0, 766, 742, 1, 0, 0, 0, 766, 748, 1, 0, 0, 0, 766, 754, 1, 0, 0, 0, 766, 761, 1, 0, 0, 0, 767, 11, 1, 0, 0, 0, 768, 769, 5, 99, 0, 0, 769, 770, 5, 239, 0, 0, 770, 771, 3, 326, 163, 0, 771, 772, 5, 309, 0, 0, 772, 792, 5, 399, 0, 0, 773, 774, 5, 160, 0, 0, 774, 775, 5, 534, 0, 0, 775, 781, 3, 448, 224, 0, 776, 779, 5, 425, 0, 0, 777, 780, 5, 529, 0, 0, 778, 780, 5, 108, 0, 0, 779, 777, 1, 0, 0, 0, 779, 778, 1, 0, 0, 0, 780, 782, 1, 0, 0, 0, 781, 776, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 785, 1, 0, 0, 0, 783, 784, 5, 154, 0, 0, 784, 786, 5, 529, 0, 0, 785, 783, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 793, 1, 0, 0, 0, 787, 790, 5, 30, 0, 0, 788, 791, 5, 529, 0, 0, 789, 791, 5, 108, 0, 0, 790, 788, 1, 0, 0, 0, 790, 789, 1, 0, 0, 0, 791, 793, 1, 0, 0, 0, 792, 773, 1, 0, 0, 0, 792, 787, 1, 0, 0, 0, 793, 795, 1, 0, 0, 0, 794, 796, 3, 436, 218, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 5, 139, 0, 0, 798, 799, 3, 16, 8, 0, 799, 825, 1, 0, 0, 0, 800, 801, 5, 329, 0, 0, 801, 803, 5, 239, 0, 0, 802, 804, 3, 80, 40, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 825, 1, 0, 0, 0, 805, 806, 5, 142, 0, 0, 806, 809, 5, 239, 0, 0, 807, 808, 5, 214, 0, 0, 808, 810, 5, 164, 0, 0, 809, 807, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 812, 1, 0, 0, 0, 811, 813, 3, 80, 40, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 825, 1, 0, 0, 0, 814, 815, 5, 384, 0, 0, 815, 817, 5, 239, 0, 0, 816, 818, 3, 80, 40, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 825, 1, 0, 0, 0, 819, 820, 5, 63, 0, 0, 820, 822, 5, 444, 0, 0, 821, 823, 3, 80, 40, 0, 822, 821, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 825, 1, 0, 0, 0, 824, 768, 1, 0, 0, 0, 824, 800, 1, 0, 0, 0, 824, 805, 1, 0, 0, 0, 824, 814, 1, 0, 0, 0, 824, 819, 1, 0, 0, 0, 825, 13, 1, 0, 0, 0, 826, 827, 5, 21, 0, 0, 827, 828, 5, 439, 0, 0, 828, 829, 3, 326, 163, 0, 829, 830, 5, 14, 0, 0, 830, 831, 5, 93, 0, 0, 831, 832, 3, 444, 222, 0, 832, 833, 3, 158, 79, 0, 833, 846, 1, 0, 0, 0, 834, 835, 5, 21, 0, 0, 835, 836, 5, 439, 0, 0, 836, 837, 3, 326, 163, 0, 837, 838, 5, 142, 0, 0, 838, 839, 5, 93, 0, 0, 839, 840, 3, 444, 222, 0, 840, 846, 1, 0, 0, 0, 841, 842, 5, 413, 0, 0, 842, 843, 5, 94, 0, 0, 843, 844, 5, 187, 0, 0, 844, 846, 3, 326, 163, 0, 845, 826, 1, 0, 0, 0, 845, 834, 1, 0, 0, 0, 845, 841, 1, 0, 0, 0, 846, 15, 1, 0, 0, 0, 847, 849, 3, 194, 97, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, 1, 0, 0, 0, 850, 852, 3, 238, 119, 0, 851, 850, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 857, 5, 223, 0, 0, 854, 858, 5, 230, 0, 0, 855, 856, 5, 318, 0, 0, 856, 858, 5, 439, 0, 0, 857, 854, 1, 0, 0, 0, 857, 855, 1, 0, 0, 0, 858, 864, 1, 0, 0, 0, 859, 865, 3, 326, 163, 0, 860, 861, 5, 140, 0, 0, 861, 862, 5, 2, 0, 0, 862, 863, 5, 534, 0, 0, 863, 865, 5, 3, 0, 0, 864, 859, 1, 0, 0, 0, 864, 860, 1, 0, 0, 0, 865, 867, 1, 0, 0, 0, 866, 868, 3, 160, 80, 0, 867, 866, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 872, 1, 0, 0, 0, 869, 870, 5, 497, 0, 0, 870, 871, 5, 247, 0, 0, 871, 873, 3, 448, 224, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 875, 1, 0, 0, 0, 874, 876, 3, 304, 152, 0, 875, 874, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 881, 1, 0, 0, 0, 877, 878, 5, 7, 0, 0, 878, 879, 3, 306, 153, 0, 879, 880, 5, 8, 0, 0, 880, 882, 1, 0, 0, 0, 881, 877, 1, 0, 0, 0, 881, 882, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 963, 3, 228, 114, 0, 884, 886, 3, 194, 97, 0, 885, 884, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 888, 1, 0, 0, 0, 887, 889, 3, 238, 119, 0, 888, 887, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 891, 5, 474, 0, 0, 891, 892, 3, 326, 163, 0, 892, 893, 3, 324, 162, 0, 893, 894, 5, 409, 0, 0, 894, 896, 3, 286, 143, 0, 895, 897, 3, 250, 125, 0, 896, 895, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 899, 1, 0, 0, 0, 898, 900, 3, 248, 124, 0, 899, 898, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 963, 1, 0, 0, 0, 901, 903, 3, 194, 97, 0, 902, 901, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 905, 1, 0, 0, 0, 904, 906, 3, 238, 119, 0, 905, 904, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 908, 5, 126, 0, 0, 908, 909, 5, 187, 0, 0, 909, 911, 3, 326, 163, 0, 910, 912, 3, 160, 80, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 916, 3, 324, 162, 0, 914, 915, 5, 478, 0, 0, 915, 917, 3, 258, 129, 0, 916, 914, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 919, 1, 0, 0, 0, 918, 920, 3, 248, 124, 0, 919, 918, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 963, 1, 0, 0, 0, 921, 922, 5, 261, 0, 0, 922, 923, 5, 247, 0, 0, 923, 924, 3, 326, 163, 0, 924, 925, 5, 2, 0, 0, 925, 930, 3, 168, 84, 0, 926, 927, 5, 4, 0, 0, 927, 929, 3, 168, 84, 0, 928, 926, 1, 0, 0, 0, 929, 932, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 933, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 933, 935, 5, 3, 0, 0, 934, 936, 3, 218, 109, 0, 935, 934, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 938, 1, 0, 0, 0, 937, 939, 3, 314, 157, 0, 938, 937, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 941, 1, 0, 0, 0, 940, 942, 3, 436, 218, 0, 941, 940, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 963, 1, 0, 0, 0, 943, 944, 5, 167, 0, 0, 944, 945, 5, 439, 0, 0, 945, 948, 3, 326, 163, 0, 946, 947, 5, 321, 0, 0, 947, 949, 3, 304, 152, 0, 948, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 951, 1, 0, 0, 0, 950, 952, 3, 248, 124, 0, 951, 950, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 954, 5, 454, 0, 0, 954, 956, 5, 529, 0, 0, 955, 957, 3, 314, 157, 0, 956, 955, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 959, 1, 0, 0, 0, 958, 960, 3, 218, 109, 0, 959, 958, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 963, 1, 0, 0, 0, 961, 963, 3, 200, 100, 0, 962, 848, 1, 0, 0, 0, 962, 885, 1, 0, 0, 0, 962, 902, 1, 0, 0, 0, 962, 921, 1, 0, 0, 0, 962, 943, 1, 0, 0, 0, 962, 961, 1, 0, 0, 0, 963, 17, 1, 0, 0, 0, 964, 966, 5, 99, 0, 0, 965, 967, 7, 4, 0, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 972, 5, 439, 0, 0, 969, 970, 5, 214, 0, 0, 970, 971, 5, 303, 0, 0, 971, 973, 5, 164, 0, 0, 972, 969, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 989, 3, 326, 163, 0, 975, 977, 3, 304, 152, 0, 976, 975, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 990, 1, 0, 0, 0, 978, 979, 5, 2, 0, 0, 979, 982, 3, 332, 166, 0, 980, 981, 5, 4, 0, 0, 981, 983, 3, 336, 168, 0, 982, 980, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 985, 1, 0, 0, 0, 984, 986, 5, 4, 0, 0, 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 5, 3, 0, 0, 988, 990, 1, 0, 0, 0, 989, 976, 1, 0, 0, 0, 989, 978, 1, 0, 0, 0, 990, 994, 1, 0, 0, 0, 991, 992, 5, 155, 0, 0, 992, 993, 5, 503, 0, 0, 993, 995, 3, 448, 224, 0, 994, 991, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 1004, 1, 0, 0, 0, 996, 997, 7, 5, 0, 0, 997, 998, 5, 244, 0, 0, 998, 1002, 3, 304, 152, 0, 999, 1000, 5, 73, 0, 0, 1000, 1001, 5, 59, 0, 0, 1001, 1003, 3, 304, 152, 0, 1002, 999, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1005, 1, 0, 0, 0, 1004, 996, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1008, 1, 0, 0, 0, 1006, 1007, 5, 81, 0, 0, 1007, 1009, 5, 529, 0, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 1, 0, 0, 0, 1010, 1012, 3, 162, 81, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1027, 1, 0, 0, 0, 1013, 1014, 5, 136, 0, 0, 1014, 1018, 5, 59, 0, 0, 1015, 1016, 5, 202, 0, 0, 1016, 1019, 3, 304, 152, 0, 1017, 1019, 5, 359, 0, 0, 1018, 1015, 1, 0, 0, 0, 1018, 1017, 1, 0, 0, 0, 1019, 1025, 1, 0, 0, 0, 1020, 1023, 5, 55, 0, 0, 1021, 1024, 5, 534, 0, 0, 1022, 1024, 5, 32, 0, 0, 1023, 1021, 1, 0, 0, 0, 1023, 1022, 1, 0, 0, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1028, 1, 0, 0, 0, 1027, 1013, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1034, 1, 0, 0, 0, 1029, 1030, 5, 393, 0, 0, 1030, 1031, 5, 2, 0, 0, 1031, 1032, 3, 356, 178, 0, 1032, 1033, 5, 3, 0, 0, 1033, 1035, 1, 0, 0, 0, 1034, 1029, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1037, 1, 0, 0, 0, 1036, 1038, 3, 314, 157, 0, 1037, 1036, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1041, 1, 0, 0, 0, 1039, 1040, 5, 54, 0, 0, 1040, 1042, 3, 314, 157, 0, 1041, 1039, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1045, 1, 0, 0, 0, 1043, 1044, 5, 28, 0, 0, 1044, 1046, 3, 228, 114, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1288, 1, 0, 0, 0, 1047, 1050, 5, 99, 0, 0, 1048, 1049, 5, 313, 0, 0, 1049, 1051, 5, 374, 0, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1056, 5, 489, 0, 0, 1053, 1054, 5, 214, 0, 0, 1054, 1055, 5, 303, 0, 0, 1055, 1057, 5, 164, 0, 0, 1056, 1053, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1063, 3, 326, 163, 0, 1059, 1060, 5, 2, 0, 0, 1060, 1061, 3, 328, 164, 0, 1061, 1062, 5, 3, 0, 0, 1062, 1064, 1, 0, 0, 0, 1063, 1059, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1067, 1, 0, 0, 0, 1065, 1066, 5, 81, 0, 0, 1066, 1068, 5, 529, 0, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1070, 5, 28, 0, 0, 1070, 1071, 3, 228, 114, 0, 1071, 1288, 1, 0, 0, 0, 1072, 1073, 5, 99, 0, 0, 1073, 1074, 5, 176, 0, 0, 1074, 1077, 5, 529, 0, 0, 1075, 1076, 7, 6, 0, 0, 1076, 1078, 3, 448, 224, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1288, 3, 314, 157, 0, 1080, 1082, 5, 99, 0, 0, 1081, 1083, 7, 4, 0, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1088, 5, 439, 0, 0, 1085, 1086, 5, 214, 0, 0, 1086, 1087, 5, 303, 0, 0, 1087, 1089, 5, 164, 0, 0, 1088, 1085, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1091, 3, 326, 163, 0, 1091, 1092, 5, 256, 0, 0, 1092, 1098, 3, 326, 163, 0, 1093, 1094, 5, 497, 0, 0, 1094, 1096, 5, 393, 0, 0, 1095, 1097, 3, 304, 152, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1099, 1, 0, 0, 0, 1098, 1093, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1288, 1, 0, 0, 0, 1100, 1101, 5, 99, 0, 0, 1101, 1105, 5, 390, 0, 0, 1102, 1103, 5, 214, 0, 0, 1103, 1104, 5, 303, 0, 0, 1104, 1106, 5, 164, 0, 0, 1105, 1102, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1110, 3, 448, 224, 0, 1108, 1109, 5, 81, 0, 0, 1109, 1111, 5, 529, 0, 0, 1110, 1108, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1288, 1, 0, 0, 0, 1112, 1113, 5, 99, 0, 0, 1113, 1114, 5, 499, 0, 0, 1114, 1118, 5, 199, 0, 0, 1115, 1116, 5, 214, 0, 0, 1116, 1117, 5, 303, 0, 0, 1117, 1119, 5, 164, 0, 0, 1118, 1115, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1122, 3, 182, 91, 0, 1121, 1123, 3, 314, 157, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1288, 1, 0, 0, 0, 1124, 1125, 5, 99, 0, 0, 1125, 1129, 5, 66, 0, 0, 1126, 1127, 5, 214, 0, 0, 1127, 1128, 5, 303, 0, 0, 1128, 1130, 5, 164, 0, 0, 1129, 1126, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1135, 3, 448, 224, 0, 1132, 1133, 5, 497, 0, 0, 1133, 1134, 5, 380, 0, 0, 1134, 1136, 3, 448, 224, 0, 1135, 1132, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1139, 1, 0, 0, 0, 1137, 1138, 5, 81, 0, 0, 1138, 1140, 5, 529, 0, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1142, 1, 0, 0, 0, 1141, 1143, 3, 314, 157, 0, 1142, 1141, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1288, 1, 0, 0, 0, 1144, 1145, 5, 99, 0, 0, 1145, 1146, 5, 395, 0, 0, 1146, 1150, 5, 342, 0, 0, 1147, 1148, 5, 214, 0, 0, 1148, 1149, 5, 303, 0, 0, 1149, 1151, 5, 164, 0, 0, 1150, 1147, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 3, 448, 224, 0, 1153, 1154, 5, 309, 0, 0, 1154, 1155, 3, 326, 163, 0, 1155, 1156, 5, 28, 0, 0, 1156, 1157, 7, 7, 0, 0, 1157, 1161, 5, 454, 0, 0, 1158, 1162, 3, 190, 95, 0, 1159, 1160, 5, 390, 0, 0, 1160, 1162, 3, 448, 224, 0, 1161, 1158, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 478, 0, 0, 1164, 1165, 5, 2, 0, 0, 1165, 1166, 3, 374, 187, 0, 1166, 1167, 5, 3, 0, 0, 1167, 1288, 1, 0, 0, 0, 1168, 1169, 5, 99, 0, 0, 1169, 1170, 5, 429, 0, 0, 1170, 1174, 5, 342, 0, 0, 1171, 1172, 5, 214, 0, 0, 1172, 1173, 5, 303, 0, 0, 1173, 1175, 5, 164, 0, 0, 1174, 1171, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1178, 3, 448, 224, 0, 1177, 1179, 3, 314, 157, 0, 1178, 1177, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1288, 1, 0, 0, 0, 1180, 1181, 5, 56, 0, 0, 1181, 1182, 5, 219, 0, 0, 1182, 1183, 3, 448, 224, 0, 1183, 1184, 5, 309, 0, 0, 1184, 1186, 3, 326, 163, 0, 1185, 1187, 3, 160, 80, 0, 1186, 1185, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1288, 1, 0, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 1193, 5, 219, 0, 0, 1190, 1191, 5, 214, 0, 0, 1191, 1192, 5, 303, 0, 0, 1192, 1194, 5, 164, 0, 0, 1193, 1190, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 3, 448, 224, 0, 1196, 1197, 5, 309, 0, 0, 1197, 1198, 3, 326, 163, 0, 1198, 1201, 3, 304, 152, 0, 1199, 1200, 5, 478, 0, 0, 1200, 1202, 7, 8, 0, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1204, 1, 0, 0, 0, 1203, 1205, 3, 314, 157, 0, 1204, 1203, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1208, 1, 0, 0, 0, 1206, 1207, 5, 81, 0, 0, 1207, 1209, 5, 529, 0, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1288, 1, 0, 0, 0, 1210, 1211, 5, 99, 0, 0, 1211, 1215, 5, 421, 0, 0, 1212, 1213, 5, 214, 0, 0, 1213, 1214, 5, 303, 0, 0, 1214, 1216, 5, 164, 0, 0, 1215, 1212, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1219, 3, 448, 224, 0, 1218, 1220, 3, 314, 157, 0, 1219, 1218, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1288, 1, 0, 0, 0, 1221, 1222, 5, 99, 0, 0, 1222, 1226, 5, 151, 0, 0, 1223, 1224, 5, 214, 0, 0, 1224, 1225, 5, 303, 0, 0, 1225, 1227, 5, 164, 0, 0, 1226, 1223, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1229, 3, 326, 163, 0, 1229, 1230, 5, 28, 0, 0, 1230, 1231, 5, 529, 0, 0, 1231, 1288, 1, 0, 0, 0, 1232, 1234, 5, 99, 0, 0, 1233, 1235, 3, 170, 85, 0, 1234, 1233, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1237, 1, 0, 0, 0, 1236, 1238, 7, 9, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1243, 5, 191, 0, 0, 1240, 1241, 5, 214, 0, 0, 1241, 1242, 5, 303, 0, 0, 1242, 1244, 5, 164, 0, 0, 1243, 1240, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, 3, 392, 196, 0, 1246, 1248, 5, 2, 0, 0, 1247, 1249, 3, 128, 64, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 5, 3, 0, 0, 1251, 1252, 5, 385, 0, 0, 1252, 1255, 3, 422, 211, 0, 1253, 1254, 5, 227, 0, 0, 1254, 1256, 3, 422, 211, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 1, 0, 0, 0, 1257, 1259, 3, 314, 157, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1288, 1, 0, 0, 0, 1260, 1262, 5, 99, 0, 0, 1261, 1263, 3, 170, 85, 0, 1262, 1261, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1265, 5, 19, 0, 0, 1265, 1269, 5, 191, 0, 0, 1266, 1267, 5, 214, 0, 0, 1267, 1268, 5, 303, 0, 0, 1268, 1270, 5, 164, 0, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 3, 392, 196, 0, 1272, 1274, 5, 2, 0, 0, 1273, 1275, 3, 128, 64, 0, 1274, 1273, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1277, 5, 3, 0, 0, 1277, 1278, 5, 497, 0, 0, 1278, 1279, 5, 319, 0, 0, 1279, 1281, 5, 2, 0, 0, 1280, 1282, 3, 306, 153, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 5, 3, 0, 0, 1284, 1285, 5, 28, 0, 0, 1285, 1286, 3, 370, 185, 0, 1286, 1288, 1, 0, 0, 0, 1287, 964, 1, 0, 0, 0, 1287, 1047, 1, 0, 0, 0, 1287, 1072, 1, 0, 0, 0, 1287, 1080, 1, 0, 0, 0, 1287, 1100, 1, 0, 0, 0, 1287, 1112, 1, 0, 0, 0, 1287, 1124, 1, 0, 0, 0, 1287, 1144, 1, 0, 0, 0, 1287, 1168, 1, 0, 0, 0, 1287, 1180, 1, 0, 0, 0, 1287, 1188, 1, 0, 0, 0, 1287, 1210, 1, 0, 0, 0, 1287, 1221, 1, 0, 0, 0, 1287, 1232, 1, 0, 0, 0, 1287, 1260, 1, 0, 0, 0, 1288, 19, 1, 0, 0, 0, 1289, 1290, 5, 21, 0, 0, 1290, 1291, 5, 438, 0, 0, 1291, 1446, 3, 92, 46, 0, 1292, 1293, 5, 21, 0, 0, 1293, 1294, 5, 489, 0, 0, 1294, 1305, 3, 326, 163, 0, 1295, 1296, 5, 290, 0, 0, 1296, 1306, 3, 436, 218, 0, 1297, 1298, 5, 2, 0, 0, 1298, 1299, 3, 328, 164, 0, 1299, 1300, 5, 3, 0, 0, 1300, 1302, 1, 0, 0, 0, 1301, 1297, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 5, 28, 0, 0, 1304, 1306, 3, 228, 114, 0, 1305, 1295, 1, 0, 0, 0, 1305, 1301, 1, 0, 0, 0, 1306, 1446, 1, 0, 0, 0, 1307, 1308, 5, 21, 0, 0, 1308, 1309, 5, 66, 0, 0, 1309, 1310, 3, 448, 224, 0, 1310, 1311, 5, 371, 0, 0, 1311, 1312, 3, 448, 224, 0, 1312, 1446, 1, 0, 0, 0, 1313, 1314, 5, 21, 0, 0, 1314, 1315, 5, 390, 0, 0, 1315, 1316, 3, 448, 224, 0, 1316, 1317, 3, 436, 218, 0, 1317, 1446, 1, 0, 0, 0, 1318, 1319, 5, 21, 0, 0, 1319, 1320, 5, 429, 0, 0, 1320, 1321, 5, 485, 0, 0, 1321, 1322, 3, 326, 163, 0, 1322, 1323, 3, 314, 157, 0, 1323, 1446, 1, 0, 0, 0, 1324, 1325, 5, 21, 0, 0, 1325, 1326, 5, 390, 0, 0, 1326, 1327, 3, 448, 224, 0, 1327, 1328, 3, 436, 218, 0, 1328, 1446, 1, 0, 0, 0, 1329, 1330, 5, 21, 0, 0, 1330, 1331, 5, 499, 0, 0, 1331, 1332, 5, 199, 0, 0, 1332, 1334, 3, 182, 91, 0, 1333, 1335, 3, 314, 157, 0, 1334, 1333, 1, 0, 0, 0, 1334, 1335, 1, 0, 0, 0, 1335, 1446, 1, 0, 0, 0, 1336, 1337, 5, 21, 0, 0, 1337, 1338, 5, 66, 0, 0, 1338, 1339, 3, 448, 224, 0, 1339, 1340, 5, 409, 0, 0, 1340, 1341, 5, 350, 0, 0, 1341, 1342, 5, 2, 0, 0, 1342, 1343, 3, 316, 158, 0, 1343, 1344, 5, 3, 0, 0, 1344, 1446, 1, 0, 0, 0, 1345, 1346, 5, 21, 0, 0, 1346, 1347, 5, 499, 0, 0, 1347, 1348, 5, 342, 0, 0, 1348, 1350, 3, 182, 91, 0, 1349, 1351, 3, 314, 157, 0, 1350, 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1446, 1, 0, 0, 0, 1352, 1353, 5, 21, 0, 0, 1353, 1354, 5, 421, 0, 0, 1354, 1356, 3, 448, 224, 0, 1355, 1357, 3, 314, 157, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1446, 1, 0, 0, 0, 1358, 1359, 5, 21, 0, 0, 1359, 1360, 5, 66, 0, 0, 1360, 1361, 3, 448, 224, 0, 1361, 1362, 5, 290, 0, 0, 1362, 1363, 5, 81, 0, 0, 1363, 1364, 5, 529, 0, 0, 1364, 1446, 1, 0, 0, 0, 1365, 1366, 5, 21, 0, 0, 1366, 1367, 5, 111, 0, 0, 1367, 1368, 3, 448, 224, 0, 1368, 1369, 5, 371, 0, 0, 1369, 1370, 3, 448, 224, 0, 1370, 1446, 1, 0, 0, 0, 1371, 1372, 5, 21, 0, 0, 1372, 1373, 5, 390, 0, 0, 1373, 1374, 3, 448, 224, 0, 1374, 1375, 3, 436, 218, 0, 1375, 1446, 1, 0, 0, 0, 1376, 1377, 5, 21, 0, 0, 1377, 1378, 5, 439, 0, 0, 1378, 1379, 3, 326, 163, 0, 1379, 1384, 3, 98, 49, 0, 1380, 1381, 5, 4, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1446, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 21, 0, 0, 1388, 1389, 5, 439, 0, 0, 1389, 1390, 3, 326, 163, 0, 1390, 1391, 5, 14, 0, 0, 1391, 1392, 5, 393, 0, 0, 1392, 1397, 3, 96, 48, 0, 1393, 1394, 5, 4, 0, 0, 1394, 1396, 3, 96, 48, 0, 1395, 1393, 1, 0, 0, 0, 1396, 1399, 1, 0, 0, 0, 1397, 1395, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1446, 1, 0, 0, 0, 1399, 1397, 1, 0, 0, 0, 1400, 1401, 5, 21, 0, 0, 1401, 1402, 5, 439, 0, 0, 1402, 1403, 3, 326, 163, 0, 1403, 1404, 5, 142, 0, 0, 1404, 1405, 5, 393, 0, 0, 1405, 1410, 3, 94, 47, 0, 1406, 1407, 5, 4, 0, 0, 1407, 1409, 3, 94, 47, 0, 1408, 1406, 1, 0, 0, 0, 1409, 1412, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1446, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1414, 5, 21, 0, 0, 1414, 1415, 5, 439, 0, 0, 1415, 1416, 3, 326, 163, 0, 1416, 1417, 5, 409, 0, 0, 1417, 1418, 5, 2, 0, 0, 1418, 1419, 3, 316, 158, 0, 1419, 1420, 5, 3, 0, 0, 1420, 1446, 1, 0, 0, 0, 1421, 1422, 5, 21, 0, 0, 1422, 1423, 5, 111, 0, 0, 1423, 1424, 3, 448, 224, 0, 1424, 1425, 5, 409, 0, 0, 1425, 1426, 7, 10, 0, 0, 1426, 1429, 5, 356, 0, 0, 1427, 1430, 3, 448, 224, 0, 1428, 1430, 5, 534, 0, 0, 1429, 1427, 1, 0, 0, 0, 1429, 1428, 1, 0, 0, 0, 1430, 1446, 1, 0, 0, 0, 1431, 1432, 5, 21, 0, 0, 1432, 1433, 5, 438, 0, 0, 1433, 1434, 5, 371, 0, 0, 1434, 1435, 5, 87, 0, 0, 1435, 1436, 5, 199, 0, 0, 1436, 1437, 3, 448, 224, 0, 1437, 1438, 3, 448, 224, 0, 1438, 1446, 1, 0, 0, 0, 1439, 1440, 5, 21, 0, 0, 1440, 1441, 5, 379, 0, 0, 1441, 1443, 3, 448, 224, 0, 1442, 1444, 3, 314, 157, 0, 1443, 1442, 1, 0, 0, 0, 1443, 1444, 1, 0, 0, 0, 1444, 1446, 1, 0, 0, 0, 1445, 1289, 1, 0, 0, 0, 1445, 1292, 1, 0, 0, 0, 1445, 1307, 1, 0, 0, 0, 1445, 1313, 1, 0, 0, 0, 1445, 1318, 1, 0, 0, 0, 1445, 1324, 1, 0, 0, 0, 1445, 1329, 1, 0, 0, 0, 1445, 1336, 1, 0, 0, 0, 1445, 1345, 1, 0, 0, 0, 1445, 1352, 1, 0, 0, 0, 1445, 1358, 1, 0, 0, 0, 1445, 1365, 1, 0, 0, 0, 1445, 1371, 1, 0, 0, 0, 1445, 1376, 1, 0, 0, 0, 1445, 1387, 1, 0, 0, 0, 1445, 1400, 1, 0, 0, 0, 1445, 1413, 1, 0, 0, 0, 1445, 1421, 1, 0, 0, 0, 1445, 1431, 1, 0, 0, 0, 1445, 1439, 1, 0, 0, 0, 1446, 21, 1, 0, 0, 0, 1447, 1448, 5, 142, 0, 0, 1448, 1449, 5, 66, 0, 0, 1449, 1450, 5, 366, 0, 0, 1450, 1451, 5, 42, 0, 0, 1451, 1452, 5, 495, 0, 0, 1452, 1453, 5, 529, 0, 0, 1453, 1454, 5, 503, 0, 0, 1454, 1572, 5, 534, 0, 0, 1455, 1456, 5, 142, 0, 0, 1456, 1459, 5, 151, 0, 0, 1457, 1458, 5, 214, 0, 0, 1458, 1460, 5, 164, 0, 0, 1459, 1457, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1572, 3, 326, 163, 0, 1462, 1463, 5, 142, 0, 0, 1463, 1466, 5, 390, 0, 0, 1464, 1465, 5, 214, 0, 0, 1465, 1467, 5, 164, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1572, 3, 448, 224, 0, 1469, 1470, 5, 142, 0, 0, 1470, 1473, 5, 421, 0, 0, 1471, 1472, 5, 214, 0, 0, 1472, 1474, 5, 164, 0, 0, 1473, 1471, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1572, 3, 306, 153, 0, 1476, 1477, 5, 142, 0, 0, 1477, 1480, 5, 476, 0, 0, 1478, 1479, 5, 214, 0, 0, 1479, 1481, 5, 164, 0, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1572, 3, 190, 95, 0, 1483, 1484, 5, 142, 0, 0, 1484, 1485, 5, 429, 0, 0, 1485, 1488, 5, 342, 0, 0, 1486, 1487, 5, 214, 0, 0, 1487, 1489, 5, 164, 0, 0, 1488, 1486, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1572, 3, 448, 224, 0, 1491, 1492, 5, 142, 0, 0, 1492, 1493, 5, 499, 0, 0, 1493, 1496, 5, 199, 0, 0, 1494, 1495, 5, 214, 0, 0, 1495, 1497, 5, 164, 0, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1572, 3, 182, 91, 0, 1499, 1500, 5, 142, 0, 0, 1500, 1503, 5, 66, 0, 0, 1501, 1502, 5, 214, 0, 0, 1502, 1504, 5, 164, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1572, 3, 448, 224, 0, 1506, 1507, 5, 142, 0, 0, 1507, 1508, 5, 176, 0, 0, 1508, 1511, 5, 529, 0, 0, 1509, 1510, 7, 6, 0, 0, 1510, 1512, 3, 448, 224, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1572, 3, 314, 157, 0, 1514, 1515, 5, 142, 0, 0, 1515, 1516, 5, 499, 0, 0, 1516, 1519, 5, 342, 0, 0, 1517, 1518, 5, 214, 0, 0, 1518, 1520, 5, 164, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 1572, 3, 182, 91, 0, 1522, 1523, 5, 142, 0, 0, 1523, 1524, 5, 379, 0, 0, 1524, 1572, 3, 448, 224, 0, 1525, 1526, 5, 142, 0, 0, 1526, 1529, 5, 439, 0, 0, 1527, 1528, 5, 214, 0, 0, 1528, 1530, 5, 164, 0, 0, 1529, 1527, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1533, 3, 326, 163, 0, 1532, 1534, 5, 184, 0, 0, 1533, 1532, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1572, 1, 0, 0, 0, 1535, 1536, 5, 142, 0, 0, 1536, 1539, 7, 11, 0, 0, 1537, 1538, 5, 214, 0, 0, 1538, 1540, 5, 164, 0, 0, 1539, 1537, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1543, 3, 326, 163, 0, 1542, 1544, 5, 184, 0, 0, 1543, 1542, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1572, 1, 0, 0, 0, 1545, 1547, 5, 142, 0, 0, 1546, 1548, 3, 170, 85, 0, 1547, 1546, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1552, 5, 191, 0, 0, 1550, 1551, 5, 214, 0, 0, 1551, 1553, 5, 164, 0, 0, 1552, 1550, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 3, 392, 196, 0, 1555, 1557, 5, 2, 0, 0, 1556, 1558, 3, 128, 64, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1560, 5, 3, 0, 0, 1560, 1572, 1, 0, 0, 0, 1561, 1562, 5, 142, 0, 0, 1562, 1565, 5, 219, 0, 0, 1563, 1564, 5, 214, 0, 0, 1564, 1566, 5, 164, 0, 0, 1565, 1563, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 3, 448, 224, 0, 1568, 1569, 5, 309, 0, 0, 1569, 1570, 3, 326, 163, 0, 1570, 1572, 1, 0, 0, 0, 1571, 1447, 1, 0, 0, 0, 1571, 1455, 1, 0, 0, 0, 1571, 1462, 1, 0, 0, 0, 1571, 1469, 1, 0, 0, 0, 1571, 1476, 1, 0, 0, 0, 1571, 1483, 1, 0, 0, 0, 1571, 1491, 1, 0, 0, 0, 1571, 1499, 1, 0, 0, 0, 1571, 1506, 1, 0, 0, 0, 1571, 1514, 1, 0, 0, 0, 1571, 1522, 1, 0, 0, 0, 1571, 1525, 1, 0, 0, 0, 1571, 1535, 1, 0, 0, 0, 1571, 1545, 1, 0, 0, 0, 1571, 1561, 1, 0, 0, 0, 1572, 23, 1, 0, 0, 0, 1573, 1575, 5, 413, 0, 0, 1574, 1576, 3, 170, 85, 0, 1575, 1574, 1, 0, 0, 0, 1575, 1576, 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 1579, 5, 483, 0, 0, 1578, 1580, 3, 80, 40, 0, 1579, 1578, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1918, 1, 0, 0, 0, 1581, 1582, 5, 413, 0, 0, 1582, 1918, 5, 31, 0, 0, 1583, 1584, 5, 413, 0, 0, 1584, 1585, 5, 99, 0, 0, 1585, 1586, 7, 11, 0, 0, 1586, 1918, 3, 326, 163, 0, 1587, 1588, 5, 413, 0, 0, 1588, 1918, 5, 54, 0, 0, 1589, 1590, 5, 413, 0, 0, 1590, 1591, 5, 147, 0, 0, 1591, 1592, 5, 321, 0, 0, 1592, 1595, 5, 440, 0, 0, 1593, 1594, 7, 6, 0, 0, 1594, 1596, 3, 326, 163, 0, 1595, 1593, 1, 0, 0, 0, 1595, 1596, 1, 0, 0, 0, 1596, 1918, 1, 0, 0, 0, 1597, 1598, 5, 413, 0, 0, 1598, 1601, 5, 159, 0, 0, 1599, 1600, 7, 6, 0, 0, 1600, 1602, 3, 326, 163, 0, 1601, 1599, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 1, 0, 0, 0, 1603, 1605, 3, 80, 40, 0, 1604, 1603, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1918, 1, 0, 0, 0, 1606, 1607, 5, 413, 0, 0, 1607, 1608, 5, 249, 0, 0, 1608, 1918, 5, 223, 0, 0, 1609, 1613, 5, 413, 0, 0, 1610, 1611, 5, 69, 0, 0, 1611, 1614, 5, 409, 0, 0, 1612, 1614, 5, 70, 0, 0, 1613, 1610, 1, 0, 0, 0, 1613, 1612, 1, 0, 0, 0, 1614, 1918, 1, 0, 0, 0, 1615, 1616, 5, 413, 0, 0, 1616, 1619, 5, 126, 0, 0, 1617, 1618, 7, 6, 0, 0, 1618, 1620, 3, 326, 163, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1918, 1, 0, 0, 0, 1621, 1623, 5, 413, 0, 0, 1622, 1624, 5, 20, 0, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1918, 5, 197, 0, 0, 1626, 1627, 5, 413, 0, 0, 1627, 1628, 5, 197, 0, 0, 1628, 1629, 5, 182, 0, 0, 1629, 1918, 3, 190, 95, 0, 1630, 1631, 5, 413, 0, 0, 1631, 1632, 5, 437, 0, 0, 1632, 1635, 5, 239, 0, 0, 1633, 1634, 7, 6, 0, 0, 1634, 1636, 3, 326, 163, 0, 1635, 1633, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1918, 1, 0, 0, 0, 1637, 1638, 5, 413, 0, 0, 1638, 1639, 5, 261, 0, 0, 1639, 1641, 5, 349, 0, 0, 1640, 1642, 5, 529, 0, 0, 1641, 1640, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 1, 0, 0, 0, 1643, 1645, 3, 296, 148, 0, 1644, 1643, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1918, 1, 0, 0, 0, 1646, 1647, 5, 413, 0, 0, 1647, 1648, 5, 99, 0, 0, 1648, 1649, 5, 379, 0, 0, 1649, 1650, 5, 182, 0, 0, 1650, 1918, 3, 448, 224, 0, 1651, 1652, 5, 413, 0, 0, 1652, 1653, 5, 489, 0, 0, 1653, 1654, 7, 6, 0, 0, 1654, 1657, 3, 326, 163, 0, 1655, 1656, 7, 6, 0, 0, 1656, 1658, 3, 448, 224, 0, 1657, 1655, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1918, 1, 0, 0, 0, 1659, 1660, 5, 413, 0, 0, 1660, 1918, 5, 341, 0, 0, 1661, 1662, 5, 413, 0, 0, 1662, 1918, 5, 378, 0, 0, 1663, 1664, 5, 413, 0, 0, 1664, 1667, 5, 152, 0, 0, 1665, 1666, 7, 6, 0, 0, 1666, 1668, 3, 326, 163, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1671, 1, 0, 0, 0, 1669, 1670, 5, 256, 0, 0, 1670, 1672, 5, 529, 0, 0, 1671, 1669, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1918, 1, 0, 0, 0, 1673, 1675, 5, 413, 0, 0, 1674, 1676, 5, 53, 0, 0, 1675, 1674, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 5, 99, 0, 0, 1678, 1679, 5, 439, 0, 0, 1679, 1918, 3, 326, 163, 0, 1680, 1682, 5, 413, 0, 0, 1681, 1683, 5, 190, 0, 0, 1682, 1681, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1918, 5, 348, 0, 0, 1685, 1686, 5, 413, 0, 0, 1686, 1918, 5, 391, 0, 0, 1687, 1688, 5, 413, 0, 0, 1688, 1689, 5, 321, 0, 0, 1689, 1918, 5, 534, 0, 0, 1690, 1691, 5, 413, 0, 0, 1691, 1918, 5, 338, 0, 0, 1692, 1693, 5, 413, 0, 0, 1693, 1694, 5, 346, 0, 0, 1694, 1918, 5, 529, 0, 0, 1695, 1696, 5, 413, 0, 0, 1696, 1699, 5, 176, 0, 0, 1697, 1698, 7, 6, 0, 0, 1698, 1700, 3, 326, 163, 0, 1699, 1697, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1918, 1, 0, 0, 0, 1701, 1703, 5, 413, 0, 0, 1702, 1704, 5, 429, 0, 0, 1703, 1702, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1918, 5, 156, 0, 0, 1706, 1707, 5, 413, 0, 0, 1707, 1708, 5, 99, 0, 0, 1708, 1709, 5, 66, 0, 0, 1709, 1918, 3, 448, 224, 0, 1710, 1711, 5, 413, 0, 0, 1711, 1712, 5, 66, 0, 0, 1712, 1918, 3, 448, 224, 0, 1713, 1714, 5, 413, 0, 0, 1714, 1716, 5, 67, 0, 0, 1715, 1717, 3, 80, 40, 0, 1716, 1715, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 1918, 1, 0, 0, 0, 1718, 1719, 5, 413, 0, 0, 1719, 1722, 5, 351, 0, 0, 1720, 1721, 5, 182, 0, 0, 1721, 1723, 3, 182, 91, 0, 1722, 1720, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 0, 1724, 1725, 5, 256, 0, 0, 1725, 1727, 5, 529, 0, 0, 1726, 1724, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1918, 1, 0, 0, 0, 1728, 1729, 5, 413, 0, 0, 1729, 1730, 5, 20, 0, 0, 1730, 1733, 5, 350, 0, 0, 1731, 1732, 5, 256, 0, 0, 1732, 1734, 5, 529, 0, 0, 1733, 1731, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1918, 1, 0, 0, 0, 1735, 1736, 5, 413, 0, 0, 1736, 1738, 5, 76, 0, 0, 1737, 1739, 3, 80, 40, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1918, 1, 0, 0, 0, 1740, 1741, 5, 413, 0, 0, 1741, 1742, 5, 429, 0, 0, 1742, 1748, 5, 342, 0, 0, 1743, 1746, 5, 478, 0, 0, 1744, 1745, 5, 182, 0, 0, 1745, 1747, 3, 182, 91, 0, 1746, 1744, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1749, 1, 0, 0, 0, 1748, 1743, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1918, 1, 0, 0, 0, 1750, 1751, 5, 413, 0, 0, 1751, 1754, 5, 421, 0, 0, 1752, 1753, 5, 182, 0, 0, 1753, 1755, 3, 448, 224, 0, 1754, 1752, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1918, 1, 0, 0, 0, 1756, 1757, 5, 413, 0, 0, 1757, 1758, 5, 99, 0, 0, 1758, 1759, 5, 489, 0, 0, 1759, 1918, 3, 326, 163, 0, 1760, 1761, 5, 413, 0, 0, 1761, 1762, 5, 110, 0, 0, 1762, 1918, 5, 464, 0, 0, 1763, 1764, 5, 413, 0, 0, 1764, 1766, 5, 110, 0, 0, 1765, 1767, 5, 20, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1769, 5, 187, 0, 0, 1769, 1771, 3, 326, 163, 0, 1770, 1768, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1773, 1, 0, 0, 0, 1772, 1774, 3, 292, 146, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1776, 1, 0, 0, 0, 1775, 1777, 3, 314, 157, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1918, 1, 0, 0, 0, 1778, 1779, 5, 413, 0, 0, 1779, 1780, 5, 99, 0, 0, 1780, 1781, 5, 280, 0, 0, 1781, 1782, 5, 489, 0, 0, 1782, 1783, 3, 448, 224, 0, 1783, 1784, 5, 309, 0, 0, 1784, 1785, 3, 326, 163, 0, 1785, 1918, 1, 0, 0, 0, 1786, 1787, 5, 413, 0, 0, 1787, 1789, 7, 12, 0, 0, 1788, 1790, 3, 296, 148, 0, 1789, 1788, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1918, 1, 0, 0, 0, 1791, 1792, 5, 413, 0, 0, 1792, 1793, 5, 98, 0, 0, 1793, 1794, 5, 2, 0, 0, 1794, 1795, 5, 512, 0, 0, 1795, 1796, 5, 3, 0, 0, 1796, 1918, 7, 12, 0, 0, 1797, 1798, 5, 413, 0, 0, 1798, 1918, 5, 36, 0, 0, 1799, 1800, 5, 413, 0, 0, 1800, 1918, 5, 423, 0, 0, 1801, 1802, 5, 413, 0, 0, 1802, 1803, 5, 377, 0, 0, 1803, 1804, 5, 137, 0, 0, 1804, 1805, 5, 187, 0, 0, 1805, 1918, 3, 78, 39, 0, 1806, 1808, 5, 413, 0, 0, 1807, 1809, 5, 190, 0, 0, 1808, 1807, 1, 0, 0, 0, 1808, 1809, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 1813, 5, 458, 0, 0, 1811, 1812, 7, 6, 0, 0, 1812, 1814, 3, 326, 163, 0, 1813, 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1816, 1, 0, 0, 0, 1815, 1817, 3, 80, 40, 0, 1816, 1815, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1918, 1, 0, 0, 0, 1818, 1819, 5, 413, 0, 0, 1819, 1820, 5, 442, 0, 0, 1820, 1821, 5, 131, 0, 0, 1821, 1918, 5, 534, 0, 0, 1822, 1823, 5, 413, 0, 0, 1823, 1825, 5, 189, 0, 0, 1824, 1826, 3, 448, 224, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1918, 1, 0, 0, 0, 1827, 1828, 5, 413, 0, 0, 1828, 1829, 5, 111, 0, 0, 1829, 1918, 5, 534, 0, 0, 1830, 1831, 5, 413, 0, 0, 1831, 1832, 5, 439, 0, 0, 1832, 1918, 5, 534, 0, 0, 1833, 1834, 5, 413, 0, 0, 1834, 1837, 5, 456, 0, 0, 1835, 1836, 5, 309, 0, 0, 1836, 1838, 5, 529, 0, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1918, 1, 0, 0, 0, 1839, 1841, 5, 413, 0, 0, 1840, 1842, 3, 170, 85, 0, 1841, 1840, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1918, 5, 427, 0, 0, 1844, 1845, 5, 413, 0, 0, 1845, 1918, 5, 496, 0, 0, 1846, 1847, 5, 413, 0, 0, 1847, 1848, 5, 443, 0, 0, 1848, 1849, 5, 39, 0, 0, 1849, 1854, 5, 534, 0, 0, 1850, 1851, 5, 4, 0, 0, 1851, 1853, 5, 534, 0, 0, 1852, 1850, 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1918, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1858, 5, 413, 0, 0, 1858, 1859, 5, 110, 0, 0, 1859, 1860, 5, 415, 0, 0, 1860, 1861, 5, 187, 0, 0, 1861, 1918, 3, 78, 39, 0, 1862, 1863, 5, 413, 0, 0, 1863, 1864, 5, 439, 0, 0, 1864, 1867, 5, 100, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1868, 3, 326, 163, 0, 1867, 1865, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1870, 5, 256, 0, 0, 1870, 1872, 5, 529, 0, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1918, 1, 0, 0, 0, 1873, 1874, 5, 413, 0, 0, 1874, 1875, 5, 442, 0, 0, 1875, 1876, 5, 429, 0, 0, 1876, 1878, 5, 185, 0, 0, 1877, 1879, 5, 487, 0, 0, 1878, 1877, 1, 0, 0, 0, 1878, 1879, 1, 0, 0, 0, 1879, 1918, 1, 0, 0, 0, 1880, 1881, 5, 413, 0, 0, 1881, 1882, 5, 354, 0, 0, 1882, 1884, 5, 349, 0, 0, 1883, 1885, 5, 529, 0, 0, 1884, 1883, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1887, 1, 0, 0, 0, 1886, 1888, 3, 296, 148, 0, 1887, 1886, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1918, 1, 0, 0, 0, 1889, 1890, 5, 413, 0, 0, 1890, 1893, 5, 96, 0, 0, 1891, 1892, 7, 6, 0, 0, 1892, 1894, 3, 326, 163, 0, 1893, 1891, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1918, 1, 0, 0, 0, 1895, 1897, 5, 413, 0, 0, 1896, 1898, 5, 190, 0, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1902, 5, 440, 0, 0, 1900, 1901, 7, 6, 0, 0, 1901, 1903, 3, 326, 163, 0, 1902, 1900, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1905, 1, 0, 0, 0, 1904, 1906, 3, 80, 40, 0, 1905, 1904, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 1918, 1, 0, 0, 0, 1907, 1908, 5, 413, 0, 0, 1908, 1909, 5, 439, 0, 0, 1909, 1912, 5, 427, 0, 0, 1910, 1911, 7, 6, 0, 0, 1911, 1913, 3, 326, 163, 0, 1912, 1910, 1, 0, 0, 0, 1912, 1913, 1, 0, 0, 0, 1913, 1915, 1, 0, 0, 0, 1914, 1916, 3, 80, 40, 0, 1915, 1914, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1918, 1, 0, 0, 0, 1917, 1573, 1, 0, 0, 0, 1917, 1581, 1, 0, 0, 0, 1917, 1583, 1, 0, 0, 0, 1917, 1587, 1, 0, 0, 0, 1917, 1589, 1, 0, 0, 0, 1917, 1597, 1, 0, 0, 0, 1917, 1606, 1, 0, 0, 0, 1917, 1609, 1, 0, 0, 0, 1917, 1615, 1, 0, 0, 0, 1917, 1621, 1, 0, 0, 0, 1917, 1626, 1, 0, 0, 0, 1917, 1630, 1, 0, 0, 0, 1917, 1637, 1, 0, 0, 0, 1917, 1646, 1, 0, 0, 0, 1917, 1651, 1, 0, 0, 0, 1917, 1659, 1, 0, 0, 0, 1917, 1661, 1, 0, 0, 0, 1917, 1663, 1, 0, 0, 0, 1917, 1673, 1, 0, 0, 0, 1917, 1680, 1, 0, 0, 0, 1917, 1685, 1, 0, 0, 0, 1917, 1687, 1, 0, 0, 0, 1917, 1690, 1, 0, 0, 0, 1917, 1692, 1, 0, 0, 0, 1917, 1695, 1, 0, 0, 0, 1917, 1701, 1, 0, 0, 0, 1917, 1706, 1, 0, 0, 0, 1917, 1710, 1, 0, 0, 0, 1917, 1713, 1, 0, 0, 0, 1917, 1718, 1, 0, 0, 0, 1917, 1728, 1, 0, 0, 0, 1917, 1735, 1, 0, 0, 0, 1917, 1740, 1, 0, 0, 0, 1917, 1750, 1, 0, 0, 0, 1917, 1756, 1, 0, 0, 0, 1917, 1760, 1, 0, 0, 0, 1917, 1763, 1, 0, 0, 0, 1917, 1778, 1, 0, 0, 0, 1917, 1786, 1, 0, 0, 0, 1917, 1791, 1, 0, 0, 0, 1917, 1797, 1, 0, 0, 0, 1917, 1799, 1, 0, 0, 0, 1917, 1801, 1, 0, 0, 0, 1917, 1806, 1, 0, 0, 0, 1917, 1818, 1, 0, 0, 0, 1917, 1822, 1, 0, 0, 0, 1917, 1827, 1, 0, 0, 0, 1917, 1830, 1, 0, 0, 0, 1917, 1833, 1, 0, 0, 0, 1917, 1839, 1, 0, 0, 0, 1917, 1844, 1, 0, 0, 0, 1917, 1846, 1, 0, 0, 0, 1917, 1857, 1, 0, 0, 0, 1917, 1862, 1, 0, 0, 0, 1917, 1873, 1, 0, 0, 0, 1917, 1880, 1, 0, 0, 0, 1917, 1889, 1, 0, 0, 0, 1917, 1895, 1, 0, 0, 0, 1917, 1907, 1, 0, 0, 0, 1918, 25, 1, 0, 0, 0, 1919, 1922, 5, 437, 0, 0, 1920, 1922, 3, 38, 19, 0, 1921, 1919, 1, 0, 0, 0, 1921, 1920, 1, 0, 0, 0, 1922, 27, 1, 0, 0, 0, 1923, 1924, 5, 205, 0, 0, 1924, 1925, 3, 182, 91, 0, 1925, 29, 1, 0, 0, 0, 1926, 1927, 5, 224, 0, 0, 1927, 1928, 5, 340, 0, 0, 1928, 1929, 5, 187, 0, 0, 1929, 1931, 3, 182, 91, 0, 1930, 1932, 3, 314, 157, 0, 1931, 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 2030, 1, 0, 0, 0, 1933, 1934, 5, 467, 0, 0, 1934, 1935, 5, 340, 0, 0, 1935, 2030, 3, 182, 91, 0, 1936, 1937, 5, 266, 0, 0, 1937, 1946, 5, 440, 0, 0, 1938, 1943, 3, 34, 17, 0, 1939, 1940, 5, 4, 0, 0, 1940, 1942, 3, 34, 17, 0, 1941, 1939, 1, 0, 0, 0, 1942, 1945, 1, 0, 0, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1947, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1946, 1938, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 2030, 1, 0, 0, 0, 1948, 1949, 5, 470, 0, 0, 1949, 2030, 5, 440, 0, 0, 1950, 1951, 5, 491, 0, 0, 1951, 1955, 5, 473, 0, 0, 1952, 1956, 5, 73, 0, 0, 1953, 1954, 5, 87, 0, 0, 1954, 1956, 5, 199, 0, 0, 1955, 1952, 1, 0, 0, 0, 1955, 1953, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1958, 3, 448, 224, 0, 1958, 1973, 5, 497, 0, 0, 1959, 1963, 5, 73, 0, 0, 1960, 1961, 5, 87, 0, 0, 1961, 1963, 5, 199, 0, 0, 1962, 1959, 1, 0, 0, 0, 1962, 1960, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 1974, 3, 448, 224, 0, 1965, 1970, 3, 32, 16, 0, 1966, 1967, 5, 24, 0, 0, 1967, 1969, 3, 32, 16, 0, 1968, 1966, 1, 0, 0, 0, 1969, 1972, 1, 0, 0, 0, 1970, 1968, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1974, 1, 0, 0, 0, 1972, 1970, 1, 0, 0, 0, 1973, 1962, 1, 0, 0, 0, 1973, 1965, 1, 0, 0, 0, 1974, 1976, 1, 0, 0, 0, 1975, 1977, 5, 184, 0, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 2030, 1, 0, 0, 0, 1978, 1979, 5, 37, 0, 0, 1979, 1980, 5, 417, 0, 0, 1980, 1981, 3, 326, 163, 0, 1981, 1982, 5, 454, 0, 0, 1982, 1995, 3, 448, 224, 0, 1983, 1984, 7, 13, 0, 0, 1984, 1985, 5, 2, 0, 0, 1985, 1990, 3, 78, 39, 0, 1986, 1987, 5, 4, 0, 0, 1987, 1989, 3, 78, 39, 0, 1988, 1986, 1, 0, 0, 0, 1989, 1992, 1, 0, 0, 0, 1990, 1988, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1993, 1, 0, 0, 0, 1992, 1990, 1, 0, 0, 0, 1993, 1994, 5, 3, 0, 0, 1994, 1996, 1, 0, 0, 0, 1995, 1983, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 1, 0, 0, 0, 1997, 1999, 3, 314, 157, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2030, 1, 0, 0, 0, 2000, 2001, 5, 382, 0, 0, 2001, 2002, 5, 417, 0, 0, 2002, 2003, 3, 326, 163, 0, 2003, 2004, 5, 187, 0, 0, 2004, 2017, 3, 448, 224, 0, 2005, 2006, 7, 13, 0, 0, 2006, 2007, 5, 2, 0, 0, 2007, 2012, 3, 78, 39, 0, 2008, 2009, 5, 4, 0, 0, 2009, 2011, 3, 78, 39, 0, 2010, 2008, 1, 0, 0, 0, 2011, 2014, 1, 0, 0, 0, 2012, 2010, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2015, 2016, 5, 3, 0, 0, 2016, 2018, 1, 0, 0, 0, 2017, 2005, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2020, 1, 0, 0, 0, 2019, 2021, 3, 314, 157, 0, 2020, 2019, 1, 0, 0, 0, 2020, 2021, 1, 0, 0, 0, 2021, 2030, 1, 0, 0, 0, 2022, 2023, 5, 424, 0, 0, 2023, 2027, 5, 455, 0, 0, 2024, 2025, 5, 497, 0, 0, 2025, 2026, 5, 92, 0, 0, 2026, 2028, 5, 417, 0, 0, 2027, 2024, 1, 0, 0, 0, 2027, 2028, 1, 0, 0, 0, 2028, 2030, 1, 0, 0, 0, 2029, 1926, 1, 0, 0, 0, 2029, 1933, 1, 0, 0, 0, 2029, 1936, 1, 0, 0, 0, 2029, 1948, 1, 0, 0, 0, 2029, 1950, 1, 0, 0, 0, 2029, 1978, 1, 0, 0, 0, 2029, 2000, 1, 0, 0, 0, 2029, 2022, 1, 0, 0, 0, 2030, 31, 1, 0, 0, 0, 2031, 2032, 5, 439, 0, 0, 2032, 2035, 3, 326, 163, 0, 2033, 2034, 5, 321, 0, 0, 2034, 2036, 3, 448, 224, 0, 2035, 2033, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 33, 1, 0, 0, 0, 2037, 2040, 3, 326, 163, 0, 2038, 2039, 5, 28, 0, 0, 2039, 2041, 3, 182, 91, 0, 2040, 2038, 1, 0, 0, 0, 2040, 2041, 1, 0, 0, 0, 2041, 2050, 1, 0, 0, 0, 2042, 2044, 5, 361, 0, 0, 2043, 2045, 5, 262, 0, 0, 2044, 2043, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2051, 1, 0, 0, 0, 2046, 2048, 5, 268, 0, 0, 2047, 2046, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2051, 5, 500, 0, 0, 2050, 2042, 1, 0, 0, 0, 2050, 2047, 1, 0, 0, 0, 2051, 35, 1, 0, 0, 0, 2052, 2053, 5, 413, 0, 0, 2053, 2054, 5, 395, 0, 0, 2054, 2061, 5, 342, 0, 0, 2055, 2059, 5, 182, 0, 0, 2056, 2060, 3, 190, 95, 0, 2057, 2058, 5, 390, 0, 0, 2058, 2060, 3, 448, 224, 0, 2059, 2056, 1, 0, 0, 0, 2059, 2057, 1, 0, 0, 0, 2060, 2062, 1, 0, 0, 0, 2061, 2055, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2410, 1, 0, 0, 0, 2063, 2064, 5, 413, 0, 0, 2064, 2065, 5, 429, 0, 0, 2065, 2410, 7, 14, 0, 0, 2066, 2067, 5, 413, 0, 0, 2067, 2068, 5, 311, 0, 0, 2068, 2071, 5, 440, 0, 0, 2069, 2070, 7, 6, 0, 0, 2070, 2072, 3, 326, 163, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2074, 1, 0, 0, 0, 2073, 2075, 3, 80, 40, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2410, 1, 0, 0, 0, 2076, 2078, 5, 413, 0, 0, 2077, 2079, 5, 190, 0, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2083, 5, 490, 0, 0, 2081, 2082, 7, 6, 0, 0, 2082, 2084, 3, 326, 163, 0, 2083, 2081, 1, 0, 0, 0, 2083, 2084, 1, 0, 0, 0, 2084, 2086, 1, 0, 0, 0, 2085, 2087, 3, 80, 40, 0, 2086, 2085, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2410, 1, 0, 0, 0, 2088, 2089, 5, 413, 0, 0, 2089, 2090, 5, 99, 0, 0, 2090, 2091, 5, 280, 0, 0, 2091, 2092, 5, 489, 0, 0, 2092, 2410, 3, 326, 163, 0, 2093, 2094, 5, 413, 0, 0, 2094, 2096, 5, 99, 0, 0, 2095, 2097, 3, 170, 85, 0, 2096, 2095, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2099, 5, 191, 0, 0, 2099, 2100, 3, 392, 196, 0, 2100, 2102, 5, 2, 0, 0, 2101, 2103, 3, 128, 64, 0, 2102, 2101, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2107, 5, 3, 0, 0, 2105, 2106, 7, 6, 0, 0, 2106, 2108, 3, 326, 163, 0, 2107, 2105, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2410, 1, 0, 0, 0, 2109, 2110, 5, 413, 0, 0, 2110, 2113, 7, 15, 0, 0, 2111, 2112, 5, 187, 0, 0, 2112, 2114, 3, 448, 224, 0, 2113, 2111, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 1, 0, 0, 0, 2115, 2117, 3, 80, 40, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2410, 1, 0, 0, 0, 2118, 2120, 5, 413, 0, 0, 2119, 2121, 5, 190, 0, 0, 2120, 2119, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 7, 16, 0, 0, 2123, 2124, 7, 6, 0, 0, 2124, 2127, 3, 326, 163, 0, 2125, 2126, 7, 6, 0, 0, 2126, 2128, 3, 326, 163, 0, 2127, 2125, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2130, 1, 0, 0, 0, 2129, 2131, 3, 80, 40, 0, 2130, 2129, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2410, 1, 0, 0, 0, 2132, 2133, 5, 413, 0, 0, 2133, 2134, 5, 261, 0, 0, 2134, 2147, 5, 492, 0, 0, 2135, 2136, 7, 6, 0, 0, 2136, 2138, 3, 326, 163, 0, 2137, 2135, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2140, 1, 0, 0, 0, 2139, 2141, 3, 80, 40, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2143, 1, 0, 0, 0, 2142, 2144, 3, 296, 148, 0, 2143, 2142, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2148, 1, 0, 0, 0, 2145, 2146, 5, 309, 0, 0, 2146, 2148, 5, 529, 0, 0, 2147, 2137, 1, 0, 0, 0, 2147, 2145, 1, 0, 0, 0, 2148, 2410, 1, 0, 0, 0, 2149, 2151, 5, 413, 0, 0, 2150, 2152, 5, 430, 0, 0, 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2156, 5, 261, 0, 0, 2154, 2155, 7, 6, 0, 0, 2155, 2157, 3, 326, 163, 0, 2156, 2154, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2159, 1, 0, 0, 0, 2158, 2160, 3, 80, 40, 0, 2159, 2158, 1, 0, 0, 0, 2159, 2160, 1, 0, 0, 0, 2160, 2162, 1, 0, 0, 0, 2161, 2163, 3, 292, 146, 0, 2162, 2161, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2165, 1, 0, 0, 0, 2164, 2166, 3, 296, 148, 0, 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2410, 1, 0, 0, 0, 2167, 2168, 5, 413, 0, 0, 2168, 2171, 5, 167, 0, 0, 2169, 2170, 7, 6, 0, 0, 2170, 2172, 3, 326, 163, 0, 2171, 2169, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 1, 0, 0, 0, 2173, 2175, 3, 80, 40, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2177, 1, 0, 0, 0, 2176, 2178, 3, 292, 146, 0, 2177, 2176, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2180, 1, 0, 0, 0, 2179, 2181, 3, 296, 148, 0, 2180, 2179, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2410, 1, 0, 0, 0, 2182, 2183, 5, 413, 0, 0, 2183, 2184, 5, 21, 0, 0, 2184, 2189, 5, 439, 0, 0, 2185, 2190, 5, 393, 0, 0, 2186, 2187, 5, 280, 0, 0, 2187, 2190, 5, 489, 0, 0, 2188, 2190, 5, 79, 0, 0, 2189, 2185, 1, 0, 0, 0, 2189, 2186, 1, 0, 0, 0, 2189, 2188, 1, 0, 0, 0, 2190, 2193, 1, 0, 0, 0, 2191, 2192, 7, 6, 0, 0, 2192, 2194, 3, 326, 163, 0, 2193, 2191, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2196, 1, 0, 0, 0, 2195, 2197, 3, 80, 40, 0, 2196, 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2199, 1, 0, 0, 0, 2198, 2200, 3, 292, 146, 0, 2199, 2198, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2202, 1, 0, 0, 0, 2201, 2203, 3, 296, 148, 0, 2202, 2201, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2410, 1, 0, 0, 0, 2204, 2206, 5, 413, 0, 0, 2205, 2207, 5, 446, 0, 0, 2206, 2205, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 5, 322, 0, 0, 2209, 2210, 5, 187, 0, 0, 2210, 2212, 3, 326, 163, 0, 2211, 2213, 3, 80, 40, 0, 2212, 2211, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 1, 0, 0, 0, 2214, 2216, 3, 292, 146, 0, 2215, 2214, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2218, 1, 0, 0, 0, 2217, 2219, 3, 296, 148, 0, 2218, 2217, 1, 0, 0, 0, 2218, 2219, 1, 0, 0, 0, 2219, 2410, 1, 0, 0, 0, 2220, 2221, 5, 413, 0, 0, 2221, 2222, 5, 442, 0, 0, 2222, 2410, 5, 534, 0, 0, 2223, 2224, 5, 413, 0, 0, 2224, 2225, 5, 443, 0, 0, 2225, 2226, 5, 187, 0, 0, 2226, 2228, 3, 326, 163, 0, 2227, 2229, 3, 160, 80, 0, 2228, 2227, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2231, 1, 0, 0, 0, 2230, 2232, 3, 80, 40, 0, 2231, 2230, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2235, 3, 292, 146, 0, 2234, 2233, 1, 0, 0, 0, 2234, 2235, 1, 0, 0, 0, 2235, 2237, 1, 0, 0, 0, 2236, 2238, 3, 296, 148, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2410, 1, 0, 0, 0, 2239, 2240, 5, 413, 0, 0, 2240, 2243, 5, 37, 0, 0, 2241, 2242, 7, 6, 0, 0, 2242, 2244, 3, 326, 163, 0, 2243, 2241, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2246, 1, 0, 0, 0, 2245, 2247, 3, 80, 40, 0, 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2410, 1, 0, 0, 0, 2248, 2250, 5, 413, 0, 0, 2249, 2251, 5, 53, 0, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2255, 5, 382, 0, 0, 2253, 2254, 7, 6, 0, 0, 2254, 2256, 3, 326, 163, 0, 2255, 2253, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2258, 1, 0, 0, 0, 2257, 2259, 3, 80, 40, 0, 2258, 2257, 1, 0, 0, 0, 2258, 2259, 1, 0, 0, 0, 2259, 2410, 1, 0, 0, 0, 2260, 2261, 5, 413, 0, 0, 2261, 2263, 5, 381, 0, 0, 2262, 2264, 3, 80, 40, 0, 2263, 2262, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2266, 1, 0, 0, 0, 2265, 2267, 3, 292, 146, 0, 2266, 2265, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2269, 1, 0, 0, 0, 2268, 2270, 3, 296, 148, 0, 2269, 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2410, 1, 0, 0, 0, 2271, 2272, 5, 413, 0, 0, 2272, 2273, 5, 499, 0, 0, 2273, 2275, 5, 201, 0, 0, 2274, 2276, 3, 80, 40, 0, 2275, 2274, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2410, 1, 0, 0, 0, 2277, 2278, 5, 413, 0, 0, 2278, 2279, 5, 417, 0, 0, 2279, 2280, 5, 309, 0, 0, 2280, 2282, 3, 448, 224, 0, 2281, 2283, 3, 80, 40, 0, 2282, 2281, 1, 0, 0, 0, 2282, 2283, 1, 0, 0, 0, 2283, 2410, 1, 0, 0, 0, 2284, 2286, 5, 413, 0, 0, 2285, 2287, 5, 190, 0, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2289, 1, 0, 0, 0, 2288, 2290, 5, 57, 0, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2291, 1, 0, 0, 0, 2291, 2294, 5, 192, 0, 0, 2292, 2293, 7, 6, 0, 0, 2293, 2295, 3, 326, 163, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2297, 1, 0, 0, 0, 2296, 2298, 3, 80, 40, 0, 2297, 2296, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2410, 1, 0, 0, 0, 2299, 2300, 5, 413, 0, 0, 2300, 2302, 5, 195, 0, 0, 2301, 2303, 5, 190, 0, 0, 2302, 2301, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 5, 192, 0, 0, 2305, 2307, 3, 80, 40, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2410, 1, 0, 0, 0, 2308, 2309, 5, 413, 0, 0, 2309, 2312, 5, 463, 0, 0, 2310, 2311, 7, 6, 0, 0, 2311, 2313, 3, 326, 163, 0, 2312, 2310, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2410, 1, 0, 0, 0, 2314, 2315, 5, 413, 0, 0, 2315, 2316, 7, 17, 0, 0, 2316, 2317, 7, 6, 0, 0, 2317, 2320, 3, 326, 163, 0, 2318, 2319, 7, 6, 0, 0, 2319, 2321, 3, 326, 163, 0, 2320, 2318, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2410, 1, 0, 0, 0, 2322, 2323, 5, 413, 0, 0, 2323, 2326, 5, 455, 0, 0, 2324, 2325, 7, 6, 0, 0, 2325, 2327, 3, 326, 163, 0, 2326, 2324, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2329, 1, 0, 0, 0, 2328, 2330, 3, 80, 40, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2410, 1, 0, 0, 0, 2331, 2332, 5, 413, 0, 0, 2332, 2333, 5, 60, 0, 0, 2333, 2334, 5, 210, 0, 0, 2334, 2410, 5, 529, 0, 0, 2335, 2336, 5, 413, 0, 0, 2336, 2337, 5, 66, 0, 0, 2337, 2338, 5, 366, 0, 0, 2338, 2340, 5, 42, 0, 0, 2339, 2341, 3, 80, 40, 0, 2340, 2339, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2410, 1, 0, 0, 0, 2342, 2343, 5, 413, 0, 0, 2343, 2344, 5, 354, 0, 0, 2344, 2355, 5, 426, 0, 0, 2345, 2346, 5, 182, 0, 0, 2346, 2356, 3, 448, 224, 0, 2347, 2348, 5, 187, 0, 0, 2348, 2353, 3, 326, 163, 0, 2349, 2351, 5, 20, 0, 0, 2350, 2352, 5, 487, 0, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2354, 1, 0, 0, 0, 2353, 2349, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2345, 1, 0, 0, 0, 2355, 2347, 1, 0, 0, 0, 2355, 2356, 1, 0, 0, 0, 2356, 2410, 1, 0, 0, 0, 2357, 2358, 5, 413, 0, 0, 2358, 2359, 5, 56, 0, 0, 2359, 2362, 5, 219, 0, 0, 2360, 2361, 7, 6, 0, 0, 2361, 2363, 3, 326, 163, 0, 2362, 2360, 1, 0, 0, 0, 2362, 2363, 1, 0, 0, 0, 2363, 2365, 1, 0, 0, 0, 2364, 2366, 3, 80, 40, 0, 2365, 2364, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2368, 1, 0, 0, 0, 2367, 2369, 3, 292, 146, 0, 2368, 2367, 1, 0, 0, 0, 2368, 2369, 1, 0, 0, 0, 2369, 2371, 1, 0, 0, 0, 2370, 2372, 3, 296, 148, 0, 2371, 2370, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2410, 1, 0, 0, 0, 2373, 2377, 5, 413, 0, 0, 2374, 2378, 5, 74, 0, 0, 2375, 2376, 5, 87, 0, 0, 2376, 2378, 5, 201, 0, 0, 2377, 2374, 1, 0, 0, 0, 2377, 2375, 1, 0, 0, 0, 2378, 2410, 1, 0, 0, 0, 2379, 2380, 5, 413, 0, 0, 2380, 2381, 5, 377, 0, 0, 2381, 2382, 5, 427, 0, 0, 2382, 2383, 5, 187, 0, 0, 2383, 2385, 3, 78, 39, 0, 2384, 2386, 3, 80, 40, 0, 2385, 2384, 1, 0, 0, 0, 2385, 2386, 1, 0, 0, 0, 2386, 2410, 1, 0, 0, 0, 2387, 2388, 5, 413, 0, 0, 2388, 2391, 5, 97, 0, 0, 2389, 2390, 7, 6, 0, 0, 2390, 2392, 3, 326, 163, 0, 2391, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2395, 3, 248, 124, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2397, 1, 0, 0, 0, 2396, 2398, 3, 292, 146, 0, 2397, 2396, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2400, 1, 0, 0, 0, 2399, 2401, 3, 296, 148, 0, 2400, 2399, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2410, 1, 0, 0, 0, 2402, 2403, 5, 413, 0, 0, 2403, 2404, 5, 491, 0, 0, 2404, 2405, 5, 473, 0, 0, 2405, 2407, 5, 239, 0, 0, 2406, 2408, 3, 80, 40, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 1, 0, 0, 0, 2409, 2052, 1, 0, 0, 0, 2409, 2063, 1, 0, 0, 0, 2409, 2066, 1, 0, 0, 0, 2409, 2076, 1, 0, 0, 0, 2409, 2088, 1, 0, 0, 0, 2409, 2093, 1, 0, 0, 0, 2409, 2109, 1, 0, 0, 0, 2409, 2118, 1, 0, 0, 0, 2409, 2132, 1, 0, 0, 0, 2409, 2149, 1, 0, 0, 0, 2409, 2167, 1, 0, 0, 0, 2409, 2182, 1, 0, 0, 0, 2409, 2204, 1, 0, 0, 0, 2409, 2220, 1, 0, 0, 0, 2409, 2223, 1, 0, 0, 0, 2409, 2239, 1, 0, 0, 0, 2409, 2248, 1, 0, 0, 0, 2409, 2260, 1, 0, 0, 0, 2409, 2271, 1, 0, 0, 0, 2409, 2277, 1, 0, 0, 0, 2409, 2284, 1, 0, 0, 0, 2409, 2299, 1, 0, 0, 0, 2409, 2308, 1, 0, 0, 0, 2409, 2314, 1, 0, 0, 0, 2409, 2322, 1, 0, 0, 0, 2409, 2331, 1, 0, 0, 0, 2409, 2335, 1, 0, 0, 0, 2409, 2342, 1, 0, 0, 0, 2409, 2357, 1, 0, 0, 0, 2409, 2373, 1, 0, 0, 0, 2409, 2379, 1, 0, 0, 0, 2409, 2387, 1, 0, 0, 0, 2409, 2402, 1, 0, 0, 0, 2410, 37, 1, 0, 0, 0, 2411, 2412, 5, 99, 0, 0, 2412, 2413, 5, 394, 0, 0, 2413, 2414, 5, 261, 0, 0, 2414, 2417, 3, 326, 163, 0, 2415, 2416, 5, 309, 0, 0, 2416, 2418, 3, 448, 224, 0, 2417, 2415, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2421, 1, 0, 0, 0, 2419, 2420, 5, 497, 0, 0, 2420, 2422, 7, 18, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2431, 1, 0, 0, 0, 2423, 2428, 3, 42, 21, 0, 2424, 2425, 5, 4, 0, 0, 2425, 2427, 3, 42, 21, 0, 2426, 2424, 1, 0, 0, 0, 2427, 2430, 1, 0, 0, 0, 2428, 2426, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2432, 1, 0, 0, 0, 2430, 2428, 1, 0, 0, 0, 2431, 2423, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2434, 1, 0, 0, 0, 2433, 2435, 3, 314, 157, 0, 2434, 2433, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2436, 1, 0, 0, 0, 2436, 2437, 5, 187, 0, 0, 2437, 2438, 3, 448, 224, 0, 2438, 2439, 5, 2, 0, 0, 2439, 2440, 3, 316, 158, 0, 2440, 2442, 5, 3, 0, 0, 2441, 2443, 3, 436, 218, 0, 2442, 2441, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 39, 1, 0, 0, 0, 2444, 2445, 5, 261, 0, 0, 2445, 2451, 3, 222, 111, 0, 2446, 2447, 5, 350, 0, 0, 2447, 2448, 5, 2, 0, 0, 2448, 2449, 3, 316, 158, 0, 2449, 2450, 5, 3, 0, 0, 2450, 2452, 1, 0, 0, 0, 2451, 2446, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2455, 3, 436, 218, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2544, 1, 0, 0, 0, 2456, 2457, 5, 99, 0, 0, 2457, 2458, 5, 437, 0, 0, 2458, 2459, 3, 326, 163, 0, 2459, 2460, 5, 2, 0, 0, 2460, 2461, 3, 56, 28, 0, 2461, 2462, 5, 3, 0, 0, 2462, 2463, 5, 187, 0, 0, 2463, 2464, 5, 44, 0, 0, 2464, 2465, 5, 2, 0, 0, 2465, 2466, 3, 316, 158, 0, 2466, 2468, 5, 3, 0, 0, 2467, 2469, 3, 314, 157, 0, 2468, 2467, 1, 0, 0, 0, 2468, 2469, 1, 0, 0, 0, 2469, 2544, 1, 0, 0, 0, 2470, 2471, 5, 428, 0, 0, 2471, 2472, 5, 437, 0, 0, 2472, 2473, 5, 239, 0, 0, 2473, 2544, 3, 326, 163, 0, 2474, 2475, 5, 384, 0, 0, 2475, 2476, 5, 437, 0, 0, 2476, 2477, 5, 239, 0, 0, 2477, 2544, 3, 326, 163, 0, 2478, 2479, 5, 329, 0, 0, 2479, 2480, 5, 437, 0, 0, 2480, 2481, 5, 239, 0, 0, 2481, 2544, 3, 326, 163, 0, 2482, 2483, 5, 329, 0, 0, 2483, 2484, 5, 394, 0, 0, 2484, 2485, 5, 261, 0, 0, 2485, 2486, 5, 182, 0, 0, 2486, 2544, 3, 326, 163, 0, 2487, 2488, 5, 329, 0, 0, 2488, 2489, 5, 20, 0, 0, 2489, 2490, 5, 394, 0, 0, 2490, 2544, 5, 261, 0, 0, 2491, 2492, 5, 384, 0, 0, 2492, 2493, 5, 394, 0, 0, 2493, 2494, 5, 261, 0, 0, 2494, 2495, 5, 182, 0, 0, 2495, 2544, 3, 326, 163, 0, 2496, 2497, 5, 384, 0, 0, 2497, 2498, 5, 20, 0, 0, 2498, 2499, 5, 394, 0, 0, 2499, 2544, 5, 261, 0, 0, 2500, 2501, 5, 428, 0, 0, 2501, 2502, 5, 394, 0, 0, 2502, 2503, 5, 261, 0, 0, 2503, 2504, 5, 182, 0, 0, 2504, 2544, 3, 326, 163, 0, 2505, 2507, 5, 413, 0, 0, 2506, 2508, 5, 20, 0, 0, 2507, 2506, 1, 0, 0, 0, 2507, 2508, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 5, 394, 0, 0, 2510, 2516, 5, 261, 0, 0, 2511, 2512, 5, 182, 0, 0, 2512, 2517, 3, 326, 163, 0, 2513, 2515, 3, 80, 40, 0, 2514, 2513, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2511, 1, 0, 0, 0, 2516, 2514, 1, 0, 0, 0, 2517, 2544, 1, 0, 0, 0, 2518, 2519, 5, 413, 0, 0, 2519, 2520, 5, 394, 0, 0, 2520, 2521, 5, 261, 0, 0, 2521, 2524, 5, 444, 0, 0, 2522, 2523, 7, 6, 0, 0, 2523, 2525, 3, 448, 224, 0, 2524, 2522, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2527, 1, 0, 0, 0, 2526, 2528, 3, 80, 40, 0, 2527, 2526, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2544, 1, 0, 0, 0, 2529, 2531, 5, 413, 0, 0, 2530, 2532, 5, 20, 0, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 99, 0, 0, 2534, 2535, 5, 394, 0, 0, 2535, 2536, 5, 261, 0, 0, 2536, 2537, 5, 182, 0, 0, 2537, 2544, 3, 326, 163, 0, 2538, 2539, 5, 413, 0, 0, 2539, 2540, 5, 99, 0, 0, 2540, 2541, 5, 261, 0, 0, 2541, 2542, 5, 182, 0, 0, 2542, 2544, 3, 326, 163, 0, 2543, 2444, 1, 0, 0, 0, 2543, 2456, 1, 0, 0, 0, 2543, 2470, 1, 0, 0, 0, 2543, 2474, 1, 0, 0, 0, 2543, 2478, 1, 0, 0, 0, 2543, 2482, 1, 0, 0, 0, 2543, 2487, 1, 0, 0, 0, 2543, 2491, 1, 0, 0, 0, 2543, 2496, 1, 0, 0, 0, 2543, 2500, 1, 0, 0, 0, 2543, 2505, 1, 0, 0, 0, 2543, 2518, 1, 0, 0, 0, 2543, 2529, 1, 0, 0, 0, 2543, 2538, 1, 0, 0, 0, 2544, 41, 1, 0, 0, 0, 2545, 2546, 5, 80, 0, 0, 2546, 2547, 5, 447, 0, 0, 2547, 2548, 5, 59, 0, 0, 2548, 2556, 5, 529, 0, 0, 2549, 2556, 3, 52, 26, 0, 2550, 2556, 3, 50, 25, 0, 2551, 2556, 3, 48, 24, 0, 2552, 2556, 3, 46, 23, 0, 2553, 2556, 3, 44, 22, 0, 2554, 2556, 3, 160, 80, 0, 2555, 2545, 1, 0, 0, 0, 2555, 2549, 1, 0, 0, 0, 2555, 2550, 1, 0, 0, 0, 2555, 2551, 1, 0, 0, 0, 2555, 2552, 1, 0, 0, 0, 2555, 2553, 1, 0, 0, 0, 2555, 2554, 1, 0, 0, 0, 2556, 43, 1, 0, 0, 0, 2557, 2558, 5, 314, 0, 0, 2558, 2559, 5, 59, 0, 0, 2559, 2560, 3, 448, 224, 0, 2560, 45, 1, 0, 0, 0, 2561, 2562, 5, 126, 0, 0, 2562, 2563, 5, 309, 0, 0, 2563, 2564, 3, 374, 187, 0, 2564, 47, 1, 0, 0, 0, 2565, 2566, 5, 495, 0, 0, 2566, 2567, 3, 374, 187, 0, 2567, 49, 1, 0, 0, 0, 2568, 2569, 5, 343, 0, 0, 2569, 2570, 5, 177, 0, 0, 2570, 2571, 3, 374, 187, 0, 2571, 51, 1, 0, 0, 0, 2572, 2573, 5, 80, 0, 0, 2573, 2574, 5, 2, 0, 0, 2574, 2579, 3, 54, 27, 0, 2575, 2576, 5, 4, 0, 0, 2576, 2578, 3, 54, 27, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2581, 1, 0, 0, 0, 2579, 2577, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 2582, 1, 0, 0, 0, 2581, 2579, 1, 0, 0, 0, 2582, 2583, 5, 3, 0, 0, 2583, 53, 1, 0, 0, 0, 2584, 2587, 3, 448, 224, 0, 2585, 2586, 5, 503, 0, 0, 2586, 2588, 3, 374, 187, 0, 2587, 2585, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, 0, 2588, 2598, 1, 0, 0, 0, 2589, 2590, 5, 2, 0, 0, 2590, 2593, 3, 448, 224, 0, 2591, 2592, 5, 503, 0, 0, 2592, 2594, 3, 374, 187, 0, 2593, 2591, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2596, 5, 3, 0, 0, 2596, 2598, 1, 0, 0, 0, 2597, 2584, 1, 0, 0, 0, 2597, 2589, 1, 0, 0, 0, 2598, 55, 1, 0, 0, 0, 2599, 2604, 3, 58, 29, 0, 2600, 2601, 5, 4, 0, 0, 2601, 2603, 3, 58, 29, 0, 2602, 2600, 1, 0, 0, 0, 2603, 2606, 1, 0, 0, 0, 2604, 2602, 1, 0, 0, 0, 2604, 2605, 1, 0, 0, 0, 2605, 57, 1, 0, 0, 0, 2606, 2604, 1, 0, 0, 0, 2607, 2608, 5, 187, 0, 0, 2608, 2609, 3, 326, 163, 0, 2609, 2610, 5, 230, 0, 0, 2610, 2612, 3, 326, 163, 0, 2611, 2613, 3, 160, 80, 0, 2612, 2611, 1, 0, 0, 0, 2612, 2613, 1, 0, 0, 0, 2613, 2615, 1, 0, 0, 0, 2614, 2616, 3, 304, 152, 0, 2615, 2614, 1, 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 59, 1, 0, 0, 0, 2617, 2618, 5, 367, 0, 0, 2618, 2619, 5, 66, 0, 0, 2619, 2621, 3, 448, 224, 0, 2620, 2622, 3, 314, 157, 0, 2621, 2620, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2633, 1, 0, 0, 0, 2623, 2624, 5, 367, 0, 0, 2624, 2625, 5, 111, 0, 0, 2625, 2627, 3, 326, 163, 0, 2626, 2628, 3, 314, 157, 0, 2627, 2626, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2633, 1, 0, 0, 0, 2629, 2630, 5, 367, 0, 0, 2630, 2631, 5, 439, 0, 0, 2631, 2633, 3, 326, 163, 0, 2632, 2617, 1, 0, 0, 0, 2632, 2623, 1, 0, 0, 0, 2632, 2629, 1, 0, 0, 0, 2633, 61, 1, 0, 0, 0, 2634, 2635, 5, 72, 0, 0, 2635, 2636, 5, 20, 0, 0, 2636, 2645, 5, 349, 0, 0, 2637, 2638, 5, 72, 0, 0, 2638, 2640, 5, 247, 0, 0, 2639, 2641, 3, 448, 224, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2643, 7, 6, 0, 0, 2643, 2645, 3, 448, 224, 0, 2644, 2634, 1, 0, 0, 0, 2644, 2637, 1, 0, 0, 0, 2645, 63, 1, 0, 0, 0, 2646, 2647, 5, 367, 0, 0, 2647, 2651, 5, 251, 0, 0, 2648, 2652, 5, 20, 0, 0, 2649, 2650, 5, 182, 0, 0, 2650, 2652, 3, 182, 91, 0, 2651, 2648, 1, 0, 0, 0, 2651, 2649, 1, 0, 0, 0, 2652, 65, 1, 0, 0, 0, 2653, 2654, 5, 72, 0, 0, 2654, 2655, 5, 354, 0, 0, 2655, 2660, 5, 426, 0, 0, 2656, 2657, 5, 182, 0, 0, 2657, 2661, 3, 448, 224, 0, 2658, 2659, 7, 6, 0, 0, 2659, 2661, 3, 326, 163, 0, 2660, 2656, 1, 0, 0, 0, 2660, 2658, 1, 0, 0, 0, 2661, 2667, 1, 0, 0, 0, 2662, 2663, 5, 72, 0, 0, 2663, 2664, 5, 20, 0, 0, 2664, 2665, 5, 354, 0, 0, 2665, 2667, 5, 426, 0, 0, 2666, 2653, 1, 0, 0, 0, 2666, 2662, 1, 0, 0, 0, 2667, 67, 1, 0, 0, 0, 2668, 2669, 5, 63, 0, 0, 2669, 2672, 5, 261, 0, 0, 2670, 2671, 7, 6, 0, 0, 2671, 2673, 3, 448, 224, 0, 2672, 2670, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2675, 1, 0, 0, 0, 2674, 2676, 3, 80, 40, 0, 2675, 2674, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2694, 1, 0, 0, 0, 2677, 2678, 5, 63, 0, 0, 2678, 2681, 5, 167, 0, 0, 2679, 2680, 7, 6, 0, 0, 2680, 2682, 3, 448, 224, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2684, 1, 0, 0, 0, 2683, 2685, 3, 80, 40, 0, 2684, 2683, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2694, 1, 0, 0, 0, 2686, 2687, 5, 63, 0, 0, 2687, 2688, 5, 491, 0, 0, 2688, 2689, 5, 473, 0, 0, 2689, 2691, 5, 239, 0, 0, 2690, 2692, 3, 80, 40, 0, 2691, 2690, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2668, 1, 0, 0, 0, 2693, 2677, 1, 0, 0, 0, 2693, 2686, 1, 0, 0, 0, 2694, 69, 1, 0, 0, 0, 2695, 2696, 5, 63, 0, 0, 2696, 2697, 5, 21, 0, 0, 2697, 2702, 5, 439, 0, 0, 2698, 2703, 5, 393, 0, 0, 2699, 2700, 5, 280, 0, 0, 2700, 2703, 5, 489, 0, 0, 2701, 2703, 5, 79, 0, 0, 2702, 2698, 1, 0, 0, 0, 2702, 2699, 1, 0, 0, 0, 2702, 2701, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2705, 5, 187, 0, 0, 2705, 2716, 3, 326, 163, 0, 2706, 2707, 5, 2, 0, 0, 2707, 2712, 5, 534, 0, 0, 2708, 2709, 5, 4, 0, 0, 2709, 2711, 5, 534, 0, 0, 2710, 2708, 1, 0, 0, 0, 2711, 2714, 1, 0, 0, 0, 2712, 2710, 1, 0, 0, 0, 2712, 2713, 1, 0, 0, 0, 2713, 2715, 1, 0, 0, 0, 2714, 2712, 1, 0, 0, 0, 2715, 2717, 5, 3, 0, 0, 2716, 2706, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2759, 1, 0, 0, 0, 2718, 2719, 5, 63, 0, 0, 2719, 2720, 5, 56, 0, 0, 2720, 2721, 5, 219, 0, 0, 2721, 2722, 5, 309, 0, 0, 2722, 2733, 3, 326, 163, 0, 2723, 2724, 5, 2, 0, 0, 2724, 2729, 5, 534, 0, 0, 2725, 2726, 5, 4, 0, 0, 2726, 2728, 5, 534, 0, 0, 2727, 2725, 1, 0, 0, 0, 2728, 2731, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2732, 1, 0, 0, 0, 2731, 2729, 1, 0, 0, 0, 2732, 2734, 5, 3, 0, 0, 2733, 2723, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2759, 1, 0, 0, 0, 2735, 2736, 5, 63, 0, 0, 2736, 2737, 5, 123, 0, 0, 2737, 2738, 5, 35, 0, 0, 2738, 2743, 5, 529, 0, 0, 2739, 2740, 5, 4, 0, 0, 2740, 2742, 5, 529, 0, 0, 2741, 2739, 1, 0, 0, 0, 2742, 2745, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2759, 1, 0, 0, 0, 2745, 2743, 1, 0, 0, 0, 2746, 2747, 5, 63, 0, 0, 2747, 2750, 5, 37, 0, 0, 2748, 2749, 7, 6, 0, 0, 2749, 2751, 3, 448, 224, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 2759, 1, 0, 0, 0, 2752, 2753, 5, 63, 0, 0, 2753, 2756, 5, 382, 0, 0, 2754, 2755, 7, 6, 0, 0, 2755, 2757, 3, 448, 224, 0, 2756, 2754, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2759, 1, 0, 0, 0, 2758, 2695, 1, 0, 0, 0, 2758, 2718, 1, 0, 0, 0, 2758, 2735, 1, 0, 0, 0, 2758, 2746, 1, 0, 0, 0, 2758, 2752, 1, 0, 0, 0, 2759, 71, 1, 0, 0, 0, 2760, 2761, 5, 15, 0, 0, 2761, 2762, 5, 413, 0, 0, 2762, 2763, 5, 377, 0, 0, 2763, 2764, 5, 137, 0, 0, 2764, 2765, 5, 187, 0, 0, 2765, 2865, 3, 78, 39, 0, 2766, 2767, 5, 15, 0, 0, 2767, 2768, 5, 363, 0, 0, 2768, 2780, 5, 132, 0, 0, 2769, 2770, 5, 309, 0, 0, 2770, 2771, 5, 2, 0, 0, 2771, 2776, 5, 529, 0, 0, 2772, 2773, 5, 4, 0, 0, 2773, 2775, 5, 529, 0, 0, 2774, 2772, 1, 0, 0, 0, 2775, 2778, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2779, 1, 0, 0, 0, 2778, 2776, 1, 0, 0, 0, 2779, 2781, 5, 3, 0, 0, 2780, 2769, 1, 0, 0, 0, 2780, 2781, 1, 0, 0, 0, 2781, 2865, 1, 0, 0, 0, 2782, 2783, 5, 15, 0, 0, 2783, 2784, 5, 63, 0, 0, 2784, 2785, 5, 363, 0, 0, 2785, 2797, 5, 132, 0, 0, 2786, 2787, 5, 309, 0, 0, 2787, 2788, 5, 2, 0, 0, 2788, 2793, 5, 529, 0, 0, 2789, 2790, 5, 4, 0, 0, 2790, 2792, 5, 529, 0, 0, 2791, 2789, 1, 0, 0, 0, 2792, 2795, 1, 0, 0, 0, 2793, 2791, 1, 0, 0, 0, 2793, 2794, 1, 0, 0, 0, 2794, 2796, 1, 0, 0, 0, 2795, 2793, 1, 0, 0, 0, 2796, 2798, 5, 3, 0, 0, 2797, 2786, 1, 0, 0, 0, 2797, 2798, 1, 0, 0, 0, 2798, 2865, 1, 0, 0, 0, 2799, 2800, 5, 15, 0, 0, 2800, 2801, 5, 130, 0, 0, 2801, 2802, 5, 442, 0, 0, 2802, 2865, 5, 534, 0, 0, 2803, 2804, 5, 15, 0, 0, 2804, 2805, 5, 413, 0, 0, 2805, 2806, 5, 377, 0, 0, 2806, 2807, 5, 427, 0, 0, 2807, 2808, 5, 187, 0, 0, 2808, 2814, 3, 78, 39, 0, 2809, 2810, 5, 495, 0, 0, 2810, 2811, 5, 427, 0, 0, 2811, 2815, 5, 503, 0, 0, 2812, 2813, 5, 505, 0, 0, 2813, 2815, 5, 529, 0, 0, 2814, 2809, 1, 0, 0, 0, 2814, 2812, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2865, 1, 0, 0, 0, 2816, 2817, 5, 15, 0, 0, 2817, 2818, 5, 84, 0, 0, 2818, 2819, 5, 439, 0, 0, 2819, 2824, 3, 78, 39, 0, 2820, 2821, 5, 495, 0, 0, 2821, 2822, 5, 462, 0, 0, 2822, 2823, 5, 503, 0, 0, 2823, 2825, 5, 529, 0, 0, 2824, 2820, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2865, 1, 0, 0, 0, 2826, 2827, 5, 15, 0, 0, 2827, 2828, 5, 71, 0, 0, 2828, 2830, 3, 362, 181, 0, 2829, 2831, 3, 314, 157, 0, 2830, 2829, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2865, 1, 0, 0, 0, 2832, 2833, 5, 15, 0, 0, 2833, 2834, 5, 413, 0, 0, 2834, 2835, 5, 442, 0, 0, 2835, 2836, 5, 429, 0, 0, 2836, 2838, 5, 185, 0, 0, 2837, 2839, 5, 487, 0, 0, 2838, 2837, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2865, 1, 0, 0, 0, 2840, 2841, 5, 15, 0, 0, 2841, 2842, 5, 72, 0, 0, 2842, 2854, 5, 456, 0, 0, 2843, 2844, 5, 309, 0, 0, 2844, 2845, 5, 2, 0, 0, 2845, 2850, 5, 529, 0, 0, 2846, 2847, 5, 4, 0, 0, 2847, 2849, 5, 529, 0, 0, 2848, 2846, 1, 0, 0, 0, 2849, 2852, 1, 0, 0, 0, 2850, 2848, 1, 0, 0, 0, 2850, 2851, 1, 0, 0, 0, 2851, 2853, 1, 0, 0, 0, 2852, 2850, 1, 0, 0, 0, 2853, 2855, 5, 3, 0, 0, 2854, 2843, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 2865, 1, 0, 0, 0, 2856, 2857, 5, 15, 0, 0, 2857, 2858, 5, 409, 0, 0, 2858, 2859, 5, 439, 0, 0, 2859, 2860, 3, 326, 163, 0, 2860, 2862, 5, 427, 0, 0, 2861, 2863, 3, 314, 157, 0, 2862, 2861, 1, 0, 0, 0, 2862, 2863, 1, 0, 0, 0, 2863, 2865, 1, 0, 0, 0, 2864, 2760, 1, 0, 0, 0, 2864, 2766, 1, 0, 0, 0, 2864, 2782, 1, 0, 0, 0, 2864, 2799, 1, 0, 0, 0, 2864, 2803, 1, 0, 0, 0, 2864, 2816, 1, 0, 0, 0, 2864, 2826, 1, 0, 0, 0, 2864, 2832, 1, 0, 0, 0, 2864, 2840, 1, 0, 0, 0, 2864, 2856, 1, 0, 0, 0, 2865, 73, 1, 0, 0, 0, 2866, 2867, 5, 365, 0, 0, 2867, 2868, 5, 111, 0, 0, 2868, 2870, 3, 448, 224, 0, 2869, 2871, 5, 534, 0, 0, 2870, 2869, 1, 0, 0, 0, 2870, 2871, 1, 0, 0, 0, 2871, 2874, 1, 0, 0, 0, 2872, 2873, 5, 28, 0, 0, 2873, 2875, 3, 448, 224, 0, 2874, 2872, 1, 0, 0, 0, 2874, 2875, 1, 0, 0, 0, 2875, 2900, 1, 0, 0, 0, 2876, 2877, 5, 365, 0, 0, 2877, 2878, 5, 439, 0, 0, 2878, 2880, 3, 326, 163, 0, 2879, 2881, 5, 534, 0, 0, 2880, 2879, 1, 0, 0, 0, 2880, 2881, 1, 0, 0, 0, 2881, 2884, 1, 0, 0, 0, 2882, 2883, 5, 28, 0, 0, 2883, 2885, 3, 448, 224, 0, 2884, 2882, 1, 0, 0, 0, 2884, 2885, 1, 0, 0, 0, 2885, 2900, 1, 0, 0, 0, 2886, 2887, 5, 365, 0, 0, 2887, 2888, 5, 321, 0, 0, 2888, 2890, 3, 448, 224, 0, 2889, 2891, 5, 534, 0, 0, 2890, 2889, 1, 0, 0, 0, 2890, 2891, 1, 0, 0, 0, 2891, 2894, 1, 0, 0, 0, 2892, 2893, 5, 28, 0, 0, 2893, 2895, 3, 448, 224, 0, 2894, 2892, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 5, 187, 0, 0, 2897, 2898, 3, 326, 163, 0, 2898, 2900, 1, 0, 0, 0, 2899, 2866, 1, 0, 0, 0, 2899, 2876, 1, 0, 0, 0, 2899, 2886, 1, 0, 0, 0, 2900, 75, 1, 0, 0, 0, 2901, 2902, 5, 15, 0, 0, 2902, 2903, 5, 409, 0, 0, 2903, 2904, 5, 377, 0, 0, 2904, 2905, 5, 427, 0, 0, 2905, 2906, 5, 350, 0, 0, 2906, 2907, 5, 2, 0, 0, 2907, 2908, 3, 316, 158, 0, 2908, 2909, 5, 3, 0, 0, 2909, 2962, 1, 0, 0, 0, 2910, 2911, 5, 15, 0, 0, 2911, 2912, 5, 409, 0, 0, 2912, 2913, 5, 377, 0, 0, 2913, 2914, 5, 488, 0, 0, 2914, 2915, 5, 350, 0, 0, 2915, 2916, 5, 2, 0, 0, 2916, 2917, 3, 316, 158, 0, 2917, 2918, 5, 3, 0, 0, 2918, 2962, 1, 0, 0, 0, 2919, 2920, 5, 15, 0, 0, 2920, 2921, 5, 372, 0, 0, 2921, 2922, 5, 439, 0, 0, 2922, 2962, 3, 78, 39, 0, 2923, 2924, 5, 15, 0, 0, 2924, 2925, 5, 63, 0, 0, 2925, 2926, 5, 372, 0, 0, 2926, 2927, 5, 439, 0, 0, 2927, 2962, 3, 78, 39, 0, 2928, 2929, 5, 15, 0, 0, 2929, 2933, 5, 409, 0, 0, 2930, 2934, 5, 188, 0, 0, 2931, 2932, 5, 20, 0, 0, 2932, 2934, 5, 189, 0, 0, 2933, 2930, 1, 0, 0, 0, 2933, 2931, 1, 0, 0, 0, 2934, 2935, 1, 0, 0, 0, 2935, 2940, 5, 89, 0, 0, 2936, 2937, 5, 2, 0, 0, 2937, 2938, 3, 316, 158, 0, 2938, 2939, 5, 3, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2936, 1, 0, 0, 0, 2940, 2941, 1, 0, 0, 0, 2941, 2943, 1, 0, 0, 0, 2942, 2944, 5, 20, 0, 0, 2943, 2942, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2962, 1, 0, 0, 0, 2945, 2946, 5, 15, 0, 0, 2946, 2947, 5, 409, 0, 0, 2947, 2948, 5, 439, 0, 0, 2948, 2949, 3, 326, 163, 0, 2949, 2950, 5, 321, 0, 0, 2950, 2952, 5, 488, 0, 0, 2951, 2953, 3, 314, 157, 0, 2952, 2951, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2962, 1, 0, 0, 0, 2954, 2955, 5, 15, 0, 0, 2955, 2956, 5, 97, 0, 0, 2956, 2957, 5, 442, 0, 0, 2957, 2959, 5, 534, 0, 0, 2958, 2960, 3, 314, 157, 0, 2959, 2958, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, 2962, 1, 0, 0, 0, 2961, 2901, 1, 0, 0, 0, 2961, 2910, 1, 0, 0, 0, 2961, 2919, 1, 0, 0, 0, 2961, 2923, 1, 0, 0, 0, 2961, 2928, 1, 0, 0, 0, 2961, 2945, 1, 0, 0, 0, 2961, 2954, 1, 0, 0, 0, 2962, 77, 1, 0, 0, 0, 2963, 2965, 3, 326, 163, 0, 2964, 2966, 3, 308, 154, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2968, 1, 0, 0, 0, 2967, 2969, 3, 442, 221, 0, 2968, 2967, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2971, 1, 0, 0, 0, 2970, 2972, 3, 406, 203, 0, 2971, 2970, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 2974, 1, 0, 0, 0, 2973, 2975, 3, 362, 181, 0, 2974, 2973, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 2976, 1, 0, 0, 0, 2976, 2978, 3, 324, 162, 0, 2977, 2979, 3, 438, 219, 0, 2978, 2977, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 2981, 1, 0, 0, 0, 2980, 2982, 3, 266, 133, 0, 2981, 2980, 1, 0, 0, 0, 2981, 2982, 1, 0, 0, 0, 2982, 79, 1, 0, 0, 0, 2983, 2984, 5, 256, 0, 0, 2984, 2988, 5, 529, 0, 0, 2985, 2986, 5, 495, 0, 0, 2986, 2988, 3, 370, 185, 0, 2987, 2983, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 81, 1, 0, 0, 0, 2989, 2995, 5, 38, 0, 0, 2990, 2991, 5, 497, 0, 0, 2991, 2993, 5, 247, 0, 0, 2992, 2994, 3, 448, 224, 0, 2993, 2992, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2996, 1, 0, 0, 0, 2995, 2990, 1, 0, 0, 0, 2995, 2996, 1, 0, 0, 0, 2996, 3032, 1, 0, 0, 0, 2997, 2999, 5, 82, 0, 0, 2998, 3000, 5, 498, 0, 0, 2999, 2998, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3006, 1, 0, 0, 0, 3001, 3003, 5, 24, 0, 0, 3002, 3004, 5, 300, 0, 0, 3003, 3002, 1, 0, 0, 0, 3003, 3004, 1, 0, 0, 0, 3004, 3005, 1, 0, 0, 0, 3005, 3007, 5, 68, 0, 0, 3006, 3001, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3012, 1, 0, 0, 0, 3008, 3010, 5, 300, 0, 0, 3009, 3008, 1, 0, 0, 0, 3009, 3010, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3013, 5, 370, 0, 0, 3012, 3009, 1, 0, 0, 0, 3012, 3013, 1, 0, 0, 0, 3013, 3032, 1, 0, 0, 0, 3014, 3016, 5, 392, 0, 0, 3015, 3017, 5, 498, 0, 0, 3016, 3015, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3023, 1, 0, 0, 0, 3018, 3020, 5, 24, 0, 0, 3019, 3021, 5, 300, 0, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3024, 5, 68, 0, 0, 3023, 3018, 1, 0, 0, 0, 3023, 3024, 1, 0, 0, 0, 3024, 3029, 1, 0, 0, 0, 3025, 3027, 5, 300, 0, 0, 3026, 3025, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 3028, 1, 0, 0, 0, 3028, 3030, 5, 370, 0, 0, 3029, 3026, 1, 0, 0, 0, 3029, 3030, 1, 0, 0, 0, 3030, 3032, 1, 0, 0, 0, 3031, 2989, 1, 0, 0, 0, 3031, 2997, 1, 0, 0, 0, 3031, 3014, 1, 0, 0, 0, 3032, 83, 1, 0, 0, 0, 3033, 3034, 5, 196, 0, 0, 3034, 3035, 3, 88, 44, 0, 3035, 3036, 5, 309, 0, 0, 3036, 3037, 3, 186, 93, 0, 3037, 3041, 5, 454, 0, 0, 3038, 3042, 3, 190, 95, 0, 3039, 3040, 5, 390, 0, 0, 3040, 3042, 5, 529, 0, 0, 3041, 3038, 1, 0, 0, 0, 3041, 3039, 1, 0, 0, 0, 3042, 3118, 1, 0, 0, 0, 3043, 3044, 5, 196, 0, 0, 3044, 3045, 3, 88, 44, 0, 3045, 3055, 5, 309, 0, 0, 3046, 3056, 5, 380, 0, 0, 3047, 3056, 5, 73, 0, 0, 3048, 3049, 5, 87, 0, 0, 3049, 3056, 5, 199, 0, 0, 3050, 3056, 5, 422, 0, 0, 3051, 3052, 5, 429, 0, 0, 3052, 3056, 5, 485, 0, 0, 3053, 3054, 5, 499, 0, 0, 3054, 3056, 5, 199, 0, 0, 3055, 3046, 1, 0, 0, 0, 3055, 3047, 1, 0, 0, 0, 3055, 3048, 1, 0, 0, 0, 3055, 3050, 1, 0, 0, 0, 3055, 3051, 1, 0, 0, 0, 3055, 3053, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3058, 3, 184, 92, 0, 3058, 3062, 5, 454, 0, 0, 3059, 3063, 3, 190, 95, 0, 3060, 3061, 5, 390, 0, 0, 3061, 3063, 5, 529, 0, 0, 3062, 3059, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3063, 3118, 1, 0, 0, 0, 3064, 3065, 5, 196, 0, 0, 3065, 3070, 5, 529, 0, 0, 3066, 3067, 5, 4, 0, 0, 3067, 3069, 5, 529, 0, 0, 3068, 3066, 1, 0, 0, 0, 3069, 3072, 1, 0, 0, 0, 3070, 3068, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3073, 1, 0, 0, 0, 3072, 3070, 1, 0, 0, 0, 3073, 3074, 5, 454, 0, 0, 3074, 3118, 3, 190, 95, 0, 3075, 3076, 5, 386, 0, 0, 3076, 3077, 3, 88, 44, 0, 3077, 3078, 5, 309, 0, 0, 3078, 3079, 3, 186, 93, 0, 3079, 3083, 5, 187, 0, 0, 3080, 3084, 3, 190, 95, 0, 3081, 3082, 5, 390, 0, 0, 3082, 3084, 5, 529, 0, 0, 3083, 3080, 1, 0, 0, 0, 3083, 3081, 1, 0, 0, 0, 3084, 3118, 1, 0, 0, 0, 3085, 3086, 5, 386, 0, 0, 3086, 3087, 3, 88, 44, 0, 3087, 3097, 5, 309, 0, 0, 3088, 3098, 5, 380, 0, 0, 3089, 3098, 5, 73, 0, 0, 3090, 3091, 5, 87, 0, 0, 3091, 3098, 5, 199, 0, 0, 3092, 3098, 5, 422, 0, 0, 3093, 3094, 5, 429, 0, 0, 3094, 3098, 5, 485, 0, 0, 3095, 3096, 5, 499, 0, 0, 3096, 3098, 5, 199, 0, 0, 3097, 3088, 1, 0, 0, 0, 3097, 3089, 1, 0, 0, 0, 3097, 3090, 1, 0, 0, 0, 3097, 3092, 1, 0, 0, 0, 3097, 3093, 1, 0, 0, 0, 3097, 3095, 1, 0, 0, 0, 3098, 3099, 1, 0, 0, 0, 3099, 3100, 3, 184, 92, 0, 3100, 3104, 5, 187, 0, 0, 3101, 3105, 3, 190, 95, 0, 3102, 3103, 5, 390, 0, 0, 3103, 3105, 5, 529, 0, 0, 3104, 3101, 1, 0, 0, 0, 3104, 3102, 1, 0, 0, 0, 3105, 3118, 1, 0, 0, 0, 3106, 3107, 5, 386, 0, 0, 3107, 3112, 5, 529, 0, 0, 3108, 3109, 5, 4, 0, 0, 3109, 3111, 5, 529, 0, 0, 3110, 3108, 1, 0, 0, 0, 3111, 3114, 1, 0, 0, 0, 3112, 3110, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 3115, 1, 0, 0, 0, 3114, 3112, 1, 0, 0, 0, 3115, 3116, 5, 187, 0, 0, 3116, 3118, 3, 190, 95, 0, 3117, 3033, 1, 0, 0, 0, 3117, 3043, 1, 0, 0, 0, 3117, 3064, 1, 0, 0, 0, 3117, 3075, 1, 0, 0, 0, 3117, 3085, 1, 0, 0, 0, 3117, 3106, 1, 0, 0, 0, 3118, 85, 1, 0, 0, 0, 3119, 3121, 3, 448, 224, 0, 3120, 3122, 3, 304, 152, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 3125, 1, 0, 0, 0, 3123, 3125, 5, 20, 0, 0, 3124, 3119, 1, 0, 0, 0, 3124, 3123, 1, 0, 0, 0, 3125, 87, 1, 0, 0, 0, 3126, 3131, 3, 86, 43, 0, 3127, 3128, 5, 4, 0, 0, 3128, 3130, 3, 86, 43, 0, 3129, 3127, 1, 0, 0, 0, 3130, 3133, 1, 0, 0, 0, 3131, 3129, 1, 0, 0, 0, 3131, 3132, 1, 0, 0, 0, 3132, 89, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3135, 5, 21, 0, 0, 3135, 3136, 5, 111, 0, 0, 3136, 3137, 3, 448, 224, 0, 3137, 3138, 5, 409, 0, 0, 3138, 3139, 5, 350, 0, 0, 3139, 3140, 5, 2, 0, 0, 3140, 3141, 3, 316, 158, 0, 3141, 3142, 5, 3, 0, 0, 3142, 3193, 1, 0, 0, 0, 3143, 3144, 5, 21, 0, 0, 3144, 3145, 5, 380, 0, 0, 3145, 3147, 3, 182, 91, 0, 3146, 3148, 3, 314, 157, 0, 3147, 3146, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3193, 1, 0, 0, 0, 3149, 3150, 5, 21, 0, 0, 3150, 3151, 5, 78, 0, 0, 3151, 3152, 5, 199, 0, 0, 3152, 3153, 3, 326, 163, 0, 3153, 3154, 5, 409, 0, 0, 3154, 3155, 5, 2, 0, 0, 3155, 3156, 3, 316, 158, 0, 3156, 3157, 5, 3, 0, 0, 3157, 3193, 1, 0, 0, 0, 3158, 3159, 5, 21, 0, 0, 3159, 3160, 5, 394, 0, 0, 3160, 3161, 5, 261, 0, 0, 3161, 3162, 5, 182, 0, 0, 3162, 3164, 3, 326, 163, 0, 3163, 3165, 3, 314, 157, 0, 3164, 3163, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 3172, 1, 0, 0, 0, 3166, 3167, 5, 187, 0, 0, 3167, 3168, 3, 448, 224, 0, 3168, 3169, 5, 2, 0, 0, 3169, 3170, 3, 316, 158, 0, 3170, 3171, 5, 3, 0, 0, 3171, 3173, 1, 0, 0, 0, 3172, 3166, 1, 0, 0, 0, 3172, 3173, 1, 0, 0, 0, 3173, 3193, 1, 0, 0, 0, 3174, 3175, 5, 21, 0, 0, 3175, 3176, 5, 429, 0, 0, 3176, 3177, 5, 342, 0, 0, 3177, 3178, 3, 182, 91, 0, 3178, 3179, 3, 314, 157, 0, 3179, 3193, 1, 0, 0, 0, 3180, 3181, 5, 21, 0, 0, 3181, 3184, 5, 476, 0, 0, 3182, 3183, 5, 214, 0, 0, 3183, 3185, 5, 164, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3185, 1, 0, 0, 0, 3185, 3186, 1, 0, 0, 0, 3186, 3187, 3, 192, 96, 0, 3187, 3190, 3, 126, 63, 0, 3188, 3189, 5, 81, 0, 0, 3189, 3191, 5, 529, 0, 0, 3190, 3188, 1, 0, 0, 0, 3190, 3191, 1, 0, 0, 0, 3191, 3193, 1, 0, 0, 0, 3192, 3134, 1, 0, 0, 0, 3192, 3143, 1, 0, 0, 0, 3192, 3149, 1, 0, 0, 0, 3192, 3158, 1, 0, 0, 0, 3192, 3174, 1, 0, 0, 0, 3192, 3180, 1, 0, 0, 0, 3193, 91, 1, 0, 0, 0, 3194, 3195, 5, 14, 0, 0, 3195, 3196, 5, 35, 0, 0, 3196, 3201, 5, 529, 0, 0, 3197, 3198, 5, 4, 0, 0, 3198, 3200, 5, 529, 0, 0, 3199, 3197, 1, 0, 0, 0, 3200, 3203, 1, 0, 0, 0, 3201, 3199, 1, 0, 0, 0, 3201, 3202, 1, 0, 0, 0, 3202, 3205, 1, 0, 0, 0, 3203, 3201, 1, 0, 0, 0, 3204, 3206, 3, 314, 157, 0, 3205, 3204, 1, 0, 0, 0, 3205, 3206, 1, 0, 0, 0, 3206, 3293, 1, 0, 0, 0, 3207, 3208, 7, 19, 0, 0, 3208, 3209, 5, 35, 0, 0, 3209, 3214, 5, 529, 0, 0, 3210, 3211, 5, 4, 0, 0, 3211, 3213, 5, 529, 0, 0, 3212, 3210, 1, 0, 0, 0, 3213, 3216, 1, 0, 0, 0, 3214, 3212, 1, 0, 0, 0, 3214, 3215, 1, 0, 0, 0, 3215, 3293, 1, 0, 0, 0, 3216, 3214, 1, 0, 0, 0, 3217, 3218, 5, 123, 0, 0, 3218, 3219, 5, 35, 0, 0, 3219, 3224, 5, 529, 0, 0, 3220, 3221, 5, 4, 0, 0, 3221, 3223, 5, 529, 0, 0, 3222, 3220, 1, 0, 0, 0, 3223, 3226, 1, 0, 0, 0, 3224, 3222, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3293, 1, 0, 0, 0, 3226, 3224, 1, 0, 0, 0, 3227, 3228, 5, 14, 0, 0, 3228, 3229, 5, 306, 0, 0, 3229, 3293, 5, 529, 0, 0, 3230, 3231, 5, 142, 0, 0, 3231, 3232, 5, 306, 0, 0, 3232, 3293, 5, 529, 0, 0, 3233, 3234, 5, 14, 0, 0, 3234, 3235, 5, 180, 0, 0, 3235, 3293, 5, 529, 0, 0, 3236, 3237, 5, 142, 0, 0, 3237, 3238, 5, 180, 0, 0, 3238, 3293, 5, 529, 0, 0, 3239, 3240, 5, 14, 0, 0, 3240, 3241, 5, 54, 0, 0, 3241, 3242, 3, 182, 91, 0, 3242, 3247, 5, 529, 0, 0, 3243, 3244, 5, 4, 0, 0, 3244, 3246, 5, 529, 0, 0, 3245, 3243, 1, 0, 0, 0, 3246, 3249, 1, 0, 0, 0, 3247, 3245, 1, 0, 0, 0, 3247, 3248, 1, 0, 0, 0, 3248, 3293, 1, 0, 0, 0, 3249, 3247, 1, 0, 0, 0, 3250, 3251, 5, 142, 0, 0, 3251, 3252, 5, 54, 0, 0, 3252, 3253, 3, 182, 91, 0, 3253, 3258, 5, 529, 0, 0, 3254, 3255, 5, 4, 0, 0, 3255, 3257, 5, 529, 0, 0, 3256, 3254, 1, 0, 0, 0, 3257, 3260, 1, 0, 0, 0, 3258, 3256, 1, 0, 0, 0, 3258, 3259, 1, 0, 0, 0, 3259, 3293, 1, 0, 0, 0, 3260, 3258, 1, 0, 0, 0, 3261, 3262, 5, 142, 0, 0, 3262, 3263, 5, 20, 0, 0, 3263, 3264, 5, 54, 0, 0, 3264, 3293, 3, 182, 91, 0, 3265, 3266, 5, 409, 0, 0, 3266, 3267, 5, 261, 0, 0, 3267, 3268, 5, 158, 0, 0, 3268, 3270, 5, 212, 0, 0, 3269, 3271, 3, 314, 157, 0, 3270, 3269, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3293, 1, 0, 0, 0, 3272, 3273, 5, 290, 0, 0, 3273, 3274, 5, 35, 0, 0, 3274, 3279, 5, 529, 0, 0, 3275, 3276, 5, 4, 0, 0, 3276, 3278, 5, 529, 0, 0, 3277, 3275, 1, 0, 0, 0, 3278, 3281, 1, 0, 0, 0, 3279, 3277, 1, 0, 0, 0, 3279, 3280, 1, 0, 0, 0, 3280, 3282, 1, 0, 0, 0, 3281, 3279, 1, 0, 0, 0, 3282, 3283, 5, 409, 0, 0, 3283, 3284, 5, 2, 0, 0, 3284, 3285, 3, 316, 158, 0, 3285, 3286, 5, 3, 0, 0, 3286, 3293, 1, 0, 0, 0, 3287, 3288, 5, 290, 0, 0, 3288, 3289, 7, 2, 0, 0, 3289, 3290, 5, 529, 0, 0, 3290, 3291, 5, 209, 0, 0, 3291, 3293, 5, 529, 0, 0, 3292, 3194, 1, 0, 0, 0, 3292, 3207, 1, 0, 0, 0, 3292, 3217, 1, 0, 0, 0, 3292, 3227, 1, 0, 0, 0, 3292, 3230, 1, 0, 0, 0, 3292, 3233, 1, 0, 0, 0, 3292, 3236, 1, 0, 0, 0, 3292, 3239, 1, 0, 0, 0, 3292, 3250, 1, 0, 0, 0, 3292, 3261, 1, 0, 0, 0, 3292, 3265, 1, 0, 0, 0, 3292, 3272, 1, 0, 0, 0, 3292, 3287, 1, 0, 0, 0, 3293, 93, 1, 0, 0, 0, 3294, 3296, 3, 448, 224, 0, 3295, 3297, 3, 314, 157, 0, 3296, 3295, 1, 0, 0, 0, 3296, 3297, 1, 0, 0, 0, 3297, 95, 1, 0, 0, 0, 3298, 3299, 3, 448, 224, 0, 3299, 3303, 3, 304, 152, 0, 3300, 3301, 5, 146, 0, 0, 3301, 3302, 5, 244, 0, 0, 3302, 3304, 3, 304, 152, 0, 3303, 3300, 1, 0, 0, 0, 3303, 3304, 1, 0, 0, 0, 3304, 3306, 1, 0, 0, 0, 3305, 3307, 3, 104, 52, 0, 3306, 3305, 1, 0, 0, 0, 3306, 3307, 1, 0, 0, 0, 3307, 3309, 1, 0, 0, 0, 3308, 3310, 3, 314, 157, 0, 3309, 3308, 1, 0, 0, 0, 3309, 3310, 1, 0, 0, 0, 3310, 97, 1, 0, 0, 0, 3311, 3312, 5, 14, 0, 0, 3312, 3313, 5, 79, 0, 0, 3313, 3315, 3, 334, 167, 0, 3314, 3316, 3, 100, 50, 0, 3315, 3314, 1, 0, 0, 0, 3315, 3316, 1, 0, 0, 0, 3316, 3318, 1, 0, 0, 0, 3317, 3319, 3, 102, 51, 0, 3318, 3317, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3321, 1, 0, 0, 0, 3320, 3322, 3, 314, 157, 0, 3321, 3320, 1, 0, 0, 0, 3321, 3322, 1, 0, 0, 0, 3322, 3532, 1, 0, 0, 0, 3323, 3324, 5, 14, 0, 0, 3324, 3325, 5, 79, 0, 0, 3325, 3326, 5, 2, 0, 0, 3326, 3327, 3, 332, 166, 0, 3327, 3329, 5, 3, 0, 0, 3328, 3330, 3, 102, 51, 0, 3329, 3328, 1, 0, 0, 0, 3329, 3330, 1, 0, 0, 0, 3330, 3332, 1, 0, 0, 0, 3331, 3333, 3, 314, 157, 0, 3332, 3331, 1, 0, 0, 0, 3332, 3333, 1, 0, 0, 0, 3333, 3532, 1, 0, 0, 0, 3334, 3335, 5, 142, 0, 0, 3335, 3336, 5, 79, 0, 0, 3336, 3338, 3, 448, 224, 0, 3337, 3339, 3, 104, 52, 0, 3338, 3337, 1, 0, 0, 0, 3338, 3339, 1, 0, 0, 0, 3339, 3341, 1, 0, 0, 0, 3340, 3342, 3, 314, 157, 0, 3341, 3340, 1, 0, 0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 3532, 1, 0, 0, 0, 3343, 3344, 5, 290, 0, 0, 3344, 3345, 5, 79, 0, 0, 3345, 3347, 3, 334, 167, 0, 3346, 3348, 3, 100, 50, 0, 3347, 3346, 1, 0, 0, 0, 3347, 3348, 1, 0, 0, 0, 3348, 3350, 1, 0, 0, 0, 3349, 3351, 3, 104, 52, 0, 3350, 3349, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 3353, 1, 0, 0, 0, 3352, 3354, 3, 314, 157, 0, 3353, 3352, 1, 0, 0, 0, 3353, 3354, 1, 0, 0, 0, 3354, 3532, 1, 0, 0, 0, 3355, 3356, 5, 314, 0, 0, 3356, 3357, 5, 59, 0, 0, 3357, 3359, 3, 304, 152, 0, 3358, 3360, 3, 104, 52, 0, 3359, 3358, 1, 0, 0, 0, 3359, 3360, 1, 0, 0, 0, 3360, 3362, 1, 0, 0, 0, 3361, 3363, 3, 314, 157, 0, 3362, 3361, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3532, 1, 0, 0, 0, 3364, 3366, 5, 14, 0, 0, 3365, 3367, 5, 446, 0, 0, 3366, 3365, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 3383, 3, 342, 171, 0, 3369, 3370, 5, 136, 0, 0, 3370, 3374, 5, 59, 0, 0, 3371, 3372, 5, 202, 0, 0, 3372, 3375, 3, 304, 152, 0, 3373, 3375, 5, 359, 0, 0, 3374, 3371, 1, 0, 0, 0, 3374, 3373, 1, 0, 0, 0, 3375, 3381, 1, 0, 0, 0, 3376, 3379, 5, 55, 0, 0, 3377, 3380, 5, 534, 0, 0, 3378, 3380, 5, 32, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3378, 1, 0, 0, 0, 3380, 3382, 1, 0, 0, 0, 3381, 3376, 1, 0, 0, 0, 3381, 3382, 1, 0, 0, 0, 3382, 3384, 1, 0, 0, 0, 3383, 3369, 1, 0, 0, 0, 3383, 3384, 1, 0, 0, 0, 3384, 3386, 1, 0, 0, 0, 3385, 3387, 3, 314, 157, 0, 3386, 3385, 1, 0, 0, 0, 3386, 3387, 1, 0, 0, 0, 3387, 3532, 1, 0, 0, 0, 3388, 3390, 5, 142, 0, 0, 3389, 3391, 5, 446, 0, 0, 3390, 3389, 1, 0, 0, 0, 3390, 3391, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3395, 5, 321, 0, 0, 3393, 3394, 5, 214, 0, 0, 3394, 3396, 5, 164, 0, 0, 3395, 3393, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3397, 1, 0, 0, 0, 3397, 3399, 3, 448, 224, 0, 3398, 3400, 5, 184, 0, 0, 3399, 3398, 1, 0, 0, 0, 3399, 3400, 1, 0, 0, 0, 3400, 3404, 1, 0, 0, 0, 3401, 3402, 5, 187, 0, 0, 3402, 3403, 5, 219, 0, 0, 3403, 3405, 3, 448, 224, 0, 3404, 3401, 1, 0, 0, 0, 3404, 3405, 1, 0, 0, 0, 3405, 3532, 1, 0, 0, 0, 3406, 3408, 5, 290, 0, 0, 3407, 3409, 5, 446, 0, 0, 3408, 3407, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3410, 1, 0, 0, 0, 3410, 3416, 5, 321, 0, 0, 3411, 3417, 3, 448, 224, 0, 3412, 3417, 3, 304, 152, 0, 3413, 3414, 5, 2, 0, 0, 3414, 3415, 5, 512, 0, 0, 3415, 3417, 5, 3, 0, 0, 3416, 3411, 1, 0, 0, 0, 3416, 3412, 1, 0, 0, 0, 3416, 3413, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3419, 5, 409, 0, 0, 3419, 3420, 5, 2, 0, 0, 3420, 3421, 3, 316, 158, 0, 3421, 3422, 5, 3, 0, 0, 3422, 3532, 1, 0, 0, 0, 3423, 3425, 5, 374, 0, 0, 3424, 3426, 3, 160, 80, 0, 3425, 3424, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3427, 1, 0, 0, 0, 3427, 3429, 5, 497, 0, 0, 3428, 3430, 3, 160, 80, 0, 3429, 3428, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 3432, 1, 0, 0, 0, 3431, 3433, 5, 184, 0, 0, 3432, 3431, 1, 0, 0, 0, 3432, 3433, 1, 0, 0, 0, 3433, 3435, 1, 0, 0, 0, 3434, 3436, 3, 314, 157, 0, 3435, 3434, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3532, 1, 0, 0, 0, 3437, 3438, 5, 374, 0, 0, 3438, 3439, 5, 497, 0, 0, 3439, 3440, 5, 439, 0, 0, 3440, 3442, 3, 448, 224, 0, 3441, 3443, 3, 314, 157, 0, 3442, 3441, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3445, 1, 0, 0, 0, 3444, 3446, 5, 184, 0, 0, 3445, 3444, 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3532, 1, 0, 0, 0, 3447, 3448, 5, 371, 0, 0, 3448, 3532, 3, 448, 224, 0, 3449, 3450, 5, 371, 0, 0, 3450, 3451, 5, 393, 0, 0, 3451, 3452, 3, 448, 224, 0, 3452, 3453, 3, 448, 224, 0, 3453, 3532, 1, 0, 0, 0, 3454, 3455, 5, 371, 0, 0, 3455, 3456, 5, 321, 0, 0, 3456, 3457, 3, 448, 224, 0, 3457, 3458, 3, 448, 224, 0, 3458, 3532, 1, 0, 0, 0, 3459, 3460, 5, 371, 0, 0, 3460, 3461, 5, 79, 0, 0, 3461, 3462, 3, 448, 224, 0, 3462, 3463, 3, 448, 224, 0, 3463, 3532, 1, 0, 0, 0, 3464, 3465, 5, 14, 0, 0, 3465, 3532, 3, 338, 169, 0, 3466, 3467, 5, 142, 0, 0, 3467, 3470, 5, 219, 0, 0, 3468, 3469, 5, 214, 0, 0, 3469, 3471, 5, 164, 0, 0, 3470, 3468, 1, 0, 0, 0, 3470, 3471, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3532, 3, 448, 224, 0, 3473, 3474, 5, 150, 0, 0, 3474, 3475, 5, 174, 0, 0, 3475, 3478, 5, 529, 0, 0, 3476, 3477, 5, 497, 0, 0, 3477, 3479, 3, 314, 157, 0, 3478, 3476, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3532, 1, 0, 0, 0, 3480, 3481, 5, 290, 0, 0, 3481, 3496, 5, 137, 0, 0, 3482, 3483, 5, 136, 0, 0, 3483, 3487, 5, 59, 0, 0, 3484, 3485, 5, 202, 0, 0, 3485, 3488, 3, 304, 152, 0, 3486, 3488, 5, 359, 0, 0, 3487, 3484, 1, 0, 0, 0, 3487, 3486, 1, 0, 0, 0, 3488, 3494, 1, 0, 0, 0, 3489, 3492, 5, 55, 0, 0, 3490, 3493, 5, 534, 0, 0, 3491, 3493, 5, 32, 0, 0, 3492, 3490, 1, 0, 0, 0, 3492, 3491, 1, 0, 0, 0, 3493, 3495, 1, 0, 0, 0, 3494, 3489, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3497, 1, 0, 0, 0, 3496, 3482, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3532, 1, 0, 0, 0, 3498, 3499, 5, 290, 0, 0, 3499, 3500, 5, 81, 0, 0, 3500, 3532, 5, 529, 0, 0, 3501, 3502, 5, 290, 0, 0, 3502, 3503, 5, 79, 0, 0, 3503, 3504, 3, 448, 224, 0, 3504, 3505, 5, 81, 0, 0, 3505, 3506, 5, 529, 0, 0, 3506, 3532, 1, 0, 0, 0, 3507, 3508, 5, 290, 0, 0, 3508, 3509, 5, 155, 0, 0, 3509, 3510, 5, 454, 0, 0, 3510, 3512, 3, 448, 224, 0, 3511, 3513, 3, 314, 157, 0, 3512, 3511, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3532, 1, 0, 0, 0, 3514, 3516, 5, 14, 0, 0, 3515, 3517, 5, 446, 0, 0, 3516, 3515, 1, 0, 0, 0, 3516, 3517, 1, 0, 0, 0, 3517, 3518, 1, 0, 0, 0, 3518, 3519, 5, 322, 0, 0, 3519, 3520, 5, 187, 0, 0, 3520, 3521, 3, 352, 176, 0, 3521, 3522, 5, 454, 0, 0, 3522, 3523, 3, 352, 176, 0, 3523, 3524, 5, 229, 0, 0, 3524, 3526, 5, 534, 0, 0, 3525, 3527, 3, 448, 224, 0, 3526, 3525, 1, 0, 0, 0, 3526, 3527, 1, 0, 0, 0, 3527, 3529, 1, 0, 0, 0, 3528, 3530, 3, 314, 157, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3532, 1, 0, 0, 0, 3531, 3311, 1, 0, 0, 0, 3531, 3323, 1, 0, 0, 0, 3531, 3334, 1, 0, 0, 0, 3531, 3343, 1, 0, 0, 0, 3531, 3355, 1, 0, 0, 0, 3531, 3364, 1, 0, 0, 0, 3531, 3388, 1, 0, 0, 0, 3531, 3406, 1, 0, 0, 0, 3531, 3423, 1, 0, 0, 0, 3531, 3437, 1, 0, 0, 0, 3531, 3447, 1, 0, 0, 0, 3531, 3449, 1, 0, 0, 0, 3531, 3454, 1, 0, 0, 0, 3531, 3459, 1, 0, 0, 0, 3531, 3464, 1, 0, 0, 0, 3531, 3466, 1, 0, 0, 0, 3531, 3473, 1, 0, 0, 0, 3531, 3480, 1, 0, 0, 0, 3531, 3498, 1, 0, 0, 0, 3531, 3501, 1, 0, 0, 0, 3531, 3507, 1, 0, 0, 0, 3531, 3514, 1, 0, 0, 0, 3532, 99, 1, 0, 0, 0, 3533, 3537, 5, 178, 0, 0, 3534, 3535, 5, 16, 0, 0, 3535, 3537, 3, 448, 224, 0, 3536, 3533, 1, 0, 0, 0, 3536, 3534, 1, 0, 0, 0, 3537, 101, 1, 0, 0, 0, 3538, 3539, 7, 20, 0, 0, 3539, 3540, 3, 448, 224, 0, 3540, 103, 1, 0, 0, 0, 3541, 3542, 5, 187, 0, 0, 3542, 3543, 3, 448, 224, 0, 3543, 105, 1, 0, 0, 0, 3544, 3545, 5, 142, 0, 0, 3545, 3548, 5, 489, 0, 0, 3546, 3547, 5, 214, 0, 0, 3547, 3549, 5, 164, 0, 0, 3548, 3546, 1, 0, 0, 0, 3548, 3549, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 3584, 3, 326, 163, 0, 3551, 3552, 5, 142, 0, 0, 3552, 3555, 5, 380, 0, 0, 3553, 3554, 5, 214, 0, 0, 3554, 3556, 5, 164, 0, 0, 3555, 3553, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3557, 1, 0, 0, 0, 3557, 3584, 3, 182, 91, 0, 3558, 3559, 5, 142, 0, 0, 3559, 3560, 5, 395, 0, 0, 3560, 3563, 5, 342, 0, 0, 3561, 3562, 5, 214, 0, 0, 3562, 3564, 5, 164, 0, 0, 3563, 3561, 1, 0, 0, 0, 3563, 3564, 1, 0, 0, 0, 3564, 3565, 1, 0, 0, 0, 3565, 3566, 3, 448, 224, 0, 3566, 3567, 5, 309, 0, 0, 3567, 3574, 3, 326, 163, 0, 3568, 3572, 5, 182, 0, 0, 3569, 3573, 3, 190, 95, 0, 3570, 3571, 5, 390, 0, 0, 3571, 3573, 3, 448, 224, 0, 3572, 3569, 1, 0, 0, 0, 3572, 3570, 1, 0, 0, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3568, 1, 0, 0, 0, 3574, 3575, 1, 0, 0, 0, 3575, 3584, 1, 0, 0, 0, 3576, 3577, 5, 142, 0, 0, 3577, 3580, 5, 422, 0, 0, 3578, 3579, 5, 214, 0, 0, 3579, 3581, 5, 164, 0, 0, 3580, 3578, 1, 0, 0, 0, 3580, 3581, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3584, 3, 448, 224, 0, 3583, 3544, 1, 0, 0, 0, 3583, 3551, 1, 0, 0, 0, 3583, 3558, 1, 0, 0, 0, 3583, 3576, 1, 0, 0, 0, 3584, 107, 1, 0, 0, 0, 3585, 3587, 5, 413, 0, 0, 3586, 3588, 5, 32, 0, 0, 3587, 3586, 1, 0, 0, 0, 3587, 3588, 1, 0, 0, 0, 3588, 3589, 1, 0, 0, 0, 3589, 3592, 5, 22, 0, 0, 3590, 3593, 5, 534, 0, 0, 3591, 3593, 3, 326, 163, 0, 3592, 3590, 1, 0, 0, 0, 3592, 3591, 1, 0, 0, 0, 3592, 3593, 1, 0, 0, 0, 3593, 3599, 1, 0, 0, 0, 3594, 3595, 5, 495, 0, 0, 3595, 3596, 3, 448, 224, 0, 3596, 3597, 5, 503, 0, 0, 3597, 3598, 5, 529, 0, 0, 3598, 3600, 1, 0, 0, 0, 3599, 3594, 1, 0, 0, 0, 3599, 3600, 1, 0, 0, 0, 3600, 3654, 1, 0, 0, 0, 3601, 3602, 5, 413, 0, 0, 3602, 3603, 5, 355, 0, 0, 3603, 3604, 5, 22, 0, 0, 3604, 3606, 5, 240, 0, 0, 3605, 3607, 3, 326, 163, 0, 3606, 3605, 1, 0, 0, 0, 3606, 3607, 1, 0, 0, 0, 3607, 3613, 1, 0, 0, 0, 3608, 3609, 5, 495, 0, 0, 3609, 3610, 3, 448, 224, 0, 3610, 3611, 5, 503, 0, 0, 3611, 3612, 5, 529, 0, 0, 3612, 3614, 1, 0, 0, 0, 3613, 3608, 1, 0, 0, 0, 3613, 3614, 1, 0, 0, 0, 3614, 3654, 1, 0, 0, 0, 3615, 3616, 5, 413, 0, 0, 3616, 3617, 5, 79, 0, 0, 3617, 3618, 5, 206, 0, 0, 3618, 3619, 3, 326, 163, 0, 3619, 3620, 3, 304, 152, 0, 3620, 3654, 1, 0, 0, 0, 3621, 3622, 5, 22, 0, 0, 3622, 3623, 5, 111, 0, 0, 3623, 3628, 3, 326, 163, 0, 3624, 3625, 5, 497, 0, 0, 3625, 3627, 3, 112, 56, 0, 3626, 3624, 1, 0, 0, 0, 3627, 3630, 1, 0, 0, 0, 3628, 3626, 1, 0, 0, 0, 3628, 3629, 1, 0, 0, 0, 3629, 3632, 1, 0, 0, 0, 3630, 3628, 1, 0, 0, 0, 3631, 3633, 3, 314, 157, 0, 3632, 3631, 1, 0, 0, 0, 3632, 3633, 1, 0, 0, 0, 3633, 3654, 1, 0, 0, 0, 3634, 3635, 5, 22, 0, 0, 3635, 3636, 5, 439, 0, 0, 3636, 3638, 3, 326, 163, 0, 3637, 3639, 3, 160, 80, 0, 3638, 3637, 1, 0, 0, 0, 3638, 3639, 1, 0, 0, 0, 3639, 3641, 1, 0, 0, 0, 3640, 3642, 3, 304, 152, 0, 3641, 3640, 1, 0, 0, 0, 3641, 3642, 1, 0, 0, 0, 3642, 3647, 1, 0, 0, 0, 3643, 3644, 5, 497, 0, 0, 3644, 3646, 3, 112, 56, 0, 3645, 3643, 1, 0, 0, 0, 3646, 3649, 1, 0, 0, 0, 3647, 3645, 1, 0, 0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3651, 1, 0, 0, 0, 3649, 3647, 1, 0, 0, 0, 3650, 3652, 3, 314, 157, 0, 3651, 3650, 1, 0, 0, 0, 3651, 3652, 1, 0, 0, 0, 3652, 3654, 1, 0, 0, 0, 3653, 3585, 1, 0, 0, 0, 3653, 3601, 1, 0, 0, 0, 3653, 3615, 1, 0, 0, 0, 3653, 3621, 1, 0, 0, 0, 3653, 3634, 1, 0, 0, 0, 3654, 109, 1, 0, 0, 0, 3655, 3656, 5, 21, 0, 0, 3656, 3657, 5, 439, 0, 0, 3657, 3658, 3, 326, 163, 0, 3658, 3659, 5, 409, 0, 0, 3659, 3660, 5, 426, 0, 0, 3660, 3661, 5, 2, 0, 0, 3661, 3662, 3, 316, 158, 0, 3662, 3664, 5, 3, 0, 0, 3663, 3665, 3, 160, 80, 0, 3664, 3663, 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3746, 1, 0, 0, 0, 3666, 3667, 5, 21, 0, 0, 3667, 3668, 5, 439, 0, 0, 3668, 3671, 3, 326, 163, 0, 3669, 3670, 5, 219, 0, 0, 3670, 3672, 3, 448, 224, 0, 3671, 3669, 1, 0, 0, 0, 3671, 3672, 1, 0, 0, 0, 3672, 3673, 1, 0, 0, 0, 3673, 3674, 5, 290, 0, 0, 3674, 3675, 5, 79, 0, 0, 3675, 3676, 3, 448, 224, 0, 3676, 3677, 5, 409, 0, 0, 3677, 3678, 5, 426, 0, 0, 3678, 3679, 5, 2, 0, 0, 3679, 3680, 3, 316, 158, 0, 3680, 3682, 5, 3, 0, 0, 3681, 3683, 3, 160, 80, 0, 3682, 3681, 1, 0, 0, 0, 3682, 3683, 1, 0, 0, 0, 3683, 3746, 1, 0, 0, 0, 3684, 3685, 5, 142, 0, 0, 3685, 3686, 5, 426, 0, 0, 3686, 3688, 3, 326, 163, 0, 3687, 3689, 3, 304, 152, 0, 3688, 3687, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 3691, 1, 0, 0, 0, 3690, 3692, 3, 160, 80, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3746, 1, 0, 0, 0, 3693, 3694, 5, 142, 0, 0, 3694, 3695, 5, 61, 0, 0, 3695, 3696, 5, 426, 0, 0, 3696, 3746, 3, 326, 163, 0, 3697, 3698, 5, 142, 0, 0, 3698, 3699, 5, 165, 0, 0, 3699, 3746, 5, 426, 0, 0, 3700, 3701, 5, 142, 0, 0, 3701, 3702, 5, 22, 0, 0, 3702, 3703, 5, 239, 0, 0, 3703, 3746, 5, 534, 0, 0, 3704, 3705, 5, 246, 0, 0, 3705, 3706, 5, 22, 0, 0, 3706, 3746, 5, 534, 0, 0, 3707, 3708, 5, 413, 0, 0, 3708, 3709, 5, 439, 0, 0, 3709, 3710, 5, 426, 0, 0, 3710, 3712, 3, 326, 163, 0, 3711, 3713, 3, 160, 80, 0, 3712, 3711, 1, 0, 0, 0, 3712, 3713, 1, 0, 0, 0, 3713, 3715, 1, 0, 0, 0, 3714, 3716, 3, 304, 152, 0, 3715, 3714, 1, 0, 0, 0, 3715, 3716, 1, 0, 0, 0, 3716, 3746, 1, 0, 0, 0, 3717, 3718, 5, 413, 0, 0, 3718, 3719, 5, 439, 0, 0, 3719, 3720, 5, 426, 0, 0, 3720, 3746, 5, 534, 0, 0, 3721, 3722, 5, 413, 0, 0, 3722, 3723, 5, 219, 0, 0, 3723, 3724, 5, 426, 0, 0, 3724, 3725, 3, 326, 163, 0, 3725, 3726, 3, 448, 224, 0, 3726, 3746, 1, 0, 0, 0, 3727, 3728, 5, 413, 0, 0, 3728, 3730, 5, 79, 0, 0, 3729, 3731, 5, 61, 0, 0, 3730, 3729, 1, 0, 0, 0, 3730, 3731, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3733, 5, 426, 0, 0, 3733, 3735, 3, 326, 163, 0, 3734, 3736, 3, 304, 152, 0, 3735, 3734, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3738, 1, 0, 0, 0, 3737, 3739, 3, 160, 80, 0, 3738, 3737, 1, 0, 0, 0, 3738, 3739, 1, 0, 0, 0, 3739, 3746, 1, 0, 0, 0, 3740, 3741, 5, 413, 0, 0, 3741, 3742, 5, 22, 0, 0, 3742, 3743, 5, 444, 0, 0, 3743, 3744, 5, 427, 0, 0, 3744, 3746, 5, 534, 0, 0, 3745, 3655, 1, 0, 0, 0, 3745, 3666, 1, 0, 0, 0, 3745, 3684, 1, 0, 0, 0, 3745, 3693, 1, 0, 0, 0, 3745, 3697, 1, 0, 0, 0, 3745, 3700, 1, 0, 0, 0, 3745, 3704, 1, 0, 0, 0, 3745, 3707, 1, 0, 0, 0, 3745, 3717, 1, 0, 0, 0, 3745, 3721, 1, 0, 0, 0, 3745, 3727, 1, 0, 0, 0, 3745, 3740, 1, 0, 0, 0, 3746, 111, 1, 0, 0, 0, 3747, 3766, 5, 437, 0, 0, 3748, 3766, 5, 218, 0, 0, 3749, 3766, 5, 190, 0, 0, 3750, 3766, 5, 420, 0, 0, 3751, 3766, 5, 206, 0, 0, 3752, 3757, 5, 398, 0, 0, 3753, 3754, 5, 396, 0, 0, 3754, 3758, 5, 534, 0, 0, 3755, 3756, 5, 330, 0, 0, 3756, 3758, 5, 534, 0, 0, 3757, 3753, 1, 0, 0, 0, 3757, 3755, 1, 0, 0, 0, 3758, 3766, 1, 0, 0, 0, 3759, 3760, 5, 55, 0, 0, 3760, 3766, 5, 534, 0, 0, 3761, 3762, 5, 331, 0, 0, 3762, 3766, 5, 534, 0, 0, 3763, 3764, 5, 101, 0, 0, 3764, 3766, 5, 529, 0, 0, 3765, 3747, 1, 0, 0, 0, 3765, 3748, 1, 0, 0, 0, 3765, 3749, 1, 0, 0, 0, 3765, 3750, 1, 0, 0, 0, 3765, 3751, 1, 0, 0, 0, 3765, 3752, 1, 0, 0, 0, 3765, 3759, 1, 0, 0, 0, 3765, 3761, 1, 0, 0, 0, 3765, 3763, 1, 0, 0, 0, 3766, 113, 1, 0, 0, 0, 3767, 3768, 5, 99, 0, 0, 3768, 3772, 7, 11, 0, 0, 3769, 3770, 5, 214, 0, 0, 3770, 3771, 5, 303, 0, 0, 3771, 3773, 5, 164, 0, 0, 3772, 3769, 1, 0, 0, 0, 3772, 3773, 1, 0, 0, 0, 3773, 3774, 1, 0, 0, 0, 3774, 3776, 3, 326, 163, 0, 3775, 3777, 3, 314, 157, 0, 3776, 3775, 1, 0, 0, 0, 3776, 3777, 1, 0, 0, 0, 3777, 3871, 1, 0, 0, 0, 3778, 3779, 5, 99, 0, 0, 3779, 3783, 5, 476, 0, 0, 3780, 3781, 5, 214, 0, 0, 3781, 3782, 5, 303, 0, 0, 3782, 3784, 5, 164, 0, 0, 3783, 3780, 1, 0, 0, 0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3790, 3, 192, 96, 0, 3786, 3791, 5, 435, 0, 0, 3787, 3788, 5, 124, 0, 0, 3788, 3789, 5, 390, 0, 0, 3789, 3791, 5, 529, 0, 0, 3790, 3786, 1, 0, 0, 0, 3790, 3787, 1, 0, 0, 0, 3790, 3791, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3795, 3, 126, 63, 0, 3793, 3794, 5, 81, 0, 0, 3794, 3796, 5, 529, 0, 0, 3795, 3793, 1, 0, 0, 0, 3795, 3796, 1, 0, 0, 0, 3796, 3871, 1, 0, 0, 0, 3797, 3800, 5, 99, 0, 0, 3798, 3799, 5, 361, 0, 0, 3799, 3801, 5, 310, 0, 0, 3800, 3798, 1, 0, 0, 0, 3800, 3801, 1, 0, 0, 0, 3801, 3802, 1, 0, 0, 0, 3802, 3803, 5, 379, 0, 0, 3803, 3804, 3, 448, 224, 0, 3804, 3805, 5, 497, 0, 0, 3805, 3806, 3, 124, 62, 0, 3806, 3871, 1, 0, 0, 0, 3807, 3809, 5, 99, 0, 0, 3808, 3810, 5, 169, 0, 0, 3809, 3808, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3815, 5, 380, 0, 0, 3812, 3813, 5, 214, 0, 0, 3813, 3814, 5, 303, 0, 0, 3814, 3816, 5, 164, 0, 0, 3815, 3812, 1, 0, 0, 0, 3815, 3816, 1, 0, 0, 0, 3816, 3817, 1, 0, 0, 0, 3817, 3819, 3, 182, 91, 0, 3818, 3820, 3, 314, 157, 0, 3819, 3818, 1, 0, 0, 0, 3819, 3820, 1, 0, 0, 0, 3820, 3871, 1, 0, 0, 0, 3821, 3822, 5, 99, 0, 0, 3822, 3823, 5, 429, 0, 0, 3823, 3827, 5, 485, 0, 0, 3824, 3825, 5, 214, 0, 0, 3825, 3826, 5, 303, 0, 0, 3826, 3828, 5, 164, 0, 0, 3827, 3824, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3831, 3, 182, 91, 0, 3830, 3832, 3, 314, 157, 0, 3831, 3830, 1, 0, 0, 0, 3831, 3832, 1, 0, 0, 0, 3832, 3871, 1, 0, 0, 0, 3833, 3834, 5, 99, 0, 0, 3834, 3835, 5, 499, 0, 0, 3835, 3839, 5, 342, 0, 0, 3836, 3837, 5, 214, 0, 0, 3837, 3838, 5, 303, 0, 0, 3838, 3840, 5, 164, 0, 0, 3839, 3836, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 3841, 1, 0, 0, 0, 3841, 3847, 3, 182, 91, 0, 3842, 3843, 5, 88, 0, 0, 3843, 3844, 5, 2, 0, 0, 3844, 3845, 3, 120, 60, 0, 3845, 3846, 5, 3, 0, 0, 3846, 3848, 1, 0, 0, 0, 3847, 3842, 1, 0, 0, 0, 3847, 3848, 1, 0, 0, 0, 3848, 3854, 1, 0, 0, 0, 3849, 3850, 5, 13, 0, 0, 3850, 3851, 5, 2, 0, 0, 3851, 3852, 3, 116, 58, 0, 3852, 3853, 5, 3, 0, 0, 3853, 3855, 1, 0, 0, 0, 3854, 3849, 1, 0, 0, 0, 3854, 3855, 1, 0, 0, 0, 3855, 3857, 1, 0, 0, 0, 3856, 3858, 3, 314, 157, 0, 3857, 3856, 1, 0, 0, 0, 3857, 3858, 1, 0, 0, 0, 3858, 3871, 1, 0, 0, 0, 3859, 3860, 5, 99, 0, 0, 3860, 3864, 5, 422, 0, 0, 3861, 3862, 5, 214, 0, 0, 3862, 3863, 5, 303, 0, 0, 3863, 3865, 5, 164, 0, 0, 3864, 3861, 1, 0, 0, 0, 3864, 3865, 1, 0, 0, 0, 3865, 3866, 1, 0, 0, 0, 3866, 3868, 3, 448, 224, 0, 3867, 3869, 3, 314, 157, 0, 3868, 3867, 1, 0, 0, 0, 3868, 3869, 1, 0, 0, 0, 3869, 3871, 1, 0, 0, 0, 3870, 3767, 1, 0, 0, 0, 3870, 3778, 1, 0, 0, 0, 3870, 3797, 1, 0, 0, 0, 3870, 3807, 1, 0, 0, 0, 3870, 3821, 1, 0, 0, 0, 3870, 3833, 1, 0, 0, 0, 3870, 3859, 1, 0, 0, 0, 3871, 115, 1, 0, 0, 0, 3872, 3877, 3, 118, 59, 0, 3873, 3874, 5, 4, 0, 0, 3874, 3876, 3, 118, 59, 0, 3875, 3873, 1, 0, 0, 0, 3876, 3879, 1, 0, 0, 0, 3877, 3875, 1, 0, 0, 0, 3877, 3878, 1, 0, 0, 0, 3878, 117, 1, 0, 0, 0, 3879, 3877, 1, 0, 0, 0, 3880, 3881, 5, 411, 0, 0, 3881, 3887, 5, 529, 0, 0, 3882, 3884, 3, 448, 224, 0, 3883, 3885, 5, 529, 0, 0, 3884, 3883, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 3887, 1, 0, 0, 0, 3886, 3880, 1, 0, 0, 0, 3886, 3882, 1, 0, 0, 0, 3887, 119, 1, 0, 0, 0, 3888, 3893, 3, 122, 61, 0, 3889, 3890, 5, 4, 0, 0, 3890, 3892, 3, 122, 61, 0, 3891, 3889, 1, 0, 0, 0, 3892, 3895, 1, 0, 0, 0, 3893, 3891, 1, 0, 0, 0, 3893, 3894, 1, 0, 0, 0, 3894, 121, 1, 0, 0, 0, 3895, 3893, 1, 0, 0, 0, 3896, 3897, 3, 448, 224, 0, 3897, 3900, 3, 410, 205, 0, 3898, 3901, 3, 454, 227, 0, 3899, 3901, 5, 529, 0, 0, 3900, 3898, 1, 0, 0, 0, 3900, 3899, 1, 0, 0, 0, 3901, 123, 1, 0, 0, 0, 3902, 3904, 7, 21, 0, 0, 3903, 3905, 3, 448, 224, 0, 3904, 3903, 1, 0, 0, 0, 3904, 3905, 1, 0, 0, 0, 3905, 3906, 1, 0, 0, 0, 3906, 3907, 5, 309, 0, 0, 3907, 3908, 5, 265, 0, 0, 3908, 3910, 5, 529, 0, 0, 3909, 3911, 3, 314, 157, 0, 3910, 3909, 1, 0, 0, 0, 3910, 3911, 1, 0, 0, 0, 3911, 125, 1, 0, 0, 0, 3912, 3915, 5, 325, 0, 0, 3913, 3916, 5, 124, 0, 0, 3914, 3916, 5, 534, 0, 0, 3915, 3913, 1, 0, 0, 0, 3915, 3914, 1, 0, 0, 0, 3916, 3918, 1, 0, 0, 0, 3917, 3912, 1, 0, 0, 0, 3917, 3918, 1, 0, 0, 0, 3918, 3927, 1, 0, 0, 0, 3919, 3925, 5, 324, 0, 0, 3920, 3926, 5, 124, 0, 0, 3921, 3926, 5, 297, 0, 0, 3922, 3923, 5, 229, 0, 0, 3923, 3924, 5, 534, 0, 0, 3924, 3926, 7, 22, 0, 0, 3925, 3920, 1, 0, 0, 0, 3925, 3921, 1, 0, 0, 0, 3925, 3922, 1, 0, 0, 0, 3926, 3928, 1, 0, 0, 0, 3927, 3919, 1, 0, 0, 0, 3927, 3928, 1, 0, 0, 0, 3928, 3936, 1, 0, 0, 0, 3929, 3930, 5, 327, 0, 0, 3930, 3934, 5, 229, 0, 0, 3931, 3935, 5, 124, 0, 0, 3932, 3933, 5, 534, 0, 0, 3933, 3935, 5, 119, 0, 0, 3934, 3931, 1, 0, 0, 0, 3934, 3932, 1, 0, 0, 0, 3935, 3937, 1, 0, 0, 0, 3936, 3929, 1, 0, 0, 0, 3936, 3937, 1, 0, 0, 0, 3937, 3940, 1, 0, 0, 0, 3938, 3939, 5, 171, 0, 0, 3939, 3941, 5, 534, 0, 0, 3940, 3938, 1, 0, 0, 0, 3940, 3941, 1, 0, 0, 0, 3941, 3948, 1, 0, 0, 0, 3942, 3946, 5, 326, 0, 0, 3943, 3947, 5, 465, 0, 0, 3944, 3945, 5, 534, 0, 0, 3945, 3947, 7, 22, 0, 0, 3946, 3943, 1, 0, 0, 0, 3946, 3944, 1, 0, 0, 0, 3947, 3949, 1, 0, 0, 0, 3948, 3942, 1, 0, 0, 0, 3948, 3949, 1, 0, 0, 0, 3949, 3951, 1, 0, 0, 0, 3950, 3952, 7, 23, 0, 0, 3951, 3950, 1, 0, 0, 0, 3951, 3952, 1, 0, 0, 0, 3952, 127, 1, 0, 0, 0, 3953, 3960, 5, 6, 0, 0, 3954, 3960, 3, 130, 65, 0, 3955, 3956, 3, 130, 65, 0, 3956, 3957, 5, 4, 0, 0, 3957, 3958, 5, 6, 0, 0, 3958, 3960, 1, 0, 0, 0, 3959, 3953, 1, 0, 0, 0, 3959, 3954, 1, 0, 0, 0, 3959, 3955, 1, 0, 0, 0, 3960, 129, 1, 0, 0, 0, 3961, 3966, 3, 422, 211, 0, 3962, 3963, 5, 4, 0, 0, 3963, 3965, 3, 422, 211, 0, 3964, 3962, 1, 0, 0, 0, 3965, 3968, 1, 0, 0, 0, 3966, 3964, 1, 0, 0, 0, 3966, 3967, 1, 0, 0, 0, 3967, 131, 1, 0, 0, 0, 3968, 3966, 1, 0, 0, 0, 3969, 3972, 5, 409, 0, 0, 3970, 3973, 3, 134, 67, 0, 3971, 3973, 3, 136, 68, 0, 3972, 3970, 1, 0, 0, 0, 3972, 3971, 1, 0, 0, 0, 3973, 3981, 1, 0, 0, 0, 3974, 3977, 5, 4, 0, 0, 3975, 3978, 3, 134, 67, 0, 3976, 3978, 3, 136, 68, 0, 3977, 3975, 1, 0, 0, 0, 3977, 3976, 1, 0, 0, 0, 3978, 3980, 1, 0, 0, 0, 3979, 3974, 1, 0, 0, 0, 3980, 3983, 1, 0, 0, 0, 3981, 3979, 1, 0, 0, 0, 3981, 3982, 1, 0, 0, 0, 3982, 4016, 1, 0, 0, 0, 3983, 3981, 1, 0, 0, 0, 3984, 3985, 5, 409, 0, 0, 3985, 3986, 3, 448, 224, 0, 3986, 3987, 5, 28, 0, 0, 3987, 3988, 5, 124, 0, 0, 3988, 3989, 5, 429, 0, 0, 3989, 3990, 5, 485, 0, 0, 3990, 4016, 1, 0, 0, 0, 3991, 3992, 5, 409, 0, 0, 3992, 3995, 5, 351, 0, 0, 3993, 3994, 5, 182, 0, 0, 3994, 3996, 3, 182, 91, 0, 3995, 3993, 1, 0, 0, 0, 3995, 3996, 1, 0, 0, 0, 3996, 3997, 1, 0, 0, 0, 3997, 4016, 3, 316, 158, 0, 3998, 4000, 5, 409, 0, 0, 3999, 4001, 3, 170, 85, 0, 4000, 3999, 1, 0, 0, 0, 4000, 4001, 1, 0, 0, 0, 4001, 4002, 1, 0, 0, 0, 4002, 4013, 5, 455, 0, 0, 4003, 4014, 3, 140, 70, 0, 4004, 4014, 3, 142, 71, 0, 4005, 4006, 3, 140, 70, 0, 4006, 4007, 5, 4, 0, 0, 4007, 4008, 3, 142, 71, 0, 4008, 4014, 1, 0, 0, 0, 4009, 4010, 3, 142, 71, 0, 4010, 4011, 5, 4, 0, 0, 4011, 4012, 3, 140, 70, 0, 4012, 4014, 1, 0, 0, 0, 4013, 4003, 1, 0, 0, 0, 4013, 4004, 1, 0, 0, 0, 4013, 4005, 1, 0, 0, 0, 4013, 4009, 1, 0, 0, 0, 4014, 4016, 1, 0, 0, 0, 4015, 3969, 1, 0, 0, 0, 4015, 3984, 1, 0, 0, 0, 4015, 3991, 1, 0, 0, 0, 4015, 3998, 1, 0, 0, 0, 4016, 133, 1, 0, 0, 0, 4017, 4018, 3, 170, 85, 0, 4018, 4019, 3, 448, 224, 0, 4019, 4022, 5, 503, 0, 0, 4020, 4023, 3, 370, 185, 0, 4021, 4023, 5, 124, 0, 0, 4022, 4020, 1, 0, 0, 0, 4022, 4021, 1, 0, 0, 0, 4023, 135, 1, 0, 0, 0, 4024, 4025, 5, 294, 0, 0, 4025, 4026, 5, 503, 0, 0, 4026, 4070, 3, 370, 185, 0, 4027, 4028, 5, 69, 0, 0, 4028, 4031, 5, 409, 0, 0, 4029, 4031, 5, 70, 0, 0, 4030, 4027, 1, 0, 0, 0, 4030, 4029, 1, 0, 0, 0, 4031, 4034, 1, 0, 0, 0, 4032, 4035, 3, 182, 91, 0, 4033, 4035, 5, 124, 0, 0, 4034, 4032, 1, 0, 0, 0, 4034, 4033, 1, 0, 0, 0, 4035, 4070, 1, 0, 0, 0, 4036, 4039, 5, 294, 0, 0, 4037, 4040, 3, 182, 91, 0, 4038, 4040, 5, 124, 0, 0, 4039, 4037, 1, 0, 0, 0, 4039, 4038, 1, 0, 0, 0, 4040, 4044, 1, 0, 0, 0, 4041, 4042, 5, 75, 0, 0, 4042, 4045, 3, 182, 91, 0, 4043, 4045, 5, 124, 0, 0, 4044, 4041, 1, 0, 0, 0, 4044, 4043, 1, 0, 0, 0, 4044, 4045, 1, 0, 0, 0, 4045, 4070, 1, 0, 0, 0, 4046, 4049, 5, 323, 0, 0, 4047, 4048, 5, 182, 0, 0, 4048, 4050, 3, 190, 95, 0, 4049, 4047, 1, 0, 0, 0, 4049, 4050, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 4057, 5, 503, 0, 0, 4052, 4058, 5, 529, 0, 0, 4053, 4054, 5, 323, 0, 0, 4054, 4055, 5, 2, 0, 0, 4055, 4056, 5, 529, 0, 0, 4056, 4058, 5, 3, 0, 0, 4057, 4052, 1, 0, 0, 0, 4057, 4053, 1, 0, 0, 0, 4058, 4070, 1, 0, 0, 0, 4059, 4060, 5, 252, 0, 0, 4060, 4066, 5, 503, 0, 0, 4061, 4067, 5, 529, 0, 0, 4062, 4063, 5, 323, 0, 0, 4063, 4064, 5, 2, 0, 0, 4064, 4065, 5, 529, 0, 0, 4065, 4067, 5, 3, 0, 0, 4066, 4061, 1, 0, 0, 0, 4066, 4062, 1, 0, 0, 0, 4067, 4070, 1, 0, 0, 0, 4068, 4070, 3, 138, 69, 0, 4069, 4024, 1, 0, 0, 0, 4069, 4030, 1, 0, 0, 0, 4069, 4036, 1, 0, 0, 0, 4069, 4046, 1, 0, 0, 0, 4069, 4059, 1, 0, 0, 0, 4069, 4068, 1, 0, 0, 0, 4070, 137, 1, 0, 0, 0, 4071, 4075, 5, 528, 0, 0, 4072, 4073, 3, 170, 85, 0, 4073, 4074, 5, 5, 0, 0, 4074, 4076, 1, 0, 0, 0, 4075, 4072, 1, 0, 0, 0, 4075, 4076, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4071, 1, 0, 0, 0, 4077, 4078, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4080, 3, 448, 224, 0, 4080, 4083, 5, 503, 0, 0, 4081, 4084, 3, 370, 185, 0, 4082, 4084, 5, 124, 0, 0, 4083, 4081, 1, 0, 0, 0, 4083, 4082, 1, 0, 0, 0, 4084, 4091, 1, 0, 0, 0, 4085, 4086, 5, 527, 0, 0, 4086, 4087, 3, 448, 224, 0, 4087, 4088, 5, 503, 0, 0, 4088, 4089, 3, 370, 185, 0, 4089, 4091, 1, 0, 0, 0, 4090, 4077, 1, 0, 0, 0, 4090, 4085, 1, 0, 0, 0, 4091, 139, 1, 0, 0, 0, 4092, 4093, 5, 361, 0, 0, 4093, 4094, 7, 24, 0, 0, 4094, 141, 1, 0, 0, 0, 4095, 4096, 5, 238, 0, 0, 4096, 4104, 5, 255, 0, 0, 4097, 4098, 5, 361, 0, 0, 4098, 4105, 5, 466, 0, 0, 4099, 4100, 5, 361, 0, 0, 4100, 4105, 5, 83, 0, 0, 4101, 4102, 5, 373, 0, 0, 4102, 4105, 5, 361, 0, 0, 4103, 4105, 5, 406, 0, 0, 4104, 4097, 1, 0, 0, 0, 4104, 4099, 1, 0, 0, 0, 4104, 4101, 1, 0, 0, 0, 4104, 4103, 1, 0, 0, 0, 4105, 143, 1, 0, 0, 0, 4106, 4108, 5, 471, 0, 0, 4107, 4109, 3, 170, 85, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 4110, 1, 0, 0, 0, 4110, 4113, 5, 482, 0, 0, 4111, 4114, 5, 20, 0, 0, 4112, 4114, 3, 448, 224, 0, 4113, 4111, 1, 0, 0, 0, 4113, 4112, 1, 0, 0, 0, 4114, 4120, 1, 0, 0, 0, 4115, 4116, 5, 471, 0, 0, 4116, 4117, 5, 124, 0, 0, 4117, 4118, 5, 429, 0, 0, 4118, 4120, 5, 485, 0, 0, 4119, 4106, 1, 0, 0, 0, 4119, 4115, 1, 0, 0, 0, 4120, 145, 1, 0, 0, 0, 4121, 4122, 5, 436, 0, 0, 4122, 4131, 3, 448, 224, 0, 4123, 4127, 5, 475, 0, 0, 4124, 4125, 3, 448, 224, 0, 4125, 4126, 5, 5, 0, 0, 4126, 4128, 1, 0, 0, 0, 4127, 4124, 1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, 4128, 4129, 1, 0, 0, 0, 4129, 4131, 3, 448, 224, 0, 4130, 4121, 1, 0, 0, 0, 4130, 4123, 1, 0, 0, 0, 4131, 147, 1, 0, 0, 0, 4132, 4139, 5, 475, 0, 0, 4133, 4134, 3, 448, 224, 0, 4134, 4135, 5, 5, 0, 0, 4135, 4137, 1, 0, 0, 0, 4136, 4133, 1, 0, 0, 0, 4136, 4137, 1, 0, 0, 0, 4137, 4138, 1, 0, 0, 0, 4138, 4140, 3, 448, 224, 0, 4139, 4136, 1, 0, 0, 0, 4139, 4140, 1, 0, 0, 0, 4140, 4141, 1, 0, 0, 0, 4141, 4142, 5, 527, 0, 0, 4142, 4143, 3, 448, 224, 0, 4143, 149, 1, 0, 0, 0, 4144, 4145, 5, 461, 0, 0, 4145, 4146, 5, 439, 0, 0, 4146, 4148, 3, 326, 163, 0, 4147, 4149, 3, 406, 203, 0, 4148, 4147, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4151, 1, 0, 0, 0, 4150, 4152, 5, 184, 0, 0, 4151, 4150, 1, 0, 0, 0, 4151, 4152, 1, 0, 0, 0, 4152, 4177, 1, 0, 0, 0, 4153, 4154, 5, 97, 0, 0, 4154, 4155, 5, 230, 0, 0, 4155, 4157, 3, 326, 163, 0, 4156, 4158, 3, 304, 152, 0, 4157, 4156, 1, 0, 0, 0, 4157, 4158, 1, 0, 0, 0, 4158, 4159, 1, 0, 0, 0, 4159, 4171, 5, 187, 0, 0, 4160, 4172, 3, 152, 76, 0, 4161, 4162, 5, 2, 0, 0, 4162, 4163, 5, 404, 0, 0, 4163, 4164, 3, 246, 123, 0, 4164, 4165, 5, 187, 0, 0, 4165, 4167, 3, 152, 76, 0, 4166, 4168, 3, 248, 124, 0, 4167, 4166, 1, 0, 0, 0, 4167, 4168, 1, 0, 0, 0, 4168, 4169, 1, 0, 0, 0, 4169, 4170, 5, 3, 0, 0, 4170, 4172, 1, 0, 0, 0, 4171, 4160, 1, 0, 0, 0, 4171, 4161, 1, 0, 0, 0, 4172, 4174, 1, 0, 0, 0, 4173, 4175, 3, 314, 157, 0, 4174, 4173, 1, 0, 0, 0, 4174, 4175, 1, 0, 0, 0, 4175, 4177, 1, 0, 0, 0, 4176, 4144, 1, 0, 0, 0, 4176, 4153, 1, 0, 0, 0, 4177, 151, 1, 0, 0, 0, 4178, 4181, 5, 527, 0, 0, 4179, 4182, 3, 448, 224, 0, 4180, 4182, 5, 515, 0, 0, 4181, 4179, 1, 0, 0, 0, 4181, 4180, 1, 0, 0, 0, 4182, 4186, 1, 0, 0, 0, 4183, 4184, 5, 2, 0, 0, 4184, 4185, 5, 529, 0, 0, 4185, 4187, 5, 3, 0, 0, 4186, 4183, 1, 0, 0, 0, 4186, 4187, 1, 0, 0, 0, 4187, 153, 1, 0, 0, 0, 4188, 4190, 5, 246, 0, 0, 4189, 4191, 5, 90, 0, 0, 4190, 4189, 1, 0, 0, 0, 4190, 4191, 1, 0, 0, 0, 4191, 4192, 1, 0, 0, 0, 4192, 4197, 5, 534, 0, 0, 4193, 4194, 5, 246, 0, 0, 4194, 4195, 5, 354, 0, 0, 4195, 4197, 7, 25, 0, 0, 4196, 4188, 1, 0, 0, 0, 4196, 4193, 1, 0, 0, 0, 4197, 155, 1, 0, 0, 0, 4198, 4199, 3, 196, 98, 0, 4199, 4200, 5, 191, 0, 0, 4200, 4201, 3, 448, 224, 0, 4201, 4203, 5, 2, 0, 0, 4202, 4204, 3, 316, 158, 0, 4203, 4202, 1, 0, 0, 0, 4203, 4204, 1, 0, 0, 0, 4204, 4205, 1, 0, 0, 0, 4205, 4206, 5, 3, 0, 0, 4206, 4207, 3, 324, 162, 0, 4207, 4218, 1, 0, 0, 0, 4208, 4209, 3, 196, 98, 0, 4209, 4210, 3, 326, 163, 0, 4210, 4211, 5, 20, 0, 0, 4211, 4218, 1, 0, 0, 0, 4212, 4213, 3, 196, 98, 0, 4213, 4215, 3, 326, 163, 0, 4214, 4216, 3, 406, 203, 0, 4215, 4214, 1, 0, 0, 0, 4215, 4216, 1, 0, 0, 0, 4216, 4218, 1, 0, 0, 0, 4217, 4198, 1, 0, 0, 0, 4217, 4208, 1, 0, 0, 0, 4217, 4212, 1, 0, 0, 0, 4218, 157, 1, 0, 0, 0, 4219, 4220, 5, 345, 0, 0, 4220, 4221, 5, 244, 0, 0, 4221, 4232, 3, 304, 152, 0, 4222, 4223, 5, 469, 0, 0, 4223, 4232, 3, 304, 152, 0, 4224, 4225, 5, 183, 0, 0, 4225, 4226, 5, 244, 0, 0, 4226, 4227, 3, 304, 152, 0, 4227, 4228, 5, 368, 0, 0, 4228, 4229, 3, 326, 163, 0, 4229, 4230, 3, 304, 152, 0, 4230, 4232, 1, 0, 0, 0, 4231, 4219, 1, 0, 0, 0, 4231, 4222, 1, 0, 0, 0, 4231, 4224, 1, 0, 0, 0, 4232, 159, 1, 0, 0, 0, 4233, 4235, 5, 446, 0, 0, 4234, 4233, 1, 0, 0, 0, 4234, 4235, 1, 0, 0, 0, 4235, 4236, 1, 0, 0, 0, 4236, 4237, 7, 26, 0, 0, 4237, 4248, 3, 304, 152, 0, 4238, 4240, 5, 446, 0, 0, 4239, 4238, 1, 0, 0, 0, 4239, 4240, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4242, 5, 321, 0, 0, 4242, 4248, 3, 444, 222, 0, 4243, 4244, 7, 26, 0, 0, 4244, 4245, 5, 2, 0, 0, 4245, 4246, 5, 512, 0, 0, 4246, 4248, 5, 3, 0, 0, 4247, 4234, 1, 0, 0, 0, 4247, 4239, 1, 0, 0, 0, 4247, 4243, 1, 0, 0, 0, 4248, 161, 1, 0, 0, 0, 4249, 4251, 5, 32, 0, 0, 4250, 4249, 1, 0, 0, 0, 4250, 4251, 1, 0, 0, 0, 4251, 4252, 1, 0, 0, 0, 4252, 4253, 5, 321, 0, 0, 4253, 4255, 5, 59, 0, 0, 4254, 4256, 7, 27, 0, 0, 4255, 4254, 1, 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4257, 1, 0, 0, 0, 4257, 4258, 3, 164, 82, 0, 4258, 4260, 5, 2, 0, 0, 4259, 4261, 3, 340, 170, 0, 4260, 4259, 1, 0, 0, 0, 4260, 4261, 1, 0, 0, 0, 4261, 4262, 1, 0, 0, 0, 4262, 4263, 5, 3, 0, 0, 4263, 163, 1, 0, 0, 0, 4264, 4265, 5, 2, 0, 0, 4265, 4270, 3, 166, 83, 0, 4266, 4267, 5, 4, 0, 0, 4267, 4269, 3, 166, 83, 0, 4268, 4266, 1, 0, 0, 0, 4269, 4272, 1, 0, 0, 0, 4270, 4268, 1, 0, 0, 0, 4270, 4271, 1, 0, 0, 0, 4271, 4273, 1, 0, 0, 0, 4272, 4270, 1, 0, 0, 0, 4273, 4274, 5, 3, 0, 0, 4274, 165, 1, 0, 0, 0, 4275, 4278, 3, 448, 224, 0, 4276, 4278, 3, 390, 195, 0, 4277, 4275, 1, 0, 0, 0, 4277, 4276, 1, 0, 0, 0, 4278, 167, 1, 0, 0, 0, 4279, 4281, 5, 497, 0, 0, 4280, 4279, 1, 0, 0, 0, 4280, 4281, 1, 0, 0, 0, 4281, 4282, 1, 0, 0, 0, 4282, 4284, 3, 204, 102, 0, 4283, 4280, 1, 0, 0, 0, 4283, 4284, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4286, 5, 110, 0, 0, 4286, 4287, 5, 221, 0, 0, 4287, 4288, 5, 2, 0, 0, 4288, 4293, 5, 529, 0, 0, 4289, 4290, 5, 4, 0, 0, 4290, 4292, 5, 529, 0, 0, 4291, 4289, 1, 0, 0, 0, 4292, 4295, 1, 0, 0, 0, 4293, 4291, 1, 0, 0, 0, 4293, 4294, 1, 0, 0, 0, 4294, 4296, 1, 0, 0, 0, 4295, 4293, 1, 0, 0, 0, 4296, 4297, 5, 3, 0, 0, 4297, 4298, 5, 230, 0, 0, 4298, 4299, 5, 439, 0, 0, 4299, 4301, 3, 448, 224, 0, 4300, 4302, 3, 160, 80, 0, 4301, 4300, 1, 0, 0, 0, 4301, 4302, 1, 0, 0, 0, 4302, 4307, 1, 0, 0, 0, 4303, 4304, 5, 80, 0, 0, 4304, 4305, 5, 447, 0, 0, 4305, 4306, 5, 59, 0, 0, 4306, 4308, 5, 529, 0, 0, 4307, 4303, 1, 0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 4313, 1, 0, 0, 0, 4309, 4310, 5, 258, 0, 0, 4310, 4311, 5, 447, 0, 0, 4311, 4312, 5, 59, 0, 0, 4312, 4314, 5, 529, 0, 0, 4313, 4309, 1, 0, 0, 0, 4313, 4314, 1, 0, 0, 0, 4314, 4318, 1, 0, 0, 0, 4315, 4316, 5, 185, 0, 0, 4316, 4317, 5, 28, 0, 0, 4317, 4319, 3, 182, 91, 0, 4318, 4315, 1, 0, 0, 0, 4318, 4319, 1, 0, 0, 0, 4319, 4323, 1, 0, 0, 0, 4320, 4321, 5, 86, 0, 0, 4321, 4322, 5, 28, 0, 0, 4322, 4324, 3, 182, 91, 0, 4323, 4320, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 4326, 1, 0, 0, 0, 4325, 4327, 3, 304, 152, 0, 4326, 4325, 1, 0, 0, 0, 4326, 4327, 1, 0, 0, 0, 4327, 4329, 1, 0, 0, 0, 4328, 4330, 3, 212, 106, 0, 4329, 4328, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, 4332, 1, 0, 0, 0, 4331, 4333, 3, 214, 107, 0, 4332, 4331, 1, 0, 0, 0, 4332, 4333, 1, 0, 0, 0, 4333, 4335, 1, 0, 0, 0, 4334, 4336, 3, 206, 103, 0, 4335, 4334, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4338, 1, 0, 0, 0, 4337, 4339, 3, 248, 124, 0, 4338, 4337, 1, 0, 0, 0, 4338, 4339, 1, 0, 0, 0, 4339, 4341, 1, 0, 0, 0, 4340, 4342, 3, 208, 104, 0, 4341, 4340, 1, 0, 0, 0, 4341, 4342, 1, 0, 0, 0, 4342, 4344, 1, 0, 0, 0, 4343, 4345, 3, 210, 105, 0, 4344, 4343, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 4347, 1, 0, 0, 0, 4346, 4348, 3, 314, 157, 0, 4347, 4346, 1, 0, 0, 0, 4347, 4348, 1, 0, 0, 0, 4348, 4379, 1, 0, 0, 0, 4349, 4351, 5, 497, 0, 0, 4350, 4349, 1, 0, 0, 0, 4350, 4351, 1, 0, 0, 0, 4351, 4352, 1, 0, 0, 0, 4352, 4354, 3, 204, 102, 0, 4353, 4350, 1, 0, 0, 0, 4353, 4354, 1, 0, 0, 0, 4354, 4355, 1, 0, 0, 0, 4355, 4356, 5, 110, 0, 0, 4356, 4357, 5, 187, 0, 0, 4357, 4358, 5, 439, 0, 0, 4358, 4359, 3, 448, 224, 0, 4359, 4360, 5, 230, 0, 0, 4360, 4361, 5, 439, 0, 0, 4361, 4364, 3, 448, 224, 0, 4362, 4363, 5, 321, 0, 0, 4363, 4365, 3, 304, 152, 0, 4364, 4362, 1, 0, 0, 0, 4364, 4365, 1, 0, 0, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4368, 3, 214, 107, 0, 4367, 4366, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4370, 1, 0, 0, 0, 4369, 4371, 3, 248, 124, 0, 4370, 4369, 1, 0, 0, 0, 4370, 4371, 1, 0, 0, 0, 4371, 4373, 1, 0, 0, 0, 4372, 4374, 3, 208, 104, 0, 4373, 4372, 1, 0, 0, 0, 4373, 4374, 1, 0, 0, 0, 4374, 4376, 1, 0, 0, 0, 4375, 4377, 3, 314, 157, 0, 4376, 4375, 1, 0, 0, 0, 4376, 4377, 1, 0, 0, 0, 4377, 4379, 1, 0, 0, 0, 4378, 4283, 1, 0, 0, 0, 4378, 4353, 1, 0, 0, 0, 4379, 169, 1, 0, 0, 0, 4380, 4381, 7, 28, 0, 0, 4381, 171, 1, 0, 0, 0, 4382, 4383, 5, 56, 0, 0, 4383, 4384, 7, 29, 0, 0, 4384, 173, 1, 0, 0, 0, 4385, 4386, 5, 309, 0, 0, 4386, 4393, 5, 269, 0, 0, 4387, 4388, 5, 309, 0, 0, 4388, 4389, 5, 399, 0, 0, 4389, 4393, 3, 176, 88, 0, 4390, 4391, 5, 309, 0, 0, 4391, 4393, 5, 82, 0, 0, 4392, 4385, 1, 0, 0, 0, 4392, 4387, 1, 0, 0, 0, 4392, 4390, 1, 0, 0, 0, 4393, 175, 1, 0, 0, 0, 4394, 4395, 5, 160, 0, 0, 4395, 4396, 5, 534, 0, 0, 4396, 4399, 3, 448, 224, 0, 4397, 4398, 5, 425, 0, 0, 4398, 4400, 5, 529, 0, 0, 4399, 4397, 1, 0, 0, 0, 4399, 4400, 1, 0, 0, 0, 4400, 177, 1, 0, 0, 0, 4401, 4402, 7, 30, 0, 0, 4402, 179, 1, 0, 0, 0, 4403, 4406, 3, 448, 224, 0, 4404, 4406, 3, 390, 195, 0, 4405, 4403, 1, 0, 0, 0, 4405, 4404, 1, 0, 0, 0, 4406, 181, 1, 0, 0, 0, 4407, 4410, 3, 448, 224, 0, 4408, 4410, 5, 529, 0, 0, 4409, 4407, 1, 0, 0, 0, 4409, 4408, 1, 0, 0, 0, 4410, 183, 1, 0, 0, 0, 4411, 4415, 3, 448, 224, 0, 4412, 4415, 5, 529, 0, 0, 4413, 4415, 5, 512, 0, 0, 4414, 4411, 1, 0, 0, 0, 4414, 4412, 1, 0, 0, 0, 4414, 4413, 1, 0, 0, 0, 4415, 185, 1, 0, 0, 0, 4416, 4421, 3, 188, 94, 0, 4417, 4418, 5, 5, 0, 0, 4418, 4420, 3, 188, 94, 0, 4419, 4417, 1, 0, 0, 0, 4420, 4423, 1, 0, 0, 0, 4421, 4419, 1, 0, 0, 0, 4421, 4422, 1, 0, 0, 0, 4422, 187, 1, 0, 0, 0, 4423, 4421, 1, 0, 0, 0, 4424, 4427, 3, 182, 91, 0, 4425, 4427, 5, 512, 0, 0, 4426, 4424, 1, 0, 0, 0, 4426, 4425, 1, 0, 0, 0, 4427, 189, 1, 0, 0, 0, 4428, 4437, 3, 182, 91, 0, 4429, 4435, 5, 527, 0, 0, 4430, 4436, 3, 182, 91, 0, 4431, 4432, 5, 2, 0, 0, 4432, 4433, 3, 182, 91, 0, 4433, 4434, 5, 3, 0, 0, 4434, 4436, 1, 0, 0, 0, 4435, 4430, 1, 0, 0, 0, 4435, 4431, 1, 0, 0, 0, 4436, 4438, 1, 0, 0, 0, 4437, 4429, 1, 0, 0, 0, 4437, 4438, 1, 0, 0, 0, 4438, 191, 1, 0, 0, 0, 4439, 4446, 3, 190, 95, 0, 4440, 4441, 5, 213, 0, 0, 4441, 4443, 5, 59, 0, 0, 4442, 4444, 5, 323, 0, 0, 4443, 4442, 1, 0, 0, 0, 4443, 4444, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 4447, 5, 529, 0, 0, 4446, 4440, 1, 0, 0, 0, 4446, 4447, 1, 0, 0, 0, 4447, 193, 1, 0, 0, 0, 4448, 4450, 3, 196, 98, 0, 4449, 4451, 3, 198, 99, 0, 4450, 4449, 1, 0, 0, 0, 4450, 4451, 1, 0, 0, 0, 4451, 4453, 1, 0, 0, 0, 4452, 4454, 7, 31, 0, 0, 4453, 4452, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4456, 1, 0, 0, 0, 4455, 4457, 5, 339, 0, 0, 4456, 4455, 1, 0, 0, 0, 4456, 4457, 1, 0, 0, 0, 4457, 195, 1, 0, 0, 0, 4458, 4459, 7, 32, 0, 0, 4459, 197, 1, 0, 0, 0, 4460, 4461, 7, 33, 0, 0, 4461, 199, 1, 0, 0, 0, 4462, 4463, 5, 336, 0, 0, 4463, 4464, 5, 376, 0, 0, 4464, 4465, 3, 202, 101, 0, 4465, 201, 1, 0, 0, 0, 4466, 4467, 5, 145, 0, 0, 4467, 4471, 3, 228, 114, 0, 4468, 4469, 5, 337, 0, 0, 4469, 4471, 5, 529, 0, 0, 4470, 4466, 1, 0, 0, 0, 4470, 4468, 1, 0, 0, 0, 4471, 203, 1, 0, 0, 0, 4472, 4473, 7, 18, 0, 0, 4473, 205, 1, 0, 0, 0, 4474, 4475, 5, 343, 0, 0, 4475, 4476, 5, 177, 0, 0, 4476, 4477, 3, 370, 185, 0, 4477, 207, 1, 0, 0, 0, 4478, 4479, 5, 126, 0, 0, 4479, 4480, 5, 309, 0, 0, 4480, 4481, 3, 370, 185, 0, 4481, 209, 1, 0, 0, 0, 4482, 4483, 5, 314, 0, 0, 4483, 4484, 5, 59, 0, 0, 4484, 4485, 3, 448, 224, 0, 4485, 211, 1, 0, 0, 0, 4486, 4487, 5, 80, 0, 0, 4487, 4488, 5, 187, 0, 0, 4488, 4489, 5, 328, 0, 0, 4489, 4490, 5, 28, 0, 0, 4490, 4491, 3, 304, 152, 0, 4491, 213, 1, 0, 0, 0, 4492, 4493, 5, 409, 0, 0, 4493, 4494, 5, 2, 0, 0, 4494, 4499, 3, 216, 108, 0, 4495, 4496, 5, 4, 0, 0, 4496, 4498, 3, 216, 108, 0, 4497, 4495, 1, 0, 0, 0, 4498, 4501, 1, 0, 0, 0, 4499, 4497, 1, 0, 0, 0, 4499, 4500, 1, 0, 0, 0, 4500, 4502, 1, 0, 0, 0, 4501, 4499, 1, 0, 0, 0, 4502, 4503, 5, 3, 0, 0, 4503, 215, 1, 0, 0, 0, 4504, 4505, 3, 448, 224, 0, 4505, 4506, 5, 503, 0, 0, 4506, 4507, 3, 370, 185, 0, 4507, 217, 1, 0, 0, 0, 4508, 4537, 3, 220, 110, 0, 4509, 4510, 5, 497, 0, 0, 4510, 4511, 5, 397, 0, 0, 4511, 4512, 5, 2, 0, 0, 4512, 4513, 3, 316, 158, 0, 4513, 4514, 5, 3, 0, 0, 4514, 4537, 1, 0, 0, 0, 4515, 4516, 5, 497, 0, 0, 4516, 4517, 5, 204, 0, 0, 4517, 4518, 5, 2, 0, 0, 4518, 4519, 3, 316, 158, 0, 4519, 4520, 5, 3, 0, 0, 4520, 4537, 1, 0, 0, 0, 4521, 4522, 5, 497, 0, 0, 4522, 4523, 5, 262, 0, 0, 4523, 4524, 5, 2, 0, 0, 4524, 4525, 3, 316, 158, 0, 4525, 4526, 5, 3, 0, 0, 4526, 4537, 1, 0, 0, 0, 4527, 4528, 5, 497, 0, 0, 4528, 4529, 5, 54, 0, 0, 4529, 4534, 3, 182, 91, 0, 4530, 4531, 5, 2, 0, 0, 4531, 4532, 3, 316, 158, 0, 4532, 4533, 5, 3, 0, 0, 4533, 4535, 1, 0, 0, 0, 4534, 4530, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 4537, 1, 0, 0, 0, 4536, 4508, 1, 0, 0, 0, 4536, 4509, 1, 0, 0, 0, 4536, 4515, 1, 0, 0, 0, 4536, 4521, 1, 0, 0, 0, 4536, 4527, 1, 0, 0, 0, 4537, 219, 1, 0, 0, 0, 4538, 4539, 5, 497, 0, 0, 4539, 4540, 5, 380, 0, 0, 4540, 4545, 3, 182, 91, 0, 4541, 4542, 5, 2, 0, 0, 4542, 4543, 3, 316, 158, 0, 4543, 4544, 5, 3, 0, 0, 4544, 4546, 1, 0, 0, 0, 4545, 4541, 1, 0, 0, 0, 4545, 4546, 1, 0, 0, 0, 4546, 221, 1, 0, 0, 0, 4547, 4549, 5, 110, 0, 0, 4548, 4550, 5, 262, 0, 0, 4549, 4548, 1, 0, 0, 0, 4549, 4550, 1, 0, 0, 0, 4550, 4551, 1, 0, 0, 0, 4551, 4552, 5, 221, 0, 0, 4552, 4553, 5, 529, 0, 0, 4553, 4554, 5, 230, 0, 0, 4554, 4555, 5, 439, 0, 0, 4555, 4558, 3, 326, 163, 0, 4556, 4557, 5, 321, 0, 0, 4557, 4559, 3, 304, 152, 0, 4558, 4556, 1, 0, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4564, 1, 0, 0, 0, 4560, 4561, 5, 80, 0, 0, 4561, 4562, 5, 447, 0, 0, 4562, 4563, 5, 59, 0, 0, 4563, 4565, 5, 529, 0, 0, 4564, 4560, 1, 0, 0, 0, 4564, 4565, 1, 0, 0, 0, 4565, 4570, 1, 0, 0, 0, 4566, 4567, 5, 258, 0, 0, 4567, 4568, 5, 447, 0, 0, 4568, 4569, 5, 59, 0, 0, 4569, 4571, 5, 529, 0, 0, 4570, 4566, 1, 0, 0, 0, 4570, 4571, 1, 0, 0, 0, 4571, 4573, 1, 0, 0, 0, 4572, 4574, 3, 224, 112, 0, 4573, 4572, 1, 0, 0, 0, 4573, 4574, 1, 0, 0, 0, 4574, 4576, 1, 0, 0, 0, 4575, 4577, 3, 304, 152, 0, 4576, 4575, 1, 0, 0, 0, 4576, 4577, 1, 0, 0, 0, 4577, 4579, 1, 0, 0, 0, 4578, 4580, 3, 214, 107, 0, 4579, 4578, 1, 0, 0, 0, 4579, 4580, 1, 0, 0, 0, 4580, 4582, 1, 0, 0, 0, 4581, 4583, 3, 314, 157, 0, 4582, 4581, 1, 0, 0, 0, 4582, 4583, 1, 0, 0, 0, 4583, 223, 1, 0, 0, 0, 4584, 4585, 5, 215, 0, 0, 4585, 4586, 5, 534, 0, 0, 4586, 4591, 5, 258, 0, 0, 4587, 4588, 5, 215, 0, 0, 4588, 4589, 5, 534, 0, 0, 4589, 4591, 5, 396, 0, 0, 4590, 4584, 1, 0, 0, 0, 4590, 4587, 1, 0, 0, 0, 4591, 225, 1, 0, 0, 0, 4592, 4593, 5, 230, 0, 0, 4593, 4594, 5, 316, 0, 0, 4594, 4598, 3, 408, 204, 0, 4595, 4596, 5, 185, 0, 0, 4596, 4597, 5, 28, 0, 0, 4597, 4599, 3, 448, 224, 0, 4598, 4595, 1, 0, 0, 0, 4598, 4599, 1, 0, 0, 0, 4599, 4601, 1, 0, 0, 0, 4600, 4602, 3, 314, 157, 0, 4601, 4600, 1, 0, 0, 0, 4601, 4602, 1, 0, 0, 0, 4602, 227, 1, 0, 0, 0, 4603, 4605, 3, 238, 119, 0, 4604, 4603, 1, 0, 0, 0, 4604, 4605, 1, 0, 0, 0, 4605, 4606, 1, 0, 0, 0, 4606, 4607, 3, 230, 115, 0, 4607, 4608, 3, 290, 145, 0, 4608, 229, 1, 0, 0, 0, 4609, 4610, 6, 115, -1, 0, 4610, 4611, 3, 234, 117, 0, 4611, 4626, 1, 0, 0, 0, 4612, 4613, 10, 2, 0, 0, 4613, 4615, 5, 228, 0, 0, 4614, 4616, 3, 232, 116, 0, 4615, 4614, 1, 0, 0, 0, 4615, 4616, 1, 0, 0, 0, 4616, 4617, 1, 0, 0, 0, 4617, 4625, 3, 230, 115, 3, 4618, 4619, 10, 1, 0, 0, 4619, 4621, 7, 34, 0, 0, 4620, 4622, 3, 232, 116, 0, 4621, 4620, 1, 0, 0, 0, 4621, 4622, 1, 0, 0, 0, 4622, 4623, 1, 0, 0, 0, 4623, 4625, 3, 230, 115, 2, 4624, 4612, 1, 0, 0, 0, 4624, 4618, 1, 0, 0, 0, 4625, 4628, 1, 0, 0, 0, 4626, 4624, 1, 0, 0, 0, 4626, 4627, 1, 0, 0, 0, 4627, 231, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4629, 4630, 7, 35, 0, 0, 4630, 233, 1, 0, 0, 0, 4631, 4638, 3, 236, 118, 0, 4632, 4633, 5, 2, 0, 0, 4633, 4634, 3, 228, 114, 0, 4634, 4635, 5, 3, 0, 0, 4635, 4638, 1, 0, 0, 0, 4636, 4638, 3, 364, 182, 0, 4637, 4631, 1, 0, 0, 0, 4637, 4632, 1, 0, 0, 0, 4637, 4636, 1, 0, 0, 0, 4638, 235, 1, 0, 0, 0, 4639, 4641, 3, 244, 122, 0, 4640, 4642, 3, 252, 126, 0, 4641, 4640, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4644, 1, 0, 0, 0, 4643, 4645, 3, 250, 125, 0, 4644, 4643, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4647, 1, 0, 0, 0, 4646, 4648, 3, 248, 124, 0, 4647, 4646, 1, 0, 0, 0, 4647, 4648, 1, 0, 0, 0, 4648, 4650, 1, 0, 0, 0, 4649, 4651, 3, 268, 134, 0, 4650, 4649, 1, 0, 0, 0, 4650, 4651, 1, 0, 0, 0, 4651, 4653, 1, 0, 0, 0, 4652, 4654, 3, 274, 137, 0, 4653, 4652, 1, 0, 0, 0, 4653, 4654, 1, 0, 0, 0, 4654, 4656, 1, 0, 0, 0, 4655, 4657, 3, 276, 138, 0, 4656, 4655, 1, 0, 0, 0, 4656, 4657, 1, 0, 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4659, 4, 118, 2, 0, 4659, 4660, 3, 290, 145, 0, 4660, 237, 1, 0, 0, 0, 4661, 4662, 5, 497, 0, 0, 4662, 4667, 3, 240, 120, 0, 4663, 4664, 5, 4, 0, 0, 4664, 4666, 3, 240, 120, 0, 4665, 4663, 1, 0, 0, 0, 4666, 4669, 1, 0, 0, 0, 4667, 4665, 1, 0, 0, 0, 4667, 4668, 1, 0, 0, 0, 4668, 239, 1, 0, 0, 0, 4669, 4667, 1, 0, 0, 0, 4670, 4672, 3, 448, 224, 0, 4671, 4673, 3, 242, 121, 0, 4672, 4671, 1, 0, 0, 0, 4672, 4673, 1, 0, 0, 0, 4673, 4674, 1, 0, 0, 0, 4674, 4675, 5, 28, 0, 0, 4675, 4676, 5, 2, 0, 0, 4676, 4677, 3, 228, 114, 0, 4677, 4678, 5, 3, 0, 0, 4678, 241, 1, 0, 0, 0, 4679, 4680, 5, 2, 0, 0, 4680, 4685, 3, 448, 224, 0, 4681, 4682, 5, 4, 0, 0, 4682, 4684, 3, 448, 224, 0, 4683, 4681, 1, 0, 0, 0, 4684, 4687, 1, 0, 0, 0, 4685, 4683, 1, 0, 0, 0, 4685, 4686, 1, 0, 0, 0, 4686, 4688, 1, 0, 0, 0, 4687, 4685, 1, 0, 0, 0, 4688, 4689, 5, 3, 0, 0, 4689, 243, 1, 0, 0, 0, 4690, 4692, 5, 404, 0, 0, 4691, 4693, 7, 35, 0, 0, 4692, 4691, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4694, 1, 0, 0, 0, 4694, 4695, 3, 246, 123, 0, 4695, 245, 1, 0, 0, 0, 4696, 4697, 3, 368, 184, 0, 4697, 247, 1, 0, 0, 0, 4698, 4699, 5, 495, 0, 0, 4699, 4700, 3, 374, 187, 0, 4700, 249, 1, 0, 0, 0, 4701, 4702, 5, 187, 0, 0, 4702, 4703, 3, 258, 129, 0, 4703, 251, 1, 0, 0, 0, 4704, 4706, 3, 254, 127, 0, 4705, 4704, 1, 0, 0, 0, 4705, 4706, 1, 0, 0, 0, 4706, 4707, 1, 0, 0, 0, 4707, 4710, 5, 230, 0, 0, 4708, 4711, 3, 256, 128, 0, 4709, 4711, 3, 448, 224, 0, 4710, 4708, 1, 0, 0, 0, 4710, 4709, 1, 0, 0, 0, 4711, 4719, 1, 0, 0, 0, 4712, 4715, 5, 4, 0, 0, 4713, 4716, 3, 256, 128, 0, 4714, 4716, 3, 448, 224, 0, 4715, 4713, 1, 0, 0, 0, 4715, 4714, 1, 0, 0, 0, 4716, 4718, 1, 0, 0, 0, 4717, 4712, 1, 0, 0, 0, 4718, 4721, 1, 0, 0, 0, 4719, 4717, 1, 0, 0, 0, 4719, 4720, 1, 0, 0, 0, 4720, 253, 1, 0, 0, 0, 4721, 4719, 1, 0, 0, 0, 4722, 4723, 5, 58, 0, 0, 4723, 4724, 5, 77, 0, 0, 4724, 255, 1, 0, 0, 0, 4725, 4726, 3, 448, 224, 0, 4726, 4727, 5, 2, 0, 0, 4727, 4728, 5, 534, 0, 0, 4728, 4729, 5, 3, 0, 0, 4729, 257, 1, 0, 0, 0, 4730, 4735, 3, 260, 130, 0, 4731, 4732, 5, 4, 0, 0, 4732, 4734, 3, 260, 130, 0, 4733, 4731, 1, 0, 0, 0, 4734, 4737, 1, 0, 0, 0, 4735, 4733, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 259, 1, 0, 0, 0, 4737, 4735, 1, 0, 0, 0, 4738, 4742, 3, 310, 155, 0, 4739, 4741, 3, 262, 131, 0, 4740, 4739, 1, 0, 0, 0, 4741, 4744, 1, 0, 0, 0, 4742, 4740, 1, 0, 0, 0, 4742, 4743, 1, 0, 0, 0, 4743, 261, 1, 0, 0, 0, 4744, 4742, 1, 0, 0, 0, 4745, 4746, 3, 300, 150, 0, 4746, 4748, 5, 241, 0, 0, 4747, 4749, 3, 264, 132, 0, 4748, 4747, 1, 0, 0, 0, 4748, 4749, 1, 0, 0, 0, 4749, 4750, 1, 0, 0, 0, 4750, 4752, 3, 310, 155, 0, 4751, 4753, 3, 302, 151, 0, 4752, 4751, 1, 0, 0, 0, 4752, 4753, 1, 0, 0, 0, 4753, 263, 1, 0, 0, 0, 4754, 4755, 5, 7, 0, 0, 4755, 4756, 3, 448, 224, 0, 4756, 4757, 5, 8, 0, 0, 4757, 4763, 1, 0, 0, 0, 4758, 4759, 5, 524, 0, 0, 4759, 4760, 3, 448, 224, 0, 4760, 4761, 5, 525, 0, 0, 4761, 4763, 1, 0, 0, 0, 4762, 4754, 1, 0, 0, 0, 4762, 4758, 1, 0, 0, 0, 4763, 265, 1, 0, 0, 0, 4764, 4765, 5, 7, 0, 0, 4765, 4770, 3, 448, 224, 0, 4766, 4767, 5, 4, 0, 0, 4767, 4769, 3, 448, 224, 0, 4768, 4766, 1, 0, 0, 0, 4769, 4772, 1, 0, 0, 0, 4770, 4768, 1, 0, 0, 0, 4770, 4771, 1, 0, 0, 0, 4771, 4773, 1, 0, 0, 0, 4772, 4770, 1, 0, 0, 0, 4773, 4774, 5, 8, 0, 0, 4774, 4787, 1, 0, 0, 0, 4775, 4776, 5, 524, 0, 0, 4776, 4781, 3, 448, 224, 0, 4777, 4778, 5, 4, 0, 0, 4778, 4780, 3, 448, 224, 0, 4779, 4777, 1, 0, 0, 0, 4780, 4783, 1, 0, 0, 0, 4781, 4779, 1, 0, 0, 0, 4781, 4782, 1, 0, 0, 0, 4782, 4784, 1, 0, 0, 0, 4783, 4781, 1, 0, 0, 0, 4784, 4785, 5, 525, 0, 0, 4785, 4787, 1, 0, 0, 0, 4786, 4764, 1, 0, 0, 0, 4786, 4775, 1, 0, 0, 0, 4787, 267, 1, 0, 0, 0, 4788, 4789, 5, 199, 0, 0, 4789, 4790, 5, 59, 0, 0, 4790, 4791, 3, 270, 135, 0, 4791, 269, 1, 0, 0, 0, 4792, 4793, 5, 393, 0, 0, 4793, 4802, 5, 2, 0, 0, 4794, 4799, 3, 370, 185, 0, 4795, 4796, 5, 4, 0, 0, 4796, 4798, 3, 370, 185, 0, 4797, 4795, 1, 0, 0, 0, 4798, 4801, 1, 0, 0, 0, 4799, 4797, 1, 0, 0, 0, 4799, 4800, 1, 0, 0, 0, 4800, 4803, 1, 0, 0, 0, 4801, 4799, 1, 0, 0, 0, 4802, 4794, 1, 0, 0, 0, 4802, 4803, 1, 0, 0, 0, 4803, 4804, 1, 0, 0, 0, 4804, 4840, 5, 3, 0, 0, 4805, 4806, 5, 103, 0, 0, 4806, 4815, 5, 2, 0, 0, 4807, 4812, 3, 370, 185, 0, 4808, 4809, 5, 4, 0, 0, 4809, 4811, 3, 370, 185, 0, 4810, 4808, 1, 0, 0, 0, 4811, 4814, 1, 0, 0, 0, 4812, 4810, 1, 0, 0, 0, 4812, 4813, 1, 0, 0, 0, 4813, 4816, 1, 0, 0, 0, 4814, 4812, 1, 0, 0, 0, 4815, 4807, 1, 0, 0, 0, 4815, 4816, 1, 0, 0, 0, 4816, 4817, 1, 0, 0, 0, 4817, 4840, 5, 3, 0, 0, 4818, 4819, 5, 200, 0, 0, 4819, 4820, 5, 410, 0, 0, 4820, 4821, 5, 2, 0, 0, 4821, 4826, 3, 272, 136, 0, 4822, 4823, 5, 4, 0, 0, 4823, 4825, 3, 272, 136, 0, 4824, 4822, 1, 0, 0, 0, 4825, 4828, 1, 0, 0, 0, 4826, 4824, 1, 0, 0, 0, 4826, 4827, 1, 0, 0, 0, 4827, 4829, 1, 0, 0, 0, 4828, 4826, 1, 0, 0, 0, 4829, 4830, 5, 3, 0, 0, 4830, 4840, 1, 0, 0, 0, 4831, 4836, 3, 370, 185, 0, 4832, 4833, 5, 4, 0, 0, 4833, 4835, 3, 370, 185, 0, 4834, 4832, 1, 0, 0, 0, 4835, 4838, 1, 0, 0, 0, 4836, 4834, 1, 0, 0, 0, 4836, 4837, 1, 0, 0, 0, 4837, 4840, 1, 0, 0, 0, 4838, 4836, 1, 0, 0, 0, 4839, 4792, 1, 0, 0, 0, 4839, 4805, 1, 0, 0, 0, 4839, 4818, 1, 0, 0, 0, 4839, 4831, 1, 0, 0, 0, 4840, 271, 1, 0, 0, 0, 4841, 4850, 5, 2, 0, 0, 4842, 4847, 3, 370, 185, 0, 4843, 4844, 5, 4, 0, 0, 4844, 4846, 3, 370, 185, 0, 4845, 4843, 1, 0, 0, 0, 4846, 4849, 1, 0, 0, 0, 4847, 4845, 1, 0, 0, 0, 4847, 4848, 1, 0, 0, 0, 4848, 4851, 1, 0, 0, 0, 4849, 4847, 1, 0, 0, 0, 4850, 4842, 1, 0, 0, 0, 4850, 4851, 1, 0, 0, 0, 4851, 4852, 1, 0, 0, 0, 4852, 4853, 5, 3, 0, 0, 4853, 273, 1, 0, 0, 0, 4854, 4855, 5, 203, 0, 0, 4855, 4856, 3, 374, 187, 0, 4856, 275, 1, 0, 0, 0, 4857, 4858, 5, 357, 0, 0, 4858, 4859, 3, 374, 187, 0, 4859, 277, 1, 0, 0, 0, 4860, 4867, 3, 280, 140, 0, 4861, 4863, 5, 4, 0, 0, 4862, 4861, 1, 0, 0, 0, 4862, 4863, 1, 0, 0, 0, 4863, 4864, 1, 0, 0, 0, 4864, 4866, 3, 280, 140, 0, 4865, 4862, 1, 0, 0, 0, 4866, 4869, 1, 0, 0, 0, 4867, 4865, 1, 0, 0, 0, 4867, 4868, 1, 0, 0, 0, 4868, 4870, 1, 0, 0, 0, 4869, 4867, 1, 0, 0, 0, 4870, 4871, 5, 525, 0, 0, 4871, 279, 1, 0, 0, 0, 4872, 4886, 3, 448, 224, 0, 4873, 4874, 5, 2, 0, 0, 4874, 4881, 3, 282, 141, 0, 4875, 4877, 5, 4, 0, 0, 4876, 4875, 1, 0, 0, 0, 4876, 4877, 1, 0, 0, 0, 4877, 4878, 1, 0, 0, 0, 4878, 4880, 3, 282, 141, 0, 4879, 4876, 1, 0, 0, 0, 4880, 4883, 1, 0, 0, 0, 4881, 4879, 1, 0, 0, 0, 4881, 4882, 1, 0, 0, 0, 4882, 4884, 1, 0, 0, 0, 4883, 4881, 1, 0, 0, 0, 4884, 4885, 5, 3, 0, 0, 4885, 4887, 1, 0, 0, 0, 4886, 4873, 1, 0, 0, 0, 4886, 4887, 1, 0, 0, 0, 4887, 4903, 1, 0, 0, 0, 4888, 4900, 7, 36, 0, 0, 4889, 4890, 5, 2, 0, 0, 4890, 4895, 3, 326, 163, 0, 4891, 4892, 5, 4, 0, 0, 4892, 4894, 3, 326, 163, 0, 4893, 4891, 1, 0, 0, 0, 4894, 4897, 1, 0, 0, 0, 4895, 4893, 1, 0, 0, 0, 4895, 4896, 1, 0, 0, 0, 4896, 4898, 1, 0, 0, 0, 4897, 4895, 1, 0, 0, 0, 4898, 4899, 5, 3, 0, 0, 4899, 4901, 1, 0, 0, 0, 4900, 4889, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4903, 1, 0, 0, 0, 4902, 4872, 1, 0, 0, 0, 4902, 4888, 1, 0, 0, 0, 4903, 281, 1, 0, 0, 0, 4904, 4910, 3, 182, 91, 0, 4905, 4908, 5, 503, 0, 0, 4906, 4909, 3, 408, 204, 0, 4907, 4909, 3, 448, 224, 0, 4908, 4906, 1, 0, 0, 0, 4908, 4907, 1, 0, 0, 0, 4909, 4911, 1, 0, 0, 0, 4910, 4905, 1, 0, 0, 0, 4910, 4911, 1, 0, 0, 0, 4911, 4914, 1, 0, 0, 0, 4912, 4914, 3, 408, 204, 0, 4913, 4904, 1, 0, 0, 0, 4913, 4912, 1, 0, 0, 0, 4914, 283, 1, 0, 0, 0, 4915, 4916, 3, 326, 163, 0, 4916, 4919, 5, 503, 0, 0, 4917, 4920, 3, 370, 185, 0, 4918, 4920, 5, 124, 0, 0, 4919, 4917, 1, 0, 0, 0, 4919, 4918, 1, 0, 0, 0, 4920, 285, 1, 0, 0, 0, 4921, 4926, 3, 284, 142, 0, 4922, 4923, 5, 4, 0, 0, 4923, 4925, 3, 284, 142, 0, 4924, 4922, 1, 0, 0, 0, 4925, 4928, 1, 0, 0, 0, 4926, 4924, 1, 0, 0, 0, 4926, 4927, 1, 0, 0, 0, 4927, 287, 1, 0, 0, 0, 4928, 4926, 1, 0, 0, 0, 4929, 4930, 5, 250, 0, 0, 4930, 4931, 5, 489, 0, 0, 4931, 4932, 3, 448, 224, 0, 4932, 4941, 5, 2, 0, 0, 4933, 4938, 3, 370, 185, 0, 4934, 4935, 5, 4, 0, 0, 4935, 4937, 3, 370, 185, 0, 4936, 4934, 1, 0, 0, 0, 4937, 4940, 1, 0, 0, 0, 4938, 4936, 1, 0, 0, 0, 4938, 4939, 1, 0, 0, 0, 4939, 4942, 1, 0, 0, 0, 4940, 4938, 1, 0, 0, 0, 4941, 4933, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 4943, 1, 0, 0, 0, 4943, 4944, 5, 3, 0, 0, 4944, 4945, 3, 448, 224, 0, 4945, 4946, 5, 28, 0, 0, 4946, 4951, 3, 448, 224, 0, 4947, 4948, 5, 4, 0, 0, 4948, 4950, 3, 448, 224, 0, 4949, 4947, 1, 0, 0, 0, 4950, 4953, 1, 0, 0, 0, 4951, 4949, 1, 0, 0, 0, 4951, 4952, 1, 0, 0, 0, 4952, 289, 1, 0, 0, 0, 4953, 4951, 1, 0, 0, 0, 4954, 4956, 3, 292, 146, 0, 4955, 4954, 1, 0, 0, 0, 4955, 4956, 1, 0, 0, 0, 4956, 4958, 1, 0, 0, 0, 4957, 4959, 3, 296, 148, 0, 4958, 4957, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 291, 1, 0, 0, 0, 4960, 4961, 5, 314, 0, 0, 4961, 4962, 5, 59, 0, 0, 4962, 4967, 3, 294, 147, 0, 4963, 4964, 5, 4, 0, 0, 4964, 4966, 3, 294, 147, 0, 4965, 4963, 1, 0, 0, 0, 4966, 4969, 1, 0, 0, 0, 4967, 4965, 1, 0, 0, 0, 4967, 4968, 1, 0, 0, 0, 4968, 293, 1, 0, 0, 0, 4969, 4967, 1, 0, 0, 0, 4970, 4972, 3, 370, 185, 0, 4971, 4973, 7, 37, 0, 0, 4972, 4971, 1, 0, 0, 0, 4972, 4973, 1, 0, 0, 0, 4973, 4976, 1, 0, 0, 0, 4974, 4975, 5, 305, 0, 0, 4975, 4977, 7, 38, 0, 0, 4976, 4974, 1, 0, 0, 0, 4976, 4977, 1, 0, 0, 0, 4977, 295, 1, 0, 0, 0, 4978, 4979, 5, 257, 0, 0, 4979, 4989, 5, 534, 0, 0, 4980, 4981, 5, 257, 0, 0, 4981, 4982, 5, 534, 0, 0, 4982, 4983, 5, 308, 0, 0, 4983, 4989, 5, 534, 0, 0, 4984, 4985, 5, 257, 0, 0, 4985, 4986, 5, 534, 0, 0, 4986, 4987, 5, 4, 0, 0, 4987, 4989, 5, 534, 0, 0, 4988, 4978, 1, 0, 0, 0, 4988, 4980, 1, 0, 0, 0, 4988, 4984, 1, 0, 0, 0, 4989, 297, 1, 0, 0, 0, 4990, 4991, 5, 321, 0, 0, 4991, 4992, 5, 59, 0, 0, 4992, 4997, 3, 370, 185, 0, 4993, 4994, 5, 4, 0, 0, 4994, 4996, 3, 370, 185, 0, 4995, 4993, 1, 0, 0, 0, 4996, 4999, 1, 0, 0, 0, 4997, 4995, 1, 0, 0, 0, 4997, 4998, 1, 0, 0, 0, 4998, 299, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 5002, 5, 222, 0, 0, 5001, 5000, 1, 0, 0, 0, 5001, 5002, 1, 0, 0, 0, 5002, 5025, 1, 0, 0, 0, 5003, 5025, 5, 102, 0, 0, 5004, 5006, 5, 253, 0, 0, 5005, 5007, 5, 315, 0, 0, 5006, 5005, 1, 0, 0, 0, 5006, 5007, 1, 0, 0, 0, 5007, 5025, 1, 0, 0, 0, 5008, 5010, 5, 388, 0, 0, 5009, 5011, 5, 315, 0, 0, 5010, 5009, 1, 0, 0, 0, 5010, 5011, 1, 0, 0, 0, 5011, 5025, 1, 0, 0, 0, 5012, 5014, 5, 190, 0, 0, 5013, 5015, 5, 315, 0, 0, 5014, 5013, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5025, 1, 0, 0, 0, 5016, 5017, 5, 253, 0, 0, 5017, 5025, 5, 405, 0, 0, 5018, 5019, 5, 388, 0, 0, 5019, 5025, 5, 405, 0, 0, 5020, 5021, 5, 253, 0, 0, 5021, 5025, 5, 25, 0, 0, 5022, 5023, 5, 388, 0, 0, 5023, 5025, 5, 25, 0, 0, 5024, 5001, 1, 0, 0, 0, 5024, 5003, 1, 0, 0, 0, 5024, 5004, 1, 0, 0, 0, 5024, 5008, 1, 0, 0, 0, 5024, 5012, 1, 0, 0, 0, 5024, 5016, 1, 0, 0, 0, 5024, 5018, 1, 0, 0, 0, 5024, 5020, 1, 0, 0, 0, 5024, 5022, 1, 0, 0, 0, 5025, 301, 1, 0, 0, 0, 5026, 5027, 5, 309, 0, 0, 5027, 5031, 3, 374, 187, 0, 5028, 5029, 5, 478, 0, 0, 5029, 5031, 3, 304, 152, 0, 5030, 5026, 1, 0, 0, 0, 5030, 5028, 1, 0, 0, 0, 5031, 303, 1, 0, 0, 0, 5032, 5033, 5, 2, 0, 0, 5033, 5034, 3, 306, 153, 0, 5034, 5035, 5, 3, 0, 0, 5035, 305, 1, 0, 0, 0, 5036, 5041, 3, 444, 222, 0, 5037, 5038, 5, 4, 0, 0, 5038, 5040, 3, 444, 222, 0, 5039, 5037, 1, 0, 0, 0, 5040, 5043, 1, 0, 0, 0, 5041, 5039, 1, 0, 0, 0, 5041, 5042, 1, 0, 0, 0, 5042, 307, 1, 0, 0, 0, 5043, 5041, 1, 0, 0, 0, 5044, 5045, 5, 527, 0, 0, 5045, 5046, 3, 448, 224, 0, 5046, 5048, 5, 2, 0, 0, 5047, 5049, 3, 316, 158, 0, 5048, 5047, 1, 0, 0, 0, 5048, 5049, 1, 0, 0, 0, 5049, 5050, 1, 0, 0, 0, 5050, 5051, 5, 3, 0, 0, 5051, 309, 1, 0, 0, 0, 5052, 5054, 3, 326, 163, 0, 5053, 5055, 3, 308, 154, 0, 5054, 5053, 1, 0, 0, 0, 5054, 5055, 1, 0, 0, 0, 5055, 5057, 1, 0, 0, 0, 5056, 5058, 3, 312, 156, 0, 5057, 5056, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, 5060, 1, 0, 0, 0, 5059, 5061, 3, 442, 221, 0, 5060, 5059, 1, 0, 0, 0, 5060, 5061, 1, 0, 0, 0, 5061, 5063, 1, 0, 0, 0, 5062, 5064, 3, 406, 203, 0, 5063, 5062, 1, 0, 0, 0, 5063, 5064, 1, 0, 0, 0, 5064, 5066, 1, 0, 0, 0, 5065, 5067, 3, 362, 181, 0, 5066, 5065, 1, 0, 0, 0, 5066, 5067, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5070, 3, 324, 162, 0, 5069, 5071, 3, 438, 219, 0, 5070, 5069, 1, 0, 0, 0, 5070, 5071, 1, 0, 0, 0, 5071, 5073, 1, 0, 0, 0, 5072, 5074, 3, 266, 133, 0, 5073, 5072, 1, 0, 0, 0, 5073, 5074, 1, 0, 0, 0, 5074, 5078, 1, 0, 0, 0, 5075, 5077, 3, 288, 144, 0, 5076, 5075, 1, 0, 0, 0, 5077, 5080, 1, 0, 0, 0, 5078, 5076, 1, 0, 0, 0, 5078, 5079, 1, 0, 0, 0, 5079, 5104, 1, 0, 0, 0, 5080, 5078, 1, 0, 0, 0, 5081, 5082, 5, 2, 0, 0, 5082, 5083, 3, 228, 114, 0, 5083, 5084, 5, 3, 0, 0, 5084, 5088, 3, 324, 162, 0, 5085, 5087, 3, 288, 144, 0, 5086, 5085, 1, 0, 0, 0, 5087, 5090, 1, 0, 0, 0, 5088, 5086, 1, 0, 0, 0, 5088, 5089, 1, 0, 0, 0, 5089, 5104, 1, 0, 0, 0, 5090, 5088, 1, 0, 0, 0, 5091, 5092, 3, 448, 224, 0, 5092, 5094, 5, 2, 0, 0, 5093, 5095, 3, 316, 158, 0, 5094, 5093, 1, 0, 0, 0, 5094, 5095, 1, 0, 0, 0, 5095, 5096, 1, 0, 0, 0, 5096, 5097, 5, 3, 0, 0, 5097, 5098, 3, 324, 162, 0, 5098, 5104, 1, 0, 0, 0, 5099, 5100, 5, 2, 0, 0, 5100, 5101, 3, 258, 129, 0, 5101, 5102, 5, 3, 0, 0, 5102, 5104, 1, 0, 0, 0, 5103, 5052, 1, 0, 0, 0, 5103, 5081, 1, 0, 0, 0, 5103, 5091, 1, 0, 0, 0, 5103, 5099, 1, 0, 0, 0, 5104, 311, 1, 0, 0, 0, 5105, 5106, 5, 219, 0, 0, 5106, 5107, 3, 448, 224, 0, 5107, 313, 1, 0, 0, 0, 5108, 5109, 5, 350, 0, 0, 5109, 5110, 5, 2, 0, 0, 5110, 5111, 3, 316, 158, 0, 5111, 5112, 5, 3, 0, 0, 5112, 315, 1, 0, 0, 0, 5113, 5118, 3, 318, 159, 0, 5114, 5115, 5, 4, 0, 0, 5115, 5117, 3, 318, 159, 0, 5116, 5114, 1, 0, 0, 0, 5117, 5120, 1, 0, 0, 0, 5118, 5116, 1, 0, 0, 0, 5118, 5119, 1, 0, 0, 0, 5119, 317, 1, 0, 0, 0, 5120, 5118, 1, 0, 0, 0, 5121, 5122, 3, 320, 160, 0, 5122, 5123, 5, 503, 0, 0, 5123, 5124, 3, 322, 161, 0, 5124, 319, 1, 0, 0, 0, 5125, 5128, 3, 448, 224, 0, 5126, 5128, 3, 408, 204, 0, 5127, 5125, 1, 0, 0, 0, 5127, 5126, 1, 0, 0, 0, 5128, 321, 1, 0, 0, 0, 5129, 5132, 3, 448, 224, 0, 5130, 5132, 3, 408, 204, 0, 5131, 5129, 1, 0, 0, 0, 5131, 5130, 1, 0, 0, 0, 5132, 323, 1, 0, 0, 0, 5133, 5135, 5, 28, 0, 0, 5134, 5133, 1, 0, 0, 0, 5134, 5135, 1, 0, 0, 0, 5135, 5136, 1, 0, 0, 0, 5136, 5138, 3, 450, 225, 0, 5137, 5139, 3, 304, 152, 0, 5138, 5137, 1, 0, 0, 0, 5138, 5139, 1, 0, 0, 0, 5139, 5141, 1, 0, 0, 0, 5140, 5134, 1, 0, 0, 0, 5140, 5141, 1, 0, 0, 0, 5141, 325, 1, 0, 0, 0, 5142, 5147, 3, 444, 222, 0, 5143, 5144, 5, 5, 0, 0, 5144, 5146, 3, 444, 222, 0, 5145, 5143, 1, 0, 0, 0, 5146, 5149, 1, 0, 0, 0, 5147, 5145, 1, 0, 0, 0, 5147, 5148, 1, 0, 0, 0, 5148, 327, 1, 0, 0, 0, 5149, 5147, 1, 0, 0, 0, 5150, 5155, 3, 330, 165, 0, 5151, 5152, 5, 4, 0, 0, 5152, 5154, 3, 330, 165, 0, 5153, 5151, 1, 0, 0, 0, 5154, 5157, 1, 0, 0, 0, 5155, 5153, 1, 0, 0, 0, 5155, 5156, 1, 0, 0, 0, 5156, 329, 1, 0, 0, 0, 5157, 5155, 1, 0, 0, 0, 5158, 5161, 3, 448, 224, 0, 5159, 5160, 5, 81, 0, 0, 5160, 5162, 5, 529, 0, 0, 5161, 5159, 1, 0, 0, 0, 5161, 5162, 1, 0, 0, 0, 5162, 331, 1, 0, 0, 0, 5163, 5168, 3, 334, 167, 0, 5164, 5165, 5, 4, 0, 0, 5165, 5167, 3, 334, 167, 0, 5166, 5164, 1, 0, 0, 0, 5167, 5170, 1, 0, 0, 0, 5168, 5166, 1, 0, 0, 0, 5168, 5169, 1, 0, 0, 0, 5169, 333, 1, 0, 0, 0, 5170, 5168, 1, 0, 0, 0, 5171, 5172, 3, 448, 224, 0, 5172, 5174, 3, 422, 211, 0, 5173, 5175, 5, 244, 0, 0, 5174, 5173, 1, 0, 0, 0, 5174, 5175, 1, 0, 0, 0, 5175, 5177, 1, 0, 0, 0, 5176, 5178, 3, 360, 180, 0, 5177, 5176, 1, 0, 0, 0, 5177, 5178, 1, 0, 0, 0, 5178, 5188, 1, 0, 0, 0, 5179, 5180, 5, 193, 0, 0, 5180, 5182, 5, 34, 0, 0, 5181, 5179, 1, 0, 0, 0, 5181, 5182, 1, 0, 0, 0, 5182, 5183, 1, 0, 0, 0, 5183, 5184, 5, 28, 0, 0, 5184, 5185, 5, 2, 0, 0, 5185, 5186, 3, 370, 185, 0, 5186, 5187, 5, 3, 0, 0, 5187, 5189, 1, 0, 0, 0, 5188, 5181, 1, 0, 0, 0, 5188, 5189, 1, 0, 0, 0, 5189, 5194, 1, 0, 0, 0, 5190, 5192, 5, 303, 0, 0, 5191, 5190, 1, 0, 0, 0, 5191, 5192, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5195, 5, 304, 0, 0, 5194, 5191, 1, 0, 0, 0, 5194, 5195, 1, 0, 0, 0, 5195, 5203, 1, 0, 0, 0, 5196, 5201, 5, 33, 0, 0, 5197, 5198, 5, 2, 0, 0, 5198, 5199, 3, 454, 227, 0, 5199, 5200, 5, 3, 0, 0, 5200, 5202, 1, 0, 0, 0, 5201, 5197, 1, 0, 0, 0, 5201, 5202, 1, 0, 0, 0, 5202, 5204, 1, 0, 0, 0, 5203, 5196, 1, 0, 0, 0, 5203, 5204, 1, 0, 0, 0, 5204, 5229, 1, 0, 0, 0, 5205, 5227, 5, 124, 0, 0, 5206, 5228, 5, 304, 0, 0, 5207, 5209, 5, 511, 0, 0, 5208, 5207, 1, 0, 0, 0, 5208, 5209, 1, 0, 0, 0, 5209, 5210, 1, 0, 0, 0, 5210, 5228, 5, 534, 0, 0, 5211, 5213, 5, 511, 0, 0, 5212, 5211, 1, 0, 0, 0, 5212, 5213, 1, 0, 0, 0, 5213, 5214, 1, 0, 0, 0, 5214, 5228, 5, 536, 0, 0, 5215, 5228, 5, 334, 0, 0, 5216, 5228, 5, 148, 0, 0, 5217, 5228, 5, 47, 0, 0, 5218, 5228, 5, 529, 0, 0, 5219, 5228, 5, 106, 0, 0, 5220, 5225, 5, 108, 0, 0, 5221, 5222, 5, 2, 0, 0, 5222, 5223, 3, 454, 227, 0, 5223, 5224, 5, 3, 0, 0, 5224, 5226, 1, 0, 0, 0, 5225, 5221, 1, 0, 0, 0, 5225, 5226, 1, 0, 0, 0, 5226, 5228, 1, 0, 0, 0, 5227, 5206, 1, 0, 0, 0, 5227, 5208, 1, 0, 0, 0, 5227, 5212, 1, 0, 0, 0, 5227, 5215, 1, 0, 0, 0, 5227, 5216, 1, 0, 0, 0, 5227, 5217, 1, 0, 0, 0, 5227, 5218, 1, 0, 0, 0, 5227, 5219, 1, 0, 0, 0, 5227, 5220, 1, 0, 0, 0, 5228, 5230, 1, 0, 0, 0, 5229, 5205, 1, 0, 0, 0, 5229, 5230, 1, 0, 0, 0, 5230, 5240, 1, 0, 0, 0, 5231, 5232, 5, 309, 0, 0, 5232, 5233, 5, 474, 0, 0, 5233, 5238, 5, 108, 0, 0, 5234, 5235, 5, 2, 0, 0, 5235, 5236, 3, 454, 227, 0, 5236, 5237, 5, 3, 0, 0, 5237, 5239, 1, 0, 0, 0, 5238, 5234, 1, 0, 0, 0, 5238, 5239, 1, 0, 0, 0, 5239, 5241, 1, 0, 0, 0, 5240, 5231, 1, 0, 0, 0, 5240, 5241, 1, 0, 0, 0, 5241, 5244, 1, 0, 0, 0, 5242, 5243, 5, 81, 0, 0, 5243, 5245, 5, 529, 0, 0, 5244, 5242, 1, 0, 0, 0, 5244, 5245, 1, 0, 0, 0, 5245, 335, 1, 0, 0, 0, 5246, 5251, 3, 338, 169, 0, 5247, 5248, 5, 4, 0, 0, 5248, 5250, 3, 338, 169, 0, 5249, 5247, 1, 0, 0, 0, 5250, 5253, 1, 0, 0, 0, 5251, 5249, 1, 0, 0, 0, 5251, 5252, 1, 0, 0, 0, 5252, 337, 1, 0, 0, 0, 5253, 5251, 1, 0, 0, 0, 5254, 5258, 5, 219, 0, 0, 5255, 5256, 5, 214, 0, 0, 5256, 5257, 5, 303, 0, 0, 5257, 5259, 5, 164, 0, 0, 5258, 5255, 1, 0, 0, 0, 5258, 5259, 1, 0, 0, 0, 5259, 5260, 1, 0, 0, 0, 5260, 5261, 3, 448, 224, 0, 5261, 5264, 3, 304, 152, 0, 5262, 5263, 5, 478, 0, 0, 5263, 5265, 7, 8, 0, 0, 5264, 5262, 1, 0, 0, 0, 5264, 5265, 1, 0, 0, 0, 5265, 5271, 1, 0, 0, 0, 5266, 5267, 5, 350, 0, 0, 5267, 5268, 5, 2, 0, 0, 5268, 5269, 3, 316, 158, 0, 5269, 5270, 5, 3, 0, 0, 5270, 5272, 1, 0, 0, 0, 5271, 5266, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5275, 1, 0, 0, 0, 5273, 5274, 5, 81, 0, 0, 5274, 5276, 5, 529, 0, 0, 5275, 5273, 1, 0, 0, 0, 5275, 5276, 1, 0, 0, 0, 5276, 339, 1, 0, 0, 0, 5277, 5282, 3, 342, 171, 0, 5278, 5279, 5, 4, 0, 0, 5279, 5281, 3, 342, 171, 0, 5280, 5278, 1, 0, 0, 0, 5281, 5284, 1, 0, 0, 0, 5282, 5280, 1, 0, 0, 0, 5282, 5283, 1, 0, 0, 0, 5283, 341, 1, 0, 0, 0, 5284, 5282, 1, 0, 0, 0, 5285, 5290, 3, 344, 172, 0, 5286, 5290, 3, 346, 173, 0, 5287, 5290, 3, 348, 174, 0, 5288, 5290, 3, 350, 175, 0, 5289, 5285, 1, 0, 0, 0, 5289, 5286, 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5289, 5288, 1, 0, 0, 0, 5290, 5295, 1, 0, 0, 0, 5291, 5292, 5, 2, 0, 0, 5292, 5293, 3, 316, 158, 0, 5293, 5294, 5, 3, 0, 0, 5294, 5296, 1, 0, 0, 0, 5295, 5291, 1, 0, 0, 0, 5295, 5296, 1, 0, 0, 0, 5296, 343, 1, 0, 0, 0, 5297, 5301, 5, 321, 0, 0, 5298, 5299, 5, 214, 0, 0, 5299, 5300, 5, 303, 0, 0, 5300, 5302, 5, 164, 0, 0, 5301, 5298, 1, 0, 0, 0, 5301, 5302, 1, 0, 0, 0, 5302, 5303, 1, 0, 0, 0, 5303, 5304, 3, 448, 224, 0, 5304, 5305, 5, 480, 0, 0, 5305, 5306, 5, 254, 0, 0, 5306, 5309, 5, 449, 0, 0, 5307, 5310, 5, 282, 0, 0, 5308, 5310, 3, 352, 176, 0, 5309, 5307, 1, 0, 0, 0, 5309, 5308, 1, 0, 0, 0, 5310, 345, 1, 0, 0, 0, 5311, 5315, 5, 321, 0, 0, 5312, 5313, 5, 214, 0, 0, 5313, 5314, 5, 303, 0, 0, 5314, 5316, 5, 164, 0, 0, 5315, 5312, 1, 0, 0, 0, 5315, 5316, 1, 0, 0, 0, 5316, 5317, 1, 0, 0, 0, 5317, 5318, 3, 448, 224, 0, 5318, 5319, 5, 480, 0, 0, 5319, 5320, 5, 7, 0, 0, 5320, 5321, 3, 352, 176, 0, 5321, 5322, 5, 4, 0, 0, 5322, 5323, 3, 352, 176, 0, 5323, 5324, 5, 3, 0, 0, 5324, 347, 1, 0, 0, 0, 5325, 5326, 5, 187, 0, 0, 5326, 5327, 3, 352, 176, 0, 5327, 5328, 5, 454, 0, 0, 5328, 5329, 3, 352, 176, 0, 5329, 5330, 5, 229, 0, 0, 5330, 5332, 5, 534, 0, 0, 5331, 5333, 3, 418, 209, 0, 5332, 5331, 1, 0, 0, 0, 5332, 5333, 1, 0, 0, 0, 5333, 349, 1, 0, 0, 0, 5334, 5338, 5, 321, 0, 0, 5335, 5336, 5, 214, 0, 0, 5336, 5337, 5, 303, 0, 0, 5337, 5339, 5, 164, 0, 0, 5338, 5335, 1, 0, 0, 0, 5338, 5339, 1, 0, 0, 0, 5339, 5340, 1, 0, 0, 0, 5340, 5357, 3, 448, 224, 0, 5341, 5342, 5, 480, 0, 0, 5342, 5355, 5, 217, 0, 0, 5343, 5344, 5, 2, 0, 0, 5344, 5349, 3, 352, 176, 0, 5345, 5346, 5, 4, 0, 0, 5346, 5348, 3, 352, 176, 0, 5347, 5345, 1, 0, 0, 0, 5348, 5351, 1, 0, 0, 0, 5349, 5347, 1, 0, 0, 0, 5349, 5350, 1, 0, 0, 0, 5350, 5352, 1, 0, 0, 0, 5351, 5349, 1, 0, 0, 0, 5352, 5353, 5, 3, 0, 0, 5353, 5356, 1, 0, 0, 0, 5354, 5356, 3, 352, 176, 0, 5355, 5343, 1, 0, 0, 0, 5355, 5354, 1, 0, 0, 0, 5356, 5358, 1, 0, 0, 0, 5357, 5341, 1, 0, 0, 0, 5357, 5358, 1, 0, 0, 0, 5358, 351, 1, 0, 0, 0, 5359, 5360, 5, 2, 0, 0, 5360, 5365, 3, 354, 177, 0, 5361, 5362, 5, 4, 0, 0, 5362, 5364, 3, 354, 177, 0, 5363, 5361, 1, 0, 0, 0, 5364, 5367, 1, 0, 0, 0, 5365, 5363, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5368, 1, 0, 0, 0, 5367, 5365, 1, 0, 0, 0, 5368, 5369, 5, 3, 0, 0, 5369, 353, 1, 0, 0, 0, 5370, 5372, 5, 511, 0, 0, 5371, 5370, 1, 0, 0, 0, 5371, 5372, 1, 0, 0, 0, 5372, 5373, 1, 0, 0, 0, 5373, 5378, 5, 534, 0, 0, 5374, 5378, 5, 529, 0, 0, 5375, 5378, 5, 282, 0, 0, 5376, 5378, 5, 304, 0, 0, 5377, 5371, 1, 0, 0, 0, 5377, 5374, 1, 0, 0, 0, 5377, 5375, 1, 0, 0, 0, 5377, 5376, 1, 0, 0, 0, 5378, 355, 1, 0, 0, 0, 5379, 5384, 3, 358, 179, 0, 5380, 5381, 5, 4, 0, 0, 5381, 5383, 3, 358, 179, 0, 5382, 5380, 1, 0, 0, 0, 5383, 5386, 1, 0, 0, 0, 5384, 5382, 1, 0, 0, 0, 5384, 5385, 1, 0, 0, 0, 5385, 357, 1, 0, 0, 0, 5386, 5384, 1, 0, 0, 0, 5387, 5388, 3, 448, 224, 0, 5388, 5392, 3, 304, 152, 0, 5389, 5390, 5, 146, 0, 0, 5390, 5391, 5, 244, 0, 0, 5391, 5393, 3, 304, 152, 0, 5392, 5389, 1, 0, 0, 0, 5392, 5393, 1, 0, 0, 0, 5393, 5395, 1, 0, 0, 0, 5394, 5396, 3, 314, 157, 0, 5395, 5394, 1, 0, 0, 0, 5395, 5396, 1, 0, 0, 0, 5396, 359, 1, 0, 0, 0, 5397, 5398, 7, 39, 0, 0, 5398, 361, 1, 0, 0, 0, 5399, 5400, 5, 442, 0, 0, 5400, 5401, 5, 2, 0, 0, 5401, 5406, 5, 534, 0, 0, 5402, 5403, 5, 4, 0, 0, 5403, 5405, 5, 534, 0, 0, 5404, 5402, 1, 0, 0, 0, 5405, 5408, 1, 0, 0, 0, 5406, 5404, 1, 0, 0, 0, 5406, 5407, 1, 0, 0, 0, 5407, 5409, 1, 0, 0, 0, 5408, 5406, 1, 0, 0, 0, 5409, 5410, 5, 3, 0, 0, 5410, 363, 1, 0, 0, 0, 5411, 5412, 5, 480, 0, 0, 5412, 5417, 3, 376, 188, 0, 5413, 5414, 5, 4, 0, 0, 5414, 5416, 3, 376, 188, 0, 5415, 5413, 1, 0, 0, 0, 5416, 5419, 1, 0, 0, 0, 5417, 5415, 1, 0, 0, 0, 5417, 5418, 1, 0, 0, 0, 5418, 365, 1, 0, 0, 0, 5419, 5417, 1, 0, 0, 0, 5420, 5425, 3, 370, 185, 0, 5421, 5423, 5, 28, 0, 0, 5422, 5421, 1, 0, 0, 0, 5422, 5423, 1, 0, 0, 0, 5423, 5424, 1, 0, 0, 0, 5424, 5426, 3, 182, 91, 0, 5425, 5422, 1, 0, 0, 0, 5425, 5426, 1, 0, 0, 0, 5426, 367, 1, 0, 0, 0, 5427, 5432, 3, 366, 183, 0, 5428, 5429, 5, 4, 0, 0, 5429, 5431, 3, 366, 183, 0, 5430, 5428, 1, 0, 0, 0, 5431, 5434, 1, 0, 0, 0, 5432, 5430, 1, 0, 0, 0, 5432, 5433, 1, 0, 0, 0, 5433, 369, 1, 0, 0, 0, 5434, 5432, 1, 0, 0, 0, 5435, 5438, 3, 374, 187, 0, 5436, 5438, 3, 372, 186, 0, 5437, 5435, 1, 0, 0, 0, 5437, 5436, 1, 0, 0, 0, 5438, 371, 1, 0, 0, 0, 5439, 5440, 3, 444, 222, 0, 5440, 5441, 5, 523, 0, 0, 5441, 5442, 3, 374, 187, 0, 5442, 5456, 1, 0, 0, 0, 5443, 5444, 5, 2, 0, 0, 5444, 5447, 3, 444, 222, 0, 5445, 5446, 5, 4, 0, 0, 5446, 5448, 3, 444, 222, 0, 5447, 5445, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, 5447, 1, 0, 0, 0, 5449, 5450, 1, 0, 0, 0, 5450, 5451, 1, 0, 0, 0, 5451, 5452, 5, 3, 0, 0, 5452, 5453, 5, 523, 0, 0, 5453, 5454, 3, 374, 187, 0, 5454, 5456, 1, 0, 0, 0, 5455, 5439, 1, 0, 0, 0, 5455, 5443, 1, 0, 0, 0, 5456, 373, 1, 0, 0, 0, 5457, 5458, 6, 187, -1, 0, 5458, 5459, 5, 518, 0, 0, 5459, 5482, 3, 374, 187, 10, 5460, 5461, 5, 164, 0, 0, 5461, 5462, 5, 2, 0, 0, 5462, 5463, 3, 228, 114, 0, 5463, 5464, 5, 3, 0, 0, 5464, 5482, 1, 0, 0, 0, 5465, 5466, 7, 40, 0, 0, 5466, 5467, 5, 2, 0, 0, 5467, 5468, 3, 382, 191, 0, 5468, 5469, 5, 3, 0, 0, 5469, 5482, 1, 0, 0, 0, 5470, 5471, 5, 235, 0, 0, 5471, 5472, 5, 2, 0, 0, 5472, 5473, 3, 382, 191, 0, 5473, 5474, 5, 3, 0, 0, 5474, 5482, 1, 0, 0, 0, 5475, 5477, 3, 382, 191, 0, 5476, 5478, 3, 380, 190, 0, 5477, 5476, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 5482, 1, 0, 0, 0, 5479, 5480, 5, 303, 0, 0, 5480, 5482, 3, 374, 187, 5, 5481, 5457, 1, 0, 0, 0, 5481, 5460, 1, 0, 0, 0, 5481, 5465, 1, 0, 0, 0, 5481, 5470, 1, 0, 0, 0, 5481, 5475, 1, 0, 0, 0, 5481, 5479, 1, 0, 0, 0, 5482, 5497, 1, 0, 0, 0, 5483, 5484, 10, 4, 0, 0, 5484, 5485, 7, 41, 0, 0, 5485, 5496, 3, 374, 187, 5, 5486, 5487, 10, 3, 0, 0, 5487, 5488, 5, 501, 0, 0, 5488, 5496, 3, 374, 187, 4, 5489, 5490, 10, 2, 0, 0, 5490, 5491, 5, 313, 0, 0, 5491, 5496, 3, 374, 187, 3, 5492, 5493, 10, 1, 0, 0, 5493, 5494, 5, 520, 0, 0, 5494, 5496, 3, 374, 187, 2, 5495, 5483, 1, 0, 0, 0, 5495, 5486, 1, 0, 0, 0, 5495, 5489, 1, 0, 0, 0, 5495, 5492, 1, 0, 0, 0, 5496, 5499, 1, 0, 0, 0, 5497, 5495, 1, 0, 0, 0, 5497, 5498, 1, 0, 0, 0, 5498, 375, 1, 0, 0, 0, 5499, 5497, 1, 0, 0, 0, 5500, 5509, 5, 2, 0, 0, 5501, 5506, 3, 378, 189, 0, 5502, 5503, 5, 4, 0, 0, 5503, 5505, 3, 378, 189, 0, 5504, 5502, 1, 0, 0, 0, 5505, 5508, 1, 0, 0, 0, 5506, 5504, 1, 0, 0, 0, 5506, 5507, 1, 0, 0, 0, 5507, 5510, 1, 0, 0, 0, 5508, 5506, 1, 0, 0, 0, 5509, 5501, 1, 0, 0, 0, 5509, 5510, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5512, 5, 3, 0, 0, 5512, 377, 1, 0, 0, 0, 5513, 5517, 3, 408, 204, 0, 5514, 5517, 5, 124, 0, 0, 5515, 5517, 3, 366, 183, 0, 5516, 5513, 1, 0, 0, 0, 5516, 5514, 1, 0, 0, 0, 5516, 5515, 1, 0, 0, 0, 5517, 379, 1, 0, 0, 0, 5518, 5520, 5, 303, 0, 0, 5519, 5518, 1, 0, 0, 0, 5519, 5520, 1, 0, 0, 0, 5520, 5521, 1, 0, 0, 0, 5521, 5522, 5, 40, 0, 0, 5522, 5523, 3, 382, 191, 0, 5523, 5524, 5, 24, 0, 0, 5524, 5525, 3, 382, 191, 0, 5525, 5570, 1, 0, 0, 0, 5526, 5528, 5, 303, 0, 0, 5527, 5526, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5529, 1, 0, 0, 0, 5529, 5530, 7, 42, 0, 0, 5530, 5570, 3, 382, 191, 0, 5531, 5533, 5, 303, 0, 0, 5532, 5531, 1, 0, 0, 0, 5532, 5533, 1, 0, 0, 0, 5533, 5534, 1, 0, 0, 0, 5534, 5535, 7, 43, 0, 0, 5535, 5570, 3, 382, 191, 0, 5536, 5538, 5, 303, 0, 0, 5537, 5536, 1, 0, 0, 0, 5537, 5538, 1, 0, 0, 0, 5538, 5539, 1, 0, 0, 0, 5539, 5540, 5, 217, 0, 0, 5540, 5541, 5, 2, 0, 0, 5541, 5542, 3, 228, 114, 0, 5542, 5543, 5, 3, 0, 0, 5543, 5570, 1, 0, 0, 0, 5544, 5546, 5, 303, 0, 0, 5545, 5544, 1, 0, 0, 0, 5545, 5546, 1, 0, 0, 0, 5546, 5547, 1, 0, 0, 0, 5547, 5548, 5, 217, 0, 0, 5548, 5549, 5, 2, 0, 0, 5549, 5554, 3, 370, 185, 0, 5550, 5551, 5, 4, 0, 0, 5551, 5553, 3, 370, 185, 0, 5552, 5550, 1, 0, 0, 0, 5553, 5556, 1, 0, 0, 0, 5554, 5552, 1, 0, 0, 0, 5554, 5555, 1, 0, 0, 0, 5555, 5557, 1, 0, 0, 0, 5556, 5554, 1, 0, 0, 0, 5557, 5558, 5, 3, 0, 0, 5558, 5570, 1, 0, 0, 0, 5559, 5561, 5, 234, 0, 0, 5560, 5562, 5, 303, 0, 0, 5561, 5560, 1, 0, 0, 0, 5561, 5562, 1, 0, 0, 0, 5562, 5563, 1, 0, 0, 0, 5563, 5570, 5, 304, 0, 0, 5564, 5566, 5, 234, 0, 0, 5565, 5567, 5, 303, 0, 0, 5566, 5565, 1, 0, 0, 0, 5566, 5567, 1, 0, 0, 0, 5567, 5568, 1, 0, 0, 0, 5568, 5570, 7, 44, 0, 0, 5569, 5519, 1, 0, 0, 0, 5569, 5527, 1, 0, 0, 0, 5569, 5532, 1, 0, 0, 0, 5569, 5537, 1, 0, 0, 0, 5569, 5545, 1, 0, 0, 0, 5569, 5559, 1, 0, 0, 0, 5569, 5564, 1, 0, 0, 0, 5570, 381, 1, 0, 0, 0, 5571, 5572, 6, 191, -1, 0, 5572, 5576, 3, 384, 192, 0, 5573, 5574, 7, 45, 0, 0, 5574, 5576, 3, 382, 191, 7, 5575, 5571, 1, 0, 0, 0, 5575, 5573, 1, 0, 0, 0, 5576, 5598, 1, 0, 0, 0, 5577, 5578, 10, 6, 0, 0, 5578, 5579, 5, 521, 0, 0, 5579, 5597, 3, 382, 191, 7, 5580, 5581, 10, 5, 0, 0, 5581, 5582, 7, 46, 0, 0, 5582, 5597, 3, 382, 191, 6, 5583, 5584, 10, 4, 0, 0, 5584, 5585, 7, 47, 0, 0, 5585, 5597, 3, 382, 191, 5, 5586, 5587, 10, 3, 0, 0, 5587, 5588, 5, 516, 0, 0, 5588, 5597, 3, 382, 191, 4, 5589, 5590, 10, 2, 0, 0, 5590, 5591, 5, 519, 0, 0, 5591, 5597, 3, 382, 191, 3, 5592, 5593, 10, 1, 0, 0, 5593, 5594, 3, 410, 205, 0, 5594, 5595, 3, 382, 191, 2, 5595, 5597, 1, 0, 0, 0, 5596, 5577, 1, 0, 0, 0, 5596, 5580, 1, 0, 0, 0, 5596, 5583, 1, 0, 0, 0, 5596, 5586, 1, 0, 0, 0, 5596, 5589, 1, 0, 0, 0, 5596, 5592, 1, 0, 0, 0, 5597, 5600, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5598, 5599, 1, 0, 0, 0, 5599, 383, 1, 0, 0, 0, 5600, 5598, 1, 0, 0, 0, 5601, 5602, 6, 192, -1, 0, 5602, 5728, 5, 106, 0, 0, 5603, 5728, 5, 107, 0, 0, 5604, 5728, 5, 108, 0, 0, 5605, 5728, 5, 263, 0, 0, 5606, 5728, 5, 264, 0, 0, 5607, 5728, 5, 109, 0, 0, 5608, 5728, 5, 408, 0, 0, 5609, 5611, 5, 64, 0, 0, 5610, 5612, 3, 414, 207, 0, 5611, 5610, 1, 0, 0, 0, 5612, 5613, 1, 0, 0, 0, 5613, 5611, 1, 0, 0, 0, 5613, 5614, 1, 0, 0, 0, 5614, 5617, 1, 0, 0, 0, 5615, 5616, 5, 149, 0, 0, 5616, 5618, 3, 370, 185, 0, 5617, 5615, 1, 0, 0, 0, 5617, 5618, 1, 0, 0, 0, 5618, 5619, 1, 0, 0, 0, 5619, 5620, 5, 153, 0, 0, 5620, 5728, 1, 0, 0, 0, 5621, 5622, 5, 64, 0, 0, 5622, 5624, 3, 370, 185, 0, 5623, 5625, 3, 414, 207, 0, 5624, 5623, 1, 0, 0, 0, 5625, 5626, 1, 0, 0, 0, 5626, 5624, 1, 0, 0, 0, 5626, 5627, 1, 0, 0, 0, 5627, 5630, 1, 0, 0, 0, 5628, 5629, 5, 149, 0, 0, 5629, 5631, 3, 370, 185, 0, 5630, 5628, 1, 0, 0, 0, 5630, 5631, 1, 0, 0, 0, 5631, 5632, 1, 0, 0, 0, 5632, 5633, 5, 153, 0, 0, 5633, 5728, 1, 0, 0, 0, 5634, 5635, 5, 65, 0, 0, 5635, 5636, 5, 2, 0, 0, 5636, 5637, 3, 370, 185, 0, 5637, 5638, 5, 28, 0, 0, 5638, 5639, 3, 388, 194, 0, 5639, 5640, 5, 3, 0, 0, 5640, 5728, 1, 0, 0, 0, 5641, 5728, 3, 408, 204, 0, 5642, 5728, 3, 416, 208, 0, 5643, 5647, 5, 512, 0, 0, 5644, 5646, 3, 386, 193, 0, 5645, 5644, 1, 0, 0, 0, 5646, 5649, 1, 0, 0, 0, 5647, 5645, 1, 0, 0, 0, 5647, 5648, 1, 0, 0, 0, 5648, 5728, 1, 0, 0, 0, 5649, 5647, 1, 0, 0, 0, 5650, 5651, 3, 404, 202, 0, 5651, 5652, 5, 5, 0, 0, 5652, 5656, 5, 512, 0, 0, 5653, 5655, 3, 386, 193, 0, 5654, 5653, 1, 0, 0, 0, 5655, 5658, 1, 0, 0, 0, 5656, 5654, 1, 0, 0, 0, 5656, 5657, 1, 0, 0, 0, 5657, 5728, 1, 0, 0, 0, 5658, 5656, 1, 0, 0, 0, 5659, 5660, 5, 69, 0, 0, 5660, 5661, 5, 2, 0, 0, 5661, 5666, 3, 370, 185, 0, 5662, 5663, 5, 4, 0, 0, 5663, 5665, 3, 370, 185, 0, 5664, 5662, 1, 0, 0, 0, 5665, 5668, 1, 0, 0, 0, 5666, 5664, 1, 0, 0, 0, 5666, 5667, 1, 0, 0, 0, 5667, 5671, 1, 0, 0, 0, 5668, 5666, 1, 0, 0, 0, 5669, 5670, 5, 478, 0, 0, 5670, 5672, 3, 182, 91, 0, 5671, 5669, 1, 0, 0, 0, 5671, 5672, 1, 0, 0, 0, 5672, 5673, 1, 0, 0, 0, 5673, 5674, 5, 3, 0, 0, 5674, 5728, 1, 0, 0, 0, 5675, 5676, 5, 95, 0, 0, 5676, 5677, 5, 2, 0, 0, 5677, 5678, 3, 370, 185, 0, 5678, 5679, 5, 478, 0, 0, 5679, 5680, 3, 182, 91, 0, 5680, 5681, 5, 3, 0, 0, 5681, 5728, 1, 0, 0, 0, 5682, 5683, 5, 95, 0, 0, 5683, 5684, 5, 2, 0, 0, 5684, 5685, 3, 370, 185, 0, 5685, 5686, 5, 4, 0, 0, 5686, 5687, 3, 388, 194, 0, 5687, 5688, 5, 3, 0, 0, 5688, 5728, 1, 0, 0, 0, 5689, 5728, 3, 390, 195, 0, 5690, 5691, 5, 2, 0, 0, 5691, 5692, 3, 228, 114, 0, 5692, 5693, 5, 3, 0, 0, 5693, 5728, 1, 0, 0, 0, 5694, 5695, 5, 527, 0, 0, 5695, 5728, 3, 182, 91, 0, 5696, 5699, 5, 528, 0, 0, 5697, 5698, 7, 48, 0, 0, 5698, 5700, 5, 5, 0, 0, 5699, 5697, 1, 0, 0, 0, 5699, 5700, 1, 0, 0, 0, 5700, 5701, 1, 0, 0, 0, 5701, 5728, 3, 448, 224, 0, 5702, 5704, 5, 43, 0, 0, 5703, 5702, 1, 0, 0, 0, 5703, 5704, 1, 0, 0, 0, 5704, 5705, 1, 0, 0, 0, 5705, 5728, 3, 448, 224, 0, 5706, 5707, 5, 2, 0, 0, 5707, 5708, 3, 370, 185, 0, 5708, 5709, 5, 3, 0, 0, 5709, 5728, 1, 0, 0, 0, 5710, 5714, 5, 244, 0, 0, 5711, 5712, 3, 448, 224, 0, 5712, 5713, 5, 5, 0, 0, 5713, 5715, 1, 0, 0, 0, 5714, 5711, 1, 0, 0, 0, 5714, 5715, 1, 0, 0, 0, 5715, 5716, 1, 0, 0, 0, 5716, 5728, 3, 448, 224, 0, 5717, 5718, 5, 170, 0, 0, 5718, 5719, 5, 2, 0, 0, 5719, 5720, 3, 448, 224, 0, 5720, 5722, 5, 187, 0, 0, 5721, 5723, 7, 49, 0, 0, 5722, 5721, 1, 0, 0, 0, 5722, 5723, 1, 0, 0, 0, 5723, 5724, 1, 0, 0, 0, 5724, 5725, 3, 382, 191, 0, 5725, 5726, 5, 3, 0, 0, 5726, 5728, 1, 0, 0, 0, 5727, 5601, 1, 0, 0, 0, 5727, 5603, 1, 0, 0, 0, 5727, 5604, 1, 0, 0, 0, 5727, 5605, 1, 0, 0, 0, 5727, 5606, 1, 0, 0, 0, 5727, 5607, 1, 0, 0, 0, 5727, 5608, 1, 0, 0, 0, 5727, 5609, 1, 0, 0, 0, 5727, 5621, 1, 0, 0, 0, 5727, 5634, 1, 0, 0, 0, 5727, 5641, 1, 0, 0, 0, 5727, 5642, 1, 0, 0, 0, 5727, 5643, 1, 0, 0, 0, 5727, 5650, 1, 0, 0, 0, 5727, 5659, 1, 0, 0, 0, 5727, 5675, 1, 0, 0, 0, 5727, 5682, 1, 0, 0, 0, 5727, 5689, 1, 0, 0, 0, 5727, 5690, 1, 0, 0, 0, 5727, 5694, 1, 0, 0, 0, 5727, 5696, 1, 0, 0, 0, 5727, 5703, 1, 0, 0, 0, 5727, 5706, 1, 0, 0, 0, 5727, 5710, 1, 0, 0, 0, 5727, 5717, 1, 0, 0, 0, 5728, 5755, 1, 0, 0, 0, 5729, 5730, 10, 11, 0, 0, 5730, 5731, 5, 7, 0, 0, 5731, 5732, 3, 382, 191, 0, 5732, 5733, 5, 8, 0, 0, 5733, 5754, 1, 0, 0, 0, 5734, 5735, 10, 10, 0, 0, 5735, 5736, 5, 7, 0, 0, 5736, 5737, 3, 382, 191, 0, 5737, 5739, 5, 522, 0, 0, 5738, 5740, 3, 382, 191, 0, 5739, 5738, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 5741, 1, 0, 0, 0, 5741, 5742, 5, 8, 0, 0, 5742, 5754, 1, 0, 0, 0, 5743, 5744, 10, 5, 0, 0, 5744, 5745, 5, 5, 0, 0, 5745, 5754, 3, 448, 224, 0, 5746, 5747, 10, 1, 0, 0, 5747, 5751, 5, 75, 0, 0, 5748, 5752, 3, 448, 224, 0, 5749, 5752, 5, 529, 0, 0, 5750, 5752, 5, 124, 0, 0, 5751, 5748, 1, 0, 0, 0, 5751, 5749, 1, 0, 0, 0, 5751, 5750, 1, 0, 0, 0, 5752, 5754, 1, 0, 0, 0, 5753, 5729, 1, 0, 0, 0, 5753, 5734, 1, 0, 0, 0, 5753, 5743, 1, 0, 0, 0, 5753, 5746, 1, 0, 0, 0, 5754, 5757, 1, 0, 0, 0, 5755, 5753, 1, 0, 0, 0, 5755, 5756, 1, 0, 0, 0, 5756, 385, 1, 0, 0, 0, 5757, 5755, 1, 0, 0, 0, 5758, 5759, 5, 161, 0, 0, 5759, 5760, 5, 2, 0, 0, 5760, 5761, 3, 368, 184, 0, 5761, 5762, 5, 3, 0, 0, 5762, 5769, 1, 0, 0, 0, 5763, 5764, 5, 374, 0, 0, 5764, 5765, 5, 2, 0, 0, 5765, 5766, 3, 368, 184, 0, 5766, 5767, 5, 3, 0, 0, 5767, 5769, 1, 0, 0, 0, 5768, 5758, 1, 0, 0, 0, 5768, 5763, 1, 0, 0, 0, 5769, 387, 1, 0, 0, 0, 5770, 5776, 3, 422, 211, 0, 5771, 5773, 7, 50, 0, 0, 5772, 5774, 7, 51, 0, 0, 5773, 5772, 1, 0, 0, 0, 5773, 5774, 1, 0, 0, 0, 5774, 5776, 1, 0, 0, 0, 5775, 5770, 1, 0, 0, 0, 5775, 5771, 1, 0, 0, 0, 5776, 389, 1, 0, 0, 0, 5777, 5778, 3, 392, 196, 0, 5778, 5802, 5, 2, 0, 0, 5779, 5781, 7, 35, 0, 0, 5780, 5779, 1, 0, 0, 0, 5780, 5781, 1, 0, 0, 0, 5781, 5782, 1, 0, 0, 0, 5782, 5787, 3, 370, 185, 0, 5783, 5784, 5, 4, 0, 0, 5784, 5786, 3, 370, 185, 0, 5785, 5783, 1, 0, 0, 0, 5786, 5789, 1, 0, 0, 0, 5787, 5785, 1, 0, 0, 0, 5787, 5788, 1, 0, 0, 0, 5788, 5800, 1, 0, 0, 0, 5789, 5787, 1, 0, 0, 0, 5790, 5791, 5, 314, 0, 0, 5791, 5792, 5, 59, 0, 0, 5792, 5797, 3, 294, 147, 0, 5793, 5794, 5, 4, 0, 0, 5794, 5796, 3, 294, 147, 0, 5795, 5793, 1, 0, 0, 0, 5796, 5799, 1, 0, 0, 0, 5797, 5795, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 5801, 1, 0, 0, 0, 5799, 5797, 1, 0, 0, 0, 5800, 5790, 1, 0, 0, 0, 5800, 5801, 1, 0, 0, 0, 5801, 5803, 1, 0, 0, 0, 5802, 5780, 1, 0, 0, 0, 5802, 5803, 1, 0, 0, 0, 5803, 5804, 1, 0, 0, 0, 5804, 5807, 5, 3, 0, 0, 5805, 5806, 5, 317, 0, 0, 5806, 5808, 3, 396, 198, 0, 5807, 5805, 1, 0, 0, 0, 5807, 5808, 1, 0, 0, 0, 5808, 391, 1, 0, 0, 0, 5809, 5810, 3, 448, 224, 0, 5810, 5811, 5, 5, 0, 0, 5811, 5813, 1, 0, 0, 0, 5812, 5809, 1, 0, 0, 0, 5812, 5813, 1, 0, 0, 0, 5813, 5814, 1, 0, 0, 0, 5814, 5815, 3, 394, 197, 0, 5815, 393, 1, 0, 0, 0, 5816, 5833, 3, 448, 224, 0, 5817, 5833, 5, 14, 0, 0, 5818, 5833, 5, 91, 0, 0, 5819, 5833, 5, 105, 0, 0, 5820, 5833, 5, 109, 0, 0, 5821, 5833, 5, 111, 0, 0, 5822, 5833, 5, 214, 0, 0, 5823, 5833, 5, 253, 0, 0, 5824, 5833, 5, 256, 0, 0, 5825, 5833, 5, 323, 0, 0, 5826, 5833, 5, 369, 0, 0, 5827, 5833, 5, 388, 0, 0, 5828, 5833, 5, 401, 0, 0, 5829, 5833, 5, 408, 0, 0, 5830, 5833, 5, 459, 0, 0, 5831, 5833, 5, 476, 0, 0, 5832, 5816, 1, 0, 0, 0, 5832, 5817, 1, 0, 0, 0, 5832, 5818, 1, 0, 0, 0, 5832, 5819, 1, 0, 0, 0, 5832, 5820, 1, 0, 0, 0, 5832, 5821, 1, 0, 0, 0, 5832, 5822, 1, 0, 0, 0, 5832, 5823, 1, 0, 0, 0, 5832, 5824, 1, 0, 0, 0, 5832, 5825, 1, 0, 0, 0, 5832, 5826, 1, 0, 0, 0, 5832, 5827, 1, 0, 0, 0, 5832, 5828, 1, 0, 0, 0, 5832, 5829, 1, 0, 0, 0, 5832, 5830, 1, 0, 0, 0, 5832, 5831, 1, 0, 0, 0, 5833, 395, 1, 0, 0, 0, 5834, 5836, 5, 2, 0, 0, 5835, 5837, 3, 298, 149, 0, 5836, 5835, 1, 0, 0, 0, 5836, 5837, 1, 0, 0, 0, 5837, 5839, 1, 0, 0, 0, 5838, 5840, 3, 292, 146, 0, 5839, 5838, 1, 0, 0, 0, 5839, 5840, 1, 0, 0, 0, 5840, 5842, 1, 0, 0, 0, 5841, 5843, 3, 398, 199, 0, 5842, 5841, 1, 0, 0, 0, 5842, 5843, 1, 0, 0, 0, 5843, 5844, 1, 0, 0, 0, 5844, 5845, 5, 3, 0, 0, 5845, 397, 1, 0, 0, 0, 5846, 5847, 3, 400, 200, 0, 5847, 5848, 3, 402, 201, 0, 5848, 5856, 1, 0, 0, 0, 5849, 5850, 3, 400, 200, 0, 5850, 5851, 5, 40, 0, 0, 5851, 5852, 3, 402, 201, 0, 5852, 5853, 5, 24, 0, 0, 5853, 5854, 3, 402, 201, 0, 5854, 5856, 1, 0, 0, 0, 5855, 5846, 1, 0, 0, 0, 5855, 5849, 1, 0, 0, 0, 5856, 399, 1, 0, 0, 0, 5857, 5858, 7, 52, 0, 0, 5858, 401, 1, 0, 0, 0, 5859, 5860, 5, 465, 0, 0, 5860, 5867, 7, 53, 0, 0, 5861, 5862, 5, 104, 0, 0, 5862, 5867, 5, 395, 0, 0, 5863, 5864, 3, 370, 185, 0, 5864, 5865, 7, 53, 0, 0, 5865, 5867, 1, 0, 0, 0, 5866, 5859, 1, 0, 0, 0, 5866, 5861, 1, 0, 0, 0, 5866, 5863, 1, 0, 0, 0, 5867, 403, 1, 0, 0, 0, 5868, 5873, 3, 448, 224, 0, 5869, 5870, 5, 5, 0, 0, 5870, 5872, 3, 448, 224, 0, 5871, 5869, 1, 0, 0, 0, 5872, 5875, 1, 0, 0, 0, 5873, 5871, 1, 0, 0, 0, 5873, 5874, 1, 0, 0, 0, 5874, 405, 1, 0, 0, 0, 5875, 5873, 1, 0, 0, 0, 5876, 5878, 5, 446, 0, 0, 5877, 5876, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 5879, 1, 0, 0, 0, 5879, 5882, 5, 321, 0, 0, 5880, 5883, 3, 448, 224, 0, 5881, 5883, 3, 304, 152, 0, 5882, 5880, 1, 0, 0, 0, 5882, 5881, 1, 0, 0, 0, 5883, 5890, 1, 0, 0, 0, 5884, 5886, 5, 446, 0, 0, 5885, 5884, 1, 0, 0, 0, 5885, 5886, 1, 0, 0, 0, 5886, 5887, 1, 0, 0, 0, 5887, 5888, 5, 322, 0, 0, 5888, 5890, 3, 304, 152, 0, 5889, 5877, 1, 0, 0, 0, 5889, 5885, 1, 0, 0, 0, 5890, 407, 1, 0, 0, 0, 5891, 5943, 5, 304, 0, 0, 5892, 5893, 7, 54, 0, 0, 5893, 5943, 5, 529, 0, 0, 5894, 5943, 3, 454, 227, 0, 5895, 5943, 3, 412, 206, 0, 5896, 5898, 5, 43, 0, 0, 5897, 5896, 1, 0, 0, 0, 5897, 5898, 1, 0, 0, 0, 5898, 5899, 1, 0, 0, 0, 5899, 5943, 5, 529, 0, 0, 5900, 5902, 5, 7, 0, 0, 5901, 5903, 3, 408, 204, 0, 5902, 5901, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, 5903, 5908, 1, 0, 0, 0, 5904, 5905, 5, 4, 0, 0, 5905, 5907, 3, 408, 204, 0, 5906, 5904, 1, 0, 0, 0, 5907, 5910, 1, 0, 0, 0, 5908, 5906, 1, 0, 0, 0, 5908, 5909, 1, 0, 0, 0, 5909, 5911, 1, 0, 0, 0, 5910, 5908, 1, 0, 0, 0, 5911, 5943, 5, 8, 0, 0, 5912, 5917, 5, 9, 0, 0, 5913, 5914, 3, 408, 204, 0, 5914, 5915, 5, 522, 0, 0, 5915, 5916, 3, 408, 204, 0, 5916, 5918, 1, 0, 0, 0, 5917, 5913, 1, 0, 0, 0, 5917, 5918, 1, 0, 0, 0, 5918, 5926, 1, 0, 0, 0, 5919, 5920, 5, 4, 0, 0, 5920, 5921, 3, 408, 204, 0, 5921, 5922, 5, 522, 0, 0, 5922, 5923, 3, 408, 204, 0, 5923, 5925, 1, 0, 0, 0, 5924, 5919, 1, 0, 0, 0, 5925, 5928, 1, 0, 0, 0, 5926, 5924, 1, 0, 0, 0, 5926, 5927, 1, 0, 0, 0, 5927, 5929, 1, 0, 0, 0, 5928, 5926, 1, 0, 0, 0, 5929, 5943, 5, 10, 0, 0, 5930, 5931, 5, 9, 0, 0, 5931, 5936, 3, 408, 204, 0, 5932, 5933, 5, 4, 0, 0, 5933, 5935, 3, 408, 204, 0, 5934, 5932, 1, 0, 0, 0, 5935, 5938, 1, 0, 0, 0, 5936, 5934, 1, 0, 0, 0, 5936, 5937, 1, 0, 0, 0, 5937, 5939, 1, 0, 0, 0, 5938, 5936, 1, 0, 0, 0, 5939, 5940, 5, 10, 0, 0, 5940, 5943, 1, 0, 0, 0, 5941, 5943, 5, 335, 0, 0, 5942, 5891, 1, 0, 0, 0, 5942, 5892, 1, 0, 0, 0, 5942, 5894, 1, 0, 0, 0, 5942, 5895, 1, 0, 0, 0, 5942, 5897, 1, 0, 0, 0, 5942, 5900, 1, 0, 0, 0, 5942, 5912, 1, 0, 0, 0, 5942, 5930, 1, 0, 0, 0, 5942, 5941, 1, 0, 0, 0, 5943, 409, 1, 0, 0, 0, 5944, 5945, 7, 55, 0, 0, 5945, 411, 1, 0, 0, 0, 5946, 5947, 7, 44, 0, 0, 5947, 413, 1, 0, 0, 0, 5948, 5949, 5, 494, 0, 0, 5949, 5950, 3, 370, 185, 0, 5950, 5951, 5, 450, 0, 0, 5951, 5952, 3, 370, 185, 0, 5952, 415, 1, 0, 0, 0, 5953, 5954, 5, 229, 0, 0, 5954, 5955, 3, 370, 185, 0, 5955, 5956, 3, 418, 209, 0, 5956, 417, 1, 0, 0, 0, 5957, 5958, 7, 56, 0, 0, 5958, 419, 1, 0, 0, 0, 5959, 5964, 3, 422, 211, 0, 5960, 5962, 5, 303, 0, 0, 5961, 5960, 1, 0, 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5963, 1, 0, 0, 0, 5963, 5965, 5, 304, 0, 0, 5964, 5961, 1, 0, 0, 0, 5964, 5965, 1, 0, 0, 0, 5965, 421, 1, 0, 0, 0, 5966, 5967, 5, 27, 0, 0, 5967, 5968, 5, 506, 0, 0, 5968, 5969, 3, 422, 211, 0, 5969, 5970, 5, 508, 0, 0, 5970, 6017, 1, 0, 0, 0, 5971, 5972, 5, 270, 0, 0, 5972, 5973, 5, 506, 0, 0, 5973, 5974, 3, 422, 211, 0, 5974, 5975, 5, 4, 0, 0, 5975, 5976, 3, 422, 211, 0, 5976, 5977, 5, 508, 0, 0, 5977, 6017, 1, 0, 0, 0, 5978, 5979, 5, 433, 0, 0, 5979, 5980, 5, 506, 0, 0, 5980, 5981, 3, 426, 213, 0, 5981, 5982, 5, 508, 0, 0, 5982, 6017, 1, 0, 0, 0, 5983, 5984, 5, 484, 0, 0, 5984, 5985, 5, 506, 0, 0, 5985, 5986, 3, 430, 215, 0, 5986, 5987, 5, 508, 0, 0, 5987, 6017, 1, 0, 0, 0, 5988, 5989, 5, 17, 0, 0, 5989, 5990, 5, 506, 0, 0, 5990, 5991, 3, 394, 197, 0, 5991, 5992, 5, 2, 0, 0, 5992, 5997, 3, 420, 210, 0, 5993, 5994, 5, 4, 0, 0, 5994, 5996, 3, 420, 210, 0, 5995, 5993, 1, 0, 0, 0, 5996, 5999, 1, 0, 0, 0, 5997, 5995, 1, 0, 0, 0, 5997, 5998, 1, 0, 0, 0, 5998, 6000, 1, 0, 0, 0, 5999, 5997, 1, 0, 0, 0, 6000, 6001, 5, 3, 0, 0, 6001, 6002, 5, 508, 0, 0, 6002, 6017, 1, 0, 0, 0, 6003, 6014, 3, 424, 212, 0, 6004, 6005, 5, 2, 0, 0, 6005, 6010, 7, 57, 0, 0, 6006, 6007, 5, 4, 0, 0, 6007, 6009, 5, 534, 0, 0, 6008, 6006, 1, 0, 0, 0, 6009, 6012, 1, 0, 0, 0, 6010, 6008, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 6013, 1, 0, 0, 0, 6012, 6010, 1, 0, 0, 0, 6013, 6015, 5, 3, 0, 0, 6014, 6004, 1, 0, 0, 0, 6014, 6015, 1, 0, 0, 0, 6015, 6017, 1, 0, 0, 0, 6016, 5966, 1, 0, 0, 0, 6016, 5971, 1, 0, 0, 0, 6016, 5978, 1, 0, 0, 0, 6016, 5983, 1, 0, 0, 0, 6016, 5988, 1, 0, 0, 0, 6016, 6003, 1, 0, 0, 0, 6017, 423, 1, 0, 0, 0, 6018, 6051, 5, 453, 0, 0, 6019, 6051, 5, 416, 0, 0, 6020, 6051, 7, 51, 0, 0, 6021, 6051, 5, 41, 0, 0, 6022, 6051, 5, 248, 0, 0, 6023, 6051, 5, 52, 0, 0, 6024, 6051, 5, 179, 0, 0, 6025, 6051, 5, 141, 0, 0, 6026, 6051, 5, 113, 0, 0, 6027, 6051, 5, 114, 0, 0, 6028, 6051, 5, 451, 0, 0, 6029, 6051, 5, 116, 0, 0, 6030, 6051, 5, 115, 0, 0, 6031, 6051, 5, 118, 0, 0, 6032, 6051, 5, 117, 0, 0, 6033, 6051, 5, 46, 0, 0, 6034, 6051, 5, 352, 0, 0, 6035, 6051, 5, 207, 0, 0, 6036, 6051, 5, 17, 0, 0, 6037, 6051, 5, 432, 0, 0, 6038, 6051, 5, 242, 0, 0, 6039, 6051, 5, 243, 0, 0, 6040, 6051, 5, 448, 0, 0, 6041, 6051, 5, 481, 0, 0, 6042, 6051, 5, 69, 0, 0, 6043, 6051, 5, 120, 0, 0, 6044, 6051, 5, 121, 0, 0, 6045, 6051, 5, 122, 0, 0, 6046, 6051, 5, 232, 0, 0, 6047, 6051, 5, 233, 0, 0, 6048, 6051, 5, 484, 0, 0, 6049, 6051, 5, 20, 0, 0, 6050, 6018, 1, 0, 0, 0, 6050, 6019, 1, 0, 0, 0, 6050, 6020, 1, 0, 0, 0, 6050, 6021, 1, 0, 0, 0, 6050, 6022, 1, 0, 0, 0, 6050, 6023, 1, 0, 0, 0, 6050, 6024, 1, 0, 0, 0, 6050, 6025, 1, 0, 0, 0, 6050, 6026, 1, 0, 0, 0, 6050, 6027, 1, 0, 0, 0, 6050, 6028, 1, 0, 0, 0, 6050, 6029, 1, 0, 0, 0, 6050, 6030, 1, 0, 0, 0, 6050, 6031, 1, 0, 0, 0, 6050, 6032, 1, 0, 0, 0, 6050, 6033, 1, 0, 0, 0, 6050, 6034, 1, 0, 0, 0, 6050, 6035, 1, 0, 0, 0, 6050, 6036, 1, 0, 0, 0, 6050, 6037, 1, 0, 0, 0, 6050, 6038, 1, 0, 0, 0, 6050, 6039, 1, 0, 0, 0, 6050, 6040, 1, 0, 0, 0, 6050, 6041, 1, 0, 0, 0, 6050, 6042, 1, 0, 0, 0, 6050, 6043, 1, 0, 0, 0, 6050, 6044, 1, 0, 0, 0, 6050, 6045, 1, 0, 0, 0, 6050, 6046, 1, 0, 0, 0, 6050, 6047, 1, 0, 0, 0, 6050, 6048, 1, 0, 0, 0, 6050, 6049, 1, 0, 0, 0, 6051, 425, 1, 0, 0, 0, 6052, 6057, 3, 428, 214, 0, 6053, 6054, 5, 4, 0, 0, 6054, 6056, 3, 428, 214, 0, 6055, 6053, 1, 0, 0, 0, 6056, 6059, 1, 0, 0, 0, 6057, 6055, 1, 0, 0, 0, 6057, 6058, 1, 0, 0, 0, 6058, 427, 1, 0, 0, 0, 6059, 6057, 1, 0, 0, 0, 6060, 6061, 3, 448, 224, 0, 6061, 6062, 5, 522, 0, 0, 6062, 6064, 3, 422, 211, 0, 6063, 6065, 3, 436, 218, 0, 6064, 6063, 1, 0, 0, 0, 6064, 6065, 1, 0, 0, 0, 6065, 429, 1, 0, 0, 0, 6066, 6071, 3, 432, 216, 0, 6067, 6068, 5, 4, 0, 0, 6068, 6070, 3, 432, 216, 0, 6069, 6067, 1, 0, 0, 0, 6070, 6073, 1, 0, 0, 0, 6071, 6069, 1, 0, 0, 0, 6071, 6072, 1, 0, 0, 0, 6072, 431, 1, 0, 0, 0, 6073, 6071, 1, 0, 0, 0, 6074, 6076, 3, 434, 217, 0, 6075, 6074, 1, 0, 0, 0, 6075, 6076, 1, 0, 0, 0, 6076, 6077, 1, 0, 0, 0, 6077, 6078, 5, 529, 0, 0, 6078, 6079, 5, 522, 0, 0, 6079, 6081, 3, 422, 211, 0, 6080, 6082, 3, 436, 218, 0, 6081, 6080, 1, 0, 0, 0, 6081, 6082, 1, 0, 0, 0, 6082, 433, 1, 0, 0, 0, 6083, 6084, 7, 58, 0, 0, 6084, 435, 1, 0, 0, 0, 6085, 6086, 5, 81, 0, 0, 6086, 6087, 5, 529, 0, 0, 6087, 437, 1, 0, 0, 0, 6088, 6089, 5, 441, 0, 0, 6089, 6091, 5, 2, 0, 0, 6090, 6092, 3, 440, 220, 0, 6091, 6090, 1, 0, 0, 0, 6091, 6092, 1, 0, 0, 0, 6092, 6093, 1, 0, 0, 0, 6093, 6096, 5, 3, 0, 0, 6094, 6095, 5, 373, 0, 0, 6095, 6097, 5, 534, 0, 0, 6096, 6094, 1, 0, 0, 0, 6096, 6097, 1, 0, 0, 0, 6097, 439, 1, 0, 0, 0, 6098, 6099, 5, 534, 0, 0, 6099, 6103, 5, 330, 0, 0, 6100, 6101, 5, 534, 0, 0, 6101, 6103, 5, 396, 0, 0, 6102, 6098, 1, 0, 0, 0, 6102, 6100, 1, 0, 0, 0, 6103, 441, 1, 0, 0, 0, 6104, 6105, 5, 182, 0, 0, 6105, 6106, 5, 488, 0, 0, 6106, 6107, 5, 28, 0, 0, 6107, 6108, 5, 307, 0, 0, 6108, 6115, 5, 534, 0, 0, 6109, 6110, 5, 182, 0, 0, 6110, 6111, 5, 451, 0, 0, 6111, 6112, 5, 28, 0, 0, 6112, 6113, 5, 307, 0, 0, 6113, 6115, 5, 529, 0, 0, 6114, 6104, 1, 0, 0, 0, 6114, 6109, 1, 0, 0, 0, 6115, 443, 1, 0, 0, 0, 6116, 6117, 3, 448, 224, 0, 6117, 6118, 3, 446, 223, 0, 6118, 445, 1, 0, 0, 0, 6119, 6120, 5, 511, 0, 0, 6120, 6122, 3, 448, 224, 0, 6121, 6119, 1, 0, 0, 0, 6122, 6123, 1, 0, 0, 0, 6123, 6121, 1, 0, 0, 0, 6123, 6124, 1, 0, 0, 0, 6124, 6127, 1, 0, 0, 0, 6125, 6127, 1, 0, 0, 0, 6126, 6121, 1, 0, 0, 0, 6126, 6125, 1, 0, 0, 0, 6127, 447, 1, 0, 0, 0, 6128, 6129, 3, 450, 225, 0, 6129, 449, 1, 0, 0, 0, 6130, 6134, 5, 538, 0, 0, 6131, 6134, 3, 452, 226, 0, 6132, 6134, 3, 456, 228, 0, 6133, 6130, 1, 0, 0, 0, 6133, 6131, 1, 0, 0, 0, 6133, 6132, 1, 0, 0, 0, 6134, 451, 1, 0, 0, 0, 6135, 6136, 5, 539, 0, 0, 6136, 453, 1, 0, 0, 0, 6137, 6139, 5, 511, 0, 0, 6138, 6137, 1, 0, 0, 0, 6138, 6139, 1, 0, 0, 0, 6139, 6140, 1, 0, 0, 0, 6140, 6146, 5, 534, 0, 0, 6141, 6143, 5, 511, 0, 0, 6142, 6141, 1, 0, 0, 0, 6142, 6143, 1, 0, 0, 0, 6143, 6144, 1, 0, 0, 0, 6144, 6146, 7, 59, 0, 0, 6145, 6138, 1, 0, 0, 0, 6145, 6142, 1, 0, 0, 0, 6146, 455, 1, 0, 0, 0, 6147, 6148, 7, 60, 0, 0, 6148, 457, 1, 0, 0, 0, 881, 461, 465, 470, 475, 481, 489, 493, 498, 512, 515, 523, 526, 534, 541, 548, 557, 564, 571, 575, 577, 580, 584, 607, 625, 633, 640, 643, 647, 650, 652, 655, 659, 663, 671, 678, 682, 684, 687, 699, 713, 721, 728, 735, 740, 766, 779, 781, 785, 790, 792, 795, 803, 809, 812, 817, 822, 824, 845, 848, 851, 857, 864, 867, 872, 875, 881, 885, 888, 896, 899, 902, 905, 911, 916, 919, 930, 935, 938, 941, 948, 951, 956, 959, 962, 966, 972, 976, 982, 985, 989, 994, 1002, 1004, 1008, 1011, 1018, 1023, 1025, 1027, 1034, 1037, 1041, 1045, 1050, 1056, 1063, 1067, 1077, 1082, 1088, 1096, 1098, 1105, 1110, 1118, 1122, 1129, 1135, 1139, 1142, 1150, 1161, 1174, 1178, 1186, 1193, 1201, 1204, 1208, 1215, 1219, 1226, 1234, 1237, 1243, 1248, 1255, 1258, 1262, 1269, 1274, 1281, 1287, 1301, 1305, 1334, 1350, 1356, 1384, 1397, 1410, 1429, 1443, 1445, 1459, 1466, 1473, 1480, 1488, 1496, 1503, 1511, 1519, 1529, 1533, 1539, 1543, 1547, 1552, 1557, 1565, 1571, 1575, 1579, 1595, 1601, 1604, 1613, 1619, 1623, 1635, 1641, 1644, 1657, 1667, 1671, 1675, 1682, 1699, 1703, 1716, 1722, 1726, 1733, 1738, 1746, 1748, 1754, 1766, 1770, 1773, 1776, 1789, 1808, 1813, 1816, 1825, 1837, 1841, 1854, 1867, 1871, 1878, 1884, 1887, 1893, 1897, 1902, 1905, 1912, 1915, 1917, 1921, 1931, 1943, 1946, 1955, 1962, 1970, 1973, 1976, 1990, 1995, 1998, 2012, 2017, 2020, 2027, 2029, 2035, 2040, 2044, 2047, 2050, 2059, 2061, 2071, 2074, 2078, 2083, 2086, 2096, 2102, 2107, 2113, 2116, 2120, 2127, 2130, 2137, 2140, 2143, 2147, 2151, 2156, 2159, 2162, 2165, 2171, 2174, 2177, 2180, 2189, 2193, 2196, 2199, 2202, 2206, 2212, 2215, 2218, 2228, 2231, 2234, 2237, 2243, 2246, 2250, 2255, 2258, 2263, 2266, 2269, 2275, 2282, 2286, 2289, 2294, 2297, 2302, 2306, 2312, 2320, 2326, 2329, 2340, 2351, 2353, 2355, 2362, 2365, 2368, 2371, 2377, 2385, 2391, 2394, 2397, 2400, 2407, 2409, 2417, 2421, 2428, 2431, 2434, 2442, 2451, 2454, 2468, 2507, 2514, 2516, 2524, 2527, 2531, 2543, 2555, 2579, 2587, 2593, 2597, 2604, 2612, 2615, 2621, 2627, 2632, 2640, 2644, 2651, 2660, 2666, 2672, 2675, 2681, 2684, 2691, 2693, 2702, 2712, 2716, 2729, 2733, 2743, 2750, 2756, 2758, 2776, 2780, 2793, 2797, 2814, 2824, 2830, 2838, 2850, 2854, 2862, 2864, 2870, 2874, 2880, 2884, 2890, 2894, 2899, 2933, 2940, 2943, 2952, 2959, 2961, 2965, 2968, 2971, 2974, 2978, 2981, 2987, 2993, 2995, 2999, 3003, 3006, 3009, 3012, 3016, 3020, 3023, 3026, 3029, 3031, 3041, 3055, 3062, 3070, 3083, 3097, 3104, 3112, 3117, 3121, 3124, 3131, 3147, 3164, 3172, 3184, 3190, 3192, 3201, 3205, 3214, 3224, 3247, 3258, 3270, 3279, 3292, 3296, 3303, 3306, 3309, 3315, 3318, 3321, 3329, 3332, 3338, 3341, 3347, 3350, 3353, 3359, 3362, 3366, 3374, 3379, 3381, 3383, 3386, 3390, 3395, 3399, 3404, 3408, 3416, 3425, 3429, 3432, 3435, 3442, 3445, 3470, 3478, 3487, 3492, 3494, 3496, 3512, 3516, 3526, 3529, 3531, 3536, 3548, 3555, 3563, 3572, 3574, 3580, 3583, 3587, 3592, 3599, 3606, 3613, 3628, 3632, 3638, 3641, 3647, 3651, 3653, 3664, 3671, 3682, 3688, 3691, 3712, 3715, 3730, 3735, 3738, 3745, 3757, 3765, 3772, 3776, 3783, 3790, 3795, 3800, 3809, 3815, 3819, 3827, 3831, 3839, 3847, 3854, 3857, 3864, 3868, 3870, 3877, 3884, 3886, 3893, 3900, 3904, 3910, 3915, 3917, 3925, 3927, 3934, 3936, 3940, 3946, 3948, 3951, 3959, 3966, 3972, 3977, 3981, 3995, 4000, 4013, 4015, 4022, 4030, 4034, 4039, 4044, 4049, 4057, 4066, 4069, 4075, 4077, 4083, 4090, 4104, 4108, 4113, 4119, 4127, 4130, 4136, 4139, 4148, 4151, 4157, 4167, 4171, 4174, 4176, 4181, 4186, 4190, 4196, 4203, 4215, 4217, 4231, 4234, 4239, 4247, 4250, 4255, 4260, 4270, 4277, 4280, 4283, 4293, 4301, 4307, 4313, 4318, 4323, 4326, 4329, 4332, 4335, 4338, 4341, 4344, 4347, 4350, 4353, 4364, 4367, 4370, 4373, 4376, 4378, 4392, 4399, 4405, 4409, 4414, 4421, 4426, 4435, 4437, 4443, 4446, 4450, 4453, 4456, 4470, 4499, 4534, 4536, 4545, 4549, 4558, 4564, 4570, 4573, 4576, 4579, 4582, 4590, 4598, 4601, 4604, 4615, 4621, 4624, 4626, 4637, 4641, 4644, 4647, 4650, 4653, 4656, 4667, 4672, 4685, 4692, 4705, 4710, 4715, 4719, 4735, 4742, 4748, 4752, 4762, 4770, 4781, 4786, 4799, 4802, 4812, 4815, 4826, 4836, 4839, 4847, 4850, 4862, 4867, 4876, 4881, 4886, 4895, 4900, 4902, 4908, 4910, 4913, 4919, 4926, 4938, 4941, 4951, 4955, 4958, 4967, 4972, 4976, 4988, 4997, 5001, 5006, 5010, 5014, 5024, 5030, 5041, 5048, 5054, 5057, 5060, 5063, 5066, 5070, 5073, 5078, 5088, 5094, 5103, 5118, 5127, 5131, 5134, 5138, 5140, 5147, 5155, 5161, 5168, 5174, 5177, 5181, 5188, 5191, 5194, 5201, 5203, 5208, 5212, 5225, 5227, 5229, 5238, 5240, 5244, 5251, 5258, 5264, 5271, 5275, 5282, 5289, 5295, 5301, 5309, 5315, 5332, 5338, 5349, 5355, 5357, 5365, 5371, 5377, 5384, 5392, 5395, 5406, 5417, 5422, 5425, 5432, 5437, 5449, 5455, 5477, 5481, 5495, 5497, 5506, 5509, 5516, 5519, 5527, 5532, 5537, 5545, 5554, 5561, 5566, 5569, 5575, 5596, 5598, 5613, 5617, 5626, 5630, 5647, 5656, 5666, 5671, 5699, 5703, 5714, 5722, 5727, 5739, 5751, 5753, 5755, 5768, 5773, 5775, 5780, 5787, 5797, 5800, 5802, 5807, 5812, 5832, 5836, 5839, 5842, 5855, 5866, 5873, 5877, 5882, 5885, 5889, 5897, 5902, 5908, 5917, 5926, 5936, 5942, 5961, 5964, 5997, 6010, 6014, 6016, 6050, 6057, 6064, 6071, 6075, 6081, 6091, 6096, 6102, 6114, 6123, 6126, 6133, 6138, 6142, 6145] \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java deleted file mode 100644 index 43aa66b4252be2..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.java +++ /dev/null @@ -1,53737 +0,0 @@ -// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.misc.*; -import org.antlr.v4.runtime.tree.*; -import java.util.List; -import java.util.Iterator; -import java.util.ArrayList; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public class DorisParser extends Parser { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - SEMICOLON=1, LEFT_PAREN=2, RIGHT_PAREN=3, COMMA=4, DOT=5, DOTDOTDOT=6, - LEFT_BRACKET=7, RIGHT_BRACKET=8, LEFT_BRACE=9, RIGHT_BRACE=10, ACCOUNT_LOCK=11, - ACCOUNT_UNLOCK=12, ACTIONS=13, ADD=14, ADMIN=15, AFTER=16, AGG_STATE=17, - AGGREGATE=18, ALIAS=19, ALL=20, ALTER=21, ANALYZE=22, ANALYZED=23, AND=24, - ANTI=25, APPEND=26, ARRAY=27, AS=28, ASC=29, AT=30, AUTHORS=31, AUTO=32, - AUTO_INCREMENT=33, ALWAYS=34, BACKEND=35, BACKENDS=36, BACKUP=37, BEGIN=38, - BELONG=39, BETWEEN=40, BIGINT=41, BIN=42, BINARY=43, BINLOG=44, BITAND=45, - BITMAP=46, BITMAP_EMPTY=47, BITMAP_UNION=48, BITOR=49, BITXOR=50, BLOB=51, - BOOLEAN=52, BRIEF=53, BROKER=54, BUCKETS=55, BUILD=56, BUILTIN=57, BULK=58, - BY=59, CACHE=60, CACHED=61, CALL=62, CANCEL=63, CASE=64, CAST=65, CATALOG=66, - CATALOGS=67, CHAIN=68, CHAR=69, CHARSET=70, CHECK=71, CLEAN=72, CLUSTER=73, - CLUSTERS=74, COLLATE=75, COLLATION=76, COLLECT=77, COLOCATE=78, COLUMN=79, - COLUMNS=80, COMMENT=81, COMMIT=82, COMMITTED=83, COMPACT=84, COMPLETE=85, - COMPRESS_TYPE=86, COMPUTE=87, CONDITIONS=88, CONFIG=89, CONNECTION=90, - CONNECTION_ID=91, CONSISTENT=92, CONSTRAINT=93, CONSTRAINTS=94, CONVERT=95, - CONVERT_LSC=96, COPY=97, COUNT=98, CREATE=99, CREATION=100, CRON=101, - CROSS=102, CUBE=103, CURRENT=104, CURRENT_CATALOG=105, CURRENT_DATE=106, - CURRENT_TIME=107, CURRENT_TIMESTAMP=108, CURRENT_USER=109, DATA=110, DATABASE=111, - DATABASES=112, DATE=113, DATETIME=114, DATETIMEV2=115, DATEV2=116, DATETIMEV1=117, - DATEV1=118, DAY=119, DECIMAL=120, DECIMALV2=121, DECIMALV3=122, DECOMMISSION=123, - DEFAULT=124, DEFERRED=125, DELETE=126, DEMAND=127, DESC=128, DESCRIBE=129, - DIAGNOSE=130, DIAGNOSIS=131, DISK=132, DISTINCT=133, DISTINCTPC=134, DISTINCTPCSA=135, - DISTRIBUTED=136, DISTRIBUTION=137, DIV=138, DO=139, DORIS_INTERNAL_TABLE_ID=140, - DOUBLE=141, DROP=142, DROPP=143, DUAL=144, DUMP=145, DUPLICATE=146, DYNAMIC=147, - E=148, ELSE=149, ENABLE=150, ENCRYPTKEY=151, ENCRYPTKEYS=152, END=153, - ENDS=154, ENGINE=155, ENGINES=156, ENTER=157, ERRORS=158, EVENTS=159, - EVERY=160, EXCEPT=161, EXCLUDE=162, EXECUTE=163, EXISTS=164, EXPIRED=165, - EXPLAIN=166, EXPORT=167, EXTENDED=168, EXTERNAL=169, EXTRACT=170, FAILED_LOGIN_ATTEMPTS=171, - FALSE=172, FAST=173, FEATURE=174, FIELDS=175, FILE=176, FILTER=177, FIRST=178, - FLOAT=179, FOLLOWER=180, FOLLOWING=181, FOR=182, FOREIGN=183, FORCE=184, - FORMAT=185, FREE=186, FROM=187, FRONTEND=188, FRONTENDS=189, FULL=190, - FUNCTION=191, FUNCTIONS=192, GENERATED=193, GENERIC=194, GLOBAL=195, GRANT=196, - GRANTS=197, GRAPH=198, GROUP=199, GROUPING=200, GROUPS=201, HASH=202, - HAVING=203, HDFS=204, HELP=205, HISTOGRAM=206, HLL=207, HLL_UNION=208, - HOSTNAME=209, HOTSPOT=210, HOUR=211, HUB=212, IDENTIFIED=213, IF=214, - IGNORE=215, IMMEDIATE=216, IN=217, INCREMENTAL=218, INDEX=219, INDEXES=220, - INFILE=221, INNER=222, INSERT=223, INSTALL=224, INT=225, INTEGER=226, - INTERMEDIATE=227, INTERSECT=228, INTERVAL=229, INTO=230, INVERTED=231, - IPV4=232, IPV6=233, IS=234, IS_NOT_NULL_PRED=235, IS_NULL_PRED=236, ISNULL=237, - ISOLATION=238, JOB=239, JOBS=240, JOIN=241, JSON=242, JSONB=243, KEY=244, - KEYS=245, KILL=246, LABEL=247, LARGEINT=248, LAST=249, LATERAL=250, LDAP=251, - LDAP_ADMIN_PASSWORD=252, LEFT=253, LESS=254, LEVEL=255, LIKE=256, LIMIT=257, - LINES=258, LINK=259, LIST=260, LOAD=261, LOCAL=262, LOCALTIME=263, LOCALTIMESTAMP=264, - LOCATION=265, LOCK=266, LOGICAL=267, LOW_PRIORITY=268, MANUAL=269, MAP=270, - MATCH=271, MATCH_ALL=272, MATCH_ANY=273, MATCH_PHRASE=274, MATCH_PHRASE_EDGE=275, - MATCH_PHRASE_PREFIX=276, MATCH_REGEXP=277, MATCH_NAME=278, MATCH_NAME_GLOB=279, - MATERIALIZED=280, MAX=281, MAXVALUE=282, MEMO=283, MERGE=284, MIGRATE=285, - MIGRATIONS=286, MIN=287, MINUS=288, MINUTE=289, MODIFY=290, MONTH=291, - MTMV=292, NAME=293, NAMES=294, NATURAL=295, NEGATIVE=296, NEVER=297, NEXT=298, - NGRAM_BF=299, NO=300, NO_USE_MV=301, NON_NULLABLE=302, NOT=303, NULL=304, - NULLS=305, OBSERVER=306, OF=307, OFFSET=308, ON=309, ONLY=310, OPEN=311, - OPTIMIZED=312, OR=313, ORDER=314, OUTER=315, OUTFILE=316, OVER=317, OVERWRITE=318, - PARAMETER=319, PARSED=320, PARTITION=321, PARTITIONS=322, PASSWORD=323, - PASSWORD_EXPIRE=324, PASSWORD_HISTORY=325, PASSWORD_LOCK_TIME=326, PASSWORD_REUSE=327, - PATH=328, PAUSE=329, PERCENT=330, PERIOD=331, PERMISSIVE=332, PHYSICAL=333, - PI=334, PLACEHOLDER=335, PLAN=336, PLAY=337, PRIVILEGES=338, PROCESS=339, - PLUGIN=340, PLUGINS=341, POLICY=342, PRECEDING=343, PREPARE=344, PRIMARY=345, - PROC=346, PROCEDURE=347, PROCESSLIST=348, PROFILE=349, PROPERTIES=350, - PROPERTY=351, QUANTILE_STATE=352, QUANTILE_UNION=353, QUERY=354, QUEUED=355, - QUOTA=356, QUALIFY=357, QUARTER=358, RANDOM=359, RANGE=360, READ=361, - REAL=362, REBALANCE=363, RECENT=364, RECOVER=365, RECYCLE=366, REFRESH=367, - REFERENCES=368, REGEXP=369, RELEASE=370, RENAME=371, REPAIR=372, REPEATABLE=373, - REPLACE=374, REPLACE_IF_NOT_NULL=375, REPLAYER=376, REPLICA=377, REPOSITORIES=378, - REPOSITORY=379, RESOURCE=380, RESOURCES=381, RESTORE=382, RESTRICTIVE=383, - RESUME=384, RETURNS=385, REVOKE=386, REWRITTEN=387, RIGHT=388, RLIKE=389, - ROLE=390, ROLES=391, ROLLBACK=392, ROLLUP=393, ROUTINE=394, ROW=395, ROWS=396, - S3=397, SAMPLE=398, SCHEDULE=399, SCHEDULER=400, SCHEMA=401, SCHEMAS=402, - SECOND=403, SELECT=404, SEMI=405, SERIALIZABLE=406, SESSION=407, SESSION_USER=408, - SET=409, SETS=410, SET_SESSION_VARIABLE=411, SHAPE=412, SHOW=413, SIGNED=414, - SKEW=415, SMALLINT=416, SNAPSHOT=417, SONAME=418, SPLIT=419, SQL=420, - SQL_BLOCK_RULE=421, STAGE=422, STAGES=423, START=424, STARTS=425, STATS=426, - STATUS=427, STOP=428, STORAGE=429, STREAM=430, STREAMING=431, STRING=432, - STRUCT=433, SUM=434, SUPERUSER=435, SWITCH=436, SYNC=437, SYSTEM=438, - TABLE=439, TABLES=440, TABLESAMPLE=441, TABLET=442, TABLETS=443, TASK=444, - TASKS=445, TEMPORARY=446, TERMINATED=447, TEXT=448, THAN=449, THEN=450, - TIME=451, TIMESTAMP=452, TINYINT=453, TO=454, TRANSACTION=455, TRASH=456, - TREE=457, TRIGGERS=458, TRIM=459, TRUE=460, TRUNCATE=461, TYPE=462, TYPECAST=463, - TYPES=464, UNBOUNDED=465, UNCOMMITTED=466, UNINSTALL=467, UNION=468, UNIQUE=469, - UNLOCK=470, UNSET=471, UNSIGNED=472, UP=473, UPDATE=474, USE=475, USER=476, - USE_MV=477, USING=478, VALUE=479, VALUES=480, VARCHAR=481, VARIABLE=482, - VARIABLES=483, VARIANT=484, VAULT=485, VAULTS=486, VERBOSE=487, VERSION=488, - VIEW=489, VIEWS=490, WARM=491, WARNINGS=492, WEEK=493, WHEN=494, WHERE=495, - WHITELIST=496, WITH=497, WORK=498, WORKLOAD=499, WRITE=500, XOR=501, YEAR=502, - EQ=503, NSEQ=504, NEQ=505, LT=506, LTE=507, GT=508, GTE=509, PLUS=510, - SUBTRACT=511, ASTERISK=512, SLASH=513, MOD=514, TILDE=515, AMPERSAND=516, - LOGICALAND=517, LOGICALNOT=518, PIPE=519, DOUBLEPIPES=520, HAT=521, COLON=522, - ARROW=523, HINT_START=524, HINT_END=525, COMMENT_START=526, ATSIGN=527, - DOUBLEATSIGN=528, STRING_LITERAL=529, LEADING_STRING=530, BIGINT_LITERAL=531, - SMALLINT_LITERAL=532, TINYINT_LITERAL=533, INTEGER_VALUE=534, EXPONENT_VALUE=535, - DECIMAL_VALUE=536, BIGDECIMAL_LITERAL=537, IDENTIFIER=538, BACKQUOTED_IDENTIFIER=539, - SIMPLE_COMMENT=540, BRACKETED_COMMENT=541, FROM_DUAL=542, WS=543, UNRECOGNIZED=544; - public static final int - RULE_multiStatements = 0, RULE_singleStatement = 1, RULE_statement = 2, - RULE_statementBase = 3, RULE_unsupportedStatement = 4, RULE_materializedViewStatement = 5, - RULE_supportedJobStatement = 6, RULE_constraintStatement = 7, RULE_supportedDmlStatement = 8, - RULE_supportedCreateStatement = 9, RULE_supportedAlterStatement = 10, - RULE_supportedDropStatement = 11, RULE_supportedShowStatement = 12, RULE_supportedLoadStatement = 13, - RULE_supportedOtherStatement = 14, RULE_unsupportedOtherStatement = 15, - RULE_warmUpItem = 16, RULE_lockTable = 17, RULE_unsupportedShowStatement = 18, - RULE_createRoutineLoad = 19, RULE_unsupportedLoadStatement = 20, RULE_loadProperty = 21, - RULE_importSequenceStatement = 22, RULE_importDeleteOnStatement = 23, - RULE_importWhereStatement = 24, RULE_importPrecedingFilterStatement = 25, - RULE_importColumnsStatement = 26, RULE_importColumnDesc = 27, RULE_channelDescriptions = 28, - RULE_channelDescription = 29, RULE_supportedRefreshStatement = 30, RULE_supportedCleanStatement = 31, - RULE_unsupportedRefreshStatement = 32, RULE_unsupportedCleanStatement = 33, - RULE_supportedCancelStatement = 34, RULE_unsupportedCancelStatement = 35, - RULE_supportedAdminStatement = 36, RULE_supportedRecoverStatement = 37, - RULE_unsupportedAdminStatement = 38, RULE_baseTableRef = 39, RULE_wildWhere = 40, - RULE_unsupportedTransactionStatement = 41, RULE_unsupportedGrantRevokeStatement = 42, - RULE_privilege = 43, RULE_privilegeList = 44, RULE_unsupportedAlterStatement = 45, - RULE_alterSystemClause = 46, RULE_dropRollupClause = 47, RULE_addRollupClause = 48, - RULE_alterTableClause = 49, RULE_columnPosition = 50, RULE_toRollup = 51, - RULE_fromRollup = 52, RULE_unsupportedDropStatement = 53, RULE_supportedStatsStatement = 54, - RULE_unsupportedStatsStatement = 55, RULE_analyzeProperties = 56, RULE_unsupportedCreateStatement = 57, - RULE_workloadPolicyActions = 58, RULE_workloadPolicyAction = 59, RULE_workloadPolicyConditions = 60, - RULE_workloadPolicyCondition = 61, RULE_storageBackend = 62, RULE_passwordOption = 63, - RULE_functionArguments = 64, RULE_dataTypeList = 65, RULE_supportedSetStatement = 66, - RULE_optionWithType = 67, RULE_optionWithoutType = 68, RULE_variable = 69, - RULE_transactionAccessMode = 70, RULE_isolationLevel = 71, RULE_supportedUnsetStatement = 72, - RULE_supportedUseStatement = 73, RULE_unsupportedUseStatement = 74, RULE_unsupportedDmlStatement = 75, - RULE_stageAndPattern = 76, RULE_unsupportedKillStatement = 77, RULE_supportedDescribeStatement = 78, - RULE_constraint = 79, RULE_partitionSpec = 80, RULE_partitionTable = 81, - RULE_identityOrFunctionList = 82, RULE_identityOrFunction = 83, RULE_dataDesc = 84, - RULE_statementScope = 85, RULE_buildMode = 86, RULE_refreshTrigger = 87, - RULE_refreshSchedule = 88, RULE_refreshMethod = 89, RULE_mvPartition = 90, - RULE_identifierOrText = 91, RULE_identifierOrTextOrAsterisk = 92, RULE_multipartIdentifierOrAsterisk = 93, - RULE_identifierOrAsterisk = 94, RULE_userIdentify = 95, RULE_grantUserIdentify = 96, - RULE_explain = 97, RULE_explainCommand = 98, RULE_planType = 99, RULE_replayCommand = 100, - RULE_replayType = 101, RULE_mergeType = 102, RULE_preFilterClause = 103, - RULE_deleteOnClause = 104, RULE_sequenceColClause = 105, RULE_colFromPath = 106, - RULE_colMappingList = 107, RULE_mappingExpr = 108, RULE_withRemoteStorageSystem = 109, - RULE_resourceDesc = 110, RULE_mysqlDataDesc = 111, RULE_skipLines = 112, - RULE_outFileClause = 113, RULE_query = 114, RULE_queryTerm = 115, RULE_setQuantifier = 116, - RULE_queryPrimary = 117, RULE_querySpecification = 118, RULE_cte = 119, - RULE_aliasQuery = 120, RULE_columnAliases = 121, RULE_selectClause = 122, - RULE_selectColumnClause = 123, RULE_whereClause = 124, RULE_fromClause = 125, - RULE_intoClause = 126, RULE_bulkCollectClause = 127, RULE_tableRow = 128, - RULE_relations = 129, RULE_relation = 130, RULE_joinRelation = 131, RULE_distributeType = 132, - RULE_relationHint = 133, RULE_aggClause = 134, RULE_groupingElement = 135, - RULE_groupingSet = 136, RULE_havingClause = 137, RULE_qualifyClause = 138, - RULE_selectHint = 139, RULE_hintStatement = 140, RULE_hintAssignment = 141, - RULE_updateAssignment = 142, RULE_updateAssignmentSeq = 143, RULE_lateralView = 144, - RULE_queryOrganization = 145, RULE_sortClause = 146, RULE_sortItem = 147, - RULE_limitClause = 148, RULE_partitionClause = 149, RULE_joinType = 150, - RULE_joinCriteria = 151, RULE_identifierList = 152, RULE_identifierSeq = 153, - RULE_optScanParams = 154, RULE_relationPrimary = 155, RULE_materializedViewName = 156, - RULE_propertyClause = 157, RULE_propertyItemList = 158, RULE_propertyItem = 159, - RULE_propertyKey = 160, RULE_propertyValue = 161, RULE_tableAlias = 162, - RULE_multipartIdentifier = 163, RULE_simpleColumnDefs = 164, RULE_simpleColumnDef = 165, - RULE_columnDefs = 166, RULE_columnDef = 167, RULE_indexDefs = 168, RULE_indexDef = 169, - RULE_partitionsDef = 170, RULE_partitionDef = 171, RULE_lessThanPartitionDef = 172, - RULE_fixedPartitionDef = 173, RULE_stepPartitionDef = 174, RULE_inPartitionDef = 175, - RULE_partitionValueList = 176, RULE_partitionValueDef = 177, RULE_rollupDefs = 178, - RULE_rollupDef = 179, RULE_aggTypeDef = 180, RULE_tabletList = 181, RULE_inlineTable = 182, - RULE_namedExpression = 183, RULE_namedExpressionSeq = 184, RULE_expression = 185, - RULE_lambdaExpression = 186, RULE_booleanExpression = 187, RULE_rowConstructor = 188, - RULE_rowConstructorItem = 189, RULE_predicate = 190, RULE_valueExpression = 191, - RULE_primaryExpression = 192, RULE_exceptOrReplace = 193, RULE_castDataType = 194, - RULE_functionCallExpression = 195, RULE_functionIdentifier = 196, RULE_functionNameIdentifier = 197, - RULE_windowSpec = 198, RULE_windowFrame = 199, RULE_frameUnits = 200, - RULE_frameBoundary = 201, RULE_qualifiedName = 202, RULE_specifiedPartition = 203, - RULE_constant = 204, RULE_comparisonOperator = 205, RULE_booleanValue = 206, - RULE_whenClause = 207, RULE_interval = 208, RULE_unitIdentifier = 209, - RULE_dataTypeWithNullable = 210, RULE_dataType = 211, RULE_primitiveColType = 212, - RULE_complexColTypeList = 213, RULE_complexColType = 214, RULE_variantSubColTypeList = 215, - RULE_variantSubColType = 216, RULE_variantSubColMatchType = 217, RULE_commentSpec = 218, - RULE_sample = 219, RULE_sampleMethod = 220, RULE_tableSnapshot = 221, - RULE_errorCapturingIdentifier = 222, RULE_errorCapturingIdentifierExtra = 223, - RULE_identifier = 224, RULE_strictIdentifier = 225, RULE_quotedIdentifier = 226, - RULE_number = 227, RULE_nonReserved = 228; - private static String[] makeRuleNames() { - return new String[] { - "multiStatements", "singleStatement", "statement", "statementBase", "unsupportedStatement", - "materializedViewStatement", "supportedJobStatement", "constraintStatement", - "supportedDmlStatement", "supportedCreateStatement", "supportedAlterStatement", - "supportedDropStatement", "supportedShowStatement", "supportedLoadStatement", - "supportedOtherStatement", "unsupportedOtherStatement", "warmUpItem", - "lockTable", "unsupportedShowStatement", "createRoutineLoad", "unsupportedLoadStatement", - "loadProperty", "importSequenceStatement", "importDeleteOnStatement", - "importWhereStatement", "importPrecedingFilterStatement", "importColumnsStatement", - "importColumnDesc", "channelDescriptions", "channelDescription", "supportedRefreshStatement", - "supportedCleanStatement", "unsupportedRefreshStatement", "unsupportedCleanStatement", - "supportedCancelStatement", "unsupportedCancelStatement", "supportedAdminStatement", - "supportedRecoverStatement", "unsupportedAdminStatement", "baseTableRef", - "wildWhere", "unsupportedTransactionStatement", "unsupportedGrantRevokeStatement", - "privilege", "privilegeList", "unsupportedAlterStatement", "alterSystemClause", - "dropRollupClause", "addRollupClause", "alterTableClause", "columnPosition", - "toRollup", "fromRollup", "unsupportedDropStatement", "supportedStatsStatement", - "unsupportedStatsStatement", "analyzeProperties", "unsupportedCreateStatement", - "workloadPolicyActions", "workloadPolicyAction", "workloadPolicyConditions", - "workloadPolicyCondition", "storageBackend", "passwordOption", "functionArguments", - "dataTypeList", "supportedSetStatement", "optionWithType", "optionWithoutType", - "variable", "transactionAccessMode", "isolationLevel", "supportedUnsetStatement", - "supportedUseStatement", "unsupportedUseStatement", "unsupportedDmlStatement", - "stageAndPattern", "unsupportedKillStatement", "supportedDescribeStatement", - "constraint", "partitionSpec", "partitionTable", "identityOrFunctionList", - "identityOrFunction", "dataDesc", "statementScope", "buildMode", "refreshTrigger", - "refreshSchedule", "refreshMethod", "mvPartition", "identifierOrText", - "identifierOrTextOrAsterisk", "multipartIdentifierOrAsterisk", "identifierOrAsterisk", - "userIdentify", "grantUserIdentify", "explain", "explainCommand", "planType", - "replayCommand", "replayType", "mergeType", "preFilterClause", "deleteOnClause", - "sequenceColClause", "colFromPath", "colMappingList", "mappingExpr", - "withRemoteStorageSystem", "resourceDesc", "mysqlDataDesc", "skipLines", - "outFileClause", "query", "queryTerm", "setQuantifier", "queryPrimary", - "querySpecification", "cte", "aliasQuery", "columnAliases", "selectClause", - "selectColumnClause", "whereClause", "fromClause", "intoClause", "bulkCollectClause", - "tableRow", "relations", "relation", "joinRelation", "distributeType", - "relationHint", "aggClause", "groupingElement", "groupingSet", "havingClause", - "qualifyClause", "selectHint", "hintStatement", "hintAssignment", "updateAssignment", - "updateAssignmentSeq", "lateralView", "queryOrganization", "sortClause", - "sortItem", "limitClause", "partitionClause", "joinType", "joinCriteria", - "identifierList", "identifierSeq", "optScanParams", "relationPrimary", - "materializedViewName", "propertyClause", "propertyItemList", "propertyItem", - "propertyKey", "propertyValue", "tableAlias", "multipartIdentifier", - "simpleColumnDefs", "simpleColumnDef", "columnDefs", "columnDef", "indexDefs", - "indexDef", "partitionsDef", "partitionDef", "lessThanPartitionDef", - "fixedPartitionDef", "stepPartitionDef", "inPartitionDef", "partitionValueList", - "partitionValueDef", "rollupDefs", "rollupDef", "aggTypeDef", "tabletList", - "inlineTable", "namedExpression", "namedExpressionSeq", "expression", - "lambdaExpression", "booleanExpression", "rowConstructor", "rowConstructorItem", - "predicate", "valueExpression", "primaryExpression", "exceptOrReplace", - "castDataType", "functionCallExpression", "functionIdentifier", "functionNameIdentifier", - "windowSpec", "windowFrame", "frameUnits", "frameBoundary", "qualifiedName", - "specifiedPartition", "constant", "comparisonOperator", "booleanValue", - "whenClause", "interval", "unitIdentifier", "dataTypeWithNullable", "dataType", - "primitiveColType", "complexColTypeList", "complexColType", "variantSubColTypeList", - "variantSubColType", "variantSubColMatchType", "commentSpec", "sample", - "sampleMethod", "tableSnapshot", "errorCapturingIdentifier", "errorCapturingIdentifierExtra", - "identifier", "strictIdentifier", "quotedIdentifier", "number", "nonReserved" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "';'", "'('", "')'", "','", "'.'", "'...'", "'['", "']'", "'{'", - "'}'", "'ACCOUNT_LOCK'", "'ACCOUNT_UNLOCK'", "'ACTIONS'", "'ADD'", "'ADMIN'", - "'AFTER'", "'AGG_STATE'", "'AGGREGATE'", "'ALIAS'", "'ALL'", "'ALTER'", - "'ANALYZE'", "'ANALYZED'", "'AND'", "'ANTI'", "'APPEND'", "'ARRAY'", - "'AS'", "'ASC'", "'AT'", "'AUTHORS'", "'AUTO'", "'AUTO_INCREMENT'", "'ALWAYS'", - "'BACKEND'", "'BACKENDS'", "'BACKUP'", "'BEGIN'", "'BELONG'", "'BETWEEN'", - "'BIGINT'", "'BIN'", "'BINARY'", "'BINLOG'", "'BITAND'", "'BITMAP'", - "'BITMAP_EMPTY'", "'BITMAP_UNION'", "'BITOR'", "'BITXOR'", "'BLOB'", - "'BOOLEAN'", "'BRIEF'", "'BROKER'", "'BUCKETS'", "'BUILD'", "'BUILTIN'", - "'BULK'", "'BY'", "'CACHE'", "'CACHED'", "'CALL'", "'CANCEL'", "'CASE'", - "'CAST'", "'CATALOG'", "'CATALOGS'", "'CHAIN'", null, "'CHARSET'", "'CHECK'", - "'CLEAN'", "'CLUSTER'", "'CLUSTERS'", "'COLLATE'", "'COLLATION'", "'COLLECT'", - "'COLOCATE'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", - "'COMPACT'", "'COMPLETE'", "'COMPRESS_TYPE'", "'COMPUTE'", "'CONDITIONS'", - "'CONFIG'", "'CONNECTION'", "'CONNECTION_ID'", "'CONSISTENT'", "'CONSTRAINT'", - "'CONSTRAINTS'", "'CONVERT'", "'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'", - "'COPY'", "'COUNT'", "'CREATE'", "'CREATION'", "'CRON'", "'CROSS'", "'CUBE'", - "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_TIME'", - "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATABASE'", "'DATABASES'", - "'DATE'", "'DATETIME'", "'DATETIMEV2'", "'DATEV2'", "'DATETIMEV1'", "'DATEV1'", - "'DAY'", "'DECIMAL'", "'DECIMALV2'", "'DECIMALV3'", "'DECOMMISSION'", - "'DEFAULT'", "'DEFERRED'", "'DELETE'", "'DEMAND'", "'DESC'", "'DESCRIBE'", - "'DIAGNOSE'", "'DIAGNOSIS'", "'DISK'", "'DISTINCT'", "'DISTINCTPC'", - "'DISTINCTPCSA'", "'DISTRIBUTED'", "'DISTRIBUTION'", "'DIV'", "'DO'", - "'DORIS_INTERNAL_TABLE_ID'", "'DOUBLE'", "'DROP'", "'DROPP'", "'DUAL'", - "'DUMP'", "'DUPLICATE'", "'DYNAMIC'", "'E'", "'ELSE'", "'ENABLE'", "'ENCRYPTKEY'", - "'ENCRYPTKEYS'", "'END'", "'ENDS'", "'ENGINE'", "'ENGINES'", "'ENTER'", - "'ERRORS'", "'EVENTS'", "'EVERY'", "'EXCEPT'", "'EXCLUDE'", "'EXECUTE'", - "'EXISTS'", "'EXPIRED'", "'EXPLAIN'", "'EXPORT'", "'EXTENDED'", "'EXTERNAL'", - "'EXTRACT'", "'FAILED_LOGIN_ATTEMPTS'", "'FALSE'", "'FAST'", "'FEATURE'", - "'FIELDS'", "'FILE'", "'FILTER'", "'FIRST'", "'FLOAT'", "'FOLLOWER'", - "'FOLLOWING'", "'FOR'", "'FOREIGN'", "'FORCE'", "'FORMAT'", "'FREE'", - "'FROM'", "'FRONTEND'", "'FRONTENDS'", "'FULL'", "'FUNCTION'", "'FUNCTIONS'", - "'GENERATED'", "'GENERIC'", "'GLOBAL'", "'GRANT'", "'GRANTS'", "'GRAPH'", - "'GROUP'", "'GROUPING'", "'GROUPS'", "'HASH'", "'HAVING'", "'HDFS'", - "'HELP'", "'HISTOGRAM'", "'HLL'", "'HLL_UNION'", "'HOSTNAME'", "'HOTSPOT'", - "'HOUR'", "'HUB'", "'IDENTIFIED'", "'IF'", "'IGNORE'", "'IMMEDIATE'", - "'IN'", "'INCREMENTAL'", "'INDEX'", "'INDEXES'", "'INFILE'", "'INNER'", - "'INSERT'", "'INSTALL'", "'INT'", "'INTEGER'", "'INTERMEDIATE'", "'INTERSECT'", - "'INTERVAL'", "'INTO'", "'INVERTED'", "'IPV4'", "'IPV6'", "'IS'", "'IS_NOT_NULL_PRED'", - "'IS_NULL_PRED'", "'ISNULL'", "'ISOLATION'", "'JOB'", "'JOBS'", "'JOIN'", - "'JSON'", "'JSONB'", "'KEY'", "'KEYS'", "'KILL'", "'LABEL'", "'LARGEINT'", - "'LAST'", "'LATERAL'", "'LDAP'", "'LDAP_ADMIN_PASSWORD'", "'LEFT'", "'LESS'", - "'LEVEL'", "'LIKE'", "'LIMIT'", "'LINES'", "'LINK'", "'LIST'", "'LOAD'", - "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", "'LOCATION'", "'LOCK'", - "'LOGICAL'", "'LOW_PRIORITY'", "'MANUAL'", "'MAP'", "'MATCH'", "'MATCH_ALL'", - "'MATCH_ANY'", "'MATCH_PHRASE'", "'MATCH_PHRASE_EDGE'", "'MATCH_PHRASE_PREFIX'", - "'MATCH_REGEXP'", "'MATCH_NAME'", "'MATCH_NAME_GLOB'", "'MATERIALIZED'", - "'MAX'", "'MAXVALUE'", "'MEMO'", "'MERGE'", "'MIGRATE'", "'MIGRATIONS'", - "'MIN'", "'MINUS'", "'MINUTE'", "'MODIFY'", "'MONTH'", "'MTMV'", "'NAME'", - "'NAMES'", "'NATURAL'", "'NEGATIVE'", "'NEVER'", "'NEXT'", "'NGRAM_BF'", - "'NO'", "'NO_USE_MV'", "'NON_NULLABLE'", "'NOT'", "'NULL'", "'NULLS'", - "'OBSERVER'", "'OF'", "'OFFSET'", "'ON'", "'ONLY'", "'OPEN'", "'OPTIMIZED'", - "'OR'", "'ORDER'", "'OUTER'", "'OUTFILE'", "'OVER'", "'OVERWRITE'", "'PARAMETER'", - "'PARSED'", "'PARTITION'", "'PARTITIONS'", "'PASSWORD'", "'PASSWORD_EXPIRE'", - "'PASSWORD_HISTORY'", "'PASSWORD_LOCK_TIME'", "'PASSWORD_REUSE'", "'PATH'", - "'PAUSE'", "'PERCENT'", "'PERIOD'", "'PERMISSIVE'", "'PHYSICAL'", "'PI'", - "'?'", "'PLAN'", "'PLAY'", "'PRIVILEGES'", "'PROCESS'", "'PLUGIN'", "'PLUGINS'", - "'POLICY'", "'PRECEDING'", "'PREPARE'", "'PRIMARY'", "'PROC'", "'PROCEDURE'", - "'PROCESSLIST'", "'PROFILE'", "'PROPERTIES'", "'PROPERTY'", "'QUANTILE_STATE'", - "'QUANTILE_UNION'", "'QUERY'", "'QUEUED'", "'QUOTA'", "'QUALIFY'", "'QUARTER'", - "'RANDOM'", "'RANGE'", "'READ'", "'REAL'", "'REBALANCE'", "'RECENT'", - "'RECOVER'", "'RECYCLE'", "'REFRESH'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", - "'RENAME'", "'REPAIR'", "'REPEATABLE'", "'REPLACE'", "'REPLACE_IF_NOT_NULL'", - "'REPLAYER'", "'REPLICA'", "'REPOSITORIES'", "'REPOSITORY'", "'RESOURCE'", - "'RESOURCES'", "'RESTORE'", "'RESTRICTIVE'", "'RESUME'", "'RETURNS'", - "'REVOKE'", "'REWRITTEN'", "'RIGHT'", "'RLIKE'", "'ROLE'", "'ROLES'", - "'ROLLBACK'", "'ROLLUP'", "'ROUTINE'", "'ROW'", "'ROWS'", "'S3'", "'SAMPLE'", - "'SCHEDULE'", "'SCHEDULER'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SELECT'", - "'SEMI'", "'SERIALIZABLE'", "'SESSION'", "'SESSION_USER'", "'SET'", "'SETS'", - "'SET_SESSION_VARIABLE'", "'SHAPE'", "'SHOW'", "'SIGNED'", "'SKEW'", - "'SMALLINT'", "'SNAPSHOT'", "'SONAME'", "'SPLIT'", "'SQL'", "'SQL_BLOCK_RULE'", - "'STAGE'", "'STAGES'", "'START'", "'STARTS'", "'STATS'", "'STATUS'", - "'STOP'", "'STORAGE'", "'STREAM'", "'STREAMING'", "'STRING'", "'STRUCT'", - "'SUM'", "'SUPERUSER'", "'SWITCH'", "'SYNC'", "'SYSTEM'", "'TABLE'", - "'TABLES'", "'TABLESAMPLE'", "'TABLET'", "'TABLETS'", "'TASK'", "'TASKS'", - "'TEMPORARY'", "'TERMINATED'", "'TEXT'", "'THAN'", "'THEN'", "'TIME'", - "'TIMESTAMP'", "'TINYINT'", "'TO'", "'TRANSACTION'", "'TRASH'", "'TREE'", - "'TRIGGERS'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TYPE'", "'TYPE_CAST'", - "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNINSTALL'", "'UNION'", - "'UNIQUE'", "'UNLOCK'", "'UNSET'", "'UNSIGNED'", "'UP'", "'UPDATE'", - "'USE'", "'USER'", "'USE_MV'", "'USING'", "'VALUE'", "'VALUES'", "'VARCHAR'", - "'VARIABLE'", "'VARIABLES'", "'VARIANT'", "'VAULT'", "'VAULTS'", "'VERBOSE'", - "'VERSION'", "'VIEW'", "'VIEWS'", "'WARM'", "'WARNINGS'", "'WEEK'", "'WHEN'", - "'WHERE'", "'WHITELIST'", "'WITH'", "'WORK'", "'WORKLOAD'", "'WRITE'", - "'XOR'", "'YEAR'", null, "'<=>'", null, "'<'", null, "'>'", null, "'+'", - "'-'", "'*'", "'/'", "'%'", "'~'", "'&'", "'&&'", "'!'", "'|'", "'||'", - "'^'", "':'", "'->'", "'/*+'", "'*/'", "'/*'", "'@'", "'@@'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "SEMICOLON", "LEFT_PAREN", "RIGHT_PAREN", "COMMA", "DOT", "DOTDOTDOT", - "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "ACCOUNT_LOCK", - "ACCOUNT_UNLOCK", "ACTIONS", "ADD", "ADMIN", "AFTER", "AGG_STATE", "AGGREGATE", - "ALIAS", "ALL", "ALTER", "ANALYZE", "ANALYZED", "AND", "ANTI", "APPEND", - "ARRAY", "AS", "ASC", "AT", "AUTHORS", "AUTO", "AUTO_INCREMENT", "ALWAYS", - "BACKEND", "BACKENDS", "BACKUP", "BEGIN", "BELONG", "BETWEEN", "BIGINT", - "BIN", "BINARY", "BINLOG", "BITAND", "BITMAP", "BITMAP_EMPTY", "BITMAP_UNION", - "BITOR", "BITXOR", "BLOB", "BOOLEAN", "BRIEF", "BROKER", "BUCKETS", "BUILD", - "BUILTIN", "BULK", "BY", "CACHE", "CACHED", "CALL", "CANCEL", "CASE", - "CAST", "CATALOG", "CATALOGS", "CHAIN", "CHAR", "CHARSET", "CHECK", "CLEAN", - "CLUSTER", "CLUSTERS", "COLLATE", "COLLATION", "COLLECT", "COLOCATE", - "COLUMN", "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETE", - "COMPRESS_TYPE", "COMPUTE", "CONDITIONS", "CONFIG", "CONNECTION", "CONNECTION_ID", - "CONSISTENT", "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CONVERT_LSC", - "COPY", "COUNT", "CREATE", "CREATION", "CRON", "CROSS", "CUBE", "CURRENT", - "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", - "DATETIMEV2", "DATEV2", "DATETIMEV1", "DATEV1", "DAY", "DECIMAL", "DECIMALV2", - "DECIMALV3", "DECOMMISSION", "DEFAULT", "DEFERRED", "DELETE", "DEMAND", - "DESC", "DESCRIBE", "DIAGNOSE", "DIAGNOSIS", "DISK", "DISTINCT", "DISTINCTPC", - "DISTINCTPCSA", "DISTRIBUTED", "DISTRIBUTION", "DIV", "DO", "DORIS_INTERNAL_TABLE_ID", - "DOUBLE", "DROP", "DROPP", "DUAL", "DUMP", "DUPLICATE", "DYNAMIC", "E", - "ELSE", "ENABLE", "ENCRYPTKEY", "ENCRYPTKEYS", "END", "ENDS", "ENGINE", - "ENGINES", "ENTER", "ERRORS", "EVENTS", "EVERY", "EXCEPT", "EXCLUDE", - "EXECUTE", "EXISTS", "EXPIRED", "EXPLAIN", "EXPORT", "EXTENDED", "EXTERNAL", - "EXTRACT", "FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FEATURE", "FIELDS", - "FILE", "FILTER", "FIRST", "FLOAT", "FOLLOWER", "FOLLOWING", "FOR", "FOREIGN", - "FORCE", "FORMAT", "FREE", "FROM", "FRONTEND", "FRONTENDS", "FULL", "FUNCTION", - "FUNCTIONS", "GENERATED", "GENERIC", "GLOBAL", "GRANT", "GRANTS", "GRAPH", - "GROUP", "GROUPING", "GROUPS", "HASH", "HAVING", "HDFS", "HELP", "HISTOGRAM", - "HLL", "HLL_UNION", "HOSTNAME", "HOTSPOT", "HOUR", "HUB", "IDENTIFIED", - "IF", "IGNORE", "IMMEDIATE", "IN", "INCREMENTAL", "INDEX", "INDEXES", - "INFILE", "INNER", "INSERT", "INSTALL", "INT", "INTEGER", "INTERMEDIATE", - "INTERSECT", "INTERVAL", "INTO", "INVERTED", "IPV4", "IPV6", "IS", "IS_NOT_NULL_PRED", - "IS_NULL_PRED", "ISNULL", "ISOLATION", "JOB", "JOBS", "JOIN", "JSON", - "JSONB", "KEY", "KEYS", "KILL", "LABEL", "LARGEINT", "LAST", "LATERAL", - "LDAP", "LDAP_ADMIN_PASSWORD", "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", - "LINES", "LINK", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", - "LOCATION", "LOCK", "LOGICAL", "LOW_PRIORITY", "MANUAL", "MAP", "MATCH", - "MATCH_ALL", "MATCH_ANY", "MATCH_PHRASE", "MATCH_PHRASE_EDGE", "MATCH_PHRASE_PREFIX", - "MATCH_REGEXP", "MATCH_NAME", "MATCH_NAME_GLOB", "MATERIALIZED", "MAX", - "MAXVALUE", "MEMO", "MERGE", "MIGRATE", "MIGRATIONS", "MIN", "MINUS", - "MINUTE", "MODIFY", "MONTH", "MTMV", "NAME", "NAMES", "NATURAL", "NEGATIVE", - "NEVER", "NEXT", "NGRAM_BF", "NO", "NO_USE_MV", "NON_NULLABLE", "NOT", - "NULL", "NULLS", "OBSERVER", "OF", "OFFSET", "ON", "ONLY", "OPEN", "OPTIMIZED", - "OR", "ORDER", "OUTER", "OUTFILE", "OVER", "OVERWRITE", "PARAMETER", - "PARSED", "PARTITION", "PARTITIONS", "PASSWORD", "PASSWORD_EXPIRE", "PASSWORD_HISTORY", - "PASSWORD_LOCK_TIME", "PASSWORD_REUSE", "PATH", "PAUSE", "PERCENT", "PERIOD", - "PERMISSIVE", "PHYSICAL", "PI", "PLACEHOLDER", "PLAN", "PLAY", "PRIVILEGES", - "PROCESS", "PLUGIN", "PLUGINS", "POLICY", "PRECEDING", "PREPARE", "PRIMARY", - "PROC", "PROCEDURE", "PROCESSLIST", "PROFILE", "PROPERTIES", "PROPERTY", - "QUANTILE_STATE", "QUANTILE_UNION", "QUERY", "QUEUED", "QUOTA", "QUALIFY", - "QUARTER", "RANDOM", "RANGE", "READ", "REAL", "REBALANCE", "RECENT", - "RECOVER", "RECYCLE", "REFRESH", "REFERENCES", "REGEXP", "RELEASE", "RENAME", - "REPAIR", "REPEATABLE", "REPLACE", "REPLACE_IF_NOT_NULL", "REPLAYER", - "REPLICA", "REPOSITORIES", "REPOSITORY", "RESOURCE", "RESOURCES", "RESTORE", - "RESTRICTIVE", "RESUME", "RETURNS", "REVOKE", "REWRITTEN", "RIGHT", "RLIKE", - "ROLE", "ROLES", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW", "ROWS", "S3", - "SAMPLE", "SCHEDULE", "SCHEDULER", "SCHEMA", "SCHEMAS", "SECOND", "SELECT", - "SEMI", "SERIALIZABLE", "SESSION", "SESSION_USER", "SET", "SETS", "SET_SESSION_VARIABLE", - "SHAPE", "SHOW", "SIGNED", "SKEW", "SMALLINT", "SNAPSHOT", "SONAME", - "SPLIT", "SQL", "SQL_BLOCK_RULE", "STAGE", "STAGES", "START", "STARTS", - "STATS", "STATUS", "STOP", "STORAGE", "STREAM", "STREAMING", "STRING", - "STRUCT", "SUM", "SUPERUSER", "SWITCH", "SYNC", "SYSTEM", "TABLE", "TABLES", - "TABLESAMPLE", "TABLET", "TABLETS", "TASK", "TASKS", "TEMPORARY", "TERMINATED", - "TEXT", "THAN", "THEN", "TIME", "TIMESTAMP", "TINYINT", "TO", "TRANSACTION", - "TRASH", "TREE", "TRIGGERS", "TRIM", "TRUE", "TRUNCATE", "TYPE", "TYPECAST", - "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNINSTALL", "UNION", "UNIQUE", - "UNLOCK", "UNSET", "UNSIGNED", "UP", "UPDATE", "USE", "USER", "USE_MV", - "USING", "VALUE", "VALUES", "VARCHAR", "VARIABLE", "VARIABLES", "VARIANT", - "VAULT", "VAULTS", "VERBOSE", "VERSION", "VIEW", "VIEWS", "WARM", "WARNINGS", - "WEEK", "WHEN", "WHERE", "WHITELIST", "WITH", "WORK", "WORKLOAD", "WRITE", - "XOR", "YEAR", "EQ", "NSEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", - "SUBTRACT", "ASTERISK", "SLASH", "MOD", "TILDE", "AMPERSAND", "LOGICALAND", - "LOGICALNOT", "PIPE", "DOUBLEPIPES", "HAT", "COLON", "ARROW", "HINT_START", - "HINT_END", "COMMENT_START", "ATSIGN", "DOUBLEATSIGN", "STRING_LITERAL", - "LEADING_STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", - "INTEGER_VALUE", "EXPONENT_VALUE", "DECIMAL_VALUE", "BIGDECIMAL_LITERAL", - "IDENTIFIER", "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "FROM_DUAL", "WS", "UNRECOGNIZED" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - @Override - public String getGrammarFileName() { return "DorisParser.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public ATN getATN() { return _ATN; } - - - public boolean doris_legacy_SQL_syntax = true; - - public DorisParser(TokenStream input) { - super(input); - _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @SuppressWarnings("CheckReturnValue") - public static class MultiStatementsContext extends ParserRuleContext { - public TerminalNode EOF() { return getToken(DorisParser.EOF, 0); } - public List SEMICOLON() { return getTokens(DorisParser.SEMICOLON); } - public TerminalNode SEMICOLON(int i) { - return getToken(DorisParser.SEMICOLON, i); - } - public List statement() { - return getRuleContexts(StatementContext.class); - } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); - } - public MultiStatementsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multiStatements; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMultiStatements(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMultiStatements(this); - } - } - - public final MultiStatementsContext multiStatements() throws RecognitionException { - MultiStatementsContext _localctx = new MultiStatementsContext(_ctx, getState()); - enterRule(_localctx, 0, RULE_multiStatements); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(461); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,0,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(458); - match(SEMICOLON); - } - } - } - setState(463); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,0,_ctx); - } - setState(465); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -4539628012066275324L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 234187180791038977L) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & -9205357638294962175L) != 0) || ((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & 9070979317763L) != 0) || ((((_la - 329)) & ~0x3f) == 0 && ((1L << (_la - 329)) & -9034185324535742335L) != 0) || ((((_la - 404)) & ~0x3f) == 0 && ((1L << (_la - 404)) & -9079256835876191711L) != 0) || ((((_la - 470)) & ~0x3f) == 0 && ((1L << (_la - 470)) & 136315955L) != 0)) { - { - setState(464); - statement(); - } - } - - setState(475); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,3,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(468); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(467); - match(SEMICOLON); - } - } - setState(470); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==SEMICOLON ); - setState(472); - statement(); - } - } - } - setState(477); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,3,_ctx); - } - setState(481); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==SEMICOLON) { - { - { - setState(478); - match(SEMICOLON); - } - } - setState(483); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(484); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SingleStatementContext extends ParserRuleContext { - public TerminalNode EOF() { return getToken(DorisParser.EOF, 0); } - public List SEMICOLON() { return getTokens(DorisParser.SEMICOLON); } - public TerminalNode SEMICOLON(int i) { - return getToken(DorisParser.SEMICOLON, i); - } - public StatementContext statement() { - return getRuleContext(StatementContext.class,0); - } - public SingleStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSingleStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSingleStatement(this); - } - } - - public final SingleStatementContext singleStatement() throws RecognitionException { - SingleStatementContext _localctx = new SingleStatementContext(_ctx, getState()); - enterRule(_localctx, 2, RULE_singleStatement); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(489); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,5,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(486); - match(SEMICOLON); - } - } - } - setState(491); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,5,_ctx); - } - setState(493); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -4539628012066275324L) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & 234187180791038977L) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & -9205357638294962175L) != 0) || ((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & 9070979317763L) != 0) || ((((_la - 329)) & ~0x3f) == 0 && ((1L << (_la - 329)) & -9034185324535742335L) != 0) || ((((_la - 404)) & ~0x3f) == 0 && ((1L << (_la - 404)) & -9079256835876191711L) != 0) || ((((_la - 470)) & ~0x3f) == 0 && ((1L << (_la - 470)) & 136315955L) != 0)) { - { - setState(492); - statement(); - } - } - - setState(498); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==SEMICOLON) { - { - { - setState(495); - match(SEMICOLON); - } - } - setState(500); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(501); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StatementContext extends ParserRuleContext { - public StatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_statement; } - - public StatementContext() { } - public void copyFrom(StatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateProcedureContext extends StatementContext { - public MultipartIdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateProcedureContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateProcedure(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateProcedure(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StatementBaseAliasContext extends StatementContext { - public StatementBaseContext statementBase() { - return getRuleContext(StatementBaseContext.class,0); - } - public StatementBaseAliasContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStatementBaseAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStatementBaseAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowProcedureStatusContext extends StatementContext { - public ValueExpressionContext pattern; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public ShowProcedureStatusContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowProcedureStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowProcedureStatus(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateProcedureContext extends StatementContext { - public MultipartIdentifierContext name; - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } - public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode OR() { return getToken(DorisParser.OR, 0); } - public CreateProcedureContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateProcedure(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateProcedure(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowConfigContext extends StatementContext { - public Token type; - public ValueExpressionContext pattern; - public Token backendId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CONFIG() { return getToken(DorisParser.CONFIG, 0); } - public TerminalNode FRONTEND() { return getToken(DorisParser.FRONTEND, 0); } - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowConfigContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowConfig(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowConfig(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CallProcedureContext extends StatementContext { - public MultipartIdentifierContext name; - public TerminalNode CALL() { return getToken(DorisParser.CALL, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CallProcedureContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCallProcedure(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCallProcedure(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropProcedureContext extends StatementContext { - public MultipartIdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode PROCEDURE() { return getToken(DorisParser.PROCEDURE, 0); } - public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropProcedureContext(StatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropProcedure(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropProcedure(this); - } - } - - public final StatementContext statement() throws RecognitionException { - StatementContext _localctx = new StatementContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_statement); - int _la; - try { - int _alt; - setState(577); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { - case 1: - _localctx = new StatementBaseAliasContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(503); - statementBase(); - } - break; - case 2: - _localctx = new CallProcedureContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(504); - match(CALL); - setState(505); - ((CallProcedureContext)_localctx).name = multipartIdentifier(); - setState(506); - match(LEFT_PAREN); - setState(515); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(507); - expression(); - setState(512); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(508); - match(COMMA); - setState(509); - expression(); - } - } - setState(514); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(517); - match(RIGHT_PAREN); - } - break; - case 3: - _localctx = new CreateProcedureContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(526); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ALTER: - { - setState(519); - match(ALTER); - } - break; - case CREATE: - { - setState(520); - match(CREATE); - setState(523); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OR) { - { - setState(521); - match(OR); - setState(522); - match(REPLACE); - } - } - - } - break; - case REPLACE: - { - setState(525); - match(REPLACE); - } - break; - default: - throw new NoViableAltException(this); - } - setState(528); - _la = _input.LA(1); - if ( !(_la==PROC || _la==PROCEDURE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(529); - ((CreateProcedureContext)_localctx).name = multipartIdentifier(); - setState(530); - match(LEFT_PAREN); - setState(534); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,12,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(531); - matchWildcard(); - } - } - } - setState(536); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,12,_ctx); - } - setState(537); - match(RIGHT_PAREN); - setState(541); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,13,_ctx); - while ( _alt!=1 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1+1 ) { - { - { - setState(538); - matchWildcard(); - } - } - } - setState(543); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,13,_ctx); - } - } - break; - case 4: - _localctx = new DropProcedureContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(544); - match(DROP); - setState(545); - _la = _input.LA(1); - if ( !(_la==PROC || _la==PROCEDURE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(548); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(546); - match(IF); - setState(547); - match(EXISTS); - } - } - - setState(550); - ((DropProcedureContext)_localctx).name = multipartIdentifier(); - } - break; - case 5: - _localctx = new ShowProcedureStatusContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(551); - match(SHOW); - setState(552); - _la = _input.LA(1); - if ( !(_la==FUNCTION || _la==PROCEDURE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(553); - match(STATUS); - setState(557); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LIKE: - { - setState(554); - match(LIKE); - setState(555); - ((ShowProcedureStatusContext)_localctx).pattern = valueExpression(0); - } - break; - case WHERE: - { - setState(556); - whereClause(); - } - break; - case EOF: - case SEMICOLON: - break; - default: - break; - } - } - break; - case 6: - _localctx = new ShowCreateProcedureContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(559); - match(SHOW); - setState(560); - match(CREATE); - setState(561); - match(PROCEDURE); - setState(562); - ((ShowCreateProcedureContext)_localctx).name = multipartIdentifier(); - } - break; - case 7: - _localctx = new ShowConfigContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(564); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ADMIN) { - { - setState(563); - match(ADMIN); - } - } - - setState(566); - match(SHOW); - setState(567); - ((ShowConfigContext)_localctx).type = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==BACKEND || _la==FRONTEND) ) { - ((ShowConfigContext)_localctx).type = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(568); - match(CONFIG); - setState(571); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(569); - match(LIKE); - setState(570); - ((ShowConfigContext)_localctx).pattern = valueExpression(0); - } - } - - setState(575); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(573); - match(FROM); - setState(574); - ((ShowConfigContext)_localctx).backendId = match(INTEGER_VALUE); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StatementBaseContext extends ParserRuleContext { - public StatementBaseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_statementBase; } - - public StatementBaseContext() { } - public void copyFrom(StatementBaseContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedSetStatementAliasContext extends StatementBaseContext { - public SupportedSetStatementContext supportedSetStatement() { - return getRuleContext(SupportedSetStatementContext.class,0); - } - public SupportedSetStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedSetStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedSetStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedDmlStatementAliasContext extends StatementBaseContext { - public SupportedDmlStatementContext supportedDmlStatement() { - return getRuleContext(SupportedDmlStatementContext.class,0); - } - public SupportedDmlStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedDmlStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedDmlStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedLoadStatementAliasContext extends StatementBaseContext { - public SupportedLoadStatementContext supportedLoadStatement() { - return getRuleContext(SupportedLoadStatementContext.class,0); - } - public SupportedLoadStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedLoadStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedLoadStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ConstraintStatementAliasContext extends StatementBaseContext { - public ConstraintStatementContext constraintStatement() { - return getRuleContext(ConstraintStatementContext.class,0); - } - public ConstraintStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConstraintStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConstraintStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedAlterStatementAliasContext extends StatementBaseContext { - public SupportedAlterStatementContext supportedAlterStatement() { - return getRuleContext(SupportedAlterStatementContext.class,0); - } - public SupportedAlterStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedAlterStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedAlterStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedCleanStatementAliasContext extends StatementBaseContext { - public SupportedCleanStatementContext supportedCleanStatement() { - return getRuleContext(SupportedCleanStatementContext.class,0); - } - public SupportedCleanStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedCleanStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedCleanStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedRecoverStatementAliasContext extends StatementBaseContext { - public SupportedRecoverStatementContext supportedRecoverStatement() { - return getRuleContext(SupportedRecoverStatementContext.class,0); - } - public SupportedRecoverStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedRecoverStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedRecoverStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedUnsetStatementAliasContext extends StatementBaseContext { - public SupportedUnsetStatementContext supportedUnsetStatement() { - return getRuleContext(SupportedUnsetStatementContext.class,0); - } - public SupportedUnsetStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedUnsetStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedUnsetStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedJobStatementAliasContext extends StatementBaseContext { - public SupportedJobStatementContext supportedJobStatement() { - return getRuleContext(SupportedJobStatementContext.class,0); - } - public SupportedJobStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedJobStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedJobStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedUseStatementAliasContext extends StatementBaseContext { - public SupportedUseStatementContext supportedUseStatement() { - return getRuleContext(SupportedUseStatementContext.class,0); - } - public SupportedUseStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedUseStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedUseStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedContext extends StatementBaseContext { - public UnsupportedStatementContext unsupportedStatement() { - return getRuleContext(UnsupportedStatementContext.class,0); - } - public UnsupportedContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnsupported(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnsupported(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MaterializedViewStatementAliasContext extends StatementBaseContext { - public MaterializedViewStatementContext materializedViewStatement() { - return getRuleContext(MaterializedViewStatementContext.class,0); - } - public MaterializedViewStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMaterializedViewStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMaterializedViewStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StatementDefaultContext extends StatementBaseContext { - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public ExplainContext explain() { - return getRuleContext(ExplainContext.class,0); - } - public OutFileClauseContext outFileClause() { - return getRuleContext(OutFileClauseContext.class,0); - } - public StatementDefaultContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStatementDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStatementDefault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedAdminStatementAliasContext extends StatementBaseContext { - public SupportedAdminStatementContext supportedAdminStatement() { - return getRuleContext(SupportedAdminStatementContext.class,0); - } - public SupportedAdminStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedAdminStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedAdminStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedStatsStatementAliasContext extends StatementBaseContext { - public SupportedStatsStatementContext supportedStatsStatement() { - return getRuleContext(SupportedStatsStatementContext.class,0); - } - public SupportedStatsStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedStatsStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedStatsStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedDescribeStatementAliasContext extends StatementBaseContext { - public SupportedDescribeStatementContext supportedDescribeStatement() { - return getRuleContext(SupportedDescribeStatementContext.class,0); - } - public SupportedDescribeStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedDescribeStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedDescribeStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedDropStatementAliasContext extends StatementBaseContext { - public SupportedDropStatementContext supportedDropStatement() { - return getRuleContext(SupportedDropStatementContext.class,0); - } - public SupportedDropStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedDropStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedDropStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedCancelStatementAliasContext extends StatementBaseContext { - public SupportedCancelStatementContext supportedCancelStatement() { - return getRuleContext(SupportedCancelStatementContext.class,0); - } - public SupportedCancelStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedCancelStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedCancelStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedOtherStatementAliasContext extends StatementBaseContext { - public SupportedOtherStatementContext supportedOtherStatement() { - return getRuleContext(SupportedOtherStatementContext.class,0); - } - public SupportedOtherStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedOtherStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedOtherStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedCreateStatementAliasContext extends StatementBaseContext { - public SupportedCreateStatementContext supportedCreateStatement() { - return getRuleContext(SupportedCreateStatementContext.class,0); - } - public SupportedCreateStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedCreateStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedCreateStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedShowStatementAliasContext extends StatementBaseContext { - public SupportedShowStatementContext supportedShowStatement() { - return getRuleContext(SupportedShowStatementContext.class,0); - } - public SupportedShowStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedShowStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedShowStatementAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SupportedRefreshStatementAliasContext extends StatementBaseContext { - public SupportedRefreshStatementContext supportedRefreshStatement() { - return getRuleContext(SupportedRefreshStatementContext.class,0); - } - public SupportedRefreshStatementAliasContext(StatementBaseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedRefreshStatementAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedRefreshStatementAlias(this); - } - } - - public final StatementBaseContext statementBase() throws RecognitionException { - StatementBaseContext _localctx = new StatementBaseContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_statementBase); - int _la; - try { - setState(607); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { - case 1: - _localctx = new StatementDefaultContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(580); - _errHandler.sync(this); - _la = _input.LA(1); - if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { - { - setState(579); - explain(); - } - } - - setState(582); - query(); - setState(584); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INTO) { - { - setState(583); - outFileClause(); - } - } - - } - break; - case 2: - _localctx = new SupportedDmlStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(586); - supportedDmlStatement(); - } - break; - case 3: - _localctx = new SupportedCreateStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(587); - supportedCreateStatement(); - } - break; - case 4: - _localctx = new SupportedAlterStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(588); - supportedAlterStatement(); - } - break; - case 5: - _localctx = new MaterializedViewStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(589); - materializedViewStatement(); - } - break; - case 6: - _localctx = new SupportedJobStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(590); - supportedJobStatement(); - } - break; - case 7: - _localctx = new ConstraintStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(591); - constraintStatement(); - } - break; - case 8: - _localctx = new SupportedCleanStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(592); - supportedCleanStatement(); - } - break; - case 9: - _localctx = new SupportedDescribeStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(593); - supportedDescribeStatement(); - } - break; - case 10: - _localctx = new SupportedDropStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(594); - supportedDropStatement(); - } - break; - case 11: - _localctx = new SupportedSetStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(595); - supportedSetStatement(); - } - break; - case 12: - _localctx = new SupportedUnsetStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(596); - supportedUnsetStatement(); - } - break; - case 13: - _localctx = new SupportedRefreshStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(597); - supportedRefreshStatement(); - } - break; - case 14: - _localctx = new SupportedShowStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(598); - supportedShowStatement(); - } - break; - case 15: - _localctx = new SupportedLoadStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(599); - supportedLoadStatement(); - } - break; - case 16: - _localctx = new SupportedCancelStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 16); - { - setState(600); - supportedCancelStatement(); - } - break; - case 17: - _localctx = new SupportedRecoverStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(601); - supportedRecoverStatement(); - } - break; - case 18: - _localctx = new SupportedAdminStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 18); - { - setState(602); - supportedAdminStatement(); - } - break; - case 19: - _localctx = new SupportedUseStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 19); - { - setState(603); - supportedUseStatement(); - } - break; - case 20: - _localctx = new SupportedOtherStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 20); - { - setState(604); - supportedOtherStatement(); - } - break; - case 21: - _localctx = new SupportedStatsStatementAliasContext(_localctx); - enterOuterAlt(_localctx, 21); - { - setState(605); - supportedStatsStatement(); - } - break; - case 22: - _localctx = new UnsupportedContext(_localctx); - enterOuterAlt(_localctx, 22); - { - setState(606); - unsupportedStatement(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedStatementContext extends ParserRuleContext { - public UnsupportedUseStatementContext unsupportedUseStatement() { - return getRuleContext(UnsupportedUseStatementContext.class,0); - } - public UnsupportedDmlStatementContext unsupportedDmlStatement() { - return getRuleContext(UnsupportedDmlStatementContext.class,0); - } - public UnsupportedKillStatementContext unsupportedKillStatement() { - return getRuleContext(UnsupportedKillStatementContext.class,0); - } - public UnsupportedCreateStatementContext unsupportedCreateStatement() { - return getRuleContext(UnsupportedCreateStatementContext.class,0); - } - public UnsupportedDropStatementContext unsupportedDropStatement() { - return getRuleContext(UnsupportedDropStatementContext.class,0); - } - public UnsupportedStatsStatementContext unsupportedStatsStatement() { - return getRuleContext(UnsupportedStatsStatementContext.class,0); - } - public UnsupportedAlterStatementContext unsupportedAlterStatement() { - return getRuleContext(UnsupportedAlterStatementContext.class,0); - } - public UnsupportedGrantRevokeStatementContext unsupportedGrantRevokeStatement() { - return getRuleContext(UnsupportedGrantRevokeStatementContext.class,0); - } - public UnsupportedAdminStatementContext unsupportedAdminStatement() { - return getRuleContext(UnsupportedAdminStatementContext.class,0); - } - public UnsupportedTransactionStatementContext unsupportedTransactionStatement() { - return getRuleContext(UnsupportedTransactionStatementContext.class,0); - } - public UnsupportedCancelStatementContext unsupportedCancelStatement() { - return getRuleContext(UnsupportedCancelStatementContext.class,0); - } - public UnsupportedCleanStatementContext unsupportedCleanStatement() { - return getRuleContext(UnsupportedCleanStatementContext.class,0); - } - public UnsupportedRefreshStatementContext unsupportedRefreshStatement() { - return getRuleContext(UnsupportedRefreshStatementContext.class,0); - } - public UnsupportedLoadStatementContext unsupportedLoadStatement() { - return getRuleContext(UnsupportedLoadStatementContext.class,0); - } - public UnsupportedShowStatementContext unsupportedShowStatement() { - return getRuleContext(UnsupportedShowStatementContext.class,0); - } - public UnsupportedOtherStatementContext unsupportedOtherStatement() { - return getRuleContext(UnsupportedOtherStatementContext.class,0); - } - public UnsupportedStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnsupportedStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnsupportedStatement(this); - } - } - - public final UnsupportedStatementContext unsupportedStatement() throws RecognitionException { - UnsupportedStatementContext _localctx = new UnsupportedStatementContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_unsupportedStatement); - try { - setState(625); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(609); - unsupportedUseStatement(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(610); - unsupportedDmlStatement(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(611); - unsupportedKillStatement(); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(612); - unsupportedCreateStatement(); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(613); - unsupportedDropStatement(); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(614); - unsupportedStatsStatement(); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(615); - unsupportedAlterStatement(); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(616); - unsupportedGrantRevokeStatement(); - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(617); - unsupportedAdminStatement(); - } - break; - case 10: - enterOuterAlt(_localctx, 10); - { - setState(618); - unsupportedTransactionStatement(); - } - break; - case 11: - enterOuterAlt(_localctx, 11); - { - setState(619); - unsupportedCancelStatement(); - } - break; - case 12: - enterOuterAlt(_localctx, 12); - { - setState(620); - unsupportedCleanStatement(); - } - break; - case 13: - enterOuterAlt(_localctx, 13); - { - setState(621); - unsupportedRefreshStatement(); - } - break; - case 14: - enterOuterAlt(_localctx, 14); - { - setState(622); - unsupportedLoadStatement(); - } - break; - case 15: - enterOuterAlt(_localctx, 15); - { - setState(623); - unsupportedShowStatement(); - } - break; - case 16: - enterOuterAlt(_localctx, 16); - { - setState(624); - unsupportedOtherStatement(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MaterializedViewStatementContext extends ParserRuleContext { - public MaterializedViewStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_materializedViewStatement; } - - public MaterializedViewStatementContext() { } - public void copyFrom(MaterializedViewStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RefreshMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode COMPLETE() { return getToken(DorisParser.COMPLETE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public RefreshMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshMTMV(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public IdentifierContext newName; - public PropertyItemListContext fileProperties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public List MATERIALIZED() { return getTokens(DorisParser.MATERIALIZED); } - public TerminalNode MATERIALIZED(int i) { - return getToken(DorisParser.MATERIALIZED, i); - } - public List VIEW() { return getTokens(DorisParser.VIEW); } - public TerminalNode VIEW(int i) { - return getToken(DorisParser.VIEW, i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public RefreshMethodContext refreshMethod() { - return getRuleContext(RefreshMethodContext.class,0); - } - public RefreshTriggerContext refreshTrigger() { - return getRuleContext(RefreshTriggerContext.class,0); - } - public AlterMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterMTMV(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public SimpleColumnDefsContext cols; - public IdentifierListContext keys; - public IdentifierListContext hashKeys; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public BuildModeContext buildMode() { - return getRuleContext(BuildModeContext.class,0); - } - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public List BY() { return getTokens(DorisParser.BY); } - public TerminalNode BY(int i) { - return getToken(DorisParser.BY, i); - } - public MvPartitionContext mvPartition() { - return getRuleContext(MvPartitionContext.class,0); - } - public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public SimpleColumnDefsContext simpleColumnDefs() { - return getRuleContext(SimpleColumnDefsContext.class,0); - } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } - public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } - public RefreshMethodContext refreshMethod() { - return getRuleContext(RefreshMethodContext.class,0); - } - public RefreshTriggerContext refreshTrigger() { - return getRuleContext(RefreshTriggerContext.class,0); - } - public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } - public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public CreateMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateMTMV(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ResumeMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ResumeMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeMTMV(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateMTMV(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelMTMVTaskContext extends MaterializedViewStatementContext { - public Token taskId; - public MultipartIdentifierContext mvName; - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public CancelMTMVTaskContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelMTMVTask(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelMTMVTask(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PauseMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PauseMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseMTMV(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropMTMVContext extends MaterializedViewStatementContext { - public MultipartIdentifierContext mvName; - public MultipartIdentifierContext tableName; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public DropMTMVContext(MaterializedViewStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropMTMV(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropMTMV(this); - } - } - - public final MaterializedViewStatementContext materializedViewStatement() throws RecognitionException { - MaterializedViewStatementContext _localctx = new MaterializedViewStatementContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_materializedViewStatement); - int _la; - try { - setState(766); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CREATE: - _localctx = new CreateMTMVContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(627); - match(CREATE); - setState(628); - match(MATERIALIZED); - setState(629); - match(VIEW); - setState(633); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(630); - match(IF); - setState(631); - match(NOT); - setState(632); - match(EXISTS); - } - } - - setState(635); - ((CreateMTMVContext)_localctx).mvName = multipartIdentifier(); - setState(640); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(636); - match(LEFT_PAREN); - setState(637); - ((CreateMTMVContext)_localctx).cols = simpleColumnDefs(); - setState(638); - match(RIGHT_PAREN); - } - } - - setState(643); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BUILD) { - { - setState(642); - buildMode(); - } - } - - setState(652); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==REFRESH) { - { - setState(645); - match(REFRESH); - setState(647); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AUTO || _la==COMPLETE) { - { - setState(646); - refreshMethod(); - } - } - - setState(650); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(649); - refreshTrigger(); - } - } - - } - } - - setState(659); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DUPLICATE || _la==KEY) { - { - setState(655); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DUPLICATE) { - { - setState(654); - match(DUPLICATE); - } - } - - setState(657); - match(KEY); - setState(658); - ((CreateMTMVContext)_localctx).keys = identifierList(); - } - } - - setState(663); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(661); - match(COMMENT); - setState(662); - match(STRING_LITERAL); - } - } - - setState(671); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(665); - match(PARTITION); - setState(666); - match(BY); - setState(667); - match(LEFT_PAREN); - setState(668); - mvPartition(); - setState(669); - match(RIGHT_PAREN); - } - } - - setState(684); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DISTRIBUTED) { - { - setState(673); - match(DISTRIBUTED); - setState(674); - match(BY); - setState(678); - _errHandler.sync(this); - switch (_input.LA(1)) { - case HASH: - { - setState(675); - match(HASH); - setState(676); - ((CreateMTMVContext)_localctx).hashKeys = identifierList(); - } - break; - case RANDOM: - { - setState(677); - match(RANDOM); - } - break; - default: - throw new NoViableAltException(this); - } - setState(682); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BUCKETS) { - { - setState(680); - match(BUCKETS); - setState(681); - _la = _input.LA(1); - if ( !(_la==AUTO || _la==INTEGER_VALUE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - } - } - - setState(687); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(686); - propertyClause(); - } - } - - setState(689); - match(AS); - setState(690); - query(); - } - break; - case REFRESH: - _localctx = new RefreshMTMVContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(692); - match(REFRESH); - setState(693); - match(MATERIALIZED); - setState(694); - match(VIEW); - setState(695); - ((RefreshMTMVContext)_localctx).mvName = multipartIdentifier(); - setState(699); - _errHandler.sync(this); - switch (_input.LA(1)) { - case PARTITION: - case PARTITIONS: - case TEMPORARY: - { - setState(696); - partitionSpec(); - } - break; - case COMPLETE: - { - setState(697); - match(COMPLETE); - } - break; - case AUTO: - { - setState(698); - match(AUTO); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case ALTER: - _localctx = new AlterMTMVContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(701); - match(ALTER); - setState(702); - match(MATERIALIZED); - setState(703); - match(VIEW); - setState(704); - ((AlterMTMVContext)_localctx).mvName = multipartIdentifier(); - setState(728); - _errHandler.sync(this); - switch (_input.LA(1)) { - case RENAME: - { - { - setState(705); - match(RENAME); - setState(706); - ((AlterMTMVContext)_localctx).newName = identifier(); - } - } - break; - case REFRESH: - { - { - setState(707); - match(REFRESH); - setState(713); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) { - case 1: - { - setState(708); - refreshMethod(); - } - break; - case 2: - { - setState(709); - refreshTrigger(); - } - break; - case 3: - { - setState(710); - refreshMethod(); - setState(711); - refreshTrigger(); - } - break; - } - } - } - break; - case REPLACE: - { - setState(715); - match(REPLACE); - setState(716); - match(WITH); - setState(717); - match(MATERIALIZED); - setState(718); - match(VIEW); - setState(719); - ((AlterMTMVContext)_localctx).newName = identifier(); - setState(721); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(720); - propertyClause(); - } - } - - } - break; - case SET: - { - { - setState(723); - match(SET); - setState(724); - match(LEFT_PAREN); - setState(725); - ((AlterMTMVContext)_localctx).fileProperties = propertyItemList(); - setState(726); - match(RIGHT_PAREN); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case DROP: - _localctx = new DropMTMVContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(730); - match(DROP); - setState(731); - match(MATERIALIZED); - setState(732); - match(VIEW); - setState(735); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(733); - match(IF); - setState(734); - match(EXISTS); - } - } - - setState(737); - ((DropMTMVContext)_localctx).mvName = multipartIdentifier(); - setState(740); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(738); - match(ON); - setState(739); - ((DropMTMVContext)_localctx).tableName = multipartIdentifier(); - } - } - - } - break; - case PAUSE: - _localctx = new PauseMTMVContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(742); - match(PAUSE); - setState(743); - match(MATERIALIZED); - setState(744); - match(VIEW); - setState(745); - match(JOB); - setState(746); - match(ON); - setState(747); - ((PauseMTMVContext)_localctx).mvName = multipartIdentifier(); - } - break; - case RESUME: - _localctx = new ResumeMTMVContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(748); - match(RESUME); - setState(749); - match(MATERIALIZED); - setState(750); - match(VIEW); - setState(751); - match(JOB); - setState(752); - match(ON); - setState(753); - ((ResumeMTMVContext)_localctx).mvName = multipartIdentifier(); - } - break; - case CANCEL: - _localctx = new CancelMTMVTaskContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(754); - match(CANCEL); - setState(755); - match(MATERIALIZED); - setState(756); - match(VIEW); - setState(757); - match(TASK); - setState(758); - ((CancelMTMVTaskContext)_localctx).taskId = match(INTEGER_VALUE); - setState(759); - match(ON); - setState(760); - ((CancelMTMVTaskContext)_localctx).mvName = multipartIdentifier(); - } - break; - case SHOW: - _localctx = new ShowCreateMTMVContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(761); - match(SHOW); - setState(762); - match(CREATE); - setState(763); - match(MATERIALIZED); - setState(764); - match(VIEW); - setState(765); - ((ShowCreateMTMVContext)_localctx).mvName = multipartIdentifier(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedJobStatementContext extends ParserRuleContext { - public SupportedJobStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedJobStatement; } - - public SupportedJobStatementContext() { } - public void copyFrom(SupportedJobStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelJobTaskContext extends SupportedJobStatementContext { - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public CancelJobTaskContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelJobTask(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelJobTask(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ResumeJobContext extends SupportedJobStatementContext { - public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ResumeJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropJobContext extends SupportedJobStatementContext { - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public DropJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateScheduledJobContext extends SupportedJobStatementContext { - public MultipartIdentifierContext label; - public Token timeInterval; - public IdentifierContext timeUnit; - public Token startTime; - public Token endsTime; - public Token atTime; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode SCHEDULE() { return getToken(DorisParser.SCHEDULE, 0); } - public TerminalNode DO() { return getToken(DorisParser.DO, 0); } - public SupportedDmlStatementContext supportedDmlStatement() { - return getRuleContext(SupportedDmlStatementContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public TerminalNode EVERY() { return getToken(DorisParser.EVERY, 0); } - public TerminalNode AT() { return getToken(DorisParser.AT, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode CURRENT_TIMESTAMP() { return getToken(DorisParser.CURRENT_TIMESTAMP, 0); } - public TerminalNode STARTS() { return getToken(DorisParser.STARTS, 0); } - public TerminalNode ENDS() { return getToken(DorisParser.ENDS, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public CreateScheduledJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateScheduledJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateScheduledJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PauseJobContext extends SupportedJobStatementContext { - public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public PauseJobContext(SupportedJobStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseJob(this); - } - } - - public final SupportedJobStatementContext supportedJobStatement() throws RecognitionException { - SupportedJobStatementContext _localctx = new SupportedJobStatementContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_supportedJobStatement); - int _la; - try { - setState(824); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CREATE: - _localctx = new CreateScheduledJobContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(768); - match(CREATE); - setState(769); - match(JOB); - setState(770); - ((CreateScheduledJobContext)_localctx).label = multipartIdentifier(); - setState(771); - match(ON); - setState(772); - match(SCHEDULE); - setState(792); - _errHandler.sync(this); - switch (_input.LA(1)) { - case EVERY: - { - { - setState(773); - match(EVERY); - setState(774); - ((CreateScheduledJobContext)_localctx).timeInterval = match(INTEGER_VALUE); - setState(775); - ((CreateScheduledJobContext)_localctx).timeUnit = identifier(); - setState(781); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STARTS) { - { - setState(776); - match(STARTS); - setState(779); - _errHandler.sync(this); - switch (_input.LA(1)) { - case STRING_LITERAL: - { - setState(777); - ((CreateScheduledJobContext)_localctx).startTime = match(STRING_LITERAL); - } - break; - case CURRENT_TIMESTAMP: - { - setState(778); - match(CURRENT_TIMESTAMP); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - setState(785); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ENDS) { - { - setState(783); - match(ENDS); - setState(784); - ((CreateScheduledJobContext)_localctx).endsTime = match(STRING_LITERAL); - } - } - - } - } - break; - case AT: - { - { - setState(787); - match(AT); - setState(790); - _errHandler.sync(this); - switch (_input.LA(1)) { - case STRING_LITERAL: - { - setState(788); - ((CreateScheduledJobContext)_localctx).atTime = match(STRING_LITERAL); - } - break; - case CURRENT_TIMESTAMP: - { - setState(789); - match(CURRENT_TIMESTAMP); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(795); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(794); - commentSpec(); - } - } - - setState(797); - match(DO); - setState(798); - supportedDmlStatement(); - } - break; - case PAUSE: - _localctx = new PauseJobContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(800); - match(PAUSE); - setState(801); - match(JOB); - setState(803); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(802); - wildWhere(); - } - } - - } - break; - case DROP: - _localctx = new DropJobContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(805); - match(DROP); - setState(806); - match(JOB); - setState(809); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(807); - match(IF); - setState(808); - match(EXISTS); - } - } - - setState(812); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(811); - wildWhere(); - } - } - - } - break; - case RESUME: - _localctx = new ResumeJobContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(814); - match(RESUME); - setState(815); - match(JOB); - setState(817); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(816); - wildWhere(); - } - } - - } - break; - case CANCEL: - _localctx = new CancelJobTaskContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(819); - match(CANCEL); - setState(820); - match(TASK); - setState(822); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(821); - wildWhere(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConstraintStatementContext extends ParserRuleContext { - public ConstraintStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constraintStatement; } - - public ConstraintStatementContext() { } - public void copyFrom(ConstraintStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowConstraintContext extends ConstraintStatementContext { - public MultipartIdentifierContext table; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CONSTRAINTS() { return getToken(DorisParser.CONSTRAINTS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowConstraintContext(ConstraintStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowConstraint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowConstraint(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropConstraintContext extends ConstraintStatementContext { - public MultipartIdentifierContext table; - public ErrorCapturingIdentifierContext constraintName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode CONSTRAINT() { return getToken(DorisParser.CONSTRAINT, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public DropConstraintContext(ConstraintStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropConstraint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropConstraint(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddConstraintContext extends ConstraintStatementContext { - public MultipartIdentifierContext table; - public ErrorCapturingIdentifierContext constraintName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode CONSTRAINT() { return getToken(DorisParser.CONSTRAINT, 0); } - public ConstraintContext constraint() { - return getRuleContext(ConstraintContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public AddConstraintContext(ConstraintStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddConstraint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddConstraint(this); - } - } - - public final ConstraintStatementContext constraintStatement() throws RecognitionException { - ConstraintStatementContext _localctx = new ConstraintStatementContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_constraintStatement); - try { - setState(845); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) { - case 1: - _localctx = new AddConstraintContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(826); - match(ALTER); - setState(827); - match(TABLE); - setState(828); - ((AddConstraintContext)_localctx).table = multipartIdentifier(); - setState(829); - match(ADD); - setState(830); - match(CONSTRAINT); - setState(831); - ((AddConstraintContext)_localctx).constraintName = errorCapturingIdentifier(); - setState(832); - constraint(); - } - break; - case 2: - _localctx = new DropConstraintContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(834); - match(ALTER); - setState(835); - match(TABLE); - setState(836); - ((DropConstraintContext)_localctx).table = multipartIdentifier(); - setState(837); - match(DROP); - setState(838); - match(CONSTRAINT); - setState(839); - ((DropConstraintContext)_localctx).constraintName = errorCapturingIdentifier(); - } - break; - case 3: - _localctx = new ShowConstraintContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(841); - match(SHOW); - setState(842); - match(CONSTRAINTS); - setState(843); - match(FROM); - setState(844); - ((ShowConstraintContext)_localctx).table = multipartIdentifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedDmlStatementContext extends ParserRuleContext { - public SupportedDmlStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedDmlStatement; } - - public SupportedDmlStatementContext() { } - public void copyFrom(SupportedDmlStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class InsertTableContext extends SupportedDmlStatementContext { - public MultipartIdentifierContext tableName; - public Token tableId; - public IdentifierContext labelName; - public IdentifierListContext cols; - public IdentifierSeqContext hints; - public TerminalNode INSERT() { return getToken(DorisParser.INSERT, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public TerminalNode OVERWRITE() { return getToken(DorisParser.OVERWRITE, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode DORIS_INTERNAL_TABLE_ID() { return getToken(DorisParser.DORIS_INTERNAL_TABLE_ID, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ExplainContext explain() { - return getRuleContext(ExplainContext.class,0); - } - public CteContext cte() { - return getRuleContext(CteContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public InsertTableContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInsertTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInsertTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LoadContext extends SupportedDmlStatementContext { - public MultipartIdentifierContext lableName; - public DataDescContext dataDesc; - public List dataDescs = new ArrayList(); - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List dataDesc() { - return getRuleContexts(DataDescContext.class); - } - public DataDescContext dataDesc(int i) { - return getRuleContext(DataDescContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public WithRemoteStorageSystemContext withRemoteStorageSystem() { - return getRuleContext(WithRemoteStorageSystemContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public LoadContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UpdateContext extends SupportedDmlStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode UPDATE() { return getToken(DorisParser.UPDATE, 0); } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public UpdateAssignmentSeqContext updateAssignmentSeq() { - return getRuleContext(UpdateAssignmentSeqContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ExplainContext explain() { - return getRuleContext(ExplainContext.class,0); - } - public CteContext cte() { - return getRuleContext(CteContext.class,0); - } - public FromClauseContext fromClause() { - return getRuleContext(FromClauseContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public UpdateContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUpdate(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUpdate(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ReplayContext extends SupportedDmlStatementContext { - public ReplayCommandContext replayCommand() { - return getRuleContext(ReplayCommandContext.class,0); - } - public ReplayContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplay(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplay(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DeleteContext extends SupportedDmlStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ExplainContext explain() { - return getRuleContext(ExplainContext.class,0); - } - public CteContext cte() { - return getRuleContext(CteContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public RelationsContext relations() { - return getRuleContext(RelationsContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public DeleteContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDelete(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDelete(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ExportContext extends SupportedDmlStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierListContext partition; - public Token filePath; - public TerminalNode EXPORT() { return getToken(DorisParser.EXPORT, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public WithRemoteStorageSystemContext withRemoteStorageSystem() { - return getRuleContext(WithRemoteStorageSystemContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ExportContext(SupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExport(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExport(this); - } - } - - public final SupportedDmlStatementContext supportedDmlStatement() throws RecognitionException { - SupportedDmlStatementContext _localctx = new SupportedDmlStatementContext(_ctx, getState()); - enterRule(_localctx, 16, RULE_supportedDmlStatement); - int _la; - try { - setState(962); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) { - case 1: - _localctx = new InsertTableContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(848); - _errHandler.sync(this); - _la = _input.LA(1); - if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { - { - setState(847); - explain(); - } - } - - setState(851); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(850); - cte(); - } - } - - setState(853); - match(INSERT); - setState(857); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INTO: - { - setState(854); - match(INTO); - } - break; - case OVERWRITE: - { - setState(855); - match(OVERWRITE); - setState(856); - match(TABLE); - } - break; - default: - throw new NoViableAltException(this); - } - setState(864); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { - case 1: - { - setState(859); - ((InsertTableContext)_localctx).tableName = multipartIdentifier(); - } - break; - case 2: - { - setState(860); - match(DORIS_INTERNAL_TABLE_ID); - setState(861); - match(LEFT_PAREN); - setState(862); - ((InsertTableContext)_localctx).tableId = match(INTEGER_VALUE); - setState(863); - match(RIGHT_PAREN); - } - break; - } - setState(867); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(866); - partitionSpec(); - } - } - - setState(872); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { - case 1: - { - setState(869); - match(WITH); - setState(870); - match(LABEL); - setState(871); - ((InsertTableContext)_localctx).labelName = identifier(); - } - break; - } - setState(875); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) { - case 1: - { - setState(874); - ((InsertTableContext)_localctx).cols = identifierList(); - } - break; - } - setState(881); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_BRACKET) { - { - setState(877); - match(LEFT_BRACKET); - setState(878); - ((InsertTableContext)_localctx).hints = identifierSeq(); - setState(879); - match(RIGHT_BRACKET); - } - } - - setState(883); - query(); - } - break; - case 2: - _localctx = new UpdateContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(885); - _errHandler.sync(this); - _la = _input.LA(1); - if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { - { - setState(884); - explain(); - } - } - - setState(888); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(887); - cte(); - } - } - - setState(890); - match(UPDATE); - setState(891); - ((UpdateContext)_localctx).tableName = multipartIdentifier(); - setState(892); - tableAlias(); - setState(893); - match(SET); - setState(894); - updateAssignmentSeq(); - setState(896); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(895); - fromClause(); - } - } - - setState(899); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(898); - whereClause(); - } - } - - } - break; - case 3: - _localctx = new DeleteContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(902); - _errHandler.sync(this); - _la = _input.LA(1); - if (((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 0)) { - { - setState(901); - explain(); - } - } - - setState(905); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(904); - cte(); - } - } - - setState(907); - match(DELETE); - setState(908); - match(FROM); - setState(909); - ((DeleteContext)_localctx).tableName = multipartIdentifier(); - setState(911); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) { - case 1: - { - setState(910); - partitionSpec(); - } - break; - } - setState(913); - tableAlias(); - setState(916); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(914); - match(USING); - setState(915); - relations(); - } - } - - setState(919); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(918); - whereClause(); - } - } - - } - break; - case 4: - _localctx = new LoadContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(921); - match(LOAD); - setState(922); - match(LABEL); - setState(923); - ((LoadContext)_localctx).lableName = multipartIdentifier(); - setState(924); - match(LEFT_PAREN); - setState(925); - ((LoadContext)_localctx).dataDesc = dataDesc(); - ((LoadContext)_localctx).dataDescs.add(((LoadContext)_localctx).dataDesc); - setState(930); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(926); - match(COMMA); - setState(927); - ((LoadContext)_localctx).dataDesc = dataDesc(); - ((LoadContext)_localctx).dataDescs.add(((LoadContext)_localctx).dataDesc); - } - } - setState(932); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(933); - match(RIGHT_PAREN); - setState(935); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(934); - withRemoteStorageSystem(); - } - } - - setState(938); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(937); - propertyClause(); - } - } - - setState(941); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(940); - commentSpec(); - } - } - - } - break; - case 5: - _localctx = new ExportContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(943); - match(EXPORT); - setState(944); - match(TABLE); - setState(945); - ((ExportContext)_localctx).tableName = multipartIdentifier(); - setState(948); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(946); - match(PARTITION); - setState(947); - ((ExportContext)_localctx).partition = identifierList(); - } - } - - setState(951); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(950); - whereClause(); - } - } - - setState(953); - match(TO); - setState(954); - ((ExportContext)_localctx).filePath = match(STRING_LITERAL); - setState(956); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(955); - propertyClause(); - } - } - - setState(959); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(958); - withRemoteStorageSystem(); - } - } - - } - break; - case 6: - _localctx = new ReplayContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(961); - replayCommand(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedCreateStatementContext extends ParserRuleContext { - public SupportedCreateStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedCreateStatement; } - - public SupportedCreateStatementContext() { } - public void copyFrom(SupportedCreateStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateTableContext extends SupportedCreateStatementContext { - public MultipartIdentifierContext name; - public IdentifierListContext ctasCols; - public IdentifierContext engine; - public IdentifierListContext keys; - public IdentifierListContext clusterKeys; - public PartitionTableContext partition; - public IdentifierListContext hashKeys; - public Token autoBucket; - public PropertyClauseContext properties; - public PropertyClauseContext extProperties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode ENGINE() { return getToken(DorisParser.ENGINE, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } - public List BY() { return getTokens(DorisParser.BY); } - public TerminalNode BY(int i) { - return getToken(DorisParser.BY, i); - } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public RollupDefsContext rollupDefs() { - return getRuleContext(RollupDefsContext.class,0); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public ColumnDefsContext columnDefs() { - return getRuleContext(ColumnDefsContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode AGGREGATE() { return getToken(DorisParser.AGGREGATE, 0); } - public TerminalNode UNIQUE() { return getToken(DorisParser.UNIQUE, 0); } - public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public PartitionTableContext partitionTable() { - return getRuleContext(PartitionTableContext.class,0); - } - public List propertyClause() { - return getRuleContexts(PropertyClauseContext.class); - } - public PropertyClauseContext propertyClause(int i) { - return getRuleContext(PropertyClauseContext.class,i); - } - public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } - public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } - public TerminalNode CLUSTER() { return getToken(DorisParser.CLUSTER, 0); } - public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public IndexDefsContext indexDefs() { - return getRuleContext(IndexDefsContext.class,0); - } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public CreateTableContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateWorkloadGroupContext extends SupportedCreateStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateWorkloadGroupContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateWorkloadGroup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateWorkloadGroup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateUserDefineFunctionContext extends SupportedCreateStatementContext { - public DataTypeContext returnType; - public DataTypeContext intermediateType; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public FunctionIdentifierContext functionIdentifier() { - return getRuleContext(FunctionIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode RETURNS() { return getToken(DorisParser.RETURNS, 0); } - public List dataType() { - return getRuleContexts(DataTypeContext.class); - } - public DataTypeContext dataType(int i) { - return getRuleContext(DataTypeContext.class,i); - } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public FunctionArgumentsContext functionArguments() { - return getRuleContext(FunctionArgumentsContext.class,0); - } - public TerminalNode INTERMEDIATE() { return getToken(DorisParser.INTERMEDIATE, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public TerminalNode AGGREGATE() { return getToken(DorisParser.AGGREGATE, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateUserDefineFunctionContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateUserDefineFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateUserDefineFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateStoragePolicyContext extends SupportedCreateStatementContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateStoragePolicyContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateStoragePolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateStoragePolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateTableLikeContext extends SupportedCreateStatementContext { - public MultipartIdentifierContext name; - public MultipartIdentifierContext existedTable; - public IdentifierListContext rollupNames; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public CreateTableLikeContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateTableLike(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateTableLike(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateRoleContext extends SupportedCreateStatementContext { - public IdentifierContext name; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public CreateRoleContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRole(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRole(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateIndexContext extends SupportedCreateStatementContext { - public IdentifierContext name; - public MultipartIdentifierContext tableName; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } - public TerminalNode NGRAM_BF() { return getToken(DorisParser.NGRAM_BF, 0); } - public TerminalNode INVERTED() { return getToken(DorisParser.INVERTED, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateIndexContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateIndex(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateIndex(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateFileContext extends SupportedCreateStatementContext { - public Token name; - public IdentifierContext database; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public CreateFileContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateFile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateFile(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateRowPolicyContext extends SupportedCreateStatementContext { - public IdentifierContext name; - public MultipartIdentifierContext table; - public Token type; - public UserIdentifyContext user; - public IdentifierContext roleName; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode RESTRICTIVE() { return getToken(DorisParser.RESTRICTIVE, 0); } - public TerminalNode PERMISSIVE() { return getToken(DorisParser.PERMISSIVE, 0); } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public CreateRowPolicyContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRowPolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRowPolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateEncryptkeyContext extends SupportedCreateStatementContext { - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode ENCRYPTKEY() { return getToken(DorisParser.ENCRYPTKEY, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public CreateEncryptkeyContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateEncryptkey(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateEncryptkey(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BuildIndexContext extends SupportedCreateStatementContext { - public IdentifierContext name; - public MultipartIdentifierContext tableName; - public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public BuildIndexContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBuildIndex(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBuildIndex(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateCatalogContext extends SupportedCreateStatementContext { - public IdentifierContext catalogName; - public IdentifierContext resourceName; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateCatalogContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateCatalog(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateCatalog(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateViewContext extends SupportedCreateStatementContext { - public MultipartIdentifierContext name; - public SimpleColumnDefsContext cols; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode OR() { return getToken(DorisParser.OR, 0); } - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public SimpleColumnDefsContext simpleColumnDefs() { - return getRuleContext(SimpleColumnDefsContext.class,0); - } - public CreateViewContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateView(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateAliasFunctionContext extends SupportedCreateStatementContext { - public IdentifierSeqContext parameters; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode ALIAS() { return getToken(DorisParser.ALIAS, 0); } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public FunctionIdentifierContext functionIdentifier() { - return getRuleContext(FunctionIdentifierContext.class,0); - } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode PARAMETER() { return getToken(DorisParser.PARAMETER, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public FunctionArgumentsContext functionArguments() { - return getRuleContext(FunctionArgumentsContext.class,0); - } - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public CreateAliasFunctionContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateAliasFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateAliasFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateSqlBlockRuleContext extends SupportedCreateStatementContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateSqlBlockRuleContext(SupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateSqlBlockRule(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateSqlBlockRule(this); - } - } - - public final SupportedCreateStatementContext supportedCreateStatement() throws RecognitionException { - SupportedCreateStatementContext _localctx = new SupportedCreateStatementContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_supportedCreateStatement); - int _la; - try { - setState(1287); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,142,_ctx) ) { - case 1: - _localctx = new CreateTableContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(964); - match(CREATE); - setState(966); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EXTERNAL || _la==TEMPORARY) { - { - setState(965); - _la = _input.LA(1); - if ( !(_la==EXTERNAL || _la==TEMPORARY) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(968); - match(TABLE); - setState(972); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(969); - match(IF); - setState(970); - match(NOT); - setState(971); - match(EXISTS); - } - } - - setState(974); - ((CreateTableContext)_localctx).name = multipartIdentifier(); - setState(989); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) { - case 1: - { - setState(976); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(975); - ((CreateTableContext)_localctx).ctasCols = identifierList(); - } - } - - } - break; - case 2: - { - { - setState(978); - match(LEFT_PAREN); - setState(979); - columnDefs(); - setState(982); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { - case 1: - { - setState(980); - match(COMMA); - setState(981); - indexDefs(); - } - break; - } - setState(985); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(984); - match(COMMA); - } - } - - setState(987); - match(RIGHT_PAREN); - } - } - break; - } - setState(994); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ENGINE) { - { - setState(991); - match(ENGINE); - setState(992); - match(EQ); - setState(993); - ((CreateTableContext)_localctx).engine = identifier(); - } - } - - setState(1004); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AGGREGATE || _la==DUPLICATE || _la==UNIQUE) { - { - setState(996); - _la = _input.LA(1); - if ( !(_la==AGGREGATE || _la==DUPLICATE || _la==UNIQUE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(997); - match(KEY); - setState(998); - ((CreateTableContext)_localctx).keys = identifierList(); - setState(1002); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CLUSTER) { - { - setState(999); - match(CLUSTER); - setState(1000); - match(BY); - setState(1001); - ((CreateTableContext)_localctx).clusterKeys = identifierList(); - } - } - - } - } - - setState(1008); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(1006); - match(COMMENT); - setState(1007); - match(STRING_LITERAL); - } - } - - setState(1011); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AUTO || _la==PARTITION) { - { - setState(1010); - ((CreateTableContext)_localctx).partition = partitionTable(); - } - } - - setState(1027); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DISTRIBUTED) { - { - setState(1013); - match(DISTRIBUTED); - setState(1014); - match(BY); - setState(1018); - _errHandler.sync(this); - switch (_input.LA(1)) { - case HASH: - { - setState(1015); - match(HASH); - setState(1016); - ((CreateTableContext)_localctx).hashKeys = identifierList(); - } - break; - case RANDOM: - { - setState(1017); - match(RANDOM); - } - break; - default: - throw new NoViableAltException(this); - } - setState(1025); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BUCKETS) { - { - setState(1020); - match(BUCKETS); - setState(1023); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INTEGER_VALUE: - { - setState(1021); - match(INTEGER_VALUE); - } - break; - case AUTO: - { - setState(1022); - ((CreateTableContext)_localctx).autoBucket = match(AUTO); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - } - } - - setState(1034); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ROLLUP) { - { - setState(1029); - match(ROLLUP); - setState(1030); - match(LEFT_PAREN); - setState(1031); - rollupDefs(); - setState(1032); - match(RIGHT_PAREN); - } - } - - setState(1037); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1036); - ((CreateTableContext)_localctx).properties = propertyClause(); - } - } - - setState(1041); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BROKER) { - { - setState(1039); - match(BROKER); - setState(1040); - ((CreateTableContext)_localctx).extProperties = propertyClause(); - } - } - - setState(1045); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(1043); - match(AS); - setState(1044); - query(); - } - } - - } - break; - case 2: - _localctx = new CreateViewContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1047); - match(CREATE); - setState(1050); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OR) { - { - setState(1048); - match(OR); - setState(1049); - match(REPLACE); - } - } - - setState(1052); - match(VIEW); - setState(1056); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1053); - match(IF); - setState(1054); - match(NOT); - setState(1055); - match(EXISTS); - } - } - - setState(1058); - ((CreateViewContext)_localctx).name = multipartIdentifier(); - setState(1063); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(1059); - match(LEFT_PAREN); - setState(1060); - ((CreateViewContext)_localctx).cols = simpleColumnDefs(); - setState(1061); - match(RIGHT_PAREN); - } - } - - setState(1067); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(1065); - match(COMMENT); - setState(1066); - match(STRING_LITERAL); - } - } - - setState(1069); - match(AS); - setState(1070); - query(); - } - break; - case 3: - _localctx = new CreateFileContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1072); - match(CREATE); - setState(1073); - match(FILE); - setState(1074); - ((CreateFileContext)_localctx).name = match(STRING_LITERAL); - setState(1077); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1075); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1076); - ((CreateFileContext)_localctx).database = identifier(); - } - } - - setState(1079); - ((CreateFileContext)_localctx).properties = propertyClause(); - } - break; - case 4: - _localctx = new CreateTableLikeContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1080); - match(CREATE); - setState(1082); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EXTERNAL || _la==TEMPORARY) { - { - setState(1081); - _la = _input.LA(1); - if ( !(_la==EXTERNAL || _la==TEMPORARY) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(1084); - match(TABLE); - setState(1088); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1085); - match(IF); - setState(1086); - match(NOT); - setState(1087); - match(EXISTS); - } - } - - setState(1090); - ((CreateTableLikeContext)_localctx).name = multipartIdentifier(); - setState(1091); - match(LIKE); - setState(1092); - ((CreateTableLikeContext)_localctx).existedTable = multipartIdentifier(); - setState(1098); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(1093); - match(WITH); - setState(1094); - match(ROLLUP); - setState(1096); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(1095); - ((CreateTableLikeContext)_localctx).rollupNames = identifierList(); - } - } - - } - } - - } - break; - case 5: - _localctx = new CreateRoleContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1100); - match(CREATE); - setState(1101); - match(ROLE); - setState(1105); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1102); - match(IF); - setState(1103); - match(NOT); - setState(1104); - match(EXISTS); - } - } - - setState(1107); - ((CreateRoleContext)_localctx).name = identifier(); - setState(1110); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(1108); - match(COMMENT); - setState(1109); - match(STRING_LITERAL); - } - } - - } - break; - case 6: - _localctx = new CreateWorkloadGroupContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(1112); - match(CREATE); - setState(1113); - match(WORKLOAD); - setState(1114); - match(GROUP); - setState(1118); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1115); - match(IF); - setState(1116); - match(NOT); - setState(1117); - match(EXISTS); - } - } - - setState(1120); - ((CreateWorkloadGroupContext)_localctx).name = identifierOrText(); - setState(1122); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1121); - ((CreateWorkloadGroupContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 7: - _localctx = new CreateCatalogContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(1124); - match(CREATE); - setState(1125); - match(CATALOG); - setState(1129); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1126); - match(IF); - setState(1127); - match(NOT); - setState(1128); - match(EXISTS); - } - } - - setState(1131); - ((CreateCatalogContext)_localctx).catalogName = identifier(); - setState(1135); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(1132); - match(WITH); - setState(1133); - match(RESOURCE); - setState(1134); - ((CreateCatalogContext)_localctx).resourceName = identifier(); - } - } - - setState(1139); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(1137); - match(COMMENT); - setState(1138); - match(STRING_LITERAL); - } - } - - setState(1142); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1141); - ((CreateCatalogContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 8: - _localctx = new CreateRowPolicyContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(1144); - match(CREATE); - setState(1145); - match(ROW); - setState(1146); - match(POLICY); - setState(1150); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1147); - match(IF); - setState(1148); - match(NOT); - setState(1149); - match(EXISTS); - } - } - - setState(1152); - ((CreateRowPolicyContext)_localctx).name = identifier(); - setState(1153); - match(ON); - setState(1154); - ((CreateRowPolicyContext)_localctx).table = multipartIdentifier(); - setState(1155); - match(AS); - setState(1156); - ((CreateRowPolicyContext)_localctx).type = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==PERMISSIVE || _la==RESTRICTIVE) ) { - ((CreateRowPolicyContext)_localctx).type = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1157); - match(TO); - setState(1161); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(1158); - ((CreateRowPolicyContext)_localctx).user = userIdentify(); - } - break; - case ROLE: - { - setState(1159); - match(ROLE); - setState(1160); - ((CreateRowPolicyContext)_localctx).roleName = identifier(); - } - break; - default: - throw new NoViableAltException(this); - } - setState(1163); - match(USING); - setState(1164); - match(LEFT_PAREN); - setState(1165); - booleanExpression(0); - setState(1166); - match(RIGHT_PAREN); - } - break; - case 9: - _localctx = new CreateStoragePolicyContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(1168); - match(CREATE); - setState(1169); - match(STORAGE); - setState(1170); - match(POLICY); - setState(1174); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1171); - match(IF); - setState(1172); - match(NOT); - setState(1173); - match(EXISTS); - } - } - - setState(1176); - ((CreateStoragePolicyContext)_localctx).name = identifier(); - setState(1178); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1177); - ((CreateStoragePolicyContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 10: - _localctx = new BuildIndexContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(1180); - match(BUILD); - setState(1181); - match(INDEX); - setState(1182); - ((BuildIndexContext)_localctx).name = identifier(); - setState(1183); - match(ON); - setState(1184); - ((BuildIndexContext)_localctx).tableName = multipartIdentifier(); - setState(1186); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(1185); - partitionSpec(); - } - } - - } - break; - case 11: - _localctx = new CreateIndexContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(1188); - match(CREATE); - setState(1189); - match(INDEX); - setState(1193); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1190); - match(IF); - setState(1191); - match(NOT); - setState(1192); - match(EXISTS); - } - } - - setState(1195); - ((CreateIndexContext)_localctx).name = identifier(); - setState(1196); - match(ON); - setState(1197); - ((CreateIndexContext)_localctx).tableName = multipartIdentifier(); - setState(1198); - identifierList(); - setState(1201); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(1199); - match(USING); - setState(1200); - _la = _input.LA(1); - if ( !(_la==BITMAP || _la==INVERTED || _la==NGRAM_BF) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(1204); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1203); - ((CreateIndexContext)_localctx).properties = propertyClause(); - } - } - - setState(1208); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(1206); - match(COMMENT); - setState(1207); - match(STRING_LITERAL); - } - } - - } - break; - case 12: - _localctx = new CreateSqlBlockRuleContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(1210); - match(CREATE); - setState(1211); - match(SQL_BLOCK_RULE); - setState(1215); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1212); - match(IF); - setState(1213); - match(NOT); - setState(1214); - match(EXISTS); - } - } - - setState(1217); - ((CreateSqlBlockRuleContext)_localctx).name = identifier(); - setState(1219); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1218); - ((CreateSqlBlockRuleContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 13: - _localctx = new CreateEncryptkeyContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(1221); - match(CREATE); - setState(1222); - match(ENCRYPTKEY); - setState(1226); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1223); - match(IF); - setState(1224); - match(NOT); - setState(1225); - match(EXISTS); - } - } - - setState(1228); - multipartIdentifier(); - setState(1229); - match(AS); - setState(1230); - match(STRING_LITERAL); - } - break; - case 14: - _localctx = new CreateUserDefineFunctionContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(1232); - match(CREATE); - setState(1234); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(1233); - statementScope(); - } - } - - setState(1237); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AGGREGATE || _la==TABLES) { - { - setState(1236); - _la = _input.LA(1); - if ( !(_la==AGGREGATE || _la==TABLES) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(1239); - match(FUNCTION); - setState(1243); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) { - case 1: - { - setState(1240); - match(IF); - setState(1241); - match(NOT); - setState(1242); - match(EXISTS); - } - break; - } - setState(1245); - functionIdentifier(); - setState(1246); - match(LEFT_PAREN); - setState(1248); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { - { - setState(1247); - functionArguments(); - } - } - - setState(1250); - match(RIGHT_PAREN); - setState(1251); - match(RETURNS); - setState(1252); - ((CreateUserDefineFunctionContext)_localctx).returnType = dataType(); - setState(1255); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INTERMEDIATE) { - { - setState(1253); - match(INTERMEDIATE); - setState(1254); - ((CreateUserDefineFunctionContext)_localctx).intermediateType = dataType(); - } - } - - setState(1258); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1257); - ((CreateUserDefineFunctionContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 15: - _localctx = new CreateAliasFunctionContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(1260); - match(CREATE); - setState(1262); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(1261); - statementScope(); - } - } - - setState(1264); - match(ALIAS); - setState(1265); - match(FUNCTION); - setState(1269); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,139,_ctx) ) { - case 1: - { - setState(1266); - match(IF); - setState(1267); - match(NOT); - setState(1268); - match(EXISTS); - } - break; - } - setState(1271); - functionIdentifier(); - setState(1272); - match(LEFT_PAREN); - setState(1274); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { - { - setState(1273); - functionArguments(); - } - } - - setState(1276); - match(RIGHT_PAREN); - setState(1277); - match(WITH); - setState(1278); - match(PARAMETER); - setState(1279); - match(LEFT_PAREN); - setState(1281); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(1280); - ((CreateAliasFunctionContext)_localctx).parameters = identifierSeq(); - } - } - - setState(1283); - match(RIGHT_PAREN); - setState(1284); - match(AS); - setState(1285); - expression(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedAlterStatementContext extends ParserRuleContext { - public SupportedAlterStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedAlterStatement; } - - public SupportedAlterStatementContext() { } - public void copyFrom(SupportedAlterStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterSystemRenameComputeGroupContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public IdentifierContext newName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode SYSTEM() { return getToken(DorisParser.SYSTEM, 0); } - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public AlterSystemRenameComputeGroupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterSystemRenameComputeGroup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterSystemRenameComputeGroup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterSystemContext extends SupportedAlterStatementContext { - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode SYSTEM() { return getToken(DorisParser.SYSTEM, 0); } - public AlterSystemClauseContext alterSystemClause() { - return getRuleContext(AlterSystemClauseContext.class,0); - } - public AlterSystemContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterSystem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterSystem(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterCatalogRenameContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public IdentifierContext newName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public AlterCatalogRenameContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterCatalogRename(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterCatalogRename(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterDatabaseSetQuotaContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public IdentifierContext quota; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode QUOTA() { return getToken(DorisParser.QUOTA, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public AlterDatabaseSetQuotaContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterDatabaseSetQuota(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterDatabaseSetQuota(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterStorageVaultContext extends SupportedAlterStatementContext { - public MultipartIdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterStorageVaultContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterStorageVault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterStorageVault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterWorkloadGroupContext extends SupportedAlterStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterWorkloadGroupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterWorkloadGroup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterWorkloadGroup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterTableDropRollupContext extends SupportedAlterStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public List dropRollupClause() { - return getRuleContexts(DropRollupClauseContext.class); - } - public DropRollupClauseContext dropRollupClause(int i) { - return getRuleContext(DropRollupClauseContext.class,i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AlterTableDropRollupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableDropRollup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableDropRollup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterTablePropertiesContext extends SupportedAlterStatementContext { - public MultipartIdentifierContext name; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public AlterTablePropertiesContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableProperties(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterRoleContext extends SupportedAlterStatementContext { - public IdentifierContext role; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public AlterRoleContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterRole(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterRole(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterWorkloadPolicyContext extends SupportedAlterStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterWorkloadPolicyContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterWorkloadPolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterWorkloadPolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterDatabaseRenameContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public IdentifierContext newName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public AlterDatabaseRenameContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterDatabaseRename(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterDatabaseRename(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterCatalogPropertiesContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public AlterCatalogPropertiesContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterCatalogProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterCatalogProperties(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterCatalogCommentContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public Token comment; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AlterCatalogCommentContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterCatalogComment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterCatalogComment(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterViewContext extends SupportedAlterStatementContext { - public MultipartIdentifierContext name; - public SimpleColumnDefsContext cols; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public SimpleColumnDefsContext simpleColumnDefs() { - return getRuleContext(SimpleColumnDefsContext.class,0); - } - public AlterViewContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterView(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterSqlBlockRuleContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterSqlBlockRuleContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterSqlBlockRule(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterSqlBlockRule(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterTableAddRollupContext extends SupportedAlterStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public List addRollupClause() { - return getRuleContexts(AddRollupClauseContext.class); - } - public AddRollupClauseContext addRollupClause(int i) { - return getRuleContext(AddRollupClauseContext.class,i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AlterTableAddRollupContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableAddRollup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableAddRollup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterRepositoryContext extends SupportedAlterStatementContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterRepositoryContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterRepository(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterRepository(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterTableContext extends SupportedAlterStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public List alterTableClause() { - return getRuleContexts(AlterTableClauseContext.class); - } - public AlterTableClauseContext alterTableClause(int i) { - return getRuleContext(AlterTableClauseContext.class,i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AlterTableContext(SupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTable(this); - } - } - - public final SupportedAlterStatementContext supportedAlterStatement() throws RecognitionException { - SupportedAlterStatementContext _localctx = new SupportedAlterStatementContext(_ctx, getState()); - enterRule(_localctx, 20, RULE_supportedAlterStatement); - int _la; - try { - setState(1445); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,153,_ctx) ) { - case 1: - _localctx = new AlterSystemContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1289); - match(ALTER); - setState(1290); - match(SYSTEM); - setState(1291); - alterSystemClause(); - } - break; - case 2: - _localctx = new AlterViewContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1292); - match(ALTER); - setState(1293); - match(VIEW); - setState(1294); - ((AlterViewContext)_localctx).name = multipartIdentifier(); - setState(1305); - _errHandler.sync(this); - switch (_input.LA(1)) { - case MODIFY: - { - { - setState(1295); - match(MODIFY); - setState(1296); - commentSpec(); - } - } - break; - case LEFT_PAREN: - case AS: - { - { - setState(1301); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(1297); - match(LEFT_PAREN); - setState(1298); - ((AlterViewContext)_localctx).cols = simpleColumnDefs(); - setState(1299); - match(RIGHT_PAREN); - } - } - - setState(1303); - match(AS); - setState(1304); - query(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 3: - _localctx = new AlterCatalogRenameContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1307); - match(ALTER); - setState(1308); - match(CATALOG); - setState(1309); - ((AlterCatalogRenameContext)_localctx).name = identifier(); - setState(1310); - match(RENAME); - setState(1311); - ((AlterCatalogRenameContext)_localctx).newName = identifier(); - } - break; - case 4: - _localctx = new AlterRoleContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1313); - match(ALTER); - setState(1314); - match(ROLE); - setState(1315); - ((AlterRoleContext)_localctx).role = identifier(); - setState(1316); - commentSpec(); - } - break; - case 5: - _localctx = new AlterStorageVaultContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1318); - match(ALTER); - setState(1319); - match(STORAGE); - setState(1320); - match(VAULT); - setState(1321); - ((AlterStorageVaultContext)_localctx).name = multipartIdentifier(); - setState(1322); - ((AlterStorageVaultContext)_localctx).properties = propertyClause(); - } - break; - case 6: - _localctx = new AlterRoleContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(1324); - match(ALTER); - setState(1325); - match(ROLE); - setState(1326); - ((AlterRoleContext)_localctx).role = identifier(); - setState(1327); - commentSpec(); - } - break; - case 7: - _localctx = new AlterWorkloadGroupContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(1329); - match(ALTER); - setState(1330); - match(WORKLOAD); - setState(1331); - match(GROUP); - setState(1332); - ((AlterWorkloadGroupContext)_localctx).name = identifierOrText(); - setState(1334); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1333); - ((AlterWorkloadGroupContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 8: - _localctx = new AlterCatalogPropertiesContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(1336); - match(ALTER); - setState(1337); - match(CATALOG); - setState(1338); - ((AlterCatalogPropertiesContext)_localctx).name = identifier(); - setState(1339); - match(SET); - setState(1340); - match(PROPERTIES); - setState(1341); - match(LEFT_PAREN); - setState(1342); - propertyItemList(); - setState(1343); - match(RIGHT_PAREN); - } - break; - case 9: - _localctx = new AlterWorkloadPolicyContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(1345); - match(ALTER); - setState(1346); - match(WORKLOAD); - setState(1347); - match(POLICY); - setState(1348); - ((AlterWorkloadPolicyContext)_localctx).name = identifierOrText(); - setState(1350); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1349); - ((AlterWorkloadPolicyContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 10: - _localctx = new AlterSqlBlockRuleContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(1352); - match(ALTER); - setState(1353); - match(SQL_BLOCK_RULE); - setState(1354); - ((AlterSqlBlockRuleContext)_localctx).name = identifier(); - setState(1356); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1355); - ((AlterSqlBlockRuleContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 11: - _localctx = new AlterCatalogCommentContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(1358); - match(ALTER); - setState(1359); - match(CATALOG); - setState(1360); - ((AlterCatalogCommentContext)_localctx).name = identifier(); - setState(1361); - match(MODIFY); - setState(1362); - match(COMMENT); - setState(1363); - ((AlterCatalogCommentContext)_localctx).comment = match(STRING_LITERAL); - } - break; - case 12: - _localctx = new AlterDatabaseRenameContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(1365); - match(ALTER); - setState(1366); - match(DATABASE); - setState(1367); - ((AlterDatabaseRenameContext)_localctx).name = identifier(); - setState(1368); - match(RENAME); - setState(1369); - ((AlterDatabaseRenameContext)_localctx).newName = identifier(); - } - break; - case 13: - _localctx = new AlterRoleContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(1371); - match(ALTER); - setState(1372); - match(ROLE); - setState(1373); - ((AlterRoleContext)_localctx).role = identifier(); - setState(1374); - commentSpec(); - } - break; - case 14: - _localctx = new AlterTableContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(1376); - match(ALTER); - setState(1377); - match(TABLE); - setState(1378); - ((AlterTableContext)_localctx).tableName = multipartIdentifier(); - setState(1379); - alterTableClause(); - setState(1384); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1380); - match(COMMA); - setState(1381); - alterTableClause(); - } - } - setState(1386); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 15: - _localctx = new AlterTableAddRollupContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(1387); - match(ALTER); - setState(1388); - match(TABLE); - setState(1389); - ((AlterTableAddRollupContext)_localctx).tableName = multipartIdentifier(); - setState(1390); - match(ADD); - setState(1391); - match(ROLLUP); - setState(1392); - addRollupClause(); - setState(1397); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1393); - match(COMMA); - setState(1394); - addRollupClause(); - } - } - setState(1399); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 16: - _localctx = new AlterTableDropRollupContext(_localctx); - enterOuterAlt(_localctx, 16); - { - setState(1400); - match(ALTER); - setState(1401); - match(TABLE); - setState(1402); - ((AlterTableDropRollupContext)_localctx).tableName = multipartIdentifier(); - setState(1403); - match(DROP); - setState(1404); - match(ROLLUP); - setState(1405); - dropRollupClause(); - setState(1410); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1406); - match(COMMA); - setState(1407); - dropRollupClause(); - } - } - setState(1412); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 17: - _localctx = new AlterTablePropertiesContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(1413); - match(ALTER); - setState(1414); - match(TABLE); - setState(1415); - ((AlterTablePropertiesContext)_localctx).name = multipartIdentifier(); - setState(1416); - match(SET); - setState(1417); - match(LEFT_PAREN); - setState(1418); - propertyItemList(); - setState(1419); - match(RIGHT_PAREN); - } - break; - case 18: - _localctx = new AlterDatabaseSetQuotaContext(_localctx); - enterOuterAlt(_localctx, 18); - { - setState(1421); - match(ALTER); - setState(1422); - match(DATABASE); - setState(1423); - ((AlterDatabaseSetQuotaContext)_localctx).name = identifier(); - setState(1424); - match(SET); - setState(1425); - _la = _input.LA(1); - if ( !(_la==DATA || _la==REPLICA || _la==TRANSACTION) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1426); - match(QUOTA); - setState(1429); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(1427); - ((AlterDatabaseSetQuotaContext)_localctx).quota = identifier(); - } - break; - case INTEGER_VALUE: - { - setState(1428); - match(INTEGER_VALUE); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 19: - _localctx = new AlterSystemRenameComputeGroupContext(_localctx); - enterOuterAlt(_localctx, 19); - { - setState(1431); - match(ALTER); - setState(1432); - match(SYSTEM); - setState(1433); - match(RENAME); - setState(1434); - match(COMPUTE); - setState(1435); - match(GROUP); - setState(1436); - ((AlterSystemRenameComputeGroupContext)_localctx).name = identifier(); - setState(1437); - ((AlterSystemRenameComputeGroupContext)_localctx).newName = identifier(); - } - break; - case 20: - _localctx = new AlterRepositoryContext(_localctx); - enterOuterAlt(_localctx, 20); - { - setState(1439); - match(ALTER); - setState(1440); - match(REPOSITORY); - setState(1441); - ((AlterRepositoryContext)_localctx).name = identifier(); - setState(1443); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1442); - ((AlterRepositoryContext)_localctx).properties = propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedDropStatementContext extends ParserRuleContext { - public SupportedDropStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedDropStatement; } - - public SupportedDropStatementContext() { } - public void copyFrom(SupportedDropStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropUserContext extends SupportedDropStatementContext { - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode USER() { return getToken(DorisParser.USER, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropUserContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropUser(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropUser(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropDatabaseContext extends SupportedDropStatementContext { - public MultipartIdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public DropDatabaseContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropDatabase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropWorkloadPolicyContext extends SupportedDropStatementContext { - public IdentifierOrTextContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropWorkloadPolicyContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropWorkloadPolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropWorkloadPolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropFunctionContext extends SupportedDropStatementContext { - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public FunctionIdentifierContext functionIdentifier() { - return getRuleContext(FunctionIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public FunctionArgumentsContext functionArguments() { - return getRuleContext(FunctionArgumentsContext.class,0); - } - public DropFunctionContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropWorkloadGroupContext extends SupportedDropStatementContext { - public IdentifierOrTextContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropWorkloadGroupContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropWorkloadGroup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropWorkloadGroup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropSqlBlockRuleContext extends SupportedDropStatementContext { - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropSqlBlockRuleContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropSqlBlockRule(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropSqlBlockRule(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropIndexContext extends SupportedDropStatementContext { - public IdentifierContext name; - public MultipartIdentifierContext tableName; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropIndexContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropIndex(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropIndex(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropEncryptkeyContext extends SupportedDropStatementContext { - public MultipartIdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode ENCRYPTKEY() { return getToken(DorisParser.ENCRYPTKEY, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropEncryptkeyContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropEncryptkey(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropEncryptkey(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropRepositoryContext extends SupportedDropStatementContext { - public IdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public DropRepositoryContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRepository(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRepository(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropRoleContext extends SupportedDropStatementContext { - public IdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropRoleContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRole(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRole(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropFileContext extends SupportedDropStatementContext { - public Token name; - public IdentifierContext database; - public PropertyClauseContext properties; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public DropFileContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropFile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropFile(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropCatalogContext extends SupportedDropStatementContext { - public IdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropCatalogContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropCatalog(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropCatalog(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropCatalogRecycleBinContext extends SupportedDropStatementContext { - public Token idType; - public Token id; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public TerminalNode RECYCLE() { return getToken(DorisParser.RECYCLE, 0); } - public TerminalNode BIN() { return getToken(DorisParser.BIN, 0); } - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public DropCatalogRecycleBinContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropCatalogRecycleBin(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropCatalogRecycleBin(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropTableContext extends SupportedDropStatementContext { - public MultipartIdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public DropTableContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropStoragePolicyContext extends SupportedDropStatementContext { - public IdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropStoragePolicyContext(SupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropStoragePolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropStoragePolicy(this); - } - } - - public final SupportedDropStatementContext supportedDropStatement() throws RecognitionException { - SupportedDropStatementContext _localctx = new SupportedDropStatementContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_supportedDropStatement); - int _la; - try { - setState(1571); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) { - case 1: - _localctx = new DropCatalogRecycleBinContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1447); - match(DROP); - setState(1448); - match(CATALOG); - setState(1449); - match(RECYCLE); - setState(1450); - match(BIN); - setState(1451); - match(WHERE); - setState(1452); - ((DropCatalogRecycleBinContext)_localctx).idType = match(STRING_LITERAL); - setState(1453); - match(EQ); - setState(1454); - ((DropCatalogRecycleBinContext)_localctx).id = match(INTEGER_VALUE); - } - break; - case 2: - _localctx = new DropEncryptkeyContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1455); - match(DROP); - setState(1456); - match(ENCRYPTKEY); - setState(1459); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1457); - match(IF); - setState(1458); - match(EXISTS); - } - } - - setState(1461); - ((DropEncryptkeyContext)_localctx).name = multipartIdentifier(); - } - break; - case 3: - _localctx = new DropRoleContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1462); - match(DROP); - setState(1463); - match(ROLE); - setState(1466); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1464); - match(IF); - setState(1465); - match(EXISTS); - } - } - - setState(1468); - ((DropRoleContext)_localctx).name = identifier(); - } - break; - case 4: - _localctx = new DropSqlBlockRuleContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1469); - match(DROP); - setState(1470); - match(SQL_BLOCK_RULE); - setState(1473); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1471); - match(IF); - setState(1472); - match(EXISTS); - } - } - - setState(1475); - identifierSeq(); - } - break; - case 5: - _localctx = new DropUserContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1476); - match(DROP); - setState(1477); - match(USER); - setState(1480); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1478); - match(IF); - setState(1479); - match(EXISTS); - } - } - - setState(1482); - userIdentify(); - } - break; - case 6: - _localctx = new DropStoragePolicyContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(1483); - match(DROP); - setState(1484); - match(STORAGE); - setState(1485); - match(POLICY); - setState(1488); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1486); - match(IF); - setState(1487); - match(EXISTS); - } - } - - setState(1490); - ((DropStoragePolicyContext)_localctx).name = identifier(); - } - break; - case 7: - _localctx = new DropWorkloadGroupContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(1491); - match(DROP); - setState(1492); - match(WORKLOAD); - setState(1493); - match(GROUP); - setState(1496); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1494); - match(IF); - setState(1495); - match(EXISTS); - } - } - - setState(1498); - ((DropWorkloadGroupContext)_localctx).name = identifierOrText(); - } - break; - case 8: - _localctx = new DropCatalogContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(1499); - match(DROP); - setState(1500); - match(CATALOG); - setState(1503); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1501); - match(IF); - setState(1502); - match(EXISTS); - } - } - - setState(1505); - ((DropCatalogContext)_localctx).name = identifier(); - } - break; - case 9: - _localctx = new DropFileContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(1506); - match(DROP); - setState(1507); - match(FILE); - setState(1508); - ((DropFileContext)_localctx).name = match(STRING_LITERAL); - setState(1511); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1509); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1510); - ((DropFileContext)_localctx).database = identifier(); - } - } - - setState(1513); - ((DropFileContext)_localctx).properties = propertyClause(); - } - break; - case 10: - _localctx = new DropWorkloadPolicyContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(1514); - match(DROP); - setState(1515); - match(WORKLOAD); - setState(1516); - match(POLICY); - setState(1519); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1517); - match(IF); - setState(1518); - match(EXISTS); - } - } - - setState(1521); - ((DropWorkloadPolicyContext)_localctx).name = identifierOrText(); - } - break; - case 11: - _localctx = new DropRepositoryContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(1522); - match(DROP); - setState(1523); - match(REPOSITORY); - setState(1524); - ((DropRepositoryContext)_localctx).name = identifier(); - } - break; - case 12: - _localctx = new DropTableContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(1525); - match(DROP); - setState(1526); - match(TABLE); - setState(1529); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1527); - match(IF); - setState(1528); - match(EXISTS); - } - } - - setState(1531); - ((DropTableContext)_localctx).name = multipartIdentifier(); - setState(1533); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(1532); - match(FORCE); - } - } - - } - break; - case 13: - _localctx = new DropDatabaseContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(1535); - match(DROP); - setState(1536); - _la = _input.LA(1); - if ( !(_la==DATABASE || _la==SCHEMA) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1539); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1537); - match(IF); - setState(1538); - match(EXISTS); - } - } - - setState(1541); - ((DropDatabaseContext)_localctx).name = multipartIdentifier(); - setState(1543); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(1542); - match(FORCE); - } - } - - } - break; - case 14: - _localctx = new DropFunctionContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(1545); - match(DROP); - setState(1547); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(1546); - statementScope(); - } - } - - setState(1549); - match(FUNCTION); - setState(1552); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) { - case 1: - { - setState(1550); - match(IF); - setState(1551); - match(EXISTS); - } - break; - } - setState(1554); - functionIdentifier(); - setState(1555); - match(LEFT_PAREN); - setState(1557); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { - { - setState(1556); - functionArguments(); - } - } - - setState(1559); - match(RIGHT_PAREN); - } - break; - case 15: - _localctx = new DropIndexContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(1561); - match(DROP); - setState(1562); - match(INDEX); - setState(1565); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(1563); - match(IF); - setState(1564); - match(EXISTS); - } - } - - setState(1567); - ((DropIndexContext)_localctx).name = identifier(); - setState(1568); - match(ON); - setState(1569); - ((DropIndexContext)_localctx).tableName = multipartIdentifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedShowStatementContext extends ParserRuleContext { - public SupportedShowStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedShowStatement; } - - public SupportedShowStatementContext() { } - public void copyFrom(SupportedShowStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowRepositoriesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode REPOSITORIES() { return getToken(DorisParser.REPOSITORIES, 0); } - public ShowRepositoriesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRepositories(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRepositories(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDataContext extends SupportedShowStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowDataContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowData(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowData(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDynamicPartitionContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DYNAMIC() { return getToken(DorisParser.DYNAMIC, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowDynamicPartitionContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDynamicPartition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDynamicPartition(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTableStatusContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTableStatusContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableStatus(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowGrantsForUserContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode GRANTS() { return getToken(DorisParser.GRANTS, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public ShowGrantsForUserContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowGrantsForUser(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowGrantsForUser(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowViewContext extends SupportedShowStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public List FROM() { return getTokens(DorisParser.FROM); } - public TerminalNode FROM(int i) { - return getToken(DorisParser.FROM, i); - } - public List IN() { return getTokens(DorisParser.IN); } - public TerminalNode IN(int i) { - return getToken(DorisParser.IN, i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowViewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowView(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTablesContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTablesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTables(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTables(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowAuthorsContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode AUTHORS() { return getToken(DorisParser.AUTHORS, 0); } - public ShowAuthorsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAuthors(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAuthors(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowStorageEnginesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ENGINES() { return getToken(DorisParser.ENGINES, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public ShowStorageEnginesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStorageEngines(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStorageEngines(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowWarningErrorsContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } - public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public ShowWarningErrorsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWarningErrors(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWarningErrors(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCatalogsContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CATALOGS() { return getToken(DorisParser.CATALOGS, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowCatalogsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCatalogs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCatalogs(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowRolesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ROLES() { return getToken(DorisParser.ROLES, 0); } - public ShowRolesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRoles(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRoles(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTabletsBelongContext extends SupportedShowStatementContext { - public Token INTEGER_VALUE; - public List tabletIds = new ArrayList(); - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLETS() { return getToken(DorisParser.TABLETS, 0); } - public TerminalNode BELONG() { return getToken(DorisParser.BELONG, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ShowTabletsBelongContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletsBelong(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletsBelong(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTriggersContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TRIGGERS() { return getToken(DorisParser.TRIGGERS, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTriggersContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTriggers(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTriggers(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateTableContext extends SupportedShowStatementContext { - public MultipartIdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode BRIEF() { return getToken(DorisParser.BRIEF, 0); } - public ShowCreateTableContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCatalogContext extends SupportedShowStatementContext { - public IdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowCatalogContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCatalog(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCatalog(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowVariablesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode VARIABLES() { return getToken(DorisParser.VARIABLES, 0); } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowVariablesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowVariables(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowVariables(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowSyncJobContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowSyncJobContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSyncJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSyncJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowEventsContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode EVENTS() { return getToken(DorisParser.EVENTS, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowEventsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowEvents(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowEvents(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowPluginsContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PLUGINS() { return getToken(DorisParser.PLUGINS, 0); } - public ShowPluginsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPlugins(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPlugins(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowAllPropertiesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowAllPropertiesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAllProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAllProperties(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDataSkewContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode SKEW() { return getToken(DorisParser.SKEW, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public ShowDataSkewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDataSkew(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDataSkew(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowConvertLscContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CONVERT_LSC() { return getToken(DorisParser.CONVERT_LSC, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowConvertLscContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowConvertLsc(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowConvertLsc(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowSqlBlockRuleContext extends SupportedShowStatementContext { - public IdentifierContext ruleName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode SQL_BLOCK_RULE() { return getToken(DorisParser.SQL_BLOCK_RULE, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowSqlBlockRuleContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSqlBlockRule(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSqlBlockRule(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTableCreationContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode CREATION() { return getToken(DorisParser.CREATION, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTableCreationContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableCreation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableCreation(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowWarningErrorCountContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode COUNT() { return getToken(DorisParser.COUNT, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } - public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } - public ShowWarningErrorCountContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWarningErrorCount(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWarningErrorCount(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDeleteContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowDeleteContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDelete(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDelete(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowStagesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode STAGES() { return getToken(DorisParser.STAGES, 0); } - public ShowStagesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStages(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStages(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowBrokerContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public ShowBrokerContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBroker(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBroker(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowGrantsContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode GRANTS() { return getToken(DorisParser.GRANTS, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public ShowGrantsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowGrants(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowGrants(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowReplicaDistributionContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public TerminalNode DISTRIBUTION() { return getToken(DorisParser.DISTRIBUTION, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public ShowReplicaDistributionContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowReplicaDistribution(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowReplicaDistribution(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTabletStorageFormatContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } - public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } - public ShowTabletStorageFormatContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletStorageFormat(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletStorageFormat(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCharsetContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CHARSET() { return getToken(DorisParser.CHARSET, 0); } - public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public ShowCharsetContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCharset(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCharset(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowProcContext extends SupportedShowStatementContext { - public Token path; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowProcContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowProc(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowProc(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateViewContext extends SupportedShowStatementContext { - public MultipartIdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateViewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateView(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateDatabaseContext extends SupportedShowStatementContext { - public MultipartIdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateDatabaseContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateDatabase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowQueryProfileContext extends SupportedShowStatementContext { - public Token queryIdPath; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } - public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowQueryProfileContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowQueryProfile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowQueryProfile(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowStoragePolicyContext extends SupportedShowStatementContext { - public IdentifierOrTextContext policy; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public ShowStoragePolicyContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStoragePolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStoragePolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowEncryptKeysContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ENCRYPTKEYS() { return getToken(DorisParser.ENCRYPTKEYS, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowEncryptKeysContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowEncryptKeys(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowEncryptKeys(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTrashContext extends SupportedShowStatementContext { - public Token backend; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TRASH() { return getToken(DorisParser.TRASH, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowTrashContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTrash(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTrash(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowFrontendsContext extends SupportedShowStatementContext { - public IdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode FRONTENDS() { return getToken(DorisParser.FRONTENDS, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowFrontendsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowFrontends(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowFrontends(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowLoadProfileContext extends SupportedShowStatementContext { - public Token loadIdPath; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowLoadProfileContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLoadProfile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLoadProfile(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowPartitionIdContext extends SupportedShowStatementContext { - public Token partitionId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowPartitionIdContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPartitionId(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPartitionId(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCollationContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode COLLATION() { return getToken(DorisParser.COLLATION, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowCollationContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCollation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCollation(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowBackendsContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode BACKENDS() { return getToken(DorisParser.BACKENDS, 0); } - public ShowBackendsContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBackends(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBackends(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowPrivilegesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PRIVILEGES() { return getToken(DorisParser.PRIVILEGES, 0); } - public ShowPrivilegesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPrivileges(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPrivileges(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTableIdContext extends SupportedShowStatementContext { - public Token tableId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowTableIdContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableId(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableId(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowSmallFilesContext extends SupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowSmallFilesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSmallFiles(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSmallFiles(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowStatusContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public ShowStatusContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStatus(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowUserPropertiesContext extends SupportedShowStatementContext { - public IdentifierOrTextContext user; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PROPERTY() { return getToken(DorisParser.PROPERTY, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public ShowUserPropertiesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowUserProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowUserProperties(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowLastInsertContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode LAST() { return getToken(DorisParser.LAST, 0); } - public TerminalNode INSERT() { return getToken(DorisParser.INSERT, 0); } - public ShowLastInsertContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLastInsert(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLastInsert(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateCatalogContext extends SupportedShowStatementContext { - public IdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowCreateCatalogContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateCatalog(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateCatalog(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateMaterializedViewContext extends SupportedShowStatementContext { - public IdentifierContext mvName; - public MultipartIdentifierContext tableName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateMaterializedViewContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateMaterializedView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateMaterializedView(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowProcessListContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PROCESSLIST() { return getToken(DorisParser.PROCESSLIST, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public ShowProcessListContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowProcessList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowProcessList(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDataTypesContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode TYPES() { return getToken(DorisParser.TYPES, 0); } - public ShowDataTypesContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDataTypes(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDataTypes(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDiagnoseTabletContext extends SupportedShowStatementContext { - public Token tabletId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode DIAGNOSIS() { return getToken(DorisParser.DIAGNOSIS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowDiagnoseTabletContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDiagnoseTablet(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDiagnoseTablet(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowWhitelistContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode WHITELIST() { return getToken(DorisParser.WHITELIST, 0); } - public ShowWhitelistContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWhitelist(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWhitelist(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDatabaseIdContext extends SupportedShowStatementContext { - public Token databaseId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowDatabaseIdContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDatabaseId(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDatabaseId(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateRepositoryContext extends SupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowCreateRepositoryContext(SupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateRepository(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateRepository(this); - } - } - - public final SupportedShowStatementContext supportedShowStatement() throws RecognitionException { - SupportedShowStatementContext _localctx = new SupportedShowStatementContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_supportedShowStatement); - int _la; - try { - setState(1917); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,221,_ctx) ) { - case 1: - _localctx = new ShowVariablesContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1573); - match(SHOW); - setState(1575); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(1574); - statementScope(); - } - } - - setState(1577); - match(VARIABLES); - setState(1579); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1578); - wildWhere(); - } - } - - } - break; - case 2: - _localctx = new ShowAuthorsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1581); - match(SHOW); - setState(1582); - match(AUTHORS); - } - break; - case 3: - _localctx = new ShowCreateDatabaseContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1583); - match(SHOW); - setState(1584); - match(CREATE); - setState(1585); - _la = _input.LA(1); - if ( !(_la==DATABASE || _la==SCHEMA) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1586); - ((ShowCreateDatabaseContext)_localctx).name = multipartIdentifier(); - } - break; - case 4: - _localctx = new ShowBrokerContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1587); - match(SHOW); - setState(1588); - match(BROKER); - } - break; - case 5: - _localctx = new ShowDynamicPartitionContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1589); - match(SHOW); - setState(1590); - match(DYNAMIC); - setState(1591); - match(PARTITION); - setState(1592); - match(TABLES); - setState(1595); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1593); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1594); - ((ShowDynamicPartitionContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 6: - _localctx = new ShowEventsContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(1597); - match(SHOW); - setState(1598); - match(EVENTS); - setState(1601); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1599); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1600); - ((ShowEventsContext)_localctx).database = multipartIdentifier(); - } - } - - setState(1604); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1603); - wildWhere(); - } - } - - } - break; - case 7: - _localctx = new ShowLastInsertContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(1606); - match(SHOW); - setState(1607); - match(LAST); - setState(1608); - match(INSERT); - } - break; - case 8: - _localctx = new ShowCharsetContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(1609); - match(SHOW); - setState(1613); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CHAR: - { - { - setState(1610); - match(CHAR); - setState(1611); - match(SET); - } - } - break; - case CHARSET: - { - setState(1612); - match(CHARSET); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 9: - _localctx = new ShowDeleteContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(1615); - match(SHOW); - setState(1616); - match(DELETE); - setState(1619); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1617); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1618); - ((ShowDeleteContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 10: - _localctx = new ShowGrantsContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(1621); - match(SHOW); - setState(1623); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL) { - { - setState(1622); - match(ALL); - } - } - - setState(1625); - match(GRANTS); - } - break; - case 11: - _localctx = new ShowGrantsForUserContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(1626); - match(SHOW); - setState(1627); - match(GRANTS); - setState(1628); - match(FOR); - setState(1629); - userIdentify(); - } - break; - case 12: - _localctx = new ShowSyncJobContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(1630); - match(SHOW); - setState(1631); - match(SYNC); - setState(1632); - match(JOB); - setState(1635); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1633); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1634); - ((ShowSyncJobContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 13: - _localctx = new ShowLoadProfileContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(1637); - match(SHOW); - setState(1638); - match(LOAD); - setState(1639); - match(PROFILE); - setState(1641); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STRING_LITERAL) { - { - setState(1640); - ((ShowLoadProfileContext)_localctx).loadIdPath = match(STRING_LITERAL); - } - } - - setState(1644); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(1643); - limitClause(); - } - } - - } - break; - case 14: - _localctx = new ShowCreateRepositoryContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(1646); - match(SHOW); - setState(1647); - match(CREATE); - setState(1648); - match(REPOSITORY); - setState(1649); - match(FOR); - setState(1650); - identifier(); - } - break; - case 15: - _localctx = new ShowViewContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(1651); - match(SHOW); - setState(1652); - match(VIEW); - setState(1653); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1654); - ((ShowViewContext)_localctx).tableName = multipartIdentifier(); - setState(1657); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1655); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1656); - ((ShowViewContext)_localctx).database = identifier(); - } - } - - } - break; - case 16: - _localctx = new ShowPluginsContext(_localctx); - enterOuterAlt(_localctx, 16); - { - setState(1659); - match(SHOW); - setState(1660); - match(PLUGINS); - } - break; - case 17: - _localctx = new ShowRepositoriesContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(1661); - match(SHOW); - setState(1662); - match(REPOSITORIES); - } - break; - case 18: - _localctx = new ShowEncryptKeysContext(_localctx); - enterOuterAlt(_localctx, 18); - { - setState(1663); - match(SHOW); - setState(1664); - match(ENCRYPTKEYS); - setState(1667); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1665); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1666); - ((ShowEncryptKeysContext)_localctx).database = multipartIdentifier(); - } - } - - setState(1671); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(1669); - match(LIKE); - setState(1670); - match(STRING_LITERAL); - } - } - - } - break; - case 19: - _localctx = new ShowCreateTableContext(_localctx); - enterOuterAlt(_localctx, 19); - { - setState(1673); - match(SHOW); - setState(1675); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BRIEF) { - { - setState(1674); - match(BRIEF); - } - } - - setState(1677); - match(CREATE); - setState(1678); - match(TABLE); - setState(1679); - ((ShowCreateTableContext)_localctx).name = multipartIdentifier(); - } - break; - case 20: - _localctx = new ShowProcessListContext(_localctx); - enterOuterAlt(_localctx, 20); - { - setState(1680); - match(SHOW); - setState(1682); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(1681); - match(FULL); - } - } - - setState(1684); - match(PROCESSLIST); - } - break; - case 21: - _localctx = new ShowRolesContext(_localctx); - enterOuterAlt(_localctx, 21); - { - setState(1685); - match(SHOW); - setState(1686); - match(ROLES); - } - break; - case 22: - _localctx = new ShowPartitionIdContext(_localctx); - enterOuterAlt(_localctx, 22); - { - setState(1687); - match(SHOW); - setState(1688); - match(PARTITION); - setState(1689); - ((ShowPartitionIdContext)_localctx).partitionId = match(INTEGER_VALUE); - } - break; - case 23: - _localctx = new ShowPrivilegesContext(_localctx); - enterOuterAlt(_localctx, 23); - { - setState(1690); - match(SHOW); - setState(1691); - match(PRIVILEGES); - } - break; - case 24: - _localctx = new ShowProcContext(_localctx); - enterOuterAlt(_localctx, 24); - { - setState(1692); - match(SHOW); - setState(1693); - match(PROC); - setState(1694); - ((ShowProcContext)_localctx).path = match(STRING_LITERAL); - } - break; - case 25: - _localctx = new ShowSmallFilesContext(_localctx); - enterOuterAlt(_localctx, 25); - { - setState(1695); - match(SHOW); - setState(1696); - match(FILE); - setState(1699); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1697); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1698); - ((ShowSmallFilesContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 26: - _localctx = new ShowStorageEnginesContext(_localctx); - enterOuterAlt(_localctx, 26); - { - setState(1701); - match(SHOW); - setState(1703); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STORAGE) { - { - setState(1702); - match(STORAGE); - } - } - - setState(1705); - match(ENGINES); - } - break; - case 27: - _localctx = new ShowCreateCatalogContext(_localctx); - enterOuterAlt(_localctx, 27); - { - setState(1706); - match(SHOW); - setState(1707); - match(CREATE); - setState(1708); - match(CATALOG); - setState(1709); - ((ShowCreateCatalogContext)_localctx).name = identifier(); - } - break; - case 28: - _localctx = new ShowCatalogContext(_localctx); - enterOuterAlt(_localctx, 28); - { - setState(1710); - match(SHOW); - setState(1711); - match(CATALOG); - setState(1712); - ((ShowCatalogContext)_localctx).name = identifier(); - } - break; - case 29: - _localctx = new ShowCatalogsContext(_localctx); - enterOuterAlt(_localctx, 29); - { - setState(1713); - match(SHOW); - setState(1714); - match(CATALOGS); - setState(1716); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1715); - wildWhere(); - } - } - - } - break; - case 30: - _localctx = new ShowUserPropertiesContext(_localctx); - enterOuterAlt(_localctx, 30); - { - setState(1718); - match(SHOW); - setState(1719); - match(PROPERTY); - setState(1722); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(1720); - match(FOR); - setState(1721); - ((ShowUserPropertiesContext)_localctx).user = identifierOrText(); - } - } - - setState(1726); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(1724); - match(LIKE); - setState(1725); - match(STRING_LITERAL); - } - } - - } - break; - case 31: - _localctx = new ShowAllPropertiesContext(_localctx); - enterOuterAlt(_localctx, 31); - { - setState(1728); - match(SHOW); - setState(1729); - match(ALL); - setState(1730); - match(PROPERTIES); - setState(1733); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(1731); - match(LIKE); - setState(1732); - match(STRING_LITERAL); - } - } - - } - break; - case 32: - _localctx = new ShowCollationContext(_localctx); - enterOuterAlt(_localctx, 32); - { - setState(1735); - match(SHOW); - setState(1736); - match(COLLATION); - setState(1738); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1737); - wildWhere(); - } - } - - } - break; - case 33: - _localctx = new ShowStoragePolicyContext(_localctx); - enterOuterAlt(_localctx, 33); - { - setState(1740); - match(SHOW); - setState(1741); - match(STORAGE); - setState(1742); - match(POLICY); - setState(1748); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(1743); - match(USING); - setState(1746); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(1744); - match(FOR); - setState(1745); - ((ShowStoragePolicyContext)_localctx).policy = identifierOrText(); - } - } - - } - } - - } - break; - case 34: - _localctx = new ShowSqlBlockRuleContext(_localctx); - enterOuterAlt(_localctx, 34); - { - setState(1750); - match(SHOW); - setState(1751); - match(SQL_BLOCK_RULE); - setState(1754); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(1752); - match(FOR); - setState(1753); - ((ShowSqlBlockRuleContext)_localctx).ruleName = identifier(); - } - } - - } - break; - case 35: - _localctx = new ShowCreateViewContext(_localctx); - enterOuterAlt(_localctx, 35); - { - setState(1756); - match(SHOW); - setState(1757); - match(CREATE); - setState(1758); - match(VIEW); - setState(1759); - ((ShowCreateViewContext)_localctx).name = multipartIdentifier(); - } - break; - case 36: - _localctx = new ShowDataTypesContext(_localctx); - enterOuterAlt(_localctx, 36); - { - setState(1760); - match(SHOW); - setState(1761); - match(DATA); - setState(1762); - match(TYPES); - } - break; - case 37: - _localctx = new ShowDataContext(_localctx); - enterOuterAlt(_localctx, 37); - { - setState(1763); - match(SHOW); - setState(1764); - match(DATA); - setState(1766); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL) { - { - setState(1765); - match(ALL); - } - } - - setState(1770); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(1768); - match(FROM); - setState(1769); - ((ShowDataContext)_localctx).tableName = multipartIdentifier(); - } - } - - setState(1773); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(1772); - sortClause(); - } - } - - setState(1776); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1775); - propertyClause(); - } - } - - } - break; - case 38: - _localctx = new ShowCreateMaterializedViewContext(_localctx); - enterOuterAlt(_localctx, 38); - { - setState(1778); - match(SHOW); - setState(1779); - match(CREATE); - setState(1780); - match(MATERIALIZED); - setState(1781); - match(VIEW); - setState(1782); - ((ShowCreateMaterializedViewContext)_localctx).mvName = identifier(); - setState(1783); - match(ON); - setState(1784); - ((ShowCreateMaterializedViewContext)_localctx).tableName = multipartIdentifier(); - } - break; - case 39: - _localctx = new ShowWarningErrorsContext(_localctx); - enterOuterAlt(_localctx, 39); - { - setState(1786); - match(SHOW); - setState(1787); - _la = _input.LA(1); - if ( !(_la==ERRORS || _la==WARNINGS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1789); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(1788); - limitClause(); - } - } - - } - break; - case 40: - _localctx = new ShowWarningErrorCountContext(_localctx); - enterOuterAlt(_localctx, 40); - { - setState(1791); - match(SHOW); - setState(1792); - match(COUNT); - setState(1793); - match(LEFT_PAREN); - setState(1794); - match(ASTERISK); - setState(1795); - match(RIGHT_PAREN); - setState(1796); - _la = _input.LA(1); - if ( !(_la==ERRORS || _la==WARNINGS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 41: - _localctx = new ShowBackendsContext(_localctx); - enterOuterAlt(_localctx, 41); - { - setState(1797); - match(SHOW); - setState(1798); - match(BACKENDS); - } - break; - case 42: - _localctx = new ShowStagesContext(_localctx); - enterOuterAlt(_localctx, 42); - { - setState(1799); - match(SHOW); - setState(1800); - match(STAGES); - } - break; - case 43: - _localctx = new ShowReplicaDistributionContext(_localctx); - enterOuterAlt(_localctx, 43); - { - setState(1801); - match(SHOW); - setState(1802); - match(REPLICA); - setState(1803); - match(DISTRIBUTION); - setState(1804); - match(FROM); - setState(1805); - baseTableRef(); - } - break; - case 44: - _localctx = new ShowTriggersContext(_localctx); - enterOuterAlt(_localctx, 44); - { - setState(1806); - match(SHOW); - setState(1808); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(1807); - match(FULL); - } - } - - setState(1810); - match(TRIGGERS); - setState(1813); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1811); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1812); - ((ShowTriggersContext)_localctx).database = multipartIdentifier(); - } - } - - setState(1816); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1815); - wildWhere(); - } - } - - } - break; - case 45: - _localctx = new ShowDiagnoseTabletContext(_localctx); - enterOuterAlt(_localctx, 45); - { - setState(1818); - match(SHOW); - setState(1819); - match(TABLET); - setState(1820); - match(DIAGNOSIS); - setState(1821); - ((ShowDiagnoseTabletContext)_localctx).tabletId = match(INTEGER_VALUE); - } - break; - case 46: - _localctx = new ShowFrontendsContext(_localctx); - enterOuterAlt(_localctx, 46); - { - setState(1822); - match(SHOW); - setState(1823); - match(FRONTENDS); - setState(1825); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(1824); - ((ShowFrontendsContext)_localctx).name = identifier(); - } - } - - } - break; - case 47: - _localctx = new ShowDatabaseIdContext(_localctx); - enterOuterAlt(_localctx, 47); - { - setState(1827); - match(SHOW); - setState(1828); - match(DATABASE); - setState(1829); - ((ShowDatabaseIdContext)_localctx).databaseId = match(INTEGER_VALUE); - } - break; - case 48: - _localctx = new ShowTableIdContext(_localctx); - enterOuterAlt(_localctx, 48); - { - setState(1830); - match(SHOW); - setState(1831); - match(TABLE); - setState(1832); - ((ShowTableIdContext)_localctx).tableId = match(INTEGER_VALUE); - } - break; - case 49: - _localctx = new ShowTrashContext(_localctx); - enterOuterAlt(_localctx, 49); - { - setState(1833); - match(SHOW); - setState(1834); - match(TRASH); - setState(1837); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(1835); - match(ON); - setState(1836); - ((ShowTrashContext)_localctx).backend = match(STRING_LITERAL); - } - } - - } - break; - case 50: - _localctx = new ShowStatusContext(_localctx); - enterOuterAlt(_localctx, 50); - { - setState(1839); - match(SHOW); - setState(1841); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(1840); - statementScope(); - } - } - - setState(1843); - match(STATUS); - } - break; - case 51: - _localctx = new ShowWhitelistContext(_localctx); - enterOuterAlt(_localctx, 51); - { - setState(1844); - match(SHOW); - setState(1845); - match(WHITELIST); - } - break; - case 52: - _localctx = new ShowTabletsBelongContext(_localctx); - enterOuterAlt(_localctx, 52); - { - setState(1846); - match(SHOW); - setState(1847); - match(TABLETS); - setState(1848); - match(BELONG); - setState(1849); - ((ShowTabletsBelongContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((ShowTabletsBelongContext)_localctx).tabletIds.add(((ShowTabletsBelongContext)_localctx).INTEGER_VALUE); - setState(1854); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1850); - match(COMMA); - setState(1851); - ((ShowTabletsBelongContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((ShowTabletsBelongContext)_localctx).tabletIds.add(((ShowTabletsBelongContext)_localctx).INTEGER_VALUE); - } - } - setState(1856); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 53: - _localctx = new ShowDataSkewContext(_localctx); - enterOuterAlt(_localctx, 53); - { - setState(1857); - match(SHOW); - setState(1858); - match(DATA); - setState(1859); - match(SKEW); - setState(1860); - match(FROM); - setState(1861); - baseTableRef(); - } - break; - case 54: - _localctx = new ShowTableCreationContext(_localctx); - enterOuterAlt(_localctx, 54); - { - setState(1862); - match(SHOW); - setState(1863); - match(TABLE); - setState(1864); - match(CREATION); - setState(1867); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1865); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1866); - ((ShowTableCreationContext)_localctx).database = multipartIdentifier(); - } - } - - setState(1871); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE) { - { - setState(1869); - match(LIKE); - setState(1870); - match(STRING_LITERAL); - } - } - - } - break; - case 55: - _localctx = new ShowTabletStorageFormatContext(_localctx); - enterOuterAlt(_localctx, 55); - { - setState(1873); - match(SHOW); - setState(1874); - match(TABLET); - setState(1875); - match(STORAGE); - setState(1876); - match(FORMAT); - setState(1878); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==VERBOSE) { - { - setState(1877); - match(VERBOSE); - } - } - - } - break; - case 56: - _localctx = new ShowQueryProfileContext(_localctx); - enterOuterAlt(_localctx, 56); - { - setState(1880); - match(SHOW); - setState(1881); - match(QUERY); - setState(1882); - match(PROFILE); - setState(1884); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STRING_LITERAL) { - { - setState(1883); - ((ShowQueryProfileContext)_localctx).queryIdPath = match(STRING_LITERAL); - } - } - - setState(1887); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(1886); - limitClause(); - } - } - - } - break; - case 57: - _localctx = new ShowConvertLscContext(_localctx); - enterOuterAlt(_localctx, 57); - { - setState(1889); - match(SHOW); - setState(1890); - match(CONVERT_LSC); - setState(1893); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1891); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1892); - ((ShowConvertLscContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 58: - _localctx = new ShowTablesContext(_localctx); - enterOuterAlt(_localctx, 58); - { - setState(1895); - match(SHOW); - setState(1897); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(1896); - match(FULL); - } - } - - setState(1899); - match(TABLES); - setState(1902); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1900); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1901); - ((ShowTablesContext)_localctx).database = multipartIdentifier(); - } - } - - setState(1905); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1904); - wildWhere(); - } - } - - } - break; - case 59: - _localctx = new ShowTableStatusContext(_localctx); - enterOuterAlt(_localctx, 59); - { - setState(1907); - match(SHOW); - setState(1908); - match(TABLE); - setState(1909); - match(STATUS); - setState(1912); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(1910); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1911); - ((ShowTableStatusContext)_localctx).database = multipartIdentifier(); - } - } - - setState(1915); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(1914); - wildWhere(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedLoadStatementContext extends ParserRuleContext { - public SupportedLoadStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedLoadStatement; } - - public SupportedLoadStatementContext() { } - public void copyFrom(SupportedLoadStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateRoutineLoadAliasContext extends SupportedLoadStatementContext { - public CreateRoutineLoadContext createRoutineLoad() { - return getRuleContext(CreateRoutineLoadContext.class,0); - } - public CreateRoutineLoadAliasContext(SupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRoutineLoadAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRoutineLoadAlias(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SyncContext extends SupportedLoadStatementContext { - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public SyncContext(SupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSync(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSync(this); - } - } - - public final SupportedLoadStatementContext supportedLoadStatement() throws RecognitionException { - SupportedLoadStatementContext _localctx = new SupportedLoadStatementContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_supportedLoadStatement); - try { - setState(1921); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SYNC: - _localctx = new SyncContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1919); - match(SYNC); - } - break; - case CREATE: - _localctx = new CreateRoutineLoadAliasContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1920); - createRoutineLoad(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedOtherStatementContext extends ParserRuleContext { - public SupportedOtherStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedOtherStatement; } - - public SupportedOtherStatementContext() { } - public void copyFrom(SupportedOtherStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class HelpContext extends SupportedOtherStatementContext { - public IdentifierOrTextContext mark; - public TerminalNode HELP() { return getToken(DorisParser.HELP, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public HelpContext(SupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHelp(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHelp(this); - } - } - - public final SupportedOtherStatementContext supportedOtherStatement() throws RecognitionException { - SupportedOtherStatementContext _localctx = new SupportedOtherStatementContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_supportedOtherStatement); - try { - _localctx = new HelpContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1923); - match(HELP); - setState(1924); - ((HelpContext)_localctx).mark = identifierOrText(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedOtherStatementContext extends ParserRuleContext { - public UnsupportedOtherStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedOtherStatement; } - - public UnsupportedOtherStatementContext() { } - public void copyFrom(UnsupportedOtherStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UninstallPluginContext extends UnsupportedOtherStatementContext { - public IdentifierOrTextContext name; - public TerminalNode UNINSTALL() { return getToken(DorisParser.UNINSTALL, 0); } - public TerminalNode PLUGIN() { return getToken(DorisParser.PLUGIN, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public UninstallPluginContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUninstallPlugin(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUninstallPlugin(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UnlockTablesContext extends UnsupportedOtherStatementContext { - public TerminalNode UNLOCK() { return getToken(DorisParser.UNLOCK, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public UnlockTablesContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnlockTables(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnlockTables(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BackupContext extends UnsupportedOtherStatementContext { - public MultipartIdentifierContext label; - public IdentifierContext repo; - public PropertyClauseContext properties; - public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } - public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public List baseTableRef() { - return getRuleContexts(BaseTableRefContext.class); - } - public BaseTableRefContext baseTableRef(int i) { - return getRuleContext(BaseTableRefContext.class,i); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode EXCLUDE() { return getToken(DorisParser.EXCLUDE, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public BackupContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBackup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBackup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LockTablesContext extends UnsupportedOtherStatementContext { - public TerminalNode LOCK() { return getToken(DorisParser.LOCK, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public List lockTable() { - return getRuleContexts(LockTableContext.class); - } - public LockTableContext lockTable(int i) { - return getRuleContext(LockTableContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public LockTablesContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLockTables(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLockTables(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RestoreContext extends UnsupportedOtherStatementContext { - public MultipartIdentifierContext label; - public IdentifierContext repo; - public PropertyClauseContext properties; - public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } - public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public List baseTableRef() { - return getRuleContexts(BaseTableRefContext.class); - } - public BaseTableRefContext baseTableRef(int i) { - return getRuleContext(BaseTableRefContext.class,i); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode EXCLUDE() { return getToken(DorisParser.EXCLUDE, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public RestoreContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRestore(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRestore(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class InstallPluginContext extends UnsupportedOtherStatementContext { - public IdentifierOrTextContext source; - public PropertyClauseContext properties; - public TerminalNode INSTALL() { return getToken(DorisParser.INSTALL, 0); } - public TerminalNode PLUGIN() { return getToken(DorisParser.PLUGIN, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public InstallPluginContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInstallPlugin(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInstallPlugin(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class WarmUpClusterContext extends UnsupportedOtherStatementContext { - public IdentifierContext destination; - public IdentifierContext source; - public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } - public TerminalNode UP() { return getToken(DorisParser.UP, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List CLUSTER() { return getTokens(DorisParser.CLUSTER); } - public TerminalNode CLUSTER(int i) { - return getToken(DorisParser.CLUSTER, i); - } - public List COMPUTE() { return getTokens(DorisParser.COMPUTE); } - public TerminalNode COMPUTE(int i) { - return getToken(DorisParser.COMPUTE, i); - } - public List GROUP() { return getTokens(DorisParser.GROUP); } - public TerminalNode GROUP(int i) { - return getToken(DorisParser.GROUP, i); - } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public List warmUpItem() { - return getRuleContexts(WarmUpItemContext.class); - } - public WarmUpItemContext warmUpItem(int i) { - return getRuleContext(WarmUpItemContext.class,i); - } - public List AND() { return getTokens(DorisParser.AND); } - public TerminalNode AND(int i) { - return getToken(DorisParser.AND, i); - } - public WarmUpClusterContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWarmUpCluster(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWarmUpCluster(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedStartTransactionContext extends UnsupportedOtherStatementContext { - public TerminalNode START() { return getToken(DorisParser.START, 0); } - public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode CONSISTENT() { return getToken(DorisParser.CONSISTENT, 0); } - public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } - public UnsupportedStartTransactionContext(UnsupportedOtherStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnsupportedStartTransaction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnsupportedStartTransaction(this); - } - } - - public final UnsupportedOtherStatementContext unsupportedOtherStatement() throws RecognitionException { - UnsupportedOtherStatementContext _localctx = new UnsupportedOtherStatementContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_unsupportedOtherStatement); - int _la; - try { - setState(2029); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INSTALL: - _localctx = new InstallPluginContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(1926); - match(INSTALL); - setState(1927); - match(PLUGIN); - setState(1928); - match(FROM); - setState(1929); - ((InstallPluginContext)_localctx).source = identifierOrText(); - setState(1931); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1930); - ((InstallPluginContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case UNINSTALL: - _localctx = new UninstallPluginContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(1933); - match(UNINSTALL); - setState(1934); - match(PLUGIN); - setState(1935); - ((UninstallPluginContext)_localctx).name = identifierOrText(); - } - break; - case LOCK: - _localctx = new LockTablesContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(1936); - match(LOCK); - setState(1937); - match(TABLES); - setState(1946); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(1938); - lockTable(); - setState(1943); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1939); - match(COMMA); - setState(1940); - lockTable(); - } - } - setState(1945); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - } - break; - case UNLOCK: - _localctx = new UnlockTablesContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(1948); - match(UNLOCK); - setState(1949); - match(TABLES); - } - break; - case WARM: - _localctx = new WarmUpClusterContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(1950); - match(WARM); - setState(1951); - match(UP); - setState(1955); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CLUSTER: - { - setState(1952); - match(CLUSTER); - } - break; - case COMPUTE: - { - setState(1953); - match(COMPUTE); - setState(1954); - match(GROUP); - } - break; - default: - throw new NoViableAltException(this); - } - setState(1957); - ((WarmUpClusterContext)_localctx).destination = identifier(); - setState(1958); - match(WITH); - setState(1973); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CLUSTER: - case COMPUTE: - { - setState(1962); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CLUSTER: - { - setState(1959); - match(CLUSTER); - } - break; - case COMPUTE: - { - setState(1960); - match(COMPUTE); - setState(1961); - match(GROUP); - } - break; - default: - throw new NoViableAltException(this); - } - setState(1964); - ((WarmUpClusterContext)_localctx).source = identifier(); - } - break; - case TABLE: - { - { - setState(1965); - warmUpItem(); - setState(1970); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==AND) { - { - { - setState(1966); - match(AND); - setState(1967); - warmUpItem(); - } - } - setState(1972); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(1976); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(1975); - match(FORCE); - } - } - - } - break; - case BACKUP: - _localctx = new BackupContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(1978); - match(BACKUP); - setState(1979); - match(SNAPSHOT); - setState(1980); - ((BackupContext)_localctx).label = multipartIdentifier(); - setState(1981); - match(TO); - setState(1982); - ((BackupContext)_localctx).repo = identifier(); - setState(1995); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EXCLUDE || _la==ON) { - { - setState(1983); - _la = _input.LA(1); - if ( !(_la==EXCLUDE || _la==ON) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(1984); - match(LEFT_PAREN); - setState(1985); - baseTableRef(); - setState(1990); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(1986); - match(COMMA); - setState(1987); - baseTableRef(); - } - } - setState(1992); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1993); - match(RIGHT_PAREN); - } - } - - setState(1998); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(1997); - ((BackupContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case RESTORE: - _localctx = new RestoreContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2000); - match(RESTORE); - setState(2001); - match(SNAPSHOT); - setState(2002); - ((RestoreContext)_localctx).label = multipartIdentifier(); - setState(2003); - match(FROM); - setState(2004); - ((RestoreContext)_localctx).repo = identifier(); - setState(2017); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EXCLUDE || _la==ON) { - { - setState(2005); - _la = _input.LA(1); - if ( !(_la==EXCLUDE || _la==ON) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2006); - match(LEFT_PAREN); - setState(2007); - baseTableRef(); - setState(2012); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2008); - match(COMMA); - setState(2009); - baseTableRef(); - } - } - setState(2014); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2015); - match(RIGHT_PAREN); - } - } - - setState(2020); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2019); - ((RestoreContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case START: - _localctx = new UnsupportedStartTransactionContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(2022); - match(START); - setState(2023); - match(TRANSACTION); - setState(2027); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(2024); - match(WITH); - setState(2025); - match(CONSISTENT); - setState(2026); - match(SNAPSHOT); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WarmUpItemContext extends ParserRuleContext { - public MultipartIdentifierContext tableName; - public IdentifierContext partitionName; - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public WarmUpItemContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_warmUpItem; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWarmUpItem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWarmUpItem(this); - } - } - - public final WarmUpItemContext warmUpItem() throws RecognitionException { - WarmUpItemContext _localctx = new WarmUpItemContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_warmUpItem); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2031); - match(TABLE); - setState(2032); - ((WarmUpItemContext)_localctx).tableName = multipartIdentifier(); - setState(2035); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(2033); - match(PARTITION); - setState(2034); - ((WarmUpItemContext)_localctx).partitionName = identifier(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LockTableContext extends ParserRuleContext { - public MultipartIdentifierContext name; - public IdentifierOrTextContext alias; - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode READ() { return getToken(DorisParser.READ, 0); } - public TerminalNode WRITE() { return getToken(DorisParser.WRITE, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } - public TerminalNode LOW_PRIORITY() { return getToken(DorisParser.LOW_PRIORITY, 0); } - public LockTableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lockTable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLockTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLockTable(this); - } - } - - public final LockTableContext lockTable() throws RecognitionException { - LockTableContext _localctx = new LockTableContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_lockTable); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2037); - ((LockTableContext)_localctx).name = multipartIdentifier(); - setState(2040); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(2038); - match(AS); - setState(2039); - ((LockTableContext)_localctx).alias = identifierOrText(); - } - } - - setState(2050); - _errHandler.sync(this); - switch (_input.LA(1)) { - case READ: - { - setState(2042); - match(READ); - setState(2044); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOCAL) { - { - setState(2043); - match(LOCAL); - } - } - - } - break; - case LOW_PRIORITY: - case WRITE: - { - setState(2047); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOW_PRIORITY) { - { - setState(2046); - match(LOW_PRIORITY); - } - } - - setState(2049); - match(WRITE); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedShowStatementContext extends ParserRuleContext { - public UnsupportedShowStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedShowStatement; } - - public UnsupportedShowStatementContext() { } - public void copyFrom(UnsupportedShowStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowOpenTablesContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode OPEN() { return getToken(DorisParser.OPEN, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowOpenTablesContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowOpenTables(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowOpenTables(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowQueryStatsContext extends UnsupportedShowStatementContext { - public IdentifierContext database; - public MultipartIdentifierContext tableName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } - public ShowQueryStatsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowQueryStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowQueryStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowIndexContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext tableName; - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public TerminalNode KEYS() { return getToken(DorisParser.KEYS, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public TerminalNode INDEXES() { return getToken(DorisParser.INDEXES, 0); } - public List FROM() { return getTokens(DorisParser.FROM); } - public TerminalNode FROM(int i) { - return getToken(DorisParser.FROM, i); - } - public List IN() { return getTokens(DorisParser.IN); } - public TerminalNode IN(int i) { - return getToken(DorisParser.IN, i); - } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public ShowIndexContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowIndex(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowIndex(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowBackupContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowBackupContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBackup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBackup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowLoadContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode STREAM() { return getToken(DorisParser.STREAM, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowLoadContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowClustersContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CLUSTERS() { return getToken(DorisParser.CLUSTERS, 0); } - public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } - public TerminalNode GROUPS() { return getToken(DorisParser.GROUPS, 0); } - public ShowClustersContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowClusters(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowClusters(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateFunctionContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public FunctionIdentifierContext functionIdentifier() { - return getRuleContext(FunctionIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public FunctionArgumentsContext functionArguments() { - return getRuleContext(FunctionArgumentsContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateFunctionContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowPartitionsContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public ShowPartitionsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowPartitions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowPartitions(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCacheHotSpotContext extends UnsupportedShowStatementContext { - public Token tablePath; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CACHE() { return getToken(DorisParser.CACHE, 0); } - public TerminalNode HOTSPOT() { return getToken(DorisParser.HOTSPOT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowCacheHotSpotContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCacheHotSpot(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCacheHotSpot(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowGlobalFunctionsContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } - public TerminalNode FUNCTIONS() { return getToken(DorisParser.FUNCTIONS, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowGlobalFunctionsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowGlobalFunctions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowGlobalFunctions(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowMaterializedViewContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext name; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowMaterializedViewContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowMaterializedView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowMaterializedView(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowExportContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode EXPORT() { return getToken(DorisParser.EXPORT, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowExportContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowExport(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowExport(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowSnapshotContext extends UnsupportedShowStatementContext { - public IdentifierContext repo; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowSnapshotContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowSnapshot(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowSnapshot(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCatalogRecycleBinContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public TerminalNode RECYCLE() { return getToken(DorisParser.RECYCLE, 0); } - public TerminalNode BIN() { return getToken(DorisParser.BIN, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowCatalogRecycleBinContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCatalogRecycleBin(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCatalogRecycleBin(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCopyContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCopyContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCopy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCopy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowRowPolicyContext extends UnsupportedShowStatementContext { - public IdentifierContext role; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowRowPolicyContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRowPolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRowPolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTypeCastContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TYPECAST() { return getToken(DorisParser.TYPECAST, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTypeCastContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTypeCast(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTypeCast(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowRestoreContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } - public TerminalNode BRIEF() { return getToken(DorisParser.BRIEF, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowRestoreContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRestore(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRestore(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowLoadWaringsContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public Token url; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowLoadWaringsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowLoadWarings(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowLoadWarings(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowColumnsContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext tableName; - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public TerminalNode FIELDS() { return getToken(DorisParser.FIELDS, 0); } - public List FROM() { return getTokens(DorisParser.FROM); } - public TerminalNode FROM(int i) { - return getToken(DorisParser.FROM, i); - } - public List IN() { return getTokens(DorisParser.IN); } - public TerminalNode IN(int i) { - return getToken(DorisParser.IN, i); - } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowColumnsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowColumns(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowColumns(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowAlterTableContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowAlterTableContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAlterTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAlterTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowBuildIndexContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowBuildIndexContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowBuildIndex(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowBuildIndex(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowDatabasesContext extends UnsupportedShowStatementContext { - public IdentifierContext catalog; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode DATABASES() { return getToken(DorisParser.DATABASES, 0); } - public TerminalNode SCHEMAS() { return getToken(DorisParser.SCHEMAS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowDatabasesContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowDatabases(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowDatabases(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTabletIdContext extends UnsupportedShowStatementContext { - public Token tabletId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowTabletIdContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletId(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletId(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowStorageVaultContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public TerminalNode VAULTS() { return getToken(DorisParser.VAULTS, 0); } - public ShowStorageVaultContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowStorageVault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowStorageVault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowWarmUpJobContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } - public TerminalNode UP() { return getToken(DorisParser.UP, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowWarmUpJobContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWarmUpJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWarmUpJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowReplicaStatusContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowReplicaStatusContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowReplicaStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowReplicaStatus(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTabletsFromTableContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLETS() { return getToken(DorisParser.TABLETS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public ShowTabletsFromTableContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTabletsFromTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTabletsFromTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowViewsContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode VIEWS() { return getToken(DorisParser.VIEWS, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowViewsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowViews(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowViews(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTransactionContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowTransactionContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTransaction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTransaction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowResourcesContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode RESOURCES() { return getToken(DorisParser.RESOURCES, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public ShowResourcesContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowResources(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowResources(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowFunctionsContext extends UnsupportedShowStatementContext { - public MultipartIdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode FUNCTIONS() { return getToken(DorisParser.FUNCTIONS, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public TerminalNode BUILTIN() { return getToken(DorisParser.BUILTIN, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowFunctionsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowFunctions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowFunctions(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowWorkloadGroupsContext extends UnsupportedShowStatementContext { - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode GROUPS() { return getToken(DorisParser.GROUPS, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowWorkloadGroupsContext(UnsupportedShowStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowWorkloadGroups(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowWorkloadGroups(this); - } - } - - public final UnsupportedShowStatementContext unsupportedShowStatement() throws RecognitionException { - UnsupportedShowStatementContext _localctx = new UnsupportedShowStatementContext(_ctx, getState()); - enterRule(_localctx, 36, RULE_unsupportedShowStatement); - int _la; - try { - setState(2409); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,320,_ctx) ) { - case 1: - _localctx = new ShowRowPolicyContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2052); - match(SHOW); - setState(2053); - match(ROW); - setState(2054); - match(POLICY); - setState(2061); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(2055); - match(FOR); - setState(2059); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(2056); - userIdentify(); - } - break; - case ROLE: - { - { - setState(2057); - match(ROLE); - setState(2058); - ((ShowRowPolicyContext)_localctx).role = identifier(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - } - break; - case 2: - _localctx = new ShowStorageVaultContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2063); - match(SHOW); - setState(2064); - match(STORAGE); - setState(2065); - _la = _input.LA(1); - if ( !(_la==VAULT || _la==VAULTS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case 3: - _localctx = new ShowOpenTablesContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2066); - match(SHOW); - setState(2067); - match(OPEN); - setState(2068); - match(TABLES); - setState(2071); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2069); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2070); - ((ShowOpenTablesContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2074); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2073); - wildWhere(); - } - } - - } - break; - case 4: - _localctx = new ShowViewsContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2076); - match(SHOW); - setState(2078); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(2077); - match(FULL); - } - } - - setState(2080); - match(VIEWS); - setState(2083); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2081); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2082); - ((ShowViewsContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2086); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2085); - wildWhere(); - } - } - - } - break; - case 5: - _localctx = new ShowMaterializedViewContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2088); - match(SHOW); - setState(2089); - match(CREATE); - setState(2090); - match(MATERIALIZED); - setState(2091); - match(VIEW); - setState(2092); - ((ShowMaterializedViewContext)_localctx).name = multipartIdentifier(); - } - break; - case 6: - _localctx = new ShowCreateFunctionContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2093); - match(SHOW); - setState(2094); - match(CREATE); - setState(2096); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(2095); - statementScope(); - } - } - - setState(2098); - match(FUNCTION); - setState(2099); - functionIdentifier(); - setState(2100); - match(LEFT_PAREN); - setState(2102); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4576167530201152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 16870906416594945L) != 0) || _la==DOUBLE || _la==FLOAT || ((((_la - 207)) & ~0x3f) == 0 && ((1L << (_la - 207)) & -9223369734650855423L) != 0) || _la==QUANTILE_STATE || ((((_la - 416)) & ~0x3f) == 0 && ((1L << (_la - 416)) & 176093855745L) != 0) || _la==VARCHAR || _la==VARIANT) { - { - setState(2101); - functionArguments(); - } - } - - setState(2104); - match(RIGHT_PAREN); - setState(2107); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2105); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2106); - ((ShowCreateFunctionContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 7: - _localctx = new ShowDatabasesContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2109); - match(SHOW); - setState(2110); - _la = _input.LA(1); - if ( !(_la==DATABASES || _la==SCHEMAS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2113); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(2111); - match(FROM); - setState(2112); - ((ShowDatabasesContext)_localctx).catalog = identifier(); - } - } - - setState(2116); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2115); - wildWhere(); - } - } - - } - break; - case 8: - _localctx = new ShowColumnsContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(2118); - match(SHOW); - setState(2120); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(2119); - match(FULL); - } - } - - setState(2122); - _la = _input.LA(1); - if ( !(_la==COLUMNS || _la==FIELDS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2123); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2124); - ((ShowColumnsContext)_localctx).tableName = multipartIdentifier(); - setState(2127); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2125); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2126); - ((ShowColumnsContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2130); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2129); - wildWhere(); - } - } - - } - break; - case 9: - _localctx = new ShowLoadWaringsContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(2132); - match(SHOW); - setState(2133); - match(LOAD); - setState(2134); - match(WARNINGS); - setState(2147); - _errHandler.sync(this); - switch (_input.LA(1)) { - case EOF: - case SEMICOLON: - case FROM: - case IN: - case LIKE: - case LIMIT: - case WHERE: - { - { - setState(2137); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2135); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2136); - ((ShowLoadWaringsContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2140); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2139); - wildWhere(); - } - } - - setState(2143); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2142); - limitClause(); - } - } - - } - } - break; - case ON: - { - { - setState(2145); - match(ON); - setState(2146); - ((ShowLoadWaringsContext)_localctx).url = match(STRING_LITERAL); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 10: - _localctx = new ShowLoadContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(2149); - match(SHOW); - setState(2151); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STREAM) { - { - setState(2150); - match(STREAM); - } - } - - setState(2153); - match(LOAD); - setState(2156); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2154); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2155); - ((ShowLoadContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2159); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2158); - wildWhere(); - } - } - - setState(2162); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2161); - sortClause(); - } - } - - setState(2165); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2164); - limitClause(); - } - } - - } - break; - case 11: - _localctx = new ShowExportContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(2167); - match(SHOW); - setState(2168); - match(EXPORT); - setState(2171); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2169); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2170); - ((ShowExportContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2174); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2173); - wildWhere(); - } - } - - setState(2177); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2176); - sortClause(); - } - } - - setState(2180); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2179); - limitClause(); - } - } - - } - break; - case 12: - _localctx = new ShowAlterTableContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(2182); - match(SHOW); - setState(2183); - match(ALTER); - setState(2184); - match(TABLE); - setState(2189); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ROLLUP: - { - setState(2185); - match(ROLLUP); - } - break; - case MATERIALIZED: - { - { - setState(2186); - match(MATERIALIZED); - setState(2187); - match(VIEW); - } - } - break; - case COLUMN: - { - setState(2188); - match(COLUMN); - } - break; - default: - throw new NoViableAltException(this); - } - setState(2193); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2191); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2192); - ((ShowAlterTableContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2196); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2195); - wildWhere(); - } - } - - setState(2199); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2198); - sortClause(); - } - } - - setState(2202); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2201); - limitClause(); - } - } - - } - break; - case 13: - _localctx = new ShowPartitionsContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(2204); - match(SHOW); - setState(2206); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(2205); - match(TEMPORARY); - } - } - - setState(2208); - match(PARTITIONS); - setState(2209); - match(FROM); - setState(2210); - ((ShowPartitionsContext)_localctx).tableName = multipartIdentifier(); - setState(2212); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2211); - wildWhere(); - } - } - - setState(2215); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2214); - sortClause(); - } - } - - setState(2218); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2217); - limitClause(); - } - } - - } - break; - case 14: - _localctx = new ShowTabletIdContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(2220); - match(SHOW); - setState(2221); - match(TABLET); - setState(2222); - ((ShowTabletIdContext)_localctx).tabletId = match(INTEGER_VALUE); - } - break; - case 15: - _localctx = new ShowTabletsFromTableContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(2223); - match(SHOW); - setState(2224); - match(TABLETS); - setState(2225); - match(FROM); - setState(2226); - ((ShowTabletsFromTableContext)_localctx).tableName = multipartIdentifier(); - setState(2228); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(2227); - partitionSpec(); - } - } - - setState(2231); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2230); - wildWhere(); - } - } - - setState(2234); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2233); - sortClause(); - } - } - - setState(2237); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2236); - limitClause(); - } - } - - } - break; - case 16: - _localctx = new ShowBackupContext(_localctx); - enterOuterAlt(_localctx, 16); - { - setState(2239); - match(SHOW); - setState(2240); - match(BACKUP); - setState(2243); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2241); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2242); - ((ShowBackupContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2246); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2245); - wildWhere(); - } - } - - } - break; - case 17: - _localctx = new ShowRestoreContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(2248); - match(SHOW); - setState(2250); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BRIEF) { - { - setState(2249); - match(BRIEF); - } - } - - setState(2252); - match(RESTORE); - setState(2255); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2253); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2254); - ((ShowRestoreContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2258); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2257); - wildWhere(); - } - } - - } - break; - case 18: - _localctx = new ShowResourcesContext(_localctx); - enterOuterAlt(_localctx, 18); - { - setState(2260); - match(SHOW); - setState(2261); - match(RESOURCES); - setState(2263); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2262); - wildWhere(); - } - } - - setState(2266); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2265); - sortClause(); - } - } - - setState(2269); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2268); - limitClause(); - } - } - - } - break; - case 19: - _localctx = new ShowWorkloadGroupsContext(_localctx); - enterOuterAlt(_localctx, 19); - { - setState(2271); - match(SHOW); - setState(2272); - match(WORKLOAD); - setState(2273); - match(GROUPS); - setState(2275); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2274); - wildWhere(); - } - } - - } - break; - case 20: - _localctx = new ShowSnapshotContext(_localctx); - enterOuterAlt(_localctx, 20); - { - setState(2277); - match(SHOW); - setState(2278); - match(SNAPSHOT); - setState(2279); - match(ON); - setState(2280); - ((ShowSnapshotContext)_localctx).repo = identifier(); - setState(2282); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2281); - wildWhere(); - } - } - - } - break; - case 21: - _localctx = new ShowFunctionsContext(_localctx); - enterOuterAlt(_localctx, 21); - { - setState(2284); - match(SHOW); - setState(2286); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(2285); - match(FULL); - } - } - - setState(2289); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BUILTIN) { - { - setState(2288); - match(BUILTIN); - } - } - - setState(2291); - match(FUNCTIONS); - setState(2294); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2292); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2293); - ((ShowFunctionsContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2297); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2296); - wildWhere(); - } - } - - } - break; - case 22: - _localctx = new ShowGlobalFunctionsContext(_localctx); - enterOuterAlt(_localctx, 22); - { - setState(2299); - match(SHOW); - setState(2300); - match(GLOBAL); - setState(2302); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FULL) { - { - setState(2301); - match(FULL); - } - } - - setState(2304); - match(FUNCTIONS); - setState(2306); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2305); - wildWhere(); - } - } - - } - break; - case 23: - _localctx = new ShowTypeCastContext(_localctx); - enterOuterAlt(_localctx, 23); - { - setState(2308); - match(SHOW); - setState(2309); - match(TYPECAST); - setState(2312); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2310); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2311); - ((ShowTypeCastContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 24: - _localctx = new ShowIndexContext(_localctx); - enterOuterAlt(_localctx, 24); - { - setState(2314); - match(SHOW); - setState(2315); - _la = _input.LA(1); - if ( !(((((_la - 219)) & ~0x3f) == 0 && ((1L << (_la - 219)) & 100663299L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2316); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2317); - ((ShowIndexContext)_localctx).tableName = multipartIdentifier(); - setState(2320); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2318); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2319); - ((ShowIndexContext)_localctx).database = multipartIdentifier(); - } - } - - } - break; - case 25: - _localctx = new ShowTransactionContext(_localctx); - enterOuterAlt(_localctx, 25); - { - setState(2322); - match(SHOW); - setState(2323); - match(TRANSACTION); - setState(2326); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2324); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2325); - ((ShowTransactionContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2329); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2328); - wildWhere(); - } - } - - } - break; - case 26: - _localctx = new ShowCacheHotSpotContext(_localctx); - enterOuterAlt(_localctx, 26); - { - setState(2331); - match(SHOW); - setState(2332); - match(CACHE); - setState(2333); - match(HOTSPOT); - setState(2334); - ((ShowCacheHotSpotContext)_localctx).tablePath = match(STRING_LITERAL); - } - break; - case 27: - _localctx = new ShowCatalogRecycleBinContext(_localctx); - enterOuterAlt(_localctx, 27); - { - setState(2335); - match(SHOW); - setState(2336); - match(CATALOG); - setState(2337); - match(RECYCLE); - setState(2338); - match(BIN); - setState(2340); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2339); - wildWhere(); - } - } - - } - break; - case 28: - _localctx = new ShowQueryStatsContext(_localctx); - enterOuterAlt(_localctx, 28); - { - setState(2342); - match(SHOW); - setState(2343); - match(QUERY); - setState(2344); - match(STATS); - setState(2355); - _errHandler.sync(this); - switch (_input.LA(1)) { - case FOR: - { - { - setState(2345); - match(FOR); - setState(2346); - ((ShowQueryStatsContext)_localctx).database = identifier(); - } - } - break; - case FROM: - { - { - setState(2347); - match(FROM); - setState(2348); - ((ShowQueryStatsContext)_localctx).tableName = multipartIdentifier(); - setState(2353); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL) { - { - setState(2349); - match(ALL); - setState(2351); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==VERBOSE) { - { - setState(2350); - match(VERBOSE); - } - } - - } - } - - } - } - break; - case EOF: - case SEMICOLON: - break; - default: - break; - } - } - break; - case 29: - _localctx = new ShowBuildIndexContext(_localctx); - enterOuterAlt(_localctx, 29); - { - setState(2357); - match(SHOW); - setState(2358); - match(BUILD); - setState(2359); - match(INDEX); - setState(2362); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2360); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2361); - ((ShowBuildIndexContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2365); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2364); - wildWhere(); - } - } - - setState(2368); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2367); - sortClause(); - } - } - - setState(2371); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2370); - limitClause(); - } - } - - } - break; - case 30: - _localctx = new ShowClustersContext(_localctx); - enterOuterAlt(_localctx, 30); - { - setState(2373); - match(SHOW); - setState(2377); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CLUSTERS: - { - setState(2374); - match(CLUSTERS); - } - break; - case COMPUTE: - { - { - setState(2375); - match(COMPUTE); - setState(2376); - match(GROUPS); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 31: - _localctx = new ShowReplicaStatusContext(_localctx); - enterOuterAlt(_localctx, 31); - { - setState(2379); - match(SHOW); - setState(2380); - match(REPLICA); - setState(2381); - match(STATUS); - setState(2382); - match(FROM); - setState(2383); - baseTableRef(); - setState(2385); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2384); - wildWhere(); - } - } - - } - break; - case 32: - _localctx = new ShowCopyContext(_localctx); - enterOuterAlt(_localctx, 32); - { - setState(2387); - match(SHOW); - setState(2388); - match(COPY); - setState(2391); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2389); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2390); - ((ShowCopyContext)_localctx).database = multipartIdentifier(); - } - } - - setState(2394); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(2393); - whereClause(); - } - } - - setState(2397); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(2396); - sortClause(); - } - } - - setState(2400); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIMIT) { - { - setState(2399); - limitClause(); - } - } - - } - break; - case 33: - _localctx = new ShowWarmUpJobContext(_localctx); - enterOuterAlt(_localctx, 33); - { - setState(2402); - match(SHOW); - setState(2403); - match(WARM); - setState(2404); - match(UP); - setState(2405); - match(JOB); - setState(2407); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2406); - wildWhere(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CreateRoutineLoadContext extends ParserRuleContext { - public MultipartIdentifierContext label; - public IdentifierContext table; - public IdentifierContext type; - public PropertyItemListContext customProperties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public List loadProperty() { - return getRuleContexts(LoadPropertyContext.class); - } - public LoadPropertyContext loadProperty(int i) { - return getRuleContext(LoadPropertyContext.class,i); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public TerminalNode APPEND() { return getToken(DorisParser.APPEND, 0); } - public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } - public TerminalNode MERGE() { return getToken(DorisParser.MERGE, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CreateRoutineLoadContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_createRoutineLoad; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRoutineLoad(this); - } - } - - public final CreateRoutineLoadContext createRoutineLoad() throws RecognitionException { - CreateRoutineLoadContext _localctx = new CreateRoutineLoadContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_createRoutineLoad); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2411); - match(CREATE); - setState(2412); - match(ROUTINE); - setState(2413); - match(LOAD); - setState(2414); - ((CreateRoutineLoadContext)_localctx).label = multipartIdentifier(); - setState(2417); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(2415); - match(ON); - setState(2416); - ((CreateRoutineLoadContext)_localctx).table = identifier(); - } - } - - setState(2421); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(2419); - match(WITH); - setState(2420); - _la = _input.LA(1); - if ( !(_la==APPEND || _la==DELETE || _la==MERGE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(2431); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLUMNS || _la==DELETE || ((((_la - 314)) & ~0x3f) == 0 && ((1L << (_la - 314)) & 536871297L) != 0) || _la==TEMPORARY || _la==WHERE) { - { - setState(2423); - loadProperty(); - setState(2428); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2424); - match(COMMA); - setState(2425); - loadProperty(); - } - } - setState(2430); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(2434); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2433); - propertyClause(); - } - } - - setState(2436); - match(FROM); - setState(2437); - ((CreateRoutineLoadContext)_localctx).type = identifier(); - setState(2438); - match(LEFT_PAREN); - setState(2439); - ((CreateRoutineLoadContext)_localctx).customProperties = propertyItemList(); - setState(2440); - match(RIGHT_PAREN); - setState(2442); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(2441); - commentSpec(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedLoadStatementContext extends ParserRuleContext { - public UnsupportedLoadStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedLoadStatement; } - - public UnsupportedLoadStatementContext() { } - public void copyFrom(UnsupportedLoadStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowRoutineLoadContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public ShowRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ResumeRoutineLoadContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ResumeRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateLoadContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ShowCreateLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateDataSyncJobContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public ChannelDescriptionsContext channelDescriptions() { - return getRuleContext(ChannelDescriptionsContext.class,0); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode BINLOG() { return getToken(DorisParser.BINLOG, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateDataSyncJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateDataSyncJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PauseDataSyncJobContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext name; - public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PauseDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseDataSyncJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseDataSyncJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ResumeDataSyncJobContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext name; - public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ResumeDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeDataSyncJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeDataSyncJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PauseAllRoutineLoadContext extends UnsupportedLoadStatementContext { - public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public PauseAllRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseAllRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseAllRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StopDataSyncJobContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext name; - public TerminalNode STOP() { return getToken(DorisParser.STOP, 0); } - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public StopDataSyncJobContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStopDataSyncJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStopDataSyncJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MysqlLoadContext extends UnsupportedLoadStatementContext { - public PropertyItemListContext properties; - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public MysqlDataDescContext mysqlDataDesc() { - return getRuleContext(MysqlDataDescContext.class,0); - } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public MysqlLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMysqlLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMysqlLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowCreateRoutineLoadContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public ShowCreateRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowCreateRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowCreateRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PauseRoutineLoadContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PauseRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPauseRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPauseRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowRoutineLoadTaskContext extends UnsupportedLoadStatementContext { - public IdentifierContext database; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowRoutineLoadTaskContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowRoutineLoadTask(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowRoutineLoadTask(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ResumeAllRoutineLoadContext extends UnsupportedLoadStatementContext { - public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public ResumeAllRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResumeAllRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResumeAllRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StopRoutineLoadContext extends UnsupportedLoadStatementContext { - public MultipartIdentifierContext label; - public TerminalNode STOP() { return getToken(DorisParser.STOP, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public StopRoutineLoadContext(UnsupportedLoadStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStopRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStopRoutineLoad(this); - } - } - - public final UnsupportedLoadStatementContext unsupportedLoadStatement() throws RecognitionException { - UnsupportedLoadStatementContext _localctx = new UnsupportedLoadStatementContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_unsupportedLoadStatement); - int _la; - try { - setState(2543); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,336,_ctx) ) { - case 1: - _localctx = new MysqlLoadContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2444); - match(LOAD); - setState(2445); - mysqlDataDesc(); - setState(2451); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2446); - match(PROPERTIES); - setState(2447); - match(LEFT_PAREN); - setState(2448); - ((MysqlLoadContext)_localctx).properties = propertyItemList(); - setState(2449); - match(RIGHT_PAREN); - } - } - - setState(2454); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(2453); - commentSpec(); - } - } - - } - break; - case 2: - _localctx = new CreateDataSyncJobContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2456); - match(CREATE); - setState(2457); - match(SYNC); - setState(2458); - ((CreateDataSyncJobContext)_localctx).label = multipartIdentifier(); - setState(2459); - match(LEFT_PAREN); - setState(2460); - channelDescriptions(); - setState(2461); - match(RIGHT_PAREN); - setState(2462); - match(FROM); - setState(2463); - match(BINLOG); - setState(2464); - match(LEFT_PAREN); - setState(2465); - propertyItemList(); - setState(2466); - match(RIGHT_PAREN); - setState(2468); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2467); - ((CreateDataSyncJobContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 3: - _localctx = new StopDataSyncJobContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2470); - match(STOP); - setState(2471); - match(SYNC); - setState(2472); - match(JOB); - setState(2473); - ((StopDataSyncJobContext)_localctx).name = multipartIdentifier(); - } - break; - case 4: - _localctx = new ResumeDataSyncJobContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2474); - match(RESUME); - setState(2475); - match(SYNC); - setState(2476); - match(JOB); - setState(2477); - ((ResumeDataSyncJobContext)_localctx).name = multipartIdentifier(); - } - break; - case 5: - _localctx = new PauseDataSyncJobContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2478); - match(PAUSE); - setState(2479); - match(SYNC); - setState(2480); - match(JOB); - setState(2481); - ((PauseDataSyncJobContext)_localctx).name = multipartIdentifier(); - } - break; - case 6: - _localctx = new PauseRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2482); - match(PAUSE); - setState(2483); - match(ROUTINE); - setState(2484); - match(LOAD); - setState(2485); - match(FOR); - setState(2486); - ((PauseRoutineLoadContext)_localctx).label = multipartIdentifier(); - } - break; - case 7: - _localctx = new PauseAllRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2487); - match(PAUSE); - setState(2488); - match(ALL); - setState(2489); - match(ROUTINE); - setState(2490); - match(LOAD); - } - break; - case 8: - _localctx = new ResumeRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(2491); - match(RESUME); - setState(2492); - match(ROUTINE); - setState(2493); - match(LOAD); - setState(2494); - match(FOR); - setState(2495); - ((ResumeRoutineLoadContext)_localctx).label = multipartIdentifier(); - } - break; - case 9: - _localctx = new ResumeAllRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(2496); - match(RESUME); - setState(2497); - match(ALL); - setState(2498); - match(ROUTINE); - setState(2499); - match(LOAD); - } - break; - case 10: - _localctx = new StopRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(2500); - match(STOP); - setState(2501); - match(ROUTINE); - setState(2502); - match(LOAD); - setState(2503); - match(FOR); - setState(2504); - ((StopRoutineLoadContext)_localctx).label = multipartIdentifier(); - } - break; - case 11: - _localctx = new ShowRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(2505); - match(SHOW); - setState(2507); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL) { - { - setState(2506); - match(ALL); - } - } - - setState(2509); - match(ROUTINE); - setState(2510); - match(LOAD); - setState(2516); - _errHandler.sync(this); - switch (_input.LA(1)) { - case FOR: - { - { - setState(2511); - match(FOR); - setState(2512); - ((ShowRoutineLoadContext)_localctx).label = multipartIdentifier(); - } - } - break; - case EOF: - case SEMICOLON: - case LIKE: - case WHERE: - { - setState(2514); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2513); - wildWhere(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 12: - _localctx = new ShowRoutineLoadTaskContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(2518); - match(SHOW); - setState(2519); - match(ROUTINE); - setState(2520); - match(LOAD); - setState(2521); - match(TASK); - setState(2524); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2522); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2523); - ((ShowRoutineLoadTaskContext)_localctx).database = identifier(); - } - } - - setState(2527); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2526); - wildWhere(); - } - } - - } - break; - case 13: - _localctx = new ShowCreateRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(2529); - match(SHOW); - setState(2531); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL) { - { - setState(2530); - match(ALL); - } - } - - setState(2533); - match(CREATE); - setState(2534); - match(ROUTINE); - setState(2535); - match(LOAD); - setState(2536); - match(FOR); - setState(2537); - ((ShowCreateRoutineLoadContext)_localctx).label = multipartIdentifier(); - } - break; - case 14: - _localctx = new ShowCreateLoadContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(2538); - match(SHOW); - setState(2539); - match(CREATE); - setState(2540); - match(LOAD); - setState(2541); - match(FOR); - setState(2542); - ((ShowCreateLoadContext)_localctx).label = multipartIdentifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LoadPropertyContext extends ParserRuleContext { - public LoadPropertyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_loadProperty; } - - public LoadPropertyContext() { } - public void copyFrom(LoadPropertyContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportPrecedingFilterContext extends LoadPropertyContext { - public ImportPrecedingFilterStatementContext importPrecedingFilterStatement() { - return getRuleContext(ImportPrecedingFilterStatementContext.class,0); - } - public ImportPrecedingFilterContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportPrecedingFilter(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportPrecedingFilter(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportSequenceContext extends LoadPropertyContext { - public ImportSequenceStatementContext importSequenceStatement() { - return getRuleContext(ImportSequenceStatementContext.class,0); - } - public ImportSequenceContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportSequence(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportSequence(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportColumnsContext extends LoadPropertyContext { - public ImportColumnsStatementContext importColumnsStatement() { - return getRuleContext(ImportColumnsStatementContext.class,0); - } - public ImportColumnsContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportColumns(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportColumns(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportWhereContext extends LoadPropertyContext { - public ImportWhereStatementContext importWhereStatement() { - return getRuleContext(ImportWhereStatementContext.class,0); - } - public ImportWhereContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportWhere(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportWhere(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SeparatorContext extends LoadPropertyContext { - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public TerminalNode TERMINATED() { return getToken(DorisParser.TERMINATED, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public SeparatorContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSeparator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSeparator(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportPartitionsContext extends LoadPropertyContext { - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public ImportPartitionsContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportPartitions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportPartitions(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ImportDeleteOnContext extends LoadPropertyContext { - public ImportDeleteOnStatementContext importDeleteOnStatement() { - return getRuleContext(ImportDeleteOnStatementContext.class,0); - } - public ImportDeleteOnContext(LoadPropertyContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportDeleteOn(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportDeleteOn(this); - } - } - - public final LoadPropertyContext loadProperty() throws RecognitionException { - LoadPropertyContext _localctx = new LoadPropertyContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_loadProperty); - try { - setState(2555); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,337,_ctx) ) { - case 1: - _localctx = new SeparatorContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2545); - match(COLUMNS); - setState(2546); - match(TERMINATED); - setState(2547); - match(BY); - setState(2548); - match(STRING_LITERAL); - } - break; - case 2: - _localctx = new ImportColumnsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2549); - importColumnsStatement(); - } - break; - case 3: - _localctx = new ImportPrecedingFilterContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2550); - importPrecedingFilterStatement(); - } - break; - case 4: - _localctx = new ImportWhereContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2551); - importWhereStatement(); - } - break; - case 5: - _localctx = new ImportDeleteOnContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2552); - importDeleteOnStatement(); - } - break; - case 6: - _localctx = new ImportSequenceContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2553); - importSequenceStatement(); - } - break; - case 7: - _localctx = new ImportPartitionsContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2554); - partitionSpec(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportSequenceStatementContext extends ParserRuleContext { - public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ImportSequenceStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importSequenceStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportSequenceStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportSequenceStatement(this); - } - } - - public final ImportSequenceStatementContext importSequenceStatement() throws RecognitionException { - ImportSequenceStatementContext _localctx = new ImportSequenceStatementContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_importSequenceStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(2557); - match(ORDER); - setState(2558); - match(BY); - setState(2559); - identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportDeleteOnStatementContext extends ParserRuleContext { - public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public ImportDeleteOnStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importDeleteOnStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportDeleteOnStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportDeleteOnStatement(this); - } - } - - public final ImportDeleteOnStatementContext importDeleteOnStatement() throws RecognitionException { - ImportDeleteOnStatementContext _localctx = new ImportDeleteOnStatementContext(_ctx, getState()); - enterRule(_localctx, 46, RULE_importDeleteOnStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(2561); - match(DELETE); - setState(2562); - match(ON); - setState(2563); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportWhereStatementContext extends ParserRuleContext { - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public ImportWhereStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importWhereStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportWhereStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportWhereStatement(this); - } - } - - public final ImportWhereStatementContext importWhereStatement() throws RecognitionException { - ImportWhereStatementContext _localctx = new ImportWhereStatementContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_importWhereStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(2565); - match(WHERE); - setState(2566); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportPrecedingFilterStatementContext extends ParserRuleContext { - public TerminalNode PRECEDING() { return getToken(DorisParser.PRECEDING, 0); } - public TerminalNode FILTER() { return getToken(DorisParser.FILTER, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public ImportPrecedingFilterStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importPrecedingFilterStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportPrecedingFilterStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportPrecedingFilterStatement(this); - } - } - - public final ImportPrecedingFilterStatementContext importPrecedingFilterStatement() throws RecognitionException { - ImportPrecedingFilterStatementContext _localctx = new ImportPrecedingFilterStatementContext(_ctx, getState()); - enterRule(_localctx, 50, RULE_importPrecedingFilterStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(2568); - match(PRECEDING); - setState(2569); - match(FILTER); - setState(2570); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportColumnsStatementContext extends ParserRuleContext { - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public List importColumnDesc() { - return getRuleContexts(ImportColumnDescContext.class); - } - public ImportColumnDescContext importColumnDesc(int i) { - return getRuleContext(ImportColumnDescContext.class,i); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ImportColumnsStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importColumnsStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportColumnsStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportColumnsStatement(this); - } - } - - public final ImportColumnsStatementContext importColumnsStatement() throws RecognitionException { - ImportColumnsStatementContext _localctx = new ImportColumnsStatementContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_importColumnsStatement); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2572); - match(COLUMNS); - setState(2573); - match(LEFT_PAREN); - setState(2574); - importColumnDesc(); - setState(2579); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2575); - match(COMMA); - setState(2576); - importColumnDesc(); - } - } - setState(2581); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2582); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ImportColumnDescContext extends ParserRuleContext { - public IdentifierContext name; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ImportColumnDescContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_importColumnDesc; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterImportColumnDesc(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitImportColumnDesc(this); - } - } - - public final ImportColumnDescContext importColumnDesc() throws RecognitionException { - ImportColumnDescContext _localctx = new ImportColumnDescContext(_ctx, getState()); - enterRule(_localctx, 54, RULE_importColumnDesc); - int _la; - try { - setState(2597); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(2584); - ((ImportColumnDescContext)_localctx).name = identifier(); - setState(2587); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EQ) { - { - setState(2585); - match(EQ); - setState(2586); - booleanExpression(0); - } - } - - } - break; - case LEFT_PAREN: - enterOuterAlt(_localctx, 2); - { - setState(2589); - match(LEFT_PAREN); - setState(2590); - ((ImportColumnDescContext)_localctx).name = identifier(); - setState(2593); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EQ) { - { - setState(2591); - match(EQ); - setState(2592); - booleanExpression(0); - } - } - - setState(2595); - match(RIGHT_PAREN); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ChannelDescriptionsContext extends ParserRuleContext { - public List channelDescription() { - return getRuleContexts(ChannelDescriptionContext.class); - } - public ChannelDescriptionContext channelDescription(int i) { - return getRuleContext(ChannelDescriptionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ChannelDescriptionsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_channelDescriptions; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterChannelDescriptions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitChannelDescriptions(this); - } - } - - public final ChannelDescriptionsContext channelDescriptions() throws RecognitionException { - ChannelDescriptionsContext _localctx = new ChannelDescriptionsContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_channelDescriptions); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2599); - channelDescription(); - setState(2604); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2600); - match(COMMA); - setState(2601); - channelDescription(); - } - } - setState(2606); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ChannelDescriptionContext extends ParserRuleContext { - public MultipartIdentifierContext source; - public MultipartIdentifierContext destination; - public IdentifierListContext columnList; - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ChannelDescriptionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_channelDescription; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterChannelDescription(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitChannelDescription(this); - } - } - - public final ChannelDescriptionContext channelDescription() throws RecognitionException { - ChannelDescriptionContext _localctx = new ChannelDescriptionContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_channelDescription); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2607); - match(FROM); - setState(2608); - ((ChannelDescriptionContext)_localctx).source = multipartIdentifier(); - setState(2609); - match(INTO); - setState(2610); - ((ChannelDescriptionContext)_localctx).destination = multipartIdentifier(); - setState(2612); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(2611); - partitionSpec(); - } - } - - setState(2615); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(2614); - ((ChannelDescriptionContext)_localctx).columnList = identifierList(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedRefreshStatementContext extends ParserRuleContext { - public SupportedRefreshStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedRefreshStatement; } - - public SupportedRefreshStatementContext() { } - public void copyFrom(SupportedRefreshStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RefreshCatalogContext extends SupportedRefreshStatementContext { - public IdentifierContext name; - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public RefreshCatalogContext(SupportedRefreshStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshCatalog(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshCatalog(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RefreshDatabaseContext extends SupportedRefreshStatementContext { - public MultipartIdentifierContext name; - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public RefreshDatabaseContext(SupportedRefreshStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshDatabase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RefreshTableContext extends SupportedRefreshStatementContext { - public MultipartIdentifierContext name; - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public RefreshTableContext(SupportedRefreshStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshTable(this); - } - } - - public final SupportedRefreshStatementContext supportedRefreshStatement() throws RecognitionException { - SupportedRefreshStatementContext _localctx = new SupportedRefreshStatementContext(_ctx, getState()); - enterRule(_localctx, 60, RULE_supportedRefreshStatement); - int _la; - try { - setState(2632); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,347,_ctx) ) { - case 1: - _localctx = new RefreshCatalogContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2617); - match(REFRESH); - setState(2618); - match(CATALOG); - setState(2619); - ((RefreshCatalogContext)_localctx).name = identifier(); - setState(2621); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2620); - propertyClause(); - } - } - - } - break; - case 2: - _localctx = new RefreshDatabaseContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2623); - match(REFRESH); - setState(2624); - match(DATABASE); - setState(2625); - ((RefreshDatabaseContext)_localctx).name = multipartIdentifier(); - setState(2627); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2626); - propertyClause(); - } - } - - } - break; - case 3: - _localctx = new RefreshTableContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2629); - match(REFRESH); - setState(2630); - match(TABLE); - setState(2631); - ((RefreshTableContext)_localctx).name = multipartIdentifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedCleanStatementContext extends ParserRuleContext { - public SupportedCleanStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedCleanStatement; } - - public SupportedCleanStatementContext() { } - public void copyFrom(SupportedCleanStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CleanLabelContext extends SupportedCleanStatementContext { - public IdentifierContext label; - public IdentifierContext database; - public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } - public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public CleanLabelContext(SupportedCleanStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanLabel(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanLabel(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CleanAllProfileContext extends SupportedCleanStatementContext { - public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } - public CleanAllProfileContext(SupportedCleanStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanAllProfile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanAllProfile(this); - } - } - - public final SupportedCleanStatementContext supportedCleanStatement() throws RecognitionException { - SupportedCleanStatementContext _localctx = new SupportedCleanStatementContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_supportedCleanStatement); - int _la; - try { - setState(2644); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,349,_ctx) ) { - case 1: - _localctx = new CleanAllProfileContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2634); - match(CLEAN); - setState(2635); - match(ALL); - setState(2636); - match(PROFILE); - } - break; - case 2: - _localctx = new CleanLabelContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2637); - match(CLEAN); - setState(2638); - match(LABEL); - setState(2640); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(2639); - ((CleanLabelContext)_localctx).label = identifier(); - } - } - - setState(2642); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2643); - ((CleanLabelContext)_localctx).database = identifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedRefreshStatementContext extends ParserRuleContext { - public UnsupportedRefreshStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedRefreshStatement; } - - public UnsupportedRefreshStatementContext() { } - public void copyFrom(UnsupportedRefreshStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RefreshLdapContext extends UnsupportedRefreshStatementContext { - public IdentifierOrTextContext user; - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode LDAP() { return getToken(DorisParser.LDAP, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public RefreshLdapContext(UnsupportedRefreshStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshLdap(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshLdap(this); - } - } - - public final UnsupportedRefreshStatementContext unsupportedRefreshStatement() throws RecognitionException { - UnsupportedRefreshStatementContext _localctx = new UnsupportedRefreshStatementContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_unsupportedRefreshStatement); - try { - _localctx = new RefreshLdapContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2646); - match(REFRESH); - setState(2647); - match(LDAP); - setState(2651); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ALL: - { - setState(2648); - match(ALL); - } - break; - case FOR: - { - { - setState(2649); - match(FOR); - setState(2650); - ((RefreshLdapContext)_localctx).user = identifierOrText(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedCleanStatementContext extends ParserRuleContext { - public UnsupportedCleanStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedCleanStatement; } - - public UnsupportedCleanStatementContext() { } - public void copyFrom(UnsupportedCleanStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CleanQueryStatsContext extends UnsupportedCleanStatementContext { - public IdentifierContext database; - public MultipartIdentifierContext table; - public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } - public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public CleanQueryStatsContext(UnsupportedCleanStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanQueryStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanQueryStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CleanAllQueryStatsContext extends UnsupportedCleanStatementContext { - public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public CleanAllQueryStatsContext(UnsupportedCleanStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCleanAllQueryStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCleanAllQueryStats(this); - } - } - - public final UnsupportedCleanStatementContext unsupportedCleanStatement() throws RecognitionException { - UnsupportedCleanStatementContext _localctx = new UnsupportedCleanStatementContext(_ctx, getState()); - enterRule(_localctx, 66, RULE_unsupportedCleanStatement); - int _la; - try { - setState(2666); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,352,_ctx) ) { - case 1: - _localctx = new CleanQueryStatsContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2653); - match(CLEAN); - setState(2654); - match(QUERY); - setState(2655); - match(STATS); - setState(2660); - _errHandler.sync(this); - switch (_input.LA(1)) { - case FOR: - { - { - setState(2656); - match(FOR); - setState(2657); - ((CleanQueryStatsContext)_localctx).database = identifier(); - } - } - break; - case FROM: - case IN: - { - { - setState(2658); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2659); - ((CleanQueryStatsContext)_localctx).table = multipartIdentifier(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 2: - _localctx = new CleanAllQueryStatsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2662); - match(CLEAN); - setState(2663); - match(ALL); - setState(2664); - match(QUERY); - setState(2665); - match(STATS); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedCancelStatementContext extends ParserRuleContext { - public SupportedCancelStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedCancelStatement; } - - public SupportedCancelStatementContext() { } - public void copyFrom(SupportedCancelStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelWarmUpJobContext extends SupportedCancelStatementContext { - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } - public TerminalNode UP() { return getToken(DorisParser.UP, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public CancelWarmUpJobContext(SupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelWarmUpJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelWarmUpJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelExportContext extends SupportedCancelStatementContext { - public IdentifierContext database; - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode EXPORT() { return getToken(DorisParser.EXPORT, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public CancelExportContext(SupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelExport(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelExport(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelLoadContext extends SupportedCancelStatementContext { - public IdentifierContext database; - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public WildWhereContext wildWhere() { - return getRuleContext(WildWhereContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public CancelLoadContext(SupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelLoad(this); - } - } - - public final SupportedCancelStatementContext supportedCancelStatement() throws RecognitionException { - SupportedCancelStatementContext _localctx = new SupportedCancelStatementContext(_ctx, getState()); - enterRule(_localctx, 68, RULE_supportedCancelStatement); - int _la; - try { - setState(2693); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,358,_ctx) ) { - case 1: - _localctx = new CancelLoadContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2668); - match(CANCEL); - setState(2669); - match(LOAD); - setState(2672); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2670); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2671); - ((CancelLoadContext)_localctx).database = identifier(); - } - } - - setState(2675); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2674); - wildWhere(); - } - } - - } - break; - case 2: - _localctx = new CancelExportContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2677); - match(CANCEL); - setState(2678); - match(EXPORT); - setState(2681); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2679); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2680); - ((CancelExportContext)_localctx).database = identifier(); - } - } - - setState(2684); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2683); - wildWhere(); - } - } - - } - break; - case 3: - _localctx = new CancelWarmUpJobContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2686); - match(CANCEL); - setState(2687); - match(WARM); - setState(2688); - match(UP); - setState(2689); - match(JOB); - setState(2691); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIKE || _la==WHERE) { - { - setState(2690); - wildWhere(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedCancelStatementContext extends ParserRuleContext { - public UnsupportedCancelStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedCancelStatement; } - - public UnsupportedCancelStatementContext() { } - public void copyFrom(UnsupportedCancelStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelBackupContext extends UnsupportedCancelStatementContext { - public IdentifierContext database; - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public CancelBackupContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelBackup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelBackup(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelBuildIndexContext extends UnsupportedCancelStatementContext { - public MultipartIdentifierContext tableName; - public Token INTEGER_VALUE; - public List jobIds = new ArrayList(); - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CancelBuildIndexContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelBuildIndex(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelBuildIndex(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelRestoreContext extends UnsupportedCancelStatementContext { - public IdentifierContext database; - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public CancelRestoreContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelRestore(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelRestore(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelAlterTableContext extends UnsupportedCancelStatementContext { - public MultipartIdentifierContext tableName; - public Token INTEGER_VALUE; - public List jobIds = new ArrayList(); - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CancelAlterTableContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelAlterTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelAlterTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CancelDecommisionBackendContext extends UnsupportedCancelStatementContext { - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode DECOMMISSION() { return getToken(DorisParser.DECOMMISSION, 0); } - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CancelDecommisionBackendContext(UnsupportedCancelStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCancelDecommisionBackend(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCancelDecommisionBackend(this); - } - } - - public final UnsupportedCancelStatementContext unsupportedCancelStatement() throws RecognitionException { - UnsupportedCancelStatementContext _localctx = new UnsupportedCancelStatementContext(_ctx, getState()); - enterRule(_localctx, 70, RULE_unsupportedCancelStatement); - int _la; - try { - setState(2758); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,367,_ctx) ) { - case 1: - _localctx = new CancelAlterTableContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2695); - match(CANCEL); - setState(2696); - match(ALTER); - setState(2697); - match(TABLE); - setState(2702); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ROLLUP: - { - setState(2698); - match(ROLLUP); - } - break; - case MATERIALIZED: - { - { - setState(2699); - match(MATERIALIZED); - setState(2700); - match(VIEW); - } - } - break; - case COLUMN: - { - setState(2701); - match(COLUMN); - } - break; - default: - throw new NoViableAltException(this); - } - setState(2704); - match(FROM); - setState(2705); - ((CancelAlterTableContext)_localctx).tableName = multipartIdentifier(); - setState(2716); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(2706); - match(LEFT_PAREN); - setState(2707); - ((CancelAlterTableContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((CancelAlterTableContext)_localctx).jobIds.add(((CancelAlterTableContext)_localctx).INTEGER_VALUE); - setState(2712); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2708); - match(COMMA); - setState(2709); - ((CancelAlterTableContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((CancelAlterTableContext)_localctx).jobIds.add(((CancelAlterTableContext)_localctx).INTEGER_VALUE); - } - } - setState(2714); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2715); - match(RIGHT_PAREN); - } - } - - } - break; - case 2: - _localctx = new CancelBuildIndexContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2718); - match(CANCEL); - setState(2719); - match(BUILD); - setState(2720); - match(INDEX); - setState(2721); - match(ON); - setState(2722); - ((CancelBuildIndexContext)_localctx).tableName = multipartIdentifier(); - setState(2733); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(2723); - match(LEFT_PAREN); - setState(2724); - ((CancelBuildIndexContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((CancelBuildIndexContext)_localctx).jobIds.add(((CancelBuildIndexContext)_localctx).INTEGER_VALUE); - setState(2729); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2725); - match(COMMA); - setState(2726); - ((CancelBuildIndexContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((CancelBuildIndexContext)_localctx).jobIds.add(((CancelBuildIndexContext)_localctx).INTEGER_VALUE); - } - } - setState(2731); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2732); - match(RIGHT_PAREN); - } - } - - } - break; - case 3: - _localctx = new CancelDecommisionBackendContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2735); - match(CANCEL); - setState(2736); - match(DECOMMISSION); - setState(2737); - match(BACKEND); - setState(2738); - ((CancelDecommisionBackendContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((CancelDecommisionBackendContext)_localctx).hostPorts.add(((CancelDecommisionBackendContext)_localctx).STRING_LITERAL); - setState(2743); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2739); - match(COMMA); - setState(2740); - ((CancelDecommisionBackendContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((CancelDecommisionBackendContext)_localctx).hostPorts.add(((CancelDecommisionBackendContext)_localctx).STRING_LITERAL); - } - } - setState(2745); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 4: - _localctx = new CancelBackupContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2746); - match(CANCEL); - setState(2747); - match(BACKUP); - setState(2750); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2748); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2749); - ((CancelBackupContext)_localctx).database = identifier(); - } - } - - } - break; - case 5: - _localctx = new CancelRestoreContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2752); - match(CANCEL); - setState(2753); - match(RESTORE); - setState(2756); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==IN) { - { - setState(2754); - _la = _input.LA(1); - if ( !(_la==FROM || _la==IN) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(2755); - ((CancelRestoreContext)_localctx).database = identifier(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedAdminStatementContext extends ParserRuleContext { - public SupportedAdminStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedAdminStatement; } - - public SupportedAdminStatementContext() { } - public void copyFrom(SupportedAdminStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminShowReplicaDistributionContext extends SupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public TerminalNode DISTRIBUTION() { return getToken(DorisParser.DISTRIBUTION, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public AdminShowReplicaDistributionContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminShowReplicaDistribution(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminShowReplicaDistribution(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminShowTabletStorageFormatContext extends SupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } - public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } - public AdminShowTabletStorageFormatContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminShowTabletStorageFormat(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminShowTabletStorageFormat(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminCheckTabletsContext extends SupportedAdminStatementContext { - public PropertyClauseContext properties; - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode CHECK() { return getToken(DorisParser.CHECK, 0); } - public TabletListContext tabletList() { - return getRuleContext(TabletListContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AdminCheckTabletsContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCheckTablets(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCheckTablets(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminRebalanceDiskContext extends SupportedAdminStatementContext { - public Token STRING_LITERAL; - public List backends = new ArrayList(); - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode REBALANCE() { return getToken(DorisParser.REBALANCE, 0); } - public TerminalNode DISK() { return getToken(DorisParser.DISK, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AdminRebalanceDiskContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminRebalanceDisk(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminRebalanceDisk(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminSetTableStatusContext extends SupportedAdminStatementContext { - public MultipartIdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AdminSetTableStatusContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetTableStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetTableStatus(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminCleanTrashContext extends SupportedAdminStatementContext { - public Token STRING_LITERAL; - public List backends = new ArrayList(); - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode CLEAN() { return getToken(DorisParser.CLEAN, 0); } - public TerminalNode TRASH() { return getToken(DorisParser.TRASH, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AdminCleanTrashContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCleanTrash(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCleanTrash(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminCompactTableContext extends SupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode COMPACT() { return getToken(DorisParser.COMPACT, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public TerminalNode TYPE() { return getToken(DorisParser.TYPE, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AdminCompactTableContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCompactTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCompactTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminDiagnoseTabletContext extends SupportedAdminStatementContext { - public Token tabletId; - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode DIAGNOSE() { return getToken(DorisParser.DIAGNOSE, 0); } - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public AdminDiagnoseTabletContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminDiagnoseTablet(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminDiagnoseTablet(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminCancelRebalanceDiskContext extends SupportedAdminStatementContext { - public Token STRING_LITERAL; - public List backends = new ArrayList(); - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode REBALANCE() { return getToken(DorisParser.REBALANCE, 0); } - public TerminalNode DISK() { return getToken(DorisParser.DISK, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AdminCancelRebalanceDiskContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCancelRebalanceDisk(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCancelRebalanceDisk(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminShowReplicaStatusContext extends SupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public List STATUS() { return getTokens(DorisParser.STATUS); } - public TerminalNode STATUS(int i) { - return getToken(DorisParser.STATUS, i); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode NEQ() { return getToken(DorisParser.NEQ, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AdminShowReplicaStatusContext(SupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminShowReplicaStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminShowReplicaStatus(this); - } - } - - public final SupportedAdminStatementContext supportedAdminStatement() throws RecognitionException { - SupportedAdminStatementContext _localctx = new SupportedAdminStatementContext(_ctx, getState()); - enterRule(_localctx, 72, RULE_supportedAdminStatement); - int _la; - try { - setState(2864); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) { - case 1: - _localctx = new AdminShowReplicaDistributionContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2760); - match(ADMIN); - setState(2761); - match(SHOW); - setState(2762); - match(REPLICA); - setState(2763); - match(DISTRIBUTION); - setState(2764); - match(FROM); - setState(2765); - baseTableRef(); - } - break; - case 2: - _localctx = new AdminRebalanceDiskContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2766); - match(ADMIN); - setState(2767); - match(REBALANCE); - setState(2768); - match(DISK); - setState(2780); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(2769); - match(ON); - setState(2770); - match(LEFT_PAREN); - setState(2771); - ((AdminRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AdminRebalanceDiskContext)_localctx).backends.add(((AdminRebalanceDiskContext)_localctx).STRING_LITERAL); - setState(2776); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2772); - match(COMMA); - setState(2773); - ((AdminRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AdminRebalanceDiskContext)_localctx).backends.add(((AdminRebalanceDiskContext)_localctx).STRING_LITERAL); - } - } - setState(2778); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2779); - match(RIGHT_PAREN); - } - } - - } - break; - case 3: - _localctx = new AdminCancelRebalanceDiskContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2782); - match(ADMIN); - setState(2783); - match(CANCEL); - setState(2784); - match(REBALANCE); - setState(2785); - match(DISK); - setState(2797); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(2786); - match(ON); - setState(2787); - match(LEFT_PAREN); - setState(2788); - ((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AdminCancelRebalanceDiskContext)_localctx).backends.add(((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL); - setState(2793); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2789); - match(COMMA); - setState(2790); - ((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AdminCancelRebalanceDiskContext)_localctx).backends.add(((AdminCancelRebalanceDiskContext)_localctx).STRING_LITERAL); - } - } - setState(2795); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2796); - match(RIGHT_PAREN); - } - } - - } - break; - case 4: - _localctx = new AdminDiagnoseTabletContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2799); - match(ADMIN); - setState(2800); - match(DIAGNOSE); - setState(2801); - match(TABLET); - setState(2802); - ((AdminDiagnoseTabletContext)_localctx).tabletId = match(INTEGER_VALUE); - } - break; - case 5: - _localctx = new AdminShowReplicaStatusContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2803); - match(ADMIN); - setState(2804); - match(SHOW); - setState(2805); - match(REPLICA); - setState(2806); - match(STATUS); - setState(2807); - match(FROM); - setState(2808); - baseTableRef(); - setState(2814); - _errHandler.sync(this); - switch (_input.LA(1)) { - case WHERE: - { - setState(2809); - match(WHERE); - setState(2810); - match(STATUS); - setState(2811); - match(EQ); - } - break; - case NEQ: - { - setState(2812); - match(NEQ); - setState(2813); - match(STRING_LITERAL); - } - break; - case EOF: - case SEMICOLON: - break; - default: - break; - } - } - break; - case 6: - _localctx = new AdminCompactTableContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2816); - match(ADMIN); - setState(2817); - match(COMPACT); - setState(2818); - match(TABLE); - setState(2819); - baseTableRef(); - setState(2824); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(2820); - match(WHERE); - setState(2821); - match(TYPE); - setState(2822); - match(EQ); - setState(2823); - match(STRING_LITERAL); - } - } - - } - break; - case 7: - _localctx = new AdminCheckTabletsContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2826); - match(ADMIN); - setState(2827); - match(CHECK); - setState(2828); - tabletList(); - setState(2830); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2829); - ((AdminCheckTabletsContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 8: - _localctx = new AdminShowTabletStorageFormatContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(2832); - match(ADMIN); - setState(2833); - match(SHOW); - setState(2834); - match(TABLET); - setState(2835); - match(STORAGE); - setState(2836); - match(FORMAT); - setState(2838); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==VERBOSE) { - { - setState(2837); - match(VERBOSE); - } - } - - } - break; - case 9: - _localctx = new AdminCleanTrashContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(2840); - match(ADMIN); - setState(2841); - match(CLEAN); - setState(2842); - match(TRASH); - setState(2854); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(2843); - match(ON); - setState(2844); - match(LEFT_PAREN); - setState(2845); - ((AdminCleanTrashContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AdminCleanTrashContext)_localctx).backends.add(((AdminCleanTrashContext)_localctx).STRING_LITERAL); - setState(2850); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(2846); - match(COMMA); - setState(2847); - ((AdminCleanTrashContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AdminCleanTrashContext)_localctx).backends.add(((AdminCleanTrashContext)_localctx).STRING_LITERAL); - } - } - setState(2852); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(2853); - match(RIGHT_PAREN); - } - } - - } - break; - case 10: - _localctx = new AdminSetTableStatusContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(2856); - match(ADMIN); - setState(2857); - match(SET); - setState(2858); - match(TABLE); - setState(2859); - ((AdminSetTableStatusContext)_localctx).name = multipartIdentifier(); - setState(2860); - match(STATUS); - setState(2862); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2861); - ((AdminSetTableStatusContext)_localctx).properties = propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedRecoverStatementContext extends ParserRuleContext { - public SupportedRecoverStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedRecoverStatement; } - - public SupportedRecoverStatementContext() { } - public void copyFrom(SupportedRecoverStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RecoverPartitionContext extends SupportedRecoverStatementContext { - public IdentifierContext name; - public Token id; - public IdentifierContext alias; - public MultipartIdentifierContext tableName; - public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public RecoverPartitionContext(SupportedRecoverStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRecoverPartition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRecoverPartition(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RecoverTableContext extends SupportedRecoverStatementContext { - public MultipartIdentifierContext name; - public Token id; - public IdentifierContext alias; - public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public RecoverTableContext(SupportedRecoverStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRecoverTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRecoverTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RecoverDatabaseContext extends SupportedRecoverStatementContext { - public IdentifierContext name; - public Token id; - public IdentifierContext alias; - public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public RecoverDatabaseContext(SupportedRecoverStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRecoverDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRecoverDatabase(this); - } - } - - public final SupportedRecoverStatementContext supportedRecoverStatement() throws RecognitionException { - SupportedRecoverStatementContext _localctx = new SupportedRecoverStatementContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_supportedRecoverStatement); - int _la; - try { - setState(2899); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,386,_ctx) ) { - case 1: - _localctx = new RecoverDatabaseContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2866); - match(RECOVER); - setState(2867); - match(DATABASE); - setState(2868); - ((RecoverDatabaseContext)_localctx).name = identifier(); - setState(2870); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INTEGER_VALUE) { - { - setState(2869); - ((RecoverDatabaseContext)_localctx).id = match(INTEGER_VALUE); - } - } - - setState(2874); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(2872); - match(AS); - setState(2873); - ((RecoverDatabaseContext)_localctx).alias = identifier(); - } - } - - } - break; - case 2: - _localctx = new RecoverTableContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2876); - match(RECOVER); - setState(2877); - match(TABLE); - setState(2878); - ((RecoverTableContext)_localctx).name = multipartIdentifier(); - setState(2880); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INTEGER_VALUE) { - { - setState(2879); - ((RecoverTableContext)_localctx).id = match(INTEGER_VALUE); - } - } - - setState(2884); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(2882); - match(AS); - setState(2883); - ((RecoverTableContext)_localctx).alias = identifier(); - } - } - - } - break; - case 3: - _localctx = new RecoverPartitionContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2886); - match(RECOVER); - setState(2887); - match(PARTITION); - setState(2888); - ((RecoverPartitionContext)_localctx).name = identifier(); - setState(2890); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INTEGER_VALUE) { - { - setState(2889); - ((RecoverPartitionContext)_localctx).id = match(INTEGER_VALUE); - } - } - - setState(2894); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(2892); - match(AS); - setState(2893); - ((RecoverPartitionContext)_localctx).alias = identifier(); - } - } - - setState(2896); - match(FROM); - setState(2897); - ((RecoverPartitionContext)_localctx).tableName = multipartIdentifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedAdminStatementContext extends ParserRuleContext { - public UnsupportedAdminStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedAdminStatement; } - - public UnsupportedAdminStatementContext() { } - public void copyFrom(UnsupportedAdminStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminSetFrontendConfigContext extends UnsupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode CONFIG() { return getToken(DorisParser.CONFIG, 0); } - public TerminalNode FRONTEND() { return getToken(DorisParser.FRONTEND, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List ALL() { return getTokens(DorisParser.ALL); } - public TerminalNode ALL(int i) { - return getToken(DorisParser.ALL, i); - } - public TerminalNode FRONTENDS() { return getToken(DorisParser.FRONTENDS, 0); } - public AdminSetFrontendConfigContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetFrontendConfig(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetFrontendConfig(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminSetReplicaStatusContext extends UnsupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public AdminSetReplicaStatusContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetReplicaStatus(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetReplicaStatus(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminSetReplicaVersionContext extends UnsupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode REPLICA() { return getToken(DorisParser.REPLICA, 0); } - public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public AdminSetReplicaVersionContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetReplicaVersion(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetReplicaVersion(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminSetPartitionVersionContext extends UnsupportedAdminStatementContext { - public MultipartIdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AdminSetPartitionVersionContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminSetPartitionVersion(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminSetPartitionVersion(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminCancelRepairTableContext extends UnsupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode CANCEL() { return getToken(DorisParser.CANCEL, 0); } - public TerminalNode REPAIR() { return getToken(DorisParser.REPAIR, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public AdminCancelRepairTableContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCancelRepairTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCancelRepairTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminCopyTabletContext extends UnsupportedAdminStatementContext { - public Token tabletId; - public PropertyClauseContext properties; - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AdminCopyTabletContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminCopyTablet(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminCopyTablet(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AdminRepairTableContext extends UnsupportedAdminStatementContext { - public TerminalNode ADMIN() { return getToken(DorisParser.ADMIN, 0); } - public TerminalNode REPAIR() { return getToken(DorisParser.REPAIR, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public BaseTableRefContext baseTableRef() { - return getRuleContext(BaseTableRefContext.class,0); - } - public AdminRepairTableContext(UnsupportedAdminStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAdminRepairTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAdminRepairTable(this); - } - } - - public final UnsupportedAdminStatementContext unsupportedAdminStatement() throws RecognitionException { - UnsupportedAdminStatementContext _localctx = new UnsupportedAdminStatementContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_unsupportedAdminStatement); - int _la; - try { - setState(2961); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,392,_ctx) ) { - case 1: - _localctx = new AdminSetReplicaStatusContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2901); - match(ADMIN); - setState(2902); - match(SET); - setState(2903); - match(REPLICA); - setState(2904); - match(STATUS); - setState(2905); - match(PROPERTIES); - setState(2906); - match(LEFT_PAREN); - setState(2907); - propertyItemList(); - setState(2908); - match(RIGHT_PAREN); - } - break; - case 2: - _localctx = new AdminSetReplicaVersionContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2910); - match(ADMIN); - setState(2911); - match(SET); - setState(2912); - match(REPLICA); - setState(2913); - match(VERSION); - setState(2914); - match(PROPERTIES); - setState(2915); - match(LEFT_PAREN); - setState(2916); - propertyItemList(); - setState(2917); - match(RIGHT_PAREN); - } - break; - case 3: - _localctx = new AdminRepairTableContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(2919); - match(ADMIN); - setState(2920); - match(REPAIR); - setState(2921); - match(TABLE); - setState(2922); - baseTableRef(); - } - break; - case 4: - _localctx = new AdminCancelRepairTableContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(2923); - match(ADMIN); - setState(2924); - match(CANCEL); - setState(2925); - match(REPAIR); - setState(2926); - match(TABLE); - setState(2927); - baseTableRef(); - } - break; - case 5: - _localctx = new AdminSetFrontendConfigContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(2928); - match(ADMIN); - setState(2929); - match(SET); - setState(2933); - _errHandler.sync(this); - switch (_input.LA(1)) { - case FRONTEND: - { - setState(2930); - match(FRONTEND); - } - break; - case ALL: - { - { - setState(2931); - match(ALL); - setState(2932); - match(FRONTENDS); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(2935); - match(CONFIG); - setState(2940); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(2936); - match(LEFT_PAREN); - setState(2937); - propertyItemList(); - setState(2938); - match(RIGHT_PAREN); - } - } - - setState(2943); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL) { - { - setState(2942); - match(ALL); - } - } - - } - break; - case 6: - _localctx = new AdminSetPartitionVersionContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(2945); - match(ADMIN); - setState(2946); - match(SET); - setState(2947); - match(TABLE); - setState(2948); - ((AdminSetPartitionVersionContext)_localctx).name = multipartIdentifier(); - setState(2949); - match(PARTITION); - setState(2950); - match(VERSION); - setState(2952); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2951); - ((AdminSetPartitionVersionContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 7: - _localctx = new AdminCopyTabletContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(2954); - match(ADMIN); - setState(2955); - match(COPY); - setState(2956); - match(TABLET); - setState(2957); - ((AdminCopyTabletContext)_localctx).tabletId = match(INTEGER_VALUE); - setState(2959); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(2958); - ((AdminCopyTabletContext)_localctx).properties = propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BaseTableRefContext extends ParserRuleContext { - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public OptScanParamsContext optScanParams() { - return getRuleContext(OptScanParamsContext.class,0); - } - public TableSnapshotContext tableSnapshot() { - return getRuleContext(TableSnapshotContext.class,0); - } - public SpecifiedPartitionContext specifiedPartition() { - return getRuleContext(SpecifiedPartitionContext.class,0); - } - public TabletListContext tabletList() { - return getRuleContext(TabletListContext.class,0); - } - public SampleContext sample() { - return getRuleContext(SampleContext.class,0); - } - public RelationHintContext relationHint() { - return getRuleContext(RelationHintContext.class,0); - } - public BaseTableRefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_baseTableRef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBaseTableRef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBaseTableRef(this); - } - } - - public final BaseTableRefContext baseTableRef() throws RecognitionException { - BaseTableRefContext _localctx = new BaseTableRefContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_baseTableRef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(2963); - multipartIdentifier(); - setState(2965); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ATSIGN) { - { - setState(2964); - optScanParams(); - } - } - - setState(2968); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(2967); - tableSnapshot(); - } - } - - setState(2971); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,395,_ctx) ) { - case 1: - { - setState(2970); - specifiedPartition(); - } - break; - } - setState(2974); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TABLET) { - { - setState(2973); - tabletList(); - } - } - - setState(2976); - tableAlias(); - setState(2978); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TABLESAMPLE) { - { - setState(2977); - sample(); - } - } - - setState(2981); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_BRACKET || _la==HINT_START) { - { - setState(2980); - relationHint(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WildWhereContext extends ParserRuleContext { - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public WildWhereContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_wildWhere; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWildWhere(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWildWhere(this); - } - } - - public final WildWhereContext wildWhere() throws RecognitionException { - WildWhereContext _localctx = new WildWhereContext(_ctx, getState()); - enterRule(_localctx, 80, RULE_wildWhere); - try { - setState(2987); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LIKE: - enterOuterAlt(_localctx, 1); - { - setState(2983); - match(LIKE); - setState(2984); - match(STRING_LITERAL); - } - break; - case WHERE: - enterOuterAlt(_localctx, 2); - { - setState(2985); - match(WHERE); - setState(2986); - expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedTransactionStatementContext extends ParserRuleContext { - public UnsupportedTransactionStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedTransactionStatement; } - - public UnsupportedTransactionStatementContext() { } - public void copyFrom(UnsupportedTransactionStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TranscationCommitContext extends UnsupportedTransactionStatementContext { - public TerminalNode COMMIT() { return getToken(DorisParser.COMMIT, 0); } - public TerminalNode WORK() { return getToken(DorisParser.WORK, 0); } - public TerminalNode AND() { return getToken(DorisParser.AND, 0); } - public TerminalNode CHAIN() { return getToken(DorisParser.CHAIN, 0); } - public TerminalNode RELEASE() { return getToken(DorisParser.RELEASE, 0); } - public List NO() { return getTokens(DorisParser.NO); } - public TerminalNode NO(int i) { - return getToken(DorisParser.NO, i); - } - public TranscationCommitContext(UnsupportedTransactionStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTranscationCommit(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTranscationCommit(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TransactionRollbackContext extends UnsupportedTransactionStatementContext { - public TerminalNode ROLLBACK() { return getToken(DorisParser.ROLLBACK, 0); } - public TerminalNode WORK() { return getToken(DorisParser.WORK, 0); } - public TerminalNode AND() { return getToken(DorisParser.AND, 0); } - public TerminalNode CHAIN() { return getToken(DorisParser.CHAIN, 0); } - public TerminalNode RELEASE() { return getToken(DorisParser.RELEASE, 0); } - public List NO() { return getTokens(DorisParser.NO); } - public TerminalNode NO(int i) { - return getToken(DorisParser.NO, i); - } - public TransactionRollbackContext(UnsupportedTransactionStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTransactionRollback(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTransactionRollback(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TransactionBeginContext extends UnsupportedTransactionStatementContext { - public TerminalNode BEGIN() { return getToken(DorisParser.BEGIN, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TransactionBeginContext(UnsupportedTransactionStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTransactionBegin(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTransactionBegin(this); - } - } - - public final UnsupportedTransactionStatementContext unsupportedTransactionStatement() throws RecognitionException { - UnsupportedTransactionStatementContext _localctx = new UnsupportedTransactionStatementContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_unsupportedTransactionStatement); - int _la; - try { - setState(3031); - _errHandler.sync(this); - switch (_input.LA(1)) { - case BEGIN: - _localctx = new TransactionBeginContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(2989); - match(BEGIN); - setState(2995); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(2990); - match(WITH); - setState(2991); - match(LABEL); - setState(2993); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(2992); - identifier(); - } - } - - } - } - - } - break; - case COMMIT: - _localctx = new TranscationCommitContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(2997); - match(COMMIT); - setState(2999); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WORK) { - { - setState(2998); - match(WORK); - } - } - - setState(3006); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AND) { - { - setState(3001); - match(AND); - setState(3003); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NO) { - { - setState(3002); - match(NO); - } - } - - setState(3005); - match(CHAIN); - } - } - - setState(3012); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NO || _la==RELEASE) { - { - setState(3009); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NO) { - { - setState(3008); - match(NO); - } - } - - setState(3011); - match(RELEASE); - } - } - - } - break; - case ROLLBACK: - _localctx = new TransactionRollbackContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3014); - match(ROLLBACK); - setState(3016); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WORK) { - { - setState(3015); - match(WORK); - } - } - - setState(3023); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AND) { - { - setState(3018); - match(AND); - setState(3020); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NO) { - { - setState(3019); - match(NO); - } - } - - setState(3022); - match(CHAIN); - } - } - - setState(3029); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NO || _la==RELEASE) { - { - setState(3026); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NO) { - { - setState(3025); - match(NO); - } - } - - setState(3028); - match(RELEASE); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedGrantRevokeStatementContext extends ParserRuleContext { - public UnsupportedGrantRevokeStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedGrantRevokeStatement; } - - public UnsupportedGrantRevokeStatementContext() { } - public void copyFrom(UnsupportedGrantRevokeStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class GrantResourcePrivilegeContext extends UnsupportedGrantRevokeStatementContext { - public TerminalNode GRANT() { return getToken(DorisParser.GRANT, 0); } - public PrivilegeListContext privilegeList() { - return getRuleContext(PrivilegeListContext.class,0); - } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public IdentifierOrTextOrAsteriskContext identifierOrTextOrAsterisk() { - return getRuleContext(IdentifierOrTextOrAsteriskContext.class,0); - } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public TerminalNode CLUSTER() { return getToken(DorisParser.CLUSTER, 0); } - public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode REVOKE() { return getToken(DorisParser.REVOKE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public GrantResourcePrivilegeContext(UnsupportedGrantRevokeStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantResourcePrivilege(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantResourcePrivilege(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class GrantTablePrivilegeContext extends UnsupportedGrantRevokeStatementContext { - public TerminalNode GRANT() { return getToken(DorisParser.GRANT, 0); } - public PrivilegeListContext privilegeList() { - return getRuleContext(PrivilegeListContext.class,0); - } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public MultipartIdentifierOrAsteriskContext multipartIdentifierOrAsterisk() { - return getRuleContext(MultipartIdentifierOrAsteriskContext.class,0); - } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode REVOKE() { return getToken(DorisParser.REVOKE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public GrantTablePrivilegeContext(UnsupportedGrantRevokeStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantTablePrivilege(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantTablePrivilege(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class GrantRoleContext extends UnsupportedGrantRevokeStatementContext { - public Token STRING_LITERAL; - public List roles = new ArrayList(); - public TerminalNode GRANT() { return getToken(DorisParser.GRANT, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TerminalNode REVOKE() { return getToken(DorisParser.REVOKE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public GrantRoleContext(UnsupportedGrantRevokeStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantRole(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantRole(this); - } - } - - public final UnsupportedGrantRevokeStatementContext unsupportedGrantRevokeStatement() throws RecognitionException { - UnsupportedGrantRevokeStatementContext _localctx = new UnsupportedGrantRevokeStatementContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_unsupportedGrantRevokeStatement); - int _la; - try { - setState(3117); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,421,_ctx) ) { - case 1: - _localctx = new GrantTablePrivilegeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3033); - match(GRANT); - setState(3034); - privilegeList(); - setState(3035); - match(ON); - setState(3036); - multipartIdentifierOrAsterisk(); - setState(3037); - match(TO); - setState(3041); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(3038); - userIdentify(); - } - break; - case ROLE: - { - setState(3039); - match(ROLE); - setState(3040); - match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 2: - _localctx = new GrantResourcePrivilegeContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3043); - match(GRANT); - setState(3044); - privilegeList(); - setState(3045); - match(ON); - setState(3055); - _errHandler.sync(this); - switch (_input.LA(1)) { - case RESOURCE: - { - setState(3046); - match(RESOURCE); - } - break; - case CLUSTER: - { - setState(3047); - match(CLUSTER); - } - break; - case COMPUTE: - { - setState(3048); - match(COMPUTE); - setState(3049); - match(GROUP); - } - break; - case STAGE: - { - setState(3050); - match(STAGE); - } - break; - case STORAGE: - { - setState(3051); - match(STORAGE); - setState(3052); - match(VAULT); - } - break; - case WORKLOAD: - { - setState(3053); - match(WORKLOAD); - setState(3054); - match(GROUP); - } - break; - default: - throw new NoViableAltException(this); - } - setState(3057); - identifierOrTextOrAsterisk(); - setState(3058); - match(TO); - setState(3062); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(3059); - userIdentify(); - } - break; - case ROLE: - { - setState(3060); - match(ROLE); - setState(3061); - match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 3: - _localctx = new GrantRoleContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3064); - match(GRANT); - setState(3065); - ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); - setState(3070); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3066); - match(COMMA); - setState(3067); - ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); - } - } - setState(3072); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(3073); - match(TO); - setState(3074); - userIdentify(); - } - break; - case 4: - _localctx = new GrantTablePrivilegeContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3075); - match(REVOKE); - setState(3076); - privilegeList(); - setState(3077); - match(ON); - setState(3078); - multipartIdentifierOrAsterisk(); - setState(3079); - match(FROM); - setState(3083); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(3080); - userIdentify(); - } - break; - case ROLE: - { - setState(3081); - match(ROLE); - setState(3082); - match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 5: - _localctx = new GrantResourcePrivilegeContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3085); - match(REVOKE); - setState(3086); - privilegeList(); - setState(3087); - match(ON); - setState(3097); - _errHandler.sync(this); - switch (_input.LA(1)) { - case RESOURCE: - { - setState(3088); - match(RESOURCE); - } - break; - case CLUSTER: - { - setState(3089); - match(CLUSTER); - } - break; - case COMPUTE: - { - setState(3090); - match(COMPUTE); - setState(3091); - match(GROUP); - } - break; - case STAGE: - { - setState(3092); - match(STAGE); - } - break; - case STORAGE: - { - setState(3093); - match(STORAGE); - setState(3094); - match(VAULT); - } - break; - case WORKLOAD: - { - setState(3095); - match(WORKLOAD); - setState(3096); - match(GROUP); - } - break; - default: - throw new NoViableAltException(this); - } - setState(3099); - identifierOrTextOrAsterisk(); - setState(3100); - match(FROM); - setState(3104); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(3101); - userIdentify(); - } - break; - case ROLE: - { - setState(3102); - match(ROLE); - setState(3103); - match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 6: - _localctx = new GrantRoleContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(3106); - match(REVOKE); - setState(3107); - ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); - setState(3112); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3108); - match(COMMA); - setState(3109); - ((GrantRoleContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((GrantRoleContext)_localctx).roles.add(((GrantRoleContext)_localctx).STRING_LITERAL); - } - } - setState(3114); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(3115); - match(FROM); - setState(3116); - userIdentify(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PrivilegeContext extends ParserRuleContext { - public IdentifierContext name; - public IdentifierListContext columns; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public PrivilegeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_privilege; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrivilege(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrivilege(this); - } - } - - public final PrivilegeContext privilege() throws RecognitionException { - PrivilegeContext _localctx = new PrivilegeContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_privilege); - int _la; - try { - setState(3124); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(3119); - ((PrivilegeContext)_localctx).name = identifier(); - setState(3121); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(3120); - ((PrivilegeContext)_localctx).columns = identifierList(); - } - } - - } - break; - case ALL: - enterOuterAlt(_localctx, 2); - { - setState(3123); - match(ALL); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PrivilegeListContext extends ParserRuleContext { - public List privilege() { - return getRuleContexts(PrivilegeContext.class); - } - public PrivilegeContext privilege(int i) { - return getRuleContext(PrivilegeContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PrivilegeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_privilegeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrivilegeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrivilegeList(this); - } - } - - public final PrivilegeListContext privilegeList() throws RecognitionException { - PrivilegeListContext _localctx = new PrivilegeListContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_privilegeList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3126); - privilege(); - setState(3131); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3127); - match(COMMA); - setState(3128); - privilege(); - } - } - setState(3133); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedAlterStatementContext extends ParserRuleContext { - public UnsupportedAlterStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedAlterStatement; } - - public UnsupportedAlterStatementContext() { } - public void copyFrom(UnsupportedAlterStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterStoragePlicyContext extends UnsupportedAlterStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterStoragePlicyContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterStoragePlicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterStoragePlicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterResourceContext extends UnsupportedAlterStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterResourceContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterResource(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterResource(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterRoutineLoadContext extends UnsupportedAlterStatementContext { - public MultipartIdentifierContext name; - public PropertyClauseContext properties; - public IdentifierContext type; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public AlterRoutineLoadContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterRoutineLoad(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterRoutineLoad(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterUserContext extends UnsupportedAlterStatementContext { - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode USER() { return getToken(DorisParser.USER, 0); } - public GrantUserIdentifyContext grantUserIdentify() { - return getRuleContext(GrantUserIdentifyContext.class,0); - } - public PasswordOptionContext passwordOption() { - return getRuleContext(PasswordOptionContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AlterUserContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterUser(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterUser(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterDatabasePropertiesContext extends UnsupportedAlterStatementContext { - public IdentifierContext name; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public AlterDatabasePropertiesContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterDatabaseProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterDatabaseProperties(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterColocateGroupContext extends UnsupportedAlterStatementContext { - public MultipartIdentifierContext name; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode COLOCATE() { return getToken(DorisParser.COLOCATE, 0); } - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public AlterColocateGroupContext(UnsupportedAlterStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterColocateGroup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterColocateGroup(this); - } - } - - public final UnsupportedAlterStatementContext unsupportedAlterStatement() throws RecognitionException { - UnsupportedAlterStatementContext _localctx = new UnsupportedAlterStatementContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_unsupportedAlterStatement); - int _la; - try { - setState(3192); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,430,_ctx) ) { - case 1: - _localctx = new AlterDatabasePropertiesContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3134); - match(ALTER); - setState(3135); - match(DATABASE); - setState(3136); - ((AlterDatabasePropertiesContext)_localctx).name = identifier(); - setState(3137); - match(SET); - setState(3138); - match(PROPERTIES); - setState(3139); - match(LEFT_PAREN); - setState(3140); - propertyItemList(); - setState(3141); - match(RIGHT_PAREN); - } - break; - case 2: - _localctx = new AlterResourceContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3143); - match(ALTER); - setState(3144); - match(RESOURCE); - setState(3145); - ((AlterResourceContext)_localctx).name = identifierOrText(); - setState(3147); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3146); - ((AlterResourceContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 3: - _localctx = new AlterColocateGroupContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3149); - match(ALTER); - setState(3150); - match(COLOCATE); - setState(3151); - match(GROUP); - setState(3152); - ((AlterColocateGroupContext)_localctx).name = multipartIdentifier(); - setState(3153); - match(SET); - setState(3154); - match(LEFT_PAREN); - setState(3155); - propertyItemList(); - setState(3156); - match(RIGHT_PAREN); - } - break; - case 4: - _localctx = new AlterRoutineLoadContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3158); - match(ALTER); - setState(3159); - match(ROUTINE); - setState(3160); - match(LOAD); - setState(3161); - match(FOR); - setState(3162); - ((AlterRoutineLoadContext)_localctx).name = multipartIdentifier(); - setState(3164); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3163); - ((AlterRoutineLoadContext)_localctx).properties = propertyClause(); - } - } - - setState(3172); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(3166); - match(FROM); - setState(3167); - ((AlterRoutineLoadContext)_localctx).type = identifier(); - setState(3168); - match(LEFT_PAREN); - setState(3169); - propertyItemList(); - setState(3170); - match(RIGHT_PAREN); - } - } - - } - break; - case 5: - _localctx = new AlterStoragePlicyContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3174); - match(ALTER); - setState(3175); - match(STORAGE); - setState(3176); - match(POLICY); - setState(3177); - ((AlterStoragePlicyContext)_localctx).name = identifierOrText(); - setState(3178); - ((AlterStoragePlicyContext)_localctx).properties = propertyClause(); - } - break; - case 6: - _localctx = new AlterUserContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(3180); - match(ALTER); - setState(3181); - match(USER); - setState(3184); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3182); - match(IF); - setState(3183); - match(EXISTS); - } - } - - setState(3186); - grantUserIdentify(); - setState(3187); - passwordOption(); - setState(3190); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(3188); - match(COMMENT); - setState(3189); - match(STRING_LITERAL); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AlterSystemClauseContext extends ParserRuleContext { - public AlterSystemClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_alterSystemClause; } - - public AlterSystemClauseContext() { } - public void copyFrom(AlterSystemClauseContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropBrokerClauseContext extends AlterSystemClauseContext { - public IdentifierOrTextContext name; - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public DropBrokerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropBrokerClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropBrokerClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyFrontendOrBackendHostNameClauseContext extends AlterSystemClauseContext { - public Token hostPort; - public Token hostName; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode HOSTNAME() { return getToken(DorisParser.HOSTNAME, 0); } - public TerminalNode FRONTEND() { return getToken(DorisParser.FRONTEND, 0); } - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public ModifyFrontendOrBackendHostNameClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyFrontendOrBackendHostNameClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyFrontendOrBackendHostNameClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropObserverClauseContext extends AlterSystemClauseContext { - public Token hostPort; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode OBSERVER() { return getToken(DorisParser.OBSERVER, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public DropObserverClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropObserverClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropObserverClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddFollowerClauseContext extends AlterSystemClauseContext { - public Token hostPort; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode FOLLOWER() { return getToken(DorisParser.FOLLOWER, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AddFollowerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddFollowerClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddFollowerClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropFollowerClauseContext extends AlterSystemClauseContext { - public Token hostPort; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode FOLLOWER() { return getToken(DorisParser.FOLLOWER, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public DropFollowerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropFollowerClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropFollowerClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropAllBrokerClauseContext extends AlterSystemClauseContext { - public IdentifierOrTextContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public DropAllBrokerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropAllBrokerClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropAllBrokerClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropBackendClauseContext extends AlterSystemClauseContext { - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode DROPP() { return getToken(DorisParser.DROPP, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public DropBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropBackendClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropBackendClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterLoadErrorUrlClauseContext extends AlterSystemClauseContext { - public PropertyClauseContext properties; - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode LOAD() { return getToken(DorisParser.LOAD, 0); } - public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } - public TerminalNode HUB() { return getToken(DorisParser.HUB, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterLoadErrorUrlClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterLoadErrorUrlClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterLoadErrorUrlClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyBackendClauseContext extends AlterSystemClauseContext { - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ModifyBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyBackendClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyBackendClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddBrokerClauseContext extends AlterSystemClauseContext { - public IdentifierOrTextContext name; - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AddBrokerClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddBrokerClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddBrokerClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddObserverClauseContext extends AlterSystemClauseContext { - public Token hostPort; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode OBSERVER() { return getToken(DorisParser.OBSERVER, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AddObserverClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddObserverClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddObserverClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DecommissionBackendClauseContext extends AlterSystemClauseContext { - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public TerminalNode DECOMMISSION() { return getToken(DorisParser.DECOMMISSION, 0); } - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public DecommissionBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDecommissionBackendClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDecommissionBackendClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddBackendClauseContext extends AlterSystemClauseContext { - public Token STRING_LITERAL; - public List hostPorts = new ArrayList(); - public PropertyClauseContext properties; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode BACKEND() { return getToken(DorisParser.BACKEND, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AddBackendClauseContext(AlterSystemClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddBackendClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddBackendClause(this); - } - } - - public final AlterSystemClauseContext alterSystemClause() throws RecognitionException { - AlterSystemClauseContext _localctx = new AlterSystemClauseContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_alterSystemClause); - int _la; - try { - setState(3292); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,439,_ctx) ) { - case 1: - _localctx = new AddBackendClauseContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3194); - match(ADD); - setState(3195); - match(BACKEND); - setState(3196); - ((AddBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AddBackendClauseContext)_localctx).hostPorts.add(((AddBackendClauseContext)_localctx).STRING_LITERAL); - setState(3201); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3197); - match(COMMA); - setState(3198); - ((AddBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AddBackendClauseContext)_localctx).hostPorts.add(((AddBackendClauseContext)_localctx).STRING_LITERAL); - } - } - setState(3203); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(3205); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3204); - ((AddBackendClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 2: - _localctx = new DropBackendClauseContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3207); - _la = _input.LA(1); - if ( !(_la==DROP || _la==DROPP) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(3208); - match(BACKEND); - setState(3209); - ((DropBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DropBackendClauseContext)_localctx).hostPorts.add(((DropBackendClauseContext)_localctx).STRING_LITERAL); - setState(3214); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3210); - match(COMMA); - setState(3211); - ((DropBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DropBackendClauseContext)_localctx).hostPorts.add(((DropBackendClauseContext)_localctx).STRING_LITERAL); - } - } - setState(3216); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 3: - _localctx = new DecommissionBackendClauseContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3217); - match(DECOMMISSION); - setState(3218); - match(BACKEND); - setState(3219); - ((DecommissionBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DecommissionBackendClauseContext)_localctx).hostPorts.add(((DecommissionBackendClauseContext)_localctx).STRING_LITERAL); - setState(3224); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3220); - match(COMMA); - setState(3221); - ((DecommissionBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DecommissionBackendClauseContext)_localctx).hostPorts.add(((DecommissionBackendClauseContext)_localctx).STRING_LITERAL); - } - } - setState(3226); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 4: - _localctx = new AddObserverClauseContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3227); - match(ADD); - setState(3228); - match(OBSERVER); - setState(3229); - ((AddObserverClauseContext)_localctx).hostPort = match(STRING_LITERAL); - } - break; - case 5: - _localctx = new DropObserverClauseContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3230); - match(DROP); - setState(3231); - match(OBSERVER); - setState(3232); - ((DropObserverClauseContext)_localctx).hostPort = match(STRING_LITERAL); - } - break; - case 6: - _localctx = new AddFollowerClauseContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(3233); - match(ADD); - setState(3234); - match(FOLLOWER); - setState(3235); - ((AddFollowerClauseContext)_localctx).hostPort = match(STRING_LITERAL); - } - break; - case 7: - _localctx = new DropFollowerClauseContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(3236); - match(DROP); - setState(3237); - match(FOLLOWER); - setState(3238); - ((DropFollowerClauseContext)_localctx).hostPort = match(STRING_LITERAL); - } - break; - case 8: - _localctx = new AddBrokerClauseContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(3239); - match(ADD); - setState(3240); - match(BROKER); - setState(3241); - ((AddBrokerClauseContext)_localctx).name = identifierOrText(); - setState(3242); - ((AddBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AddBrokerClauseContext)_localctx).hostPorts.add(((AddBrokerClauseContext)_localctx).STRING_LITERAL); - setState(3247); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3243); - match(COMMA); - setState(3244); - ((AddBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((AddBrokerClauseContext)_localctx).hostPorts.add(((AddBrokerClauseContext)_localctx).STRING_LITERAL); - } - } - setState(3249); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 9: - _localctx = new DropBrokerClauseContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(3250); - match(DROP); - setState(3251); - match(BROKER); - setState(3252); - ((DropBrokerClauseContext)_localctx).name = identifierOrText(); - setState(3253); - ((DropBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DropBrokerClauseContext)_localctx).hostPorts.add(((DropBrokerClauseContext)_localctx).STRING_LITERAL); - setState(3258); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3254); - match(COMMA); - setState(3255); - ((DropBrokerClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DropBrokerClauseContext)_localctx).hostPorts.add(((DropBrokerClauseContext)_localctx).STRING_LITERAL); - } - } - setState(3260); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 10: - _localctx = new DropAllBrokerClauseContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(3261); - match(DROP); - setState(3262); - match(ALL); - setState(3263); - match(BROKER); - setState(3264); - ((DropAllBrokerClauseContext)_localctx).name = identifierOrText(); - } - break; - case 11: - _localctx = new AlterLoadErrorUrlClauseContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(3265); - match(SET); - setState(3266); - match(LOAD); - setState(3267); - match(ERRORS); - setState(3268); - match(HUB); - setState(3270); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3269); - ((AlterLoadErrorUrlClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 12: - _localctx = new ModifyBackendClauseContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(3272); - match(MODIFY); - setState(3273); - match(BACKEND); - setState(3274); - ((ModifyBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((ModifyBackendClauseContext)_localctx).hostPorts.add(((ModifyBackendClauseContext)_localctx).STRING_LITERAL); - setState(3279); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3275); - match(COMMA); - setState(3276); - ((ModifyBackendClauseContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((ModifyBackendClauseContext)_localctx).hostPorts.add(((ModifyBackendClauseContext)_localctx).STRING_LITERAL); - } - } - setState(3281); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(3282); - match(SET); - setState(3283); - match(LEFT_PAREN); - setState(3284); - propertyItemList(); - setState(3285); - match(RIGHT_PAREN); - } - break; - case 13: - _localctx = new ModifyFrontendOrBackendHostNameClauseContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(3287); - match(MODIFY); - setState(3288); - _la = _input.LA(1); - if ( !(_la==BACKEND || _la==FRONTEND) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(3289); - ((ModifyFrontendOrBackendHostNameClauseContext)_localctx).hostPort = match(STRING_LITERAL); - setState(3290); - match(HOSTNAME); - setState(3291); - ((ModifyFrontendOrBackendHostNameClauseContext)_localctx).hostName = match(STRING_LITERAL); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DropRollupClauseContext extends ParserRuleContext { - public IdentifierContext rollupName; - public PropertyClauseContext properties; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public DropRollupClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dropRollupClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRollupClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRollupClause(this); - } - } - - public final DropRollupClauseContext dropRollupClause() throws RecognitionException { - DropRollupClauseContext _localctx = new DropRollupClauseContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_dropRollupClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3294); - ((DropRollupClauseContext)_localctx).rollupName = identifier(); - setState(3296); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3295); - ((DropRollupClauseContext)_localctx).properties = propertyClause(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AddRollupClauseContext extends ParserRuleContext { - public IdentifierContext rollupName; - public IdentifierListContext columns; - public IdentifierListContext dupKeys; - public PropertyClauseContext properties; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public FromRollupContext fromRollup() { - return getRuleContext(FromRollupContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AddRollupClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_addRollupClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddRollupClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddRollupClause(this); - } - } - - public final AddRollupClauseContext addRollupClause() throws RecognitionException { - AddRollupClauseContext _localctx = new AddRollupClauseContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_addRollupClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3298); - ((AddRollupClauseContext)_localctx).rollupName = identifier(); - setState(3299); - ((AddRollupClauseContext)_localctx).columns = identifierList(); - setState(3303); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DUPLICATE) { - { - setState(3300); - match(DUPLICATE); - setState(3301); - match(KEY); - setState(3302); - ((AddRollupClauseContext)_localctx).dupKeys = identifierList(); - } - } - - setState(3306); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(3305); - fromRollup(); - } - } - - setState(3309); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3308); - ((AddRollupClauseContext)_localctx).properties = propertyClause(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AlterTableClauseContext extends ParserRuleContext { - public AlterTableClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_alterTableClause; } - - public AlterTableClauseContext() { } - public void copyFrom(AlterTableClauseContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddPartitionClauseContext extends AlterTableClauseContext { - public IdentifierListContext hashKeys; - public Token autoBucket; - public PropertyClauseContext properties; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public PartitionDefContext partitionDef() { - return getRuleContext(PartitionDefContext.class,0); - } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } - public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public AddPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddPartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddPartitionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyDistributionClauseContext extends AlterTableClauseContext { - public IdentifierListContext hashKeys; - public Token autoBucket; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode DISTRIBUTION() { return getToken(DorisParser.DISTRIBUTION, 0); } - public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } - public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public ModifyDistributionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyDistributionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyDistributionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddColumnClauseContext extends AlterTableClauseContext { - public PropertyClauseContext properties; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public ColumnDefContext columnDef() { - return getRuleContext(ColumnDefContext.class,0); - } - public ColumnPositionContext columnPosition() { - return getRuleContext(ColumnPositionContext.class,0); - } - public ToRollupContext toRollup() { - return getRuleContext(ToRollupContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AddColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddColumnClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddColumnClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyColumnClauseContext extends AlterTableClauseContext { - public PropertyClauseContext properties; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public ColumnDefContext columnDef() { - return getRuleContext(ColumnDefContext.class,0); - } - public ColumnPositionContext columnPosition() { - return getRuleContext(ColumnPositionContext.class,0); - } - public FromRollupContext fromRollup() { - return getRuleContext(FromRollupContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public ModifyColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyColumnClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyColumnClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RenameRollupClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public IdentifierContext newName; - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public RenameRollupClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenameRollupClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenameRollupClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddColumnsClauseContext extends AlterTableClauseContext { - public PropertyClauseContext properties; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public ColumnDefsContext columnDefs() { - return getRuleContext(ColumnDefsContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ToRollupContext toRollup() { - return getRuleContext(ToRollupContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AddColumnsClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddColumnsClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddColumnsClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ReplaceTableClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public ReplaceTableClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplaceTableClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplaceTableClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RenamePartitionClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public IdentifierContext newName; - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public RenamePartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenamePartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenamePartitionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropIndexClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropIndexClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropIndexClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropIndexClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropColumnClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public FromRollupContext fromRollup() { - return getRuleContext(FromRollupContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public DropColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropColumnClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropColumnClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropPartitionClauseContext extends AlterTableClauseContext { - public IdentifierContext partitionName; - public IdentifierContext indexName; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public DropPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropPartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropPartitionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ReplacePartitionClauseContext extends AlterTableClauseContext { - public PartitionSpecContext partitions; - public PartitionSpecContext tempPartitions; - public PropertyClauseContext properties; - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public List partitionSpec() { - return getRuleContexts(PartitionSpecContext.class); - } - public PartitionSpecContext partitionSpec(int i) { - return getRuleContext(PartitionSpecContext.class,i); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public ReplacePartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplacePartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplacePartitionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RenameClauseContext extends AlterTableClauseContext { - public IdentifierContext newName; - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public RenameClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenameClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenameClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyTableCommentClauseContext extends AlterTableClauseContext { - public Token comment; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ModifyTableCommentClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyTableCommentClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyTableCommentClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyPartitionClauseContext extends AlterTableClauseContext { - public IdentifierContext partitionName; - public IdentifierListContext partitionNames; - public PropertyItemListContext partitionProperties; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ModifyPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyPartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyPartitionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyEngineClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode ENGINE() { return getToken(DorisParser.ENGINE, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public ModifyEngineClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyEngineClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyEngineClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ReorderColumnsClauseContext extends AlterTableClauseContext { - public PropertyClauseContext properties; - public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public FromRollupContext fromRollup() { - return getRuleContext(FromRollupContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public ReorderColumnsClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReorderColumnsClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReorderColumnsClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AddIndexClauseContext extends AlterTableClauseContext { - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public IndexDefContext indexDef() { - return getRuleContext(IndexDefContext.class,0); - } - public AddIndexClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAddIndexClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAddIndexClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ModifyColumnCommentClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public Token comment; - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ModifyColumnCommentClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterModifyColumnCommentClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitModifyColumnCommentClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterMultiPartitionClauseContext extends AlterTableClauseContext { - public PartitionValueListContext from; - public PartitionValueListContext to; - public IdentifierContext unit; - public PropertyClauseContext properties; - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public TerminalNode INTERVAL() { return getToken(DorisParser.INTERVAL, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public List partitionValueList() { - return getRuleContexts(PartitionValueListContext.class); - } - public PartitionValueListContext partitionValueList(int i) { - return getRuleContext(PartitionValueListContext.class,i); - } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AlterMultiPartitionClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterMultiPartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterMultiPartitionClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RenameColumnClauseContext extends AlterTableClauseContext { - public IdentifierContext name; - public IdentifierContext newName; - public TerminalNode RENAME() { return getToken(DorisParser.RENAME, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public RenameColumnClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRenameColumnClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRenameColumnClause(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class EnableFeatureClauseContext extends AlterTableClauseContext { - public Token name; - public PropertyClauseContext properties; - public TerminalNode ENABLE() { return getToken(DorisParser.ENABLE, 0); } - public TerminalNode FEATURE() { return getToken(DorisParser.FEATURE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public EnableFeatureClauseContext(AlterTableClauseContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterEnableFeatureClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitEnableFeatureClause(this); - } - } - - public final AlterTableClauseContext alterTableClause() throws RecognitionException { - AlterTableClauseContext _localctx = new AlterTableClauseContext(_ctx, getState()); - enterRule(_localctx, 98, RULE_alterTableClause); - int _la; - try { - setState(3531); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,484,_ctx) ) { - case 1: - _localctx = new AddColumnClauseContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3311); - match(ADD); - setState(3312); - match(COLUMN); - setState(3313); - columnDef(); - setState(3315); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AFTER || _la==FIRST) { - { - setState(3314); - columnPosition(); - } - } - - setState(3318); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IN || _la==TO) { - { - setState(3317); - toRollup(); - } - } - - setState(3321); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3320); - ((AddColumnClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 2: - _localctx = new AddColumnsClauseContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3323); - match(ADD); - setState(3324); - match(COLUMN); - setState(3325); - match(LEFT_PAREN); - setState(3326); - columnDefs(); - setState(3327); - match(RIGHT_PAREN); - setState(3329); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IN || _la==TO) { - { - setState(3328); - toRollup(); - } - } - - setState(3332); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3331); - ((AddColumnsClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 3: - _localctx = new DropColumnClauseContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3334); - match(DROP); - setState(3335); - match(COLUMN); - setState(3336); - ((DropColumnClauseContext)_localctx).name = identifier(); - setState(3338); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(3337); - fromRollup(); - } - } - - setState(3341); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3340); - ((DropColumnClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 4: - _localctx = new ModifyColumnClauseContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3343); - match(MODIFY); - setState(3344); - match(COLUMN); - setState(3345); - columnDef(); - setState(3347); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AFTER || _la==FIRST) { - { - setState(3346); - columnPosition(); - } - } - - setState(3350); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(3349); - fromRollup(); - } - } - - setState(3353); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3352); - ((ModifyColumnClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 5: - _localctx = new ReorderColumnsClauseContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3355); - match(ORDER); - setState(3356); - match(BY); - setState(3357); - identifierList(); - setState(3359); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(3358); - fromRollup(); - } - } - - setState(3362); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3361); - ((ReorderColumnsClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 6: - _localctx = new AddPartitionClauseContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(3364); - match(ADD); - setState(3366); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(3365); - match(TEMPORARY); - } - } - - setState(3368); - partitionDef(); - setState(3383); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DISTRIBUTED) { - { - setState(3369); - match(DISTRIBUTED); - setState(3370); - match(BY); - setState(3374); - _errHandler.sync(this); - switch (_input.LA(1)) { - case HASH: - { - setState(3371); - match(HASH); - setState(3372); - ((AddPartitionClauseContext)_localctx).hashKeys = identifierList(); - } - break; - case RANDOM: - { - setState(3373); - match(RANDOM); - } - break; - default: - throw new NoViableAltException(this); - } - setState(3381); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BUCKETS) { - { - setState(3376); - match(BUCKETS); - setState(3379); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INTEGER_VALUE: - { - setState(3377); - match(INTEGER_VALUE); - } - break; - case AUTO: - { - setState(3378); - ((AddPartitionClauseContext)_localctx).autoBucket = match(AUTO); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - } - } - - setState(3386); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3385); - ((AddPartitionClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 7: - _localctx = new DropPartitionClauseContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(3388); - match(DROP); - setState(3390); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(3389); - match(TEMPORARY); - } - } - - setState(3392); - match(PARTITION); - setState(3395); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3393); - match(IF); - setState(3394); - match(EXISTS); - } - } - - setState(3397); - ((DropPartitionClauseContext)_localctx).partitionName = identifier(); - setState(3399); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(3398); - match(FORCE); - } - } - - setState(3404); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM) { - { - setState(3401); - match(FROM); - setState(3402); - match(INDEX); - setState(3403); - ((DropPartitionClauseContext)_localctx).indexName = identifier(); - } - } - - } - break; - case 8: - _localctx = new ModifyPartitionClauseContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(3406); - match(MODIFY); - setState(3408); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(3407); - match(TEMPORARY); - } - } - - setState(3410); - match(PARTITION); - setState(3416); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,467,_ctx) ) { - case 1: - { - setState(3411); - ((ModifyPartitionClauseContext)_localctx).partitionName = identifier(); - } - break; - case 2: - { - setState(3412); - ((ModifyPartitionClauseContext)_localctx).partitionNames = identifierList(); - } - break; - case 3: - { - setState(3413); - match(LEFT_PAREN); - setState(3414); - match(ASTERISK); - setState(3415); - match(RIGHT_PAREN); - } - break; - } - setState(3418); - match(SET); - setState(3419); - match(LEFT_PAREN); - setState(3420); - ((ModifyPartitionClauseContext)_localctx).partitionProperties = propertyItemList(); - setState(3421); - match(RIGHT_PAREN); - } - break; - case 9: - _localctx = new ReplacePartitionClauseContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(3423); - match(REPLACE); - setState(3425); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3424); - ((ReplacePartitionClauseContext)_localctx).partitions = partitionSpec(); - } - } - - setState(3427); - match(WITH); - setState(3429); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3428); - ((ReplacePartitionClauseContext)_localctx).tempPartitions = partitionSpec(); - } - } - - setState(3432); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(3431); - match(FORCE); - } - } - - setState(3435); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3434); - ((ReplacePartitionClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 10: - _localctx = new ReplaceTableClauseContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(3437); - match(REPLACE); - setState(3438); - match(WITH); - setState(3439); - match(TABLE); - setState(3440); - ((ReplaceTableClauseContext)_localctx).name = identifier(); - setState(3442); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3441); - ((ReplaceTableClauseContext)_localctx).properties = propertyClause(); - } - } - - setState(3445); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(3444); - match(FORCE); - } - } - - } - break; - case 11: - _localctx = new RenameClauseContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(3447); - match(RENAME); - setState(3448); - ((RenameClauseContext)_localctx).newName = identifier(); - } - break; - case 12: - _localctx = new RenameRollupClauseContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(3449); - match(RENAME); - setState(3450); - match(ROLLUP); - setState(3451); - ((RenameRollupClauseContext)_localctx).name = identifier(); - setState(3452); - ((RenameRollupClauseContext)_localctx).newName = identifier(); - } - break; - case 13: - _localctx = new RenamePartitionClauseContext(_localctx); - enterOuterAlt(_localctx, 13); - { - setState(3454); - match(RENAME); - setState(3455); - match(PARTITION); - setState(3456); - ((RenamePartitionClauseContext)_localctx).name = identifier(); - setState(3457); - ((RenamePartitionClauseContext)_localctx).newName = identifier(); - } - break; - case 14: - _localctx = new RenameColumnClauseContext(_localctx); - enterOuterAlt(_localctx, 14); - { - setState(3459); - match(RENAME); - setState(3460); - match(COLUMN); - setState(3461); - ((RenameColumnClauseContext)_localctx).name = identifier(); - setState(3462); - ((RenameColumnClauseContext)_localctx).newName = identifier(); - } - break; - case 15: - _localctx = new AddIndexClauseContext(_localctx); - enterOuterAlt(_localctx, 15); - { - setState(3464); - match(ADD); - setState(3465); - indexDef(); - } - break; - case 16: - _localctx = new DropIndexClauseContext(_localctx); - enterOuterAlt(_localctx, 16); - { - setState(3466); - match(DROP); - setState(3467); - match(INDEX); - setState(3470); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3468); - match(IF); - setState(3469); - match(EXISTS); - } - } - - setState(3472); - ((DropIndexClauseContext)_localctx).name = identifier(); - } - break; - case 17: - _localctx = new EnableFeatureClauseContext(_localctx); - enterOuterAlt(_localctx, 17); - { - setState(3473); - match(ENABLE); - setState(3474); - match(FEATURE); - setState(3475); - ((EnableFeatureClauseContext)_localctx).name = match(STRING_LITERAL); - setState(3478); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(3476); - match(WITH); - setState(3477); - ((EnableFeatureClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 18: - _localctx = new ModifyDistributionClauseContext(_localctx); - enterOuterAlt(_localctx, 18); - { - setState(3480); - match(MODIFY); - setState(3481); - match(DISTRIBUTION); - setState(3496); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DISTRIBUTED) { - { - setState(3482); - match(DISTRIBUTED); - setState(3483); - match(BY); - setState(3487); - _errHandler.sync(this); - switch (_input.LA(1)) { - case HASH: - { - setState(3484); - match(HASH); - setState(3485); - ((ModifyDistributionClauseContext)_localctx).hashKeys = identifierList(); - } - break; - case RANDOM: - { - setState(3486); - match(RANDOM); - } - break; - default: - throw new NoViableAltException(this); - } - setState(3494); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BUCKETS) { - { - setState(3489); - match(BUCKETS); - setState(3492); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INTEGER_VALUE: - { - setState(3490); - match(INTEGER_VALUE); - } - break; - case AUTO: - { - setState(3491); - ((ModifyDistributionClauseContext)_localctx).autoBucket = match(AUTO); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - } - } - - } - break; - case 19: - _localctx = new ModifyTableCommentClauseContext(_localctx); - enterOuterAlt(_localctx, 19); - { - setState(3498); - match(MODIFY); - setState(3499); - match(COMMENT); - setState(3500); - ((ModifyTableCommentClauseContext)_localctx).comment = match(STRING_LITERAL); - } - break; - case 20: - _localctx = new ModifyColumnCommentClauseContext(_localctx); - enterOuterAlt(_localctx, 20); - { - setState(3501); - match(MODIFY); - setState(3502); - match(COLUMN); - setState(3503); - ((ModifyColumnCommentClauseContext)_localctx).name = identifier(); - setState(3504); - match(COMMENT); - setState(3505); - ((ModifyColumnCommentClauseContext)_localctx).comment = match(STRING_LITERAL); - } - break; - case 21: - _localctx = new ModifyEngineClauseContext(_localctx); - enterOuterAlt(_localctx, 21); - { - setState(3507); - match(MODIFY); - setState(3508); - match(ENGINE); - setState(3509); - match(TO); - setState(3510); - ((ModifyEngineClauseContext)_localctx).name = identifier(); - setState(3512); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3511); - ((ModifyEngineClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 22: - _localctx = new AlterMultiPartitionClauseContext(_localctx); - enterOuterAlt(_localctx, 22); - { - setState(3514); - match(ADD); - setState(3516); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(3515); - match(TEMPORARY); - } - } - - setState(3518); - match(PARTITIONS); - setState(3519); - match(FROM); - setState(3520); - ((AlterMultiPartitionClauseContext)_localctx).from = partitionValueList(); - setState(3521); - match(TO); - setState(3522); - ((AlterMultiPartitionClauseContext)_localctx).to = partitionValueList(); - setState(3523); - match(INTERVAL); - setState(3524); - match(INTEGER_VALUE); - setState(3526); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,482,_ctx) ) { - case 1: - { - setState(3525); - ((AlterMultiPartitionClauseContext)_localctx).unit = identifier(); - } - break; - } - setState(3529); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3528); - ((AlterMultiPartitionClauseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ColumnPositionContext extends ParserRuleContext { - public IdentifierContext position; - public TerminalNode FIRST() { return getToken(DorisParser.FIRST, 0); } - public TerminalNode AFTER() { return getToken(DorisParser.AFTER, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ColumnPositionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_columnPosition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnPosition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnPosition(this); - } - } - - public final ColumnPositionContext columnPosition() throws RecognitionException { - ColumnPositionContext _localctx = new ColumnPositionContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_columnPosition); - try { - setState(3536); - _errHandler.sync(this); - switch (_input.LA(1)) { - case FIRST: - enterOuterAlt(_localctx, 1); - { - setState(3533); - match(FIRST); - } - break; - case AFTER: - enterOuterAlt(_localctx, 2); - { - setState(3534); - match(AFTER); - setState(3535); - ((ColumnPositionContext)_localctx).position = identifier(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ToRollupContext extends ParserRuleContext { - public IdentifierContext rollup; - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ToRollupContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_toRollup; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterToRollup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitToRollup(this); - } - } - - public final ToRollupContext toRollup() throws RecognitionException { - ToRollupContext _localctx = new ToRollupContext(_ctx, getState()); - enterRule(_localctx, 102, RULE_toRollup); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3538); - _la = _input.LA(1); - if ( !(_la==IN || _la==TO) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(3539); - ((ToRollupContext)_localctx).rollup = identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FromRollupContext extends ParserRuleContext { - public IdentifierContext rollup; - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public FromRollupContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromRollup; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFromRollup(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFromRollup(this); - } - } - - public final FromRollupContext fromRollup() throws RecognitionException { - FromRollupContext _localctx = new FromRollupContext(_ctx, getState()); - enterRule(_localctx, 104, RULE_fromRollup); - try { - enterOuterAlt(_localctx, 1); - { - setState(3541); - match(FROM); - setState(3542); - ((FromRollupContext)_localctx).rollup = identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedDropStatementContext extends ParserRuleContext { - public UnsupportedDropStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedDropStatement; } - - public UnsupportedDropStatementContext() { } - public void copyFrom(UnsupportedDropStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropStageContext extends UnsupportedDropStatementContext { - public IdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropStageContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropStage(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropStage(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropRowPolicyContext extends UnsupportedDropStatementContext { - public IdentifierContext policyName; - public MultipartIdentifierContext tableName; - public IdentifierContext roleName; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public DropRowPolicyContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropRowPolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropRowPolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropResourceContext extends UnsupportedDropStatementContext { - public IdentifierOrTextContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropResourceContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropResource(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropResource(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropViewContext extends UnsupportedDropStatementContext { - public MultipartIdentifierContext name; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public DropViewContext(UnsupportedDropStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropView(this); - } - } - - public final UnsupportedDropStatementContext unsupportedDropStatement() throws RecognitionException { - UnsupportedDropStatementContext _localctx = new UnsupportedDropStatementContext(_ctx, getState()); - enterRule(_localctx, 106, RULE_unsupportedDropStatement); - int _la; - try { - setState(3583); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,492,_ctx) ) { - case 1: - _localctx = new DropViewContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3544); - match(DROP); - setState(3545); - match(VIEW); - setState(3548); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3546); - match(IF); - setState(3547); - match(EXISTS); - } - } - - setState(3550); - ((DropViewContext)_localctx).name = multipartIdentifier(); - } - break; - case 2: - _localctx = new DropResourceContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3551); - match(DROP); - setState(3552); - match(RESOURCE); - setState(3555); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3553); - match(IF); - setState(3554); - match(EXISTS); - } - } - - setState(3557); - ((DropResourceContext)_localctx).name = identifierOrText(); - } - break; - case 3: - _localctx = new DropRowPolicyContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3558); - match(DROP); - setState(3559); - match(ROW); - setState(3560); - match(POLICY); - setState(3563); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3561); - match(IF); - setState(3562); - match(EXISTS); - } - } - - setState(3565); - ((DropRowPolicyContext)_localctx).policyName = identifier(); - setState(3566); - match(ON); - setState(3567); - ((DropRowPolicyContext)_localctx).tableName = multipartIdentifier(); - setState(3574); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(3568); - match(FOR); - setState(3572); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(3569); - userIdentify(); - } - break; - case ROLE: - { - setState(3570); - match(ROLE); - setState(3571); - ((DropRowPolicyContext)_localctx).roleName = identifier(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - } - break; - case 4: - _localctx = new DropStageContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3576); - match(DROP); - setState(3577); - match(STAGE); - setState(3580); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3578); - match(IF); - setState(3579); - match(EXISTS); - } - } - - setState(3582); - ((DropStageContext)_localctx).name = identifier(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedStatsStatementContext extends ParserRuleContext { - public SupportedStatsStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedStatsStatement; } - - public SupportedStatsStatementContext() { } - public void copyFrom(SupportedStatsStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowAnalyzeContext extends SupportedStatsStatementContext { - public Token jobId; - public MultipartIdentifierContext tableName; - public IdentifierContext stateKey; - public Token stateValue; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowAnalyzeContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAnalyze(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAnalyze(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AnalyzeDatabaseContext extends SupportedStatsStatementContext { - public MultipartIdentifierContext name; - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List WITH() { return getTokens(DorisParser.WITH); } - public TerminalNode WITH(int i) { - return getToken(DorisParser.WITH, i); - } - public List analyzeProperties() { - return getRuleContexts(AnalyzePropertiesContext.class); - } - public AnalyzePropertiesContext analyzeProperties(int i) { - return getRuleContext(AnalyzePropertiesContext.class,i); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public AnalyzeDatabaseContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAnalyzeDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAnalyzeDatabase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowQueuedAnalyzeJobsContext extends SupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierContext stateKey; - public Token stateValue; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode QUEUED() { return getToken(DorisParser.QUEUED, 0); } - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode JOBS() { return getToken(DorisParser.JOBS, 0); } - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ShowQueuedAnalyzeJobsContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowQueuedAnalyzeJobs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowQueuedAnalyzeJobs(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AnalyzeTableContext extends SupportedStatsStatementContext { - public MultipartIdentifierContext name; - public IdentifierListContext columns; - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public List WITH() { return getTokens(DorisParser.WITH); } - public TerminalNode WITH(int i) { - return getToken(DorisParser.WITH, i); - } - public List analyzeProperties() { - return getRuleContexts(AnalyzePropertiesContext.class); - } - public AnalyzePropertiesContext analyzeProperties(int i) { - return getRuleContext(AnalyzePropertiesContext.class,i); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public AnalyzeTableContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAnalyzeTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAnalyzeTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowColumnHistogramStatsContext extends SupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierListContext columnList; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public TerminalNode HISTOGRAM() { return getToken(DorisParser.HISTOGRAM, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ShowColumnHistogramStatsContext(SupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowColumnHistogramStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowColumnHistogramStats(this); - } - } - - public final SupportedStatsStatementContext supportedStatsStatement() throws RecognitionException { - SupportedStatsStatementContext _localctx = new SupportedStatsStatementContext(_ctx, getState()); - enterRule(_localctx, 108, RULE_supportedStatsStatement); - int _la; - try { - setState(3653); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,504,_ctx) ) { - case 1: - _localctx = new ShowAnalyzeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3585); - match(SHOW); - setState(3587); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AUTO) { - { - setState(3586); - match(AUTO); - } - } - - setState(3589); - match(ANALYZE); - setState(3592); - _errHandler.sync(this); - switch (_input.LA(1)) { - case INTEGER_VALUE: - { - setState(3590); - ((ShowAnalyzeContext)_localctx).jobId = match(INTEGER_VALUE); - } - break; - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(3591); - ((ShowAnalyzeContext)_localctx).tableName = multipartIdentifier(); - } - break; - case EOF: - case SEMICOLON: - case WHERE: - break; - default: - break; - } - setState(3599); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(3594); - match(WHERE); - { - setState(3595); - ((ShowAnalyzeContext)_localctx).stateKey = identifier(); - } - setState(3596); - match(EQ); - { - setState(3597); - ((ShowAnalyzeContext)_localctx).stateValue = match(STRING_LITERAL); - } - } - } - - } - break; - case 2: - _localctx = new ShowQueuedAnalyzeJobsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3601); - match(SHOW); - setState(3602); - match(QUEUED); - setState(3603); - match(ANALYZE); - setState(3604); - match(JOBS); - setState(3606); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(3605); - ((ShowQueuedAnalyzeJobsContext)_localctx).tableName = multipartIdentifier(); - } - } - - setState(3613); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(3608); - match(WHERE); - { - setState(3609); - ((ShowQueuedAnalyzeJobsContext)_localctx).stateKey = identifier(); - } - setState(3610); - match(EQ); - { - setState(3611); - ((ShowQueuedAnalyzeJobsContext)_localctx).stateValue = match(STRING_LITERAL); - } - } - } - - } - break; - case 3: - _localctx = new ShowColumnHistogramStatsContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3615); - match(SHOW); - setState(3616); - match(COLUMN); - setState(3617); - match(HISTOGRAM); - setState(3618); - ((ShowColumnHistogramStatsContext)_localctx).tableName = multipartIdentifier(); - setState(3619); - ((ShowColumnHistogramStatsContext)_localctx).columnList = identifierList(); - } - break; - case 4: - _localctx = new AnalyzeDatabaseContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3621); - match(ANALYZE); - setState(3622); - match(DATABASE); - setState(3623); - ((AnalyzeDatabaseContext)_localctx).name = multipartIdentifier(); - setState(3628); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==WITH) { - { - { - setState(3624); - match(WITH); - setState(3625); - analyzeProperties(); - } - } - setState(3630); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(3632); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3631); - propertyClause(); - } - } - - } - break; - case 5: - _localctx = new AnalyzeTableContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3634); - match(ANALYZE); - setState(3635); - match(TABLE); - setState(3636); - ((AnalyzeTableContext)_localctx).name = multipartIdentifier(); - setState(3638); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3637); - partitionSpec(); - } - } - - setState(3641); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(3640); - ((AnalyzeTableContext)_localctx).columns = identifierList(); - } - } - - setState(3647); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==WITH) { - { - { - setState(3643); - match(WITH); - setState(3644); - analyzeProperties(); - } - } - setState(3649); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(3651); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3650); - propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedStatsStatementContext extends ParserRuleContext { - public UnsupportedStatsStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedStatsStatement; } - - public UnsupportedStatsStatementContext() { } - public void copyFrom(UnsupportedStatsStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class KillAnalyzeJobContext extends UnsupportedStatsStatementContext { - public Token jobId; - public TerminalNode KILL() { return getToken(DorisParser.KILL, 0); } - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public KillAnalyzeJobContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterKillAnalyzeJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitKillAnalyzeJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowTableStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierListContext columnList; - public Token tableId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowTableStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowTableStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowTableStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropAanalyzeJobContext extends UnsupportedStatsStatementContext { - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public DropAanalyzeJobContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropAanalyzeJob(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropAanalyzeJob(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowColumnStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierListContext columnList; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode CACHED() { return getToken(DorisParser.CACHED, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ShowColumnStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowColumnStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowColumnStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterColumnStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext name; - public IdentifierContext indexName; - public IdentifierContext columnName; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode COLUMN() { return getToken(DorisParser.COLUMN, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public AlterColumnStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterColumnStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterColumnStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropExpiredStatsContext extends UnsupportedStatsStatementContext { - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode EXPIRED() { return getToken(DorisParser.EXPIRED, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public DropExpiredStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropExpiredStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropExpiredStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowAnalyzeTaskContext extends UnsupportedStatsStatementContext { - public Token jobId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode ANALYZE() { return getToken(DorisParser.ANALYZE, 0); } - public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public ShowAnalyzeTaskContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowAnalyzeTask(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowAnalyzeTask(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowIndexStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierContext indexId; - public TerminalNode SHOW() { return getToken(DorisParser.SHOW, 0); } - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ShowIndexStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterShowIndexStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitShowIndexStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AlterTableStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext name; - public TerminalNode ALTER() { return getToken(DorisParser.ALTER, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public AlterTableStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAlterTableStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAlterTableStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public IdentifierListContext columns; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public DropStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropStats(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DropCachedStatsContext extends UnsupportedStatsStatementContext { - public MultipartIdentifierContext tableName; - public TerminalNode DROP() { return getToken(DorisParser.DROP, 0); } - public TerminalNode CACHED() { return getToken(DorisParser.CACHED, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public DropCachedStatsContext(UnsupportedStatsStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDropCachedStats(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDropCachedStats(this); - } - } - - public final UnsupportedStatsStatementContext unsupportedStatsStatement() throws RecognitionException { - UnsupportedStatsStatementContext _localctx = new UnsupportedStatsStatementContext(_ctx, getState()); - enterRule(_localctx, 110, RULE_unsupportedStatsStatement); - int _la; - try { - setState(3745); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,515,_ctx) ) { - case 1: - _localctx = new AlterTableStatsContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3655); - match(ALTER); - setState(3656); - match(TABLE); - setState(3657); - ((AlterTableStatsContext)_localctx).name = multipartIdentifier(); - setState(3658); - match(SET); - setState(3659); - match(STATS); - setState(3660); - match(LEFT_PAREN); - setState(3661); - propertyItemList(); - setState(3662); - match(RIGHT_PAREN); - setState(3664); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3663); - partitionSpec(); - } - } - - } - break; - case 2: - _localctx = new AlterColumnStatsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3666); - match(ALTER); - setState(3667); - match(TABLE); - setState(3668); - ((AlterColumnStatsContext)_localctx).name = multipartIdentifier(); - setState(3671); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INDEX) { - { - setState(3669); - match(INDEX); - setState(3670); - ((AlterColumnStatsContext)_localctx).indexName = identifier(); - } - } - - setState(3673); - match(MODIFY); - setState(3674); - match(COLUMN); - setState(3675); - ((AlterColumnStatsContext)_localctx).columnName = identifier(); - setState(3676); - match(SET); - setState(3677); - match(STATS); - setState(3678); - match(LEFT_PAREN); - setState(3679); - propertyItemList(); - setState(3680); - match(RIGHT_PAREN); - setState(3682); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3681); - partitionSpec(); - } - } - - } - break; - case 3: - _localctx = new DropStatsContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3684); - match(DROP); - setState(3685); - match(STATS); - setState(3686); - ((DropStatsContext)_localctx).tableName = multipartIdentifier(); - setState(3688); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(3687); - ((DropStatsContext)_localctx).columns = identifierList(); - } - } - - setState(3691); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3690); - partitionSpec(); - } - } - - } - break; - case 4: - _localctx = new DropCachedStatsContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3693); - match(DROP); - setState(3694); - match(CACHED); - setState(3695); - match(STATS); - setState(3696); - ((DropCachedStatsContext)_localctx).tableName = multipartIdentifier(); - } - break; - case 5: - _localctx = new DropExpiredStatsContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3697); - match(DROP); - setState(3698); - match(EXPIRED); - setState(3699); - match(STATS); - } - break; - case 6: - _localctx = new DropAanalyzeJobContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(3700); - match(DROP); - setState(3701); - match(ANALYZE); - setState(3702); - match(JOB); - setState(3703); - match(INTEGER_VALUE); - } - break; - case 7: - _localctx = new KillAnalyzeJobContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(3704); - match(KILL); - setState(3705); - match(ANALYZE); - setState(3706); - ((KillAnalyzeJobContext)_localctx).jobId = match(INTEGER_VALUE); - } - break; - case 8: - _localctx = new ShowTableStatsContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(3707); - match(SHOW); - setState(3708); - match(TABLE); - setState(3709); - match(STATS); - setState(3710); - ((ShowTableStatsContext)_localctx).tableName = multipartIdentifier(); - setState(3712); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3711); - partitionSpec(); - } - } - - setState(3715); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(3714); - ((ShowTableStatsContext)_localctx).columnList = identifierList(); - } - } - - } - break; - case 9: - _localctx = new ShowTableStatsContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(3717); - match(SHOW); - setState(3718); - match(TABLE); - setState(3719); - match(STATS); - setState(3720); - ((ShowTableStatsContext)_localctx).tableId = match(INTEGER_VALUE); - } - break; - case 10: - _localctx = new ShowIndexStatsContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(3721); - match(SHOW); - setState(3722); - match(INDEX); - setState(3723); - match(STATS); - setState(3724); - ((ShowIndexStatsContext)_localctx).tableName = multipartIdentifier(); - setState(3725); - ((ShowIndexStatsContext)_localctx).indexId = identifier(); - } - break; - case 11: - _localctx = new ShowColumnStatsContext(_localctx); - enterOuterAlt(_localctx, 11); - { - setState(3727); - match(SHOW); - setState(3728); - match(COLUMN); - setState(3730); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CACHED) { - { - setState(3729); - match(CACHED); - } - } - - setState(3732); - match(STATS); - setState(3733); - ((ShowColumnStatsContext)_localctx).tableName = multipartIdentifier(); - setState(3735); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(3734); - ((ShowColumnStatsContext)_localctx).columnList = identifierList(); - } - } - - setState(3738); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(3737); - partitionSpec(); - } - } - - } - break; - case 12: - _localctx = new ShowAnalyzeTaskContext(_localctx); - enterOuterAlt(_localctx, 12); - { - setState(3740); - match(SHOW); - setState(3741); - match(ANALYZE); - setState(3742); - match(TASK); - setState(3743); - match(STATUS); - setState(3744); - ((ShowAnalyzeTaskContext)_localctx).jobId = match(INTEGER_VALUE); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AnalyzePropertiesContext extends ParserRuleContext { - public Token rows; - public Token percent; - public Token bucket; - public Token periodInSecond; - public Token crontabExpr; - public TerminalNode SYNC() { return getToken(DorisParser.SYNC, 0); } - public TerminalNode INCREMENTAL() { return getToken(DorisParser.INCREMENTAL, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public TerminalNode SQL() { return getToken(DorisParser.SQL, 0); } - public TerminalNode HISTOGRAM() { return getToken(DorisParser.HISTOGRAM, 0); } - public TerminalNode SAMPLE() { return getToken(DorisParser.SAMPLE, 0); } - public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } - public TerminalNode PERCENT() { return getToken(DorisParser.PERCENT, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } - public TerminalNode PERIOD() { return getToken(DorisParser.PERIOD, 0); } - public TerminalNode CRON() { return getToken(DorisParser.CRON, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public AnalyzePropertiesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_analyzeProperties; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAnalyzeProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAnalyzeProperties(this); - } - } - - public final AnalyzePropertiesContext analyzeProperties() throws RecognitionException { - AnalyzePropertiesContext _localctx = new AnalyzePropertiesContext(_ctx, getState()); - enterRule(_localctx, 112, RULE_analyzeProperties); - try { - setState(3765); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SYNC: - enterOuterAlt(_localctx, 1); - { - setState(3747); - match(SYNC); - } - break; - case INCREMENTAL: - enterOuterAlt(_localctx, 2); - { - setState(3748); - match(INCREMENTAL); - } - break; - case FULL: - enterOuterAlt(_localctx, 3); - { - setState(3749); - match(FULL); - } - break; - case SQL: - enterOuterAlt(_localctx, 4); - { - setState(3750); - match(SQL); - } - break; - case HISTOGRAM: - enterOuterAlt(_localctx, 5); - { - setState(3751); - match(HISTOGRAM); - } - break; - case SAMPLE: - enterOuterAlt(_localctx, 6); - { - { - setState(3752); - match(SAMPLE); - setState(3757); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ROWS: - { - { - setState(3753); - match(ROWS); - setState(3754); - ((AnalyzePropertiesContext)_localctx).rows = match(INTEGER_VALUE); - } - } - break; - case PERCENT: - { - { - setState(3755); - match(PERCENT); - setState(3756); - ((AnalyzePropertiesContext)_localctx).percent = match(INTEGER_VALUE); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - } - break; - case BUCKETS: - enterOuterAlt(_localctx, 7); - { - { - setState(3759); - match(BUCKETS); - setState(3760); - ((AnalyzePropertiesContext)_localctx).bucket = match(INTEGER_VALUE); - } - } - break; - case PERIOD: - enterOuterAlt(_localctx, 8); - { - { - setState(3761); - match(PERIOD); - setState(3762); - ((AnalyzePropertiesContext)_localctx).periodInSecond = match(INTEGER_VALUE); - } - } - break; - case CRON: - enterOuterAlt(_localctx, 9); - { - { - setState(3763); - match(CRON); - setState(3764); - ((AnalyzePropertiesContext)_localctx).crontabExpr = match(STRING_LITERAL); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedCreateStatementContext extends ParserRuleContext { - public UnsupportedCreateStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedCreateStatement; } - - public UnsupportedCreateStatementContext() { } - public void copyFrom(UnsupportedCreateStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateRepositoryContext extends UnsupportedCreateStatementContext { - public IdentifierContext name; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public StorageBackendContext storageBackend() { - return getRuleContext(StorageBackendContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode READ() { return getToken(DorisParser.READ, 0); } - public TerminalNode ONLY() { return getToken(DorisParser.ONLY, 0); } - public CreateRepositoryContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateRepository(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateRepository(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateDatabaseContext extends UnsupportedCreateStatementContext { - public MultipartIdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateDatabaseContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateDatabase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateStorageVaultContext extends UnsupportedCreateStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateStorageVaultContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateStorageVault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateStorageVault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateWorkloadPolicyContext extends UnsupportedCreateStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode WORKLOAD() { return getToken(DorisParser.WORKLOAD, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode CONDITIONS() { return getToken(DorisParser.CONDITIONS, 0); } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public WorkloadPolicyConditionsContext workloadPolicyConditions() { - return getRuleContext(WorkloadPolicyConditionsContext.class,0); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public TerminalNode ACTIONS() { return getToken(DorisParser.ACTIONS, 0); } - public WorkloadPolicyActionsContext workloadPolicyActions() { - return getRuleContext(WorkloadPolicyActionsContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateWorkloadPolicyContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateWorkloadPolicy(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateWorkloadPolicy(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateResourceContext extends UnsupportedCreateStatementContext { - public IdentifierOrTextContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateResourceContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateResource(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateResource(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateStageContext extends UnsupportedCreateStatementContext { - public IdentifierContext name; - public PropertyClauseContext properties; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public CreateStageContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateStage(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateStage(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CreateUserContext extends UnsupportedCreateStatementContext { - public Token role; - public TerminalNode CREATE() { return getToken(DorisParser.CREATE, 0); } - public TerminalNode USER() { return getToken(DorisParser.USER, 0); } - public GrantUserIdentifyContext grantUserIdentify() { - return getRuleContext(GrantUserIdentifyContext.class,0); - } - public PasswordOptionContext passwordOption() { - return getRuleContext(PasswordOptionContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode SUPERUSER() { return getToken(DorisParser.SUPERUSER, 0); } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public TerminalNode ROLE() { return getToken(DorisParser.ROLE, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public CreateUserContext(UnsupportedCreateStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCreateUser(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCreateUser(this); - } - } - - public final UnsupportedCreateStatementContext unsupportedCreateStatement() throws RecognitionException { - UnsupportedCreateStatementContext _localctx = new UnsupportedCreateStatementContext(_ctx, getState()); - enterRule(_localctx, 114, RULE_unsupportedCreateStatement); - int _la; - try { - setState(3870); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,535,_ctx) ) { - case 1: - _localctx = new CreateDatabaseContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3767); - match(CREATE); - setState(3768); - _la = _input.LA(1); - if ( !(_la==DATABASE || _la==SCHEMA) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(3772); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3769); - match(IF); - setState(3770); - match(NOT); - setState(3771); - match(EXISTS); - } - } - - setState(3774); - ((CreateDatabaseContext)_localctx).name = multipartIdentifier(); - setState(3776); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3775); - ((CreateDatabaseContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 2: - _localctx = new CreateUserContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3778); - match(CREATE); - setState(3779); - match(USER); - setState(3783); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3780); - match(IF); - setState(3781); - match(NOT); - setState(3782); - match(EXISTS); - } - } - - setState(3785); - grantUserIdentify(); - setState(3790); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SUPERUSER: - { - setState(3786); - match(SUPERUSER); - } - break; - case DEFAULT: - { - setState(3787); - match(DEFAULT); - setState(3788); - match(ROLE); - setState(3789); - ((CreateUserContext)_localctx).role = match(STRING_LITERAL); - } - break; - case EOF: - case SEMICOLON: - case ACCOUNT_LOCK: - case ACCOUNT_UNLOCK: - case COMMENT: - case FAILED_LOGIN_ATTEMPTS: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - break; - default: - break; - } - setState(3792); - passwordOption(); - setState(3795); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(3793); - match(COMMENT); - setState(3794); - match(STRING_LITERAL); - } - } - - } - break; - case 3: - _localctx = new CreateRepositoryContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3797); - match(CREATE); - setState(3800); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==READ) { - { - setState(3798); - match(READ); - setState(3799); - match(ONLY); - } - } - - setState(3802); - match(REPOSITORY); - setState(3803); - ((CreateRepositoryContext)_localctx).name = identifier(); - setState(3804); - match(WITH); - setState(3805); - storageBackend(); - } - break; - case 4: - _localctx = new CreateResourceContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3807); - match(CREATE); - setState(3809); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EXTERNAL) { - { - setState(3808); - match(EXTERNAL); - } - } - - setState(3811); - match(RESOURCE); - setState(3815); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3812); - match(IF); - setState(3813); - match(NOT); - setState(3814); - match(EXISTS); - } - } - - setState(3817); - ((CreateResourceContext)_localctx).name = identifierOrText(); - setState(3819); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3818); - ((CreateResourceContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 5: - _localctx = new CreateStorageVaultContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(3821); - match(CREATE); - setState(3822); - match(STORAGE); - setState(3823); - match(VAULT); - setState(3827); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3824); - match(IF); - setState(3825); - match(NOT); - setState(3826); - match(EXISTS); - } - } - - setState(3829); - ((CreateStorageVaultContext)_localctx).name = identifierOrText(); - setState(3831); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3830); - ((CreateStorageVaultContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 6: - _localctx = new CreateWorkloadPolicyContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(3833); - match(CREATE); - setState(3834); - match(WORKLOAD); - setState(3835); - match(POLICY); - setState(3839); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3836); - match(IF); - setState(3837); - match(NOT); - setState(3838); - match(EXISTS); - } - } - - setState(3841); - ((CreateWorkloadPolicyContext)_localctx).name = identifierOrText(); - setState(3847); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CONDITIONS) { - { - setState(3842); - match(CONDITIONS); - setState(3843); - match(LEFT_PAREN); - setState(3844); - workloadPolicyConditions(); - setState(3845); - match(RIGHT_PAREN); - } - } - - setState(3854); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ACTIONS) { - { - setState(3849); - match(ACTIONS); - setState(3850); - match(LEFT_PAREN); - setState(3851); - workloadPolicyActions(); - setState(3852); - match(RIGHT_PAREN); - } - } - - setState(3857); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3856); - ((CreateWorkloadPolicyContext)_localctx).properties = propertyClause(); - } - } - - } - break; - case 7: - _localctx = new CreateStageContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(3859); - match(CREATE); - setState(3860); - match(STAGE); - setState(3864); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(3861); - match(IF); - setState(3862); - match(NOT); - setState(3863); - match(EXISTS); - } - } - - setState(3866); - ((CreateStageContext)_localctx).name = identifier(); - setState(3868); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3867); - ((CreateStageContext)_localctx).properties = propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WorkloadPolicyActionsContext extends ParserRuleContext { - public List workloadPolicyAction() { - return getRuleContexts(WorkloadPolicyActionContext.class); - } - public WorkloadPolicyActionContext workloadPolicyAction(int i) { - return getRuleContext(WorkloadPolicyActionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public WorkloadPolicyActionsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_workloadPolicyActions; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyActions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyActions(this); - } - } - - public final WorkloadPolicyActionsContext workloadPolicyActions() throws RecognitionException { - WorkloadPolicyActionsContext _localctx = new WorkloadPolicyActionsContext(_ctx, getState()); - enterRule(_localctx, 116, RULE_workloadPolicyActions); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3872); - workloadPolicyAction(); - setState(3877); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3873); - match(COMMA); - setState(3874); - workloadPolicyAction(); - } - } - setState(3879); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WorkloadPolicyActionContext extends ParserRuleContext { - public TerminalNode SET_SESSION_VARIABLE() { return getToken(DorisParser.SET_SESSION_VARIABLE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public WorkloadPolicyActionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_workloadPolicyAction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyAction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyAction(this); - } - } - - public final WorkloadPolicyActionContext workloadPolicyAction() throws RecognitionException { - WorkloadPolicyActionContext _localctx = new WorkloadPolicyActionContext(_ctx, getState()); - enterRule(_localctx, 118, RULE_workloadPolicyAction); - int _la; - try { - setState(3886); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,538,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(3880); - match(SET_SESSION_VARIABLE); - setState(3881); - match(STRING_LITERAL); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(3882); - identifier(); - setState(3884); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STRING_LITERAL) { - { - setState(3883); - match(STRING_LITERAL); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WorkloadPolicyConditionsContext extends ParserRuleContext { - public List workloadPolicyCondition() { - return getRuleContexts(WorkloadPolicyConditionContext.class); - } - public WorkloadPolicyConditionContext workloadPolicyCondition(int i) { - return getRuleContext(WorkloadPolicyConditionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public WorkloadPolicyConditionsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_workloadPolicyConditions; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyConditions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyConditions(this); - } - } - - public final WorkloadPolicyConditionsContext workloadPolicyConditions() throws RecognitionException { - WorkloadPolicyConditionsContext _localctx = new WorkloadPolicyConditionsContext(_ctx, getState()); - enterRule(_localctx, 120, RULE_workloadPolicyConditions); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3888); - workloadPolicyCondition(); - setState(3893); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3889); - match(COMMA); - setState(3890); - workloadPolicyCondition(); - } - } - setState(3895); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WorkloadPolicyConditionContext extends ParserRuleContext { - public IdentifierContext metricName; - public ComparisonOperatorContext comparisonOperator() { - return getRuleContext(ComparisonOperatorContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public NumberContext number() { - return getRuleContext(NumberContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public WorkloadPolicyConditionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_workloadPolicyCondition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWorkloadPolicyCondition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWorkloadPolicyCondition(this); - } - } - - public final WorkloadPolicyConditionContext workloadPolicyCondition() throws RecognitionException { - WorkloadPolicyConditionContext _localctx = new WorkloadPolicyConditionContext(_ctx, getState()); - enterRule(_localctx, 122, RULE_workloadPolicyCondition); - try { - enterOuterAlt(_localctx, 1); - { - setState(3896); - ((WorkloadPolicyConditionContext)_localctx).metricName = identifier(); - setState(3897); - comparisonOperator(); - setState(3900); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SUBTRACT: - case INTEGER_VALUE: - case EXPONENT_VALUE: - case DECIMAL_VALUE: - { - setState(3898); - number(); - } - break; - case STRING_LITERAL: - { - setState(3899); - match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StorageBackendContext extends ParserRuleContext { - public IdentifierContext brokerName; - public PropertyClauseContext properties; - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode LOCATION() { return getToken(DorisParser.LOCATION, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public TerminalNode S3() { return getToken(DorisParser.S3, 0); } - public TerminalNode HDFS() { return getToken(DorisParser.HDFS, 0); } - public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public StorageBackendContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_storageBackend; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStorageBackend(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStorageBackend(this); - } - } - - public final StorageBackendContext storageBackend() throws RecognitionException { - StorageBackendContext _localctx = new StorageBackendContext(_ctx, getState()); - enterRule(_localctx, 124, RULE_storageBackend); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3902); - _la = _input.LA(1); - if ( !(_la==BROKER || _la==HDFS || _la==LOCAL || _la==S3) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(3904); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(3903); - ((StorageBackendContext)_localctx).brokerName = identifier(); - } - } - - setState(3906); - match(ON); - setState(3907); - match(LOCATION); - setState(3908); - match(STRING_LITERAL); - setState(3910); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(3909); - ((StorageBackendContext)_localctx).properties = propertyClause(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PasswordOptionContext extends ParserRuleContext { - public Token historyDefault; - public Token historyValue; - public Token expireDefault; - public Token expireNever; - public Token expireValue; - public Token expireTimeUnit; - public Token reuseDefault; - public Token reuseValue; - public Token attemptsValue; - public Token lockUnbounded; - public Token lockValue; - public Token lockTimeUint; - public TerminalNode PASSWORD_HISTORY() { return getToken(DorisParser.PASSWORD_HISTORY, 0); } - public TerminalNode PASSWORD_EXPIRE() { return getToken(DorisParser.PASSWORD_EXPIRE, 0); } - public TerminalNode PASSWORD_REUSE() { return getToken(DorisParser.PASSWORD_REUSE, 0); } - public List INTERVAL() { return getTokens(DorisParser.INTERVAL); } - public TerminalNode INTERVAL(int i) { - return getToken(DorisParser.INTERVAL, i); - } - public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(DorisParser.FAILED_LOGIN_ATTEMPTS, 0); } - public TerminalNode PASSWORD_LOCK_TIME() { return getToken(DorisParser.PASSWORD_LOCK_TIME, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public TerminalNode ACCOUNT_LOCK() { return getToken(DorisParser.ACCOUNT_LOCK, 0); } - public TerminalNode ACCOUNT_UNLOCK() { return getToken(DorisParser.ACCOUNT_UNLOCK, 0); } - public List DAY() { return getTokens(DorisParser.DAY); } - public TerminalNode DAY(int i) { - return getToken(DorisParser.DAY, i); - } - public List DEFAULT() { return getTokens(DorisParser.DEFAULT); } - public TerminalNode DEFAULT(int i) { - return getToken(DorisParser.DEFAULT, i); - } - public TerminalNode NEVER() { return getToken(DorisParser.NEVER, 0); } - public TerminalNode UNBOUNDED() { return getToken(DorisParser.UNBOUNDED, 0); } - public List HOUR() { return getTokens(DorisParser.HOUR); } - public TerminalNode HOUR(int i) { - return getToken(DorisParser.HOUR, i); - } - public List SECOND() { return getTokens(DorisParser.SECOND); } - public TerminalNode SECOND(int i) { - return getToken(DorisParser.SECOND, i); - } - public PasswordOptionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_passwordOption; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPasswordOption(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPasswordOption(this); - } - } - - public final PasswordOptionContext passwordOption() throws RecognitionException { - PasswordOptionContext _localctx = new PasswordOptionContext(_ctx, getState()); - enterRule(_localctx, 126, RULE_passwordOption); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(3917); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PASSWORD_HISTORY) { - { - setState(3912); - match(PASSWORD_HISTORY); - setState(3915); - _errHandler.sync(this); - switch (_input.LA(1)) { - case DEFAULT: - { - setState(3913); - ((PasswordOptionContext)_localctx).historyDefault = match(DEFAULT); - } - break; - case INTEGER_VALUE: - { - setState(3914); - ((PasswordOptionContext)_localctx).historyValue = match(INTEGER_VALUE); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - setState(3927); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PASSWORD_EXPIRE) { - { - setState(3919); - match(PASSWORD_EXPIRE); - setState(3925); - _errHandler.sync(this); - switch (_input.LA(1)) { - case DEFAULT: - { - setState(3920); - ((PasswordOptionContext)_localctx).expireDefault = match(DEFAULT); - } - break; - case NEVER: - { - setState(3921); - ((PasswordOptionContext)_localctx).expireNever = match(NEVER); - } - break; - case INTERVAL: - { - setState(3922); - match(INTERVAL); - setState(3923); - ((PasswordOptionContext)_localctx).expireValue = match(INTEGER_VALUE); - setState(3924); - ((PasswordOptionContext)_localctx).expireTimeUnit = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==DAY || _la==HOUR || _la==SECOND) ) { - ((PasswordOptionContext)_localctx).expireTimeUnit = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - setState(3936); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PASSWORD_REUSE) { - { - setState(3929); - match(PASSWORD_REUSE); - setState(3930); - match(INTERVAL); - setState(3934); - _errHandler.sync(this); - switch (_input.LA(1)) { - case DEFAULT: - { - setState(3931); - ((PasswordOptionContext)_localctx).reuseDefault = match(DEFAULT); - } - break; - case INTEGER_VALUE: - { - setState(3932); - ((PasswordOptionContext)_localctx).reuseValue = match(INTEGER_VALUE); - setState(3933); - match(DAY); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - setState(3940); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FAILED_LOGIN_ATTEMPTS) { - { - setState(3938); - match(FAILED_LOGIN_ATTEMPTS); - setState(3939); - ((PasswordOptionContext)_localctx).attemptsValue = match(INTEGER_VALUE); - } - } - - setState(3948); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PASSWORD_LOCK_TIME) { - { - setState(3942); - match(PASSWORD_LOCK_TIME); - setState(3946); - _errHandler.sync(this); - switch (_input.LA(1)) { - case UNBOUNDED: - { - setState(3943); - ((PasswordOptionContext)_localctx).lockUnbounded = match(UNBOUNDED); - } - break; - case INTEGER_VALUE: - { - setState(3944); - ((PasswordOptionContext)_localctx).lockValue = match(INTEGER_VALUE); - setState(3945); - ((PasswordOptionContext)_localctx).lockTimeUint = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==DAY || _la==HOUR || _la==SECOND) ) { - ((PasswordOptionContext)_localctx).lockTimeUint = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - setState(3951); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ACCOUNT_LOCK || _la==ACCOUNT_UNLOCK) { - { - setState(3950); - _la = _input.LA(1); - if ( !(_la==ACCOUNT_LOCK || _la==ACCOUNT_UNLOCK) ) { - _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 FunctionArgumentsContext extends ParserRuleContext { - public TerminalNode DOTDOTDOT() { return getToken(DorisParser.DOTDOTDOT, 0); } - public DataTypeListContext dataTypeList() { - return getRuleContext(DataTypeListContext.class,0); - } - public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } - public FunctionArgumentsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionArguments; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionArguments(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionArguments(this); - } - } - - public final FunctionArgumentsContext functionArguments() throws RecognitionException { - FunctionArgumentsContext _localctx = new FunctionArgumentsContext(_ctx, getState()); - enterRule(_localctx, 128, RULE_functionArguments); - try { - setState(3959); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,553,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(3953); - match(DOTDOTDOT); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(3954); - dataTypeList(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(3955); - dataTypeList(); - setState(3956); - match(COMMA); - setState(3957); - match(DOTDOTDOT); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DataTypeListContext extends ParserRuleContext { - public List dataType() { - return getRuleContexts(DataTypeContext.class); - } - public DataTypeContext dataType(int i) { - return getRuleContext(DataTypeContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public DataTypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dataTypeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDataTypeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDataTypeList(this); - } - } - - public final DataTypeListContext dataTypeList() throws RecognitionException { - DataTypeListContext _localctx = new DataTypeListContext(_ctx, getState()); - enterRule(_localctx, 130, RULE_dataTypeList); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(3961); - dataType(); - setState(3966); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,554,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(3962); - match(COMMA); - setState(3963); - dataType(); - } - } - } - setState(3968); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,554,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedSetStatementContext extends ParserRuleContext { - public SupportedSetStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedSetStatement; } - - public SupportedSetStatementContext() { } - public void copyFrom(SupportedSetStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetTransactionContext extends SupportedSetStatementContext { - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } - public TransactionAccessModeContext transactionAccessMode() { - return getRuleContext(TransactionAccessModeContext.class,0); - } - public IsolationLevelContext isolationLevel() { - return getRuleContext(IsolationLevelContext.class,0); - } - public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public SetTransactionContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetTransaction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetTransaction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetUserPropertiesContext extends SupportedSetStatementContext { - public IdentifierOrTextContext user; - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode PROPERTY() { return getToken(DorisParser.PROPERTY, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public SetUserPropertiesContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetUserProperties(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetUserProperties(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetDefaultStorageVaultContext extends SupportedSetStatementContext { - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public SetDefaultStorageVaultContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetDefaultStorageVault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetDefaultStorageVault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetOptionsContext extends SupportedSetStatementContext { - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public List optionWithType() { - return getRuleContexts(OptionWithTypeContext.class); - } - public OptionWithTypeContext optionWithType(int i) { - return getRuleContext(OptionWithTypeContext.class,i); - } - public List optionWithoutType() { - return getRuleContexts(OptionWithoutTypeContext.class); - } - public OptionWithoutTypeContext optionWithoutType(int i) { - return getRuleContext(OptionWithoutTypeContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public SetOptionsContext(SupportedSetStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetOptions(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetOptions(this); - } - } - - public final SupportedSetStatementContext supportedSetStatement() throws RecognitionException { - SupportedSetStatementContext _localctx = new SupportedSetStatementContext(_ctx, getState()); - enterRule(_localctx, 132, RULE_supportedSetStatement); - int _la; - try { - setState(4015); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,561,_ctx) ) { - case 1: - _localctx = new SetOptionsContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(3969); - match(SET); - setState(3972); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,555,_ctx) ) { - case 1: - { - setState(3970); - optionWithType(); - } - break; - case 2: - { - setState(3971); - optionWithoutType(); - } - break; - } - setState(3981); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(3974); - match(COMMA); - setState(3977); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) { - case 1: - { - setState(3975); - optionWithType(); - } - break; - case 2: - { - setState(3976); - optionWithoutType(); - } - break; - } - } - } - setState(3983); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - break; - case 2: - _localctx = new SetDefaultStorageVaultContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(3984); - match(SET); - setState(3985); - identifier(); - setState(3986); - match(AS); - setState(3987); - match(DEFAULT); - setState(3988); - match(STORAGE); - setState(3989); - match(VAULT); - } - break; - case 3: - _localctx = new SetUserPropertiesContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(3991); - match(SET); - setState(3992); - match(PROPERTY); - setState(3995); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(3993); - match(FOR); - setState(3994); - ((SetUserPropertiesContext)_localctx).user = identifierOrText(); - } - } - - setState(3997); - propertyItemList(); - } - break; - case 4: - _localctx = new SetTransactionContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(3998); - match(SET); - setState(4000); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(3999); - statementScope(); - } - } - - setState(4002); - match(TRANSACTION); - setState(4013); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,560,_ctx) ) { - case 1: - { - setState(4003); - transactionAccessMode(); - } - break; - case 2: - { - setState(4004); - isolationLevel(); - } - break; - case 3: - { - setState(4005); - transactionAccessMode(); - setState(4006); - match(COMMA); - setState(4007); - isolationLevel(); - } - break; - case 4: - { - setState(4009); - isolationLevel(); - setState(4010); - match(COMMA); - setState(4011); - transactionAccessMode(); - } - break; - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class OptionWithTypeContext extends ParserRuleContext { - public OptionWithTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_optionWithType; } - - public OptionWithTypeContext() { } - public void copyFrom(OptionWithTypeContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetVariableWithTypeContext extends OptionWithTypeContext { - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public SetVariableWithTypeContext(OptionWithTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetVariableWithType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetVariableWithType(this); - } - } - - public final OptionWithTypeContext optionWithType() throws RecognitionException { - OptionWithTypeContext _localctx = new OptionWithTypeContext(_ctx, getState()); - enterRule(_localctx, 134, RULE_optionWithType); - try { - _localctx = new SetVariableWithTypeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4017); - statementScope(); - setState(4018); - identifier(); - setState(4019); - match(EQ); - setState(4022); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_PAREN: - case LEFT_BRACKET: - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case ADD: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BINARY: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CASE: - case CAST: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATABASE: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXISTS: - case EXPIRED: - case EXTERNAL: - case EXTRACT: - case FAILED_LOGIN_ATTEMPTS: - case FALSE: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IF: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INTERVAL: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case KEY: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LEFT: - case LESS: - case LEVEL: - case LIKE: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NOT: - case NULL: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLACEHOLDER: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REGEXP: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RIGHT: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRIM: - case TRUE: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case PLUS: - case SUBTRACT: - case ASTERISK: - case TILDE: - case LOGICALNOT: - case HINT_START: - case HINT_END: - case COMMENT_START: - case ATSIGN: - case DOUBLEATSIGN: - case STRING_LITERAL: - case INTEGER_VALUE: - case EXPONENT_VALUE: - case DECIMAL_VALUE: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4020); - expression(); - } - break; - case DEFAULT: - { - setState(4021); - match(DEFAULT); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class OptionWithoutTypeContext extends ParserRuleContext { - public OptionWithoutTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_optionWithoutType; } - - public OptionWithoutTypeContext() { } - public void copyFrom(OptionWithoutTypeContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetNamesContext extends OptionWithoutTypeContext { - public TerminalNode NAMES() { return getToken(DorisParser.NAMES, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public SetNamesContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetNames(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetNames(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetCharsetContext extends OptionWithoutTypeContext { - public IdentifierOrTextContext charsetName; - public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode CHARSET() { return getToken(DorisParser.CHARSET, 0); } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public SetCharsetContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetCharset(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetCharset(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetCollateContext extends OptionWithoutTypeContext { - public IdentifierOrTextContext charsetName; - public IdentifierOrTextContext collateName; - public TerminalNode NAMES() { return getToken(DorisParser.NAMES, 0); } - public List DEFAULT() { return getTokens(DorisParser.DEFAULT); } - public TerminalNode DEFAULT(int i) { - return getToken(DorisParser.DEFAULT, i); - } - public List identifierOrText() { - return getRuleContexts(IdentifierOrTextContext.class); - } - public IdentifierOrTextContext identifierOrText(int i) { - return getRuleContext(IdentifierOrTextContext.class,i); - } - public TerminalNode COLLATE() { return getToken(DorisParser.COLLATE, 0); } - public SetCollateContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetCollate(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetCollate(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetPasswordContext extends OptionWithoutTypeContext { - public Token pwd; - public Token isPlain; - public List PASSWORD() { return getTokens(DorisParser.PASSWORD); } - public TerminalNode PASSWORD(int i) { - return getToken(DorisParser.PASSWORD, i); - } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public SetPasswordContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetPassword(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetPassword(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetVariableWithoutTypeContext extends OptionWithoutTypeContext { - public VariableContext variable() { - return getRuleContext(VariableContext.class,0); - } - public SetVariableWithoutTypeContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetVariableWithoutType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetVariableWithoutType(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetLdapAdminPasswordContext extends OptionWithoutTypeContext { - public Token pwd; - public TerminalNode LDAP_ADMIN_PASSWORD() { return getToken(DorisParser.LDAP_ADMIN_PASSWORD, 0); } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public SetLdapAdminPasswordContext(OptionWithoutTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetLdapAdminPassword(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetLdapAdminPassword(this); - } - } - - public final OptionWithoutTypeContext optionWithoutType() throws RecognitionException { - OptionWithoutTypeContext _localctx = new OptionWithoutTypeContext(_ctx, getState()); - enterRule(_localctx, 136, RULE_optionWithoutType); - int _la; - try { - setState(4069); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,570,_ctx) ) { - case 1: - _localctx = new SetNamesContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4024); - match(NAMES); - setState(4025); - match(EQ); - setState(4026); - expression(); - } - break; - case 2: - _localctx = new SetCharsetContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4030); - _errHandler.sync(this); - switch (_input.LA(1)) { - case CHAR: - { - setState(4027); - match(CHAR); - setState(4028); - match(SET); - } - break; - case CHARSET: - { - setState(4029); - match(CHARSET); - } - break; - default: - throw new NoViableAltException(this); - } - setState(4034); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4032); - ((SetCharsetContext)_localctx).charsetName = identifierOrText(); - } - break; - case DEFAULT: - { - setState(4033); - match(DEFAULT); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 3: - _localctx = new SetCollateContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(4036); - match(NAMES); - setState(4039); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4037); - ((SetCollateContext)_localctx).charsetName = identifierOrText(); - } - break; - case DEFAULT: - { - setState(4038); - match(DEFAULT); - } - break; - default: - throw new NoViableAltException(this); - } - setState(4044); - _errHandler.sync(this); - switch (_input.LA(1)) { - case COLLATE: - { - setState(4041); - match(COLLATE); - setState(4042); - ((SetCollateContext)_localctx).collateName = identifierOrText(); - } - break; - case DEFAULT: - { - setState(4043); - match(DEFAULT); - } - break; - case EOF: - case SEMICOLON: - case COMMA: - break; - default: - break; - } - } - break; - case 4: - _localctx = new SetPasswordContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(4046); - match(PASSWORD); - setState(4049); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FOR) { - { - setState(4047); - match(FOR); - setState(4048); - userIdentify(); - } - } - - setState(4051); - match(EQ); - setState(4057); - _errHandler.sync(this); - switch (_input.LA(1)) { - case STRING_LITERAL: - { - setState(4052); - ((SetPasswordContext)_localctx).pwd = match(STRING_LITERAL); - } - break; - case PASSWORD: - { - { - setState(4053); - ((SetPasswordContext)_localctx).isPlain = match(PASSWORD); - setState(4054); - match(LEFT_PAREN); - setState(4055); - ((SetPasswordContext)_localctx).pwd = match(STRING_LITERAL); - setState(4056); - match(RIGHT_PAREN); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 5: - _localctx = new SetLdapAdminPasswordContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(4059); - match(LDAP_ADMIN_PASSWORD); - setState(4060); - match(EQ); - setState(4066); - _errHandler.sync(this); - switch (_input.LA(1)) { - case STRING_LITERAL: - { - setState(4061); - ((SetLdapAdminPasswordContext)_localctx).pwd = match(STRING_LITERAL); - } - break; - case PASSWORD: - { - { - setState(4062); - match(PASSWORD); - setState(4063); - match(LEFT_PAREN); - setState(4064); - ((SetLdapAdminPasswordContext)_localctx).pwd = match(STRING_LITERAL); - setState(4065); - match(RIGHT_PAREN); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 6: - _localctx = new SetVariableWithoutTypeContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(4068); - variable(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariableContext extends ParserRuleContext { - public VariableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variable; } - - public VariableContext() { } - public void copyFrom(VariableContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetUserVariableContext extends VariableContext { - public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public SetUserVariableContext(VariableContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetUserVariable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetUserVariable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetSystemVariableContext extends VariableContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public TerminalNode DOUBLEATSIGN() { return getToken(DorisParser.DOUBLEATSIGN, 0); } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public SetSystemVariableContext(VariableContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetSystemVariable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetSystemVariable(this); - } - } - - public final VariableContext variable() throws RecognitionException { - VariableContext _localctx = new VariableContext(_ctx, getState()); - enterRule(_localctx, 138, RULE_variable); - int _la; - try { - setState(4090); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case DOUBLEATSIGN: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - _localctx = new SetSystemVariableContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4077); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DOUBLEATSIGN) { - { - setState(4071); - match(DOUBLEATSIGN); - setState(4075); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,571,_ctx) ) { - case 1: - { - setState(4072); - statementScope(); - setState(4073); - match(DOT); - } - break; - } - } - } - - setState(4079); - identifier(); - setState(4080); - match(EQ); - setState(4083); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_PAREN: - case LEFT_BRACKET: - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case ADD: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BINARY: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CASE: - case CAST: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATABASE: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXISTS: - case EXPIRED: - case EXTERNAL: - case EXTRACT: - case FAILED_LOGIN_ATTEMPTS: - case FALSE: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IF: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INTERVAL: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case KEY: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LEFT: - case LESS: - case LEVEL: - case LIKE: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NOT: - case NULL: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLACEHOLDER: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REGEXP: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RIGHT: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRIM: - case TRUE: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case PLUS: - case SUBTRACT: - case ASTERISK: - case TILDE: - case LOGICALNOT: - case HINT_START: - case HINT_END: - case COMMENT_START: - case ATSIGN: - case DOUBLEATSIGN: - case STRING_LITERAL: - case INTEGER_VALUE: - case EXPONENT_VALUE: - case DECIMAL_VALUE: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4081); - expression(); - } - break; - case DEFAULT: - { - setState(4082); - match(DEFAULT); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case ATSIGN: - _localctx = new SetUserVariableContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4085); - match(ATSIGN); - setState(4086); - identifier(); - setState(4087); - match(EQ); - setState(4088); - expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TransactionAccessModeContext extends ParserRuleContext { - public TerminalNode READ() { return getToken(DorisParser.READ, 0); } - public TerminalNode ONLY() { return getToken(DorisParser.ONLY, 0); } - public TerminalNode WRITE() { return getToken(DorisParser.WRITE, 0); } - public TransactionAccessModeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_transactionAccessMode; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTransactionAccessMode(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTransactionAccessMode(this); - } - } - - public final TransactionAccessModeContext transactionAccessMode() throws RecognitionException { - TransactionAccessModeContext _localctx = new TransactionAccessModeContext(_ctx, getState()); - enterRule(_localctx, 140, RULE_transactionAccessMode); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4092); - match(READ); - setState(4093); - _la = _input.LA(1); - if ( !(_la==ONLY || _la==WRITE) ) { - _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 IsolationLevelContext extends ParserRuleContext { - public TerminalNode ISOLATION() { return getToken(DorisParser.ISOLATION, 0); } - public TerminalNode LEVEL() { return getToken(DorisParser.LEVEL, 0); } - public TerminalNode READ() { return getToken(DorisParser.READ, 0); } - public TerminalNode UNCOMMITTED() { return getToken(DorisParser.UNCOMMITTED, 0); } - public TerminalNode COMMITTED() { return getToken(DorisParser.COMMITTED, 0); } - public TerminalNode REPEATABLE() { return getToken(DorisParser.REPEATABLE, 0); } - public TerminalNode SERIALIZABLE() { return getToken(DorisParser.SERIALIZABLE, 0); } - public IsolationLevelContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_isolationLevel; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIsolationLevel(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIsolationLevel(this); - } - } - - public final IsolationLevelContext isolationLevel() throws RecognitionException { - IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState()); - enterRule(_localctx, 142, RULE_isolationLevel); - try { - enterOuterAlt(_localctx, 1); - { - setState(4095); - match(ISOLATION); - setState(4096); - match(LEVEL); - setState(4104); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,575,_ctx) ) { - case 1: - { - { - setState(4097); - match(READ); - setState(4098); - match(UNCOMMITTED); - } - } - break; - case 2: - { - { - setState(4099); - match(READ); - setState(4100); - match(COMMITTED); - } - } - break; - case 3: - { - { - setState(4101); - match(REPEATABLE); - setState(4102); - match(READ); - } - } - break; - case 4: - { - { - setState(4103); - match(SERIALIZABLE); - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedUnsetStatementContext extends ParserRuleContext { - public TerminalNode UNSET() { return getToken(DorisParser.UNSET, 0); } - public TerminalNode VARIABLE() { return getToken(DorisParser.VARIABLE, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public StatementScopeContext statementScope() { - return getRuleContext(StatementScopeContext.class,0); - } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public SupportedUnsetStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedUnsetStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSupportedUnsetStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSupportedUnsetStatement(this); - } - } - - public final SupportedUnsetStatementContext supportedUnsetStatement() throws RecognitionException { - SupportedUnsetStatementContext _localctx = new SupportedUnsetStatementContext(_ctx, getState()); - enterRule(_localctx, 144, RULE_supportedUnsetStatement); - int _la; - try { - setState(4119); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,578,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4106); - match(UNSET); - setState(4108); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GLOBAL || _la==LOCAL || _la==SESSION) { - { - setState(4107); - statementScope(); - } - } - - setState(4110); - match(VARIABLE); - setState(4113); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ALL: - { - setState(4111); - match(ALL); - } - break; - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4112); - identifier(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4115); - match(UNSET); - setState(4116); - match(DEFAULT); - setState(4117); - match(STORAGE); - setState(4118); - match(VAULT); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SupportedUseStatementContext extends ParserRuleContext { - public SupportedUseStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedUseStatement; } - - public SupportedUseStatementContext() { } - public void copyFrom(SupportedUseStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UseDatabaseContext extends SupportedUseStatementContext { - public IdentifierContext catalog; - public IdentifierContext database; - public TerminalNode USE() { return getToken(DorisParser.USE, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public UseDatabaseContext(SupportedUseStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUseDatabase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUseDatabase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SwitchCatalogContext extends SupportedUseStatementContext { - public IdentifierContext catalog; - public TerminalNode SWITCH() { return getToken(DorisParser.SWITCH, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public SwitchCatalogContext(SupportedUseStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSwitchCatalog(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSwitchCatalog(this); - } - } - - public final SupportedUseStatementContext supportedUseStatement() throws RecognitionException { - SupportedUseStatementContext _localctx = new SupportedUseStatementContext(_ctx, getState()); - enterRule(_localctx, 146, RULE_supportedUseStatement); - try { - setState(4130); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SWITCH: - _localctx = new SwitchCatalogContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4121); - match(SWITCH); - setState(4122); - ((SwitchCatalogContext)_localctx).catalog = identifier(); - } - break; - case USE: - _localctx = new UseDatabaseContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4123); - match(USE); - setState(4127); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,579,_ctx) ) { - case 1: - { - setState(4124); - ((UseDatabaseContext)_localctx).catalog = identifier(); - setState(4125); - match(DOT); - } - break; - } - setState(4129); - ((UseDatabaseContext)_localctx).database = identifier(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedUseStatementContext extends ParserRuleContext { - public UnsupportedUseStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedUseStatement; } - - public UnsupportedUseStatementContext() { } - public void copyFrom(UnsupportedUseStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UseCloudClusterContext extends UnsupportedUseStatementContext { - public IdentifierContext catalog; - public IdentifierContext database; - public IdentifierContext cluster; - public TerminalNode USE() { return getToken(DorisParser.USE, 0); } - public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public UseCloudClusterContext(UnsupportedUseStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUseCloudCluster(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUseCloudCluster(this); - } - } - - public final UnsupportedUseStatementContext unsupportedUseStatement() throws RecognitionException { - UnsupportedUseStatementContext _localctx = new UnsupportedUseStatementContext(_ctx, getState()); - enterRule(_localctx, 148, RULE_unsupportedUseStatement); - int _la; - try { - _localctx = new UseCloudClusterContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4132); - match(USE); - setState(4139); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 49159L) != 0)) { - { - setState(4136); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,581,_ctx) ) { - case 1: - { - setState(4133); - ((UseCloudClusterContext)_localctx).catalog = identifier(); - setState(4134); - match(DOT); - } - break; - } - setState(4138); - ((UseCloudClusterContext)_localctx).database = identifier(); - } - } - - setState(4141); - match(ATSIGN); - setState(4142); - ((UseCloudClusterContext)_localctx).cluster = identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedDmlStatementContext extends ParserRuleContext { - public UnsupportedDmlStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedDmlStatement; } - - public UnsupportedDmlStatementContext() { } - public void copyFrom(UnsupportedDmlStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CopyIntoContext extends UnsupportedDmlStatementContext { - public MultipartIdentifierContext name; - public IdentifierListContext columns; - public PropertyClauseContext properties; - public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public List FROM() { return getTokens(DorisParser.FROM); } - public TerminalNode FROM(int i) { - return getToken(DorisParser.FROM, i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public StageAndPatternContext stageAndPattern() { - return getRuleContext(StageAndPatternContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode SELECT() { return getToken(DorisParser.SELECT, 0); } - public SelectColumnClauseContext selectColumnClause() { - return getRuleContext(SelectColumnClauseContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public CopyIntoContext(UnsupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCopyInto(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCopyInto(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TruncateTableContext extends UnsupportedDmlStatementContext { - public TerminalNode TRUNCATE() { return getToken(DorisParser.TRUNCATE, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public SpecifiedPartitionContext specifiedPartition() { - return getRuleContext(SpecifiedPartitionContext.class,0); - } - public TerminalNode FORCE() { return getToken(DorisParser.FORCE, 0); } - public TruncateTableContext(UnsupportedDmlStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTruncateTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTruncateTable(this); - } - } - - public final UnsupportedDmlStatementContext unsupportedDmlStatement() throws RecognitionException { - UnsupportedDmlStatementContext _localctx = new UnsupportedDmlStatementContext(_ctx, getState()); - enterRule(_localctx, 150, RULE_unsupportedDmlStatement); - int _la; - try { - setState(4176); - _errHandler.sync(this); - switch (_input.LA(1)) { - case TRUNCATE: - _localctx = new TruncateTableContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4144); - match(TRUNCATE); - setState(4145); - match(TABLE); - setState(4146); - multipartIdentifier(); - setState(4148); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(4147); - specifiedPartition(); - } - } - - setState(4151); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORCE) { - { - setState(4150); - match(FORCE); - } - } - - } - break; - case COPY: - _localctx = new CopyIntoContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4153); - match(COPY); - setState(4154); - match(INTO); - setState(4155); - ((CopyIntoContext)_localctx).name = multipartIdentifier(); - setState(4157); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4156); - ((CopyIntoContext)_localctx).columns = identifierList(); - } - } - - setState(4159); - match(FROM); - setState(4171); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ATSIGN: - { - setState(4160); - stageAndPattern(); - } - break; - case LEFT_PAREN: - { - { - setState(4161); - match(LEFT_PAREN); - setState(4162); - match(SELECT); - setState(4163); - selectColumnClause(); - setState(4164); - match(FROM); - setState(4165); - stageAndPattern(); - setState(4167); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(4166); - whereClause(); - } - } - - setState(4169); - match(RIGHT_PAREN); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(4174); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(4173); - ((CopyIntoContext)_localctx).properties = propertyClause(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StageAndPatternContext extends ParserRuleContext { - public IdentifierContext stage; - public Token pattern; - public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } - public TerminalNode TILDE() { return getToken(DorisParser.TILDE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public StageAndPatternContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_stageAndPattern; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStageAndPattern(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStageAndPattern(this); - } - } - - public final StageAndPatternContext stageAndPattern() throws RecognitionException { - StageAndPatternContext _localctx = new StageAndPatternContext(_ctx, getState()); - enterRule(_localctx, 152, RULE_stageAndPattern); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4178); - match(ATSIGN); - setState(4181); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4179); - ((StageAndPatternContext)_localctx).stage = identifier(); - } - break; - case TILDE: - { - setState(4180); - match(TILDE); - } - break; - default: - throw new NoViableAltException(this); - } - setState(4186); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4183); - match(LEFT_PAREN); - setState(4184); - ((StageAndPatternContext)_localctx).pattern = match(STRING_LITERAL); - setState(4185); - match(RIGHT_PAREN); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnsupportedKillStatementContext extends ParserRuleContext { - public UnsupportedKillStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unsupportedKillStatement; } - - public UnsupportedKillStatementContext() { } - public void copyFrom(UnsupportedKillStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class KillQueryContext extends UnsupportedKillStatementContext { - public TerminalNode KILL() { return getToken(DorisParser.KILL, 0); } - public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public KillQueryContext(UnsupportedKillStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterKillQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitKillQuery(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class KillConnectionContext extends UnsupportedKillStatementContext { - public TerminalNode KILL() { return getToken(DorisParser.KILL, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode CONNECTION() { return getToken(DorisParser.CONNECTION, 0); } - public KillConnectionContext(UnsupportedKillStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterKillConnection(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitKillConnection(this); - } - } - - public final UnsupportedKillStatementContext unsupportedKillStatement() throws RecognitionException { - UnsupportedKillStatementContext _localctx = new UnsupportedKillStatementContext(_ctx, getState()); - enterRule(_localctx, 154, RULE_unsupportedKillStatement); - int _la; - try { - setState(4196); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,593,_ctx) ) { - case 1: - _localctx = new KillConnectionContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4188); - match(KILL); - setState(4190); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==CONNECTION) { - { - setState(4189); - match(CONNECTION); - } - } - - setState(4192); - match(INTEGER_VALUE); - } - break; - case 2: - _localctx = new KillQueryContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4193); - match(KILL); - setState(4194); - match(QUERY); - setState(4195); - _la = _input.LA(1); - if ( !(_la==STRING_LITERAL || _la==INTEGER_VALUE) ) { - _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 SupportedDescribeStatementContext extends ParserRuleContext { - public SupportedDescribeStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_supportedDescribeStatement; } - - public SupportedDescribeStatementContext() { } - public void copyFrom(SupportedDescribeStatementContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DescribeTableValuedFunctionContext extends SupportedDescribeStatementContext { - public IdentifierContext tvfName; - public PropertyItemListContext properties; - public ExplainCommandContext explainCommand() { - return getRuleContext(ExplainCommandContext.class,0); - } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public DescribeTableValuedFunctionContext(SupportedDescribeStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDescribeTableValuedFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDescribeTableValuedFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DescribeTableContext extends SupportedDescribeStatementContext { - public ExplainCommandContext explainCommand() { - return getRuleContext(ExplainCommandContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public SpecifiedPartitionContext specifiedPartition() { - return getRuleContext(SpecifiedPartitionContext.class,0); - } - public DescribeTableContext(SupportedDescribeStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDescribeTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDescribeTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DescribeTableAllContext extends SupportedDescribeStatementContext { - public ExplainCommandContext explainCommand() { - return getRuleContext(ExplainCommandContext.class,0); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public DescribeTableAllContext(SupportedDescribeStatementContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDescribeTableAll(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDescribeTableAll(this); - } - } - - public final SupportedDescribeStatementContext supportedDescribeStatement() throws RecognitionException { - SupportedDescribeStatementContext _localctx = new SupportedDescribeStatementContext(_ctx, getState()); - enterRule(_localctx, 156, RULE_supportedDescribeStatement); - int _la; - try { - setState(4217); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) { - case 1: - _localctx = new DescribeTableValuedFunctionContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4198); - explainCommand(); - setState(4199); - match(FUNCTION); - setState(4200); - ((DescribeTableValuedFunctionContext)_localctx).tvfName = identifier(); - setState(4201); - match(LEFT_PAREN); - setState(4203); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576320L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { - { - setState(4202); - ((DescribeTableValuedFunctionContext)_localctx).properties = propertyItemList(); - } - } - - setState(4205); - match(RIGHT_PAREN); - setState(4206); - tableAlias(); - } - break; - case 2: - _localctx = new DescribeTableAllContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4208); - explainCommand(); - setState(4209); - multipartIdentifier(); - setState(4210); - match(ALL); - } - break; - case 3: - _localctx = new DescribeTableContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(4212); - explainCommand(); - setState(4213); - multipartIdentifier(); - setState(4215); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(4214); - specifiedPartition(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConstraintContext extends ParserRuleContext { - public IdentifierListContext slots; - public MultipartIdentifierContext referenceTable; - public IdentifierListContext referencedSlots; - public TerminalNode PRIMARY() { return getToken(DorisParser.PRIMARY, 0); } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public TerminalNode UNIQUE() { return getToken(DorisParser.UNIQUE, 0); } - public TerminalNode FOREIGN() { return getToken(DorisParser.FOREIGN, 0); } - public TerminalNode REFERENCES() { return getToken(DorisParser.REFERENCES, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ConstraintContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constraint; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConstraint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConstraint(this); - } - } - - public final ConstraintContext constraint() throws RecognitionException { - ConstraintContext _localctx = new ConstraintContext(_ctx, getState()); - enterRule(_localctx, 158, RULE_constraint); - try { - setState(4231); - _errHandler.sync(this); - switch (_input.LA(1)) { - case PRIMARY: - enterOuterAlt(_localctx, 1); - { - setState(4219); - match(PRIMARY); - setState(4220); - match(KEY); - setState(4221); - ((ConstraintContext)_localctx).slots = identifierList(); - } - break; - case UNIQUE: - enterOuterAlt(_localctx, 2); - { - setState(4222); - match(UNIQUE); - setState(4223); - ((ConstraintContext)_localctx).slots = identifierList(); - } - break; - case FOREIGN: - enterOuterAlt(_localctx, 3); - { - setState(4224); - match(FOREIGN); - setState(4225); - match(KEY); - setState(4226); - ((ConstraintContext)_localctx).slots = identifierList(); - setState(4227); - match(REFERENCES); - setState(4228); - ((ConstraintContext)_localctx).referenceTable = multipartIdentifier(); - setState(4229); - ((ConstraintContext)_localctx).referencedSlots = identifierList(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionSpecContext extends ParserRuleContext { - public IdentifierListContext partitions; - public ErrorCapturingIdentifierContext partition; - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public ErrorCapturingIdentifierContext errorCapturingIdentifier() { - return getRuleContext(ErrorCapturingIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PartitionSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionSpec(this); - } - } - - public final PartitionSpecContext partitionSpec() throws RecognitionException { - PartitionSpecContext _localctx = new PartitionSpecContext(_ctx, getState()); - enterRule(_localctx, 160, RULE_partitionSpec); - int _la; - try { - setState(4247); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,600,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4234); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(4233); - match(TEMPORARY); - } - } - - setState(4236); - _la = _input.LA(1); - if ( !(_la==PARTITION || _la==PARTITIONS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(4237); - ((PartitionSpecContext)_localctx).partitions = identifierList(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4239); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(4238); - match(TEMPORARY); - } - } - - setState(4241); - match(PARTITION); - setState(4242); - ((PartitionSpecContext)_localctx).partition = errorCapturingIdentifier(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(4243); - _la = _input.LA(1); - if ( !(_la==PARTITION || _la==PARTITIONS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(4244); - match(LEFT_PAREN); - setState(4245); - match(ASTERISK); - setState(4246); - match(RIGHT_PAREN); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionTableContext extends ParserRuleContext { - public Token autoPartition; - public IdentityOrFunctionListContext partitionList; - public PartitionsDefContext partitions; - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public IdentityOrFunctionListContext identityOrFunctionList() { - return getRuleContext(IdentityOrFunctionListContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public TerminalNode RANGE() { return getToken(DorisParser.RANGE, 0); } - public TerminalNode LIST() { return getToken(DorisParser.LIST, 0); } - public PartitionsDefContext partitionsDef() { - return getRuleContext(PartitionsDefContext.class,0); - } - public PartitionTableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionTable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionTable(this); - } - } - - public final PartitionTableContext partitionTable() throws RecognitionException { - PartitionTableContext _localctx = new PartitionTableContext(_ctx, getState()); - enterRule(_localctx, 162, RULE_partitionTable); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - { - setState(4250); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AUTO) { - { - setState(4249); - ((PartitionTableContext)_localctx).autoPartition = match(AUTO); - } - } - - setState(4252); - match(PARTITION); - setState(4253); - match(BY); - setState(4255); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LIST || _la==RANGE) { - { - setState(4254); - _la = _input.LA(1); - if ( !(_la==LIST || _la==RANGE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(4257); - ((PartitionTableContext)_localctx).partitionList = identityOrFunctionList(); - { - setState(4258); - match(LEFT_PAREN); - setState(4260); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FROM || _la==PARTITION) { - { - setState(4259); - ((PartitionTableContext)_localctx).partitions = partitionsDef(); - } - } - - setState(4262); - match(RIGHT_PAREN); - } - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentityOrFunctionListContext extends ParserRuleContext { - public IdentityOrFunctionContext identityOrFunction; - public List partitions = new ArrayList(); - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public List identityOrFunction() { - return getRuleContexts(IdentityOrFunctionContext.class); - } - public IdentityOrFunctionContext identityOrFunction(int i) { - return getRuleContext(IdentityOrFunctionContext.class,i); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public IdentityOrFunctionListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identityOrFunctionList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentityOrFunctionList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentityOrFunctionList(this); - } - } - - public final IdentityOrFunctionListContext identityOrFunctionList() throws RecognitionException { - IdentityOrFunctionListContext _localctx = new IdentityOrFunctionListContext(_ctx, getState()); - enterRule(_localctx, 164, RULE_identityOrFunctionList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4264); - match(LEFT_PAREN); - setState(4265); - identityOrFunction(); - setState(4270); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4266); - match(COMMA); - setState(4267); - ((IdentityOrFunctionListContext)_localctx).identityOrFunction = identityOrFunction(); - ((IdentityOrFunctionListContext)_localctx).partitions.add(((IdentityOrFunctionListContext)_localctx).identityOrFunction); - } - } - setState(4272); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4273); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentityOrFunctionContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public FunctionCallExpressionContext functionCallExpression() { - return getRuleContext(FunctionCallExpressionContext.class,0); - } - public IdentityOrFunctionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identityOrFunction; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentityOrFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentityOrFunction(this); - } - } - - public final IdentityOrFunctionContext identityOrFunction() throws RecognitionException { - IdentityOrFunctionContext _localctx = new IdentityOrFunctionContext(_ctx, getState()); - enterRule(_localctx, 166, RULE_identityOrFunction); - try { - enterOuterAlt(_localctx, 1); - { - setState(4277); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,605,_ctx) ) { - case 1: - { - setState(4275); - identifier(); - } - break; - case 2: - { - setState(4276); - functionCallExpression(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DataDescContext extends ParserRuleContext { - public Token STRING_LITERAL; - public List filePaths = new ArrayList(); - public List filePath = new ArrayList(); - public IdentifierContext targetTableName; - public Token comma; - public Token separator; - public IdentifierOrTextContext format; - public IdentifierOrTextContext compressType; - public IdentifierListContext columns; - public ColFromPathContext columnsFromPath; - public ColMappingListContext columnMapping; - public PreFilterClauseContext preFilter; - public WhereClauseContext where; - public DeleteOnClauseContext deleteOn; - public SequenceColClauseContext sequenceColumn; - public IdentifierContext sourceTableName; - public IdentifierListContext partition; - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode INFILE() { return getToken(DorisParser.INFILE, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public List TABLE() { return getTokens(DorisParser.TABLE); } - public TerminalNode TABLE(int i) { - return getToken(DorisParser.TABLE, i); - } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public MergeTypeContext mergeType() { - return getRuleContext(MergeTypeContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PartitionSpecContext partitionSpec() { - return getRuleContext(PartitionSpecContext.class,0); - } - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public List TERMINATED() { return getTokens(DorisParser.TERMINATED); } - public TerminalNode TERMINATED(int i) { - return getToken(DorisParser.TERMINATED, i); - } - public List BY() { return getTokens(DorisParser.BY); } - public TerminalNode BY(int i) { - return getToken(DorisParser.BY, i); - } - public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } - public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } - public List AS() { return getTokens(DorisParser.AS); } - public TerminalNode AS(int i) { - return getToken(DorisParser.AS, i); - } - public TerminalNode COMPRESS_TYPE() { return getToken(DorisParser.COMPRESS_TYPE, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public List identifierOrText() { - return getRuleContexts(IdentifierOrTextContext.class); - } - public IdentifierOrTextContext identifierOrText(int i) { - return getRuleContext(IdentifierOrTextContext.class,i); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ColFromPathContext colFromPath() { - return getRuleContext(ColFromPathContext.class,0); - } - public ColMappingListContext colMappingList() { - return getRuleContext(ColMappingListContext.class,0); - } - public PreFilterClauseContext preFilterClause() { - return getRuleContext(PreFilterClauseContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public DeleteOnClauseContext deleteOnClause() { - return getRuleContext(DeleteOnClauseContext.class,0); - } - public SequenceColClauseContext sequenceColClause() { - return getRuleContext(SequenceColClauseContext.class,0); - } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public DataDescContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dataDesc; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDataDesc(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDataDesc(this); - } - } - - public final DataDescContext dataDesc() throws RecognitionException { - DataDescContext _localctx = new DataDescContext(_ctx, getState()); - enterRule(_localctx, 168, RULE_dataDesc); - int _la; - try { - setState(4378); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,629,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4283); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==APPEND || _la==DELETE || _la==MERGE || _la==WITH) { - { - setState(4280); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(4279); - match(WITH); - } - } - - setState(4282); - mergeType(); - } - } - - setState(4285); - match(DATA); - setState(4286); - match(INFILE); - setState(4287); - match(LEFT_PAREN); - setState(4288); - ((DataDescContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DataDescContext)_localctx).filePaths.add(((DataDescContext)_localctx).STRING_LITERAL); - setState(4293); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4289); - match(COMMA); - setState(4290); - ((DataDescContext)_localctx).STRING_LITERAL = match(STRING_LITERAL); - ((DataDescContext)_localctx).filePath.add(((DataDescContext)_localctx).STRING_LITERAL); - } - } - setState(4295); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4296); - match(RIGHT_PAREN); - setState(4297); - match(INTO); - setState(4298); - match(TABLE); - setState(4299); - ((DataDescContext)_localctx).targetTableName = identifier(); - setState(4301); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION || _la==PARTITIONS || _la==TEMPORARY) { - { - setState(4300); - partitionSpec(); - } - } - - setState(4307); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,610,_ctx) ) { - case 1: - { - setState(4303); - match(COLUMNS); - setState(4304); - match(TERMINATED); - setState(4305); - match(BY); - setState(4306); - ((DataDescContext)_localctx).comma = match(STRING_LITERAL); - } - break; - } - setState(4313); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LINES) { - { - setState(4309); - match(LINES); - setState(4310); - match(TERMINATED); - setState(4311); - match(BY); - setState(4312); - ((DataDescContext)_localctx).separator = match(STRING_LITERAL); - } - } - - setState(4318); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORMAT) { - { - setState(4315); - match(FORMAT); - setState(4316); - match(AS); - setState(4317); - ((DataDescContext)_localctx).format = identifierOrText(); - } - } - - setState(4323); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMPRESS_TYPE) { - { - setState(4320); - match(COMPRESS_TYPE); - setState(4321); - match(AS); - setState(4322); - ((DataDescContext)_localctx).compressType = identifierOrText(); - } - } - - setState(4326); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4325); - ((DataDescContext)_localctx).columns = identifierList(); - } - } - - setState(4329); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLUMNS) { - { - setState(4328); - ((DataDescContext)_localctx).columnsFromPath = colFromPath(); - } - } - - setState(4332); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SET) { - { - setState(4331); - ((DataDescContext)_localctx).columnMapping = colMappingList(); - } - } - - setState(4335); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PRECEDING) { - { - setState(4334); - ((DataDescContext)_localctx).preFilter = preFilterClause(); - } - } - - setState(4338); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(4337); - ((DataDescContext)_localctx).where = whereClause(); - } - } - - setState(4341); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DELETE) { - { - setState(4340); - ((DataDescContext)_localctx).deleteOn = deleteOnClause(); - } - } - - setState(4344); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(4343); - ((DataDescContext)_localctx).sequenceColumn = sequenceColClause(); - } - } - - setState(4347); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(4346); - propertyClause(); - } - } - - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4353); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==APPEND || _la==DELETE || _la==MERGE || _la==WITH) { - { - setState(4350); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(4349); - match(WITH); - } - } - - setState(4352); - mergeType(); - } - } - - setState(4355); - match(DATA); - setState(4356); - match(FROM); - setState(4357); - match(TABLE); - setState(4358); - ((DataDescContext)_localctx).sourceTableName = identifier(); - setState(4359); - match(INTO); - setState(4360); - match(TABLE); - setState(4361); - ((DataDescContext)_localctx).targetTableName = identifier(); - setState(4364); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(4362); - match(PARTITION); - setState(4363); - ((DataDescContext)_localctx).partition = identifierList(); - } - } - - setState(4367); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SET) { - { - setState(4366); - ((DataDescContext)_localctx).columnMapping = colMappingList(); - } - } - - setState(4370); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WHERE) { - { - setState(4369); - ((DataDescContext)_localctx).where = whereClause(); - } - } - - setState(4373); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DELETE) { - { - setState(4372); - ((DataDescContext)_localctx).deleteOn = deleteOnClause(); - } - } - - setState(4376); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(4375); - propertyClause(); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StatementScopeContext extends ParserRuleContext { - public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } - public TerminalNode SESSION() { return getToken(DorisParser.SESSION, 0); } - public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } - public StatementScopeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_statementScope; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStatementScope(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStatementScope(this); - } - } - - public final StatementScopeContext statementScope() throws RecognitionException { - StatementScopeContext _localctx = new StatementScopeContext(_ctx, getState()); - enterRule(_localctx, 170, RULE_statementScope); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4380); - _la = _input.LA(1); - if ( !(_la==GLOBAL || _la==LOCAL || _la==SESSION) ) { - _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 BuildModeContext extends ParserRuleContext { - public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } - public TerminalNode IMMEDIATE() { return getToken(DorisParser.IMMEDIATE, 0); } - public TerminalNode DEFERRED() { return getToken(DorisParser.DEFERRED, 0); } - public BuildModeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_buildMode; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBuildMode(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBuildMode(this); - } - } - - public final BuildModeContext buildMode() throws RecognitionException { - BuildModeContext _localctx = new BuildModeContext(_ctx, getState()); - enterRule(_localctx, 172, RULE_buildMode); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4382); - match(BUILD); - setState(4383); - _la = _input.LA(1); - if ( !(_la==DEFERRED || _la==IMMEDIATE) ) { - _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 RefreshTriggerContext extends ParserRuleContext { - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode MANUAL() { return getToken(DorisParser.MANUAL, 0); } - public TerminalNode SCHEDULE() { return getToken(DorisParser.SCHEDULE, 0); } - public RefreshScheduleContext refreshSchedule() { - return getRuleContext(RefreshScheduleContext.class,0); - } - public TerminalNode COMMIT() { return getToken(DorisParser.COMMIT, 0); } - public RefreshTriggerContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_refreshTrigger; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshTrigger(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshTrigger(this); - } - } - - public final RefreshTriggerContext refreshTrigger() throws RecognitionException { - RefreshTriggerContext _localctx = new RefreshTriggerContext(_ctx, getState()); - enterRule(_localctx, 174, RULE_refreshTrigger); - try { - setState(4392); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,630,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4385); - match(ON); - setState(4386); - match(MANUAL); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4387); - match(ON); - setState(4388); - match(SCHEDULE); - setState(4389); - refreshSchedule(); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(4390); - match(ON); - setState(4391); - match(COMMIT); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RefreshScheduleContext extends ParserRuleContext { - public IdentifierContext refreshUnit; - public TerminalNode EVERY() { return getToken(DorisParser.EVERY, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STARTS() { return getToken(DorisParser.STARTS, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public RefreshScheduleContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_refreshSchedule; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshSchedule(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshSchedule(this); - } - } - - public final RefreshScheduleContext refreshSchedule() throws RecognitionException { - RefreshScheduleContext _localctx = new RefreshScheduleContext(_ctx, getState()); - enterRule(_localctx, 176, RULE_refreshSchedule); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4394); - match(EVERY); - setState(4395); - match(INTEGER_VALUE); - setState(4396); - ((RefreshScheduleContext)_localctx).refreshUnit = identifier(); - setState(4399); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==STARTS) { - { - setState(4397); - match(STARTS); - setState(4398); - match(STRING_LITERAL); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RefreshMethodContext extends ParserRuleContext { - public TerminalNode COMPLETE() { return getToken(DorisParser.COMPLETE, 0); } - public TerminalNode AUTO() { return getToken(DorisParser.AUTO, 0); } - public RefreshMethodContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_refreshMethod; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRefreshMethod(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRefreshMethod(this); - } - } - - public final RefreshMethodContext refreshMethod() throws RecognitionException { - RefreshMethodContext _localctx = new RefreshMethodContext(_ctx, getState()); - enterRule(_localctx, 178, RULE_refreshMethod); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4401); - _la = _input.LA(1); - if ( !(_la==AUTO || _la==COMPLETE) ) { - _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 MvPartitionContext extends ParserRuleContext { - public IdentifierContext partitionKey; - public FunctionCallExpressionContext partitionExpr; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public FunctionCallExpressionContext functionCallExpression() { - return getRuleContext(FunctionCallExpressionContext.class,0); - } - public MvPartitionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_mvPartition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMvPartition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMvPartition(this); - } - } - - public final MvPartitionContext mvPartition() throws RecognitionException { - MvPartitionContext _localctx = new MvPartitionContext(_ctx, getState()); - enterRule(_localctx, 180, RULE_mvPartition); - try { - setState(4405); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,632,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4403); - ((MvPartitionContext)_localctx).partitionKey = identifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4404); - ((MvPartitionContext)_localctx).partitionExpr = functionCallExpression(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierOrTextContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public IdentifierOrTextContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierOrText; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierOrText(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierOrText(this); - } - } - - public final IdentifierOrTextContext identifierOrText() throws RecognitionException { - IdentifierOrTextContext _localctx = new IdentifierOrTextContext(_ctx, getState()); - enterRule(_localctx, 182, RULE_identifierOrText); - try { - setState(4409); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(4407); - identifier(); - } - break; - case STRING_LITERAL: - enterOuterAlt(_localctx, 2); - { - setState(4408); - match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierOrTextOrAsteriskContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public IdentifierOrTextOrAsteriskContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierOrTextOrAsterisk; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierOrTextOrAsterisk(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierOrTextOrAsterisk(this); - } - } - - public final IdentifierOrTextOrAsteriskContext identifierOrTextOrAsterisk() throws RecognitionException { - IdentifierOrTextOrAsteriskContext _localctx = new IdentifierOrTextOrAsteriskContext(_ctx, getState()); - enterRule(_localctx, 184, RULE_identifierOrTextOrAsterisk); - try { - setState(4414); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(4411); - identifier(); - } - break; - case STRING_LITERAL: - enterOuterAlt(_localctx, 2); - { - setState(4412); - match(STRING_LITERAL); - } - break; - case ASTERISK: - enterOuterAlt(_localctx, 3); - { - setState(4413); - match(ASTERISK); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MultipartIdentifierOrAsteriskContext extends ParserRuleContext { - public IdentifierOrAsteriskContext identifierOrAsterisk; - public List parts = new ArrayList(); - public List identifierOrAsterisk() { - return getRuleContexts(IdentifierOrAsteriskContext.class); - } - public IdentifierOrAsteriskContext identifierOrAsterisk(int i) { - return getRuleContext(IdentifierOrAsteriskContext.class,i); - } - public List DOT() { return getTokens(DorisParser.DOT); } - public TerminalNode DOT(int i) { - return getToken(DorisParser.DOT, i); - } - public MultipartIdentifierOrAsteriskContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multipartIdentifierOrAsterisk; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMultipartIdentifierOrAsterisk(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMultipartIdentifierOrAsterisk(this); - } - } - - public final MultipartIdentifierOrAsteriskContext multipartIdentifierOrAsterisk() throws RecognitionException { - MultipartIdentifierOrAsteriskContext _localctx = new MultipartIdentifierOrAsteriskContext(_ctx, getState()); - enterRule(_localctx, 186, RULE_multipartIdentifierOrAsterisk); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4416); - ((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk = identifierOrAsterisk(); - ((MultipartIdentifierOrAsteriskContext)_localctx).parts.add(((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk); - setState(4421); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==DOT) { - { - { - setState(4417); - match(DOT); - setState(4418); - ((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk = identifierOrAsterisk(); - ((MultipartIdentifierOrAsteriskContext)_localctx).parts.add(((MultipartIdentifierOrAsteriskContext)_localctx).identifierOrAsterisk); - } - } - setState(4423); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierOrAsteriskContext extends ParserRuleContext { - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public IdentifierOrAsteriskContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierOrAsterisk; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierOrAsterisk(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierOrAsterisk(this); - } - } - - public final IdentifierOrAsteriskContext identifierOrAsterisk() throws RecognitionException { - IdentifierOrAsteriskContext _localctx = new IdentifierOrAsteriskContext(_ctx, getState()); - enterRule(_localctx, 188, RULE_identifierOrAsterisk); - try { - setState(4426); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(4424); - identifierOrText(); - } - break; - case ASTERISK: - enterOuterAlt(_localctx, 2); - { - setState(4425); - match(ASTERISK); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UserIdentifyContext extends ParserRuleContext { - public IdentifierOrTextContext user; - public IdentifierOrTextContext host; - public List identifierOrText() { - return getRuleContexts(IdentifierOrTextContext.class); - } - public IdentifierOrTextContext identifierOrText(int i) { - return getRuleContext(IdentifierOrTextContext.class,i); - } - public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public UserIdentifyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_userIdentify; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUserIdentify(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUserIdentify(this); - } - } - - public final UserIdentifyContext userIdentify() throws RecognitionException { - UserIdentifyContext _localctx = new UserIdentifyContext(_ctx, getState()); - enterRule(_localctx, 190, RULE_userIdentify); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4428); - ((UserIdentifyContext)_localctx).user = identifierOrText(); - setState(4437); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ATSIGN) { - { - setState(4429); - match(ATSIGN); - setState(4435); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case STRING_LITERAL: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4430); - ((UserIdentifyContext)_localctx).host = identifierOrText(); - } - break; - case LEFT_PAREN: - { - setState(4431); - match(LEFT_PAREN); - setState(4432); - ((UserIdentifyContext)_localctx).host = identifierOrText(); - setState(4433); - match(RIGHT_PAREN); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GrantUserIdentifyContext extends ParserRuleContext { - public UserIdentifyContext userIdentify() { - return getRuleContext(UserIdentifyContext.class,0); - } - public TerminalNode IDENTIFIED() { return getToken(DorisParser.IDENTIFIED, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } - public GrantUserIdentifyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_grantUserIdentify; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGrantUserIdentify(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGrantUserIdentify(this); - } - } - - public final GrantUserIdentifyContext grantUserIdentify() throws RecognitionException { - GrantUserIdentifyContext _localctx = new GrantUserIdentifyContext(_ctx, getState()); - enterRule(_localctx, 192, RULE_grantUserIdentify); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4439); - userIdentify(); - setState(4446); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IDENTIFIED) { - { - setState(4440); - match(IDENTIFIED); - setState(4441); - match(BY); - setState(4443); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PASSWORD) { - { - setState(4442); - match(PASSWORD); - } - } - - setState(4445); - match(STRING_LITERAL); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExplainContext extends ParserRuleContext { - public Token level; - public ExplainCommandContext explainCommand() { - return getRuleContext(ExplainCommandContext.class,0); - } - public PlanTypeContext planType() { - return getRuleContext(PlanTypeContext.class,0); - } - public TerminalNode PROCESS() { return getToken(DorisParser.PROCESS, 0); } - public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } - public TerminalNode TREE() { return getToken(DorisParser.TREE, 0); } - public TerminalNode GRAPH() { return getToken(DorisParser.GRAPH, 0); } - public TerminalNode PLAN() { return getToken(DorisParser.PLAN, 0); } - public TerminalNode DUMP() { return getToken(DorisParser.DUMP, 0); } - public ExplainContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_explain; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExplain(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExplain(this); - } - } - - public final ExplainContext explain() throws RecognitionException { - ExplainContext _localctx = new ExplainContext(_ctx, getState()); - enterRule(_localctx, 194, RULE_explain); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4448); - explainCommand(); - setState(4450); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==ANALYZED || _la==DISTRIBUTED || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & 9042383626895361L) != 0) || _la==PHYSICAL || _la==REWRITTEN || _la==SHAPE) { - { - setState(4449); - planType(); - } - } - - setState(4453); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DUMP || _la==GRAPH || _la==PLAN || _la==TREE || _la==VERBOSE) { - { - setState(4452); - ((ExplainContext)_localctx).level = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==DUMP || _la==GRAPH || _la==PLAN || _la==TREE || _la==VERBOSE) ) { - ((ExplainContext)_localctx).level = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(4456); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROCESS) { - { - setState(4455); - match(PROCESS); - } - } - - } - } - 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(DorisParser.EXPLAIN, 0); } - public TerminalNode DESC() { return getToken(DorisParser.DESC, 0); } - public TerminalNode DESCRIBE() { return getToken(DorisParser.DESCRIBE, 0); } - public ExplainCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_explainCommand; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExplainCommand(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExplainCommand(this); - } - } - - public final ExplainCommandContext explainCommand() throws RecognitionException { - ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState()); - enterRule(_localctx, 196, RULE_explainCommand); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4458); - _la = _input.LA(1); - if ( !(((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & 274877906947L) != 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 PlanTypeContext extends ParserRuleContext { - public TerminalNode PARSED() { return getToken(DorisParser.PARSED, 0); } - public TerminalNode ANALYZED() { return getToken(DorisParser.ANALYZED, 0); } - public TerminalNode REWRITTEN() { return getToken(DorisParser.REWRITTEN, 0); } - public TerminalNode LOGICAL() { return getToken(DorisParser.LOGICAL, 0); } - public TerminalNode OPTIMIZED() { return getToken(DorisParser.OPTIMIZED, 0); } - public TerminalNode PHYSICAL() { return getToken(DorisParser.PHYSICAL, 0); } - public TerminalNode SHAPE() { return getToken(DorisParser.SHAPE, 0); } - public TerminalNode MEMO() { return getToken(DorisParser.MEMO, 0); } - public TerminalNode DISTRIBUTED() { return getToken(DorisParser.DISTRIBUTED, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public PlanTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_planType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPlanType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPlanType(this); - } - } - - public final PlanTypeContext planType() throws RecognitionException { - PlanTypeContext _localctx = new PlanTypeContext(_ctx, getState()); - enterRule(_localctx, 198, RULE_planType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4460); - _la = _input.LA(1); - if ( !(_la==ALL || _la==ANALYZED || _la==DISTRIBUTED || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & 9042383626895361L) != 0) || _la==PHYSICAL || _la==REWRITTEN || _la==SHAPE) ) { - _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 ReplayCommandContext extends ParserRuleContext { - public TerminalNode PLAN() { return getToken(DorisParser.PLAN, 0); } - public TerminalNode REPLAYER() { return getToken(DorisParser.REPLAYER, 0); } - public ReplayTypeContext replayType() { - return getRuleContext(ReplayTypeContext.class,0); - } - public ReplayCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_replayCommand; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplayCommand(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplayCommand(this); - } - } - - public final ReplayCommandContext replayCommand() throws RecognitionException { - ReplayCommandContext _localctx = new ReplayCommandContext(_ctx, getState()); - enterRule(_localctx, 200, RULE_replayCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(4462); - match(PLAN); - setState(4463); - match(REPLAYER); - setState(4464); - replayType(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ReplayTypeContext extends ParserRuleContext { - public Token filePath; - public TerminalNode DUMP() { return getToken(DorisParser.DUMP, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode PLAY() { return getToken(DorisParser.PLAY, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public ReplayTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_replayType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplayType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplayType(this); - } - } - - public final ReplayTypeContext replayType() throws RecognitionException { - ReplayTypeContext _localctx = new ReplayTypeContext(_ctx, getState()); - enterRule(_localctx, 202, RULE_replayType); - try { - setState(4470); - _errHandler.sync(this); - switch (_input.LA(1)) { - case DUMP: - enterOuterAlt(_localctx, 1); - { - setState(4466); - match(DUMP); - setState(4467); - query(); - } - break; - case PLAY: - enterOuterAlt(_localctx, 2); - { - setState(4468); - match(PLAY); - setState(4469); - ((ReplayTypeContext)_localctx).filePath = match(STRING_LITERAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MergeTypeContext extends ParserRuleContext { - public TerminalNode APPEND() { return getToken(DorisParser.APPEND, 0); } - public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } - public TerminalNode MERGE() { return getToken(DorisParser.MERGE, 0); } - public MergeTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_mergeType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMergeType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMergeType(this); - } - } - - public final MergeTypeContext mergeType() throws RecognitionException { - MergeTypeContext _localctx = new MergeTypeContext(_ctx, getState()); - enterRule(_localctx, 204, RULE_mergeType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4472); - _la = _input.LA(1); - if ( !(_la==APPEND || _la==DELETE || _la==MERGE) ) { - _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 PreFilterClauseContext extends ParserRuleContext { - public TerminalNode PRECEDING() { return getToken(DorisParser.PRECEDING, 0); } - public TerminalNode FILTER() { return getToken(DorisParser.FILTER, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public PreFilterClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_preFilterClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPreFilterClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPreFilterClause(this); - } - } - - public final PreFilterClauseContext preFilterClause() throws RecognitionException { - PreFilterClauseContext _localctx = new PreFilterClauseContext(_ctx, getState()); - enterRule(_localctx, 206, RULE_preFilterClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4474); - match(PRECEDING); - setState(4475); - match(FILTER); - setState(4476); - expression(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DeleteOnClauseContext extends ParserRuleContext { - public TerminalNode DELETE() { return getToken(DorisParser.DELETE, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public DeleteOnClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_deleteOnClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDeleteOnClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDeleteOnClause(this); - } - } - - public final DeleteOnClauseContext deleteOnClause() throws RecognitionException { - DeleteOnClauseContext _localctx = new DeleteOnClauseContext(_ctx, getState()); - enterRule(_localctx, 208, RULE_deleteOnClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4478); - match(DELETE); - setState(4479); - match(ON); - setState(4480); - expression(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SequenceColClauseContext extends ParserRuleContext { - public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public SequenceColClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sequenceColClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSequenceColClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSequenceColClause(this); - } - } - - public final SequenceColClauseContext sequenceColClause() throws RecognitionException { - SequenceColClauseContext _localctx = new SequenceColClauseContext(_ctx, getState()); - enterRule(_localctx, 210, RULE_sequenceColClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4482); - match(ORDER); - setState(4483); - match(BY); - setState(4484); - identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ColFromPathContext extends ParserRuleContext { - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode PATH() { return getToken(DorisParser.PATH, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public ColFromPathContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_colFromPath; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColFromPath(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColFromPath(this); - } - } - - public final ColFromPathContext colFromPath() throws RecognitionException { - ColFromPathContext _localctx = new ColFromPathContext(_ctx, getState()); - enterRule(_localctx, 212, RULE_colFromPath); - try { - enterOuterAlt(_localctx, 1); - { - setState(4486); - match(COLUMNS); - setState(4487); - match(FROM); - setState(4488); - match(PATH); - setState(4489); - match(AS); - setState(4490); - identifierList(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ColMappingListContext extends ParserRuleContext { - public MappingExprContext mappingExpr; - public List mappingSet = new ArrayList(); - public TerminalNode SET() { return getToken(DorisParser.SET, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List mappingExpr() { - return getRuleContexts(MappingExprContext.class); - } - public MappingExprContext mappingExpr(int i) { - return getRuleContext(MappingExprContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ColMappingListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_colMappingList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColMappingList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColMappingList(this); - } - } - - public final ColMappingListContext colMappingList() throws RecognitionException { - ColMappingListContext _localctx = new ColMappingListContext(_ctx, getState()); - enterRule(_localctx, 214, RULE_colMappingList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4492); - match(SET); - setState(4493); - match(LEFT_PAREN); - setState(4494); - ((ColMappingListContext)_localctx).mappingExpr = mappingExpr(); - ((ColMappingListContext)_localctx).mappingSet.add(((ColMappingListContext)_localctx).mappingExpr); - setState(4499); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4495); - match(COMMA); - setState(4496); - ((ColMappingListContext)_localctx).mappingExpr = mappingExpr(); - ((ColMappingListContext)_localctx).mappingSet.add(((ColMappingListContext)_localctx).mappingExpr); - } - } - setState(4501); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4502); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MappingExprContext extends ParserRuleContext { - public IdentifierContext mappingCol; - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MappingExprContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_mappingExpr; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMappingExpr(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMappingExpr(this); - } - } - - public final MappingExprContext mappingExpr() throws RecognitionException { - MappingExprContext _localctx = new MappingExprContext(_ctx, getState()); - enterRule(_localctx, 216, RULE_mappingExpr); - try { - enterOuterAlt(_localctx, 1); - { - { - setState(4504); - ((MappingExprContext)_localctx).mappingCol = identifier(); - setState(4505); - match(EQ); - setState(4506); - expression(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WithRemoteStorageSystemContext extends ParserRuleContext { - public PropertyItemListContext brokerProperties; - public IdentifierOrTextContext brokerName; - public ResourceDescContext resourceDesc() { - return getRuleContext(ResourceDescContext.class,0); - } - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode S3() { return getToken(DorisParser.S3, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode HDFS() { return getToken(DorisParser.HDFS, 0); } - public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public WithRemoteStorageSystemContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_withRemoteStorageSystem; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWithRemoteStorageSystem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWithRemoteStorageSystem(this); - } - } - - public final WithRemoteStorageSystemContext withRemoteStorageSystem() throws RecognitionException { - WithRemoteStorageSystemContext _localctx = new WithRemoteStorageSystemContext(_ctx, getState()); - enterRule(_localctx, 218, RULE_withRemoteStorageSystem); - int _la; - try { - setState(4536); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,647,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4508); - resourceDesc(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4509); - match(WITH); - setState(4510); - match(S3); - setState(4511); - match(LEFT_PAREN); - setState(4512); - ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); - setState(4513); - match(RIGHT_PAREN); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(4515); - match(WITH); - setState(4516); - match(HDFS); - setState(4517); - match(LEFT_PAREN); - setState(4518); - ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); - setState(4519); - match(RIGHT_PAREN); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(4521); - match(WITH); - setState(4522); - match(LOCAL); - setState(4523); - match(LEFT_PAREN); - setState(4524); - ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); - setState(4525); - match(RIGHT_PAREN); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(4527); - match(WITH); - setState(4528); - match(BROKER); - setState(4529); - ((WithRemoteStorageSystemContext)_localctx).brokerName = identifierOrText(); - setState(4534); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4530); - match(LEFT_PAREN); - setState(4531); - ((WithRemoteStorageSystemContext)_localctx).brokerProperties = propertyItemList(); - setState(4532); - match(RIGHT_PAREN); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ResourceDescContext extends ParserRuleContext { - public IdentifierOrTextContext resourceName; - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ResourceDescContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_resourceDesc; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterResourceDesc(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitResourceDesc(this); - } - } - - public final ResourceDescContext resourceDesc() throws RecognitionException { - ResourceDescContext _localctx = new ResourceDescContext(_ctx, getState()); - enterRule(_localctx, 220, RULE_resourceDesc); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4538); - match(WITH); - setState(4539); - match(RESOURCE); - setState(4540); - ((ResourceDescContext)_localctx).resourceName = identifierOrText(); - setState(4545); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4541); - match(LEFT_PAREN); - setState(4542); - propertyItemList(); - setState(4543); - match(RIGHT_PAREN); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MysqlDataDescContext extends ParserRuleContext { - public Token filePath; - public MultipartIdentifierContext tableName; - public IdentifierListContext partition; - public Token comma; - public Token separator; - public IdentifierListContext columns; - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode INFILE() { return getToken(DorisParser.INFILE, 0); } - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public TerminalNode TABLE() { return getToken(DorisParser.TABLE, 0); } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public List TERMINATED() { return getTokens(DorisParser.TERMINATED); } - public TerminalNode TERMINATED(int i) { - return getToken(DorisParser.TERMINATED, i); - } - public List BY() { return getTokens(DorisParser.BY); } - public TerminalNode BY(int i) { - return getToken(DorisParser.BY, i); - } - public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } - public SkipLinesContext skipLines() { - return getRuleContext(SkipLinesContext.class,0); - } - public ColMappingListContext colMappingList() { - return getRuleContext(ColMappingListContext.class,0); - } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public MysqlDataDescContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_mysqlDataDesc; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMysqlDataDesc(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMysqlDataDesc(this); - } - } - - public final MysqlDataDescContext mysqlDataDesc() throws RecognitionException { - MysqlDataDescContext _localctx = new MysqlDataDescContext(_ctx, getState()); - enterRule(_localctx, 222, RULE_mysqlDataDesc); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4547); - match(DATA); - setState(4549); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LOCAL) { - { - setState(4548); - match(LOCAL); - } - } - - setState(4551); - match(INFILE); - setState(4552); - ((MysqlDataDescContext)_localctx).filePath = match(STRING_LITERAL); - setState(4553); - match(INTO); - setState(4554); - match(TABLE); - setState(4555); - ((MysqlDataDescContext)_localctx).tableName = multipartIdentifier(); - setState(4558); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(4556); - match(PARTITION); - setState(4557); - ((MysqlDataDescContext)_localctx).partition = identifierList(); - } - } - - setState(4564); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COLUMNS) { - { - setState(4560); - match(COLUMNS); - setState(4561); - match(TERMINATED); - setState(4562); - match(BY); - setState(4563); - ((MysqlDataDescContext)_localctx).comma = match(STRING_LITERAL); - } - } - - setState(4570); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LINES) { - { - setState(4566); - match(LINES); - setState(4567); - match(TERMINATED); - setState(4568); - match(BY); - setState(4569); - ((MysqlDataDescContext)_localctx).separator = match(STRING_LITERAL); - } - } - - setState(4573); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IGNORE) { - { - setState(4572); - skipLines(); - } - } - - setState(4576); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4575); - ((MysqlDataDescContext)_localctx).columns = identifierList(); - } - } - - setState(4579); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SET) { - { - setState(4578); - colMappingList(); - } - } - - setState(4582); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,656,_ctx) ) { - case 1: - { - setState(4581); - propertyClause(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SkipLinesContext extends ParserRuleContext { - public Token lines; - public TerminalNode IGNORE() { return getToken(DorisParser.IGNORE, 0); } - public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } - public SkipLinesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_skipLines; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSkipLines(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSkipLines(this); - } - } - - public final SkipLinesContext skipLines() throws RecognitionException { - SkipLinesContext _localctx = new SkipLinesContext(_ctx, getState()); - enterRule(_localctx, 224, RULE_skipLines); - try { - setState(4590); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,657,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4584); - match(IGNORE); - setState(4585); - ((SkipLinesContext)_localctx).lines = match(INTEGER_VALUE); - setState(4586); - match(LINES); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4587); - match(IGNORE); - setState(4588); - ((SkipLinesContext)_localctx).lines = match(INTEGER_VALUE); - setState(4589); - match(ROWS); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class OutFileClauseContext extends ParserRuleContext { - public ConstantContext filePath; - public IdentifierContext format; - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public TerminalNode OUTFILE() { return getToken(DorisParser.OUTFILE, 0); } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public OutFileClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_outFileClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterOutFileClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitOutFileClause(this); - } - } - - public final OutFileClauseContext outFileClause() throws RecognitionException { - OutFileClauseContext _localctx = new OutFileClauseContext(_ctx, getState()); - enterRule(_localctx, 226, RULE_outFileClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4592); - match(INTO); - setState(4593); - match(OUTFILE); - setState(4594); - ((OutFileClauseContext)_localctx).filePath = constant(); - setState(4598); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==FORMAT) { - { - setState(4595); - match(FORMAT); - setState(4596); - match(AS); - setState(4597); - ((OutFileClauseContext)_localctx).format = identifier(); - } - } - - setState(4601); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(4600); - propertyClause(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QueryContext extends ParserRuleContext { - public QueryTermContext queryTerm() { - return getRuleContext(QueryTermContext.class,0); - } - public QueryOrganizationContext queryOrganization() { - return getRuleContext(QueryOrganizationContext.class,0); - } - public CteContext cte() { - return getRuleContext(CteContext.class,0); - } - public QueryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_query; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQuery(this); - } - } - - public final QueryContext query() throws RecognitionException { - QueryContext _localctx = new QueryContext(_ctx, getState()); - enterRule(_localctx, 228, RULE_query); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4604); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==WITH) { - { - setState(4603); - cte(); - } - } - - setState(4606); - queryTerm(0); - setState(4607); - queryOrganization(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QueryTermContext extends ParserRuleContext { - public QueryTermContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_queryTerm; } - - public QueryTermContext() { } - public void copyFrom(QueryTermContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class QueryTermDefaultContext extends QueryTermContext { - public QueryPrimaryContext queryPrimary() { - return getRuleContext(QueryPrimaryContext.class,0); - } - public QueryTermDefaultContext(QueryTermContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQueryTermDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQueryTermDefault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SetOperationContext extends QueryTermContext { - public QueryTermContext left; - public Token operator; - public QueryTermContext right; - public List queryTerm() { - return getRuleContexts(QueryTermContext.class); - } - public QueryTermContext queryTerm(int i) { - return getRuleContext(QueryTermContext.class,i); - } - public TerminalNode INTERSECT() { return getToken(DorisParser.INTERSECT, 0); } - public SetQuantifierContext setQuantifier() { - return getRuleContext(SetQuantifierContext.class,0); - } - public TerminalNode UNION() { return getToken(DorisParser.UNION, 0); } - public TerminalNode EXCEPT() { return getToken(DorisParser.EXCEPT, 0); } - public TerminalNode MINUS() { return getToken(DorisParser.MINUS, 0); } - public SetOperationContext(QueryTermContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetOperation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetOperation(this); - } - } - - public final QueryTermContext queryTerm() throws RecognitionException { - return queryTerm(0); - } - - private QueryTermContext queryTerm(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - QueryTermContext _localctx = new QueryTermContext(_ctx, _parentState); - QueryTermContext _prevctx = _localctx; - int _startState = 230; - enterRecursionRule(_localctx, 230, RULE_queryTerm, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - { - _localctx = new QueryTermDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(4610); - queryPrimary(); - } - _ctx.stop = _input.LT(-1); - setState(4626); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,664,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(4624); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,663,_ctx) ) { - case 1: - { - _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); - ((SetOperationContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); - setState(4612); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(4613); - ((SetOperationContext)_localctx).operator = match(INTERSECT); - setState(4615); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(4614); - setQuantifier(); - } - } - - setState(4617); - ((SetOperationContext)_localctx).right = queryTerm(3); - } - break; - case 2: - { - _localctx = new SetOperationContext(new QueryTermContext(_parentctx, _parentState)); - ((SetOperationContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_queryTerm); - setState(4618); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(4619); - ((SetOperationContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==EXCEPT || _la==MINUS || _la==UNION) ) { - ((SetOperationContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(4621); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(4620); - setQuantifier(); - } - } - - setState(4623); - ((SetOperationContext)_localctx).right = queryTerm(2); - } - break; - } - } - } - setState(4628); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,664,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SetQuantifierContext extends ParserRuleContext { - public TerminalNode DISTINCT() { return getToken(DorisParser.DISTINCT, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public SetQuantifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_setQuantifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSetQuantifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSetQuantifier(this); - } - } - - public final SetQuantifierContext setQuantifier() throws RecognitionException { - SetQuantifierContext _localctx = new SetQuantifierContext(_ctx, getState()); - enterRule(_localctx, 232, RULE_setQuantifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4629); - _la = _input.LA(1); - if ( !(_la==ALL || _la==DISTINCT) ) { - _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 QueryPrimaryContext extends ParserRuleContext { - public QueryPrimaryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_queryPrimary; } - - public QueryPrimaryContext() { } - public void copyFrom(QueryPrimaryContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SubqueryContext extends QueryPrimaryContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public SubqueryContext(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSubquery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSubquery(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ValuesTableContext extends QueryPrimaryContext { - public InlineTableContext inlineTable() { - return getRuleContext(InlineTableContext.class,0); - } - public ValuesTableContext(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterValuesTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitValuesTable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class QueryPrimaryDefaultContext extends QueryPrimaryContext { - public QuerySpecificationContext querySpecification() { - return getRuleContext(QuerySpecificationContext.class,0); - } - public QueryPrimaryDefaultContext(QueryPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQueryPrimaryDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQueryPrimaryDefault(this); - } - } - - public final QueryPrimaryContext queryPrimary() throws RecognitionException { - QueryPrimaryContext _localctx = new QueryPrimaryContext(_ctx, getState()); - enterRule(_localctx, 234, RULE_queryPrimary); - try { - setState(4637); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SELECT: - _localctx = new QueryPrimaryDefaultContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4631); - querySpecification(); - } - break; - case LEFT_PAREN: - _localctx = new SubqueryContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4632); - match(LEFT_PAREN); - setState(4633); - query(); - setState(4634); - match(RIGHT_PAREN); - } - break; - case VALUES: - _localctx = new ValuesTableContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(4636); - inlineTable(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QuerySpecificationContext extends ParserRuleContext { - public QuerySpecificationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_querySpecification; } - - public QuerySpecificationContext() { } - public void copyFrom(QuerySpecificationContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RegularQuerySpecificationContext extends QuerySpecificationContext { - public SelectClauseContext selectClause() { - return getRuleContext(SelectClauseContext.class,0); - } - public QueryOrganizationContext queryOrganization() { - return getRuleContext(QueryOrganizationContext.class,0); - } - public IntoClauseContext intoClause() { - return getRuleContext(IntoClauseContext.class,0); - } - public FromClauseContext fromClause() { - return getRuleContext(FromClauseContext.class,0); - } - public WhereClauseContext whereClause() { - return getRuleContext(WhereClauseContext.class,0); - } - public AggClauseContext aggClause() { - return getRuleContext(AggClauseContext.class,0); - } - public HavingClauseContext havingClause() { - return getRuleContext(HavingClauseContext.class,0); - } - public QualifyClauseContext qualifyClause() { - return getRuleContext(QualifyClauseContext.class,0); - } - public RegularQuerySpecificationContext(QuerySpecificationContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRegularQuerySpecification(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRegularQuerySpecification(this); - } - } - - public final QuerySpecificationContext querySpecification() throws RecognitionException { - QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState()); - enterRule(_localctx, 236, RULE_querySpecification); - try { - _localctx = new RegularQuerySpecificationContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4639); - selectClause(); - setState(4641); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,666,_ctx) ) { - case 1: - { - setState(4640); - intoClause(); - } - break; - } - setState(4644); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,667,_ctx) ) { - case 1: - { - setState(4643); - fromClause(); - } - break; - } - setState(4647); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) { - case 1: - { - setState(4646); - whereClause(); - } - break; - } - setState(4650); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,669,_ctx) ) { - case 1: - { - setState(4649); - aggClause(); - } - break; - } - setState(4653); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) { - case 1: - { - setState(4652); - havingClause(); - } - break; - } - setState(4656); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,671,_ctx) ) { - case 1: - { - setState(4655); - qualifyClause(); - } - break; - } - setState(4658); - if (!(doris_legacy_SQL_syntax)) throw new FailedPredicateException(this, "doris_legacy_SQL_syntax"); - setState(4659); - queryOrganization(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CteContext extends ParserRuleContext { - public TerminalNode WITH() { return getToken(DorisParser.WITH, 0); } - public List aliasQuery() { - return getRuleContexts(AliasQueryContext.class); - } - public AliasQueryContext aliasQuery(int i) { - return getRuleContext(AliasQueryContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CteContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_cte; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCte(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCte(this); - } - } - - public final CteContext cte() throws RecognitionException { - CteContext _localctx = new CteContext(_ctx, getState()); - enterRule(_localctx, 238, RULE_cte); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4661); - match(WITH); - setState(4662); - aliasQuery(); - setState(4667); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4663); - match(COMMA); - setState(4664); - aliasQuery(); - } - } - setState(4669); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AliasQueryContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ColumnAliasesContext columnAliases() { - return getRuleContext(ColumnAliasesContext.class,0); - } - public AliasQueryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_aliasQuery; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAliasQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAliasQuery(this); - } - } - - public final AliasQueryContext aliasQuery() throws RecognitionException { - AliasQueryContext _localctx = new AliasQueryContext(_ctx, getState()); - enterRule(_localctx, 240, RULE_aliasQuery); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4670); - identifier(); - setState(4672); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4671); - columnAliases(); - } - } - - setState(4674); - match(AS); - setState(4675); - match(LEFT_PAREN); - setState(4676); - query(); - setState(4677); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ColumnAliasesContext extends ParserRuleContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ColumnAliasesContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_columnAliases; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnAliases(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnAliases(this); - } - } - - public final ColumnAliasesContext columnAliases() throws RecognitionException { - ColumnAliasesContext _localctx = new ColumnAliasesContext(_ctx, getState()); - enterRule(_localctx, 242, RULE_columnAliases); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4679); - match(LEFT_PAREN); - setState(4680); - identifier(); - setState(4685); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4681); - match(COMMA); - setState(4682); - identifier(); - } - } - setState(4687); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4688); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SelectClauseContext extends ParserRuleContext { - public TerminalNode SELECT() { return getToken(DorisParser.SELECT, 0); } - public SelectColumnClauseContext selectColumnClause() { - return getRuleContext(SelectColumnClauseContext.class,0); - } - public TerminalNode DISTINCT() { return getToken(DorisParser.DISTINCT, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public SelectClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_selectClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSelectClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSelectClause(this); - } - } - - public final SelectClauseContext selectClause() throws RecognitionException { - SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState()); - enterRule(_localctx, 244, RULE_selectClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4690); - match(SELECT); - setState(4692); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(4691); - _la = _input.LA(1); - if ( !(_la==ALL || _la==DISTINCT) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(4694); - selectColumnClause(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SelectColumnClauseContext extends ParserRuleContext { - public NamedExpressionSeqContext namedExpressionSeq() { - return getRuleContext(NamedExpressionSeqContext.class,0); - } - public SelectColumnClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_selectColumnClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSelectColumnClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSelectColumnClause(this); - } - } - - public final SelectColumnClauseContext selectColumnClause() throws RecognitionException { - SelectColumnClauseContext _localctx = new SelectColumnClauseContext(_ctx, getState()); - enterRule(_localctx, 246, RULE_selectColumnClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4696); - namedExpressionSeq(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WhereClauseContext extends ParserRuleContext { - public TerminalNode WHERE() { return getToken(DorisParser.WHERE, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public WhereClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_whereClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWhereClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWhereClause(this); - } - } - - public final WhereClauseContext whereClause() throws RecognitionException { - WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState()); - enterRule(_localctx, 248, RULE_whereClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4698); - match(WHERE); - setState(4699); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FromClauseContext extends ParserRuleContext { - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public RelationsContext relations() { - return getRuleContext(RelationsContext.class,0); - } - public FromClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFromClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFromClause(this); - } - } - - public final FromClauseContext fromClause() throws RecognitionException { - FromClauseContext _localctx = new FromClauseContext(_ctx, getState()); - enterRule(_localctx, 250, RULE_fromClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4701); - match(FROM); - setState(4702); - relations(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IntoClauseContext extends ParserRuleContext { - public TerminalNode INTO() { return getToken(DorisParser.INTO, 0); } - public List tableRow() { - return getRuleContexts(TableRowContext.class); - } - public TableRowContext tableRow(int i) { - return getRuleContext(TableRowContext.class,i); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public BulkCollectClauseContext bulkCollectClause() { - return getRuleContext(BulkCollectClauseContext.class,0); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public IntoClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_intoClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIntoClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIntoClause(this); - } - } - - public final IntoClauseContext intoClause() throws RecognitionException { - IntoClauseContext _localctx = new IntoClauseContext(_ctx, getState()); - enterRule(_localctx, 252, RULE_intoClause); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(4705); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BULK) { - { - setState(4704); - bulkCollectClause(); - } - } - - setState(4707); - match(INTO); - setState(4710); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,677,_ctx) ) { - case 1: - { - setState(4708); - tableRow(); - } - break; - case 2: - { - setState(4709); - identifier(); - } - break; - } - setState(4719); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,679,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4712); - match(COMMA); - setState(4715); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,678,_ctx) ) { - case 1: - { - setState(4713); - tableRow(); - } - break; - case 2: - { - setState(4714); - identifier(); - } - break; - } - } - } - } - setState(4721); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,679,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BulkCollectClauseContext extends ParserRuleContext { - public TerminalNode BULK() { return getToken(DorisParser.BULK, 0); } - public TerminalNode COLLECT() { return getToken(DorisParser.COLLECT, 0); } - public BulkCollectClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_bulkCollectClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBulkCollectClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBulkCollectClause(this); - } - } - - public final BulkCollectClauseContext bulkCollectClause() throws RecognitionException { - BulkCollectClauseContext _localctx = new BulkCollectClauseContext(_ctx, getState()); - enterRule(_localctx, 254, RULE_bulkCollectClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4722); - match(BULK); - setState(4723); - match(COLLECT); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TableRowContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TableRowContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableRow; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableRow(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableRow(this); - } - } - - public final TableRowContext tableRow() throws RecognitionException { - TableRowContext _localctx = new TableRowContext(_ctx, getState()); - enterRule(_localctx, 256, RULE_tableRow); - try { - enterOuterAlt(_localctx, 1); - { - setState(4725); - identifier(); - setState(4726); - match(LEFT_PAREN); - setState(4727); - match(INTEGER_VALUE); - setState(4728); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RelationsContext extends ParserRuleContext { - public List relation() { - return getRuleContexts(RelationContext.class); - } - public RelationContext relation(int i) { - return getRuleContext(RelationContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public RelationsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_relations; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRelations(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRelations(this); - } - } - - public final RelationsContext relations() throws RecognitionException { - RelationsContext _localctx = new RelationsContext(_ctx, getState()); - enterRule(_localctx, 258, RULE_relations); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(4730); - relation(); - setState(4735); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,680,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4731); - match(COMMA); - setState(4732); - relation(); - } - } - } - setState(4737); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,680,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RelationContext extends ParserRuleContext { - public RelationPrimaryContext relationPrimary() { - return getRuleContext(RelationPrimaryContext.class,0); - } - public List joinRelation() { - return getRuleContexts(JoinRelationContext.class); - } - public JoinRelationContext joinRelation(int i) { - return getRuleContext(JoinRelationContext.class,i); - } - public RelationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_relation; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRelation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRelation(this); - } - } - - public final RelationContext relation() throws RecognitionException { - RelationContext _localctx = new RelationContext(_ctx, getState()); - enterRule(_localctx, 260, RULE_relation); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(4738); - relationPrimary(); - setState(4742); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,681,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4739); - joinRelation(); - } - } - } - setState(4744); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,681,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class JoinRelationContext extends ParserRuleContext { - public RelationPrimaryContext right; - public TerminalNode JOIN() { return getToken(DorisParser.JOIN, 0); } - public RelationPrimaryContext relationPrimary() { - return getRuleContext(RelationPrimaryContext.class,0); - } - public JoinTypeContext joinType() { - return getRuleContext(JoinTypeContext.class,0); - } - public DistributeTypeContext distributeType() { - return getRuleContext(DistributeTypeContext.class,0); - } - public JoinCriteriaContext joinCriteria() { - return getRuleContext(JoinCriteriaContext.class,0); - } - public JoinRelationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_joinRelation; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterJoinRelation(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitJoinRelation(this); - } - } - - public final JoinRelationContext joinRelation() throws RecognitionException { - JoinRelationContext _localctx = new JoinRelationContext(_ctx, getState()); - enterRule(_localctx, 262, RULE_joinRelation); - try { - enterOuterAlt(_localctx, 1); - { - { - setState(4745); - joinType(); - } - setState(4746); - match(JOIN); - setState(4748); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,682,_ctx) ) { - case 1: - { - setState(4747); - distributeType(); - } - break; - } - setState(4750); - ((JoinRelationContext)_localctx).right = relationPrimary(); - setState(4752); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,683,_ctx) ) { - case 1: - { - setState(4751); - joinCriteria(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DistributeTypeContext extends ParserRuleContext { - public DistributeTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_distributeType; } - - public DistributeTypeContext() { } - public void copyFrom(DistributeTypeContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CommentDistributeTypeContext extends DistributeTypeContext { - public TerminalNode HINT_START() { return getToken(DorisParser.HINT_START, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } - public CommentDistributeTypeContext(DistributeTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCommentDistributeType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCommentDistributeType(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BracketDistributeTypeContext extends DistributeTypeContext { - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } - public BracketDistributeTypeContext(DistributeTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBracketDistributeType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBracketDistributeType(this); - } - } - - public final DistributeTypeContext distributeType() throws RecognitionException { - DistributeTypeContext _localctx = new DistributeTypeContext(_ctx, getState()); - enterRule(_localctx, 264, RULE_distributeType); - try { - setState(4762); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACKET: - _localctx = new BracketDistributeTypeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4754); - match(LEFT_BRACKET); - setState(4755); - identifier(); - setState(4756); - match(RIGHT_BRACKET); - } - break; - case HINT_START: - _localctx = new CommentDistributeTypeContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4758); - match(HINT_START); - setState(4759); - identifier(); - setState(4760); - match(HINT_END); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RelationHintContext extends ParserRuleContext { - public RelationHintContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_relationHint; } - - public RelationHintContext() { } - public void copyFrom(RelationHintContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BracketRelationHintContext extends RelationHintContext { - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public BracketRelationHintContext(RelationHintContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBracketRelationHint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBracketRelationHint(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CommentRelationHintContext extends RelationHintContext { - public TerminalNode HINT_START() { return getToken(DorisParser.HINT_START, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public CommentRelationHintContext(RelationHintContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCommentRelationHint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCommentRelationHint(this); - } - } - - public final RelationHintContext relationHint() throws RecognitionException { - RelationHintContext _localctx = new RelationHintContext(_ctx, getState()); - enterRule(_localctx, 266, RULE_relationHint); - int _la; - try { - setState(4786); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACKET: - _localctx = new BracketRelationHintContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(4764); - match(LEFT_BRACKET); - setState(4765); - identifier(); - setState(4770); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4766); - match(COMMA); - setState(4767); - identifier(); - } - } - setState(4772); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4773); - match(RIGHT_BRACKET); - } - break; - case HINT_START: - _localctx = new CommentRelationHintContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(4775); - match(HINT_START); - setState(4776); - identifier(); - setState(4781); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4777); - match(COMMA); - setState(4778); - identifier(); - } - } - setState(4783); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4784); - match(HINT_END); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AggClauseContext extends ParserRuleContext { - public TerminalNode GROUP() { return getToken(DorisParser.GROUP, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public GroupingElementContext groupingElement() { - return getRuleContext(GroupingElementContext.class,0); - } - public AggClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_aggClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAggClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAggClause(this); - } - } - - public final AggClauseContext aggClause() throws RecognitionException { - AggClauseContext _localctx = new AggClauseContext(_ctx, getState()); - enterRule(_localctx, 268, RULE_aggClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4788); - match(GROUP); - setState(4789); - match(BY); - setState(4790); - groupingElement(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GroupingElementContext extends ParserRuleContext { - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TerminalNode CUBE() { return getToken(DorisParser.CUBE, 0); } - public TerminalNode GROUPING() { return getToken(DorisParser.GROUPING, 0); } - public TerminalNode SETS() { return getToken(DorisParser.SETS, 0); } - public List groupingSet() { - return getRuleContexts(GroupingSetContext.class); - } - public GroupingSetContext groupingSet(int i) { - return getRuleContext(GroupingSetContext.class,i); - } - public GroupingElementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_groupingElement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGroupingElement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGroupingElement(this); - } - } - - public final GroupingElementContext groupingElement() throws RecognitionException { - GroupingElementContext _localctx = new GroupingElementContext(_ctx, getState()); - enterRule(_localctx, 270, RULE_groupingElement); - int _la; - try { - int _alt; - setState(4839); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,694,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4792); - match(ROLLUP); - setState(4793); - match(LEFT_PAREN); - setState(4802); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(4794); - expression(); - setState(4799); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4795); - match(COMMA); - setState(4796); - expression(); - } - } - setState(4801); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(4804); - match(RIGHT_PAREN); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4805); - match(CUBE); - setState(4806); - match(LEFT_PAREN); - setState(4815); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(4807); - expression(); - setState(4812); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4808); - match(COMMA); - setState(4809); - expression(); - } - } - setState(4814); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(4817); - match(RIGHT_PAREN); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(4818); - match(GROUPING); - setState(4819); - match(SETS); - setState(4820); - match(LEFT_PAREN); - setState(4821); - groupingSet(); - setState(4826); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4822); - match(COMMA); - setState(4823); - groupingSet(); - } - } - setState(4828); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4829); - match(RIGHT_PAREN); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(4831); - expression(); - setState(4836); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,693,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4832); - match(COMMA); - setState(4833); - expression(); - } - } - } - setState(4838); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,693,_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 GroupingSetContext extends ParserRuleContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public GroupingSetContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_groupingSet; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterGroupingSet(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitGroupingSet(this); - } - } - - public final GroupingSetContext groupingSet() throws RecognitionException { - GroupingSetContext _localctx = new GroupingSetContext(_ctx, getState()); - enterRule(_localctx, 272, RULE_groupingSet); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4841); - match(LEFT_PAREN); - setState(4850); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(4842); - expression(); - setState(4847); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4843); - match(COMMA); - setState(4844); - expression(); - } - } - setState(4849); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(4852); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class HavingClauseContext extends ParserRuleContext { - public TerminalNode HAVING() { return getToken(DorisParser.HAVING, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public HavingClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_havingClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHavingClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHavingClause(this); - } - } - - public final HavingClauseContext havingClause() throws RecognitionException { - HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState()); - enterRule(_localctx, 274, RULE_havingClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4854); - match(HAVING); - setState(4855); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QualifyClauseContext extends ParserRuleContext { - public TerminalNode QUALIFY() { return getToken(DorisParser.QUALIFY, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public QualifyClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifyClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQualifyClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQualifyClause(this); - } - } - - public final QualifyClauseContext qualifyClause() throws RecognitionException { - QualifyClauseContext _localctx = new QualifyClauseContext(_ctx, getState()); - enterRule(_localctx, 276, RULE_qualifyClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(4857); - match(QUALIFY); - setState(4858); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SelectHintContext extends ParserRuleContext { - public HintStatementContext hintStatement; - public List hintStatements = new ArrayList(); - public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } - public List hintStatement() { - return getRuleContexts(HintStatementContext.class); - } - public HintStatementContext hintStatement(int i) { - return getRuleContext(HintStatementContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public SelectHintContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_selectHint; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSelectHint(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSelectHint(this); - } - } - - public final SelectHintContext selectHint() throws RecognitionException { - SelectHintContext _localctx = new SelectHintContext(_ctx, getState()); - enterRule(_localctx, 278, RULE_selectHint); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(4860); - ((SelectHintContext)_localctx).hintStatement = hintStatement(); - ((SelectHintContext)_localctx).hintStatements.add(((SelectHintContext)_localctx).hintStatement); - setState(4867); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,698,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4862); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(4861); - match(COMMA); - } - } - - setState(4864); - ((SelectHintContext)_localctx).hintStatement = hintStatement(); - ((SelectHintContext)_localctx).hintStatements.add(((SelectHintContext)_localctx).hintStatement); - } - } - } - setState(4869); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,698,_ctx); - } - setState(4870); - match(HINT_END); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class HintStatementContext extends ParserRuleContext { - public IdentifierContext hintName; - public HintAssignmentContext hintAssignment; - public List parameters = new ArrayList(); - public MultipartIdentifierContext multipartIdentifier; - public List tableList = new ArrayList(); - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List hintAssignment() { - return getRuleContexts(HintAssignmentContext.class); - } - public HintAssignmentContext hintAssignment(int i) { - return getRuleContext(HintAssignmentContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TerminalNode USE_MV() { return getToken(DorisParser.USE_MV, 0); } - public TerminalNode NO_USE_MV() { return getToken(DorisParser.NO_USE_MV, 0); } - public List multipartIdentifier() { - return getRuleContexts(MultipartIdentifierContext.class); - } - public MultipartIdentifierContext multipartIdentifier(int i) { - return getRuleContext(MultipartIdentifierContext.class,i); - } - public HintStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_hintStatement; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHintStatement(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHintStatement(this); - } - } - - public final HintStatementContext hintStatement() throws RecognitionException { - HintStatementContext _localctx = new HintStatementContext(_ctx, getState()); - enterRule(_localctx, 280, RULE_hintStatement); - int _la; - try { - setState(4902); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(4872); - ((HintStatementContext)_localctx).hintName = identifier(); - setState(4886); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4873); - match(LEFT_PAREN); - setState(4874); - ((HintStatementContext)_localctx).hintAssignment = hintAssignment(); - ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).hintAssignment); - setState(4881); - _errHandler.sync(this); - _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576336L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { - { - { - setState(4876); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMA) { - { - setState(4875); - match(COMMA); - } - } - - setState(4878); - ((HintStatementContext)_localctx).hintAssignment = hintAssignment(); - ((HintStatementContext)_localctx).parameters.add(((HintStatementContext)_localctx).hintAssignment); - } - } - setState(4883); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4884); - match(RIGHT_PAREN); - } - } - - } - break; - case NO_USE_MV: - case USE_MV: - enterOuterAlt(_localctx, 2); - { - setState(4888); - _la = _input.LA(1); - if ( !(_la==NO_USE_MV || _la==USE_MV) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(4900); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(4889); - match(LEFT_PAREN); - setState(4890); - ((HintStatementContext)_localctx).multipartIdentifier = multipartIdentifier(); - ((HintStatementContext)_localctx).tableList.add(((HintStatementContext)_localctx).multipartIdentifier); - setState(4895); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4891); - match(COMMA); - setState(4892); - ((HintStatementContext)_localctx).multipartIdentifier = multipartIdentifier(); - ((HintStatementContext)_localctx).tableList.add(((HintStatementContext)_localctx).multipartIdentifier); - } - } - setState(4897); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(4898); - match(RIGHT_PAREN); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class HintAssignmentContext extends ParserRuleContext { - public IdentifierOrTextContext key; - public ConstantContext constantValue; - public IdentifierContext identifierValue; - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public HintAssignmentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_hintAssignment; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterHintAssignment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitHintAssignment(this); - } - } - - public final HintAssignmentContext hintAssignment() throws RecognitionException { - HintAssignmentContext _localctx = new HintAssignmentContext(_ctx, getState()); - enterRule(_localctx, 282, RULE_hintAssignment); - int _la; - try { - setState(4913); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,707,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(4904); - ((HintAssignmentContext)_localctx).key = identifierOrText(); - setState(4910); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==EQ) { - { - setState(4905); - match(EQ); - setState(4908); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) { - case 1: - { - setState(4906); - ((HintAssignmentContext)_localctx).constantValue = constant(); - } - break; - case 2: - { - setState(4907); - ((HintAssignmentContext)_localctx).identifierValue = identifier(); - } - break; - } - } - } - - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(4912); - constant(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UpdateAssignmentContext extends ParserRuleContext { - public MultipartIdentifierContext col; - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public UpdateAssignmentContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_updateAssignment; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUpdateAssignment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUpdateAssignment(this); - } - } - - public final UpdateAssignmentContext updateAssignment() throws RecognitionException { - UpdateAssignmentContext _localctx = new UpdateAssignmentContext(_ctx, getState()); - enterRule(_localctx, 284, RULE_updateAssignment); - try { - enterOuterAlt(_localctx, 1); - { - setState(4915); - ((UpdateAssignmentContext)_localctx).col = multipartIdentifier(); - setState(4916); - match(EQ); - setState(4919); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_PAREN: - case LEFT_BRACKET: - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case ADD: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BINARY: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CASE: - case CAST: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATABASE: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXISTS: - case EXPIRED: - case EXTERNAL: - case EXTRACT: - case FAILED_LOGIN_ATTEMPTS: - case FALSE: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IF: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INTERVAL: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case KEY: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LEFT: - case LESS: - case LEVEL: - case LIKE: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NOT: - case NULL: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLACEHOLDER: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REGEXP: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RIGHT: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRIM: - case TRUE: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case PLUS: - case SUBTRACT: - case ASTERISK: - case TILDE: - case LOGICALNOT: - case HINT_START: - case HINT_END: - case COMMENT_START: - case ATSIGN: - case DOUBLEATSIGN: - case STRING_LITERAL: - case INTEGER_VALUE: - case EXPONENT_VALUE: - case DECIMAL_VALUE: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(4917); - expression(); - } - break; - case DEFAULT: - { - setState(4918); - match(DEFAULT); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UpdateAssignmentSeqContext extends ParserRuleContext { - public UpdateAssignmentContext updateAssignment; - public List assignments = new ArrayList(); - public List updateAssignment() { - return getRuleContexts(UpdateAssignmentContext.class); - } - public UpdateAssignmentContext updateAssignment(int i) { - return getRuleContext(UpdateAssignmentContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public UpdateAssignmentSeqContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_updateAssignmentSeq; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUpdateAssignmentSeq(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUpdateAssignmentSeq(this); - } - } - - public final UpdateAssignmentSeqContext updateAssignmentSeq() throws RecognitionException { - UpdateAssignmentSeqContext _localctx = new UpdateAssignmentSeqContext(_ctx, getState()); - enterRule(_localctx, 286, RULE_updateAssignmentSeq); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4921); - ((UpdateAssignmentSeqContext)_localctx).updateAssignment = updateAssignment(); - ((UpdateAssignmentSeqContext)_localctx).assignments.add(((UpdateAssignmentSeqContext)_localctx).updateAssignment); - setState(4926); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4922); - match(COMMA); - setState(4923); - ((UpdateAssignmentSeqContext)_localctx).updateAssignment = updateAssignment(); - ((UpdateAssignmentSeqContext)_localctx).assignments.add(((UpdateAssignmentSeqContext)_localctx).updateAssignment); - } - } - setState(4928); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LateralViewContext extends ParserRuleContext { - public IdentifierContext functionName; - public IdentifierContext tableName; - public IdentifierContext identifier; - public List columnNames = new ArrayList(); - public TerminalNode LATERAL() { return getToken(DorisParser.LATERAL, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public LateralViewContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lateralView; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLateralView(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLateralView(this); - } - } - - public final LateralViewContext lateralView() throws RecognitionException { - LateralViewContext _localctx = new LateralViewContext(_ctx, getState()); - enterRule(_localctx, 288, RULE_lateralView); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(4929); - match(LATERAL); - setState(4930); - match(VIEW); - setState(4931); - ((LateralViewContext)_localctx).functionName = identifier(); - setState(4932); - match(LEFT_PAREN); - setState(4941); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(4933); - expression(); - setState(4938); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4934); - match(COMMA); - setState(4935); - expression(); - } - } - setState(4940); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(4943); - match(RIGHT_PAREN); - setState(4944); - ((LateralViewContext)_localctx).tableName = identifier(); - setState(4945); - match(AS); - setState(4946); - ((LateralViewContext)_localctx).identifier = identifier(); - ((LateralViewContext)_localctx).columnNames.add(((LateralViewContext)_localctx).identifier); - setState(4951); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,712,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4947); - match(COMMA); - setState(4948); - ((LateralViewContext)_localctx).identifier = identifier(); - ((LateralViewContext)_localctx).columnNames.add(((LateralViewContext)_localctx).identifier); - } - } - } - setState(4953); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,712,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QueryOrganizationContext extends ParserRuleContext { - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public LimitClauseContext limitClause() { - return getRuleContext(LimitClauseContext.class,0); - } - public QueryOrganizationContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_queryOrganization; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQueryOrganization(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQueryOrganization(this); - } - } - - public final QueryOrganizationContext queryOrganization() throws RecognitionException { - QueryOrganizationContext _localctx = new QueryOrganizationContext(_ctx, getState()); - enterRule(_localctx, 290, RULE_queryOrganization); - try { - enterOuterAlt(_localctx, 1); - { - setState(4955); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) { - case 1: - { - setState(4954); - sortClause(); - } - break; - } - setState(4958); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,714,_ctx) ) { - case 1: - { - setState(4957); - limitClause(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SortClauseContext extends ParserRuleContext { - public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public List sortItem() { - return getRuleContexts(SortItemContext.class); - } - public SortItemContext sortItem(int i) { - return getRuleContext(SortItemContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public SortClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sortClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSortClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSortClause(this); - } - } - - public final SortClauseContext sortClause() throws RecognitionException { - SortClauseContext _localctx = new SortClauseContext(_ctx, getState()); - enterRule(_localctx, 292, RULE_sortClause); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(4960); - match(ORDER); - setState(4961); - match(BY); - setState(4962); - sortItem(); - setState(4967); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,715,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(4963); - match(COMMA); - setState(4964); - sortItem(); - } - } - } - setState(4969); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,715,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SortItemContext extends ParserRuleContext { - public Token ordering; - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode NULLS() { return getToken(DorisParser.NULLS, 0); } - public TerminalNode FIRST() { return getToken(DorisParser.FIRST, 0); } - public TerminalNode LAST() { return getToken(DorisParser.LAST, 0); } - public TerminalNode ASC() { return getToken(DorisParser.ASC, 0); } - public TerminalNode DESC() { return getToken(DorisParser.DESC, 0); } - public SortItemContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sortItem; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSortItem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSortItem(this); - } - } - - public final SortItemContext sortItem() throws RecognitionException { - SortItemContext _localctx = new SortItemContext(_ctx, getState()); - enterRule(_localctx, 294, RULE_sortItem); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4970); - expression(); - setState(4972); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) { - case 1: - { - setState(4971); - ((SortItemContext)_localctx).ordering = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==ASC || _la==DESC) ) { - ((SortItemContext)_localctx).ordering = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - setState(4976); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,717,_ctx) ) { - case 1: - { - setState(4974); - match(NULLS); - setState(4975); - _la = _input.LA(1); - if ( !(_la==FIRST || _la==LAST) ) { - _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 LimitClauseContext extends ParserRuleContext { - public Token limit; - public Token offset; - public TerminalNode LIMIT() { return getToken(DorisParser.LIMIT, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public TerminalNode OFFSET() { return getToken(DorisParser.OFFSET, 0); } - public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } - public LimitClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_limitClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLimitClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLimitClause(this); - } - } - - public final LimitClauseContext limitClause() throws RecognitionException { - LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState()); - enterRule(_localctx, 296, RULE_limitClause); - try { - setState(4988); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,718,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - { - setState(4978); - match(LIMIT); - setState(4979); - ((LimitClauseContext)_localctx).limit = match(INTEGER_VALUE); - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - { - setState(4980); - match(LIMIT); - setState(4981); - ((LimitClauseContext)_localctx).limit = match(INTEGER_VALUE); - setState(4982); - match(OFFSET); - setState(4983); - ((LimitClauseContext)_localctx).offset = match(INTEGER_VALUE); - } - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - { - setState(4984); - match(LIMIT); - setState(4985); - ((LimitClauseContext)_localctx).offset = match(INTEGER_VALUE); - setState(4986); - match(COMMA); - setState(4987); - ((LimitClauseContext)_localctx).limit = match(INTEGER_VALUE); - } - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionClauseContext extends ParserRuleContext { - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PartitionClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionClause(this); - } - } - - public final PartitionClauseContext partitionClause() throws RecognitionException { - PartitionClauseContext _localctx = new PartitionClauseContext(_ctx, getState()); - enterRule(_localctx, 298, RULE_partitionClause); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(4990); - match(PARTITION); - setState(4991); - match(BY); - setState(4992); - expression(); - setState(4997); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(4993); - match(COMMA); - setState(4994); - expression(); - } - } - setState(4999); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class JoinTypeContext extends ParserRuleContext { - public TerminalNode INNER() { return getToken(DorisParser.INNER, 0); } - public TerminalNode CROSS() { return getToken(DorisParser.CROSS, 0); } - public TerminalNode LEFT() { return getToken(DorisParser.LEFT, 0); } - public TerminalNode OUTER() { return getToken(DorisParser.OUTER, 0); } - public TerminalNode RIGHT() { return getToken(DorisParser.RIGHT, 0); } - public TerminalNode FULL() { return getToken(DorisParser.FULL, 0); } - public TerminalNode SEMI() { return getToken(DorisParser.SEMI, 0); } - public TerminalNode ANTI() { return getToken(DorisParser.ANTI, 0); } - public JoinTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_joinType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterJoinType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitJoinType(this); - } - } - - public final JoinTypeContext joinType() throws RecognitionException { - JoinTypeContext _localctx = new JoinTypeContext(_ctx, getState()); - enterRule(_localctx, 300, RULE_joinType); - int _la; - try { - setState(5024); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,724,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5001); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INNER) { - { - setState(5000); - match(INNER); - } - } - - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5003); - match(CROSS); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(5004); - match(LEFT); - setState(5006); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OUTER) { - { - setState(5005); - match(OUTER); - } - } - - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(5008); - match(RIGHT); - setState(5010); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OUTER) { - { - setState(5009); - match(OUTER); - } - } - - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(5012); - match(FULL); - setState(5014); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==OUTER) { - { - setState(5013); - match(OUTER); - } - } - - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(5016); - match(LEFT); - setState(5017); - match(SEMI); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(5018); - match(RIGHT); - setState(5019); - match(SEMI); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(5020); - match(LEFT); - setState(5021); - match(ANTI); - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(5022); - match(RIGHT); - setState(5023); - match(ANTI); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class JoinCriteriaContext extends ParserRuleContext { - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public JoinCriteriaContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_joinCriteria; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterJoinCriteria(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitJoinCriteria(this); - } - } - - public final JoinCriteriaContext joinCriteria() throws RecognitionException { - JoinCriteriaContext _localctx = new JoinCriteriaContext(_ctx, getState()); - enterRule(_localctx, 302, RULE_joinCriteria); - try { - setState(5030); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ON: - enterOuterAlt(_localctx, 1); - { - setState(5026); - match(ON); - setState(5027); - booleanExpression(0); - } - break; - case USING: - enterOuterAlt(_localctx, 2); - { - setState(5028); - match(USING); - setState(5029); - identifierList(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierListContext extends ParserRuleContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public IdentifierSeqContext identifierSeq() { - return getRuleContext(IdentifierSeqContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public IdentifierListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierList(this); - } - } - - public final IdentifierListContext identifierList() throws RecognitionException { - IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); - enterRule(_localctx, 304, RULE_identifierList); - try { - enterOuterAlt(_localctx, 1); - { - setState(5032); - match(LEFT_PAREN); - setState(5033); - identifierSeq(); - setState(5034); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierSeqContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext errorCapturingIdentifier; - public List ident = new ArrayList(); - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public IdentifierSeqContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierSeq; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifierSeq(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifierSeq(this); - } - } - - public final IdentifierSeqContext identifierSeq() throws RecognitionException { - IdentifierSeqContext _localctx = new IdentifierSeqContext(_ctx, getState()); - enterRule(_localctx, 306, RULE_identifierSeq); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5036); - ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); - setState(5041); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5037); - match(COMMA); - setState(5038); - ((IdentifierSeqContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((IdentifierSeqContext)_localctx).ident.add(((IdentifierSeqContext)_localctx).errorCapturingIdentifier); - } - } - setState(5043); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class OptScanParamsContext extends ParserRuleContext { - public IdentifierContext funcName; - public PropertyItemListContext properties; - public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public OptScanParamsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_optScanParams; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterOptScanParams(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitOptScanParams(this); - } - } - - public final OptScanParamsContext optScanParams() throws RecognitionException { - OptScanParamsContext _localctx = new OptScanParamsContext(_ctx, getState()); - enterRule(_localctx, 308, RULE_optScanParams); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5044); - match(ATSIGN); - setState(5045); - ((OptScanParamsContext)_localctx).funcName = identifier(); - setState(5046); - match(LEFT_PAREN); - setState(5048); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576320L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { - { - setState(5047); - ((OptScanParamsContext)_localctx).properties = propertyItemList(); - } - } - - setState(5050); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RelationPrimaryContext extends ParserRuleContext { - public RelationPrimaryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_relationPrimary; } - - public RelationPrimaryContext() { } - public void copyFrom(RelationPrimaryContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TableValuedFunctionContext extends RelationPrimaryContext { - public IdentifierContext tvfName; - public PropertyItemListContext properties; - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TableValuedFunctionContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableValuedFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableValuedFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RelationListContext extends RelationPrimaryContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public RelationsContext relations() { - return getRuleContext(RelationsContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public RelationListContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRelationList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRelationList(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AliasedQueryContext extends RelationPrimaryContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public List lateralView() { - return getRuleContexts(LateralViewContext.class); - } - public LateralViewContext lateralView(int i) { - return getRuleContext(LateralViewContext.class,i); - } - public AliasedQueryContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAliasedQuery(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAliasedQuery(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TableNameContext extends RelationPrimaryContext { - public MultipartIdentifierContext multipartIdentifier() { - return getRuleContext(MultipartIdentifierContext.class,0); - } - public TableAliasContext tableAlias() { - return getRuleContext(TableAliasContext.class,0); - } - public OptScanParamsContext optScanParams() { - return getRuleContext(OptScanParamsContext.class,0); - } - public MaterializedViewNameContext materializedViewName() { - return getRuleContext(MaterializedViewNameContext.class,0); - } - public TableSnapshotContext tableSnapshot() { - return getRuleContext(TableSnapshotContext.class,0); - } - public SpecifiedPartitionContext specifiedPartition() { - return getRuleContext(SpecifiedPartitionContext.class,0); - } - public TabletListContext tabletList() { - return getRuleContext(TabletListContext.class,0); - } - public SampleContext sample() { - return getRuleContext(SampleContext.class,0); - } - public RelationHintContext relationHint() { - return getRuleContext(RelationHintContext.class,0); - } - public List lateralView() { - return getRuleContexts(LateralViewContext.class); - } - public LateralViewContext lateralView(int i) { - return getRuleContext(LateralViewContext.class,i); - } - public TableNameContext(RelationPrimaryContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableName(this); - } - } - - public final RelationPrimaryContext relationPrimary() throws RecognitionException { - RelationPrimaryContext _localctx = new RelationPrimaryContext(_ctx, getState()); - enterRule(_localctx, 310, RULE_relationPrimary); - int _la; - try { - int _alt; - setState(5103); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,738,_ctx) ) { - case 1: - _localctx = new TableNameContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(5052); - multipartIdentifier(); - setState(5054); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) { - case 1: - { - setState(5053); - optScanParams(); - } - break; - } - setState(5057); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,729,_ctx) ) { - case 1: - { - setState(5056); - materializedViewName(); - } - break; - } - setState(5060); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,730,_ctx) ) { - case 1: - { - setState(5059); - tableSnapshot(); - } - break; - } - setState(5063); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,731,_ctx) ) { - case 1: - { - setState(5062); - specifiedPartition(); - } - break; - } - setState(5066); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) { - case 1: - { - setState(5065); - tabletList(); - } - break; - } - setState(5068); - tableAlias(); - setState(5070); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) { - case 1: - { - setState(5069); - sample(); - } - break; - } - setState(5073); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,734,_ctx) ) { - case 1: - { - setState(5072); - relationHint(); - } - break; - } - setState(5078); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,735,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5075); - lateralView(); - } - } - } - setState(5080); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,735,_ctx); - } - } - break; - case 2: - _localctx = new AliasedQueryContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(5081); - match(LEFT_PAREN); - setState(5082); - query(); - setState(5083); - match(RIGHT_PAREN); - setState(5084); - tableAlias(); - setState(5088); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,736,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5085); - lateralView(); - } - } - } - setState(5090); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,736,_ctx); - } - } - break; - case 3: - _localctx = new TableValuedFunctionContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(5091); - ((TableValuedFunctionContext)_localctx).tvfName = identifier(); - setState(5092); - match(LEFT_PAREN); - setState(5094); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245576320L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232420542927452621L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305342977L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 1155322837235969747L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 56359L) != 0)) { - { - setState(5093); - ((TableValuedFunctionContext)_localctx).properties = propertyItemList(); - } - } - - setState(5096); - match(RIGHT_PAREN); - setState(5097); - tableAlias(); - } - break; - case 4: - _localctx = new RelationListContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(5099); - match(LEFT_PAREN); - setState(5100); - relations(); - setState(5101); - match(RIGHT_PAREN); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MaterializedViewNameContext extends ParserRuleContext { - public IdentifierContext indexName; - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public MaterializedViewNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_materializedViewName; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMaterializedViewName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMaterializedViewName(this); - } - } - - public final MaterializedViewNameContext materializedViewName() throws RecognitionException { - MaterializedViewNameContext _localctx = new MaterializedViewNameContext(_ctx, getState()); - enterRule(_localctx, 312, RULE_materializedViewName); - try { - enterOuterAlt(_localctx, 1); - { - setState(5105); - match(INDEX); - setState(5106); - ((MaterializedViewNameContext)_localctx).indexName = identifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyClauseContext extends ParserRuleContext { - public PropertyItemListContext fileProperties; - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public PropertyClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyClause(this); - } - } - - public final PropertyClauseContext propertyClause() throws RecognitionException { - PropertyClauseContext _localctx = new PropertyClauseContext(_ctx, getState()); - enterRule(_localctx, 314, RULE_propertyClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(5108); - match(PROPERTIES); - setState(5109); - match(LEFT_PAREN); - setState(5110); - ((PropertyClauseContext)_localctx).fileProperties = propertyItemList(); - setState(5111); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyItemListContext extends ParserRuleContext { - public PropertyItemContext propertyItem; - public List properties = new ArrayList(); - public List propertyItem() { - return getRuleContexts(PropertyItemContext.class); - } - public PropertyItemContext propertyItem(int i) { - return getRuleContext(PropertyItemContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PropertyItemListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyItemList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyItemList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyItemList(this); - } - } - - public final PropertyItemListContext propertyItemList() throws RecognitionException { - PropertyItemListContext _localctx = new PropertyItemListContext(_ctx, getState()); - enterRule(_localctx, 316, RULE_propertyItemList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5113); - ((PropertyItemListContext)_localctx).propertyItem = propertyItem(); - ((PropertyItemListContext)_localctx).properties.add(((PropertyItemListContext)_localctx).propertyItem); - setState(5118); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5114); - match(COMMA); - setState(5115); - ((PropertyItemListContext)_localctx).propertyItem = propertyItem(); - ((PropertyItemListContext)_localctx).properties.add(((PropertyItemListContext)_localctx).propertyItem); - } - } - setState(5120); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyItemContext extends ParserRuleContext { - public PropertyKeyContext key; - public PropertyValueContext value; - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public PropertyKeyContext propertyKey() { - return getRuleContext(PropertyKeyContext.class,0); - } - public PropertyValueContext propertyValue() { - return getRuleContext(PropertyValueContext.class,0); - } - public PropertyItemContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyItem; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyItem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyItem(this); - } - } - - public final PropertyItemContext propertyItem() throws RecognitionException { - PropertyItemContext _localctx = new PropertyItemContext(_ctx, getState()); - enterRule(_localctx, 318, RULE_propertyItem); - try { - enterOuterAlt(_localctx, 1); - { - setState(5121); - ((PropertyItemContext)_localctx).key = propertyKey(); - setState(5122); - match(EQ); - setState(5123); - ((PropertyItemContext)_localctx).value = propertyValue(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyKeyContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public PropertyKeyContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyKey; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyKey(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyKey(this); - } - } - - public final PropertyKeyContext propertyKey() throws RecognitionException { - PropertyKeyContext _localctx = new PropertyKeyContext(_ctx, getState()); - enterRule(_localctx, 320, RULE_propertyKey); - try { - setState(5127); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,740,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5125); - identifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5126); - constant(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PropertyValueContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public PropertyValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_propertyValue; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPropertyValue(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPropertyValue(this); - } - } - - public final PropertyValueContext propertyValue() throws RecognitionException { - PropertyValueContext _localctx = new PropertyValueContext(_ctx, getState()); - enterRule(_localctx, 322, RULE_propertyValue); - try { - setState(5131); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,741,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5129); - identifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5130); - constant(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TableAliasContext extends ParserRuleContext { - public StrictIdentifierContext strictIdentifier() { - return getRuleContext(StrictIdentifierContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TableAliasContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableAlias; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableAlias(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableAlias(this); - } - } - - public final TableAliasContext tableAlias() throws RecognitionException { - TableAliasContext _localctx = new TableAliasContext(_ctx, getState()); - enterRule(_localctx, 324, RULE_tableAlias); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5140); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,744,_ctx) ) { - case 1: - { - setState(5134); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(5133); - match(AS); - } - } - - setState(5136); - strictIdentifier(); - setState(5138); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,743,_ctx) ) { - case 1: - { - setState(5137); - identifierList(); - } - break; - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MultipartIdentifierContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext errorCapturingIdentifier; - public List parts = new ArrayList(); - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public List DOT() { return getTokens(DorisParser.DOT); } - public TerminalNode DOT(int i) { - return getToken(DorisParser.DOT, i); - } - public MultipartIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_multipartIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMultipartIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMultipartIdentifier(this); - } - } - - public final MultipartIdentifierContext multipartIdentifier() throws RecognitionException { - MultipartIdentifierContext _localctx = new MultipartIdentifierContext(_ctx, getState()); - enterRule(_localctx, 326, RULE_multipartIdentifier); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5142); - ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); - setState(5147); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,745,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5143); - match(DOT); - setState(5144); - ((MultipartIdentifierContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((MultipartIdentifierContext)_localctx).parts.add(((MultipartIdentifierContext)_localctx).errorCapturingIdentifier); - } - } - } - setState(5149); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,745,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SimpleColumnDefsContext extends ParserRuleContext { - public SimpleColumnDefContext simpleColumnDef; - public List cols = new ArrayList(); - public List simpleColumnDef() { - return getRuleContexts(SimpleColumnDefContext.class); - } - public SimpleColumnDefContext simpleColumnDef(int i) { - return getRuleContext(SimpleColumnDefContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public SimpleColumnDefsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_simpleColumnDefs; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSimpleColumnDefs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSimpleColumnDefs(this); - } - } - - public final SimpleColumnDefsContext simpleColumnDefs() throws RecognitionException { - SimpleColumnDefsContext _localctx = new SimpleColumnDefsContext(_ctx, getState()); - enterRule(_localctx, 328, RULE_simpleColumnDefs); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5150); - ((SimpleColumnDefsContext)_localctx).simpleColumnDef = simpleColumnDef(); - ((SimpleColumnDefsContext)_localctx).cols.add(((SimpleColumnDefsContext)_localctx).simpleColumnDef); - setState(5155); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5151); - match(COMMA); - setState(5152); - ((SimpleColumnDefsContext)_localctx).simpleColumnDef = simpleColumnDef(); - ((SimpleColumnDefsContext)_localctx).cols.add(((SimpleColumnDefsContext)_localctx).simpleColumnDef); - } - } - setState(5157); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SimpleColumnDefContext extends ParserRuleContext { - public IdentifierContext colName; - public Token comment; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public SimpleColumnDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_simpleColumnDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSimpleColumnDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSimpleColumnDef(this); - } - } - - public final SimpleColumnDefContext simpleColumnDef() throws RecognitionException { - SimpleColumnDefContext _localctx = new SimpleColumnDefContext(_ctx, getState()); - enterRule(_localctx, 330, RULE_simpleColumnDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5158); - ((SimpleColumnDefContext)_localctx).colName = identifier(); - setState(5161); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(5159); - match(COMMENT); - setState(5160); - ((SimpleColumnDefContext)_localctx).comment = match(STRING_LITERAL); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ColumnDefsContext extends ParserRuleContext { - public ColumnDefContext columnDef; - public List cols = new ArrayList(); - public List columnDef() { - return getRuleContexts(ColumnDefContext.class); - } - public ColumnDefContext columnDef(int i) { - return getRuleContext(ColumnDefContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ColumnDefsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_columnDefs; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnDefs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnDefs(this); - } - } - - public final ColumnDefsContext columnDefs() throws RecognitionException { - ColumnDefsContext _localctx = new ColumnDefsContext(_ctx, getState()); - enterRule(_localctx, 332, RULE_columnDefs); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5163); - ((ColumnDefsContext)_localctx).columnDef = columnDef(); - ((ColumnDefsContext)_localctx).cols.add(((ColumnDefsContext)_localctx).columnDef); - setState(5168); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,748,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5164); - match(COMMA); - setState(5165); - ((ColumnDefsContext)_localctx).columnDef = columnDef(); - ((ColumnDefsContext)_localctx).cols.add(((ColumnDefsContext)_localctx).columnDef); - } - } - } - setState(5170); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,748,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ColumnDefContext extends ParserRuleContext { - public IdentifierContext colName; - public DataTypeContext type; - public AggTypeDefContext aggType; - public ExpressionContext generatedExpr; - public Token nullable; - public NumberContext autoIncInitValue; - public Token nullValue; - public Token stringValue; - public Token defaultTimestamp; - public NumberContext defaultValuePrecision; - public NumberContext onUpdateValuePrecision; - public Token comment; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public List LEFT_PAREN() { return getTokens(DorisParser.LEFT_PAREN); } - public TerminalNode LEFT_PAREN(int i) { - return getToken(DorisParser.LEFT_PAREN, i); - } - public List RIGHT_PAREN() { return getTokens(DorisParser.RIGHT_PAREN); } - public TerminalNode RIGHT_PAREN(int i) { - return getToken(DorisParser.RIGHT_PAREN, i); - } - public TerminalNode AUTO_INCREMENT() { return getToken(DorisParser.AUTO_INCREMENT, 0); } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public TerminalNode ON() { return getToken(DorisParser.ON, 0); } - public TerminalNode UPDATE() { return getToken(DorisParser.UPDATE, 0); } - public List CURRENT_TIMESTAMP() { return getTokens(DorisParser.CURRENT_TIMESTAMP); } - public TerminalNode CURRENT_TIMESTAMP(int i) { - return getToken(DorisParser.CURRENT_TIMESTAMP, i); - } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public AggTypeDefContext aggTypeDef() { - return getRuleContext(AggTypeDefContext.class,0); - } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public List NULL() { return getTokens(DorisParser.NULL); } - public TerminalNode NULL(int i) { - return getToken(DorisParser.NULL, i); - } - public List STRING_LITERAL() { return getTokens(DorisParser.STRING_LITERAL); } - public TerminalNode STRING_LITERAL(int i) { - return getToken(DorisParser.STRING_LITERAL, i); - } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode DECIMAL_VALUE() { return getToken(DorisParser.DECIMAL_VALUE, 0); } - public TerminalNode PI() { return getToken(DorisParser.PI, 0); } - public TerminalNode E() { return getToken(DorisParser.E, 0); } - public TerminalNode BITMAP_EMPTY() { return getToken(DorisParser.BITMAP_EMPTY, 0); } - public TerminalNode CURRENT_DATE() { return getToken(DorisParser.CURRENT_DATE, 0); } - public TerminalNode GENERATED() { return getToken(DorisParser.GENERATED, 0); } - public TerminalNode ALWAYS() { return getToken(DorisParser.ALWAYS, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public List number() { - return getRuleContexts(NumberContext.class); - } - public NumberContext number(int i) { - return getRuleContext(NumberContext.class,i); - } - public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } - public ColumnDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_columnDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnDef(this); - } - } - - public final ColumnDefContext columnDef() throws RecognitionException { - ColumnDefContext _localctx = new ColumnDefContext(_ctx, getState()); - enterRule(_localctx, 334, RULE_columnDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5171); - ((ColumnDefContext)_localctx).colName = identifier(); - setState(5172); - ((ColumnDefContext)_localctx).type = dataType(); - setState(5174); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==KEY) { - { - setState(5173); - match(KEY); - } - } - - setState(5177); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BITMAP_UNION || _la==GENERIC || _la==HLL_UNION || _la==MAX || _la==MIN || ((((_la - 353)) & ~0x3f) == 0 && ((1L << (_la - 353)) & 6291457L) != 0) || _la==SUM) { - { - setState(5176); - ((ColumnDefContext)_localctx).aggType = aggTypeDef(); - } - } - - setState(5188); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS || _la==GENERATED) { - { - setState(5181); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==GENERATED) { - { - setState(5179); - match(GENERATED); - setState(5180); - match(ALWAYS); - } - } - - setState(5183); - match(AS); - setState(5184); - match(LEFT_PAREN); - setState(5185); - ((ColumnDefContext)_localctx).generatedExpr = expression(); - setState(5186); - match(RIGHT_PAREN); - } - } - - setState(5194); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT || _la==NULL) { - { - setState(5191); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5190); - match(NOT); - } - } - - setState(5193); - ((ColumnDefContext)_localctx).nullable = match(NULL); - } - } - - setState(5203); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AUTO_INCREMENT) { - { - setState(5196); - match(AUTO_INCREMENT); - setState(5201); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(5197); - match(LEFT_PAREN); - setState(5198); - ((ColumnDefContext)_localctx).autoIncInitValue = number(); - setState(5199); - match(RIGHT_PAREN); - } - } - - } - } - - setState(5229); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DEFAULT) { - { - setState(5205); - match(DEFAULT); - setState(5227); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,760,_ctx) ) { - case 1: - { - setState(5206); - ((ColumnDefContext)_localctx).nullValue = match(NULL); - } - break; - case 2: - { - setState(5208); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SUBTRACT) { - { - setState(5207); - match(SUBTRACT); - } - } - - setState(5210); - match(INTEGER_VALUE); - } - break; - case 3: - { - setState(5212); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SUBTRACT) { - { - setState(5211); - match(SUBTRACT); - } - } - - setState(5214); - match(DECIMAL_VALUE); - } - break; - case 4: - { - setState(5215); - match(PI); - } - break; - case 5: - { - setState(5216); - match(E); - } - break; - case 6: - { - setState(5217); - match(BITMAP_EMPTY); - } - break; - case 7: - { - setState(5218); - ((ColumnDefContext)_localctx).stringValue = match(STRING_LITERAL); - } - break; - case 8: - { - setState(5219); - match(CURRENT_DATE); - } - break; - case 9: - { - setState(5220); - ((ColumnDefContext)_localctx).defaultTimestamp = match(CURRENT_TIMESTAMP); - setState(5225); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(5221); - match(LEFT_PAREN); - setState(5222); - ((ColumnDefContext)_localctx).defaultValuePrecision = number(); - setState(5223); - match(RIGHT_PAREN); - } - } - - } - break; - } - } - } - - setState(5240); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ON) { - { - setState(5231); - match(ON); - setState(5232); - match(UPDATE); - setState(5233); - match(CURRENT_TIMESTAMP); - setState(5238); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(5234); - match(LEFT_PAREN); - setState(5235); - ((ColumnDefContext)_localctx).onUpdateValuePrecision = number(); - setState(5236); - match(RIGHT_PAREN); - } - } - - } - } - - setState(5244); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(5242); - match(COMMENT); - setState(5243); - ((ColumnDefContext)_localctx).comment = match(STRING_LITERAL); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IndexDefsContext extends ParserRuleContext { - public IndexDefContext indexDef; - public List indexes = new ArrayList(); - public List indexDef() { - return getRuleContexts(IndexDefContext.class); - } - public IndexDefContext indexDef(int i) { - return getRuleContext(IndexDefContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public IndexDefsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_indexDefs; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIndexDefs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIndexDefs(this); - } - } - - public final IndexDefsContext indexDefs() throws RecognitionException { - IndexDefsContext _localctx = new IndexDefsContext(_ctx, getState()); - enterRule(_localctx, 336, RULE_indexDefs); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5246); - ((IndexDefsContext)_localctx).indexDef = indexDef(); - ((IndexDefsContext)_localctx).indexes.add(((IndexDefsContext)_localctx).indexDef); - setState(5251); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,765,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5247); - match(COMMA); - setState(5248); - ((IndexDefsContext)_localctx).indexDef = indexDef(); - ((IndexDefsContext)_localctx).indexes.add(((IndexDefsContext)_localctx).indexDef); - } - } - } - setState(5253); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,765,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IndexDefContext extends ParserRuleContext { - public Token ifNotExists; - public IdentifierContext indexName; - public IdentifierListContext cols; - public Token indexType; - public PropertyItemListContext properties; - public Token comment; - public TerminalNode INDEX() { return getToken(DorisParser.INDEX, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } - public TerminalNode INVERTED() { return getToken(DorisParser.INVERTED, 0); } - public TerminalNode NGRAM_BF() { return getToken(DorisParser.NGRAM_BF, 0); } - public IndexDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_indexDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIndexDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIndexDef(this); - } - } - - public final IndexDefContext indexDef() throws RecognitionException { - IndexDefContext _localctx = new IndexDefContext(_ctx, getState()); - enterRule(_localctx, 338, RULE_indexDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5254); - match(INDEX); - setState(5258); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(5255); - ((IndexDefContext)_localctx).ifNotExists = match(IF); - setState(5256); - match(NOT); - setState(5257); - match(EXISTS); - } - } - - setState(5260); - ((IndexDefContext)_localctx).indexName = identifier(); - setState(5261); - ((IndexDefContext)_localctx).cols = identifierList(); - setState(5264); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(5262); - match(USING); - setState(5263); - ((IndexDefContext)_localctx).indexType = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==BITMAP || _la==INVERTED || _la==NGRAM_BF) ) { - ((IndexDefContext)_localctx).indexType = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(5271); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(5266); - match(PROPERTIES); - setState(5267); - match(LEFT_PAREN); - setState(5268); - ((IndexDefContext)_localctx).properties = propertyItemList(); - setState(5269); - match(RIGHT_PAREN); - } - } - - setState(5275); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(5273); - match(COMMENT); - setState(5274); - ((IndexDefContext)_localctx).comment = match(STRING_LITERAL); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionsDefContext extends ParserRuleContext { - public PartitionDefContext partitionDef; - public List partitions = new ArrayList(); - public List partitionDef() { - return getRuleContexts(PartitionDefContext.class); - } - public PartitionDefContext partitionDef(int i) { - return getRuleContext(PartitionDefContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PartitionsDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionsDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionsDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionsDef(this); - } - } - - public final PartitionsDefContext partitionsDef() throws RecognitionException { - PartitionsDefContext _localctx = new PartitionsDefContext(_ctx, getState()); - enterRule(_localctx, 340, RULE_partitionsDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5277); - ((PartitionsDefContext)_localctx).partitionDef = partitionDef(); - ((PartitionsDefContext)_localctx).partitions.add(((PartitionsDefContext)_localctx).partitionDef); - setState(5282); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5278); - match(COMMA); - setState(5279); - ((PartitionsDefContext)_localctx).partitionDef = partitionDef(); - ((PartitionsDefContext)_localctx).partitions.add(((PartitionsDefContext)_localctx).partitionDef); - } - } - setState(5284); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionDefContext extends ParserRuleContext { - public PropertyItemListContext partitionProperties; - public LessThanPartitionDefContext lessThanPartitionDef() { - return getRuleContext(LessThanPartitionDefContext.class,0); - } - public FixedPartitionDefContext fixedPartitionDef() { - return getRuleContext(FixedPartitionDefContext.class,0); - } - public StepPartitionDefContext stepPartitionDef() { - return getRuleContext(StepPartitionDefContext.class,0); - } - public InPartitionDefContext inPartitionDef() { - return getRuleContext(InPartitionDefContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PropertyItemListContext propertyItemList() { - return getRuleContext(PropertyItemListContext.class,0); - } - public PartitionDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionDef(this); - } - } - - public final PartitionDefContext partitionDef() throws RecognitionException { - PartitionDefContext _localctx = new PartitionDefContext(_ctx, getState()); - enterRule(_localctx, 342, RULE_partitionDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5289); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,771,_ctx) ) { - case 1: - { - setState(5285); - lessThanPartitionDef(); - } - break; - case 2: - { - setState(5286); - fixedPartitionDef(); - } - break; - case 3: - { - setState(5287); - stepPartitionDef(); - } - break; - case 4: - { - setState(5288); - inPartitionDef(); - } - break; - } - setState(5295); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(5291); - match(LEFT_PAREN); - setState(5292); - ((PartitionDefContext)_localctx).partitionProperties = propertyItemList(); - setState(5293); - match(RIGHT_PAREN); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LessThanPartitionDefContext extends ParserRuleContext { - public IdentifierContext partitionName; - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } - public TerminalNode LESS() { return getToken(DorisParser.LESS, 0); } - public TerminalNode THAN() { return getToken(DorisParser.THAN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode MAXVALUE() { return getToken(DorisParser.MAXVALUE, 0); } - public PartitionValueListContext partitionValueList() { - return getRuleContext(PartitionValueListContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public LessThanPartitionDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lessThanPartitionDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLessThanPartitionDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLessThanPartitionDef(this); - } - } - - public final LessThanPartitionDefContext lessThanPartitionDef() throws RecognitionException { - LessThanPartitionDefContext _localctx = new LessThanPartitionDefContext(_ctx, getState()); - enterRule(_localctx, 344, RULE_lessThanPartitionDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5297); - match(PARTITION); - setState(5301); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(5298); - match(IF); - setState(5299); - match(NOT); - setState(5300); - match(EXISTS); - } - } - - setState(5303); - ((LessThanPartitionDefContext)_localctx).partitionName = identifier(); - setState(5304); - match(VALUES); - setState(5305); - match(LESS); - setState(5306); - match(THAN); - setState(5309); - _errHandler.sync(this); - switch (_input.LA(1)) { - case MAXVALUE: - { - setState(5307); - match(MAXVALUE); - } - break; - case LEFT_PAREN: - { - setState(5308); - partitionValueList(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FixedPartitionDefContext extends ParserRuleContext { - public IdentifierContext partitionName; - public PartitionValueListContext lower; - public PartitionValueListContext upper; - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List partitionValueList() { - return getRuleContexts(PartitionValueListContext.class); - } - public PartitionValueListContext partitionValueList(int i) { - return getRuleContext(PartitionValueListContext.class,i); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public FixedPartitionDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fixedPartitionDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFixedPartitionDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFixedPartitionDef(this); - } - } - - public final FixedPartitionDefContext fixedPartitionDef() throws RecognitionException { - FixedPartitionDefContext _localctx = new FixedPartitionDefContext(_ctx, getState()); - enterRule(_localctx, 346, RULE_fixedPartitionDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5311); - match(PARTITION); - setState(5315); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(5312); - match(IF); - setState(5313); - match(NOT); - setState(5314); - match(EXISTS); - } - } - - setState(5317); - ((FixedPartitionDefContext)_localctx).partitionName = identifier(); - setState(5318); - match(VALUES); - setState(5319); - match(LEFT_BRACKET); - setState(5320); - ((FixedPartitionDefContext)_localctx).lower = partitionValueList(); - setState(5321); - match(COMMA); - setState(5322); - ((FixedPartitionDefContext)_localctx).upper = partitionValueList(); - setState(5323); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StepPartitionDefContext extends ParserRuleContext { - public PartitionValueListContext from; - public PartitionValueListContext to; - public Token unitsAmount; - public UnitIdentifierContext unit; - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode TO() { return getToken(DorisParser.TO, 0); } - public TerminalNode INTERVAL() { return getToken(DorisParser.INTERVAL, 0); } - public List partitionValueList() { - return getRuleContexts(PartitionValueListContext.class); - } - public PartitionValueListContext partitionValueList(int i) { - return getRuleContext(PartitionValueListContext.class,i); - } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public UnitIdentifierContext unitIdentifier() { - return getRuleContext(UnitIdentifierContext.class,0); - } - public StepPartitionDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_stepPartitionDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStepPartitionDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStepPartitionDef(this); - } - } - - public final StepPartitionDefContext stepPartitionDef() throws RecognitionException { - StepPartitionDefContext _localctx = new StepPartitionDefContext(_ctx, getState()); - enterRule(_localctx, 348, RULE_stepPartitionDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5325); - match(FROM); - setState(5326); - ((StepPartitionDefContext)_localctx).from = partitionValueList(); - setState(5327); - match(TO); - setState(5328); - ((StepPartitionDefContext)_localctx).to = partitionValueList(); - setState(5329); - match(INTERVAL); - setState(5330); - ((StepPartitionDefContext)_localctx).unitsAmount = match(INTEGER_VALUE); - setState(5332); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DAY || _la==HOUR || _la==MINUTE || _la==MONTH || _la==QUARTER || _la==SECOND || _la==WEEK || _la==YEAR) { - { - setState(5331); - ((StepPartitionDefContext)_localctx).unit = unitIdentifier(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class InPartitionDefContext extends ParserRuleContext { - public IdentifierContext partitionName; - public PartitionValueListContext partitionValueList; - public List partitionValueLists = new ArrayList(); - public PartitionValueListContext constants; - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public List partitionValueList() { - return getRuleContexts(PartitionValueListContext.class); - } - public PartitionValueListContext partitionValueList(int i) { - return getRuleContext(PartitionValueListContext.class,i); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public InPartitionDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_inPartitionDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInPartitionDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInPartitionDef(this); - } - } - - public final InPartitionDefContext inPartitionDef() throws RecognitionException { - InPartitionDefContext _localctx = new InPartitionDefContext(_ctx, getState()); - enterRule(_localctx, 350, RULE_inPartitionDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5334); - match(PARTITION); - setState(5338); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==IF) { - { - setState(5335); - match(IF); - setState(5336); - match(NOT); - setState(5337); - match(EXISTS); - } - } - - setState(5340); - ((InPartitionDefContext)_localctx).partitionName = identifier(); - setState(5357); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==VALUES) { - { - setState(5341); - match(VALUES); - setState(5342); - match(IN); - setState(5355); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) { - case 1: - { - { - setState(5343); - match(LEFT_PAREN); - setState(5344); - ((InPartitionDefContext)_localctx).partitionValueList = partitionValueList(); - ((InPartitionDefContext)_localctx).partitionValueLists.add(((InPartitionDefContext)_localctx).partitionValueList); - setState(5349); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5345); - match(COMMA); - setState(5346); - ((InPartitionDefContext)_localctx).partitionValueList = partitionValueList(); - ((InPartitionDefContext)_localctx).partitionValueLists.add(((InPartitionDefContext)_localctx).partitionValueList); - } - } - setState(5351); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5352); - match(RIGHT_PAREN); - } - } - break; - case 2: - { - setState(5354); - ((InPartitionDefContext)_localctx).constants = partitionValueList(); - } - break; - } - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionValueListContext extends ParserRuleContext { - public PartitionValueDefContext partitionValueDef; - public List values = new ArrayList(); - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List partitionValueDef() { - return getRuleContexts(PartitionValueDefContext.class); - } - public PartitionValueDefContext partitionValueDef(int i) { - return getRuleContext(PartitionValueDefContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PartitionValueListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionValueList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionValueList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionValueList(this); - } - } - - public final PartitionValueListContext partitionValueList() throws RecognitionException { - PartitionValueListContext _localctx = new PartitionValueListContext(_ctx, getState()); - enterRule(_localctx, 352, RULE_partitionValueList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5359); - match(LEFT_PAREN); - setState(5360); - ((PartitionValueListContext)_localctx).partitionValueDef = partitionValueDef(); - ((PartitionValueListContext)_localctx).values.add(((PartitionValueListContext)_localctx).partitionValueDef); - setState(5365); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5361); - match(COMMA); - setState(5362); - ((PartitionValueListContext)_localctx).partitionValueDef = partitionValueDef(); - ((PartitionValueListContext)_localctx).values.add(((PartitionValueListContext)_localctx).partitionValueDef); - } - } - setState(5367); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5368); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PartitionValueDefContext extends ParserRuleContext { - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode MAXVALUE() { return getToken(DorisParser.MAXVALUE, 0); } - public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } - public PartitionValueDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_partitionValueDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPartitionValueDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPartitionValueDef(this); - } - } - - public final PartitionValueDefContext partitionValueDef() throws RecognitionException { - PartitionValueDefContext _localctx = new PartitionValueDefContext(_ctx, getState()); - enterRule(_localctx, 354, RULE_partitionValueDef); - int _la; - try { - setState(5377); - _errHandler.sync(this); - switch (_input.LA(1)) { - case SUBTRACT: - case INTEGER_VALUE: - enterOuterAlt(_localctx, 1); - { - setState(5371); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SUBTRACT) { - { - setState(5370); - match(SUBTRACT); - } - } - - setState(5373); - match(INTEGER_VALUE); - } - break; - case STRING_LITERAL: - enterOuterAlt(_localctx, 2); - { - setState(5374); - match(STRING_LITERAL); - } - break; - case MAXVALUE: - enterOuterAlt(_localctx, 3); - { - setState(5375); - match(MAXVALUE); - } - break; - case NULL: - enterOuterAlt(_localctx, 4); - { - setState(5376); - match(NULL); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RollupDefsContext extends ParserRuleContext { - public RollupDefContext rollupDef; - public List rollups = new ArrayList(); - public List rollupDef() { - return getRuleContexts(RollupDefContext.class); - } - public RollupDefContext rollupDef(int i) { - return getRuleContext(RollupDefContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public RollupDefsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rollupDefs; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRollupDefs(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRollupDefs(this); - } - } - - public final RollupDefsContext rollupDefs() throws RecognitionException { - RollupDefsContext _localctx = new RollupDefsContext(_ctx, getState()); - enterRule(_localctx, 356, RULE_rollupDefs); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5379); - ((RollupDefsContext)_localctx).rollupDef = rollupDef(); - ((RollupDefsContext)_localctx).rollups.add(((RollupDefsContext)_localctx).rollupDef); - setState(5384); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5380); - match(COMMA); - setState(5381); - ((RollupDefsContext)_localctx).rollupDef = rollupDef(); - ((RollupDefsContext)_localctx).rollups.add(((RollupDefsContext)_localctx).rollupDef); - } - } - setState(5386); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RollupDefContext extends ParserRuleContext { - public IdentifierContext rollupName; - public IdentifierListContext rollupCols; - public IdentifierListContext dupKeys; - public PropertyClauseContext properties; - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public List identifierList() { - return getRuleContexts(IdentifierListContext.class); - } - public IdentifierListContext identifierList(int i) { - return getRuleContext(IdentifierListContext.class,i); - } - public TerminalNode DUPLICATE() { return getToken(DorisParser.DUPLICATE, 0); } - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public PropertyClauseContext propertyClause() { - return getRuleContext(PropertyClauseContext.class,0); - } - public RollupDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rollupDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRollupDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRollupDef(this); - } - } - - public final RollupDefContext rollupDef() throws RecognitionException { - RollupDefContext _localctx = new RollupDefContext(_ctx, getState()); - enterRule(_localctx, 358, RULE_rollupDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5387); - ((RollupDefContext)_localctx).rollupName = identifier(); - setState(5388); - ((RollupDefContext)_localctx).rollupCols = identifierList(); - setState(5392); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==DUPLICATE) { - { - setState(5389); - match(DUPLICATE); - setState(5390); - match(KEY); - setState(5391); - ((RollupDefContext)_localctx).dupKeys = identifierList(); - } - } - - setState(5395); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PROPERTIES) { - { - setState(5394); - ((RollupDefContext)_localctx).properties = propertyClause(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class AggTypeDefContext extends ParserRuleContext { - public TerminalNode MAX() { return getToken(DorisParser.MAX, 0); } - public TerminalNode MIN() { return getToken(DorisParser.MIN, 0); } - public TerminalNode SUM() { return getToken(DorisParser.SUM, 0); } - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode REPLACE_IF_NOT_NULL() { return getToken(DorisParser.REPLACE_IF_NOT_NULL, 0); } - public TerminalNode HLL_UNION() { return getToken(DorisParser.HLL_UNION, 0); } - public TerminalNode BITMAP_UNION() { return getToken(DorisParser.BITMAP_UNION, 0); } - public TerminalNode QUANTILE_UNION() { return getToken(DorisParser.QUANTILE_UNION, 0); } - public TerminalNode GENERIC() { return getToken(DorisParser.GENERIC, 0); } - public AggTypeDefContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_aggTypeDef; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAggTypeDef(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAggTypeDef(this); - } - } - - public final AggTypeDefContext aggTypeDef() throws RecognitionException { - AggTypeDefContext _localctx = new AggTypeDefContext(_ctx, getState()); - enterRule(_localctx, 360, RULE_aggTypeDef); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5397); - _la = _input.LA(1); - if ( !(_la==BITMAP_UNION || _la==GENERIC || _la==HLL_UNION || _la==MAX || _la==MIN || ((((_la - 353)) & ~0x3f) == 0 && ((1L << (_la - 353)) & 6291457L) != 0) || _la==SUM) ) { - _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 TabletListContext extends ParserRuleContext { - public Token INTEGER_VALUE; - public List tabletIdList = new ArrayList(); - public TerminalNode TABLET() { return getToken(DorisParser.TABLET, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TabletListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tabletList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTabletList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTabletList(this); - } - } - - public final TabletListContext tabletList() throws RecognitionException { - TabletListContext _localctx = new TabletListContext(_ctx, getState()); - enterRule(_localctx, 362, RULE_tabletList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5399); - match(TABLET); - setState(5400); - match(LEFT_PAREN); - setState(5401); - ((TabletListContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((TabletListContext)_localctx).tabletIdList.add(((TabletListContext)_localctx).INTEGER_VALUE); - setState(5406); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5402); - match(COMMA); - setState(5403); - ((TabletListContext)_localctx).INTEGER_VALUE = match(INTEGER_VALUE); - ((TabletListContext)_localctx).tabletIdList.add(((TabletListContext)_localctx).INTEGER_VALUE); - } - } - setState(5408); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5409); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class InlineTableContext extends ParserRuleContext { - public TerminalNode VALUES() { return getToken(DorisParser.VALUES, 0); } - public List rowConstructor() { - return getRuleContexts(RowConstructorContext.class); - } - public RowConstructorContext rowConstructor(int i) { - return getRuleContext(RowConstructorContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public InlineTableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_inlineTable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInlineTable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInlineTable(this); - } - } - - public final InlineTableContext inlineTable() throws RecognitionException { - InlineTableContext _localctx = new InlineTableContext(_ctx, getState()); - enterRule(_localctx, 364, RULE_inlineTable); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5411); - match(VALUES); - setState(5412); - rowConstructor(); - setState(5417); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,788,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5413); - match(COMMA); - setState(5414); - rowConstructor(); - } - } - } - setState(5419); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,788,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NamedExpressionContext extends ParserRuleContext { - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public NamedExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namedExpression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNamedExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNamedExpression(this); - } - } - - public final NamedExpressionContext namedExpression() throws RecognitionException { - NamedExpressionContext _localctx = new NamedExpressionContext(_ctx, getState()); - enterRule(_localctx, 366, RULE_namedExpression); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5420); - expression(); - setState(5425); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,790,_ctx) ) { - case 1: - { - setState(5422); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==AS) { - { - setState(5421); - match(AS); - } - } - - { - setState(5424); - identifierOrText(); - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NamedExpressionSeqContext extends ParserRuleContext { - public List namedExpression() { - return getRuleContexts(NamedExpressionContext.class); - } - public NamedExpressionContext namedExpression(int i) { - return getRuleContext(NamedExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public NamedExpressionSeqContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_namedExpressionSeq; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNamedExpressionSeq(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNamedExpressionSeq(this); - } - } - - public final NamedExpressionSeqContext namedExpressionSeq() throws RecognitionException { - NamedExpressionSeqContext _localctx = new NamedExpressionSeqContext(_ctx, getState()); - enterRule(_localctx, 368, RULE_namedExpressionSeq); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5427); - namedExpression(); - setState(5432); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,791,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5428); - match(COMMA); - setState(5429); - namedExpression(); - } - } - } - setState(5434); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,791,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExpressionContext extends ParserRuleContext { - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public LambdaExpressionContext lambdaExpression() { - return getRuleContext(LambdaExpressionContext.class,0); - } - public ExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_expression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExpression(this); - } - } - - public final ExpressionContext expression() throws RecognitionException { - ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); - enterRule(_localctx, 370, RULE_expression); - try { - setState(5437); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,792,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5435); - booleanExpression(0); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5436); - lambdaExpression(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LambdaExpressionContext extends ParserRuleContext { - public ErrorCapturingIdentifierContext errorCapturingIdentifier; - public List args = new ArrayList(); - public BooleanExpressionContext body; - public TerminalNode ARROW() { return getToken(DorisParser.ARROW, 0); } - public List errorCapturingIdentifier() { - return getRuleContexts(ErrorCapturingIdentifierContext.class); - } - public ErrorCapturingIdentifierContext errorCapturingIdentifier(int i) { - return getRuleContext(ErrorCapturingIdentifierContext.class,i); - } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public LambdaExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lambdaExpression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLambdaExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLambdaExpression(this); - } - } - - public final LambdaExpressionContext lambdaExpression() throws RecognitionException { - LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState()); - enterRule(_localctx, 372, RULE_lambdaExpression); - int _la; - try { - setState(5455); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 1); - { - setState(5439); - ((LambdaExpressionContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((LambdaExpressionContext)_localctx).args.add(((LambdaExpressionContext)_localctx).errorCapturingIdentifier); - setState(5440); - match(ARROW); - setState(5441); - ((LambdaExpressionContext)_localctx).body = booleanExpression(0); - } - break; - case LEFT_PAREN: - enterOuterAlt(_localctx, 2); - { - setState(5443); - match(LEFT_PAREN); - setState(5444); - ((LambdaExpressionContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((LambdaExpressionContext)_localctx).args.add(((LambdaExpressionContext)_localctx).errorCapturingIdentifier); - setState(5447); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(5445); - match(COMMA); - setState(5446); - ((LambdaExpressionContext)_localctx).errorCapturingIdentifier = errorCapturingIdentifier(); - ((LambdaExpressionContext)_localctx).args.add(((LambdaExpressionContext)_localctx).errorCapturingIdentifier); - } - } - setState(5449); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==COMMA ); - setState(5451); - match(RIGHT_PAREN); - setState(5452); - match(ARROW); - setState(5453); - ((LambdaExpressionContext)_localctx).body = booleanExpression(0); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BooleanExpressionContext extends ParserRuleContext { - public BooleanExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_booleanExpression; } - - public BooleanExpressionContext() { } - public void copyFrom(BooleanExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ExistContext extends BooleanExpressionContext { - public TerminalNode EXISTS() { return getToken(DorisParser.EXISTS, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ExistContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExist(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExist(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LogicalNotContext extends BooleanExpressionContext { - public TerminalNode LOGICALNOT() { return getToken(DorisParser.LOGICALNOT, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public LogicalNotContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLogicalNot(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLogicalNot(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PredicatedContext extends BooleanExpressionContext { - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public PredicateContext predicate() { - return getRuleContext(PredicateContext.class,0); - } - public PredicatedContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPredicated(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPredicated(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class IsnullContext extends BooleanExpressionContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode ISNULL() { return getToken(DorisParser.ISNULL, 0); } - public TerminalNode IS_NULL_PRED() { return getToken(DorisParser.IS_NULL_PRED, 0); } - public IsnullContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIsnull(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIsnull(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class Is_not_null_predContext extends BooleanExpressionContext { - public TerminalNode IS_NOT_NULL_PRED() { return getToken(DorisParser.IS_NOT_NULL_PRED, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public Is_not_null_predContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIs_not_null_pred(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIs_not_null_pred(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(DorisParser.AND, 0); } - public TerminalNode LOGICALAND() { return getToken(DorisParser.LOGICALAND, 0); } - public TerminalNode XOR() { return getToken(DorisParser.XOR, 0); } - public TerminalNode OR() { return getToken(DorisParser.OR, 0); } - public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLogicalBinary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLogicalBinary(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DoublePipesContext 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 DOUBLEPIPES() { return getToken(DorisParser.DOUBLEPIPES, 0); } - public DoublePipesContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDoublePipes(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDoublePipes(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 = 374; - enterRecursionRule(_localctx, 374, RULE_booleanExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5481); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,796,_ctx) ) { - case 1: - { - _localctx = new LogicalNotContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(5458); - match(LOGICALNOT); - setState(5459); - booleanExpression(10); - } - break; - case 2: - { - _localctx = new ExistContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5460); - match(EXISTS); - setState(5461); - match(LEFT_PAREN); - setState(5462); - query(); - setState(5463); - match(RIGHT_PAREN); - } - break; - case 3: - { - _localctx = new IsnullContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5465); - _la = _input.LA(1); - if ( !(_la==IS_NULL_PRED || _la==ISNULL) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5466); - match(LEFT_PAREN); - setState(5467); - valueExpression(0); - setState(5468); - match(RIGHT_PAREN); - } - break; - case 4: - { - _localctx = new Is_not_null_predContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5470); - match(IS_NOT_NULL_PRED); - setState(5471); - match(LEFT_PAREN); - setState(5472); - valueExpression(0); - setState(5473); - match(RIGHT_PAREN); - } - break; - case 5: - { - _localctx = new PredicatedContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5475); - valueExpression(0); - setState(5477); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,795,_ctx) ) { - case 1: - { - setState(5476); - predicate(); - } - break; - } - } - break; - case 6: - { - _localctx = new LogicalNotContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5479); - match(NOT); - setState(5480); - booleanExpression(5); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(5497); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,798,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(5495); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,797,_ctx) ) { - case 1: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((LogicalBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(5483); - if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(5484); - ((LogicalBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==AND || _la==LOGICALAND) ) { - ((LogicalBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5485); - ((LogicalBinaryContext)_localctx).right = booleanExpression(5); - } - break; - case 2: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((LogicalBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(5486); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(5487); - ((LogicalBinaryContext)_localctx).operator = match(XOR); - setState(5488); - ((LogicalBinaryContext)_localctx).right = booleanExpression(4); - } - break; - case 3: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((LogicalBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(5489); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(5490); - ((LogicalBinaryContext)_localctx).operator = match(OR); - setState(5491); - ((LogicalBinaryContext)_localctx).right = booleanExpression(3); - } - break; - case 4: - { - _localctx = new DoublePipesContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((DoublePipesContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(5492); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(5493); - ((DoublePipesContext)_localctx).operator = match(DOUBLEPIPES); - setState(5494); - ((DoublePipesContext)_localctx).right = booleanExpression(2); - } - break; - } - } - } - setState(5499); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,798,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RowConstructorContext extends ParserRuleContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List rowConstructorItem() { - return getRuleContexts(RowConstructorItemContext.class); - } - public RowConstructorItemContext rowConstructorItem(int i) { - return getRuleContext(RowConstructorItemContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public RowConstructorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rowConstructor; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRowConstructor(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRowConstructor(this); - } - } - - public final RowConstructorContext rowConstructor() throws RecognitionException { - RowConstructorContext _localctx = new RowConstructorContext(_ctx, getState()); - enterRule(_localctx, 376, RULE_rowConstructor); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5500); - match(LEFT_PAREN); - setState(5509); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -5188430204749515009L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955661L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(5501); - rowConstructorItem(); - setState(5506); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5502); - match(COMMA); - setState(5503); - rowConstructorItem(); - } - } - setState(5508); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - setState(5511); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RowConstructorItemContext extends ParserRuleContext { - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public NamedExpressionContext namedExpression() { - return getRuleContext(NamedExpressionContext.class,0); - } - public RowConstructorItemContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rowConstructorItem; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRowConstructorItem(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRowConstructorItem(this); - } - } - - public final RowConstructorItemContext rowConstructorItem() throws RecognitionException { - RowConstructorItemContext _localctx = new RowConstructorItemContext(_ctx, getState()); - enterRule(_localctx, 378, RULE_rowConstructorItem); - try { - setState(5516); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,801,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5513); - constant(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5514); - match(DEFAULT); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(5515); - namedExpression(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PredicateContext extends ParserRuleContext { - public Token kind; - public ValueExpressionContext lower; - public ValueExpressionContext upper; - public ValueExpressionContext pattern; - public TerminalNode AND() { return getToken(DorisParser.AND, 0); } - public TerminalNode BETWEEN() { return getToken(DorisParser.BETWEEN, 0); } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode REGEXP() { return getToken(DorisParser.REGEXP, 0); } - public TerminalNode RLIKE() { return getToken(DorisParser.RLIKE, 0); } - public TerminalNode MATCH() { return getToken(DorisParser.MATCH, 0); } - public TerminalNode MATCH_ANY() { return getToken(DorisParser.MATCH_ANY, 0); } - public TerminalNode MATCH_ALL() { return getToken(DorisParser.MATCH_ALL, 0); } - public TerminalNode MATCH_PHRASE() { return getToken(DorisParser.MATCH_PHRASE, 0); } - public TerminalNode MATCH_PHRASE_PREFIX() { return getToken(DorisParser.MATCH_PHRASE_PREFIX, 0); } - public TerminalNode MATCH_REGEXP() { return getToken(DorisParser.MATCH_REGEXP, 0); } - public TerminalNode MATCH_PHRASE_EDGE() { return getToken(DorisParser.MATCH_PHRASE_EDGE, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode IN() { return getToken(DorisParser.IN, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TerminalNode IS() { return getToken(DorisParser.IS, 0); } - public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } - public TerminalNode TRUE() { return getToken(DorisParser.TRUE, 0); } - public TerminalNode FALSE() { return getToken(DorisParser.FALSE, 0); } - public PredicateContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_predicate; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPredicate(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPredicate(this); - } - } - - public final PredicateContext predicate() throws RecognitionException { - PredicateContext _localctx = new PredicateContext(_ctx, getState()); - enterRule(_localctx, 380, RULE_predicate); - int _la; - try { - setState(5569); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,810,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5519); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5518); - match(NOT); - } - } - - setState(5521); - ((PredicateContext)_localctx).kind = match(BETWEEN); - setState(5522); - ((PredicateContext)_localctx).lower = valueExpression(0); - setState(5523); - match(AND); - setState(5524); - ((PredicateContext)_localctx).upper = valueExpression(0); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5527); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5526); - match(NOT); - } - } - - setState(5529); - ((PredicateContext)_localctx).kind = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==LIKE || _la==REGEXP || _la==RLIKE) ) { - ((PredicateContext)_localctx).kind = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5530); - ((PredicateContext)_localctx).pattern = valueExpression(0); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(5532); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5531); - match(NOT); - } - } - - setState(5534); - ((PredicateContext)_localctx).kind = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 271)) & ~0x3f) == 0 && ((1L << (_la - 271)) & 127L) != 0)) ) { - ((PredicateContext)_localctx).kind = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5535); - ((PredicateContext)_localctx).pattern = valueExpression(0); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(5537); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5536); - match(NOT); - } - } - - setState(5539); - ((PredicateContext)_localctx).kind = match(IN); - setState(5540); - match(LEFT_PAREN); - setState(5541); - query(); - setState(5542); - match(RIGHT_PAREN); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(5545); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5544); - match(NOT); - } - } - - setState(5547); - ((PredicateContext)_localctx).kind = match(IN); - setState(5548); - match(LEFT_PAREN); - setState(5549); - expression(); - setState(5554); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5550); - match(COMMA); - setState(5551); - expression(); - } - } - setState(5556); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5557); - match(RIGHT_PAREN); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(5559); - match(IS); - setState(5561); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5560); - match(NOT); - } - } - - setState(5563); - ((PredicateContext)_localctx).kind = match(NULL); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(5564); - match(IS); - setState(5566); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5565); - match(NOT); - } - } - - setState(5568); - ((PredicateContext)_localctx).kind = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FALSE || _la==TRUE) ) { - ((PredicateContext)_localctx).kind = (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 ValueExpressionContext extends ParserRuleContext { - public ValueExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_valueExpression; } - - public ValueExpressionContext() { } - public void copyFrom(ValueExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ValueExpressionDefaultContext extends ValueExpressionContext { - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public ValueExpressionDefaultContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterValueExpressionDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitValueExpressionDefault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ComparisonContext extends ValueExpressionContext { - public ValueExpressionContext left; - public ValueExpressionContext right; - public ComparisonOperatorContext comparisonOperator() { - return getRuleContext(ComparisonOperatorContext.class,0); - } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComparison(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComparison(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArithmeticBinaryContext extends ValueExpressionContext { - public ValueExpressionContext left; - public Token operator; - public ValueExpressionContext right; - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode HAT() { return getToken(DorisParser.HAT, 0); } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public TerminalNode SLASH() { return getToken(DorisParser.SLASH, 0); } - public TerminalNode MOD() { return getToken(DorisParser.MOD, 0); } - public TerminalNode DIV() { return getToken(DorisParser.DIV, 0); } - public TerminalNode PLUS() { return getToken(DorisParser.PLUS, 0); } - public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } - public TerminalNode AMPERSAND() { return getToken(DorisParser.AMPERSAND, 0); } - public TerminalNode PIPE() { return getToken(DorisParser.PIPE, 0); } - public ArithmeticBinaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArithmeticBinary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArithmeticBinary(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArithmeticUnaryContext extends ValueExpressionContext { - public Token operator; - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } - public TerminalNode PLUS() { return getToken(DorisParser.PLUS, 0); } - public TerminalNode TILDE() { return getToken(DorisParser.TILDE, 0); } - public ArithmeticUnaryContext(ValueExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArithmeticUnary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArithmeticUnary(this); - } - } - - public final ValueExpressionContext valueExpression() throws RecognitionException { - return valueExpression(0); - } - - private ValueExpressionContext valueExpression(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, _parentState); - ValueExpressionContext _prevctx = _localctx; - int _startState = 382; - enterRecursionRule(_localctx, 382, RULE_valueExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5575); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,811,_ctx) ) { - case 1: - { - _localctx = new ValueExpressionDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(5572); - primaryExpression(0); - } - break; - case 2: - { - _localctx = new ArithmeticUnaryContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5573); - ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & 35L) != 0)) ) { - ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5574); - valueExpression(7); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(5598); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,813,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(5596); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,812,_ctx) ) { - case 1: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(5577); - if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(5578); - ((ArithmeticBinaryContext)_localctx).operator = match(HAT); - setState(5579); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(7); - } - break; - case 2: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(5580); - if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(5581); - ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==DIV || ((((_la - 512)) & ~0x3f) == 0 && ((1L << (_la - 512)) & 7L) != 0)) ) { - ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5582); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(6); - } - break; - case 3: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(5583); - if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(5584); - ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==SUBTRACT) ) { - ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5585); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(5); - } - break; - case 4: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(5586); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(5587); - ((ArithmeticBinaryContext)_localctx).operator = match(AMPERSAND); - setState(5588); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(4); - } - break; - case 5: - { - _localctx = new ArithmeticBinaryContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(5589); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(5590); - ((ArithmeticBinaryContext)_localctx).operator = match(PIPE); - setState(5591); - ((ArithmeticBinaryContext)_localctx).right = valueExpression(3); - } - break; - case 6: - { - _localctx = new ComparisonContext(new ValueExpressionContext(_parentctx, _parentState)); - ((ComparisonContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_valueExpression); - setState(5592); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(5593); - comparisonOperator(); - setState(5594); - ((ComparisonContext)_localctx).right = valueExpression(2); - } - break; - } - } - } - setState(5600); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,813,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PrimaryExpressionContext extends ParserRuleContext { - public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_primaryExpression; } - - public PrimaryExpressionContext() { } - public void copyFrom(PrimaryExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DereferenceContext extends PrimaryExpressionContext { - public PrimaryExpressionContext base; - public IdentifierContext fieldName; - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDereference(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDereference(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CurrentDateContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode CURRENT_DATE() { return getToken(DorisParser.CURRENT_DATE, 0); } - public CurrentDateContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentDate(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentDate(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CastContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public CastDataTypeContext castDataType() { - return getRuleContext(CastDataTypeContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode CAST() { return getToken(DorisParser.CAST, 0); } - public CastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCast(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCast(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ParenthesizedExpressionContext extends PrimaryExpressionContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterParenthesizedExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitParenthesizedExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UserVariableContext extends PrimaryExpressionContext { - public TerminalNode ATSIGN() { return getToken(DorisParser.ATSIGN, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public UserVariableContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUserVariable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUserVariable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ElementAtContext extends PrimaryExpressionContext { - public PrimaryExpressionContext value; - public ValueExpressionContext index; - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public ElementAtContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterElementAt(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitElementAt(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LocalTimestampContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode LOCALTIMESTAMP() { return getToken(DorisParser.LOCALTIMESTAMP, 0); } - public LocalTimestampContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLocalTimestamp(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLocalTimestamp(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CharFunctionContext extends PrimaryExpressionContext { - public ExpressionContext expression; - public List arguments = new ArrayList(); - public IdentifierOrTextContext charSet; - public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public CharFunctionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCharFunction(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCharFunction(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class IntervalLiteralContext extends PrimaryExpressionContext { - public IntervalContext interval() { - return getRuleContext(IntervalContext.class,0); - } - public IntervalLiteralContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIntervalLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIntervalLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SimpleCaseContext extends PrimaryExpressionContext { - public ExpressionContext value; - public ExpressionContext elseExpression; - public TerminalNode CASE() { return getToken(DorisParser.CASE, 0); } - public TerminalNode END() { return getToken(DorisParser.END, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List whenClause() { - return getRuleContexts(WhenClauseContext.class); - } - public WhenClauseContext whenClause(int i) { - return getRuleContext(WhenClauseContext.class,i); - } - public TerminalNode ELSE() { return getToken(DorisParser.ELSE, 0); } - public SimpleCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSimpleCase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSimpleCase(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ColumnReferenceContext extends PrimaryExpressionContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode BINARY() { return getToken(DorisParser.BINARY, 0); } - public ColumnReferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterColumnReference(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitColumnReference(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StarContext extends PrimaryExpressionContext { - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public List exceptOrReplace() { - return getRuleContexts(ExceptOrReplaceContext.class); - } - public ExceptOrReplaceContext exceptOrReplace(int i) { - return getRuleContext(ExceptOrReplaceContext.class,i); - } - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public StarContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStar(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStar(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SessionUserContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode SESSION_USER() { return getToken(DorisParser.SESSION_USER, 0); } - public SessionUserContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSessionUser(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSessionUser(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ConvertTypeContext extends PrimaryExpressionContext { - public ExpressionContext argument; - public TerminalNode CONVERT() { return getToken(DorisParser.CONVERT, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } - public CastDataTypeContext castDataType() { - return getRuleContext(CastDataTypeContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public ConvertTypeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConvertType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConvertType(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ConvertCharSetContext extends PrimaryExpressionContext { - public ExpressionContext argument; - public IdentifierOrTextContext charSet; - public TerminalNode CONVERT() { return getToken(DorisParser.CONVERT, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode USING() { return getToken(DorisParser.USING, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public IdentifierOrTextContext identifierOrText() { - return getRuleContext(IdentifierOrTextContext.class,0); - } - public ConvertCharSetContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConvertCharSet(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConvertCharSet(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SubqueryExpressionContext extends PrimaryExpressionContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public SubqueryExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSubqueryExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSubqueryExpression(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class EncryptKeyContext extends PrimaryExpressionContext { - public IdentifierContext dbName; - public IdentifierContext keyName; - public TerminalNode KEY() { return getToken(DorisParser.KEY, 0); } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public EncryptKeyContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterEncryptKey(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitEncryptKey(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CurrentTimeContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode CURRENT_TIME() { return getToken(DorisParser.CURRENT_TIME, 0); } - public CurrentTimeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentTime(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentTime(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LocalTimeContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode LOCALTIME() { return getToken(DorisParser.LOCALTIME, 0); } - public LocalTimeContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterLocalTime(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitLocalTime(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SystemVariableContext extends PrimaryExpressionContext { - public Token kind; - public TerminalNode DOUBLEATSIGN() { return getToken(DorisParser.DOUBLEATSIGN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } - public TerminalNode SESSION() { return getToken(DorisParser.SESSION, 0); } - public SystemVariableContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSystemVariable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSystemVariable(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CollateContext extends PrimaryExpressionContext { - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public TerminalNode COLLATE() { return getToken(DorisParser.COLLATE, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode DEFAULT() { return getToken(DorisParser.DEFAULT, 0); } - public CollateContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCollate(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCollate(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CurrentUserContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode CURRENT_USER() { return getToken(DorisParser.CURRENT_USER, 0); } - public CurrentUserContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentUser(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentUser(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ConstantDefaultContext extends PrimaryExpressionContext { - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterConstantDefault(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitConstantDefault(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ExtractContext extends PrimaryExpressionContext { - public IdentifierContext field; - public ValueExpressionContext source; - public TerminalNode EXTRACT() { return getToken(DorisParser.EXTRACT, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode FROM() { return getToken(DorisParser.FROM, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } - public TerminalNode TIMESTAMP() { return getToken(DorisParser.TIMESTAMP, 0); } - public ExtractContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExtract(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExtract(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CurrentTimestampContext extends PrimaryExpressionContext { - public Token name; - public TerminalNode CURRENT_TIMESTAMP() { return getToken(DorisParser.CURRENT_TIMESTAMP, 0); } - public CurrentTimestampContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCurrentTimestamp(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCurrentTimestamp(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class FunctionCallContext extends PrimaryExpressionContext { - public FunctionCallExpressionContext functionCallExpression() { - return getRuleContext(FunctionCallExpressionContext.class,0); - } - public FunctionCallContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionCall(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionCall(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArraySliceContext extends PrimaryExpressionContext { - public PrimaryExpressionContext value; - public ValueExpressionContext begin; - public ValueExpressionContext end; - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public TerminalNode COLON() { return getToken(DorisParser.COLON, 0); } - public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public ArraySliceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArraySlice(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArraySlice(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SearchedCaseContext extends PrimaryExpressionContext { - public ExpressionContext elseExpression; - public TerminalNode CASE() { return getToken(DorisParser.CASE, 0); } - public TerminalNode END() { return getToken(DorisParser.END, 0); } - public List whenClause() { - return getRuleContexts(WhenClauseContext.class); - } - public WhenClauseContext whenClause(int i) { - return getRuleContext(WhenClauseContext.class,i); - } - public TerminalNode ELSE() { return getToken(DorisParser.ELSE, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public SearchedCaseContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSearchedCase(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSearchedCase(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 = 384; - enterRecursionRule(_localctx, 384, RULE_primaryExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5727); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,826,_ctx) ) { - case 1: - { - _localctx = new CurrentDateContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(5602); - ((CurrentDateContext)_localctx).name = match(CURRENT_DATE); - } - break; - case 2: - { - _localctx = new CurrentTimeContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5603); - ((CurrentTimeContext)_localctx).name = match(CURRENT_TIME); - } - break; - case 3: - { - _localctx = new CurrentTimestampContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5604); - ((CurrentTimestampContext)_localctx).name = match(CURRENT_TIMESTAMP); - } - break; - case 4: - { - _localctx = new LocalTimeContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5605); - ((LocalTimeContext)_localctx).name = match(LOCALTIME); - } - break; - case 5: - { - _localctx = new LocalTimestampContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5606); - ((LocalTimestampContext)_localctx).name = match(LOCALTIMESTAMP); - } - break; - case 6: - { - _localctx = new CurrentUserContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5607); - ((CurrentUserContext)_localctx).name = match(CURRENT_USER); - } - break; - case 7: - { - _localctx = new SessionUserContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5608); - ((SessionUserContext)_localctx).name = match(SESSION_USER); - } - break; - case 8: - { - _localctx = new SearchedCaseContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5609); - match(CASE); - setState(5611); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(5610); - whenClause(); - } - } - setState(5613); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==WHEN ); - setState(5617); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ELSE) { - { - setState(5615); - match(ELSE); - setState(5616); - ((SearchedCaseContext)_localctx).elseExpression = expression(); - } - } - - setState(5619); - match(END); - } - break; - case 9: - { - _localctx = new SimpleCaseContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5621); - match(CASE); - setState(5622); - ((SimpleCaseContext)_localctx).value = expression(); - setState(5624); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(5623); - whenClause(); - } - } - setState(5626); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( _la==WHEN ); - setState(5630); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ELSE) { - { - setState(5628); - match(ELSE); - setState(5629); - ((SimpleCaseContext)_localctx).elseExpression = expression(); - } - } - - setState(5632); - match(END); - } - break; - case 10: - { - _localctx = new CastContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5634); - ((CastContext)_localctx).name = match(CAST); - setState(5635); - match(LEFT_PAREN); - setState(5636); - expression(); - setState(5637); - match(AS); - setState(5638); - castDataType(); - setState(5639); - match(RIGHT_PAREN); - } - break; - case 11: - { - _localctx = new ConstantDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5641); - constant(); - } - break; - case 12: - { - _localctx = new IntervalLiteralContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5642); - interval(); - } - break; - case 13: - { - _localctx = new StarContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5643); - match(ASTERISK); - setState(5647); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,818,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5644); - exceptOrReplace(); - } - } - } - setState(5649); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,818,_ctx); - } - } - break; - case 14: - { - _localctx = new StarContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5650); - qualifiedName(); - setState(5651); - match(DOT); - setState(5652); - match(ASTERISK); - setState(5656); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,819,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5653); - exceptOrReplace(); - } - } - } - setState(5658); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,819,_ctx); - } - } - break; - case 15: - { - _localctx = new CharFunctionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5659); - match(CHAR); - setState(5660); - match(LEFT_PAREN); - setState(5661); - ((CharFunctionContext)_localctx).expression = expression(); - ((CharFunctionContext)_localctx).arguments.add(((CharFunctionContext)_localctx).expression); - setState(5666); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5662); - match(COMMA); - setState(5663); - ((CharFunctionContext)_localctx).expression = expression(); - ((CharFunctionContext)_localctx).arguments.add(((CharFunctionContext)_localctx).expression); - } - } - setState(5668); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5671); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==USING) { - { - setState(5669); - match(USING); - setState(5670); - ((CharFunctionContext)_localctx).charSet = identifierOrText(); - } - } - - setState(5673); - match(RIGHT_PAREN); - } - break; - case 16: - { - _localctx = new ConvertCharSetContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5675); - match(CONVERT); - setState(5676); - match(LEFT_PAREN); - setState(5677); - ((ConvertCharSetContext)_localctx).argument = expression(); - setState(5678); - match(USING); - setState(5679); - ((ConvertCharSetContext)_localctx).charSet = identifierOrText(); - setState(5680); - match(RIGHT_PAREN); - } - break; - case 17: - { - _localctx = new ConvertTypeContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5682); - match(CONVERT); - setState(5683); - match(LEFT_PAREN); - setState(5684); - ((ConvertTypeContext)_localctx).argument = expression(); - setState(5685); - match(COMMA); - setState(5686); - castDataType(); - setState(5687); - match(RIGHT_PAREN); - } - break; - case 18: - { - _localctx = new FunctionCallContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5689); - functionCallExpression(); - } - break; - case 19: - { - _localctx = new SubqueryExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5690); - match(LEFT_PAREN); - setState(5691); - query(); - setState(5692); - match(RIGHT_PAREN); - } - break; - case 20: - { - _localctx = new UserVariableContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5694); - match(ATSIGN); - setState(5695); - identifierOrText(); - } - break; - case 21: - { - _localctx = new SystemVariableContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5696); - match(DOUBLEATSIGN); - setState(5699); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,822,_ctx) ) { - case 1: - { - setState(5697); - ((SystemVariableContext)_localctx).kind = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==GLOBAL || _la==SESSION) ) { - ((SystemVariableContext)_localctx).kind = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5698); - match(DOT); - } - break; - } - setState(5701); - identifier(); - } - break; - case 22: - { - _localctx = new ColumnReferenceContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5703); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BINARY) { - { - setState(5702); - match(BINARY); - } - } - - setState(5705); - identifier(); - } - break; - case 23: - { - _localctx = new ParenthesizedExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5706); - match(LEFT_PAREN); - setState(5707); - expression(); - setState(5708); - match(RIGHT_PAREN); - } - break; - case 24: - { - _localctx = new EncryptKeyContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5710); - match(KEY); - setState(5714); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,824,_ctx) ) { - case 1: - { - setState(5711); - ((EncryptKeyContext)_localctx).dbName = identifier(); - setState(5712); - match(DOT); - } - break; - } - setState(5716); - ((EncryptKeyContext)_localctx).keyName = identifier(); - } - break; - case 25: - { - _localctx = new ExtractContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(5717); - match(EXTRACT); - setState(5718); - match(LEFT_PAREN); - setState(5719); - ((ExtractContext)_localctx).field = identifier(); - setState(5720); - match(FROM); - setState(5722); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,825,_ctx) ) { - case 1: - { - setState(5721); - _la = _input.LA(1); - if ( !(_la==DATE || _la==TIMESTAMP) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - setState(5724); - ((ExtractContext)_localctx).source = valueExpression(0); - setState(5725); - match(RIGHT_PAREN); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(5755); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,830,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(5753); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,829,_ctx) ) { - case 1: - { - _localctx = new ElementAtContext(new PrimaryExpressionContext(_parentctx, _parentState)); - ((ElementAtContext)_localctx).value = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); - setState(5729); - if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); - setState(5730); - match(LEFT_BRACKET); - setState(5731); - ((ElementAtContext)_localctx).index = valueExpression(0); - setState(5732); - match(RIGHT_BRACKET); - } - break; - case 2: - { - _localctx = new ArraySliceContext(new PrimaryExpressionContext(_parentctx, _parentState)); - ((ArraySliceContext)_localctx).value = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); - setState(5734); - if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); - setState(5735); - match(LEFT_BRACKET); - setState(5736); - ((ArraySliceContext)_localctx).begin = valueExpression(0); - setState(5737); - match(COLON); - setState(5739); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354245592708L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419443415824845L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950980430871911411L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868097L) != 0)) { - { - setState(5738); - ((ArraySliceContext)_localctx).end = valueExpression(0); - } - } - - setState(5741); - match(RIGHT_BRACKET); - } - break; - case 3: - { - _localctx = new DereferenceContext(new PrimaryExpressionContext(_parentctx, _parentState)); - ((DereferenceContext)_localctx).base = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); - setState(5743); - if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(5744); - match(DOT); - setState(5745); - ((DereferenceContext)_localctx).fieldName = identifier(); - } - break; - case 4: - { - _localctx = new CollateContext(new PrimaryExpressionContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression); - setState(5746); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(5747); - match(COLLATE); - setState(5751); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(5748); - identifier(); - } - break; - case STRING_LITERAL: - { - setState(5749); - match(STRING_LITERAL); - } - break; - case DEFAULT: - { - setState(5750); - match(DEFAULT); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - } - } - } - setState(5757); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,830,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExceptOrReplaceContext extends ParserRuleContext { - public ExceptOrReplaceContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_exceptOrReplace; } - - public ExceptOrReplaceContext() { } - public void copyFrom(ExceptOrReplaceContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ReplaceContext extends ExceptOrReplaceContext { - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public NamedExpressionSeqContext namedExpressionSeq() { - return getRuleContext(NamedExpressionSeqContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ReplaceContext(ExceptOrReplaceContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterReplace(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitReplace(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ExceptContext extends ExceptOrReplaceContext { - public TerminalNode EXCEPT() { return getToken(DorisParser.EXCEPT, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public NamedExpressionSeqContext namedExpressionSeq() { - return getRuleContext(NamedExpressionSeqContext.class,0); - } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public ExceptContext(ExceptOrReplaceContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterExcept(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitExcept(this); - } - } - - public final ExceptOrReplaceContext exceptOrReplace() throws RecognitionException { - ExceptOrReplaceContext _localctx = new ExceptOrReplaceContext(_ctx, getState()); - enterRule(_localctx, 386, RULE_exceptOrReplace); - try { - setState(5768); - _errHandler.sync(this); - switch (_input.LA(1)) { - case EXCEPT: - _localctx = new ExceptContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(5758); - match(EXCEPT); - setState(5759); - match(LEFT_PAREN); - setState(5760); - namedExpressionSeq(); - setState(5761); - match(RIGHT_PAREN); - } - break; - case REPLACE: - _localctx = new ReplaceContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(5763); - match(REPLACE); - setState(5764); - match(LEFT_PAREN); - setState(5765); - namedExpressionSeq(); - setState(5766); - match(RIGHT_PAREN); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CastDataTypeContext extends ParserRuleContext { - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public TerminalNode SIGNED() { return getToken(DorisParser.SIGNED, 0); } - public TerminalNode UNSIGNED() { return getToken(DorisParser.UNSIGNED, 0); } - public TerminalNode INT() { return getToken(DorisParser.INT, 0); } - public TerminalNode INTEGER() { return getToken(DorisParser.INTEGER, 0); } - public CastDataTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_castDataType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCastDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCastDataType(this); - } - } - - public final CastDataTypeContext castDataType() throws RecognitionException { - CastDataTypeContext _localctx = new CastDataTypeContext(_ctx, getState()); - enterRule(_localctx, 388, RULE_castDataType); - int _la; - try { - setState(5775); - _errHandler.sync(this); - switch (_input.LA(1)) { - case AGG_STATE: - case ALL: - case ARRAY: - case BIGINT: - case BITMAP: - case BOOLEAN: - case CHAR: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DOUBLE: - case FLOAT: - case HLL: - case INT: - case INTEGER: - case IPV4: - case IPV6: - case JSON: - case JSONB: - case LARGEINT: - case MAP: - case QUANTILE_STATE: - case SMALLINT: - case STRING: - case STRUCT: - case TEXT: - case TIME: - case TINYINT: - case VARCHAR: - case VARIANT: - enterOuterAlt(_localctx, 1); - { - setState(5770); - dataType(); - } - break; - case SIGNED: - case UNSIGNED: - enterOuterAlt(_localctx, 2); - { - setState(5771); - _la = _input.LA(1); - if ( !(_la==SIGNED || _la==UNSIGNED) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5773); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INT || _la==INTEGER) { - { - setState(5772); - _la = _input.LA(1); - if ( !(_la==INT || _la==INTEGER) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionCallExpressionContext extends ParserRuleContext { - public ExpressionContext expression; - public List arguments = new ArrayList(); - public FunctionIdentifierContext functionIdentifier() { - return getRuleContext(FunctionIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode OVER() { return getToken(DorisParser.OVER, 0); } - public WindowSpecContext windowSpec() { - return getRuleContext(WindowSpecContext.class,0); - } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public TerminalNode ORDER() { return getToken(DorisParser.ORDER, 0); } - public TerminalNode BY() { return getToken(DorisParser.BY, 0); } - public List sortItem() { - return getRuleContexts(SortItemContext.class); - } - public SortItemContext sortItem(int i) { - return getRuleContext(SortItemContext.class,i); - } - public TerminalNode DISTINCT() { return getToken(DorisParser.DISTINCT, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public FunctionCallExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionCallExpression; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionCallExpression(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionCallExpression(this); - } - } - - public final FunctionCallExpressionContext functionCallExpression() throws RecognitionException { - FunctionCallExpressionContext _localctx = new FunctionCallExpressionContext(_ctx, getState()); - enterRule(_localctx, 390, RULE_functionCallExpression); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5777); - functionIdentifier(); - setState(5778); - match(LEFT_PAREN); - setState(5802); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646890354246641284L) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & -6341351709356361985L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232419426235955653L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 9126402704879377875L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6951015615244000243L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38073613816987649L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448231L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 4037626598753087443L) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & 28868105L) != 0)) { - { - setState(5780); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ALL || _la==DISTINCT) { - { - setState(5779); - _la = _input.LA(1); - if ( !(_la==ALL || _la==DISTINCT) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(5782); - ((FunctionCallExpressionContext)_localctx).expression = expression(); - ((FunctionCallExpressionContext)_localctx).arguments.add(((FunctionCallExpressionContext)_localctx).expression); - setState(5787); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5783); - match(COMMA); - setState(5784); - ((FunctionCallExpressionContext)_localctx).expression = expression(); - ((FunctionCallExpressionContext)_localctx).arguments.add(((FunctionCallExpressionContext)_localctx).expression); - } - } - setState(5789); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5800); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(5790); - match(ORDER); - setState(5791); - match(BY); - setState(5792); - sortItem(); - setState(5797); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5793); - match(COMMA); - setState(5794); - sortItem(); - } - } - setState(5799); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - - } - } - - setState(5804); - match(RIGHT_PAREN); - setState(5807); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,839,_ctx) ) { - case 1: - { - setState(5805); - match(OVER); - setState(5806); - windowSpec(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionIdentifierContext extends ParserRuleContext { - public IdentifierContext dbName; - public FunctionNameIdentifierContext functionNameIdentifier() { - return getRuleContext(FunctionNameIdentifierContext.class,0); - } - public TerminalNode DOT() { return getToken(DorisParser.DOT, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public FunctionIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionIdentifier(this); - } - } - - public final FunctionIdentifierContext functionIdentifier() throws RecognitionException { - FunctionIdentifierContext _localctx = new FunctionIdentifierContext(_ctx, getState()); - enterRule(_localctx, 392, RULE_functionIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(5812); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,840,_ctx) ) { - case 1: - { - setState(5809); - ((FunctionIdentifierContext)_localctx).dbName = identifier(); - setState(5810); - match(DOT); - } - break; - } - setState(5814); - functionNameIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionNameIdentifierContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode ADD() { return getToken(DorisParser.ADD, 0); } - public TerminalNode CONNECTION_ID() { return getToken(DorisParser.CONNECTION_ID, 0); } - public TerminalNode CURRENT_CATALOG() { return getToken(DorisParser.CURRENT_CATALOG, 0); } - public TerminalNode CURRENT_USER() { return getToken(DorisParser.CURRENT_USER, 0); } - public TerminalNode DATABASE() { return getToken(DorisParser.DATABASE, 0); } - public TerminalNode IF() { return getToken(DorisParser.IF, 0); } - public TerminalNode LEFT() { return getToken(DorisParser.LEFT, 0); } - public TerminalNode LIKE() { return getToken(DorisParser.LIKE, 0); } - public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } - public TerminalNode REGEXP() { return getToken(DorisParser.REGEXP, 0); } - public TerminalNode RIGHT() { return getToken(DorisParser.RIGHT, 0); } - public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } - public TerminalNode SESSION_USER() { return getToken(DorisParser.SESSION_USER, 0); } - public TerminalNode TRIM() { return getToken(DorisParser.TRIM, 0); } - public TerminalNode USER() { return getToken(DorisParser.USER, 0); } - public FunctionNameIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionNameIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFunctionNameIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFunctionNameIdentifier(this); - } - } - - public final FunctionNameIdentifierContext functionNameIdentifier() throws RecognitionException { - FunctionNameIdentifierContext _localctx = new FunctionNameIdentifierContext(_ctx, getState()); - enterRule(_localctx, 394, RULE_functionNameIdentifier); - try { - setState(5832); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,841,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5816); - identifier(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5817); - match(ADD); - } - break; - case 3: - enterOuterAlt(_localctx, 3); - { - setState(5818); - match(CONNECTION_ID); - } - break; - case 4: - enterOuterAlt(_localctx, 4); - { - setState(5819); - match(CURRENT_CATALOG); - } - break; - case 5: - enterOuterAlt(_localctx, 5); - { - setState(5820); - match(CURRENT_USER); - } - break; - case 6: - enterOuterAlt(_localctx, 6); - { - setState(5821); - match(DATABASE); - } - break; - case 7: - enterOuterAlt(_localctx, 7); - { - setState(5822); - match(IF); - } - break; - case 8: - enterOuterAlt(_localctx, 8); - { - setState(5823); - match(LEFT); - } - break; - case 9: - enterOuterAlt(_localctx, 9); - { - setState(5824); - match(LIKE); - } - break; - case 10: - enterOuterAlt(_localctx, 10); - { - setState(5825); - match(PASSWORD); - } - break; - case 11: - enterOuterAlt(_localctx, 11); - { - setState(5826); - match(REGEXP); - } - break; - case 12: - enterOuterAlt(_localctx, 12); - { - setState(5827); - match(RIGHT); - } - break; - case 13: - enterOuterAlt(_localctx, 13); - { - setState(5828); - match(SCHEMA); - } - break; - case 14: - enterOuterAlt(_localctx, 14); - { - setState(5829); - match(SESSION_USER); - } - break; - case 15: - enterOuterAlt(_localctx, 15); - { - setState(5830); - match(TRIM); - } - break; - case 16: - enterOuterAlt(_localctx, 16); - { - setState(5831); - match(USER); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WindowSpecContext extends ParserRuleContext { - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public PartitionClauseContext partitionClause() { - return getRuleContext(PartitionClauseContext.class,0); - } - public SortClauseContext sortClause() { - return getRuleContext(SortClauseContext.class,0); - } - public WindowFrameContext windowFrame() { - return getRuleContext(WindowFrameContext.class,0); - } - public WindowSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_windowSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWindowSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWindowSpec(this); - } - } - - public final WindowSpecContext windowSpec() throws RecognitionException { - WindowSpecContext _localctx = new WindowSpecContext(_ctx, getState()); - enterRule(_localctx, 396, RULE_windowSpec); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5834); - match(LEFT_PAREN); - setState(5836); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PARTITION) { - { - setState(5835); - partitionClause(); - } - } - - setState(5839); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==ORDER) { - { - setState(5838); - sortClause(); - } - } - - setState(5842); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==RANGE || _la==ROWS) { - { - setState(5841); - windowFrame(); - } - } - - setState(5844); - match(RIGHT_PAREN); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WindowFrameContext extends ParserRuleContext { - public FrameBoundaryContext start; - public FrameBoundaryContext end; - public FrameUnitsContext frameUnits() { - return getRuleContext(FrameUnitsContext.class,0); - } - public List frameBoundary() { - return getRuleContexts(FrameBoundaryContext.class); - } - public FrameBoundaryContext frameBoundary(int i) { - return getRuleContext(FrameBoundaryContext.class,i); - } - public TerminalNode BETWEEN() { return getToken(DorisParser.BETWEEN, 0); } - public TerminalNode AND() { return getToken(DorisParser.AND, 0); } - public WindowFrameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_windowFrame; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWindowFrame(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWindowFrame(this); - } - } - - public final WindowFrameContext windowFrame() throws RecognitionException { - WindowFrameContext _localctx = new WindowFrameContext(_ctx, getState()); - enterRule(_localctx, 398, RULE_windowFrame); - try { - setState(5855); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,845,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5846); - frameUnits(); - setState(5847); - ((WindowFrameContext)_localctx).start = frameBoundary(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5849); - frameUnits(); - setState(5850); - match(BETWEEN); - setState(5851); - ((WindowFrameContext)_localctx).start = frameBoundary(); - setState(5852); - match(AND); - setState(5853); - ((WindowFrameContext)_localctx).end = frameBoundary(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FrameUnitsContext extends ParserRuleContext { - public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } - public TerminalNode RANGE() { return getToken(DorisParser.RANGE, 0); } - public FrameUnitsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_frameUnits; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFrameUnits(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFrameUnits(this); - } - } - - public final FrameUnitsContext frameUnits() throws RecognitionException { - FrameUnitsContext _localctx = new FrameUnitsContext(_ctx, getState()); - enterRule(_localctx, 400, RULE_frameUnits); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5857); - _la = _input.LA(1); - if ( !(_la==RANGE || _la==ROWS) ) { - _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 FrameBoundaryContext extends ParserRuleContext { - public Token boundType; - public TerminalNode UNBOUNDED() { return getToken(DorisParser.UNBOUNDED, 0); } - public TerminalNode PRECEDING() { return getToken(DorisParser.PRECEDING, 0); } - public TerminalNode FOLLOWING() { return getToken(DorisParser.FOLLOWING, 0); } - public TerminalNode ROW() { return getToken(DorisParser.ROW, 0); } - public TerminalNode CURRENT() { return getToken(DorisParser.CURRENT, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public FrameBoundaryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_frameBoundary; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterFrameBoundary(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitFrameBoundary(this); - } - } - - public final FrameBoundaryContext frameBoundary() throws RecognitionException { - FrameBoundaryContext _localctx = new FrameBoundaryContext(_ctx, getState()); - enterRule(_localctx, 402, RULE_frameBoundary); - int _la; - try { - setState(5866); - _errHandler.sync(this); - switch (_input.LA(1)) { - case UNBOUNDED: - enterOuterAlt(_localctx, 1); - { - setState(5859); - match(UNBOUNDED); - setState(5860); - ((FrameBoundaryContext)_localctx).boundType = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FOLLOWING || _la==PRECEDING) ) { - ((FrameBoundaryContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case CURRENT: - enterOuterAlt(_localctx, 2); - { - setState(5861); - ((FrameBoundaryContext)_localctx).boundType = match(CURRENT); - setState(5862); - match(ROW); - } - break; - case LEFT_PAREN: - case LEFT_BRACKET: - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case ADD: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BINARY: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CASE: - case CAST: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATABASE: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXISTS: - case EXPIRED: - case EXTERNAL: - case EXTRACT: - case FAILED_LOGIN_ATTEMPTS: - case FALSE: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IF: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INTERVAL: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case KEY: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LEFT: - case LESS: - case LEVEL: - case LIKE: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NOT: - case NULL: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLACEHOLDER: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REGEXP: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RIGHT: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRIM: - case TRUE: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case PLUS: - case SUBTRACT: - case ASTERISK: - case TILDE: - case LOGICALNOT: - case HINT_START: - case HINT_END: - case COMMENT_START: - case ATSIGN: - case DOUBLEATSIGN: - case STRING_LITERAL: - case INTEGER_VALUE: - case EXPONENT_VALUE: - case DECIMAL_VALUE: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - enterOuterAlt(_localctx, 3); - { - setState(5863); - expression(); - setState(5864); - ((FrameBoundaryContext)_localctx).boundType = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FOLLOWING || _la==PRECEDING) ) { - ((FrameBoundaryContext)_localctx).boundType = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QualifiedNameContext extends ParserRuleContext { - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List DOT() { return getTokens(DorisParser.DOT); } - public TerminalNode DOT(int i) { - return getToken(DorisParser.DOT, i); - } - 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 DorisParserListener ) ((DorisParserListener)listener).enterQualifiedName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQualifiedName(this); - } - } - - public final QualifiedNameContext qualifiedName() throws RecognitionException { - QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); - enterRule(_localctx, 404, RULE_qualifiedName); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(5868); - identifier(); - setState(5873); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,847,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(5869); - match(DOT); - setState(5870); - identifier(); - } - } - } - setState(5875); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,847,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SpecifiedPartitionContext extends ParserRuleContext { - public TerminalNode PARTITION() { return getToken(DorisParser.PARTITION, 0); } - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public IdentifierListContext identifierList() { - return getRuleContext(IdentifierListContext.class,0); - } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } - public SpecifiedPartitionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_specifiedPartition; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSpecifiedPartition(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSpecifiedPartition(this); - } - } - - public final SpecifiedPartitionContext specifiedPartition() throws RecognitionException { - SpecifiedPartitionContext _localctx = new SpecifiedPartitionContext(_ctx, getState()); - enterRule(_localctx, 406, RULE_specifiedPartition); - int _la; - try { - setState(5889); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,851,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(5877); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(5876); - match(TEMPORARY); - } - } - - setState(5879); - match(PARTITION); - setState(5882); - _errHandler.sync(this); - switch (_input.LA(1)) { - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - case IDENTIFIER: - case BACKQUOTED_IDENTIFIER: - { - setState(5880); - identifier(); - } - break; - case LEFT_PAREN: - { - setState(5881); - identifierList(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(5885); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==TEMPORARY) { - { - setState(5884); - match(TEMPORARY); - } - } - - setState(5887); - match(PARTITIONS); - setState(5888); - identifierList(); - } - break; - } - } - 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 { - public ConstantContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constant; } - - public ConstantContext() { } - public void copyFrom(ConstantContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StructLiteralContext extends ConstantContext { - public ConstantContext constant; - public List items = new ArrayList(); - public TerminalNode LEFT_BRACE() { return getToken(DorisParser.LEFT_BRACE, 0); } - public TerminalNode RIGHT_BRACE() { return getToken(DorisParser.RIGHT_BRACE, 0); } - public List constant() { - return getRuleContexts(ConstantContext.class); - } - public ConstantContext constant(int i) { - return getRuleContext(ConstantContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public StructLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStructLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStructLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class NullLiteralContext extends ConstantContext { - public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } - public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNullLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNullLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class StringLiteralContext extends ConstantContext { - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode BINARY() { return getToken(DorisParser.BINARY, 0); } - public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterStringLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitStringLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class TypeConstructorContext extends ConstantContext { - public Token type; - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } - public TerminalNode DATEV1() { return getToken(DorisParser.DATEV1, 0); } - public TerminalNode DATEV2() { return getToken(DorisParser.DATEV2, 0); } - public TerminalNode TIMESTAMP() { return getToken(DorisParser.TIMESTAMP, 0); } - public TypeConstructorContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTypeConstructor(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTypeConstructor(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ArrayLiteralContext extends ConstantContext { - public ConstantContext constant; - public List items = new ArrayList(); - public TerminalNode LEFT_BRACKET() { return getToken(DorisParser.LEFT_BRACKET, 0); } - public TerminalNode RIGHT_BRACKET() { return getToken(DorisParser.RIGHT_BRACKET, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public List constant() { - return getRuleContexts(ConstantContext.class); - } - public ConstantContext constant(int i) { - return getRuleContext(ConstantContext.class,i); - } - public ArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterArrayLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitArrayLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PlaceholderContext extends ConstantContext { - public TerminalNode PLACEHOLDER() { return getToken(DorisParser.PLACEHOLDER, 0); } - public PlaceholderContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPlaceholder(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPlaceholder(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class MapLiteralContext extends ConstantContext { - public ConstantContext constant; - public List items = new ArrayList(); - public TerminalNode LEFT_BRACE() { return getToken(DorisParser.LEFT_BRACE, 0); } - public TerminalNode RIGHT_BRACE() { return getToken(DorisParser.RIGHT_BRACE, 0); } - public List COLON() { return getTokens(DorisParser.COLON); } - public TerminalNode COLON(int i) { - return getToken(DorisParser.COLON, i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public List constant() { - return getRuleContexts(ConstantContext.class); - } - public ConstantContext constant(int i) { - return getRuleContext(ConstantContext.class,i); - } - public MapLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterMapLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitMapLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class NumericLiteralContext extends ConstantContext { - public NumberContext number() { - return getRuleContext(NumberContext.class,0); - } - public NumericLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNumericLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNumericLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BooleanLiteralContext extends ConstantContext { - public BooleanValueContext booleanValue() { - return getRuleContext(BooleanValueContext.class,0); - } - public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBooleanLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBooleanLiteral(this); - } - } - - public final ConstantContext constant() throws RecognitionException { - ConstantContext _localctx = new ConstantContext(_ctx, getState()); - enterRule(_localctx, 408, RULE_constant); - int _la; - try { - setState(5942); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,858,_ctx) ) { - case 1: - _localctx = new NullLiteralContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(5891); - match(NULL); - } - break; - case 2: - _localctx = new TypeConstructorContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(5892); - ((TypeConstructorContext)_localctx).type = _input.LT(1); - _la = _input.LA(1); - if ( !(((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & 41L) != 0) || _la==TIMESTAMP) ) { - ((TypeConstructorContext)_localctx).type = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(5893); - match(STRING_LITERAL); - } - break; - case 3: - _localctx = new NumericLiteralContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(5894); - number(); - } - break; - case 4: - _localctx = new BooleanLiteralContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(5895); - booleanValue(); - } - break; - case 5: - _localctx = new StringLiteralContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(5897); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==BINARY) { - { - setState(5896); - match(BINARY); - } - } - - setState(5899); - match(STRING_LITERAL); - } - break; - case 6: - _localctx = new ArrayLiteralContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(5900); - match(LEFT_BRACKET); - setState(5902); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8796093022848L) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & 576460752303423529L) != 0) || _la==NULL || _la==PLACEHOLDER || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & 576460752303423745L) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & 225L) != 0)) { - { - setState(5901); - ((ArrayLiteralContext)_localctx).constant = constant(); - ((ArrayLiteralContext)_localctx).items.add(((ArrayLiteralContext)_localctx).constant); - } - } - - setState(5908); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5904); - match(COMMA); - setState(5905); - ((ArrayLiteralContext)_localctx).constant = constant(); - ((ArrayLiteralContext)_localctx).items.add(((ArrayLiteralContext)_localctx).constant); - } - } - setState(5910); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5911); - match(RIGHT_BRACKET); - } - break; - case 7: - _localctx = new MapLiteralContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(5912); - match(LEFT_BRACE); - setState(5917); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 8796093022848L) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & 576460752303423529L) != 0) || _la==NULL || _la==PLACEHOLDER || ((((_la - 452)) & ~0x3f) == 0 && ((1L << (_la - 452)) & 576460752303423745L) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & 225L) != 0)) { - { - setState(5913); - ((MapLiteralContext)_localctx).constant = constant(); - ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); - setState(5914); - match(COLON); - setState(5915); - ((MapLiteralContext)_localctx).constant = constant(); - ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); - } - } - - setState(5926); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5919); - match(COMMA); - setState(5920); - ((MapLiteralContext)_localctx).constant = constant(); - ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); - setState(5921); - match(COLON); - setState(5922); - ((MapLiteralContext)_localctx).constant = constant(); - ((MapLiteralContext)_localctx).items.add(((MapLiteralContext)_localctx).constant); - } - } - setState(5928); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5929); - match(RIGHT_BRACE); - } - break; - case 8: - _localctx = new StructLiteralContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(5930); - match(LEFT_BRACE); - setState(5931); - ((StructLiteralContext)_localctx).constant = constant(); - ((StructLiteralContext)_localctx).items.add(((StructLiteralContext)_localctx).constant); - setState(5936); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5932); - match(COMMA); - setState(5933); - ((StructLiteralContext)_localctx).constant = constant(); - ((StructLiteralContext)_localctx).items.add(((StructLiteralContext)_localctx).constant); - } - } - setState(5938); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(5939); - match(RIGHT_BRACE); - } - break; - case 9: - _localctx = new PlaceholderContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(5941); - match(PLACEHOLDER); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ComparisonOperatorContext extends ParserRuleContext { - public TerminalNode EQ() { return getToken(DorisParser.EQ, 0); } - public TerminalNode NEQ() { return getToken(DorisParser.NEQ, 0); } - public TerminalNode LT() { return getToken(DorisParser.LT, 0); } - public TerminalNode LTE() { return getToken(DorisParser.LTE, 0); } - public TerminalNode GT() { return getToken(DorisParser.GT, 0); } - public TerminalNode GTE() { return getToken(DorisParser.GTE, 0); } - public TerminalNode NSEQ() { return getToken(DorisParser.NSEQ, 0); } - public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_comparisonOperator; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComparisonOperator(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComparisonOperator(this); - } - } - - public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { - ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); - enterRule(_localctx, 410, RULE_comparisonOperator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5944); - _la = _input.LA(1); - if ( !(((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & 127L) != 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 BooleanValueContext extends ParserRuleContext { - public TerminalNode TRUE() { return getToken(DorisParser.TRUE, 0); } - public TerminalNode FALSE() { return getToken(DorisParser.FALSE, 0); } - public BooleanValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_booleanValue; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterBooleanValue(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitBooleanValue(this); - } - } - - public final BooleanValueContext booleanValue() throws RecognitionException { - BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); - enterRule(_localctx, 412, RULE_booleanValue); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5946); - _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(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WhenClauseContext extends ParserRuleContext { - public ExpressionContext condition; - public ExpressionContext result; - public TerminalNode WHEN() { return getToken(DorisParser.WHEN, 0); } - public TerminalNode THEN() { return getToken(DorisParser.THEN, 0); } - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); - } - public WhenClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_whenClause; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterWhenClause(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitWhenClause(this); - } - } - - public final WhenClauseContext whenClause() throws RecognitionException { - WhenClauseContext _localctx = new WhenClauseContext(_ctx, getState()); - enterRule(_localctx, 414, RULE_whenClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(5948); - match(WHEN); - setState(5949); - ((WhenClauseContext)_localctx).condition = expression(); - setState(5950); - match(THEN); - setState(5951); - ((WhenClauseContext)_localctx).result = expression(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IntervalContext extends ParserRuleContext { - public ExpressionContext value; - public UnitIdentifierContext unit; - public TerminalNode INTERVAL() { return getToken(DorisParser.INTERVAL, 0); } - public ExpressionContext expression() { - return getRuleContext(ExpressionContext.class,0); - } - public UnitIdentifierContext unitIdentifier() { - return getRuleContext(UnitIdentifierContext.class,0); - } - public IntervalContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_interval; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterInterval(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitInterval(this); - } - } - - public final IntervalContext interval() throws RecognitionException { - IntervalContext _localctx = new IntervalContext(_ctx, getState()); - enterRule(_localctx, 416, RULE_interval); - try { - enterOuterAlt(_localctx, 1); - { - setState(5953); - match(INTERVAL); - setState(5954); - ((IntervalContext)_localctx).value = expression(); - setState(5955); - ((IntervalContext)_localctx).unit = unitIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class UnitIdentifierContext extends ParserRuleContext { - public TerminalNode YEAR() { return getToken(DorisParser.YEAR, 0); } - public TerminalNode QUARTER() { return getToken(DorisParser.QUARTER, 0); } - public TerminalNode MONTH() { return getToken(DorisParser.MONTH, 0); } - public TerminalNode WEEK() { return getToken(DorisParser.WEEK, 0); } - public TerminalNode DAY() { return getToken(DorisParser.DAY, 0); } - public TerminalNode HOUR() { return getToken(DorisParser.HOUR, 0); } - public TerminalNode MINUTE() { return getToken(DorisParser.MINUTE, 0); } - public TerminalNode SECOND() { return getToken(DorisParser.SECOND, 0); } - public UnitIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_unitIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnitIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnitIdentifier(this); - } - } - - public final UnitIdentifierContext unitIdentifier() throws RecognitionException { - UnitIdentifierContext _localctx = new UnitIdentifierContext(_ctx, getState()); - enterRule(_localctx, 418, RULE_unitIdentifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5957); - _la = _input.LA(1); - if ( !(_la==DAY || _la==HOUR || _la==MINUTE || _la==MONTH || _la==QUARTER || _la==SECOND || _la==WEEK || _la==YEAR) ) { - _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 DataTypeWithNullableContext extends ParserRuleContext { - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public TerminalNode NULL() { return getToken(DorisParser.NULL, 0); } - public TerminalNode NOT() { return getToken(DorisParser.NOT, 0); } - public DataTypeWithNullableContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dataTypeWithNullable; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDataTypeWithNullable(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDataTypeWithNullable(this); - } - } - - public final DataTypeWithNullableContext dataTypeWithNullable() throws RecognitionException { - DataTypeWithNullableContext _localctx = new DataTypeWithNullableContext(_ctx, getState()); - enterRule(_localctx, 420, RULE_dataTypeWithNullable); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(5959); - dataType(); - setState(5964); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT || _la==NULL) { - { - setState(5961); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(5960); - match(NOT); - } - } - - setState(5963); - match(NULL); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DataTypeContext extends ParserRuleContext { - public DataTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dataType; } - - public DataTypeContext() { } - public void copyFrom(DataTypeContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class VariantPredefinedFieldsContext extends DataTypeContext { - public TerminalNode VARIANT() { return getToken(DorisParser.VARIANT, 0); } - public TerminalNode LT() { return getToken(DorisParser.LT, 0); } - public VariantSubColTypeListContext variantSubColTypeList() { - return getRuleContext(VariantSubColTypeListContext.class,0); - } - public TerminalNode GT() { return getToken(DorisParser.GT, 0); } - public VariantPredefinedFieldsContext(DataTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantPredefinedFields(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantPredefinedFields(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ComplexDataTypeContext extends DataTypeContext { - public Token complex; - public TerminalNode LT() { return getToken(DorisParser.LT, 0); } - public List dataType() { - return getRuleContexts(DataTypeContext.class); - } - public DataTypeContext dataType(int i) { - return getRuleContext(DataTypeContext.class,i); - } - public TerminalNode GT() { return getToken(DorisParser.GT, 0); } - public TerminalNode ARRAY() { return getToken(DorisParser.ARRAY, 0); } - public TerminalNode COMMA() { return getToken(DorisParser.COMMA, 0); } - public TerminalNode MAP() { return getToken(DorisParser.MAP, 0); } - public ComplexColTypeListContext complexColTypeList() { - return getRuleContext(ComplexColTypeListContext.class,0); - } - public TerminalNode STRUCT() { return getToken(DorisParser.STRUCT, 0); } - public ComplexDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComplexDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComplexDataType(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class AggStateDataTypeContext extends DataTypeContext { - public DataTypeWithNullableContext dataTypeWithNullable; - public List dataTypes = new ArrayList(); - public TerminalNode AGG_STATE() { return getToken(DorisParser.AGG_STATE, 0); } - public TerminalNode LT() { return getToken(DorisParser.LT, 0); } - public FunctionNameIdentifierContext functionNameIdentifier() { - return getRuleContext(FunctionNameIdentifierContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public TerminalNode GT() { return getToken(DorisParser.GT, 0); } - public List dataTypeWithNullable() { - return getRuleContexts(DataTypeWithNullableContext.class); - } - public DataTypeWithNullableContext dataTypeWithNullable(int i) { - return getRuleContext(DataTypeWithNullableContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public AggStateDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterAggStateDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitAggStateDataType(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class PrimitiveDataTypeContext extends DataTypeContext { - public PrimitiveColTypeContext primitiveColType() { - return getRuleContext(PrimitiveColTypeContext.class,0); - } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public List INTEGER_VALUE() { return getTokens(DorisParser.INTEGER_VALUE); } - public TerminalNode INTEGER_VALUE(int i) { - return getToken(DorisParser.INTEGER_VALUE, i); - } - public TerminalNode ASTERISK() { return getToken(DorisParser.ASTERISK, 0); } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public PrimitiveDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrimitiveDataType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrimitiveDataType(this); - } - } - - public final DataTypeContext dataType() throws RecognitionException { - DataTypeContext _localctx = new DataTypeContext(_ctx, getState()); - enterRule(_localctx, 422, RULE_dataType); - int _la; - try { - setState(6016); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,864,_ctx) ) { - case 1: - _localctx = new ComplexDataTypeContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(5966); - ((ComplexDataTypeContext)_localctx).complex = match(ARRAY); - setState(5967); - match(LT); - setState(5968); - dataType(); - setState(5969); - match(GT); - } - break; - case 2: - _localctx = new ComplexDataTypeContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(5971); - ((ComplexDataTypeContext)_localctx).complex = match(MAP); - setState(5972); - match(LT); - setState(5973); - dataType(); - setState(5974); - match(COMMA); - setState(5975); - dataType(); - setState(5976); - match(GT); - } - break; - case 3: - _localctx = new ComplexDataTypeContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(5978); - ((ComplexDataTypeContext)_localctx).complex = match(STRUCT); - setState(5979); - match(LT); - setState(5980); - complexColTypeList(); - setState(5981); - match(GT); - } - break; - case 4: - _localctx = new VariantPredefinedFieldsContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(5983); - match(VARIANT); - setState(5984); - match(LT); - setState(5985); - variantSubColTypeList(); - setState(5986); - match(GT); - } - break; - case 5: - _localctx = new AggStateDataTypeContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(5988); - match(AGG_STATE); - setState(5989); - match(LT); - setState(5990); - functionNameIdentifier(); - setState(5991); - match(LEFT_PAREN); - setState(5992); - ((AggStateDataTypeContext)_localctx).dataTypeWithNullable = dataTypeWithNullable(); - ((AggStateDataTypeContext)_localctx).dataTypes.add(((AggStateDataTypeContext)_localctx).dataTypeWithNullable); - setState(5997); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(5993); - match(COMMA); - setState(5994); - ((AggStateDataTypeContext)_localctx).dataTypeWithNullable = dataTypeWithNullable(); - ((AggStateDataTypeContext)_localctx).dataTypes.add(((AggStateDataTypeContext)_localctx).dataTypeWithNullable); - } - } - setState(5999); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(6000); - match(RIGHT_PAREN); - setState(6001); - match(GT); - } - break; - case 6: - _localctx = new PrimitiveDataTypeContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(6003); - primitiveColType(); - setState(6014); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==LEFT_PAREN) { - { - setState(6004); - match(LEFT_PAREN); - setState(6005); - _la = _input.LA(1); - if ( !(_la==ASTERISK || _la==INTEGER_VALUE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(6010); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(6006); - match(COMMA); - setState(6007); - match(INTEGER_VALUE); - } - } - setState(6012); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(6013); - match(RIGHT_PAREN); - } - } - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PrimitiveColTypeContext extends ParserRuleContext { - public Token type; - public TerminalNode TINYINT() { return getToken(DorisParser.TINYINT, 0); } - public TerminalNode SMALLINT() { return getToken(DorisParser.SMALLINT, 0); } - public TerminalNode INT() { return getToken(DorisParser.INT, 0); } - public TerminalNode INTEGER() { return getToken(DorisParser.INTEGER, 0); } - public TerminalNode BIGINT() { return getToken(DorisParser.BIGINT, 0); } - public TerminalNode LARGEINT() { return getToken(DorisParser.LARGEINT, 0); } - public TerminalNode BOOLEAN() { return getToken(DorisParser.BOOLEAN, 0); } - public TerminalNode FLOAT() { return getToken(DorisParser.FLOAT, 0); } - public TerminalNode DOUBLE() { return getToken(DorisParser.DOUBLE, 0); } - public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } - public TerminalNode DATETIME() { return getToken(DorisParser.DATETIME, 0); } - public TerminalNode TIME() { return getToken(DorisParser.TIME, 0); } - public TerminalNode DATEV2() { return getToken(DorisParser.DATEV2, 0); } - public TerminalNode DATETIMEV2() { return getToken(DorisParser.DATETIMEV2, 0); } - public TerminalNode DATEV1() { return getToken(DorisParser.DATEV1, 0); } - public TerminalNode DATETIMEV1() { return getToken(DorisParser.DATETIMEV1, 0); } - public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } - public TerminalNode QUANTILE_STATE() { return getToken(DorisParser.QUANTILE_STATE, 0); } - public TerminalNode HLL() { return getToken(DorisParser.HLL, 0); } - public TerminalNode AGG_STATE() { return getToken(DorisParser.AGG_STATE, 0); } - public TerminalNode STRING() { return getToken(DorisParser.STRING, 0); } - public TerminalNode JSON() { return getToken(DorisParser.JSON, 0); } - public TerminalNode JSONB() { return getToken(DorisParser.JSONB, 0); } - public TerminalNode TEXT() { return getToken(DorisParser.TEXT, 0); } - public TerminalNode VARCHAR() { return getToken(DorisParser.VARCHAR, 0); } - public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } - public TerminalNode DECIMAL() { return getToken(DorisParser.DECIMAL, 0); } - public TerminalNode DECIMALV2() { return getToken(DorisParser.DECIMALV2, 0); } - public TerminalNode DECIMALV3() { return getToken(DorisParser.DECIMALV3, 0); } - public TerminalNode IPV4() { return getToken(DorisParser.IPV4, 0); } - public TerminalNode IPV6() { return getToken(DorisParser.IPV6, 0); } - public TerminalNode VARIANT() { return getToken(DorisParser.VARIANT, 0); } - public TerminalNode ALL() { return getToken(DorisParser.ALL, 0); } - public PrimitiveColTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_primitiveColType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterPrimitiveColType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitPrimitiveColType(this); - } - } - - public final PrimitiveColTypeContext primitiveColType() throws RecognitionException { - PrimitiveColTypeContext _localctx = new PrimitiveColTypeContext(_ctx, getState()); - enterRule(_localctx, 424, RULE_primitiveColType); - int _la; - try { - setState(6050); - _errHandler.sync(this); - switch (_input.LA(1)) { - case TINYINT: - enterOuterAlt(_localctx, 1); - { - setState(6018); - ((PrimitiveColTypeContext)_localctx).type = match(TINYINT); - } - break; - case SMALLINT: - enterOuterAlt(_localctx, 2); - { - setState(6019); - ((PrimitiveColTypeContext)_localctx).type = match(SMALLINT); - } - break; - case INT: - case INTEGER: - enterOuterAlt(_localctx, 3); - { - setState(6020); - ((PrimitiveColTypeContext)_localctx).type = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==INT || _la==INTEGER) ) { - ((PrimitiveColTypeContext)_localctx).type = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - case BIGINT: - enterOuterAlt(_localctx, 4); - { - setState(6021); - ((PrimitiveColTypeContext)_localctx).type = match(BIGINT); - } - break; - case LARGEINT: - enterOuterAlt(_localctx, 5); - { - setState(6022); - ((PrimitiveColTypeContext)_localctx).type = match(LARGEINT); - } - break; - case BOOLEAN: - enterOuterAlt(_localctx, 6); - { - setState(6023); - ((PrimitiveColTypeContext)_localctx).type = match(BOOLEAN); - } - break; - case FLOAT: - enterOuterAlt(_localctx, 7); - { - setState(6024); - ((PrimitiveColTypeContext)_localctx).type = match(FLOAT); - } - break; - case DOUBLE: - enterOuterAlt(_localctx, 8); - { - setState(6025); - ((PrimitiveColTypeContext)_localctx).type = match(DOUBLE); - } - break; - case DATE: - enterOuterAlt(_localctx, 9); - { - setState(6026); - ((PrimitiveColTypeContext)_localctx).type = match(DATE); - } - break; - case DATETIME: - enterOuterAlt(_localctx, 10); - { - setState(6027); - ((PrimitiveColTypeContext)_localctx).type = match(DATETIME); - } - break; - case TIME: - enterOuterAlt(_localctx, 11); - { - setState(6028); - ((PrimitiveColTypeContext)_localctx).type = match(TIME); - } - break; - case DATEV2: - enterOuterAlt(_localctx, 12); - { - setState(6029); - ((PrimitiveColTypeContext)_localctx).type = match(DATEV2); - } - break; - case DATETIMEV2: - enterOuterAlt(_localctx, 13); - { - setState(6030); - ((PrimitiveColTypeContext)_localctx).type = match(DATETIMEV2); - } - break; - case DATEV1: - enterOuterAlt(_localctx, 14); - { - setState(6031); - ((PrimitiveColTypeContext)_localctx).type = match(DATEV1); - } - break; - case DATETIMEV1: - enterOuterAlt(_localctx, 15); - { - setState(6032); - ((PrimitiveColTypeContext)_localctx).type = match(DATETIMEV1); - } - break; - case BITMAP: - enterOuterAlt(_localctx, 16); - { - setState(6033); - ((PrimitiveColTypeContext)_localctx).type = match(BITMAP); - } - break; - case QUANTILE_STATE: - enterOuterAlt(_localctx, 17); - { - setState(6034); - ((PrimitiveColTypeContext)_localctx).type = match(QUANTILE_STATE); - } - break; - case HLL: - enterOuterAlt(_localctx, 18); - { - setState(6035); - ((PrimitiveColTypeContext)_localctx).type = match(HLL); - } - break; - case AGG_STATE: - enterOuterAlt(_localctx, 19); - { - setState(6036); - ((PrimitiveColTypeContext)_localctx).type = match(AGG_STATE); - } - break; - case STRING: - enterOuterAlt(_localctx, 20); - { - setState(6037); - ((PrimitiveColTypeContext)_localctx).type = match(STRING); - } - break; - case JSON: - enterOuterAlt(_localctx, 21); - { - setState(6038); - ((PrimitiveColTypeContext)_localctx).type = match(JSON); - } - break; - case JSONB: - enterOuterAlt(_localctx, 22); - { - setState(6039); - ((PrimitiveColTypeContext)_localctx).type = match(JSONB); - } - break; - case TEXT: - enterOuterAlt(_localctx, 23); - { - setState(6040); - ((PrimitiveColTypeContext)_localctx).type = match(TEXT); - } - break; - case VARCHAR: - enterOuterAlt(_localctx, 24); - { - setState(6041); - ((PrimitiveColTypeContext)_localctx).type = match(VARCHAR); - } - break; - case CHAR: - enterOuterAlt(_localctx, 25); - { - setState(6042); - ((PrimitiveColTypeContext)_localctx).type = match(CHAR); - } - break; - case DECIMAL: - enterOuterAlt(_localctx, 26); - { - setState(6043); - ((PrimitiveColTypeContext)_localctx).type = match(DECIMAL); - } - break; - case DECIMALV2: - enterOuterAlt(_localctx, 27); - { - setState(6044); - ((PrimitiveColTypeContext)_localctx).type = match(DECIMALV2); - } - break; - case DECIMALV3: - enterOuterAlt(_localctx, 28); - { - setState(6045); - ((PrimitiveColTypeContext)_localctx).type = match(DECIMALV3); - } - break; - case IPV4: - enterOuterAlt(_localctx, 29); - { - setState(6046); - ((PrimitiveColTypeContext)_localctx).type = match(IPV4); - } - break; - case IPV6: - enterOuterAlt(_localctx, 30); - { - setState(6047); - ((PrimitiveColTypeContext)_localctx).type = match(IPV6); - } - break; - case VARIANT: - enterOuterAlt(_localctx, 31); - { - setState(6048); - ((PrimitiveColTypeContext)_localctx).type = match(VARIANT); - } - break; - case ALL: - enterOuterAlt(_localctx, 32); - { - setState(6049); - ((PrimitiveColTypeContext)_localctx).type = match(ALL); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ComplexColTypeListContext extends ParserRuleContext { - public List complexColType() { - return getRuleContexts(ComplexColTypeContext.class); - } - public ComplexColTypeContext complexColType(int i) { - return getRuleContext(ComplexColTypeContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public ComplexColTypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_complexColTypeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComplexColTypeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComplexColTypeList(this); - } - } - - public final ComplexColTypeListContext complexColTypeList() throws RecognitionException { - ComplexColTypeListContext _localctx = new ComplexColTypeListContext(_ctx, getState()); - enterRule(_localctx, 426, RULE_complexColTypeList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6052); - complexColType(); - setState(6057); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(6053); - match(COMMA); - setState(6054); - complexColType(); - } - } - setState(6059); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ComplexColTypeContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode COLON() { return getToken(DorisParser.COLON, 0); } - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public ComplexColTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_complexColType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterComplexColType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitComplexColType(this); - } - } - - public final ComplexColTypeContext complexColType() throws RecognitionException { - ComplexColTypeContext _localctx = new ComplexColTypeContext(_ctx, getState()); - enterRule(_localctx, 428, RULE_complexColType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6060); - identifier(); - setState(6061); - match(COLON); - setState(6062); - dataType(); - setState(6064); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(6063); - commentSpec(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariantSubColTypeListContext extends ParserRuleContext { - public List variantSubColType() { - return getRuleContexts(VariantSubColTypeContext.class); - } - public VariantSubColTypeContext variantSubColType(int i) { - return getRuleContext(VariantSubColTypeContext.class,i); - } - public List COMMA() { return getTokens(DorisParser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(DorisParser.COMMA, i); - } - public VariantSubColTypeListContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variantSubColTypeList; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantSubColTypeList(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantSubColTypeList(this); - } - } - - public final VariantSubColTypeListContext variantSubColTypeList() throws RecognitionException { - VariantSubColTypeListContext _localctx = new VariantSubColTypeListContext(_ctx, getState()); - enterRule(_localctx, 430, RULE_variantSubColTypeList); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6066); - variantSubColType(); - setState(6071); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(6067); - match(COMMA); - setState(6068); - variantSubColType(); - } - } - setState(6073); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariantSubColTypeContext extends ParserRuleContext { - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TerminalNode COLON() { return getToken(DorisParser.COLON, 0); } - public DataTypeContext dataType() { - return getRuleContext(DataTypeContext.class,0); - } - public VariantSubColMatchTypeContext variantSubColMatchType() { - return getRuleContext(VariantSubColMatchTypeContext.class,0); - } - public CommentSpecContext commentSpec() { - return getRuleContext(CommentSpecContext.class,0); - } - public VariantSubColTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variantSubColType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantSubColType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantSubColType(this); - } - } - - public final VariantSubColTypeContext variantSubColType() throws RecognitionException { - VariantSubColTypeContext _localctx = new VariantSubColTypeContext(_ctx, getState()); - enterRule(_localctx, 432, RULE_variantSubColType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6075); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==MATCH_NAME || _la==MATCH_NAME_GLOB) { - { - setState(6074); - variantSubColMatchType(); - } - } - - setState(6077); - match(STRING_LITERAL); - setState(6078); - match(COLON); - setState(6079); - dataType(); - setState(6081); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==COMMENT) { - { - setState(6080); - commentSpec(); - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class VariantSubColMatchTypeContext extends ParserRuleContext { - public TerminalNode MATCH_NAME() { return getToken(DorisParser.MATCH_NAME, 0); } - public TerminalNode MATCH_NAME_GLOB() { return getToken(DorisParser.MATCH_NAME_GLOB, 0); } - public VariantSubColMatchTypeContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_variantSubColMatchType; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterVariantSubColMatchType(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitVariantSubColMatchType(this); - } - } - - public final VariantSubColMatchTypeContext variantSubColMatchType() throws RecognitionException { - VariantSubColMatchTypeContext _localctx = new VariantSubColMatchTypeContext(_ctx, getState()); - enterRule(_localctx, 434, RULE_variantSubColMatchType); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6083); - _la = _input.LA(1); - if ( !(_la==MATCH_NAME || _la==MATCH_NAME_GLOB) ) { - _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 CommentSpecContext extends ParserRuleContext { - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public CommentSpecContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_commentSpec; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterCommentSpec(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitCommentSpec(this); - } - } - - public final CommentSpecContext commentSpec() throws RecognitionException { - CommentSpecContext _localctx = new CommentSpecContext(_ctx, getState()); - enterRule(_localctx, 436, RULE_commentSpec); - try { - enterOuterAlt(_localctx, 1); - { - setState(6085); - match(COMMENT); - setState(6086); - match(STRING_LITERAL); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SampleContext extends ParserRuleContext { - public Token seed; - public TerminalNode TABLESAMPLE() { return getToken(DorisParser.TABLESAMPLE, 0); } - public TerminalNode LEFT_PAREN() { return getToken(DorisParser.LEFT_PAREN, 0); } - public TerminalNode RIGHT_PAREN() { return getToken(DorisParser.RIGHT_PAREN, 0); } - public SampleMethodContext sampleMethod() { - return getRuleContext(SampleMethodContext.class,0); - } - public TerminalNode REPEATABLE() { return getToken(DorisParser.REPEATABLE, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public SampleContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sample; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSample(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSample(this); - } - } - - public final SampleContext sample() throws RecognitionException { - SampleContext _localctx = new SampleContext(_ctx, getState()); - enterRule(_localctx, 438, RULE_sample); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6088); - match(TABLESAMPLE); - setState(6089); - match(LEFT_PAREN); - setState(6091); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==INTEGER_VALUE) { - { - setState(6090); - sampleMethod(); - } - } - - setState(6093); - match(RIGHT_PAREN); - setState(6096); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,872,_ctx) ) { - case 1: - { - setState(6094); - match(REPEATABLE); - setState(6095); - ((SampleContext)_localctx).seed = match(INTEGER_VALUE); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SampleMethodContext extends ParserRuleContext { - public SampleMethodContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sampleMethod; } - - public SampleMethodContext() { } - public void copyFrom(SampleMethodContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SampleByRowsContext extends SampleMethodContext { - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode ROWS() { return getToken(DorisParser.ROWS, 0); } - public SampleByRowsContext(SampleMethodContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSampleByRows(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSampleByRows(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class SampleByPercentileContext extends SampleMethodContext { - public Token percentage; - public TerminalNode PERCENT() { return getToken(DorisParser.PERCENT, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public SampleByPercentileContext(SampleMethodContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterSampleByPercentile(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitSampleByPercentile(this); - } - } - - public final SampleMethodContext sampleMethod() throws RecognitionException { - SampleMethodContext _localctx = new SampleMethodContext(_ctx, getState()); - enterRule(_localctx, 440, RULE_sampleMethod); - try { - setState(6102); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,873,_ctx) ) { - case 1: - _localctx = new SampleByPercentileContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(6098); - ((SampleByPercentileContext)_localctx).percentage = match(INTEGER_VALUE); - setState(6099); - match(PERCENT); - } - break; - case 2: - _localctx = new SampleByRowsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(6100); - match(INTEGER_VALUE); - setState(6101); - match(ROWS); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class TableSnapshotContext extends ParserRuleContext { - public Token version; - public Token time; - public TerminalNode FOR() { return getToken(DorisParser.FOR, 0); } - public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } - public TerminalNode AS() { return getToken(DorisParser.AS, 0); } - public TerminalNode OF() { return getToken(DorisParser.OF, 0); } - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode TIME() { return getToken(DorisParser.TIME, 0); } - public TerminalNode STRING_LITERAL() { return getToken(DorisParser.STRING_LITERAL, 0); } - public TableSnapshotContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_tableSnapshot; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterTableSnapshot(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitTableSnapshot(this); - } - } - - public final TableSnapshotContext tableSnapshot() throws RecognitionException { - TableSnapshotContext _localctx = new TableSnapshotContext(_ctx, getState()); - enterRule(_localctx, 442, RULE_tableSnapshot); - try { - setState(6114); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,874,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(6104); - match(FOR); - setState(6105); - match(VERSION); - setState(6106); - match(AS); - setState(6107); - match(OF); - setState(6108); - ((TableSnapshotContext)_localctx).version = match(INTEGER_VALUE); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(6109); - match(FOR); - setState(6110); - match(TIME); - setState(6111); - match(AS); - setState(6112); - match(OF); - setState(6113); - ((TableSnapshotContext)_localctx).time = match(STRING_LITERAL); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ErrorCapturingIdentifierContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() { - return getRuleContext(ErrorCapturingIdentifierExtraContext.class,0); - } - public ErrorCapturingIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_errorCapturingIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterErrorCapturingIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitErrorCapturingIdentifier(this); - } - } - - public final ErrorCapturingIdentifierContext errorCapturingIdentifier() throws RecognitionException { - ErrorCapturingIdentifierContext _localctx = new ErrorCapturingIdentifierContext(_ctx, getState()); - enterRule(_localctx, 444, RULE_errorCapturingIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(6116); - identifier(); - setState(6117); - errorCapturingIdentifierExtra(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ErrorCapturingIdentifierExtraContext extends ParserRuleContext { - public ErrorCapturingIdentifierExtraContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_errorCapturingIdentifierExtra; } - - public ErrorCapturingIdentifierExtraContext() { } - public void copyFrom(ErrorCapturingIdentifierExtraContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ErrorIdentContext extends ErrorCapturingIdentifierExtraContext { - public List SUBTRACT() { return getTokens(DorisParser.SUBTRACT); } - public TerminalNode SUBTRACT(int i) { - return getToken(DorisParser.SUBTRACT, i); - } - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public ErrorIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterErrorIdent(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitErrorIdent(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class RealIdentContext extends ErrorCapturingIdentifierExtraContext { - public RealIdentContext(ErrorCapturingIdentifierExtraContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterRealIdent(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitRealIdent(this); - } - } - - public final ErrorCapturingIdentifierExtraContext errorCapturingIdentifierExtra() throws RecognitionException { - ErrorCapturingIdentifierExtraContext _localctx = new ErrorCapturingIdentifierExtraContext(_ctx, getState()); - enterRule(_localctx, 446, RULE_errorCapturingIdentifierExtra); - try { - int _alt; - setState(6126); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,876,_ctx) ) { - case 1: - _localctx = new ErrorIdentContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(6121); - _errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - setState(6119); - match(SUBTRACT); - setState(6120); - identifier(); - } - } - break; - default: - throw new NoViableAltException(this); - } - setState(6123); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,875,_ctx); - } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); - } - break; - case 2: - _localctx = new RealIdentContext(_localctx); - enterOuterAlt(_localctx, 2); - { - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierContext extends ParserRuleContext { - public StrictIdentifierContext strictIdentifier() { - return getRuleContext(StrictIdentifierContext.class,0); - } - public IdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIdentifier(this); - } - } - - public final IdentifierContext identifier() throws RecognitionException { - IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); - enterRule(_localctx, 448, RULE_identifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(6128); - strictIdentifier(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StrictIdentifierContext extends ParserRuleContext { - public StrictIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_strictIdentifier; } - - public StrictIdentifierContext() { } - public void copyFrom(StrictIdentifierContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class QuotedIdentifierAlternativeContext extends StrictIdentifierContext { - public QuotedIdentifierContext quotedIdentifier() { - return getRuleContext(QuotedIdentifierContext.class,0); - } - public QuotedIdentifierAlternativeContext(StrictIdentifierContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQuotedIdentifierAlternative(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQuotedIdentifierAlternative(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class UnquotedIdentifierContext extends StrictIdentifierContext { - public TerminalNode IDENTIFIER() { return getToken(DorisParser.IDENTIFIER, 0); } - public NonReservedContext nonReserved() { - return getRuleContext(NonReservedContext.class,0); - } - public UnquotedIdentifierContext(StrictIdentifierContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterUnquotedIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitUnquotedIdentifier(this); - } - } - - public final StrictIdentifierContext strictIdentifier() throws RecognitionException { - StrictIdentifierContext _localctx = new StrictIdentifierContext(_ctx, getState()); - enterRule(_localctx, 450, RULE_strictIdentifier); - try { - setState(6133); - _errHandler.sync(this); - switch (_input.LA(1)) { - case IDENTIFIER: - _localctx = new UnquotedIdentifierContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(6130); - match(IDENTIFIER); - } - break; - case BACKQUOTED_IDENTIFIER: - _localctx = new QuotedIdentifierAlternativeContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(6131); - quotedIdentifier(); - } - break; - case LEFT_BRACE: - case RIGHT_BRACE: - case ACTIONS: - case AFTER: - case AGG_STATE: - case AGGREGATE: - case ALIAS: - case ANALYZED: - case ARRAY: - case AT: - case AUTHORS: - case AUTO_INCREMENT: - case ALWAYS: - case BACKENDS: - case BACKUP: - case BEGIN: - case BELONG: - case BIN: - case BITAND: - case BITMAP: - case BITMAP_EMPTY: - case BITMAP_UNION: - case BITOR: - case BITXOR: - case BLOB: - case BOOLEAN: - case BRIEF: - case BROKER: - case BUCKETS: - case BUILD: - case BUILTIN: - case BULK: - case CACHE: - case CACHED: - case CALL: - case CATALOG: - case CATALOGS: - case CHAIN: - case CHAR: - case CHARSET: - case CHECK: - case CLUSTER: - case CLUSTERS: - case COLLATION: - case COLLECT: - case COLOCATE: - case COLUMNS: - case COMMENT: - case COMMIT: - case COMMITTED: - case COMPACT: - case COMPLETE: - case COMPRESS_TYPE: - case COMPUTE: - case CONDITIONS: - case CONFIG: - case CONNECTION: - case CONNECTION_ID: - case CONSISTENT: - case CONSTRAINTS: - case CONVERT: - case CONVERT_LSC: - case COPY: - case COUNT: - case CREATION: - case CRON: - case CURRENT_CATALOG: - case CURRENT_DATE: - case CURRENT_TIME: - case CURRENT_TIMESTAMP: - case CURRENT_USER: - case DATA: - case DATE: - case DATETIME: - case DATETIMEV2: - case DATEV2: - case DATETIMEV1: - case DATEV1: - case DAY: - case DECIMAL: - case DECIMALV2: - case DECIMALV3: - case DEFERRED: - case DEMAND: - case DIAGNOSE: - case DIAGNOSIS: - case DISTINCTPC: - case DISTINCTPCSA: - case DO: - case DORIS_INTERNAL_TABLE_ID: - case DUAL: - case DYNAMIC: - case E: - case ENABLE: - case ENCRYPTKEY: - case ENCRYPTKEYS: - case END: - case ENDS: - case ENGINE: - case ENGINES: - case ERRORS: - case EVENTS: - case EVERY: - case EXCLUDE: - case EXPIRED: - case EXTERNAL: - case FAILED_LOGIN_ATTEMPTS: - case FAST: - case FEATURE: - case FIELDS: - case FILE: - case FILTER: - case FIRST: - case FORMAT: - case FREE: - case FRONTENDS: - case FUNCTION: - case GENERATED: - case GENERIC: - case GLOBAL: - case GRAPH: - case GROUPING: - case GROUPS: - case HASH: - case HDFS: - case HELP: - case HISTOGRAM: - case HLL_UNION: - case HOSTNAME: - case HOTSPOT: - case HOUR: - case HUB: - case IDENTIFIED: - case IGNORE: - case IMMEDIATE: - case INCREMENTAL: - case INDEXES: - case INVERTED: - case IPV4: - case IPV6: - case IS_NOT_NULL_PRED: - case IS_NULL_PRED: - case ISNULL: - case ISOLATION: - case JOB: - case JOBS: - case JSON: - case JSONB: - case LABEL: - case LAST: - case LDAP: - case LDAP_ADMIN_PASSWORD: - case LESS: - case LEVEL: - case LINES: - case LINK: - case LOCAL: - case LOCALTIME: - case LOCALTIMESTAMP: - case LOCATION: - case LOCK: - case LOGICAL: - case MANUAL: - case MAP: - case MATCH_ALL: - case MATCH_ANY: - case MATCH_PHRASE: - case MATCH_PHRASE_EDGE: - case MATCH_PHRASE_PREFIX: - case MATCH_REGEXP: - case MATERIALIZED: - case MAX: - case MEMO: - case MERGE: - case MIGRATE: - case MIGRATIONS: - case MIN: - case MINUTE: - case MODIFY: - case MONTH: - case MTMV: - case NAME: - case NAMES: - case NEGATIVE: - case NEVER: - case NEXT: - case NGRAM_BF: - case NO: - case NON_NULLABLE: - case NULLS: - case OF: - case OFFSET: - case ONLY: - case OPEN: - case OPTIMIZED: - case PARAMETER: - case PARSED: - case PARTITIONS: - case PASSWORD: - case PASSWORD_EXPIRE: - case PASSWORD_HISTORY: - case PASSWORD_LOCK_TIME: - case PASSWORD_REUSE: - case PATH: - case PAUSE: - case PERCENT: - case PERIOD: - case PERMISSIVE: - case PHYSICAL: - case PI: - case PLAN: - case PRIVILEGES: - case PROCESS: - case PLUGIN: - case PLUGINS: - case POLICY: - case PROC: - case PROCESSLIST: - case PROFILE: - case PROPERTIES: - case PROPERTY: - case QUANTILE_STATE: - case QUANTILE_UNION: - case QUERY: - case QUEUED: - case QUOTA: - case QUALIFY: - case QUARTER: - case RANDOM: - case RECENT: - case RECOVER: - case RECYCLE: - case REFRESH: - case REPEATABLE: - case REPLACE: - case REPLACE_IF_NOT_NULL: - case REPLAYER: - case REPOSITORIES: - case REPOSITORY: - case RESOURCE: - case RESOURCES: - case RESTORE: - case RESTRICTIVE: - case RESUME: - case RETURNS: - case REWRITTEN: - case RLIKE: - case ROLLBACK: - case ROLLUP: - case ROUTINE: - case S3: - case SAMPLE: - case SCHEDULE: - case SCHEDULER: - case SCHEMA: - case SECOND: - case SERIALIZABLE: - case SESSION: - case SESSION_USER: - case SET_SESSION_VARIABLE: - case SHAPE: - case SKEW: - case SNAPSHOT: - case SONAME: - case SPLIT: - case SQL: - case STAGE: - case STAGES: - case START: - case STARTS: - case STATS: - case STATUS: - case STOP: - case STORAGE: - case STREAM: - case STREAMING: - case STRING: - case STRUCT: - case SUM: - case TABLES: - case TASK: - case TASKS: - case TEMPORARY: - case TEXT: - case THAN: - case TIME: - case TIMESTAMP: - case TRANSACTION: - case TREE: - case TRIGGERS: - case TRUNCATE: - case TYPE: - case TYPES: - case UNCOMMITTED: - case UNLOCK: - case UNSET: - case UP: - case USER: - case VALUE: - case VARCHAR: - case VARIABLE: - case VARIABLES: - case VARIANT: - case VAULT: - case VAULTS: - case VERBOSE: - case VERSION: - case VIEW: - case VIEWS: - case WARM: - case WARNINGS: - case WEEK: - case WORK: - case YEAR: - case HINT_START: - case HINT_END: - case COMMENT_START: - _localctx = new UnquotedIdentifierContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(6132); - nonReserved(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QuotedIdentifierContext extends ParserRuleContext { - public TerminalNode BACKQUOTED_IDENTIFIER() { return getToken(DorisParser.BACKQUOTED_IDENTIFIER, 0); } - public QuotedIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_quotedIdentifier; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterQuotedIdentifier(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitQuotedIdentifier(this); - } - } - - public final QuotedIdentifierContext quotedIdentifier() throws RecognitionException { - QuotedIdentifierContext _localctx = new QuotedIdentifierContext(_ctx, getState()); - enterRule(_localctx, 452, RULE_quotedIdentifier); - try { - enterOuterAlt(_localctx, 1); - { - setState(6135); - match(BACKQUOTED_IDENTIFIER); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NumberContext extends ParserRuleContext { - public NumberContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_number; } - - public NumberContext() { } - public void copyFrom(NumberContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DecimalLiteralContext extends NumberContext { - public TerminalNode EXPONENT_VALUE() { return getToken(DorisParser.EXPONENT_VALUE, 0); } - public TerminalNode DECIMAL_VALUE() { return getToken(DorisParser.DECIMAL_VALUE, 0); } - public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } - public DecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterDecimalLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitDecimalLiteral(this); - } - } - @SuppressWarnings("CheckReturnValue") - public static class IntegerLiteralContext extends NumberContext { - public TerminalNode INTEGER_VALUE() { return getToken(DorisParser.INTEGER_VALUE, 0); } - public TerminalNode SUBTRACT() { return getToken(DorisParser.SUBTRACT, 0); } - public IntegerLiteralContext(NumberContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterIntegerLiteral(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitIntegerLiteral(this); - } - } - - public final NumberContext number() throws RecognitionException { - NumberContext _localctx = new NumberContext(_ctx, getState()); - enterRule(_localctx, 454, RULE_number); - int _la; - try { - setState(6145); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,880,_ctx) ) { - case 1: - _localctx = new IntegerLiteralContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(6138); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SUBTRACT) { - { - setState(6137); - match(SUBTRACT); - } - } - - setState(6140); - match(INTEGER_VALUE); - } - break; - case 2: - _localctx = new DecimalLiteralContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(6142); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==SUBTRACT) { - { - setState(6141); - match(SUBTRACT); - } - } - - setState(6144); - _la = _input.LA(1); - if ( !(_la==EXPONENT_VALUE || _la==DECIMAL_VALUE) ) { - _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 NonReservedContext extends ParserRuleContext { - public TerminalNode ACTIONS() { return getToken(DorisParser.ACTIONS, 0); } - public TerminalNode AFTER() { return getToken(DorisParser.AFTER, 0); } - public TerminalNode AGG_STATE() { return getToken(DorisParser.AGG_STATE, 0); } - public TerminalNode AGGREGATE() { return getToken(DorisParser.AGGREGATE, 0); } - public TerminalNode ALIAS() { return getToken(DorisParser.ALIAS, 0); } - public TerminalNode ALWAYS() { return getToken(DorisParser.ALWAYS, 0); } - public TerminalNode ANALYZED() { return getToken(DorisParser.ANALYZED, 0); } - public TerminalNode ARRAY() { return getToken(DorisParser.ARRAY, 0); } - public TerminalNode AT() { return getToken(DorisParser.AT, 0); } - public TerminalNode AUTHORS() { return getToken(DorisParser.AUTHORS, 0); } - public TerminalNode AUTO_INCREMENT() { return getToken(DorisParser.AUTO_INCREMENT, 0); } - public TerminalNode BACKENDS() { return getToken(DorisParser.BACKENDS, 0); } - public TerminalNode BACKUP() { return getToken(DorisParser.BACKUP, 0); } - public TerminalNode BEGIN() { return getToken(DorisParser.BEGIN, 0); } - public TerminalNode BELONG() { return getToken(DorisParser.BELONG, 0); } - public TerminalNode BIN() { return getToken(DorisParser.BIN, 0); } - public TerminalNode BITAND() { return getToken(DorisParser.BITAND, 0); } - public TerminalNode BITMAP() { return getToken(DorisParser.BITMAP, 0); } - public TerminalNode BITMAP_EMPTY() { return getToken(DorisParser.BITMAP_EMPTY, 0); } - public TerminalNode BITMAP_UNION() { return getToken(DorisParser.BITMAP_UNION, 0); } - public TerminalNode BITOR() { return getToken(DorisParser.BITOR, 0); } - public TerminalNode BITXOR() { return getToken(DorisParser.BITXOR, 0); } - public TerminalNode BLOB() { return getToken(DorisParser.BLOB, 0); } - public TerminalNode BOOLEAN() { return getToken(DorisParser.BOOLEAN, 0); } - public TerminalNode BRIEF() { return getToken(DorisParser.BRIEF, 0); } - public TerminalNode BROKER() { return getToken(DorisParser.BROKER, 0); } - public TerminalNode BUCKETS() { return getToken(DorisParser.BUCKETS, 0); } - public TerminalNode BUILD() { return getToken(DorisParser.BUILD, 0); } - public TerminalNode BUILTIN() { return getToken(DorisParser.BUILTIN, 0); } - public TerminalNode BULK() { return getToken(DorisParser.BULK, 0); } - public TerminalNode CACHE() { return getToken(DorisParser.CACHE, 0); } - public TerminalNode CACHED() { return getToken(DorisParser.CACHED, 0); } - public TerminalNode CALL() { return getToken(DorisParser.CALL, 0); } - public TerminalNode CATALOG() { return getToken(DorisParser.CATALOG, 0); } - public TerminalNode CATALOGS() { return getToken(DorisParser.CATALOGS, 0); } - public TerminalNode CHAIN() { return getToken(DorisParser.CHAIN, 0); } - public TerminalNode CHAR() { return getToken(DorisParser.CHAR, 0); } - public TerminalNode CHARSET() { return getToken(DorisParser.CHARSET, 0); } - public TerminalNode CHECK() { return getToken(DorisParser.CHECK, 0); } - public TerminalNode CLUSTER() { return getToken(DorisParser.CLUSTER, 0); } - public TerminalNode CLUSTERS() { return getToken(DorisParser.CLUSTERS, 0); } - public TerminalNode COLLATION() { return getToken(DorisParser.COLLATION, 0); } - public TerminalNode COLLECT() { return getToken(DorisParser.COLLECT, 0); } - public TerminalNode COLOCATE() { return getToken(DorisParser.COLOCATE, 0); } - public TerminalNode COLUMNS() { return getToken(DorisParser.COLUMNS, 0); } - public TerminalNode COMMENT() { return getToken(DorisParser.COMMENT, 0); } - public TerminalNode COMMENT_START() { return getToken(DorisParser.COMMENT_START, 0); } - public TerminalNode COMMIT() { return getToken(DorisParser.COMMIT, 0); } - public TerminalNode COMMITTED() { return getToken(DorisParser.COMMITTED, 0); } - public TerminalNode COMPACT() { return getToken(DorisParser.COMPACT, 0); } - public TerminalNode COMPLETE() { return getToken(DorisParser.COMPLETE, 0); } - public TerminalNode COMPRESS_TYPE() { return getToken(DorisParser.COMPRESS_TYPE, 0); } - public TerminalNode COMPUTE() { return getToken(DorisParser.COMPUTE, 0); } - public TerminalNode CONDITIONS() { return getToken(DorisParser.CONDITIONS, 0); } - public TerminalNode CONFIG() { return getToken(DorisParser.CONFIG, 0); } - public TerminalNode CONNECTION() { return getToken(DorisParser.CONNECTION, 0); } - public TerminalNode CONNECTION_ID() { return getToken(DorisParser.CONNECTION_ID, 0); } - public TerminalNode CONSISTENT() { return getToken(DorisParser.CONSISTENT, 0); } - public TerminalNode CONSTRAINTS() { return getToken(DorisParser.CONSTRAINTS, 0); } - public TerminalNode CONVERT() { return getToken(DorisParser.CONVERT, 0); } - public TerminalNode CONVERT_LSC() { return getToken(DorisParser.CONVERT_LSC, 0); } - public TerminalNode COPY() { return getToken(DorisParser.COPY, 0); } - public TerminalNode COUNT() { return getToken(DorisParser.COUNT, 0); } - public TerminalNode CREATION() { return getToken(DorisParser.CREATION, 0); } - public TerminalNode CRON() { return getToken(DorisParser.CRON, 0); } - public TerminalNode CURRENT_CATALOG() { return getToken(DorisParser.CURRENT_CATALOG, 0); } - public TerminalNode CURRENT_DATE() { return getToken(DorisParser.CURRENT_DATE, 0); } - public TerminalNode CURRENT_TIME() { return getToken(DorisParser.CURRENT_TIME, 0); } - public TerminalNode CURRENT_TIMESTAMP() { return getToken(DorisParser.CURRENT_TIMESTAMP, 0); } - public TerminalNode CURRENT_USER() { return getToken(DorisParser.CURRENT_USER, 0); } - public TerminalNode DATA() { return getToken(DorisParser.DATA, 0); } - public TerminalNode DATE() { return getToken(DorisParser.DATE, 0); } - public TerminalNode DATETIME() { return getToken(DorisParser.DATETIME, 0); } - public TerminalNode DATETIMEV1() { return getToken(DorisParser.DATETIMEV1, 0); } - public TerminalNode DATETIMEV2() { return getToken(DorisParser.DATETIMEV2, 0); } - public TerminalNode DATEV1() { return getToken(DorisParser.DATEV1, 0); } - public TerminalNode DATEV2() { return getToken(DorisParser.DATEV2, 0); } - public TerminalNode DAY() { return getToken(DorisParser.DAY, 0); } - public TerminalNode DECIMAL() { return getToken(DorisParser.DECIMAL, 0); } - public TerminalNode DECIMALV2() { return getToken(DorisParser.DECIMALV2, 0); } - public TerminalNode DECIMALV3() { return getToken(DorisParser.DECIMALV3, 0); } - public TerminalNode DEFERRED() { return getToken(DorisParser.DEFERRED, 0); } - public TerminalNode DEMAND() { return getToken(DorisParser.DEMAND, 0); } - public TerminalNode DIAGNOSE() { return getToken(DorisParser.DIAGNOSE, 0); } - public TerminalNode DIAGNOSIS() { return getToken(DorisParser.DIAGNOSIS, 0); } - public TerminalNode DISTINCTPC() { return getToken(DorisParser.DISTINCTPC, 0); } - public TerminalNode DISTINCTPCSA() { return getToken(DorisParser.DISTINCTPCSA, 0); } - public TerminalNode DO() { return getToken(DorisParser.DO, 0); } - public TerminalNode DORIS_INTERNAL_TABLE_ID() { return getToken(DorisParser.DORIS_INTERNAL_TABLE_ID, 0); } - public TerminalNode DUAL() { return getToken(DorisParser.DUAL, 0); } - public TerminalNode DYNAMIC() { return getToken(DorisParser.DYNAMIC, 0); } - public TerminalNode E() { return getToken(DorisParser.E, 0); } - public TerminalNode ENABLE() { return getToken(DorisParser.ENABLE, 0); } - public TerminalNode ENCRYPTKEY() { return getToken(DorisParser.ENCRYPTKEY, 0); } - public TerminalNode ENCRYPTKEYS() { return getToken(DorisParser.ENCRYPTKEYS, 0); } - public TerminalNode END() { return getToken(DorisParser.END, 0); } - public TerminalNode ENDS() { return getToken(DorisParser.ENDS, 0); } - public TerminalNode ENGINE() { return getToken(DorisParser.ENGINE, 0); } - public TerminalNode ENGINES() { return getToken(DorisParser.ENGINES, 0); } - public TerminalNode ERRORS() { return getToken(DorisParser.ERRORS, 0); } - public TerminalNode EVENTS() { return getToken(DorisParser.EVENTS, 0); } - public TerminalNode EVERY() { return getToken(DorisParser.EVERY, 0); } - public TerminalNode EXCLUDE() { return getToken(DorisParser.EXCLUDE, 0); } - public TerminalNode EXPIRED() { return getToken(DorisParser.EXPIRED, 0); } - public TerminalNode EXTERNAL() { return getToken(DorisParser.EXTERNAL, 0); } - public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(DorisParser.FAILED_LOGIN_ATTEMPTS, 0); } - public TerminalNode FAST() { return getToken(DorisParser.FAST, 0); } - public TerminalNode FEATURE() { return getToken(DorisParser.FEATURE, 0); } - public TerminalNode FIELDS() { return getToken(DorisParser.FIELDS, 0); } - public TerminalNode FILE() { return getToken(DorisParser.FILE, 0); } - public TerminalNode FILTER() { return getToken(DorisParser.FILTER, 0); } - public TerminalNode FIRST() { return getToken(DorisParser.FIRST, 0); } - public TerminalNode FORMAT() { return getToken(DorisParser.FORMAT, 0); } - public TerminalNode FREE() { return getToken(DorisParser.FREE, 0); } - public TerminalNode FRONTENDS() { return getToken(DorisParser.FRONTENDS, 0); } - public TerminalNode FUNCTION() { return getToken(DorisParser.FUNCTION, 0); } - public TerminalNode GENERATED() { return getToken(DorisParser.GENERATED, 0); } - public TerminalNode GENERIC() { return getToken(DorisParser.GENERIC, 0); } - public TerminalNode GLOBAL() { return getToken(DorisParser.GLOBAL, 0); } - public TerminalNode GRAPH() { return getToken(DorisParser.GRAPH, 0); } - public TerminalNode GROUPING() { return getToken(DorisParser.GROUPING, 0); } - public TerminalNode GROUPS() { return getToken(DorisParser.GROUPS, 0); } - public TerminalNode HASH() { return getToken(DorisParser.HASH, 0); } - public TerminalNode HDFS() { return getToken(DorisParser.HDFS, 0); } - public TerminalNode HELP() { return getToken(DorisParser.HELP, 0); } - public TerminalNode HINT_END() { return getToken(DorisParser.HINT_END, 0); } - public TerminalNode HINT_START() { return getToken(DorisParser.HINT_START, 0); } - public TerminalNode HISTOGRAM() { return getToken(DorisParser.HISTOGRAM, 0); } - public TerminalNode HLL_UNION() { return getToken(DorisParser.HLL_UNION, 0); } - public TerminalNode HOSTNAME() { return getToken(DorisParser.HOSTNAME, 0); } - public TerminalNode HOTSPOT() { return getToken(DorisParser.HOTSPOT, 0); } - public TerminalNode HOUR() { return getToken(DorisParser.HOUR, 0); } - public TerminalNode HUB() { return getToken(DorisParser.HUB, 0); } - public TerminalNode IDENTIFIED() { return getToken(DorisParser.IDENTIFIED, 0); } - public TerminalNode IGNORE() { return getToken(DorisParser.IGNORE, 0); } - public TerminalNode IMMEDIATE() { return getToken(DorisParser.IMMEDIATE, 0); } - public TerminalNode INCREMENTAL() { return getToken(DorisParser.INCREMENTAL, 0); } - public TerminalNode INDEXES() { return getToken(DorisParser.INDEXES, 0); } - public TerminalNode INVERTED() { return getToken(DorisParser.INVERTED, 0); } - public TerminalNode IPV4() { return getToken(DorisParser.IPV4, 0); } - public TerminalNode IPV6() { return getToken(DorisParser.IPV6, 0); } - public TerminalNode IS_NOT_NULL_PRED() { return getToken(DorisParser.IS_NOT_NULL_PRED, 0); } - public TerminalNode IS_NULL_PRED() { return getToken(DorisParser.IS_NULL_PRED, 0); } - public TerminalNode ISNULL() { return getToken(DorisParser.ISNULL, 0); } - public TerminalNode ISOLATION() { return getToken(DorisParser.ISOLATION, 0); } - public TerminalNode JOB() { return getToken(DorisParser.JOB, 0); } - public TerminalNode JOBS() { return getToken(DorisParser.JOBS, 0); } - public TerminalNode JSON() { return getToken(DorisParser.JSON, 0); } - public TerminalNode JSONB() { return getToken(DorisParser.JSONB, 0); } - public TerminalNode LABEL() { return getToken(DorisParser.LABEL, 0); } - public TerminalNode LAST() { return getToken(DorisParser.LAST, 0); } - public TerminalNode LDAP() { return getToken(DorisParser.LDAP, 0); } - public TerminalNode LDAP_ADMIN_PASSWORD() { return getToken(DorisParser.LDAP_ADMIN_PASSWORD, 0); } - public TerminalNode LEFT_BRACE() { return getToken(DorisParser.LEFT_BRACE, 0); } - public TerminalNode LESS() { return getToken(DorisParser.LESS, 0); } - public TerminalNode LEVEL() { return getToken(DorisParser.LEVEL, 0); } - public TerminalNode LINES() { return getToken(DorisParser.LINES, 0); } - public TerminalNode LINK() { return getToken(DorisParser.LINK, 0); } - public TerminalNode LOCAL() { return getToken(DorisParser.LOCAL, 0); } - public TerminalNode LOCALTIME() { return getToken(DorisParser.LOCALTIME, 0); } - public TerminalNode LOCALTIMESTAMP() { return getToken(DorisParser.LOCALTIMESTAMP, 0); } - public TerminalNode LOCATION() { return getToken(DorisParser.LOCATION, 0); } - public TerminalNode LOCK() { return getToken(DorisParser.LOCK, 0); } - public TerminalNode LOGICAL() { return getToken(DorisParser.LOGICAL, 0); } - public TerminalNode MANUAL() { return getToken(DorisParser.MANUAL, 0); } - public TerminalNode MAP() { return getToken(DorisParser.MAP, 0); } - public TerminalNode MATCH_ALL() { return getToken(DorisParser.MATCH_ALL, 0); } - public TerminalNode MATCH_ANY() { return getToken(DorisParser.MATCH_ANY, 0); } - public TerminalNode MATCH_PHRASE() { return getToken(DorisParser.MATCH_PHRASE, 0); } - public TerminalNode MATCH_PHRASE_EDGE() { return getToken(DorisParser.MATCH_PHRASE_EDGE, 0); } - public TerminalNode MATCH_PHRASE_PREFIX() { return getToken(DorisParser.MATCH_PHRASE_PREFIX, 0); } - public TerminalNode MATCH_REGEXP() { return getToken(DorisParser.MATCH_REGEXP, 0); } - public TerminalNode MATERIALIZED() { return getToken(DorisParser.MATERIALIZED, 0); } - public TerminalNode MAX() { return getToken(DorisParser.MAX, 0); } - public TerminalNode MEMO() { return getToken(DorisParser.MEMO, 0); } - public TerminalNode MERGE() { return getToken(DorisParser.MERGE, 0); } - public TerminalNode MIGRATE() { return getToken(DorisParser.MIGRATE, 0); } - public TerminalNode MIGRATIONS() { return getToken(DorisParser.MIGRATIONS, 0); } - public TerminalNode MIN() { return getToken(DorisParser.MIN, 0); } - public TerminalNode MINUTE() { return getToken(DorisParser.MINUTE, 0); } - public TerminalNode MODIFY() { return getToken(DorisParser.MODIFY, 0); } - public TerminalNode MONTH() { return getToken(DorisParser.MONTH, 0); } - public TerminalNode MTMV() { return getToken(DorisParser.MTMV, 0); } - public TerminalNode NAME() { return getToken(DorisParser.NAME, 0); } - public TerminalNode NAMES() { return getToken(DorisParser.NAMES, 0); } - public TerminalNode NEGATIVE() { return getToken(DorisParser.NEGATIVE, 0); } - public TerminalNode NEVER() { return getToken(DorisParser.NEVER, 0); } - public TerminalNode NEXT() { return getToken(DorisParser.NEXT, 0); } - public TerminalNode NGRAM_BF() { return getToken(DorisParser.NGRAM_BF, 0); } - public TerminalNode NO() { return getToken(DorisParser.NO, 0); } - public TerminalNode NON_NULLABLE() { return getToken(DorisParser.NON_NULLABLE, 0); } - public TerminalNode NULLS() { return getToken(DorisParser.NULLS, 0); } - public TerminalNode OF() { return getToken(DorisParser.OF, 0); } - public TerminalNode OFFSET() { return getToken(DorisParser.OFFSET, 0); } - public TerminalNode ONLY() { return getToken(DorisParser.ONLY, 0); } - public TerminalNode OPEN() { return getToken(DorisParser.OPEN, 0); } - public TerminalNode OPTIMIZED() { return getToken(DorisParser.OPTIMIZED, 0); } - public TerminalNode PARAMETER() { return getToken(DorisParser.PARAMETER, 0); } - public TerminalNode PARSED() { return getToken(DorisParser.PARSED, 0); } - public TerminalNode PASSWORD() { return getToken(DorisParser.PASSWORD, 0); } - public TerminalNode PASSWORD_EXPIRE() { return getToken(DorisParser.PASSWORD_EXPIRE, 0); } - public TerminalNode PASSWORD_HISTORY() { return getToken(DorisParser.PASSWORD_HISTORY, 0); } - public TerminalNode PASSWORD_LOCK_TIME() { return getToken(DorisParser.PASSWORD_LOCK_TIME, 0); } - public TerminalNode PASSWORD_REUSE() { return getToken(DorisParser.PASSWORD_REUSE, 0); } - public TerminalNode PARTITIONS() { return getToken(DorisParser.PARTITIONS, 0); } - public TerminalNode PATH() { return getToken(DorisParser.PATH, 0); } - public TerminalNode PAUSE() { return getToken(DorisParser.PAUSE, 0); } - public TerminalNode PERCENT() { return getToken(DorisParser.PERCENT, 0); } - public TerminalNode PERIOD() { return getToken(DorisParser.PERIOD, 0); } - public TerminalNode PERMISSIVE() { return getToken(DorisParser.PERMISSIVE, 0); } - public TerminalNode PHYSICAL() { return getToken(DorisParser.PHYSICAL, 0); } - public TerminalNode PI() { return getToken(DorisParser.PI, 0); } - public TerminalNode PLAN() { return getToken(DorisParser.PLAN, 0); } - public TerminalNode PLUGIN() { return getToken(DorisParser.PLUGIN, 0); } - public TerminalNode PLUGINS() { return getToken(DorisParser.PLUGINS, 0); } - public TerminalNode POLICY() { return getToken(DorisParser.POLICY, 0); } - public TerminalNode PRIVILEGES() { return getToken(DorisParser.PRIVILEGES, 0); } - public TerminalNode PROC() { return getToken(DorisParser.PROC, 0); } - public TerminalNode PROCESS() { return getToken(DorisParser.PROCESS, 0); } - public TerminalNode PROCESSLIST() { return getToken(DorisParser.PROCESSLIST, 0); } - public TerminalNode PROFILE() { return getToken(DorisParser.PROFILE, 0); } - public TerminalNode PROPERTIES() { return getToken(DorisParser.PROPERTIES, 0); } - public TerminalNode PROPERTY() { return getToken(DorisParser.PROPERTY, 0); } - public TerminalNode QUANTILE_STATE() { return getToken(DorisParser.QUANTILE_STATE, 0); } - public TerminalNode QUANTILE_UNION() { return getToken(DorisParser.QUANTILE_UNION, 0); } - public TerminalNode QUARTER() { return getToken(DorisParser.QUARTER, 0); } - public TerminalNode QUERY() { return getToken(DorisParser.QUERY, 0); } - public TerminalNode QUOTA() { return getToken(DorisParser.QUOTA, 0); } - public TerminalNode QUALIFY() { return getToken(DorisParser.QUALIFY, 0); } - public TerminalNode QUEUED() { return getToken(DorisParser.QUEUED, 0); } - public TerminalNode RANDOM() { return getToken(DorisParser.RANDOM, 0); } - public TerminalNode RECENT() { return getToken(DorisParser.RECENT, 0); } - public TerminalNode RECOVER() { return getToken(DorisParser.RECOVER, 0); } - public TerminalNode RECYCLE() { return getToken(DorisParser.RECYCLE, 0); } - public TerminalNode REFRESH() { return getToken(DorisParser.REFRESH, 0); } - public TerminalNode REPEATABLE() { return getToken(DorisParser.REPEATABLE, 0); } - public TerminalNode REPLACE() { return getToken(DorisParser.REPLACE, 0); } - public TerminalNode REPLACE_IF_NOT_NULL() { return getToken(DorisParser.REPLACE_IF_NOT_NULL, 0); } - public TerminalNode REPLAYER() { return getToken(DorisParser.REPLAYER, 0); } - public TerminalNode REPOSITORIES() { return getToken(DorisParser.REPOSITORIES, 0); } - public TerminalNode REPOSITORY() { return getToken(DorisParser.REPOSITORY, 0); } - public TerminalNode RESOURCE() { return getToken(DorisParser.RESOURCE, 0); } - public TerminalNode RESOURCES() { return getToken(DorisParser.RESOURCES, 0); } - public TerminalNode RESTORE() { return getToken(DorisParser.RESTORE, 0); } - public TerminalNode RESTRICTIVE() { return getToken(DorisParser.RESTRICTIVE, 0); } - public TerminalNode RESUME() { return getToken(DorisParser.RESUME, 0); } - public TerminalNode RETURNS() { return getToken(DorisParser.RETURNS, 0); } - public TerminalNode REWRITTEN() { return getToken(DorisParser.REWRITTEN, 0); } - public TerminalNode RIGHT_BRACE() { return getToken(DorisParser.RIGHT_BRACE, 0); } - public TerminalNode RLIKE() { return getToken(DorisParser.RLIKE, 0); } - public TerminalNode ROLLBACK() { return getToken(DorisParser.ROLLBACK, 0); } - public TerminalNode ROLLUP() { return getToken(DorisParser.ROLLUP, 0); } - public TerminalNode ROUTINE() { return getToken(DorisParser.ROUTINE, 0); } - public TerminalNode S3() { return getToken(DorisParser.S3, 0); } - public TerminalNode SAMPLE() { return getToken(DorisParser.SAMPLE, 0); } - public TerminalNode SCHEDULE() { return getToken(DorisParser.SCHEDULE, 0); } - public TerminalNode SCHEDULER() { return getToken(DorisParser.SCHEDULER, 0); } - public TerminalNode SCHEMA() { return getToken(DorisParser.SCHEMA, 0); } - public TerminalNode SECOND() { return getToken(DorisParser.SECOND, 0); } - public TerminalNode SERIALIZABLE() { return getToken(DorisParser.SERIALIZABLE, 0); } - public TerminalNode SET_SESSION_VARIABLE() { return getToken(DorisParser.SET_SESSION_VARIABLE, 0); } - public TerminalNode SESSION() { return getToken(DorisParser.SESSION, 0); } - public TerminalNode SESSION_USER() { return getToken(DorisParser.SESSION_USER, 0); } - public TerminalNode SHAPE() { return getToken(DorisParser.SHAPE, 0); } - public TerminalNode SKEW() { return getToken(DorisParser.SKEW, 0); } - public TerminalNode SNAPSHOT() { return getToken(DorisParser.SNAPSHOT, 0); } - public TerminalNode SONAME() { return getToken(DorisParser.SONAME, 0); } - public TerminalNode SPLIT() { return getToken(DorisParser.SPLIT, 0); } - public TerminalNode SQL() { return getToken(DorisParser.SQL, 0); } - public TerminalNode STAGE() { return getToken(DorisParser.STAGE, 0); } - public TerminalNode STAGES() { return getToken(DorisParser.STAGES, 0); } - public TerminalNode START() { return getToken(DorisParser.START, 0); } - public TerminalNode STARTS() { return getToken(DorisParser.STARTS, 0); } - public TerminalNode STATS() { return getToken(DorisParser.STATS, 0); } - public TerminalNode STATUS() { return getToken(DorisParser.STATUS, 0); } - public TerminalNode STOP() { return getToken(DorisParser.STOP, 0); } - public TerminalNode STORAGE() { return getToken(DorisParser.STORAGE, 0); } - public TerminalNode STREAM() { return getToken(DorisParser.STREAM, 0); } - public TerminalNode STREAMING() { return getToken(DorisParser.STREAMING, 0); } - public TerminalNode STRING() { return getToken(DorisParser.STRING, 0); } - public TerminalNode STRUCT() { return getToken(DorisParser.STRUCT, 0); } - public TerminalNode SUM() { return getToken(DorisParser.SUM, 0); } - public TerminalNode TABLES() { return getToken(DorisParser.TABLES, 0); } - public TerminalNode TASK() { return getToken(DorisParser.TASK, 0); } - public TerminalNode TASKS() { return getToken(DorisParser.TASKS, 0); } - public TerminalNode TEMPORARY() { return getToken(DorisParser.TEMPORARY, 0); } - public TerminalNode TEXT() { return getToken(DorisParser.TEXT, 0); } - public TerminalNode THAN() { return getToken(DorisParser.THAN, 0); } - public TerminalNode TIME() { return getToken(DorisParser.TIME, 0); } - public TerminalNode TIMESTAMP() { return getToken(DorisParser.TIMESTAMP, 0); } - public TerminalNode TRANSACTION() { return getToken(DorisParser.TRANSACTION, 0); } - public TerminalNode TREE() { return getToken(DorisParser.TREE, 0); } - public TerminalNode TRIGGERS() { return getToken(DorisParser.TRIGGERS, 0); } - public TerminalNode TRUNCATE() { return getToken(DorisParser.TRUNCATE, 0); } - public TerminalNode TYPE() { return getToken(DorisParser.TYPE, 0); } - public TerminalNode TYPES() { return getToken(DorisParser.TYPES, 0); } - public TerminalNode UNCOMMITTED() { return getToken(DorisParser.UNCOMMITTED, 0); } - public TerminalNode UNLOCK() { return getToken(DorisParser.UNLOCK, 0); } - public TerminalNode UNSET() { return getToken(DorisParser.UNSET, 0); } - public TerminalNode UP() { return getToken(DorisParser.UP, 0); } - public TerminalNode USER() { return getToken(DorisParser.USER, 0); } - public TerminalNode VALUE() { return getToken(DorisParser.VALUE, 0); } - public TerminalNode VARCHAR() { return getToken(DorisParser.VARCHAR, 0); } - public TerminalNode VARIABLE() { return getToken(DorisParser.VARIABLE, 0); } - public TerminalNode VARIABLES() { return getToken(DorisParser.VARIABLES, 0); } - public TerminalNode VARIANT() { return getToken(DorisParser.VARIANT, 0); } - public TerminalNode VAULT() { return getToken(DorisParser.VAULT, 0); } - public TerminalNode VAULTS() { return getToken(DorisParser.VAULTS, 0); } - public TerminalNode VERBOSE() { return getToken(DorisParser.VERBOSE, 0); } - public TerminalNode VERSION() { return getToken(DorisParser.VERSION, 0); } - public TerminalNode VIEW() { return getToken(DorisParser.VIEW, 0); } - public TerminalNode VIEWS() { return getToken(DorisParser.VIEWS, 0); } - public TerminalNode WARM() { return getToken(DorisParser.WARM, 0); } - public TerminalNode WARNINGS() { return getToken(DorisParser.WARNINGS, 0); } - public TerminalNode WEEK() { return getToken(DorisParser.WEEK, 0); } - public TerminalNode WORK() { return getToken(DorisParser.WORK, 0); } - public TerminalNode YEAR() { return getToken(DorisParser.YEAR, 0); } - public NonReservedContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_nonReserved; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).enterNonReserved(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof DorisParserListener ) ((DorisParserListener)listener).exitNonReserved(this); - } - } - - public final NonReservedContext nonReserved() throws RecognitionException { - NonReservedContext _localctx = new NonReservedContext(_ctx, getState()); - enterRule(_localctx, 456, RULE_nonReserved); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(6147); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8646881558152553984L) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 3026312906716208575L) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & -6232424940973963725L) != 0) || ((((_la - 194)) & ~0x3f) == 0 && ((1L << (_la - 194)) & 3937129999880936915L) != 0) || ((((_la - 258)) & ~0x3f) == 0 && ((1L << (_la - 258)) & 6950910062127733747L) != 0) || ((((_la - 322)) & ~0x3f) == 0 && ((1L << (_la - 322)) & -38214351305351169L) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & 7935624000472448229L) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & 2401332629122259L) != 0) || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & 7L) != 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; - } - - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 115: - return queryTerm_sempred((QueryTermContext)_localctx, predIndex); - case 118: - return querySpecification_sempred((QuerySpecificationContext)_localctx, predIndex); - case 187: - return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); - case 191: - return valueExpression_sempred((ValueExpressionContext)_localctx, predIndex); - case 192: - return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex); - } - return true; - } - private boolean queryTerm_sempred(QueryTermContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return precpred(_ctx, 2); - case 1: - return precpred(_ctx, 1); - } - return true; - } - private boolean querySpecification_sempred(QuerySpecificationContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return doris_legacy_SQL_syntax; - } - return true; - } - private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return precpred(_ctx, 4); - case 4: - return precpred(_ctx, 3); - case 5: - return precpred(_ctx, 2); - case 6: - return precpred(_ctx, 1); - } - return true; - } - private boolean valueExpression_sempred(ValueExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 7: - return precpred(_ctx, 6); - case 8: - return precpred(_ctx, 5); - case 9: - return precpred(_ctx, 4); - case 10: - return precpred(_ctx, 3); - case 11: - return precpred(_ctx, 2); - case 12: - return precpred(_ctx, 1); - } - return true; - } - private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 13: - return precpred(_ctx, 11); - case 14: - return precpred(_ctx, 10); - case 15: - return precpred(_ctx, 5); - case 16: - return precpred(_ctx, 1); - } - return true; - } - - private static final String _serializedATNSegment0 = - "\u0004\u0001\u0220\u1806\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ - "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+ - "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+ - "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+ - "\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+ - "\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+ - "\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+ - "\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+ - "\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+ - "\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+ - "\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+ - "\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+ - "\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+ - ",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+ - "1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+ - "6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+ - ";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+ - "@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\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\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+ - "T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+ - "Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+ - "^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+ - "c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+ - "h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+ - "m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+ - "r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+ - "w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+ - "|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+ - "\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+ - "\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+ - "\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+ - "\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+ - "\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+ - "\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+ - "\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+ - "\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+ - "\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+ - "\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+ - "\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+ - "\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+ - "\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+ - "\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+ - "\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+ - "\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+ - "\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+ - "\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+ - "\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+ - "\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+ - "\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+ - "\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+ - "\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+ - "\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+ - "\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+ - "\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+ - "\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+ - "\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+ - "\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+ - "\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+ - "\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+ - "\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+ - "\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+ - "\u00e3\u0002\u00e4\u0007\u00e4\u0001\u0000\u0005\u0000\u01cc\b\u0000\n"+ - "\u0000\f\u0000\u01cf\t\u0000\u0001\u0000\u0003\u0000\u01d2\b\u0000\u0001"+ - "\u0000\u0004\u0000\u01d5\b\u0000\u000b\u0000\f\u0000\u01d6\u0001\u0000"+ - "\u0005\u0000\u01da\b\u0000\n\u0000\f\u0000\u01dd\t\u0000\u0001\u0000\u0005"+ - "\u0000\u01e0\b\u0000\n\u0000\f\u0000\u01e3\t\u0000\u0001\u0000\u0001\u0000"+ - "\u0001\u0001\u0005\u0001\u01e8\b\u0001\n\u0001\f\u0001\u01eb\t\u0001\u0001"+ - "\u0001\u0003\u0001\u01ee\b\u0001\u0001\u0001\u0005\u0001\u01f1\b\u0001"+ - "\n\u0001\f\u0001\u01f4\t\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001"+ - "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005"+ - "\u0002\u01ff\b\u0002\n\u0002\f\u0002\u0202\t\u0002\u0003\u0002\u0204\b"+ - "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ - "\u0002\u0003\u0002\u020c\b\u0002\u0001\u0002\u0003\u0002\u020f\b\u0002"+ - "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002\u0215\b\u0002"+ - "\n\u0002\f\u0002\u0218\t\u0002\u0001\u0002\u0001\u0002\u0005\u0002\u021c"+ - "\b\u0002\n\u0002\f\u0002\u021f\t\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ - "\u0001\u0002\u0003\u0002\u0225\b\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ - "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u022e\b\u0002"+ - "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002"+ - "\u0235\b\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ - "\u0003\u0002\u023c\b\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u0240\b"+ - "\u0002\u0003\u0002\u0242\b\u0002\u0001\u0003\u0003\u0003\u0245\b\u0003"+ - "\u0001\u0003\u0001\u0003\u0003\u0003\u0249\b\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\u0260\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004"+ - "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ - "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004"+ - "\u0001\u0004\u0003\u0004\u0272\b\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u027a\b\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0281\b\u0005"+ - "\u0001\u0005\u0003\u0005\u0284\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ - "\u0288\b\u0005\u0001\u0005\u0003\u0005\u028b\b\u0005\u0003\u0005\u028d"+ - "\b\u0005\u0001\u0005\u0003\u0005\u0290\b\u0005\u0001\u0005\u0001\u0005"+ - "\u0003\u0005\u0294\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0298\b"+ - "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ - "\u0005\u0003\u0005\u02a0\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ - "\u0005\u0001\u0005\u0003\u0005\u02a7\b\u0005\u0001\u0005\u0001\u0005\u0003"+ - "\u0005\u02ab\b\u0005\u0003\u0005\u02ad\b\u0005\u0001\u0005\u0003\u0005"+ - "\u02b0\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ - "\u02bc\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0003\u0005\u02ca\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u02d2\b\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u02d9\b\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ - "\u02e0\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u02e5\b"+ - "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ - "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ - "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ - "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ - "\u0005\u0003\u0005\u02ff\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ - "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ - "\u0006\u0001\u0006\u0003\u0006\u030c\b\u0006\u0003\u0006\u030e\b\u0006"+ - "\u0001\u0006\u0001\u0006\u0003\u0006\u0312\b\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0003\u0006\u0317\b\u0006\u0003\u0006\u0319\b\u0006\u0001"+ - "\u0006\u0003\u0006\u031c\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ - "\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0324\b\u0006\u0001\u0006\u0001"+ - "\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u032a\b\u0006\u0001\u0006\u0003"+ - "\u0006\u032d\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0332"+ - "\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0337\b\u0006"+ - "\u0003\u0006\u0339\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u034e\b\u0007\u0001\b"+ - "\u0003\b\u0351\b\b\u0001\b\u0003\b\u0354\b\b\u0001\b\u0001\b\u0001\b\u0001"+ - "\b\u0003\b\u035a\b\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0361"+ - "\b\b\u0001\b\u0003\b\u0364\b\b\u0001\b\u0001\b\u0001\b\u0003\b\u0369\b"+ - "\b\u0001\b\u0003\b\u036c\b\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0372"+ - "\b\b\u0001\b\u0001\b\u0003\b\u0376\b\b\u0001\b\u0003\b\u0379\b\b\u0001"+ - "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0381\b\b\u0001\b\u0003"+ - "\b\u0384\b\b\u0001\b\u0003\b\u0387\b\b\u0001\b\u0003\b\u038a\b\b\u0001"+ - "\b\u0001\b\u0001\b\u0001\b\u0003\b\u0390\b\b\u0001\b\u0001\b\u0001\b\u0003"+ - "\b\u0395\b\b\u0001\b\u0003\b\u0398\b\b\u0001\b\u0001\b\u0001\b\u0001\b"+ - "\u0001\b\u0001\b\u0001\b\u0005\b\u03a1\b\b\n\b\f\b\u03a4\t\b\u0001\b\u0001"+ - "\b\u0003\b\u03a8\b\b\u0001\b\u0003\b\u03ab\b\b\u0001\b\u0003\b\u03ae\b"+ - "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u03b5\b\b\u0001\b\u0003"+ - "\b\u03b8\b\b\u0001\b\u0001\b\u0001\b\u0003\b\u03bd\b\b\u0001\b\u0003\b"+ - "\u03c0\b\b\u0001\b\u0003\b\u03c3\b\b\u0001\t\u0001\t\u0003\t\u03c7\b\t"+ - "\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u03cd\b\t\u0001\t\u0001\t\u0003"+ - "\t\u03d1\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u03d7\b\t\u0001\t"+ - "\u0003\t\u03da\b\t\u0001\t\u0001\t\u0003\t\u03de\b\t\u0001\t\u0001\t\u0001"+ - "\t\u0003\t\u03e3\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ - "\t\u03eb\b\t\u0003\t\u03ed\b\t\u0001\t\u0001\t\u0003\t\u03f1\b\t\u0001"+ - "\t\u0003\t\u03f4\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u03fb"+ - "\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u0400\b\t\u0003\t\u0402\b\t\u0003"+ - "\t\u0404\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u040b\b\t"+ - "\u0001\t\u0003\t\u040e\b\t\u0001\t\u0001\t\u0003\t\u0412\b\t\u0001\t\u0001"+ - "\t\u0003\t\u0416\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u041b\b\t\u0001\t"+ - "\u0001\t\u0001\t\u0001\t\u0003\t\u0421\b\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0003\t\u0428\b\t\u0001\t\u0001\t\u0003\t\u042c\b\t\u0001\t"+ - "\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0436"+ - "\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u043b\b\t\u0001\t\u0001\t\u0001\t"+ - "\u0001\t\u0003\t\u0441\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0003\t\u0449\b\t\u0003\t\u044b\b\t\u0001\t\u0001\t\u0001\t\u0001\t"+ - "\u0001\t\u0003\t\u0452\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u0457\b\t\u0001"+ - "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u045f\b\t\u0001\t\u0001"+ - "\t\u0003\t\u0463\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u046a"+ - "\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0470\b\t\u0001\t\u0001\t"+ - "\u0003\t\u0474\b\t\u0001\t\u0003\t\u0477\b\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0001\t\u0003\t\u047f\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u048a\b\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ - "\t\u0497\b\t\u0001\t\u0001\t\u0003\t\u049b\b\t\u0001\t\u0001\t\u0001\t"+ - "\u0001\t\u0001\t\u0001\t\u0003\t\u04a3\b\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0003\t\u04aa\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0003\t\u04b2\b\t\u0001\t\u0003\t\u04b5\b\t\u0001\t\u0001\t\u0003\t"+ - "\u04b9\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u04c0\b\t\u0001"+ - "\t\u0001\t\u0003\t\u04c4\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ - "\t\u04cb\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u04d3"+ - "\b\t\u0001\t\u0003\t\u04d6\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t"+ - "\u04dc\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u04e1\b\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0001\t\u0003\t\u04e8\b\t\u0001\t\u0003\t\u04eb\b\t\u0001\t"+ - "\u0001\t\u0003\t\u04ef\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003"+ - "\t\u04f6\b\t\u0001\t\u0001\t\u0001\t\u0003\t\u04fb\b\t\u0001\t\u0001\t"+ - "\u0001\t\u0001\t\u0001\t\u0003\t\u0502\b\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0003\t\u0508\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u0516\b\n\u0001\n\u0001"+ - "\n\u0003\n\u051a\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0003\n\u0537\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0003\n\u0547\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u054d\b\n"+ - "\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0005\n\u0567\b\n\n"+ - "\n\f\n\u056a\t\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0005\n\u0574\b\n\n\n\f\n\u0577\t\n\u0001\n\u0001\n\u0001\n"+ - "\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0005\n\u0581\b\n\n\n\f\n\u0584"+ - "\t\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u0596"+ - "\b\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0003\n\u05a4\b\n\u0003\n\u05a6\b\n\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+ - "\u05b4\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0003\u000b\u05bb\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0003\u000b\u05c2\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0003\u000b\u05c9\b\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u05d1\b\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0003\u000b\u05d9\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0003\u000b\u05e0\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u05e8\b\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+ - "\u05f0\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u05fa\b\u000b\u0001\u000b"+ - "\u0001\u000b\u0003\u000b\u05fe\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0003\u000b\u0604\b\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+ - "\u0608\b\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u060c\b\u000b\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0611\b\u000b\u0001\u000b\u0001"+ - "\u000b\u0001\u000b\u0003\u000b\u0616\b\u000b\u0001\u000b\u0001\u000b\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u061e\b\u000b\u0001"+ - "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0624\b\u000b\u0001"+ - "\f\u0001\f\u0003\f\u0628\b\f\u0001\f\u0001\f\u0003\f\u062c\b\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u063c\b\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0003\f\u0642\b\f\u0001\f\u0003\f\u0645\b\f\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u064e\b\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0003\f\u0654\b\f\u0001\f\u0001\f\u0003\f\u0658\b\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0003\f\u0664\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u066a"+ - "\b\f\u0001\f\u0003\f\u066d\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u067a\b\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u0684"+ - "\b\f\u0001\f\u0001\f\u0003\f\u0688\b\f\u0001\f\u0001\f\u0003\f\u068c\b"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u0693\b\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06a4\b\f\u0001\f\u0001\f\u0003"+ - "\f\u06a8\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0003\f\u06b5\b\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0003\f\u06bb\b\f\u0001\f\u0001\f\u0003\f\u06bf\b\f\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0003\f\u06c6\b\f\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u06cb\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06d3"+ - "\b\f\u0003\f\u06d5\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06db\b"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0003\f\u06e7\b\f\u0001\f\u0001\f\u0003\f\u06eb\b\f\u0001\f"+ - "\u0003\f\u06ee\b\f\u0001\f\u0003\f\u06f1\b\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u06fe"+ - "\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u0711\b\f\u0001\f\u0001\f\u0001\f\u0003\f\u0716\b\f\u0001\f\u0003\f"+ - "\u0719\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u0722\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0001\f\u0001\f\u0003\f\u072e\b\f\u0001\f\u0001\f\u0003\f\u0732\b\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\f\u0005\f\u073d\b\f\n\f\f\f\u0740\t\f\u0001\f\u0001\f\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u074c\b\f\u0001"+ - "\f\u0001\f\u0003\f\u0750\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u0757\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u075d\b\f\u0001\f"+ - "\u0003\f\u0760\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u0766\b\f\u0001"+ - "\f\u0001\f\u0003\f\u076a\b\f\u0001\f\u0001\f\u0001\f\u0003\f\u076f\b\f"+ - "\u0001\f\u0003\f\u0772\b\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003"+ - "\f\u0779\b\f\u0001\f\u0003\f\u077c\b\f\u0003\f\u077e\b\f\u0001\r\u0001"+ - "\r\u0003\r\u0782\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u078c\b\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0005\u000f\u0796\b\u000f\n\u000f\f\u000f\u0799\t\u000f"+ - "\u0003\u000f\u079b\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07a4\b\u000f\u0001\u000f"+ - "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07ab\b\u000f"+ - "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005\u000f\u07b1\b\u000f"+ - "\n\u000f\f\u000f\u07b4\t\u000f\u0003\u000f\u07b6\b\u000f\u0001\u000f\u0003"+ - "\u000f\u07b9\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005"+ - "\u000f\u07c5\b\u000f\n\u000f\f\u000f\u07c8\t\u000f\u0001\u000f\u0001\u000f"+ - "\u0003\u000f\u07cc\b\u000f\u0001\u000f\u0003\u000f\u07cf\b\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005\u000f\u07db\b\u000f\n"+ - "\u000f\f\u000f\u07de\t\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07e2"+ - "\b\u000f\u0001\u000f\u0003\u000f\u07e5\b\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u07ec\b\u000f\u0003\u000f"+ - "\u07ee\b\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+ - "\u07f4\b\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u07f9\b"+ - "\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u07fd\b\u0011\u0001\u0011\u0003"+ - "\u0011\u0800\b\u0011\u0001\u0011\u0003\u0011\u0803\b\u0011\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0003\u0012\u080c\b\u0012\u0003\u0012\u080e\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0003\u0012\u0818\b\u0012\u0001\u0012\u0003\u0012\u081b\b\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u081f\b\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0003\u0012\u0824\b\u0012\u0001\u0012\u0003\u0012\u0827\b"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0831\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0837\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0003\u0012\u083c\b\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0003\u0012\u0842\b\u0012\u0001\u0012\u0003\u0012\u0845"+ - "\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0849\b\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0850\b\u0012"+ - "\u0001\u0012\u0003\u0012\u0853\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u085a\b\u0012\u0001\u0012\u0003\u0012"+ - "\u085d\b\u0012\u0001\u0012\u0003\u0012\u0860\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0003\u0012\u0864\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0868"+ - "\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u086d\b\u0012"+ - "\u0001\u0012\u0003\u0012\u0870\b\u0012\u0001\u0012\u0003\u0012\u0873\b"+ - "\u0012\u0001\u0012\u0003\u0012\u0876\b\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0003\u0012\u087c\b\u0012\u0001\u0012\u0003\u0012\u087f"+ - "\b\u0012\u0001\u0012\u0003\u0012\u0882\b\u0012\u0001\u0012\u0003\u0012"+ - "\u0885\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u088e\b\u0012\u0001\u0012\u0001\u0012"+ - "\u0003\u0012\u0892\b\u0012\u0001\u0012\u0003\u0012\u0895\b\u0012\u0001"+ - "\u0012\u0003\u0012\u0898\b\u0012\u0001\u0012\u0003\u0012\u089b\b\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u089f\b\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u08a5\b\u0012\u0001\u0012\u0003\u0012"+ - "\u08a8\b\u0012\u0001\u0012\u0003\u0012\u08ab\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0003\u0012\u08b5\b\u0012\u0001\u0012\u0003\u0012\u08b8\b\u0012"+ - "\u0001\u0012\u0003\u0012\u08bb\b\u0012\u0001\u0012\u0003\u0012\u08be\b"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u08c4"+ - "\b\u0012\u0001\u0012\u0003\u0012\u08c7\b\u0012\u0001\u0012\u0001\u0012"+ - "\u0003\u0012\u08cb\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012"+ - "\u08d0\b\u0012\u0001\u0012\u0003\u0012\u08d3\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0003\u0012\u08d8\b\u0012\u0001\u0012\u0003\u0012\u08db"+ - "\b\u0012\u0001\u0012\u0003\u0012\u08de\b\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u08e4\b\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u08eb\b\u0012\u0001\u0012"+ - "\u0001\u0012\u0003\u0012\u08ef\b\u0012\u0001\u0012\u0003\u0012\u08f2\b"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u08f7\b\u0012\u0001"+ - "\u0012\u0003\u0012\u08fa\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003"+ - "\u0012\u08ff\b\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0903\b\u0012"+ - "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0909\b\u0012"+ - "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0003\u0012\u0911\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0003\u0012\u0917\b\u0012\u0001\u0012\u0003\u0012\u091a\b\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u0925\b\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0003\u0012\u0930\b\u0012\u0003\u0012\u0932\b\u0012"+ - "\u0003\u0012\u0934\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0003\u0012\u093b\b\u0012\u0001\u0012\u0003\u0012\u093e\b"+ - "\u0012\u0001\u0012\u0003\u0012\u0941\b\u0012\u0001\u0012\u0003\u0012\u0944"+ - "\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u094a"+ - "\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0003\u0012\u0952\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0003\u0012\u0958\b\u0012\u0001\u0012\u0003\u0012\u095b\b\u0012"+ - "\u0001\u0012\u0003\u0012\u095e\b\u0012\u0001\u0012\u0003\u0012\u0961\b"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003"+ - "\u0012\u0968\b\u0012\u0003\u0012\u096a\b\u0012\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u0972\b\u0013"+ - "\u0001\u0013\u0001\u0013\u0003\u0013\u0976\b\u0013\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0005\u0013\u097b\b\u0013\n\u0013\f\u0013\u097e\t\u0013\u0003"+ - "\u0013\u0980\b\u0013\u0001\u0013\u0003\u0013\u0983\b\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0003\u0013"+ - "\u098b\b\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0003\u0014\u0994\b\u0014\u0001\u0014\u0003\u0014"+ - "\u0997\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0003\u0014\u09a5\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09cc\b\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014"+ - "\u09d3\b\u0014\u0003\u0014\u09d5\b\u0014\u0001\u0014\u0001\u0014\u0001"+ - "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09dd\b\u0014\u0001"+ - "\u0014\u0003\u0014\u09e0\b\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09e4"+ - "\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+ - "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u09f0"+ - "\b\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ - "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u09fc"+ - "\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001"+ - "\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ - "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001"+ - "\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u0a12\b\u001a\n\u001a\f\u001a"+ - "\u0a15\t\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b"+ - "\u0003\u001b\u0a1c\b\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+ - "\u0003\u001b\u0a22\b\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u0a26\b"+ - "\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u0a2b\b\u001c\n"+ - "\u001c\f\u001c\u0a2e\t\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001d\u0001\u001d\u0003\u001d\u0a35\b\u001d\u0001\u001d\u0003\u001d\u0a38"+ - "\b\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u0a3e"+ - "\b\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u0a44"+ - "\b\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u0a49\b\u001e"+ - "\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+ - "\u0003\u001f\u0a51\b\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u0a55\b"+ - "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0003 \u0a5c\b \u0001!\u0001"+ - "!\u0001!\u0001!\u0001!\u0001!\u0001!\u0003!\u0a65\b!\u0001!\u0001!\u0001"+ - "!\u0001!\u0003!\u0a6b\b!\u0001\"\u0001\"\u0001\"\u0001\"\u0003\"\u0a71"+ - "\b\"\u0001\"\u0003\"\u0a74\b\"\u0001\"\u0001\"\u0001\"\u0001\"\u0003\""+ - "\u0a7a\b\"\u0001\"\u0003\"\u0a7d\b\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001"+ - "\"\u0003\"\u0a84\b\"\u0003\"\u0a86\b\"\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0003#\u0a8f\b#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0005#\u0a97\b#\n#\f#\u0a9a\t#\u0001#\u0003#\u0a9d\b#\u0001#\u0001#"+ - "\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0005#\u0aa8\b#\n#\f"+ - "#\u0aab\t#\u0001#\u0003#\u0aae\b#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0005#\u0ab6\b#\n#\f#\u0ab9\t#\u0001#\u0001#\u0001#\u0001#\u0003#\u0abf"+ - "\b#\u0001#\u0001#\u0001#\u0001#\u0003#\u0ac5\b#\u0003#\u0ac7\b#\u0001"+ - "$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ - "$\u0001$\u0001$\u0001$\u0005$\u0ad7\b$\n$\f$\u0ada\t$\u0001$\u0003$\u0add"+ - "\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0005"+ - "$\u0ae8\b$\n$\f$\u0aeb\t$\u0001$\u0003$\u0aee\b$\u0001$\u0001$\u0001$"+ - "\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ - "$\u0001$\u0001$\u0003$\u0aff\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+ - "$\u0001$\u0001$\u0003$\u0b09\b$\u0001$\u0001$\u0001$\u0001$\u0003$\u0b0f"+ - "\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0003$\u0b17\b$\u0001$\u0001"+ - "$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0005$\u0b21\b$\n$\f$\u0b24"+ - "\t$\u0001$\u0003$\u0b27\b$\u0001$\u0001$\u0001$\u0001$\u0001$\u0001$\u0003"+ - "$\u0b2f\b$\u0003$\u0b31\b$\u0001%\u0001%\u0001%\u0001%\u0003%\u0b37\b"+ - "%\u0001%\u0001%\u0003%\u0b3b\b%\u0001%\u0001%\u0001%\u0001%\u0003%\u0b41"+ - "\b%\u0001%\u0001%\u0003%\u0b45\b%\u0001%\u0001%\u0001%\u0001%\u0003%\u0b4b"+ - "\b%\u0001%\u0001%\u0003%\u0b4f\b%\u0001%\u0001%\u0001%\u0003%\u0b54\b"+ - "%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ - "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ - "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ - "&\u0001&\u0001&\u0003&\u0b76\b&\u0001&\u0001&\u0001&\u0001&\u0001&\u0003"+ - "&\u0b7d\b&\u0001&\u0003&\u0b80\b&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+ - "&\u0001&\u0003&\u0b89\b&\u0001&\u0001&\u0001&\u0001&\u0001&\u0003&\u0b90"+ - "\b&\u0003&\u0b92\b&\u0001\'\u0001\'\u0003\'\u0b96\b\'\u0001\'\u0003\'"+ - "\u0b99\b\'\u0001\'\u0003\'\u0b9c\b\'\u0001\'\u0003\'\u0b9f\b\'\u0001\'"+ - "\u0001\'\u0003\'\u0ba3\b\'\u0001\'\u0003\'\u0ba6\b\'\u0001(\u0001(\u0001"+ - "(\u0001(\u0003(\u0bac\b(\u0001)\u0001)\u0001)\u0001)\u0003)\u0bb2\b)\u0003"+ - ")\u0bb4\b)\u0001)\u0001)\u0003)\u0bb8\b)\u0001)\u0001)\u0003)\u0bbc\b"+ - ")\u0001)\u0003)\u0bbf\b)\u0001)\u0003)\u0bc2\b)\u0001)\u0003)\u0bc5\b"+ - ")\u0001)\u0001)\u0003)\u0bc9\b)\u0001)\u0001)\u0003)\u0bcd\b)\u0001)\u0003"+ - ")\u0bd0\b)\u0001)\u0003)\u0bd3\b)\u0001)\u0003)\u0bd6\b)\u0003)\u0bd8"+ - "\b)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0003*\u0be2"+ - "\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ - "*\u0001*\u0001*\u0003*\u0bf0\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0003"+ - "*\u0bf7\b*\u0001*\u0001*\u0001*\u0001*\u0005*\u0bfd\b*\n*\f*\u0c00\t*"+ - "\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ - "*\u0003*\u0c0c\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ - "*\u0001*\u0001*\u0001*\u0001*\u0003*\u0c1a\b*\u0001*\u0001*\u0001*\u0001"+ - "*\u0001*\u0003*\u0c21\b*\u0001*\u0001*\u0001*\u0001*\u0005*\u0c27\b*\n"+ - "*\f*\u0c2a\t*\u0001*\u0001*\u0003*\u0c2e\b*\u0001+\u0001+\u0003+\u0c32"+ - "\b+\u0001+\u0003+\u0c35\b+\u0001,\u0001,\u0001,\u0005,\u0c3a\b,\n,\f,"+ - "\u0c3d\t,\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ - "-\u0001-\u0001-\u0001-\u0001-\u0003-\u0c4c\b-\u0001-\u0001-\u0001-\u0001"+ - "-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ - "-\u0001-\u0003-\u0c5d\b-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003"+ - "-\u0c65\b-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+ - "-\u0001-\u0003-\u0c71\b-\u0001-\u0001-\u0001-\u0001-\u0003-\u0c77\b-\u0003"+ - "-\u0c79\b-\u0001.\u0001.\u0001.\u0001.\u0001.\u0005.\u0c80\b.\n.\f.\u0c83"+ - "\t.\u0001.\u0003.\u0c86\b.\u0001.\u0001.\u0001.\u0001.\u0001.\u0005.\u0c8d"+ - "\b.\n.\f.\u0c90\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0005.\u0c97\b."+ - "\n.\f.\u0c9a\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0005.\u0cae\b.\n.\f.\u0cb1\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0005.\u0cb9\b.\n.\f.\u0cbc\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0001.\u0001.\u0001.\u0003.\u0cc7\b.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0005.\u0cce\b.\n.\f.\u0cd1\t.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0001.\u0001.\u0001.\u0001.\u0003.\u0cdd\b.\u0001/\u0001/\u0003/\u0ce1"+ - "\b/\u00010\u00010\u00010\u00010\u00010\u00030\u0ce8\b0\u00010\u00030\u0ceb"+ - "\b0\u00010\u00030\u0cee\b0\u00011\u00011\u00011\u00011\u00031\u0cf4\b"+ - "1\u00011\u00031\u0cf7\b1\u00011\u00031\u0cfa\b1\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00031\u0d02\b1\u00011\u00031\u0d05\b1\u00011\u00011\u0001"+ - "1\u00011\u00031\u0d0b\b1\u00011\u00031\u0d0e\b1\u00011\u00011\u00011\u0001"+ - "1\u00031\u0d14\b1\u00011\u00031\u0d17\b1\u00011\u00031\u0d1a\b1\u0001"+ - "1\u00011\u00011\u00011\u00031\u0d20\b1\u00011\u00031\u0d23\b1\u00011\u0001"+ - "1\u00031\u0d27\b1\u00011\u00011\u00011\u00011\u00011\u00011\u00031\u0d2f"+ - "\b1\u00011\u00011\u00011\u00031\u0d34\b1\u00031\u0d36\b1\u00031\u0d38"+ - "\b1\u00011\u00031\u0d3b\b1\u00011\u00011\u00031\u0d3f\b1\u00011\u0001"+ - "1\u00011\u00031\u0d44\b1\u00011\u00011\u00031\u0d48\b1\u00011\u00011\u0001"+ - "1\u00031\u0d4d\b1\u00011\u00011\u00031\u0d51\b1\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00031\u0d59\b1\u00011\u00011\u00011\u00011\u00011\u0001"+ - "1\u00011\u00031\u0d62\b1\u00011\u00011\u00031\u0d66\b1\u00011\u00031\u0d69"+ - "\b1\u00011\u00031\u0d6c\b1\u00011\u00011\u00011\u00011\u00011\u00031\u0d73"+ - "\b1\u00011\u00031\u0d76\b1\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00011\u00011\u00011\u00011\u00031\u0d8f\b1\u00011\u0001"+ - "1\u00011\u00011\u00011\u00011\u00031\u0d97\b1\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00011\u00031\u0da0\b1\u00011\u00011\u00011\u00031\u0da5"+ - "\b1\u00031\u0da7\b1\u00031\u0da9\b1\u00011\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0003"+ - "1\u0db9\b1\u00011\u00011\u00031\u0dbd\b1\u00011\u00011\u00011\u00011\u0001"+ - "1\u00011\u00011\u00011\u00031\u0dc7\b1\u00011\u00031\u0dca\b1\u00031\u0dcc"+ - "\b1\u00012\u00012\u00012\u00032\u0dd1\b2\u00013\u00013\u00013\u00014\u0001"+ - "4\u00014\u00015\u00015\u00015\u00015\u00035\u0ddd\b5\u00015\u00015\u0001"+ - "5\u00015\u00015\u00035\u0de4\b5\u00015\u00015\u00015\u00015\u00015\u0001"+ - "5\u00035\u0dec\b5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0003"+ - "5\u0df5\b5\u00035\u0df7\b5\u00015\u00015\u00015\u00015\u00035\u0dfd\b"+ - "5\u00015\u00035\u0e00\b5\u00016\u00016\u00036\u0e04\b6\u00016\u00016\u0001"+ - "6\u00036\u0e09\b6\u00016\u00016\u00016\u00016\u00016\u00036\u0e10\b6\u0001"+ - "6\u00016\u00016\u00016\u00016\u00036\u0e17\b6\u00016\u00016\u00016\u0001"+ - "6\u00016\u00036\u0e1e\b6\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00016\u00016\u00016\u00016\u00056\u0e2b\b6\n6\f6\u0e2e\t6\u00016\u0003"+ - "6\u0e31\b6\u00016\u00016\u00016\u00016\u00036\u0e37\b6\u00016\u00036\u0e3a"+ - "\b6\u00016\u00016\u00056\u0e3e\b6\n6\f6\u0e41\t6\u00016\u00036\u0e44\b"+ - "6\u00036\u0e46\b6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ - "7\u00017\u00037\u0e51\b7\u00017\u00017\u00017\u00017\u00017\u00037\u0e58"+ - "\b7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0003"+ - "7\u0e63\b7\u00017\u00017\u00017\u00017\u00037\u0e69\b7\u00017\u00037\u0e6c"+ - "\b7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ - "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0003"+ - "7\u0e81\b7\u00017\u00037\u0e84\b7\u00017\u00017\u00017\u00017\u00017\u0001"+ - "7\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00037\u0e93\b7\u0001"+ - "7\u00017\u00017\u00037\u0e98\b7\u00017\u00037\u0e9b\b7\u00017\u00017\u0001"+ - "7\u00017\u00017\u00037\u0ea2\b7\u00018\u00018\u00018\u00018\u00018\u0001"+ - "8\u00018\u00018\u00018\u00018\u00038\u0eae\b8\u00018\u00018\u00018\u0001"+ - "8\u00018\u00018\u00038\u0eb6\b8\u00019\u00019\u00019\u00019\u00019\u0003"+ - "9\u0ebd\b9\u00019\u00019\u00039\u0ec1\b9\u00019\u00019\u00019\u00019\u0001"+ - "9\u00039\u0ec8\b9\u00019\u00019\u00019\u00019\u00019\u00039\u0ecf\b9\u0001"+ - "9\u00019\u00019\u00039\u0ed4\b9\u00019\u00019\u00019\u00039\u0ed9\b9\u0001"+ - "9\u00019\u00019\u00019\u00019\u00019\u00019\u00039\u0ee2\b9\u00019\u0001"+ - "9\u00019\u00019\u00039\u0ee8\b9\u00019\u00019\u00039\u0eec\b9\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00039\u0ef4\b9\u00019\u00019\u00039\u0ef8"+ - "\b9\u00019\u00019\u00019\u00019\u00019\u00019\u00039\u0f00\b9\u00019\u0001"+ - "9\u00019\u00019\u00019\u00019\u00039\u0f08\b9\u00019\u00019\u00019\u0001"+ - "9\u00019\u00039\u0f0f\b9\u00019\u00039\u0f12\b9\u00019\u00019\u00019\u0001"+ - "9\u00019\u00039\u0f19\b9\u00019\u00019\u00039\u0f1d\b9\u00039\u0f1f\b"+ - "9\u0001:\u0001:\u0001:\u0005:\u0f24\b:\n:\f:\u0f27\t:\u0001;\u0001;\u0001"+ - ";\u0001;\u0003;\u0f2d\b;\u0003;\u0f2f\b;\u0001<\u0001<\u0001<\u0005<\u0f34"+ - "\b<\n<\f<\u0f37\t<\u0001=\u0001=\u0001=\u0001=\u0003=\u0f3d\b=\u0001>"+ - "\u0001>\u0003>\u0f41\b>\u0001>\u0001>\u0001>\u0001>\u0003>\u0f47\b>\u0001"+ - "?\u0001?\u0001?\u0003?\u0f4c\b?\u0003?\u0f4e\b?\u0001?\u0001?\u0001?\u0001"+ - "?\u0001?\u0001?\u0003?\u0f56\b?\u0003?\u0f58\b?\u0001?\u0001?\u0001?\u0001"+ - "?\u0001?\u0003?\u0f5f\b?\u0003?\u0f61\b?\u0001?\u0001?\u0003?\u0f65\b"+ - "?\u0001?\u0001?\u0001?\u0001?\u0003?\u0f6b\b?\u0003?\u0f6d\b?\u0001?\u0003"+ - "?\u0f70\b?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0003@\u0f78\b@\u0001"+ - "A\u0001A\u0001A\u0005A\u0f7d\bA\nA\fA\u0f80\tA\u0001B\u0001B\u0001B\u0003"+ - "B\u0f85\bB\u0001B\u0001B\u0001B\u0003B\u0f8a\bB\u0005B\u0f8c\bB\nB\fB"+ - "\u0f8f\tB\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0003B\u0f9c\bB\u0001B\u0001B\u0001B\u0003B\u0fa1\bB\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0003B\u0fae\bB\u0003B\u0fb0\bB\u0001C\u0001C\u0001C\u0001C\u0001C\u0003"+ - "C\u0fb7\bC\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0003D\u0fbf\bD\u0001"+ - "D\u0001D\u0003D\u0fc3\bD\u0001D\u0001D\u0001D\u0003D\u0fc8\bD\u0001D\u0001"+ - "D\u0001D\u0003D\u0fcd\bD\u0001D\u0001D\u0001D\u0003D\u0fd2\bD\u0001D\u0001"+ - "D\u0001D\u0001D\u0001D\u0001D\u0003D\u0fda\bD\u0001D\u0001D\u0001D\u0001"+ - "D\u0001D\u0001D\u0001D\u0003D\u0fe3\bD\u0001D\u0003D\u0fe6\bD\u0001E\u0001"+ - "E\u0001E\u0001E\u0003E\u0fec\bE\u0003E\u0fee\bE\u0001E\u0001E\u0001E\u0001"+ - "E\u0003E\u0ff4\bE\u0001E\u0001E\u0001E\u0001E\u0001E\u0003E\u0ffb\bE\u0001"+ - "F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001"+ - "G\u0001G\u0003G\u1009\bG\u0001H\u0001H\u0003H\u100d\bH\u0001H\u0001H\u0001"+ - "H\u0003H\u1012\bH\u0001H\u0001H\u0001H\u0001H\u0003H\u1018\bH\u0001I\u0001"+ - "I\u0001I\u0001I\u0001I\u0001I\u0003I\u1020\bI\u0001I\u0003I\u1023\bI\u0001"+ - "J\u0001J\u0001J\u0001J\u0003J\u1029\bJ\u0001J\u0003J\u102c\bJ\u0001J\u0001"+ - "J\u0001J\u0001K\u0001K\u0001K\u0001K\u0003K\u1035\bK\u0001K\u0003K\u1038"+ - "\bK\u0001K\u0001K\u0001K\u0001K\u0003K\u103e\bK\u0001K\u0001K\u0001K\u0001"+ - "K\u0001K\u0001K\u0001K\u0001K\u0003K\u1048\bK\u0001K\u0001K\u0003K\u104c"+ - "\bK\u0001K\u0003K\u104f\bK\u0003K\u1051\bK\u0001L\u0001L\u0001L\u0003"+ - "L\u1056\bL\u0001L\u0001L\u0001L\u0003L\u105b\bL\u0001M\u0001M\u0003M\u105f"+ - "\bM\u0001M\u0001M\u0001M\u0001M\u0003M\u1065\bM\u0001N\u0001N\u0001N\u0001"+ - "N\u0001N\u0003N\u106c\bN\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ - "N\u0001N\u0001N\u0001N\u0003N\u1078\bN\u0003N\u107a\bN\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0003"+ - "O\u1088\bO\u0001P\u0003P\u108b\bP\u0001P\u0001P\u0001P\u0003P\u1090\b"+ - "P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u1098\bP\u0001Q\u0003"+ - "Q\u109b\bQ\u0001Q\u0001Q\u0001Q\u0003Q\u10a0\bQ\u0001Q\u0001Q\u0001Q\u0003"+ - "Q\u10a5\bQ\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0005R\u10ad\bR\n"+ - "R\fR\u10b0\tR\u0001R\u0001R\u0001S\u0001S\u0003S\u10b6\bS\u0001T\u0003"+ - "T\u10b9\bT\u0001T\u0003T\u10bc\bT\u0001T\u0001T\u0001T\u0001T\u0001T\u0001"+ - "T\u0005T\u10c4\bT\nT\fT\u10c7\tT\u0001T\u0001T\u0001T\u0001T\u0001T\u0003"+ - "T\u10ce\bT\u0001T\u0001T\u0001T\u0001T\u0003T\u10d4\bT\u0001T\u0001T\u0001"+ - "T\u0001T\u0003T\u10da\bT\u0001T\u0001T\u0001T\u0003T\u10df\bT\u0001T\u0001"+ - "T\u0001T\u0003T\u10e4\bT\u0001T\u0003T\u10e7\bT\u0001T\u0003T\u10ea\b"+ - "T\u0001T\u0003T\u10ed\bT\u0001T\u0003T\u10f0\bT\u0001T\u0003T\u10f3\b"+ - "T\u0001T\u0003T\u10f6\bT\u0001T\u0003T\u10f9\bT\u0001T\u0003T\u10fc\b"+ - "T\u0001T\u0003T\u10ff\bT\u0001T\u0003T\u1102\bT\u0001T\u0001T\u0001T\u0001"+ - "T\u0001T\u0001T\u0001T\u0001T\u0001T\u0003T\u110d\bT\u0001T\u0003T\u1110"+ - "\bT\u0001T\u0003T\u1113\bT\u0001T\u0003T\u1116\bT\u0001T\u0003T\u1119"+ - "\bT\u0003T\u111b\bT\u0001U\u0001U\u0001V\u0001V\u0001V\u0001W\u0001W\u0001"+ - "W\u0001W\u0001W\u0001W\u0001W\u0003W\u1129\bW\u0001X\u0001X\u0001X\u0001"+ - "X\u0001X\u0003X\u1130\bX\u0001Y\u0001Y\u0001Z\u0001Z\u0003Z\u1136\bZ\u0001"+ - "[\u0001[\u0003[\u113a\b[\u0001\\\u0001\\\u0001\\\u0003\\\u113f\b\\\u0001"+ - "]\u0001]\u0001]\u0005]\u1144\b]\n]\f]\u1147\t]\u0001^\u0001^\u0003^\u114b"+ - "\b^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0003_\u1154\b_\u0003"+ - "_\u1156\b_\u0001`\u0001`\u0001`\u0001`\u0003`\u115c\b`\u0001`\u0003`\u115f"+ - "\b`\u0001a\u0001a\u0003a\u1163\ba\u0001a\u0003a\u1166\ba\u0001a\u0003"+ - "a\u1169\ba\u0001b\u0001b\u0001c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001"+ - "e\u0001e\u0001e\u0001e\u0003e\u1177\be\u0001f\u0001f\u0001g\u0001g\u0001"+ - "g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001"+ - "j\u0001j\u0001j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0005k\u1192\bk\nk\fk\u1195\tk\u0001k\u0001k\u0001l\u0001l\u0001l\u0001"+ - "l\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0003m\u11b7\bm\u0003m\u11b9"+ - "\bm\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0003n\u11c2\bn\u0001"+ - "o\u0001o\u0003o\u11c6\bo\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001"+ - "o\u0003o\u11cf\bo\u0001o\u0001o\u0001o\u0001o\u0003o\u11d5\bo\u0001o\u0001"+ - "o\u0001o\u0001o\u0003o\u11db\bo\u0001o\u0003o\u11de\bo\u0001o\u0003o\u11e1"+ - "\bo\u0001o\u0003o\u11e4\bo\u0001o\u0003o\u11e7\bo\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001p\u0003p\u11ef\bp\u0001q\u0001q\u0001q\u0001q\u0001"+ - "q\u0001q\u0003q\u11f7\bq\u0001q\u0003q\u11fa\bq\u0001r\u0003r\u11fd\b"+ - "r\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0003"+ - "s\u1208\bs\u0001s\u0001s\u0001s\u0001s\u0003s\u120e\bs\u0001s\u0005s\u1211"+ - "\bs\ns\fs\u1214\ts\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001"+ - "u\u0003u\u121e\bu\u0001v\u0001v\u0003v\u1222\bv\u0001v\u0003v\u1225\b"+ - "v\u0001v\u0003v\u1228\bv\u0001v\u0003v\u122b\bv\u0001v\u0003v\u122e\b"+ - "v\u0001v\u0003v\u1231\bv\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001"+ - "w\u0005w\u123a\bw\nw\fw\u123d\tw\u0001x\u0001x\u0003x\u1241\bx\u0001x"+ - "\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0005y\u124c"+ - "\by\ny\fy\u124f\ty\u0001y\u0001y\u0001z\u0001z\u0003z\u1255\bz\u0001z"+ - "\u0001z\u0001{\u0001{\u0001|\u0001|\u0001|\u0001}\u0001}\u0001}\u0001"+ - "~\u0003~\u1262\b~\u0001~\u0001~\u0001~\u0003~\u1267\b~\u0001~\u0001~\u0001"+ - "~\u0003~\u126c\b~\u0005~\u126e\b~\n~\f~\u1271\t~\u0001\u007f\u0001\u007f"+ - "\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080"+ - "\u0001\u0081\u0001\u0081\u0001\u0081\u0005\u0081\u127e\b\u0081\n\u0081"+ - "\f\u0081\u1281\t\u0081\u0001\u0082\u0001\u0082\u0005\u0082\u1285\b\u0082"+ - "\n\u0082\f\u0082\u1288\t\u0082\u0001\u0083\u0001\u0083\u0001\u0083\u0003"+ - "\u0083\u128d\b\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u1291\b\u0083"+ - "\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+ - "\u0001\u0084\u0001\u0084\u0003\u0084\u129b\b\u0084\u0001\u0085\u0001\u0085"+ - "\u0001\u0085\u0001\u0085\u0005\u0085\u12a1\b\u0085\n\u0085\f\u0085\u12a4"+ - "\t\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ - "\u0085\u0005\u0085\u12ac\b\u0085\n\u0085\f\u0085\u12af\t\u0085\u0001\u0085"+ - "\u0001\u0085\u0003\u0085\u12b3\b\u0085\u0001\u0086\u0001\u0086\u0001\u0086"+ - "\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ - "\u0005\u0087\u12be\b\u0087\n\u0087\f\u0087\u12c1\t\u0087\u0003\u0087\u12c3"+ - "\b\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+ - "\u0087\u0005\u0087\u12cb\b\u0087\n\u0087\f\u0087\u12ce\t\u0087\u0003\u0087"+ - "\u12d0\b\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+ - "\u0001\u0087\u0001\u0087\u0005\u0087\u12d9\b\u0087\n\u0087\f\u0087\u12dc"+ - "\t\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0005"+ - "\u0087\u12e3\b\u0087\n\u0087\f\u0087\u12e6\t\u0087\u0003\u0087\u12e8\b"+ - "\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0005\u0088\u12ee"+ - "\b\u0088\n\u0088\f\u0088\u12f1\t\u0088\u0003\u0088\u12f3\b\u0088\u0001"+ - "\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001"+ - "\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0003\u008b\u12ff\b\u008b\u0001"+ - "\u008b\u0005\u008b\u1302\b\u008b\n\u008b\f\u008b\u1305\t\u008b\u0001\u008b"+ - "\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0003\u008c"+ - "\u130d\b\u008c\u0001\u008c\u0005\u008c\u1310\b\u008c\n\u008c\f\u008c\u1313"+ - "\t\u008c\u0001\u008c\u0001\u008c\u0003\u008c\u1317\b\u008c\u0001\u008c"+ - "\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0005\u008c\u131e\b\u008c"+ - "\n\u008c\f\u008c\u1321\t\u008c\u0001\u008c\u0001\u008c\u0003\u008c\u1325"+ - "\b\u008c\u0003\u008c\u1327\b\u008c\u0001\u008d\u0001\u008d\u0001\u008d"+ - "\u0001\u008d\u0003\u008d\u132d\b\u008d\u0003\u008d\u132f\b\u008d\u0001"+ - "\u008d\u0003\u008d\u1332\b\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ - "\u008e\u0003\u008e\u1338\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0005"+ - "\u008f\u133d\b\u008f\n\u008f\f\u008f\u1340\t\u008f\u0001\u0090\u0001\u0090"+ - "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0005\u0090"+ - "\u1349\b\u0090\n\u0090\f\u0090\u134c\t\u0090\u0003\u0090\u134e\b\u0090"+ - "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+ - "\u0005\u0090\u1356\b\u0090\n\u0090\f\u0090\u1359\t\u0090\u0001\u0091\u0003"+ - "\u0091\u135c\b\u0091\u0001\u0091\u0003\u0091\u135f\b\u0091\u0001\u0092"+ - "\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0005\u0092\u1366\b\u0092"+ - "\n\u0092\f\u0092\u1369\t\u0092\u0001\u0093\u0001\u0093\u0003\u0093\u136d"+ - "\b\u0093\u0001\u0093\u0001\u0093\u0003\u0093\u1371\b\u0093\u0001\u0094"+ - "\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094"+ - "\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u0094\u137d\b\u0094\u0001\u0095"+ - "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0005\u0095\u1384\b\u0095"+ - "\n\u0095\f\u0095\u1387\t\u0095\u0001\u0096\u0003\u0096\u138a\b\u0096\u0001"+ - "\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u138f\b\u0096\u0001\u0096\u0001"+ - "\u0096\u0003\u0096\u1393\b\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u1397"+ - "\b\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001"+ - "\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u13a1\b\u0096\u0001\u0097\u0001"+ - "\u0097\u0001\u0097\u0001\u0097\u0003\u0097\u13a7\b\u0097\u0001\u0098\u0001"+ - "\u0098\u0001\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0005"+ - "\u0099\u13b0\b\u0099\n\u0099\f\u0099\u13b3\t\u0099\u0001\u009a\u0001\u009a"+ - "\u0001\u009a\u0001\u009a\u0003\u009a\u13b9\b\u009a\u0001\u009a\u0001\u009a"+ - "\u0001\u009b\u0001\u009b\u0003\u009b\u13bf\b\u009b\u0001\u009b\u0003\u009b"+ - "\u13c2\b\u009b\u0001\u009b\u0003\u009b\u13c5\b\u009b\u0001\u009b\u0003"+ - "\u009b\u13c8\b\u009b\u0001\u009b\u0003\u009b\u13cb\b\u009b\u0001\u009b"+ - "\u0001\u009b\u0003\u009b\u13cf\b\u009b\u0001\u009b\u0003\u009b\u13d2\b"+ - "\u009b\u0001\u009b\u0005\u009b\u13d5\b\u009b\n\u009b\f\u009b\u13d8\t\u009b"+ - "\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0005\u009b"+ - "\u13df\b\u009b\n\u009b\f\u009b\u13e2\t\u009b\u0001\u009b\u0001\u009b\u0001"+ - "\u009b\u0003\u009b\u13e7\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+ - "\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u13f0\b\u009b\u0001"+ - "\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0005\u009e\u13fd"+ - "\b\u009e\n\u009e\f\u009e\u1400\t\u009e\u0001\u009f\u0001\u009f\u0001\u009f"+ - "\u0001\u009f\u0001\u00a0\u0001\u00a0\u0003\u00a0\u1408\b\u00a0\u0001\u00a1"+ - "\u0001\u00a1\u0003\u00a1\u140c\b\u00a1\u0001\u00a2\u0003\u00a2\u140f\b"+ - "\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2\u1413\b\u00a2\u0003\u00a2\u1415"+ - "\b\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0005\u00a3\u141a\b\u00a3"+ - "\n\u00a3\f\u00a3\u141d\t\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0005"+ - "\u00a4\u1422\b\u00a4\n\u00a4\f\u00a4\u1425\t\u00a4\u0001\u00a5\u0001\u00a5"+ - "\u0001\u00a5\u0003\u00a5\u142a\b\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6"+ - "\u0005\u00a6\u142f\b\u00a6\n\u00a6\f\u00a6\u1432\t\u00a6\u0001\u00a7\u0001"+ - "\u00a7\u0001\u00a7\u0003\u00a7\u1437\b\u00a7\u0001\u00a7\u0003\u00a7\u143a"+ - "\b\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7\u143e\b\u00a7\u0001\u00a7"+ - "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7\u1445\b\u00a7"+ - "\u0001\u00a7\u0003\u00a7\u1448\b\u00a7\u0001\u00a7\u0003\u00a7\u144b\b"+ - "\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003"+ - "\u00a7\u1452\b\u00a7\u0003\u00a7\u1454\b\u00a7\u0001\u00a7\u0001\u00a7"+ - "\u0001\u00a7\u0003\u00a7\u1459\b\u00a7\u0001\u00a7\u0001\u00a7\u0003\u00a7"+ - "\u145d\b\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ - "\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7"+ - "\u0003\u00a7\u146a\b\u00a7\u0003\u00a7\u146c\b\u00a7\u0003\u00a7\u146e"+ - "\b\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ - "\u00a7\u0001\u00a7\u0003\u00a7\u1477\b\u00a7\u0003\u00a7\u1479\b\u00a7"+ - "\u0001\u00a7\u0001\u00a7\u0003\u00a7\u147d\b\u00a7\u0001\u00a8\u0001\u00a8"+ - "\u0001\u00a8\u0005\u00a8\u1482\b\u00a8\n\u00a8\f\u00a8\u1485\t\u00a8\u0001"+ - "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u148b\b\u00a9\u0001"+ - "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u1491\b\u00a9\u0001"+ - "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u1498"+ - "\b\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u149c\b\u00a9\u0001\u00aa"+ - "\u0001\u00aa\u0001\u00aa\u0005\u00aa\u14a1\b\u00aa\n\u00aa\f\u00aa\u14a4"+ - "\t\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003\u00ab\u14aa"+ - "\b\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003\u00ab\u14b0"+ - "\b\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u14b6"+ - "\b\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+ - "\u00ac\u0003\u00ac\u14be\b\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001"+ - "\u00ad\u0003\u00ad\u14c4\b\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001"+ - "\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0003"+ - "\u00ae\u14d5\b\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0003"+ - "\u00af\u14db\b\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ - "\u00af\u0001\u00af\u0001\u00af\u0005\u00af\u14e4\b\u00af\n\u00af\f\u00af"+ - "\u14e7\t\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0003\u00af\u14ec\b"+ - "\u00af\u0003\u00af\u14ee\b\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+ - "\u00b0\u0005\u00b0\u14f4\b\u00b0\n\u00b0\f\u00b0\u14f7\t\u00b0\u0001\u00b0"+ - "\u0001\u00b0\u0001\u00b1\u0003\u00b1\u14fc\b\u00b1\u0001\u00b1\u0001\u00b1"+ - "\u0001\u00b1\u0001\u00b1\u0003\u00b1\u1502\b\u00b1\u0001\u00b2\u0001\u00b2"+ - "\u0001\u00b2\u0005\u00b2\u1507\b\u00b2\n\u00b2\f\u00b2\u150a\t\u00b2\u0001"+ - "\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0003\u00b3\u1511"+ - "\b\u00b3\u0001\u00b3\u0003\u00b3\u1514\b\u00b3\u0001\u00b4\u0001\u00b4"+ - "\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0005\u00b5"+ - "\u151d\b\u00b5\n\u00b5\f\u00b5\u1520\t\u00b5\u0001\u00b5\u0001\u00b5\u0001"+ - "\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0005\u00b6\u1528\b\u00b6\n"+ - "\u00b6\f\u00b6\u152b\t\u00b6\u0001\u00b7\u0001\u00b7\u0003\u00b7\u152f"+ - "\b\u00b7\u0001\u00b7\u0003\u00b7\u1532\b\u00b7\u0001\u00b8\u0001\u00b8"+ - "\u0001\u00b8\u0005\u00b8\u1537\b\u00b8\n\u00b8\f\u00b8\u153a\t\u00b8\u0001"+ - "\u00b9\u0001\u00b9\u0003\u00b9\u153e\b\u00b9\u0001\u00ba\u0001\u00ba\u0001"+ - "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0004"+ - "\u00ba\u1548\b\u00ba\u000b\u00ba\f\u00ba\u1549\u0001\u00ba\u0001\u00ba"+ - "\u0001\u00ba\u0001\u00ba\u0003\u00ba\u1550\b\u00ba\u0001\u00bb\u0001\u00bb"+ - "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ - "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ - "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+ - "\u0003\u00bb\u1566\b\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u156a\b"+ - "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ - "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ - "\u00bb\u0005\u00bb\u1578\b\u00bb\n\u00bb\f\u00bb\u157b\t\u00bb\u0001\u00bc"+ - "\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0005\u00bc\u1581\b\u00bc\n\u00bc"+ - "\f\u00bc\u1584\t\u00bc\u0003\u00bc\u1586\b\u00bc\u0001\u00bc\u0001\u00bc"+ - "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003\u00bd\u158d\b\u00bd\u0001\u00be"+ - "\u0003\u00be\u1590\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00be\u0001\u00be\u0003\u00be\u1598\b\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00be\u0003\u00be\u159d\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0003\u00be\u15a2\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00be\u0001\u00be\u0003\u00be\u15aa\b\u00be\u0001\u00be\u0001\u00be"+ - "\u0001\u00be\u0001\u00be\u0001\u00be\u0005\u00be\u15b1\b\u00be\n\u00be"+ - "\f\u00be\u15b4\t\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+ - "\u0003\u00be\u15ba\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0003\u00be"+ - "\u15bf\b\u00be\u0001\u00be\u0003\u00be\u15c2\b\u00be\u0001\u00bf\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u15c8\b\u00bf\u0001\u00bf\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0005"+ - "\u00bf\u15dd\b\u00bf\n\u00bf\f\u00bf\u15e0\t\u00bf\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0004\u00c0\u15ec\b\u00c0\u000b\u00c0\f\u00c0"+ - "\u15ed\u0001\u00c0\u0001\u00c0\u0003\u00c0\u15f2\b\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0004\u00c0\u15f9\b\u00c0\u000b"+ - "\u00c0\f\u00c0\u15fa\u0001\u00c0\u0001\u00c0\u0003\u00c0\u15ff\b\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0005\u00c0\u160e\b\u00c0\n\u00c0\f\u00c0\u1611\t\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0005\u00c0\u1617\b\u00c0\n"+ - "\u00c0\f\u00c0\u161a\t\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0005\u00c0\u1621\b\u00c0\n\u00c0\f\u00c0\u1624\t\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1628\b\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+ - "\u0003\u00c0\u1644\b\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1648\b"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1653\b\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003"+ - "\u00c0\u165b\b\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1660"+ - "\b\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u166c"+ - "\b\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u1678"+ - "\b\u00c0\u0005\u00c0\u167a\b\u00c0\n\u00c0\f\u00c0\u167d\t\u00c0\u0001"+ - "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001"+ - "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0003\u00c1\u1689\b\u00c1\u0001"+ - "\u00c2\u0001\u00c2\u0001\u00c2\u0003\u00c2\u168e\b\u00c2\u0003\u00c2\u1690"+ - "\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0003\u00c3\u1695\b\u00c3"+ - "\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0005\u00c3\u169a\b\u00c3\n\u00c3"+ - "\f\u00c3\u169d\t\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+ - "\u0001\u00c3\u0005\u00c3\u16a4\b\u00c3\n\u00c3\f\u00c3\u16a7\t\u00c3\u0003"+ - "\u00c3\u16a9\b\u00c3\u0003\u00c3\u16ab\b\u00c3\u0001\u00c3\u0001\u00c3"+ - "\u0001\u00c3\u0003\u00c3\u16b0\b\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4"+ - "\u0003\u00c4\u16b5\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5"+ - "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ - "\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+ - "\u0001\u00c5\u0001\u00c5\u0003\u00c5\u16c9\b\u00c5\u0001\u00c6\u0001\u00c6"+ - "\u0003\u00c6\u16cd\b\u00c6\u0001\u00c6\u0003\u00c6\u16d0\b\u00c6\u0001"+ - "\u00c6\u0003\u00c6\u16d3\b\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001"+ - "\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001"+ - "\u00c7\u0001\u00c7\u0003\u00c7\u16e0\b\u00c7\u0001\u00c8\u0001\u00c8\u0001"+ - "\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001"+ - "\u00c9\u0003\u00c9\u16eb\b\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0005"+ - "\u00ca\u16f0\b\u00ca\n\u00ca\f\u00ca\u16f3\t\u00ca\u0001\u00cb\u0003\u00cb"+ - "\u16f6\b\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb\u16fb\b"+ - "\u00cb\u0001\u00cb\u0003\u00cb\u16fe\b\u00cb\u0001\u00cb\u0001\u00cb\u0003"+ - "\u00cb\u1702\b\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ - "\u00cc\u0001\u00cc\u0003\u00cc\u170a\b\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ - "\u00cc\u0003\u00cc\u170f\b\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc\u1713"+ - "\b\u00cc\n\u00cc\f\u00cc\u1716\t\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc"+ - "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u171e\b\u00cc\u0001\u00cc"+ - "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc\u1725\b\u00cc"+ - "\n\u00cc\f\u00cc\u1728\t\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ - "\u00cc\u0001\u00cc\u0005\u00cc\u172f\b\u00cc\n\u00cc\f\u00cc\u1732\t\u00cc"+ - "\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u1737\b\u00cc\u0001\u00cd"+ - "\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf"+ - "\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0"+ - "\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0003\u00d2\u174a\b\u00d2"+ - "\u0001\u00d2\u0003\u00d2\u174d\b\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+ - "\u0001\u00d3\u0001\u00d3\u0005\u00d3\u176c\b\u00d3\n\u00d3\f\u00d3\u176f"+ - "\t\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ - "\u00d3\u0001\u00d3\u0001\u00d3\u0005\u00d3\u1779\b\u00d3\n\u00d3\f\u00d3"+ - "\u177c\t\u00d3\u0001\u00d3\u0003\u00d3\u177f\b\u00d3\u0003\u00d3\u1781"+ - "\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u17a3\b\u00d4\u0001\u00d5\u0001"+ - "\u00d5\u0001\u00d5\u0005\u00d5\u17a8\b\u00d5\n\u00d5\f\u00d5\u17ab\t\u00d5"+ - "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u17b1\b\u00d6"+ - "\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0005\u00d7\u17b6\b\u00d7\n\u00d7"+ - "\f\u00d7\u17b9\t\u00d7\u0001\u00d8\u0003\u00d8\u17bc\b\u00d8\u0001\u00d8"+ - "\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0003\u00d8\u17c2\b\u00d8\u0001\u00d9"+ - "\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db"+ - "\u0001\u00db\u0003\u00db\u17cc\b\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+ - "\u0003\u00db\u17d1\b\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+ - "\u0003\u00dc\u17d7\b\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ - "\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+ - "\u0003\u00dd\u17e3\b\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df"+ - "\u0001\u00df\u0004\u00df\u17ea\b\u00df\u000b\u00df\f\u00df\u17eb\u0001"+ - "\u00df\u0003\u00df\u17ef\b\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001"+ - "\u00e1\u0001\u00e1\u0003\u00e1\u17f6\b\u00e1\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e3\u0003\u00e3\u17fb\b\u00e3\u0001\u00e3\u0001\u00e3\u0003\u00e3\u17ff"+ - "\b\u00e3\u0001\u00e3\u0003\u00e3\u1802\b\u00e3\u0001\u00e4\u0001\u00e4"+ - "\u0001\u00e4\u0002\u0216\u021d\u0004\u00e6\u0176\u017e\u0180\u00e5\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\u00ae\u00b0\u00b2\u00b4"+ - "\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc"+ - "\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4"+ - "\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc"+ - "\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114"+ - "\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c"+ - "\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144"+ - "\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c"+ - "\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174"+ - "\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c"+ - "\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4"+ - "\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc"+ - "\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u0000=\u0001\u0000\u015a\u015b\u0002"+ - "\u0000\u00bf\u00bf\u015b\u015b\u0002\u0000##\u00bc\u00bc\u0002\u0000 "+ - " \u0216\u0216\u0002\u0000\u00a9\u00a9\u01be\u01be\u0003\u0000\u0012\u0012"+ - "\u0092\u0092\u01d5\u01d5\u0002\u0000\u00bb\u00bb\u00d9\u00d9\u0002\u0000"+ - "\u014c\u014c\u017f\u017f\u0003\u0000..\u00e7\u00e7\u012b\u012b\u0002\u0000"+ - "\u0012\u0012\u01b8\u01b8\u0003\u0000nn\u0179\u0179\u01c7\u01c7\u0002\u0000"+ - "oo\u0191\u0191\u0002\u0000\u009e\u009e\u01ec\u01ec\u0002\u0000\u00a2\u00a2"+ - "\u0135\u0135\u0001\u0000\u01e5\u01e6\u0002\u0000pp\u0192\u0192\u0002\u0000"+ - "PP\u00af\u00af\u0002\u0000\u00db\u00dc\u00f4\u00f5\u0003\u0000\u001a\u001a"+ - "~~\u011c\u011c\u0001\u0000\u008e\u008f\u0002\u0000\u00d9\u00d9\u01c6\u01c6"+ - "\u0004\u000066\u00cc\u00cc\u0106\u0106\u018d\u018d\u0003\u0000ww\u00d3"+ - "\u00d3\u0193\u0193\u0001\u0000\u000b\f\u0002\u0000\u0136\u0136\u01f4\u01f4"+ - "\u0002\u0000\u0211\u0211\u0216\u0216\u0001\u0000\u0141\u0142\u0002\u0000"+ - "\u0104\u0104\u0168\u0168\u0003\u0000\u00c3\u00c3\u0106\u0106\u0197\u0197"+ - "\u0002\u0000}}\u00d8\u00d8\u0002\u0000 UU\u0005\u0000\u0091\u0091\u00c6"+ - "\u00c6\u0150\u0150\u01c9\u01c9\u01e7\u01e7\u0002\u0000\u0080\u0081\u00a6"+ - "\u00a6\n\u0000\u0014\u0014\u0017\u0017\u0088\u0088\u010b\u010b\u011b\u011b"+ - "\u0138\u0138\u0140\u0140\u014d\u014d\u0183\u0183\u019c\u019c\u0003\u0000"+ - "\u00a1\u00a1\u0120\u0120\u01d4\u01d4\u0002\u0000\u0014\u0014\u0085\u0085"+ - "\u0002\u0000\u012d\u012d\u01dd\u01dd\u0002\u0000\u001d\u001d\u0080\u0080"+ - "\u0002\u0000\u00b2\u00b2\u00f9\u00f9\b\u000000\u00c2\u00c2\u00d0\u00d0"+ - "\u0119\u0119\u011f\u011f\u0161\u0161\u0176\u0177\u01b2\u01b2\u0001\u0000"+ - "\u00ec\u00ed\u0002\u0000\u0018\u0018\u0205\u0205\u0003\u0000\u0100\u0100"+ - "\u0171\u0171\u0185\u0185\u0001\u0000\u010f\u0115\u0002\u0000\u00ac\u00ac"+ - "\u01cc\u01cc\u0002\u0000\u01fe\u01ff\u0203\u0203\u0002\u0000\u008a\u008a"+ - "\u0200\u0202\u0001\u0000\u01fe\u01ff\u0002\u0000\u00c3\u00c3\u0197\u0197"+ - "\u0002\u0000qq\u01c4\u01c4\u0002\u0000\u019e\u019e\u01d8\u01d8\u0001\u0000"+ - "\u00e1\u00e2\u0002\u0000\u0168\u0168\u018c\u018c\u0002\u0000\u00b5\u00b5"+ - "\u0157\u0157\u0004\u0000qqttvv\u01c4\u01c4\u0001\u0000\u01f7\u01fd\b\u0000"+ - "ww\u00d3\u00d3\u0121\u0121\u0123\u0123\u0166\u0166\u0193\u0193\u01ed\u01ed"+ - "\u01f6\u01f6\u0002\u0000\u0200\u0200\u0216\u0216\u0001\u0000\u0116\u0117"+ - "\u0001\u0000\u0217\u0218c\u0000\t\n\r\r\u0010\u0013\u0017\u0017\u001b"+ - "\u001b\u001e\u001f!\"$\'**-:<>BGIJLNP\\^bdeinqz}}\u007f\u007f\u0082\u0083"+ - "\u0086\u0087\u008b\u008c\u0090\u0090\u0093\u0094\u0096\u009c\u009e\u00a0"+ - "\u00a2\u00a2\u00a5\u00a5\u00a9\u00a9\u00ab\u00ab\u00ad\u00b2\u00b9\u00ba"+ - "\u00bd\u00bd\u00bf\u00bf\u00c1\u00c3\u00c6\u00c6\u00c8\u00ca\u00cc\u00ce"+ - "\u00d0\u00d5\u00d7\u00d8\u00da\u00da\u00dc\u00dc\u00e7\u00e9\u00eb\u00f0"+ - "\u00f2\u00f3\u00f7\u00f7\u00f9\u00f9\u00fb\u00fc\u00fe\u00ff\u0102\u0103"+ - "\u0106\u010b\u010d\u010e\u0110\u0115\u0118\u0119\u011b\u011f\u0121\u0126"+ - "\u0128\u012c\u012e\u012e\u0131\u0131\u0133\u0134\u0136\u0138\u013f\u0140"+ - "\u0142\u014e\u0150\u0150\u0152\u0156\u015a\u015a\u015c\u0167\u016c\u016f"+ - "\u0175\u0178\u017a\u0181\u0183\u0183\u0185\u0185\u0188\u018a\u018d\u0191"+ - "\u0193\u0193\u0196\u0198\u019b\u019c\u019f\u019f\u01a1\u01a4\u01a6\u01b2"+ - "\u01b8\u01b8\u01bc\u01be\u01c0\u01c1\u01c3\u01c4\u01c7\u01c7\u01c9\u01ca"+ - "\u01cd\u01ce\u01d0\u01d0\u01d2\u01d2\u01d6\u01d7\u01d9\u01d9\u01dc\u01dc"+ - "\u01df\u01df\u01e1\u01ed\u01f2\u01f2\u01f6\u01f6\u020c\u020e\u1c5c\u0000"+ - "\u01cd\u0001\u0000\u0000\u0000\u0002\u01e9\u0001\u0000\u0000\u0000\u0004"+ - "\u0241\u0001\u0000\u0000\u0000\u0006\u025f\u0001\u0000\u0000\u0000\b\u0271"+ - "\u0001\u0000\u0000\u0000\n\u02fe\u0001\u0000\u0000\u0000\f\u0338\u0001"+ - "\u0000\u0000\u0000\u000e\u034d\u0001\u0000\u0000\u0000\u0010\u03c2\u0001"+ - "\u0000\u0000\u0000\u0012\u0507\u0001\u0000\u0000\u0000\u0014\u05a5\u0001"+ - "\u0000\u0000\u0000\u0016\u0623\u0001\u0000\u0000\u0000\u0018\u077d\u0001"+ - "\u0000\u0000\u0000\u001a\u0781\u0001\u0000\u0000\u0000\u001c\u0783\u0001"+ - "\u0000\u0000\u0000\u001e\u07ed\u0001\u0000\u0000\u0000 \u07ef\u0001\u0000"+ - "\u0000\u0000\"\u07f5\u0001\u0000\u0000\u0000$\u0969\u0001\u0000\u0000"+ - "\u0000&\u096b\u0001\u0000\u0000\u0000(\u09ef\u0001\u0000\u0000\u0000*"+ - "\u09fb\u0001\u0000\u0000\u0000,\u09fd\u0001\u0000\u0000\u0000.\u0a01\u0001"+ - "\u0000\u0000\u00000\u0a05\u0001\u0000\u0000\u00002\u0a08\u0001\u0000\u0000"+ - "\u00004\u0a0c\u0001\u0000\u0000\u00006\u0a25\u0001\u0000\u0000\u00008"+ - "\u0a27\u0001\u0000\u0000\u0000:\u0a2f\u0001\u0000\u0000\u0000<\u0a48\u0001"+ - "\u0000\u0000\u0000>\u0a54\u0001\u0000\u0000\u0000@\u0a56\u0001\u0000\u0000"+ - "\u0000B\u0a6a\u0001\u0000\u0000\u0000D\u0a85\u0001\u0000\u0000\u0000F"+ - "\u0ac6\u0001\u0000\u0000\u0000H\u0b30\u0001\u0000\u0000\u0000J\u0b53\u0001"+ - "\u0000\u0000\u0000L\u0b91\u0001\u0000\u0000\u0000N\u0b93\u0001\u0000\u0000"+ - "\u0000P\u0bab\u0001\u0000\u0000\u0000R\u0bd7\u0001\u0000\u0000\u0000T"+ - "\u0c2d\u0001\u0000\u0000\u0000V\u0c34\u0001\u0000\u0000\u0000X\u0c36\u0001"+ - "\u0000\u0000\u0000Z\u0c78\u0001\u0000\u0000\u0000\\\u0cdc\u0001\u0000"+ - "\u0000\u0000^\u0cde\u0001\u0000\u0000\u0000`\u0ce2\u0001\u0000\u0000\u0000"+ - "b\u0dcb\u0001\u0000\u0000\u0000d\u0dd0\u0001\u0000\u0000\u0000f\u0dd2"+ - "\u0001\u0000\u0000\u0000h\u0dd5\u0001\u0000\u0000\u0000j\u0dff\u0001\u0000"+ - "\u0000\u0000l\u0e45\u0001\u0000\u0000\u0000n\u0ea1\u0001\u0000\u0000\u0000"+ - "p\u0eb5\u0001\u0000\u0000\u0000r\u0f1e\u0001\u0000\u0000\u0000t\u0f20"+ - "\u0001\u0000\u0000\u0000v\u0f2e\u0001\u0000\u0000\u0000x\u0f30\u0001\u0000"+ - "\u0000\u0000z\u0f38\u0001\u0000\u0000\u0000|\u0f3e\u0001\u0000\u0000\u0000"+ - "~\u0f4d\u0001\u0000\u0000\u0000\u0080\u0f77\u0001\u0000\u0000\u0000\u0082"+ - "\u0f79\u0001\u0000\u0000\u0000\u0084\u0faf\u0001\u0000\u0000\u0000\u0086"+ - "\u0fb1\u0001\u0000\u0000\u0000\u0088\u0fe5\u0001\u0000\u0000\u0000\u008a"+ - "\u0ffa\u0001\u0000\u0000\u0000\u008c\u0ffc\u0001\u0000\u0000\u0000\u008e"+ - "\u0fff\u0001\u0000\u0000\u0000\u0090\u1017\u0001\u0000\u0000\u0000\u0092"+ - "\u1022\u0001\u0000\u0000\u0000\u0094\u1024\u0001\u0000\u0000\u0000\u0096"+ - "\u1050\u0001\u0000\u0000\u0000\u0098\u1052\u0001\u0000\u0000\u0000\u009a"+ - "\u1064\u0001\u0000\u0000\u0000\u009c\u1079\u0001\u0000\u0000\u0000\u009e"+ - "\u1087\u0001\u0000\u0000\u0000\u00a0\u1097\u0001\u0000\u0000\u0000\u00a2"+ - "\u109a\u0001\u0000\u0000\u0000\u00a4\u10a8\u0001\u0000\u0000\u0000\u00a6"+ - "\u10b5\u0001\u0000\u0000\u0000\u00a8\u111a\u0001\u0000\u0000\u0000\u00aa"+ - "\u111c\u0001\u0000\u0000\u0000\u00ac\u111e\u0001\u0000\u0000\u0000\u00ae"+ - "\u1128\u0001\u0000\u0000\u0000\u00b0\u112a\u0001\u0000\u0000\u0000\u00b2"+ - "\u1131\u0001\u0000\u0000\u0000\u00b4\u1135\u0001\u0000\u0000\u0000\u00b6"+ - "\u1139\u0001\u0000\u0000\u0000\u00b8\u113e\u0001\u0000\u0000\u0000\u00ba"+ - "\u1140\u0001\u0000\u0000\u0000\u00bc\u114a\u0001\u0000\u0000\u0000\u00be"+ - "\u114c\u0001\u0000\u0000\u0000\u00c0\u1157\u0001\u0000\u0000\u0000\u00c2"+ - "\u1160\u0001\u0000\u0000\u0000\u00c4\u116a\u0001\u0000\u0000\u0000\u00c6"+ - "\u116c\u0001\u0000\u0000\u0000\u00c8\u116e\u0001\u0000\u0000\u0000\u00ca"+ - "\u1176\u0001\u0000\u0000\u0000\u00cc\u1178\u0001\u0000\u0000\u0000\u00ce"+ - "\u117a\u0001\u0000\u0000\u0000\u00d0\u117e\u0001\u0000\u0000\u0000\u00d2"+ - "\u1182\u0001\u0000\u0000\u0000\u00d4\u1186\u0001\u0000\u0000\u0000\u00d6"+ - "\u118c\u0001\u0000\u0000\u0000\u00d8\u1198\u0001\u0000\u0000\u0000\u00da"+ - "\u11b8\u0001\u0000\u0000\u0000\u00dc\u11ba\u0001\u0000\u0000\u0000\u00de"+ - "\u11c3\u0001\u0000\u0000\u0000\u00e0\u11ee\u0001\u0000\u0000\u0000\u00e2"+ - "\u11f0\u0001\u0000\u0000\u0000\u00e4\u11fc\u0001\u0000\u0000\u0000\u00e6"+ - "\u1201\u0001\u0000\u0000\u0000\u00e8\u1215\u0001\u0000\u0000\u0000\u00ea"+ - "\u121d\u0001\u0000\u0000\u0000\u00ec\u121f\u0001\u0000\u0000\u0000\u00ee"+ - "\u1235\u0001\u0000\u0000\u0000\u00f0\u123e\u0001\u0000\u0000\u0000\u00f2"+ - "\u1247\u0001\u0000\u0000\u0000\u00f4\u1252\u0001\u0000\u0000\u0000\u00f6"+ - "\u1258\u0001\u0000\u0000\u0000\u00f8\u125a\u0001\u0000\u0000\u0000\u00fa"+ - "\u125d\u0001\u0000\u0000\u0000\u00fc\u1261\u0001\u0000\u0000\u0000\u00fe"+ - "\u1272\u0001\u0000\u0000\u0000\u0100\u1275\u0001\u0000\u0000\u0000\u0102"+ - "\u127a\u0001\u0000\u0000\u0000\u0104\u1282\u0001\u0000\u0000\u0000\u0106"+ - "\u1289\u0001\u0000\u0000\u0000\u0108\u129a\u0001\u0000\u0000\u0000\u010a"+ - "\u12b2\u0001\u0000\u0000\u0000\u010c\u12b4\u0001\u0000\u0000\u0000\u010e"+ - "\u12e7\u0001\u0000\u0000\u0000\u0110\u12e9\u0001\u0000\u0000\u0000\u0112"+ - "\u12f6\u0001\u0000\u0000\u0000\u0114\u12f9\u0001\u0000\u0000\u0000\u0116"+ - "\u12fc\u0001\u0000\u0000\u0000\u0118\u1326\u0001\u0000\u0000\u0000\u011a"+ - "\u1331\u0001\u0000\u0000\u0000\u011c\u1333\u0001\u0000\u0000\u0000\u011e"+ - "\u1339\u0001\u0000\u0000\u0000\u0120\u1341\u0001\u0000\u0000\u0000\u0122"+ - "\u135b\u0001\u0000\u0000\u0000\u0124\u1360\u0001\u0000\u0000\u0000\u0126"+ - "\u136a\u0001\u0000\u0000\u0000\u0128\u137c\u0001\u0000\u0000\u0000\u012a"+ - "\u137e\u0001\u0000\u0000\u0000\u012c\u13a0\u0001\u0000\u0000\u0000\u012e"+ - "\u13a6\u0001\u0000\u0000\u0000\u0130\u13a8\u0001\u0000\u0000\u0000\u0132"+ - "\u13ac\u0001\u0000\u0000\u0000\u0134\u13b4\u0001\u0000\u0000\u0000\u0136"+ - "\u13ef\u0001\u0000\u0000\u0000\u0138\u13f1\u0001\u0000\u0000\u0000\u013a"+ - "\u13f4\u0001\u0000\u0000\u0000\u013c\u13f9\u0001\u0000\u0000\u0000\u013e"+ - "\u1401\u0001\u0000\u0000\u0000\u0140\u1407\u0001\u0000\u0000\u0000\u0142"+ - "\u140b\u0001\u0000\u0000\u0000\u0144\u1414\u0001\u0000\u0000\u0000\u0146"+ - "\u1416\u0001\u0000\u0000\u0000\u0148\u141e\u0001\u0000\u0000\u0000\u014a"+ - "\u1426\u0001\u0000\u0000\u0000\u014c\u142b\u0001\u0000\u0000\u0000\u014e"+ - "\u1433\u0001\u0000\u0000\u0000\u0150\u147e\u0001\u0000\u0000\u0000\u0152"+ - "\u1486\u0001\u0000\u0000\u0000\u0154\u149d\u0001\u0000\u0000\u0000\u0156"+ - "\u14a9\u0001\u0000\u0000\u0000\u0158\u14b1\u0001\u0000\u0000\u0000\u015a"+ - "\u14bf\u0001\u0000\u0000\u0000\u015c\u14cd\u0001\u0000\u0000\u0000\u015e"+ - "\u14d6\u0001\u0000\u0000\u0000\u0160\u14ef\u0001\u0000\u0000\u0000\u0162"+ - "\u1501\u0001\u0000\u0000\u0000\u0164\u1503\u0001\u0000\u0000\u0000\u0166"+ - "\u150b\u0001\u0000\u0000\u0000\u0168\u1515\u0001\u0000\u0000\u0000\u016a"+ - "\u1517\u0001\u0000\u0000\u0000\u016c\u1523\u0001\u0000\u0000\u0000\u016e"+ - "\u152c\u0001\u0000\u0000\u0000\u0170\u1533\u0001\u0000\u0000\u0000\u0172"+ - "\u153d\u0001\u0000\u0000\u0000\u0174\u154f\u0001\u0000\u0000\u0000\u0176"+ - "\u1569\u0001\u0000\u0000\u0000\u0178\u157c\u0001\u0000\u0000\u0000\u017a"+ - "\u158c\u0001\u0000\u0000\u0000\u017c\u15c1\u0001\u0000\u0000\u0000\u017e"+ - "\u15c7\u0001\u0000\u0000\u0000\u0180\u165f\u0001\u0000\u0000\u0000\u0182"+ - "\u1688\u0001\u0000\u0000\u0000\u0184\u168f\u0001\u0000\u0000\u0000\u0186"+ - "\u1691\u0001\u0000\u0000\u0000\u0188\u16b4\u0001\u0000\u0000\u0000\u018a"+ - "\u16c8\u0001\u0000\u0000\u0000\u018c\u16ca\u0001\u0000\u0000\u0000\u018e"+ - "\u16df\u0001\u0000\u0000\u0000\u0190\u16e1\u0001\u0000\u0000\u0000\u0192"+ - "\u16ea\u0001\u0000\u0000\u0000\u0194\u16ec\u0001\u0000\u0000\u0000\u0196"+ - "\u1701\u0001\u0000\u0000\u0000\u0198\u1736\u0001\u0000\u0000\u0000\u019a"+ - "\u1738\u0001\u0000\u0000\u0000\u019c\u173a\u0001\u0000\u0000\u0000\u019e"+ - "\u173c\u0001\u0000\u0000\u0000\u01a0\u1741\u0001\u0000\u0000\u0000\u01a2"+ - "\u1745\u0001\u0000\u0000\u0000\u01a4\u1747\u0001\u0000\u0000\u0000\u01a6"+ - "\u1780\u0001\u0000\u0000\u0000\u01a8\u17a2\u0001\u0000\u0000\u0000\u01aa"+ - "\u17a4\u0001\u0000\u0000\u0000\u01ac\u17ac\u0001\u0000\u0000\u0000\u01ae"+ - "\u17b2\u0001\u0000\u0000\u0000\u01b0\u17bb\u0001\u0000\u0000\u0000\u01b2"+ - "\u17c3\u0001\u0000\u0000\u0000\u01b4\u17c5\u0001\u0000\u0000\u0000\u01b6"+ - "\u17c8\u0001\u0000\u0000\u0000\u01b8\u17d6\u0001\u0000\u0000\u0000\u01ba"+ - "\u17e2\u0001\u0000\u0000\u0000\u01bc\u17e4\u0001\u0000\u0000\u0000\u01be"+ - "\u17ee\u0001\u0000\u0000\u0000\u01c0\u17f0\u0001\u0000\u0000\u0000\u01c2"+ - "\u17f5\u0001\u0000\u0000\u0000\u01c4\u17f7\u0001\u0000\u0000\u0000\u01c6"+ - "\u1801\u0001\u0000\u0000\u0000\u01c8\u1803\u0001\u0000\u0000\u0000\u01ca"+ - "\u01cc\u0005\u0001\u0000\u0000\u01cb\u01ca\u0001\u0000\u0000\u0000\u01cc"+ - "\u01cf\u0001\u0000\u0000\u0000\u01cd\u01cb\u0001\u0000\u0000\u0000\u01cd"+ - "\u01ce\u0001\u0000\u0000\u0000\u01ce\u01d1\u0001\u0000\u0000\u0000\u01cf"+ - "\u01cd\u0001\u0000\u0000\u0000\u01d0\u01d2\u0003\u0004\u0002\u0000\u01d1"+ - "\u01d0\u0001\u0000\u0000\u0000\u01d1\u01d2\u0001\u0000\u0000\u0000\u01d2"+ - "\u01db\u0001\u0000\u0000\u0000\u01d3\u01d5\u0005\u0001\u0000\u0000\u01d4"+ - "\u01d3\u0001\u0000\u0000\u0000\u01d5\u01d6\u0001\u0000\u0000\u0000\u01d6"+ - "\u01d4\u0001\u0000\u0000\u0000\u01d6\u01d7\u0001\u0000\u0000\u0000\u01d7"+ - "\u01d8\u0001\u0000\u0000\u0000\u01d8\u01da\u0003\u0004\u0002\u0000\u01d9"+ - "\u01d4\u0001\u0000\u0000\u0000\u01da\u01dd\u0001\u0000\u0000\u0000\u01db"+ - "\u01d9\u0001\u0000\u0000\u0000\u01db\u01dc\u0001\u0000\u0000\u0000\u01dc"+ - "\u01e1\u0001\u0000\u0000\u0000\u01dd\u01db\u0001\u0000\u0000\u0000\u01de"+ - "\u01e0\u0005\u0001\u0000\u0000\u01df\u01de\u0001\u0000\u0000\u0000\u01e0"+ - "\u01e3\u0001\u0000\u0000\u0000\u01e1\u01df\u0001\u0000\u0000\u0000\u01e1"+ - "\u01e2\u0001\u0000\u0000\u0000\u01e2\u01e4\u0001\u0000\u0000\u0000\u01e3"+ - "\u01e1\u0001\u0000\u0000\u0000\u01e4\u01e5\u0005\u0000\u0000\u0001\u01e5"+ - "\u0001\u0001\u0000\u0000\u0000\u01e6\u01e8\u0005\u0001\u0000\u0000\u01e7"+ - "\u01e6\u0001\u0000\u0000\u0000\u01e8\u01eb\u0001\u0000\u0000\u0000\u01e9"+ - "\u01e7\u0001\u0000\u0000\u0000\u01e9\u01ea\u0001\u0000\u0000\u0000\u01ea"+ - "\u01ed\u0001\u0000\u0000\u0000\u01eb\u01e9\u0001\u0000\u0000\u0000\u01ec"+ - "\u01ee\u0003\u0004\u0002\u0000\u01ed\u01ec\u0001\u0000\u0000\u0000\u01ed"+ - "\u01ee\u0001\u0000\u0000\u0000\u01ee\u01f2\u0001\u0000\u0000\u0000\u01ef"+ - "\u01f1\u0005\u0001\u0000\u0000\u01f0\u01ef\u0001\u0000\u0000\u0000\u01f1"+ - "\u01f4\u0001\u0000\u0000\u0000\u01f2\u01f0\u0001\u0000\u0000\u0000\u01f2"+ - "\u01f3\u0001\u0000\u0000\u0000\u01f3\u01f5\u0001\u0000\u0000\u0000\u01f4"+ - "\u01f2\u0001\u0000\u0000\u0000\u01f5\u01f6\u0005\u0000\u0000\u0001\u01f6"+ - "\u0003\u0001\u0000\u0000\u0000\u01f7\u0242\u0003\u0006\u0003\u0000\u01f8"+ - "\u01f9\u0005>\u0000\u0000\u01f9\u01fa\u0003\u0146\u00a3\u0000\u01fa\u0203"+ - "\u0005\u0002\u0000\u0000\u01fb\u0200\u0003\u0172\u00b9\u0000\u01fc\u01fd"+ - "\u0005\u0004\u0000\u0000\u01fd\u01ff\u0003\u0172\u00b9\u0000\u01fe\u01fc"+ - "\u0001\u0000\u0000\u0000\u01ff\u0202\u0001\u0000\u0000\u0000\u0200\u01fe"+ - "\u0001\u0000\u0000\u0000\u0200\u0201\u0001\u0000\u0000\u0000\u0201\u0204"+ - "\u0001\u0000\u0000\u0000\u0202\u0200\u0001\u0000\u0000\u0000\u0203\u01fb"+ - "\u0001\u0000\u0000\u0000\u0203\u0204\u0001\u0000\u0000\u0000\u0204\u0205"+ - "\u0001\u0000\u0000\u0000\u0205\u0206\u0005\u0003\u0000\u0000\u0206\u0242"+ - "\u0001\u0000\u0000\u0000\u0207\u020f\u0005\u0015\u0000\u0000\u0208\u020b"+ - "\u0005c\u0000\u0000\u0209\u020a\u0005\u0139\u0000\u0000\u020a\u020c\u0005"+ - "\u0176\u0000\u0000\u020b\u0209\u0001\u0000\u0000\u0000\u020b\u020c\u0001"+ - "\u0000\u0000\u0000\u020c\u020f\u0001\u0000\u0000\u0000\u020d\u020f\u0005"+ - "\u0176\u0000\u0000\u020e\u0207\u0001\u0000\u0000\u0000\u020e\u0208\u0001"+ - "\u0000\u0000\u0000\u020e\u020d\u0001\u0000\u0000\u0000\u020f\u0210\u0001"+ - "\u0000\u0000\u0000\u0210\u0211\u0007\u0000\u0000\u0000\u0211\u0212\u0003"+ - "\u0146\u00a3\u0000\u0212\u0216\u0005\u0002\u0000\u0000\u0213\u0215\t\u0000"+ - "\u0000\u0000\u0214\u0213\u0001\u0000\u0000\u0000\u0215\u0218\u0001\u0000"+ - "\u0000\u0000\u0216\u0217\u0001\u0000\u0000\u0000\u0216\u0214\u0001\u0000"+ - "\u0000\u0000\u0217\u0219\u0001\u0000\u0000\u0000\u0218\u0216\u0001\u0000"+ - "\u0000\u0000\u0219\u021d\u0005\u0003\u0000\u0000\u021a\u021c\t\u0000\u0000"+ - "\u0000\u021b\u021a\u0001\u0000\u0000\u0000\u021c\u021f\u0001\u0000\u0000"+ - "\u0000\u021d\u021e\u0001\u0000\u0000\u0000\u021d\u021b\u0001\u0000\u0000"+ - "\u0000\u021e\u0242\u0001\u0000\u0000\u0000\u021f\u021d\u0001\u0000\u0000"+ - "\u0000\u0220\u0221\u0005\u008e\u0000\u0000\u0221\u0224\u0007\u0000\u0000"+ - "\u0000\u0222\u0223\u0005\u00d6\u0000\u0000\u0223\u0225\u0005\u00a4\u0000"+ - "\u0000\u0224\u0222\u0001\u0000\u0000\u0000\u0224\u0225\u0001\u0000\u0000"+ - "\u0000\u0225\u0226\u0001\u0000\u0000\u0000\u0226\u0242\u0003\u0146\u00a3"+ - "\u0000\u0227\u0228\u0005\u019d\u0000\u0000\u0228\u0229\u0007\u0001\u0000"+ - "\u0000\u0229\u022d\u0005\u01ab\u0000\u0000\u022a\u022b\u0005\u0100\u0000"+ - "\u0000\u022b\u022e\u0003\u017e\u00bf\u0000\u022c\u022e\u0003\u00f8|\u0000"+ - "\u022d\u022a\u0001\u0000\u0000\u0000\u022d\u022c\u0001\u0000\u0000\u0000"+ - "\u022d\u022e\u0001\u0000\u0000\u0000\u022e\u0242\u0001\u0000\u0000\u0000"+ - "\u022f\u0230\u0005\u019d\u0000\u0000\u0230\u0231\u0005c\u0000\u0000\u0231"+ - "\u0232\u0005\u015b\u0000\u0000\u0232\u0242\u0003\u0146\u00a3\u0000\u0233"+ - "\u0235\u0005\u000f\u0000\u0000\u0234\u0233\u0001\u0000\u0000\u0000\u0234"+ - "\u0235\u0001\u0000\u0000\u0000\u0235\u0236\u0001\u0000\u0000\u0000\u0236"+ - "\u0237\u0005\u019d\u0000\u0000\u0237\u0238\u0007\u0002\u0000\u0000\u0238"+ - "\u023b\u0005Y\u0000\u0000\u0239\u023a\u0005\u0100\u0000\u0000\u023a\u023c"+ - "\u0003\u017e\u00bf\u0000\u023b\u0239\u0001\u0000\u0000\u0000\u023b\u023c"+ - "\u0001\u0000\u0000\u0000\u023c\u023f\u0001\u0000\u0000\u0000\u023d\u023e"+ - "\u0005\u00bb\u0000\u0000\u023e\u0240\u0005\u0216\u0000\u0000\u023f\u023d"+ - "\u0001\u0000\u0000\u0000\u023f\u0240\u0001\u0000\u0000\u0000\u0240\u0242"+ - "\u0001\u0000\u0000\u0000\u0241\u01f7\u0001\u0000\u0000\u0000\u0241\u01f8"+ - "\u0001\u0000\u0000\u0000\u0241\u020e\u0001\u0000\u0000\u0000\u0241\u0220"+ - "\u0001\u0000\u0000\u0000\u0241\u0227\u0001\u0000\u0000\u0000\u0241\u022f"+ - "\u0001\u0000\u0000\u0000\u0241\u0234\u0001\u0000\u0000\u0000\u0242\u0005"+ - "\u0001\u0000\u0000\u0000\u0243\u0245\u0003\u00c2a\u0000\u0244\u0243\u0001"+ - "\u0000\u0000\u0000\u0244\u0245\u0001\u0000\u0000\u0000\u0245\u0246\u0001"+ - "\u0000\u0000\u0000\u0246\u0248\u0003\u00e4r\u0000\u0247\u0249\u0003\u00e2"+ - "q\u0000\u0248\u0247\u0001\u0000\u0000\u0000\u0248\u0249\u0001\u0000\u0000"+ - "\u0000\u0249\u0260\u0001\u0000\u0000\u0000\u024a\u0260\u0003\u0010\b\u0000"+ - "\u024b\u0260\u0003\u0012\t\u0000\u024c\u0260\u0003\u0014\n\u0000\u024d"+ - "\u0260\u0003\n\u0005\u0000\u024e\u0260\u0003\f\u0006\u0000\u024f\u0260"+ - "\u0003\u000e\u0007\u0000\u0250\u0260\u0003>\u001f\u0000\u0251\u0260\u0003"+ - "\u009cN\u0000\u0252\u0260\u0003\u0016\u000b\u0000\u0253\u0260\u0003\u0084"+ - "B\u0000\u0254\u0260\u0003\u0090H\u0000\u0255\u0260\u0003<\u001e\u0000"+ - "\u0256\u0260\u0003\u0018\f\u0000\u0257\u0260\u0003\u001a\r\u0000\u0258"+ - "\u0260\u0003D\"\u0000\u0259\u0260\u0003J%\u0000\u025a\u0260\u0003H$\u0000"+ - "\u025b\u0260\u0003\u0092I\u0000\u025c\u0260\u0003\u001c\u000e\u0000\u025d"+ - "\u0260\u0003l6\u0000\u025e\u0260\u0003\b\u0004\u0000\u025f\u0244\u0001"+ - "\u0000\u0000\u0000\u025f\u024a\u0001\u0000\u0000\u0000\u025f\u024b\u0001"+ - "\u0000\u0000\u0000\u025f\u024c\u0001\u0000\u0000\u0000\u025f\u024d\u0001"+ - "\u0000\u0000\u0000\u025f\u024e\u0001\u0000\u0000\u0000\u025f\u024f\u0001"+ - "\u0000\u0000\u0000\u025f\u0250\u0001\u0000\u0000\u0000\u025f\u0251\u0001"+ - "\u0000\u0000\u0000\u025f\u0252\u0001\u0000\u0000\u0000\u025f\u0253\u0001"+ - "\u0000\u0000\u0000\u025f\u0254\u0001\u0000\u0000\u0000\u025f\u0255\u0001"+ - "\u0000\u0000\u0000\u025f\u0256\u0001\u0000\u0000\u0000\u025f\u0257\u0001"+ - "\u0000\u0000\u0000\u025f\u0258\u0001\u0000\u0000\u0000\u025f\u0259\u0001"+ - "\u0000\u0000\u0000\u025f\u025a\u0001\u0000\u0000\u0000\u025f\u025b\u0001"+ - "\u0000\u0000\u0000\u025f\u025c\u0001\u0000\u0000\u0000\u025f\u025d\u0001"+ - "\u0000\u0000\u0000\u025f\u025e\u0001\u0000\u0000\u0000\u0260\u0007\u0001"+ - "\u0000\u0000\u0000\u0261\u0272\u0003\u0094J\u0000\u0262\u0272\u0003\u0096"+ - "K\u0000\u0263\u0272\u0003\u009aM\u0000\u0264\u0272\u0003r9\u0000\u0265"+ - "\u0272\u0003j5\u0000\u0266\u0272\u0003n7\u0000\u0267\u0272\u0003Z-\u0000"+ - "\u0268\u0272\u0003T*\u0000\u0269\u0272\u0003L&\u0000\u026a\u0272\u0003"+ - "R)\u0000\u026b\u0272\u0003F#\u0000\u026c\u0272\u0003B!\u0000\u026d\u0272"+ - "\u0003@ \u0000\u026e\u0272\u0003(\u0014\u0000\u026f\u0272\u0003$\u0012"+ - "\u0000\u0270\u0272\u0003\u001e\u000f\u0000\u0271\u0261\u0001\u0000\u0000"+ - "\u0000\u0271\u0262\u0001\u0000\u0000\u0000\u0271\u0263\u0001\u0000\u0000"+ - "\u0000\u0271\u0264\u0001\u0000\u0000\u0000\u0271\u0265\u0001\u0000\u0000"+ - "\u0000\u0271\u0266\u0001\u0000\u0000\u0000\u0271\u0267\u0001\u0000\u0000"+ - "\u0000\u0271\u0268\u0001\u0000\u0000\u0000\u0271\u0269\u0001\u0000\u0000"+ - "\u0000\u0271\u026a\u0001\u0000\u0000\u0000\u0271\u026b\u0001\u0000\u0000"+ - "\u0000\u0271\u026c\u0001\u0000\u0000\u0000\u0271\u026d\u0001\u0000\u0000"+ - "\u0000\u0271\u026e\u0001\u0000\u0000\u0000\u0271\u026f\u0001\u0000\u0000"+ - "\u0000\u0271\u0270\u0001\u0000\u0000\u0000\u0272\t\u0001\u0000\u0000\u0000"+ - "\u0273\u0274\u0005c\u0000\u0000\u0274\u0275\u0005\u0118\u0000\u0000\u0275"+ - "\u0279\u0005\u01e9\u0000\u0000\u0276\u0277\u0005\u00d6\u0000\u0000\u0277"+ - "\u0278\u0005\u012f\u0000\u0000\u0278\u027a\u0005\u00a4\u0000\u0000\u0279"+ - "\u0276\u0001\u0000\u0000\u0000\u0279\u027a\u0001\u0000\u0000\u0000\u027a"+ - "\u027b\u0001\u0000\u0000\u0000\u027b\u0280\u0003\u0146\u00a3\u0000\u027c"+ - "\u027d\u0005\u0002\u0000\u0000\u027d\u027e\u0003\u0148\u00a4\u0000\u027e"+ - "\u027f\u0005\u0003\u0000\u0000\u027f\u0281\u0001\u0000\u0000\u0000\u0280"+ - "\u027c\u0001\u0000\u0000\u0000\u0280\u0281\u0001\u0000\u0000\u0000\u0281"+ - "\u0283\u0001\u0000\u0000\u0000\u0282\u0284\u0003\u00acV\u0000\u0283\u0282"+ - "\u0001\u0000\u0000\u0000\u0283\u0284\u0001\u0000\u0000\u0000\u0284\u028c"+ - "\u0001\u0000\u0000\u0000\u0285\u0287\u0005\u016f\u0000\u0000\u0286\u0288"+ - "\u0003\u00b2Y\u0000\u0287\u0286\u0001\u0000\u0000\u0000\u0287\u0288\u0001"+ - "\u0000\u0000\u0000\u0288\u028a\u0001\u0000\u0000\u0000\u0289\u028b\u0003"+ - "\u00aeW\u0000\u028a\u0289\u0001\u0000\u0000\u0000\u028a\u028b\u0001\u0000"+ - "\u0000\u0000\u028b\u028d\u0001\u0000\u0000\u0000\u028c\u0285\u0001\u0000"+ - "\u0000\u0000\u028c\u028d\u0001\u0000\u0000\u0000\u028d\u0293\u0001\u0000"+ - "\u0000\u0000\u028e\u0290\u0005\u0092\u0000\u0000\u028f\u028e\u0001\u0000"+ - "\u0000\u0000\u028f\u0290\u0001\u0000\u0000\u0000\u0290\u0291\u0001\u0000"+ - "\u0000\u0000\u0291\u0292\u0005\u00f4\u0000\u0000\u0292\u0294\u0003\u0130"+ - "\u0098\u0000\u0293\u028f\u0001\u0000\u0000\u0000\u0293\u0294\u0001\u0000"+ - "\u0000\u0000\u0294\u0297\u0001\u0000\u0000\u0000\u0295\u0296\u0005Q\u0000"+ - "\u0000\u0296\u0298\u0005\u0211\u0000\u0000\u0297\u0295\u0001\u0000\u0000"+ - "\u0000\u0297\u0298\u0001\u0000\u0000\u0000\u0298\u029f\u0001\u0000\u0000"+ - "\u0000\u0299\u029a\u0005\u0141\u0000\u0000\u029a\u029b\u0005;\u0000\u0000"+ - "\u029b\u029c\u0005\u0002\u0000\u0000\u029c\u029d\u0003\u00b4Z\u0000\u029d"+ - "\u029e\u0005\u0003\u0000\u0000\u029e\u02a0\u0001\u0000\u0000\u0000\u029f"+ - "\u0299\u0001\u0000\u0000\u0000\u029f\u02a0\u0001\u0000\u0000\u0000\u02a0"+ - "\u02ac\u0001\u0000\u0000\u0000\u02a1\u02a2\u0005\u0088\u0000\u0000\u02a2"+ - "\u02a6\u0005;\u0000\u0000\u02a3\u02a4\u0005\u00ca\u0000\u0000\u02a4\u02a7"+ - "\u0003\u0130\u0098\u0000\u02a5\u02a7\u0005\u0167\u0000\u0000\u02a6\u02a3"+ - "\u0001\u0000\u0000\u0000\u02a6\u02a5\u0001\u0000\u0000\u0000\u02a7\u02aa"+ - "\u0001\u0000\u0000\u0000\u02a8\u02a9\u00057\u0000\u0000\u02a9\u02ab\u0007"+ - "\u0003\u0000\u0000\u02aa\u02a8\u0001\u0000\u0000\u0000\u02aa\u02ab\u0001"+ - "\u0000\u0000\u0000\u02ab\u02ad\u0001\u0000\u0000\u0000\u02ac\u02a1\u0001"+ - "\u0000\u0000\u0000\u02ac\u02ad\u0001\u0000\u0000\u0000\u02ad\u02af\u0001"+ - "\u0000\u0000\u0000\u02ae\u02b0\u0003\u013a\u009d\u0000\u02af\u02ae\u0001"+ - "\u0000\u0000\u0000\u02af\u02b0\u0001\u0000\u0000\u0000\u02b0\u02b1\u0001"+ - "\u0000\u0000\u0000\u02b1\u02b2\u0005\u001c\u0000\u0000\u02b2\u02b3\u0003"+ - "\u00e4r\u0000\u02b3\u02ff\u0001\u0000\u0000\u0000\u02b4\u02b5\u0005\u016f"+ - "\u0000\u0000\u02b5\u02b6\u0005\u0118\u0000\u0000\u02b6\u02b7\u0005\u01e9"+ - "\u0000\u0000\u02b7\u02bb\u0003\u0146\u00a3\u0000\u02b8\u02bc\u0003\u00a0"+ - "P\u0000\u02b9\u02bc\u0005U\u0000\u0000\u02ba\u02bc\u0005 \u0000\u0000"+ - "\u02bb\u02b8\u0001\u0000\u0000\u0000\u02bb\u02b9\u0001\u0000\u0000\u0000"+ - "\u02bb\u02ba\u0001\u0000\u0000\u0000\u02bc\u02ff\u0001\u0000\u0000\u0000"+ - "\u02bd\u02be\u0005\u0015\u0000\u0000\u02be\u02bf\u0005\u0118\u0000\u0000"+ - "\u02bf\u02c0\u0005\u01e9\u0000\u0000\u02c0\u02d8\u0003\u0146\u00a3\u0000"+ - "\u02c1\u02c2\u0005\u0173\u0000\u0000\u02c2\u02d9\u0003\u01c0\u00e0\u0000"+ - "\u02c3\u02c9\u0005\u016f\u0000\u0000\u02c4\u02ca\u0003\u00b2Y\u0000\u02c5"+ - "\u02ca\u0003\u00aeW\u0000\u02c6\u02c7\u0003\u00b2Y\u0000\u02c7\u02c8\u0003"+ - "\u00aeW\u0000\u02c8\u02ca\u0001\u0000\u0000\u0000\u02c9\u02c4\u0001\u0000"+ - "\u0000\u0000\u02c9\u02c5\u0001\u0000\u0000\u0000\u02c9\u02c6\u0001\u0000"+ - "\u0000\u0000\u02ca\u02d9\u0001\u0000\u0000\u0000\u02cb\u02cc\u0005\u0176"+ - "\u0000\u0000\u02cc\u02cd\u0005\u01f1\u0000\u0000\u02cd\u02ce\u0005\u0118"+ - "\u0000\u0000\u02ce\u02cf\u0005\u01e9\u0000\u0000\u02cf\u02d1\u0003\u01c0"+ - "\u00e0\u0000\u02d0\u02d2\u0003\u013a\u009d\u0000\u02d1\u02d0\u0001\u0000"+ - "\u0000\u0000\u02d1\u02d2\u0001\u0000\u0000\u0000\u02d2\u02d9\u0001\u0000"+ - "\u0000\u0000\u02d3\u02d4\u0005\u0199\u0000\u0000\u02d4\u02d5\u0005\u0002"+ - "\u0000\u0000\u02d5\u02d6\u0003\u013c\u009e\u0000\u02d6\u02d7\u0005\u0003"+ - "\u0000\u0000\u02d7\u02d9\u0001\u0000\u0000\u0000\u02d8\u02c1\u0001\u0000"+ - "\u0000\u0000\u02d8\u02c3\u0001\u0000\u0000\u0000\u02d8\u02cb\u0001\u0000"+ - "\u0000\u0000\u02d8\u02d3\u0001\u0000\u0000\u0000\u02d9\u02ff\u0001\u0000"+ - "\u0000\u0000\u02da\u02db\u0005\u008e\u0000\u0000\u02db\u02dc\u0005\u0118"+ - "\u0000\u0000\u02dc\u02df\u0005\u01e9\u0000\u0000\u02dd\u02de\u0005\u00d6"+ - "\u0000\u0000\u02de\u02e0\u0005\u00a4\u0000\u0000\u02df\u02dd\u0001\u0000"+ - "\u0000\u0000\u02df\u02e0\u0001\u0000\u0000\u0000\u02e0\u02e1\u0001\u0000"+ - "\u0000\u0000\u02e1\u02e4\u0003\u0146\u00a3\u0000\u02e2\u02e3\u0005\u0135"+ - "\u0000\u0000\u02e3\u02e5\u0003\u0146\u00a3\u0000\u02e4\u02e2\u0001\u0000"+ - "\u0000\u0000\u02e4\u02e5\u0001\u0000\u0000\u0000\u02e5\u02ff\u0001\u0000"+ - "\u0000\u0000\u02e6\u02e7\u0005\u0149\u0000\u0000\u02e7\u02e8\u0005\u0118"+ - "\u0000\u0000\u02e8\u02e9\u0005\u01e9\u0000\u0000\u02e9\u02ea\u0005\u00ef"+ - "\u0000\u0000\u02ea\u02eb\u0005\u0135\u0000\u0000\u02eb\u02ff\u0003\u0146"+ - "\u00a3\u0000\u02ec\u02ed\u0005\u0180\u0000\u0000\u02ed\u02ee\u0005\u0118"+ - "\u0000\u0000\u02ee\u02ef\u0005\u01e9\u0000\u0000\u02ef\u02f0\u0005\u00ef"+ - "\u0000\u0000\u02f0\u02f1\u0005\u0135\u0000\u0000\u02f1\u02ff\u0003\u0146"+ - "\u00a3\u0000\u02f2\u02f3\u0005?\u0000\u0000\u02f3\u02f4\u0005\u0118\u0000"+ - "\u0000\u02f4\u02f5\u0005\u01e9\u0000\u0000\u02f5\u02f6\u0005\u01bc\u0000"+ - "\u0000\u02f6\u02f7\u0005\u0216\u0000\u0000\u02f7\u02f8\u0005\u0135\u0000"+ - "\u0000\u02f8\u02ff\u0003\u0146\u00a3\u0000\u02f9\u02fa\u0005\u019d\u0000"+ - "\u0000\u02fa\u02fb\u0005c\u0000\u0000\u02fb\u02fc\u0005\u0118\u0000\u0000"+ - "\u02fc\u02fd\u0005\u01e9\u0000\u0000\u02fd\u02ff\u0003\u0146\u00a3\u0000"+ - "\u02fe\u0273\u0001\u0000\u0000\u0000\u02fe\u02b4\u0001\u0000\u0000\u0000"+ - "\u02fe\u02bd\u0001\u0000\u0000\u0000\u02fe\u02da\u0001\u0000\u0000\u0000"+ - "\u02fe\u02e6\u0001\u0000\u0000\u0000\u02fe\u02ec\u0001\u0000\u0000\u0000"+ - "\u02fe\u02f2\u0001\u0000\u0000\u0000\u02fe\u02f9\u0001\u0000\u0000\u0000"+ - "\u02ff\u000b\u0001\u0000\u0000\u0000\u0300\u0301\u0005c\u0000\u0000\u0301"+ - "\u0302\u0005\u00ef\u0000\u0000\u0302\u0303\u0003\u0146\u00a3\u0000\u0303"+ - "\u0304\u0005\u0135\u0000\u0000\u0304\u0318\u0005\u018f\u0000\u0000\u0305"+ - "\u0306\u0005\u00a0\u0000\u0000\u0306\u0307\u0005\u0216\u0000\u0000\u0307"+ - "\u030d\u0003\u01c0\u00e0\u0000\u0308\u030b\u0005\u01a9\u0000\u0000\u0309"+ - "\u030c\u0005\u0211\u0000\u0000\u030a\u030c\u0005l\u0000\u0000\u030b\u0309"+ - "\u0001\u0000\u0000\u0000\u030b\u030a\u0001\u0000\u0000\u0000\u030c\u030e"+ - "\u0001\u0000\u0000\u0000\u030d\u0308\u0001\u0000\u0000\u0000\u030d\u030e"+ - "\u0001\u0000\u0000\u0000\u030e\u0311\u0001\u0000\u0000\u0000\u030f\u0310"+ - "\u0005\u009a\u0000\u0000\u0310\u0312\u0005\u0211\u0000\u0000\u0311\u030f"+ - "\u0001\u0000\u0000\u0000\u0311\u0312\u0001\u0000\u0000\u0000\u0312\u0319"+ - "\u0001\u0000\u0000\u0000\u0313\u0316\u0005\u001e\u0000\u0000\u0314\u0317"+ - "\u0005\u0211\u0000\u0000\u0315\u0317\u0005l\u0000\u0000\u0316\u0314\u0001"+ - "\u0000\u0000\u0000\u0316\u0315\u0001\u0000\u0000\u0000\u0317\u0319\u0001"+ - "\u0000\u0000\u0000\u0318\u0305\u0001\u0000\u0000\u0000\u0318\u0313\u0001"+ - "\u0000\u0000\u0000\u0319\u031b\u0001\u0000\u0000\u0000\u031a\u031c\u0003"+ - "\u01b4\u00da\u0000\u031b\u031a\u0001\u0000\u0000\u0000\u031b\u031c\u0001"+ - "\u0000\u0000\u0000\u031c\u031d\u0001\u0000\u0000\u0000\u031d\u031e\u0005"+ - "\u008b\u0000\u0000\u031e\u031f\u0003\u0010\b\u0000\u031f\u0339\u0001\u0000"+ - "\u0000\u0000\u0320\u0321\u0005\u0149\u0000\u0000\u0321\u0323\u0005\u00ef"+ - "\u0000\u0000\u0322\u0324\u0003P(\u0000\u0323\u0322\u0001\u0000\u0000\u0000"+ - "\u0323\u0324\u0001\u0000\u0000\u0000\u0324\u0339\u0001\u0000\u0000\u0000"+ - "\u0325\u0326\u0005\u008e\u0000\u0000\u0326\u0329\u0005\u00ef\u0000\u0000"+ - "\u0327\u0328\u0005\u00d6\u0000\u0000\u0328\u032a\u0005\u00a4\u0000\u0000"+ - "\u0329\u0327\u0001\u0000\u0000\u0000\u0329\u032a\u0001\u0000\u0000\u0000"+ - "\u032a\u032c\u0001\u0000\u0000\u0000\u032b\u032d\u0003P(\u0000\u032c\u032b"+ - "\u0001\u0000\u0000\u0000\u032c\u032d\u0001\u0000\u0000\u0000\u032d\u0339"+ - "\u0001\u0000\u0000\u0000\u032e\u032f\u0005\u0180\u0000\u0000\u032f\u0331"+ - "\u0005\u00ef\u0000\u0000\u0330\u0332\u0003P(\u0000\u0331\u0330\u0001\u0000"+ - "\u0000\u0000\u0331\u0332\u0001\u0000\u0000\u0000\u0332\u0339\u0001\u0000"+ - "\u0000\u0000\u0333\u0334\u0005?\u0000\u0000\u0334\u0336\u0005\u01bc\u0000"+ - "\u0000\u0335\u0337\u0003P(\u0000\u0336\u0335\u0001\u0000\u0000\u0000\u0336"+ - "\u0337\u0001\u0000\u0000\u0000\u0337\u0339\u0001\u0000\u0000\u0000\u0338"+ - "\u0300\u0001\u0000\u0000\u0000\u0338\u0320\u0001\u0000\u0000\u0000\u0338"+ - "\u0325\u0001\u0000\u0000\u0000\u0338\u032e\u0001\u0000\u0000\u0000\u0338"+ - "\u0333\u0001\u0000\u0000\u0000\u0339\r\u0001\u0000\u0000\u0000\u033a\u033b"+ - "\u0005\u0015\u0000\u0000\u033b\u033c\u0005\u01b7\u0000\u0000\u033c\u033d"+ - "\u0003\u0146\u00a3\u0000\u033d\u033e\u0005\u000e\u0000\u0000\u033e\u033f"+ - "\u0005]\u0000\u0000\u033f\u0340\u0003\u01bc\u00de\u0000\u0340\u0341\u0003"+ - "\u009eO\u0000\u0341\u034e\u0001\u0000\u0000\u0000\u0342\u0343\u0005\u0015"+ - "\u0000\u0000\u0343\u0344\u0005\u01b7\u0000\u0000\u0344\u0345\u0003\u0146"+ - "\u00a3\u0000\u0345\u0346\u0005\u008e\u0000\u0000\u0346\u0347\u0005]\u0000"+ - "\u0000\u0347\u0348\u0003\u01bc\u00de\u0000\u0348\u034e\u0001\u0000\u0000"+ - "\u0000\u0349\u034a\u0005\u019d\u0000\u0000\u034a\u034b\u0005^\u0000\u0000"+ - "\u034b\u034c\u0005\u00bb\u0000\u0000\u034c\u034e\u0003\u0146\u00a3\u0000"+ - "\u034d\u033a\u0001\u0000\u0000\u0000\u034d\u0342\u0001\u0000\u0000\u0000"+ - "\u034d\u0349\u0001\u0000\u0000\u0000\u034e\u000f\u0001\u0000\u0000\u0000"+ - "\u034f\u0351\u0003\u00c2a\u0000\u0350\u034f\u0001\u0000\u0000\u0000\u0350"+ - "\u0351\u0001\u0000\u0000\u0000\u0351\u0353\u0001\u0000\u0000\u0000\u0352"+ - "\u0354\u0003\u00eew\u0000\u0353\u0352\u0001\u0000\u0000\u0000\u0353\u0354"+ - "\u0001\u0000\u0000\u0000\u0354\u0355\u0001\u0000\u0000\u0000\u0355\u0359"+ - "\u0005\u00df\u0000\u0000\u0356\u035a\u0005\u00e6\u0000\u0000\u0357\u0358"+ - "\u0005\u013e\u0000\u0000\u0358\u035a\u0005\u01b7\u0000\u0000\u0359\u0356"+ - "\u0001\u0000\u0000\u0000\u0359\u0357\u0001\u0000\u0000\u0000\u035a\u0360"+ - "\u0001\u0000\u0000\u0000\u035b\u0361\u0003\u0146\u00a3\u0000\u035c\u035d"+ - "\u0005\u008c\u0000\u0000\u035d\u035e\u0005\u0002\u0000\u0000\u035e\u035f"+ - "\u0005\u0216\u0000\u0000\u035f\u0361\u0005\u0003\u0000\u0000\u0360\u035b"+ - "\u0001\u0000\u0000\u0000\u0360\u035c\u0001\u0000\u0000\u0000\u0361\u0363"+ - "\u0001\u0000\u0000\u0000\u0362\u0364\u0003\u00a0P\u0000\u0363\u0362\u0001"+ - "\u0000\u0000\u0000\u0363\u0364\u0001\u0000\u0000\u0000\u0364\u0368\u0001"+ - "\u0000\u0000\u0000\u0365\u0366\u0005\u01f1\u0000\u0000\u0366\u0367\u0005"+ - "\u00f7\u0000\u0000\u0367\u0369\u0003\u01c0\u00e0\u0000\u0368\u0365\u0001"+ - "\u0000\u0000\u0000\u0368\u0369\u0001\u0000\u0000\u0000\u0369\u036b\u0001"+ - "\u0000\u0000\u0000\u036a\u036c\u0003\u0130\u0098\u0000\u036b\u036a\u0001"+ - "\u0000\u0000\u0000\u036b\u036c\u0001\u0000\u0000\u0000\u036c\u0371\u0001"+ - "\u0000\u0000\u0000\u036d\u036e\u0005\u0007\u0000\u0000\u036e\u036f\u0003"+ - "\u0132\u0099\u0000\u036f\u0370\u0005\b\u0000\u0000\u0370\u0372\u0001\u0000"+ - "\u0000\u0000\u0371\u036d\u0001\u0000\u0000\u0000\u0371\u0372\u0001\u0000"+ - "\u0000\u0000\u0372\u0373\u0001\u0000\u0000\u0000\u0373\u03c3\u0003\u00e4"+ - "r\u0000\u0374\u0376\u0003\u00c2a\u0000\u0375\u0374\u0001\u0000\u0000\u0000"+ - "\u0375\u0376\u0001\u0000\u0000\u0000\u0376\u0378\u0001\u0000\u0000\u0000"+ - "\u0377\u0379\u0003\u00eew\u0000\u0378\u0377\u0001\u0000\u0000\u0000\u0378"+ - "\u0379\u0001\u0000\u0000\u0000\u0379\u037a\u0001\u0000\u0000\u0000\u037a"+ - "\u037b\u0005\u01da\u0000\u0000\u037b\u037c\u0003\u0146\u00a3\u0000\u037c"+ - "\u037d\u0003\u0144\u00a2\u0000\u037d\u037e\u0005\u0199\u0000\u0000\u037e"+ - "\u0380\u0003\u011e\u008f\u0000\u037f\u0381\u0003\u00fa}\u0000\u0380\u037f"+ - "\u0001\u0000\u0000\u0000\u0380\u0381\u0001\u0000\u0000\u0000\u0381\u0383"+ - "\u0001\u0000\u0000\u0000\u0382\u0384\u0003\u00f8|\u0000\u0383\u0382\u0001"+ - "\u0000\u0000\u0000\u0383\u0384\u0001\u0000\u0000\u0000\u0384\u03c3\u0001"+ - "\u0000\u0000\u0000\u0385\u0387\u0003\u00c2a\u0000\u0386\u0385\u0001\u0000"+ - "\u0000\u0000\u0386\u0387\u0001\u0000\u0000\u0000\u0387\u0389\u0001\u0000"+ - "\u0000\u0000\u0388\u038a\u0003\u00eew\u0000\u0389\u0388\u0001\u0000\u0000"+ - "\u0000\u0389\u038a\u0001\u0000\u0000\u0000\u038a\u038b\u0001\u0000\u0000"+ - "\u0000\u038b\u038c\u0005~\u0000\u0000\u038c\u038d\u0005\u00bb\u0000\u0000"+ - "\u038d\u038f\u0003\u0146\u00a3\u0000\u038e\u0390\u0003\u00a0P\u0000\u038f"+ - "\u038e\u0001\u0000\u0000\u0000\u038f\u0390\u0001\u0000\u0000\u0000\u0390"+ - "\u0391\u0001\u0000\u0000\u0000\u0391\u0394\u0003\u0144\u00a2\u0000\u0392"+ - "\u0393\u0005\u01de\u0000\u0000\u0393\u0395\u0003\u0102\u0081\u0000\u0394"+ - "\u0392\u0001\u0000\u0000\u0000\u0394\u0395\u0001\u0000\u0000\u0000\u0395"+ - "\u0397\u0001\u0000\u0000\u0000\u0396\u0398\u0003\u00f8|\u0000\u0397\u0396"+ - "\u0001\u0000\u0000\u0000\u0397\u0398\u0001\u0000\u0000\u0000\u0398\u03c3"+ - "\u0001\u0000\u0000\u0000\u0399\u039a\u0005\u0105\u0000\u0000\u039a\u039b"+ - "\u0005\u00f7\u0000\u0000\u039b\u039c\u0003\u0146\u00a3\u0000\u039c\u039d"+ - "\u0005\u0002\u0000\u0000\u039d\u03a2\u0003\u00a8T\u0000\u039e\u039f\u0005"+ - "\u0004\u0000\u0000\u039f\u03a1\u0003\u00a8T\u0000\u03a0\u039e\u0001\u0000"+ - "\u0000\u0000\u03a1\u03a4\u0001\u0000\u0000\u0000\u03a2\u03a0\u0001\u0000"+ - "\u0000\u0000\u03a2\u03a3\u0001\u0000\u0000\u0000\u03a3\u03a5\u0001\u0000"+ - "\u0000\u0000\u03a4\u03a2\u0001\u0000\u0000\u0000\u03a5\u03a7\u0005\u0003"+ - "\u0000\u0000\u03a6\u03a8\u0003\u00dam\u0000\u03a7\u03a6\u0001\u0000\u0000"+ - "\u0000\u03a7\u03a8\u0001\u0000\u0000\u0000\u03a8\u03aa\u0001\u0000\u0000"+ - "\u0000\u03a9\u03ab\u0003\u013a\u009d\u0000\u03aa\u03a9\u0001\u0000\u0000"+ - "\u0000\u03aa\u03ab\u0001\u0000\u0000\u0000\u03ab\u03ad\u0001\u0000\u0000"+ - "\u0000\u03ac\u03ae\u0003\u01b4\u00da\u0000\u03ad\u03ac\u0001\u0000\u0000"+ - "\u0000\u03ad\u03ae\u0001\u0000\u0000\u0000\u03ae\u03c3\u0001\u0000\u0000"+ - "\u0000\u03af\u03b0\u0005\u00a7\u0000\u0000\u03b0\u03b1\u0005\u01b7\u0000"+ - "\u0000\u03b1\u03b4\u0003\u0146\u00a3\u0000\u03b2\u03b3\u0005\u0141\u0000"+ - "\u0000\u03b3\u03b5\u0003\u0130\u0098\u0000\u03b4\u03b2\u0001\u0000\u0000"+ - "\u0000\u03b4\u03b5\u0001\u0000\u0000\u0000\u03b5\u03b7\u0001\u0000\u0000"+ - "\u0000\u03b6\u03b8\u0003\u00f8|\u0000\u03b7\u03b6\u0001\u0000\u0000\u0000"+ - "\u03b7\u03b8\u0001\u0000\u0000\u0000\u03b8\u03b9\u0001\u0000\u0000\u0000"+ - "\u03b9\u03ba\u0005\u01c6\u0000\u0000\u03ba\u03bc\u0005\u0211\u0000\u0000"+ - "\u03bb\u03bd\u0003\u013a\u009d\u0000\u03bc\u03bb\u0001\u0000\u0000\u0000"+ - "\u03bc\u03bd\u0001\u0000\u0000\u0000\u03bd\u03bf\u0001\u0000\u0000\u0000"+ - "\u03be\u03c0\u0003\u00dam\u0000\u03bf\u03be\u0001\u0000\u0000\u0000\u03bf"+ - "\u03c0\u0001\u0000\u0000\u0000\u03c0\u03c3\u0001\u0000\u0000\u0000\u03c1"+ - "\u03c3\u0003\u00c8d\u0000\u03c2\u0350\u0001\u0000\u0000\u0000\u03c2\u0375"+ - "\u0001\u0000\u0000\u0000\u03c2\u0386\u0001\u0000\u0000\u0000\u03c2\u0399"+ - "\u0001\u0000\u0000\u0000\u03c2\u03af\u0001\u0000\u0000\u0000\u03c2\u03c1"+ - "\u0001\u0000\u0000\u0000\u03c3\u0011\u0001\u0000\u0000\u0000\u03c4\u03c6"+ - "\u0005c\u0000\u0000\u03c5\u03c7\u0007\u0004\u0000\u0000\u03c6\u03c5\u0001"+ - "\u0000\u0000\u0000\u03c6\u03c7\u0001\u0000\u0000\u0000\u03c7\u03c8\u0001"+ - "\u0000\u0000\u0000\u03c8\u03cc\u0005\u01b7\u0000\u0000\u03c9\u03ca\u0005"+ - "\u00d6\u0000\u0000\u03ca\u03cb\u0005\u012f\u0000\u0000\u03cb\u03cd\u0005"+ - "\u00a4\u0000\u0000\u03cc\u03c9\u0001\u0000\u0000\u0000\u03cc\u03cd\u0001"+ - "\u0000\u0000\u0000\u03cd\u03ce\u0001\u0000\u0000\u0000\u03ce\u03dd\u0003"+ - "\u0146\u00a3\u0000\u03cf\u03d1\u0003\u0130\u0098\u0000\u03d0\u03cf\u0001"+ - "\u0000\u0000\u0000\u03d0\u03d1\u0001\u0000\u0000\u0000\u03d1\u03de\u0001"+ - "\u0000\u0000\u0000\u03d2\u03d3\u0005\u0002\u0000\u0000\u03d3\u03d6\u0003"+ - "\u014c\u00a6\u0000\u03d4\u03d5\u0005\u0004\u0000\u0000\u03d5\u03d7\u0003"+ - "\u0150\u00a8\u0000\u03d6\u03d4\u0001\u0000\u0000\u0000\u03d6\u03d7\u0001"+ - "\u0000\u0000\u0000\u03d7\u03d9\u0001\u0000\u0000\u0000\u03d8\u03da\u0005"+ - "\u0004\u0000\u0000\u03d9\u03d8\u0001\u0000\u0000\u0000\u03d9\u03da\u0001"+ - "\u0000\u0000\u0000\u03da\u03db\u0001\u0000\u0000\u0000\u03db\u03dc\u0005"+ - "\u0003\u0000\u0000\u03dc\u03de\u0001\u0000\u0000\u0000\u03dd\u03d0\u0001"+ - "\u0000\u0000\u0000\u03dd\u03d2\u0001\u0000\u0000\u0000\u03de\u03e2\u0001"+ - "\u0000\u0000\u0000\u03df\u03e0\u0005\u009b\u0000\u0000\u03e0\u03e1\u0005"+ - "\u01f7\u0000\u0000\u03e1\u03e3\u0003\u01c0\u00e0\u0000\u03e2\u03df\u0001"+ - "\u0000\u0000\u0000\u03e2\u03e3\u0001\u0000\u0000\u0000\u03e3\u03ec\u0001"+ - "\u0000\u0000\u0000\u03e4\u03e5\u0007\u0005\u0000\u0000\u03e5\u03e6\u0005"+ - "\u00f4\u0000\u0000\u03e6\u03ea\u0003\u0130\u0098\u0000\u03e7\u03e8\u0005"+ - "I\u0000\u0000\u03e8\u03e9\u0005;\u0000\u0000\u03e9\u03eb\u0003\u0130\u0098"+ - "\u0000\u03ea\u03e7\u0001\u0000\u0000\u0000\u03ea\u03eb\u0001\u0000\u0000"+ - "\u0000\u03eb\u03ed\u0001\u0000\u0000\u0000\u03ec\u03e4\u0001\u0000\u0000"+ - "\u0000\u03ec\u03ed\u0001\u0000\u0000\u0000\u03ed\u03f0\u0001\u0000\u0000"+ - "\u0000\u03ee\u03ef\u0005Q\u0000\u0000\u03ef\u03f1\u0005\u0211\u0000\u0000"+ - "\u03f0\u03ee\u0001\u0000\u0000\u0000\u03f0\u03f1\u0001\u0000\u0000\u0000"+ - "\u03f1\u03f3\u0001\u0000\u0000\u0000\u03f2\u03f4\u0003\u00a2Q\u0000\u03f3"+ - "\u03f2\u0001\u0000\u0000\u0000\u03f3\u03f4\u0001\u0000\u0000\u0000\u03f4"+ - "\u0403\u0001\u0000\u0000\u0000\u03f5\u03f6\u0005\u0088\u0000\u0000\u03f6"+ - "\u03fa\u0005;\u0000\u0000\u03f7\u03f8\u0005\u00ca\u0000\u0000\u03f8\u03fb"+ - "\u0003\u0130\u0098\u0000\u03f9\u03fb\u0005\u0167\u0000\u0000\u03fa\u03f7"+ - "\u0001\u0000\u0000\u0000\u03fa\u03f9\u0001\u0000\u0000\u0000\u03fb\u0401"+ - "\u0001\u0000\u0000\u0000\u03fc\u03ff\u00057\u0000\u0000\u03fd\u0400\u0005"+ - "\u0216\u0000\u0000\u03fe\u0400\u0005 \u0000\u0000\u03ff\u03fd\u0001\u0000"+ - "\u0000\u0000\u03ff\u03fe\u0001\u0000\u0000\u0000\u0400\u0402\u0001\u0000"+ - "\u0000\u0000\u0401\u03fc\u0001\u0000\u0000\u0000\u0401\u0402\u0001\u0000"+ - "\u0000\u0000\u0402\u0404\u0001\u0000\u0000\u0000\u0403\u03f5\u0001\u0000"+ - "\u0000\u0000\u0403\u0404\u0001\u0000\u0000\u0000\u0404\u040a\u0001\u0000"+ - "\u0000\u0000\u0405\u0406\u0005\u0189\u0000\u0000\u0406\u0407\u0005\u0002"+ - "\u0000\u0000\u0407\u0408\u0003\u0164\u00b2\u0000\u0408\u0409\u0005\u0003"+ - "\u0000\u0000\u0409\u040b\u0001\u0000\u0000\u0000\u040a\u0405\u0001\u0000"+ - "\u0000\u0000\u040a\u040b\u0001\u0000\u0000\u0000\u040b\u040d\u0001\u0000"+ - "\u0000\u0000\u040c\u040e\u0003\u013a\u009d\u0000\u040d\u040c\u0001\u0000"+ - "\u0000\u0000\u040d\u040e\u0001\u0000\u0000\u0000\u040e\u0411\u0001\u0000"+ - "\u0000\u0000\u040f\u0410\u00056\u0000\u0000\u0410\u0412\u0003\u013a\u009d"+ - "\u0000\u0411\u040f\u0001\u0000\u0000\u0000\u0411\u0412\u0001\u0000\u0000"+ - "\u0000\u0412\u0415\u0001\u0000\u0000\u0000\u0413\u0414\u0005\u001c\u0000"+ - "\u0000\u0414\u0416\u0003\u00e4r\u0000\u0415\u0413\u0001\u0000\u0000\u0000"+ - "\u0415\u0416\u0001\u0000\u0000\u0000\u0416\u0508\u0001\u0000\u0000\u0000"+ - "\u0417\u041a\u0005c\u0000\u0000\u0418\u0419\u0005\u0139\u0000\u0000\u0419"+ - "\u041b\u0005\u0176\u0000\u0000\u041a\u0418\u0001\u0000\u0000\u0000\u041a"+ - "\u041b\u0001\u0000\u0000\u0000\u041b\u041c\u0001\u0000\u0000\u0000\u041c"+ - "\u0420\u0005\u01e9\u0000\u0000\u041d\u041e\u0005\u00d6\u0000\u0000\u041e"+ - "\u041f\u0005\u012f\u0000\u0000\u041f\u0421\u0005\u00a4\u0000\u0000\u0420"+ - "\u041d\u0001\u0000\u0000\u0000\u0420\u0421\u0001\u0000\u0000\u0000\u0421"+ - "\u0422\u0001\u0000\u0000\u0000\u0422\u0427\u0003\u0146\u00a3\u0000\u0423"+ - "\u0424\u0005\u0002\u0000\u0000\u0424\u0425\u0003\u0148\u00a4\u0000\u0425"+ - "\u0426\u0005\u0003\u0000\u0000\u0426\u0428\u0001\u0000\u0000\u0000\u0427"+ - "\u0423\u0001\u0000\u0000\u0000\u0427\u0428\u0001\u0000\u0000\u0000\u0428"+ - "\u042b\u0001\u0000\u0000\u0000\u0429\u042a\u0005Q\u0000\u0000\u042a\u042c"+ - "\u0005\u0211\u0000\u0000\u042b\u0429\u0001\u0000\u0000\u0000\u042b\u042c"+ - "\u0001\u0000\u0000\u0000\u042c\u042d\u0001\u0000\u0000\u0000\u042d\u042e"+ - "\u0005\u001c\u0000\u0000\u042e\u042f\u0003\u00e4r\u0000\u042f\u0508\u0001"+ - "\u0000\u0000\u0000\u0430\u0431\u0005c\u0000\u0000\u0431\u0432\u0005\u00b0"+ - "\u0000\u0000\u0432\u0435\u0005\u0211\u0000\u0000\u0433\u0434\u0007\u0006"+ - "\u0000\u0000\u0434\u0436\u0003\u01c0\u00e0\u0000\u0435\u0433\u0001\u0000"+ - "\u0000\u0000\u0435\u0436\u0001\u0000\u0000\u0000\u0436\u0437\u0001\u0000"+ - "\u0000\u0000\u0437\u0508\u0003\u013a\u009d\u0000\u0438\u043a\u0005c\u0000"+ - "\u0000\u0439\u043b\u0007\u0004\u0000\u0000\u043a\u0439\u0001\u0000\u0000"+ - "\u0000\u043a\u043b\u0001\u0000\u0000\u0000\u043b\u043c\u0001\u0000\u0000"+ - "\u0000\u043c\u0440\u0005\u01b7\u0000\u0000\u043d\u043e\u0005\u00d6\u0000"+ - "\u0000\u043e\u043f\u0005\u012f\u0000\u0000\u043f\u0441\u0005\u00a4\u0000"+ - "\u0000\u0440\u043d\u0001\u0000\u0000\u0000\u0440\u0441\u0001\u0000\u0000"+ - "\u0000\u0441\u0442\u0001\u0000\u0000\u0000\u0442\u0443\u0003\u0146\u00a3"+ - "\u0000\u0443\u0444\u0005\u0100\u0000\u0000\u0444\u044a\u0003\u0146\u00a3"+ - "\u0000\u0445\u0446\u0005\u01f1\u0000\u0000\u0446\u0448\u0005\u0189\u0000"+ - "\u0000\u0447\u0449\u0003\u0130\u0098\u0000\u0448\u0447\u0001\u0000\u0000"+ - "\u0000\u0448\u0449\u0001\u0000\u0000\u0000\u0449\u044b\u0001\u0000\u0000"+ - "\u0000\u044a\u0445\u0001\u0000\u0000\u0000\u044a\u044b\u0001\u0000\u0000"+ - "\u0000\u044b\u0508\u0001\u0000\u0000\u0000\u044c\u044d\u0005c\u0000\u0000"+ - "\u044d\u0451\u0005\u0186\u0000\u0000\u044e\u044f\u0005\u00d6\u0000\u0000"+ - "\u044f\u0450\u0005\u012f\u0000\u0000\u0450\u0452\u0005\u00a4\u0000\u0000"+ - "\u0451\u044e\u0001\u0000\u0000\u0000\u0451\u0452\u0001\u0000\u0000\u0000"+ - "\u0452\u0453\u0001\u0000\u0000\u0000\u0453\u0456\u0003\u01c0\u00e0\u0000"+ - "\u0454\u0455\u0005Q\u0000\u0000\u0455\u0457\u0005\u0211\u0000\u0000\u0456"+ - "\u0454\u0001\u0000\u0000\u0000\u0456\u0457\u0001\u0000\u0000\u0000\u0457"+ - "\u0508\u0001\u0000\u0000\u0000\u0458\u0459\u0005c\u0000\u0000\u0459\u045a"+ - "\u0005\u01f3\u0000\u0000\u045a\u045e\u0005\u00c7\u0000\u0000\u045b\u045c"+ - "\u0005\u00d6\u0000\u0000\u045c\u045d\u0005\u012f\u0000\u0000\u045d\u045f"+ - "\u0005\u00a4\u0000\u0000\u045e\u045b\u0001\u0000\u0000\u0000\u045e\u045f"+ - "\u0001\u0000\u0000\u0000\u045f\u0460\u0001\u0000\u0000\u0000\u0460\u0462"+ - "\u0003\u00b6[\u0000\u0461\u0463\u0003\u013a\u009d\u0000\u0462\u0461\u0001"+ - "\u0000\u0000\u0000\u0462\u0463\u0001\u0000\u0000\u0000\u0463\u0508\u0001"+ - "\u0000\u0000\u0000\u0464\u0465\u0005c\u0000\u0000\u0465\u0469\u0005B\u0000"+ - "\u0000\u0466\u0467\u0005\u00d6\u0000\u0000\u0467\u0468\u0005\u012f\u0000"+ - "\u0000\u0468\u046a\u0005\u00a4\u0000\u0000\u0469\u0466\u0001\u0000\u0000"+ - "\u0000\u0469\u046a\u0001\u0000\u0000\u0000\u046a\u046b\u0001\u0000\u0000"+ - "\u0000\u046b\u046f\u0003\u01c0\u00e0\u0000\u046c\u046d\u0005\u01f1\u0000"+ - "\u0000\u046d\u046e\u0005\u017c\u0000\u0000\u046e\u0470\u0003\u01c0\u00e0"+ - "\u0000\u046f\u046c\u0001\u0000\u0000\u0000\u046f\u0470\u0001\u0000\u0000"+ - "\u0000\u0470\u0473\u0001\u0000\u0000\u0000\u0471\u0472\u0005Q\u0000\u0000"+ - "\u0472\u0474\u0005\u0211\u0000\u0000\u0473\u0471\u0001\u0000\u0000\u0000"+ - "\u0473\u0474\u0001\u0000\u0000\u0000\u0474\u0476\u0001\u0000\u0000\u0000"+ - "\u0475\u0477\u0003\u013a\u009d\u0000\u0476\u0475\u0001\u0000\u0000\u0000"+ - "\u0476\u0477\u0001\u0000\u0000\u0000\u0477\u0508\u0001\u0000\u0000\u0000"+ - "\u0478\u0479\u0005c\u0000\u0000\u0479\u047a\u0005\u018b\u0000\u0000\u047a"+ - "\u047e\u0005\u0156\u0000\u0000\u047b\u047c\u0005\u00d6\u0000\u0000\u047c"+ - "\u047d\u0005\u012f\u0000\u0000\u047d\u047f\u0005\u00a4\u0000\u0000\u047e"+ - "\u047b\u0001\u0000\u0000\u0000\u047e\u047f\u0001\u0000\u0000\u0000\u047f"+ - "\u0480\u0001\u0000\u0000\u0000\u0480\u0481\u0003\u01c0\u00e0\u0000\u0481"+ - "\u0482\u0005\u0135\u0000\u0000\u0482\u0483\u0003\u0146\u00a3\u0000\u0483"+ - "\u0484\u0005\u001c\u0000\u0000\u0484\u0485\u0007\u0007\u0000\u0000\u0485"+ - "\u0489\u0005\u01c6\u0000\u0000\u0486\u048a\u0003\u00be_\u0000\u0487\u0488"+ - "\u0005\u0186\u0000\u0000\u0488\u048a\u0003\u01c0\u00e0\u0000\u0489\u0486"+ - "\u0001\u0000\u0000\u0000\u0489\u0487\u0001\u0000\u0000\u0000\u048a\u048b"+ - "\u0001\u0000\u0000\u0000\u048b\u048c\u0005\u01de\u0000\u0000\u048c\u048d"+ - "\u0005\u0002\u0000\u0000\u048d\u048e\u0003\u0176\u00bb\u0000\u048e\u048f"+ - "\u0005\u0003\u0000\u0000\u048f\u0508\u0001\u0000\u0000\u0000\u0490\u0491"+ - "\u0005c\u0000\u0000\u0491\u0492\u0005\u01ad\u0000\u0000\u0492\u0496\u0005"+ - "\u0156\u0000\u0000\u0493\u0494\u0005\u00d6\u0000\u0000\u0494\u0495\u0005"+ - "\u012f\u0000\u0000\u0495\u0497\u0005\u00a4\u0000\u0000\u0496\u0493\u0001"+ - "\u0000\u0000\u0000\u0496\u0497\u0001\u0000\u0000\u0000\u0497\u0498\u0001"+ - "\u0000\u0000\u0000\u0498\u049a\u0003\u01c0\u00e0\u0000\u0499\u049b\u0003"+ - "\u013a\u009d\u0000\u049a\u0499\u0001\u0000\u0000\u0000\u049a\u049b\u0001"+ - "\u0000\u0000\u0000\u049b\u0508\u0001\u0000\u0000\u0000\u049c\u049d\u0005"+ - "8\u0000\u0000\u049d\u049e\u0005\u00db\u0000\u0000\u049e\u049f\u0003\u01c0"+ - "\u00e0\u0000\u049f\u04a0\u0005\u0135\u0000\u0000\u04a0\u04a2\u0003\u0146"+ - "\u00a3\u0000\u04a1\u04a3\u0003\u00a0P\u0000\u04a2\u04a1\u0001\u0000\u0000"+ - "\u0000\u04a2\u04a3\u0001\u0000\u0000\u0000\u04a3\u0508\u0001\u0000\u0000"+ - "\u0000\u04a4\u04a5\u0005c\u0000\u0000\u04a5\u04a9\u0005\u00db\u0000\u0000"+ - "\u04a6\u04a7\u0005\u00d6\u0000\u0000\u04a7\u04a8\u0005\u012f\u0000\u0000"+ - "\u04a8\u04aa\u0005\u00a4\u0000\u0000\u04a9\u04a6\u0001\u0000\u0000\u0000"+ - "\u04a9\u04aa\u0001\u0000\u0000\u0000\u04aa\u04ab\u0001\u0000\u0000\u0000"+ - "\u04ab\u04ac\u0003\u01c0\u00e0\u0000\u04ac\u04ad\u0005\u0135\u0000\u0000"+ - "\u04ad\u04ae\u0003\u0146\u00a3\u0000\u04ae\u04b1\u0003\u0130\u0098\u0000"+ - "\u04af\u04b0\u0005\u01de\u0000\u0000\u04b0\u04b2\u0007\b\u0000\u0000\u04b1"+ - "\u04af\u0001\u0000\u0000\u0000\u04b1\u04b2\u0001\u0000\u0000\u0000\u04b2"+ - "\u04b4\u0001\u0000\u0000\u0000\u04b3\u04b5\u0003\u013a\u009d\u0000\u04b4"+ - "\u04b3\u0001\u0000\u0000\u0000\u04b4\u04b5\u0001\u0000\u0000\u0000\u04b5"+ - "\u04b8\u0001\u0000\u0000\u0000\u04b6\u04b7\u0005Q\u0000\u0000\u04b7\u04b9"+ - "\u0005\u0211\u0000\u0000\u04b8\u04b6\u0001\u0000\u0000\u0000\u04b8\u04b9"+ - "\u0001\u0000\u0000\u0000\u04b9\u0508\u0001\u0000\u0000\u0000\u04ba\u04bb"+ - "\u0005c\u0000\u0000\u04bb\u04bf\u0005\u01a5\u0000\u0000\u04bc\u04bd\u0005"+ - "\u00d6\u0000\u0000\u04bd\u04be\u0005\u012f\u0000\u0000\u04be\u04c0\u0005"+ - "\u00a4\u0000\u0000\u04bf\u04bc\u0001\u0000\u0000\u0000\u04bf\u04c0\u0001"+ - "\u0000\u0000\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000\u04c1\u04c3\u0003"+ - "\u01c0\u00e0\u0000\u04c2\u04c4\u0003\u013a\u009d\u0000\u04c3\u04c2\u0001"+ - "\u0000\u0000\u0000\u04c3\u04c4\u0001\u0000\u0000\u0000\u04c4\u0508\u0001"+ - "\u0000\u0000\u0000\u04c5\u04c6\u0005c\u0000\u0000\u04c6\u04ca\u0005\u0097"+ - "\u0000\u0000\u04c7\u04c8\u0005\u00d6\u0000\u0000\u04c8\u04c9\u0005\u012f"+ - "\u0000\u0000\u04c9\u04cb\u0005\u00a4\u0000\u0000\u04ca\u04c7\u0001\u0000"+ - "\u0000\u0000\u04ca\u04cb\u0001\u0000\u0000\u0000\u04cb\u04cc\u0001\u0000"+ - "\u0000\u0000\u04cc\u04cd\u0003\u0146\u00a3\u0000\u04cd\u04ce\u0005\u001c"+ - "\u0000\u0000\u04ce\u04cf\u0005\u0211\u0000\u0000\u04cf\u0508\u0001\u0000"+ - "\u0000\u0000\u04d0\u04d2\u0005c\u0000\u0000\u04d1\u04d3\u0003\u00aaU\u0000"+ - "\u04d2\u04d1\u0001\u0000\u0000\u0000\u04d2\u04d3\u0001\u0000\u0000\u0000"+ - "\u04d3\u04d5\u0001\u0000\u0000\u0000\u04d4\u04d6\u0007\t\u0000\u0000\u04d5"+ - "\u04d4\u0001\u0000\u0000\u0000\u04d5\u04d6\u0001\u0000\u0000\u0000\u04d6"+ - "\u04d7\u0001\u0000\u0000\u0000\u04d7\u04db\u0005\u00bf\u0000\u0000\u04d8"+ - "\u04d9\u0005\u00d6\u0000\u0000\u04d9\u04da\u0005\u012f\u0000\u0000\u04da"+ - "\u04dc\u0005\u00a4\u0000\u0000\u04db\u04d8\u0001\u0000\u0000\u0000\u04db"+ - "\u04dc\u0001\u0000\u0000\u0000\u04dc\u04dd\u0001\u0000\u0000\u0000\u04dd"+ - "\u04de\u0003\u0188\u00c4\u0000\u04de\u04e0\u0005\u0002\u0000\u0000\u04df"+ - "\u04e1\u0003\u0080@\u0000\u04e0\u04df\u0001\u0000\u0000\u0000\u04e0\u04e1"+ - "\u0001\u0000\u0000\u0000\u04e1\u04e2\u0001\u0000\u0000\u0000\u04e2\u04e3"+ - "\u0005\u0003\u0000\u0000\u04e3\u04e4\u0005\u0181\u0000\u0000\u04e4\u04e7"+ - "\u0003\u01a6\u00d3\u0000\u04e5\u04e6\u0005\u00e3\u0000\u0000\u04e6\u04e8"+ - "\u0003\u01a6\u00d3\u0000\u04e7\u04e5\u0001\u0000\u0000\u0000\u04e7\u04e8"+ - "\u0001\u0000\u0000\u0000\u04e8\u04ea\u0001\u0000\u0000\u0000\u04e9\u04eb"+ - "\u0003\u013a\u009d\u0000\u04ea\u04e9\u0001\u0000\u0000\u0000\u04ea\u04eb"+ - "\u0001\u0000\u0000\u0000\u04eb\u0508\u0001\u0000\u0000\u0000\u04ec\u04ee"+ - "\u0005c\u0000\u0000\u04ed\u04ef\u0003\u00aaU\u0000\u04ee\u04ed\u0001\u0000"+ - "\u0000\u0000\u04ee\u04ef\u0001\u0000\u0000\u0000\u04ef\u04f0\u0001\u0000"+ - "\u0000\u0000\u04f0\u04f1\u0005\u0013\u0000\u0000\u04f1\u04f5\u0005\u00bf"+ - "\u0000\u0000\u04f2\u04f3\u0005\u00d6\u0000\u0000\u04f3\u04f4\u0005\u012f"+ - "\u0000\u0000\u04f4\u04f6\u0005\u00a4\u0000\u0000\u04f5\u04f2\u0001\u0000"+ - "\u0000\u0000\u04f5\u04f6\u0001\u0000\u0000\u0000\u04f6\u04f7\u0001\u0000"+ - "\u0000\u0000\u04f7\u04f8\u0003\u0188\u00c4\u0000\u04f8\u04fa\u0005\u0002"+ - "\u0000\u0000\u04f9\u04fb\u0003\u0080@\u0000\u04fa\u04f9\u0001\u0000\u0000"+ - "\u0000\u04fa\u04fb\u0001\u0000\u0000\u0000\u04fb\u04fc\u0001\u0000\u0000"+ - "\u0000\u04fc\u04fd\u0005\u0003\u0000\u0000\u04fd\u04fe\u0005\u01f1\u0000"+ - "\u0000\u04fe\u04ff\u0005\u013f\u0000\u0000\u04ff\u0501\u0005\u0002\u0000"+ - "\u0000\u0500\u0502\u0003\u0132\u0099\u0000\u0501\u0500\u0001\u0000\u0000"+ - "\u0000\u0501\u0502\u0001\u0000\u0000\u0000\u0502\u0503\u0001\u0000\u0000"+ - "\u0000\u0503\u0504\u0005\u0003\u0000\u0000\u0504\u0505\u0005\u001c\u0000"+ - "\u0000\u0505\u0506\u0003\u0172\u00b9\u0000\u0506\u0508\u0001\u0000\u0000"+ - "\u0000\u0507\u03c4\u0001\u0000\u0000\u0000\u0507\u0417\u0001\u0000\u0000"+ - "\u0000\u0507\u0430\u0001\u0000\u0000\u0000\u0507\u0438\u0001\u0000\u0000"+ - "\u0000\u0507\u044c\u0001\u0000\u0000\u0000\u0507\u0458\u0001\u0000\u0000"+ - "\u0000\u0507\u0464\u0001\u0000\u0000\u0000\u0507\u0478\u0001\u0000\u0000"+ - "\u0000\u0507\u0490\u0001\u0000\u0000\u0000\u0507\u049c\u0001\u0000\u0000"+ - "\u0000\u0507\u04a4\u0001\u0000\u0000\u0000\u0507\u04ba\u0001\u0000\u0000"+ - "\u0000\u0507\u04c5\u0001\u0000\u0000\u0000\u0507\u04d0\u0001\u0000\u0000"+ - "\u0000\u0507\u04ec\u0001\u0000\u0000\u0000\u0508\u0013\u0001\u0000\u0000"+ - "\u0000\u0509\u050a\u0005\u0015\u0000\u0000\u050a\u050b\u0005\u01b6\u0000"+ - "\u0000\u050b\u05a6\u0003\\.\u0000\u050c\u050d\u0005\u0015\u0000\u0000"+ - "\u050d\u050e\u0005\u01e9\u0000\u0000\u050e\u0519\u0003\u0146\u00a3\u0000"+ - "\u050f\u0510\u0005\u0122\u0000\u0000\u0510\u051a\u0003\u01b4\u00da\u0000"+ - "\u0511\u0512\u0005\u0002\u0000\u0000\u0512\u0513\u0003\u0148\u00a4\u0000"+ - "\u0513\u0514\u0005"; - private static final String _serializedATNSegment1 = - "\u0003\u0000\u0000\u0514\u0516\u0001\u0000\u0000\u0000\u0515\u0511\u0001"+ - "\u0000\u0000\u0000\u0515\u0516\u0001\u0000\u0000\u0000\u0516\u0517\u0001"+ - "\u0000\u0000\u0000\u0517\u0518\u0005\u001c\u0000\u0000\u0518\u051a\u0003"+ - "\u00e4r\u0000\u0519\u050f\u0001\u0000\u0000\u0000\u0519\u0515\u0001\u0000"+ - "\u0000\u0000\u051a\u05a6\u0001\u0000\u0000\u0000\u051b\u051c\u0005\u0015"+ - "\u0000\u0000\u051c\u051d\u0005B\u0000\u0000\u051d\u051e\u0003\u01c0\u00e0"+ - "\u0000\u051e\u051f\u0005\u0173\u0000\u0000\u051f\u0520\u0003\u01c0\u00e0"+ - "\u0000\u0520\u05a6\u0001\u0000\u0000\u0000\u0521\u0522\u0005\u0015\u0000"+ - "\u0000\u0522\u0523\u0005\u0186\u0000\u0000\u0523\u0524\u0003\u01c0\u00e0"+ - "\u0000\u0524\u0525\u0003\u01b4\u00da\u0000\u0525\u05a6\u0001\u0000\u0000"+ - "\u0000\u0526\u0527\u0005\u0015\u0000\u0000\u0527\u0528\u0005\u01ad\u0000"+ - "\u0000\u0528\u0529\u0005\u01e5\u0000\u0000\u0529\u052a\u0003\u0146\u00a3"+ - "\u0000\u052a\u052b\u0003\u013a\u009d\u0000\u052b\u05a6\u0001\u0000\u0000"+ - "\u0000\u052c\u052d\u0005\u0015\u0000\u0000\u052d\u052e\u0005\u0186\u0000"+ - "\u0000\u052e\u052f\u0003\u01c0\u00e0\u0000\u052f\u0530\u0003\u01b4\u00da"+ - "\u0000\u0530\u05a6\u0001\u0000\u0000\u0000\u0531\u0532\u0005\u0015\u0000"+ - "\u0000\u0532\u0533\u0005\u01f3\u0000\u0000\u0533\u0534\u0005\u00c7\u0000"+ - "\u0000\u0534\u0536\u0003\u00b6[\u0000\u0535\u0537\u0003\u013a\u009d\u0000"+ - "\u0536\u0535\u0001\u0000\u0000\u0000\u0536\u0537\u0001\u0000\u0000\u0000"+ - "\u0537\u05a6\u0001\u0000\u0000\u0000\u0538\u0539\u0005\u0015\u0000\u0000"+ - "\u0539\u053a\u0005B\u0000\u0000\u053a\u053b\u0003\u01c0\u00e0\u0000\u053b"+ - "\u053c\u0005\u0199\u0000\u0000\u053c\u053d\u0005\u015e\u0000\u0000\u053d"+ - "\u053e\u0005\u0002\u0000\u0000\u053e\u053f\u0003\u013c\u009e\u0000\u053f"+ - "\u0540\u0005\u0003\u0000\u0000\u0540\u05a6\u0001\u0000\u0000\u0000\u0541"+ - "\u0542\u0005\u0015\u0000\u0000\u0542\u0543\u0005\u01f3\u0000\u0000\u0543"+ - "\u0544\u0005\u0156\u0000\u0000\u0544\u0546\u0003\u00b6[\u0000\u0545\u0547"+ - "\u0003\u013a\u009d\u0000\u0546\u0545\u0001\u0000\u0000\u0000\u0546\u0547"+ - "\u0001\u0000\u0000\u0000\u0547\u05a6\u0001\u0000\u0000\u0000\u0548\u0549"+ - "\u0005\u0015\u0000\u0000\u0549\u054a\u0005\u01a5\u0000\u0000\u054a\u054c"+ - "\u0003\u01c0\u00e0\u0000\u054b\u054d\u0003\u013a\u009d\u0000\u054c\u054b"+ - "\u0001\u0000\u0000\u0000\u054c\u054d\u0001\u0000\u0000\u0000\u054d\u05a6"+ - "\u0001\u0000\u0000\u0000\u054e\u054f\u0005\u0015\u0000\u0000\u054f\u0550"+ - "\u0005B\u0000\u0000\u0550\u0551\u0003\u01c0\u00e0\u0000\u0551\u0552\u0005"+ - "\u0122\u0000\u0000\u0552\u0553\u0005Q\u0000\u0000\u0553\u0554\u0005\u0211"+ - "\u0000\u0000\u0554\u05a6\u0001\u0000\u0000\u0000\u0555\u0556\u0005\u0015"+ - "\u0000\u0000\u0556\u0557\u0005o\u0000\u0000\u0557\u0558\u0003\u01c0\u00e0"+ - "\u0000\u0558\u0559\u0005\u0173\u0000\u0000\u0559\u055a\u0003\u01c0\u00e0"+ - "\u0000\u055a\u05a6\u0001\u0000\u0000\u0000\u055b\u055c\u0005\u0015\u0000"+ - "\u0000\u055c\u055d\u0005\u0186\u0000\u0000\u055d\u055e\u0003\u01c0\u00e0"+ - "\u0000\u055e\u055f\u0003\u01b4\u00da\u0000\u055f\u05a6\u0001\u0000\u0000"+ - "\u0000\u0560\u0561\u0005\u0015\u0000\u0000\u0561\u0562\u0005\u01b7\u0000"+ - "\u0000\u0562\u0563\u0003\u0146\u00a3\u0000\u0563\u0568\u0003b1\u0000\u0564"+ - "\u0565\u0005\u0004\u0000\u0000\u0565\u0567\u0003b1\u0000\u0566\u0564\u0001"+ - "\u0000\u0000\u0000\u0567\u056a\u0001\u0000\u0000\u0000\u0568\u0566\u0001"+ - "\u0000\u0000\u0000\u0568\u0569\u0001\u0000\u0000\u0000\u0569\u05a6\u0001"+ - "\u0000\u0000\u0000\u056a\u0568\u0001\u0000\u0000\u0000\u056b\u056c\u0005"+ - "\u0015\u0000\u0000\u056c\u056d\u0005\u01b7\u0000\u0000\u056d\u056e\u0003"+ - "\u0146\u00a3\u0000\u056e\u056f\u0005\u000e\u0000\u0000\u056f\u0570\u0005"+ - "\u0189\u0000\u0000\u0570\u0575\u0003`0\u0000\u0571\u0572\u0005\u0004\u0000"+ - "\u0000\u0572\u0574\u0003`0\u0000\u0573\u0571\u0001\u0000\u0000\u0000\u0574"+ - "\u0577\u0001\u0000\u0000\u0000\u0575\u0573\u0001\u0000\u0000\u0000\u0575"+ - "\u0576\u0001\u0000\u0000\u0000\u0576\u05a6\u0001\u0000\u0000\u0000\u0577"+ - "\u0575\u0001\u0000\u0000\u0000\u0578\u0579\u0005\u0015\u0000\u0000\u0579"+ - "\u057a\u0005\u01b7\u0000\u0000\u057a\u057b\u0003\u0146\u00a3\u0000\u057b"+ - "\u057c\u0005\u008e\u0000\u0000\u057c\u057d\u0005\u0189\u0000\u0000\u057d"+ - "\u0582\u0003^/\u0000\u057e\u057f\u0005\u0004\u0000\u0000\u057f\u0581\u0003"+ - "^/\u0000\u0580\u057e\u0001\u0000\u0000\u0000\u0581\u0584\u0001\u0000\u0000"+ - "\u0000\u0582\u0580\u0001\u0000\u0000\u0000\u0582\u0583\u0001\u0000\u0000"+ - "\u0000\u0583\u05a6\u0001\u0000\u0000\u0000\u0584\u0582\u0001\u0000\u0000"+ - "\u0000\u0585\u0586\u0005\u0015\u0000\u0000\u0586\u0587\u0005\u01b7\u0000"+ - "\u0000\u0587\u0588\u0003\u0146\u00a3\u0000\u0588\u0589\u0005\u0199\u0000"+ - "\u0000\u0589\u058a\u0005\u0002\u0000\u0000\u058a\u058b\u0003\u013c\u009e"+ - "\u0000\u058b\u058c\u0005\u0003\u0000\u0000\u058c\u05a6\u0001\u0000\u0000"+ - "\u0000\u058d\u058e\u0005\u0015\u0000\u0000\u058e\u058f\u0005o\u0000\u0000"+ - "\u058f\u0590\u0003\u01c0\u00e0\u0000\u0590\u0591\u0005\u0199\u0000\u0000"+ - "\u0591\u0592\u0007\n\u0000\u0000\u0592\u0595\u0005\u0164\u0000\u0000\u0593"+ - "\u0596\u0003\u01c0\u00e0\u0000\u0594\u0596\u0005\u0216\u0000\u0000\u0595"+ - "\u0593\u0001\u0000\u0000\u0000\u0595\u0594\u0001\u0000\u0000\u0000\u0596"+ - "\u05a6\u0001\u0000\u0000\u0000\u0597\u0598\u0005\u0015\u0000\u0000\u0598"+ - "\u0599\u0005\u01b6\u0000\u0000\u0599\u059a\u0005\u0173\u0000\u0000\u059a"+ - "\u059b\u0005W\u0000\u0000\u059b\u059c\u0005\u00c7\u0000\u0000\u059c\u059d"+ - "\u0003\u01c0\u00e0\u0000\u059d\u059e\u0003\u01c0\u00e0\u0000\u059e\u05a6"+ - "\u0001\u0000\u0000\u0000\u059f\u05a0\u0005\u0015\u0000\u0000\u05a0\u05a1"+ - "\u0005\u017b\u0000\u0000\u05a1\u05a3\u0003\u01c0\u00e0\u0000\u05a2\u05a4"+ - "\u0003\u013a\u009d\u0000\u05a3\u05a2\u0001\u0000\u0000\u0000\u05a3\u05a4"+ - "\u0001\u0000\u0000\u0000\u05a4\u05a6\u0001\u0000\u0000\u0000\u05a5\u0509"+ - "\u0001\u0000\u0000\u0000\u05a5\u050c\u0001\u0000\u0000\u0000\u05a5\u051b"+ - "\u0001\u0000\u0000\u0000\u05a5\u0521\u0001\u0000\u0000\u0000\u05a5\u0526"+ - "\u0001\u0000\u0000\u0000\u05a5\u052c\u0001\u0000\u0000\u0000\u05a5\u0531"+ - "\u0001\u0000\u0000\u0000\u05a5\u0538\u0001\u0000\u0000\u0000\u05a5\u0541"+ - "\u0001\u0000\u0000\u0000\u05a5\u0548\u0001\u0000\u0000\u0000\u05a5\u054e"+ - "\u0001\u0000\u0000\u0000\u05a5\u0555\u0001\u0000\u0000\u0000\u05a5\u055b"+ - "\u0001\u0000\u0000\u0000\u05a5\u0560\u0001\u0000\u0000\u0000\u05a5\u056b"+ - "\u0001\u0000\u0000\u0000\u05a5\u0578\u0001\u0000\u0000\u0000\u05a5\u0585"+ - "\u0001\u0000\u0000\u0000\u05a5\u058d\u0001\u0000\u0000\u0000\u05a5\u0597"+ - "\u0001\u0000\u0000\u0000\u05a5\u059f\u0001\u0000\u0000\u0000\u05a6\u0015"+ - "\u0001\u0000\u0000\u0000\u05a7\u05a8\u0005\u008e\u0000\u0000\u05a8\u05a9"+ - "\u0005B\u0000\u0000\u05a9\u05aa\u0005\u016e\u0000\u0000\u05aa\u05ab\u0005"+ - "*\u0000\u0000\u05ab\u05ac\u0005\u01ef\u0000\u0000\u05ac\u05ad\u0005\u0211"+ - "\u0000\u0000\u05ad\u05ae\u0005\u01f7\u0000\u0000\u05ae\u0624\u0005\u0216"+ - "\u0000\u0000\u05af\u05b0\u0005\u008e\u0000\u0000\u05b0\u05b3\u0005\u0097"+ - "\u0000\u0000\u05b1\u05b2\u0005\u00d6\u0000\u0000\u05b2\u05b4\u0005\u00a4"+ - "\u0000\u0000\u05b3\u05b1\u0001\u0000\u0000\u0000\u05b3\u05b4\u0001\u0000"+ - "\u0000\u0000\u05b4\u05b5\u0001\u0000\u0000\u0000\u05b5\u0624\u0003\u0146"+ - "\u00a3\u0000\u05b6\u05b7\u0005\u008e\u0000\u0000\u05b7\u05ba\u0005\u0186"+ - "\u0000\u0000\u05b8\u05b9\u0005\u00d6\u0000\u0000\u05b9\u05bb\u0005\u00a4"+ - "\u0000\u0000\u05ba\u05b8\u0001\u0000\u0000\u0000\u05ba\u05bb\u0001\u0000"+ - "\u0000\u0000\u05bb\u05bc\u0001\u0000\u0000\u0000\u05bc\u0624\u0003\u01c0"+ - "\u00e0\u0000\u05bd\u05be\u0005\u008e\u0000\u0000\u05be\u05c1\u0005\u01a5"+ - "\u0000\u0000\u05bf\u05c0\u0005\u00d6\u0000\u0000\u05c0\u05c2\u0005\u00a4"+ - "\u0000\u0000\u05c1\u05bf\u0001\u0000\u0000\u0000\u05c1\u05c2\u0001\u0000"+ - "\u0000\u0000\u05c2\u05c3\u0001\u0000\u0000\u0000\u05c3\u0624\u0003\u0132"+ - "\u0099\u0000\u05c4\u05c5\u0005\u008e\u0000\u0000\u05c5\u05c8\u0005\u01dc"+ - "\u0000\u0000\u05c6\u05c7\u0005\u00d6\u0000\u0000\u05c7\u05c9\u0005\u00a4"+ - "\u0000\u0000\u05c8\u05c6\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000"+ - "\u0000\u0000\u05c9\u05ca\u0001\u0000\u0000\u0000\u05ca\u0624\u0003\u00be"+ - "_\u0000\u05cb\u05cc\u0005\u008e\u0000\u0000\u05cc\u05cd\u0005\u01ad\u0000"+ - "\u0000\u05cd\u05d0\u0005\u0156\u0000\u0000\u05ce\u05cf\u0005\u00d6\u0000"+ - "\u0000\u05cf\u05d1\u0005\u00a4\u0000\u0000\u05d0\u05ce\u0001\u0000\u0000"+ - "\u0000\u05d0\u05d1\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000"+ - "\u0000\u05d2\u0624\u0003\u01c0\u00e0\u0000\u05d3\u05d4\u0005\u008e\u0000"+ - "\u0000\u05d4\u05d5\u0005\u01f3\u0000\u0000\u05d5\u05d8\u0005\u00c7\u0000"+ - "\u0000\u05d6\u05d7\u0005\u00d6\u0000\u0000\u05d7\u05d9\u0005\u00a4\u0000"+ - "\u0000\u05d8\u05d6\u0001\u0000\u0000\u0000\u05d8\u05d9\u0001\u0000\u0000"+ - "\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da\u0624\u0003\u00b6[\u0000"+ - "\u05db\u05dc\u0005\u008e\u0000\u0000\u05dc\u05df\u0005B\u0000\u0000\u05dd"+ - "\u05de\u0005\u00d6\u0000\u0000\u05de\u05e0\u0005\u00a4\u0000\u0000\u05df"+ - "\u05dd\u0001\u0000\u0000\u0000\u05df\u05e0\u0001\u0000\u0000\u0000\u05e0"+ - "\u05e1\u0001\u0000\u0000\u0000\u05e1\u0624\u0003\u01c0\u00e0\u0000\u05e2"+ - "\u05e3\u0005\u008e\u0000\u0000\u05e3\u05e4\u0005\u00b0\u0000\u0000\u05e4"+ - "\u05e7\u0005\u0211\u0000\u0000\u05e5\u05e6\u0007\u0006\u0000\u0000\u05e6"+ - "\u05e8\u0003\u01c0\u00e0\u0000\u05e7\u05e5\u0001\u0000\u0000\u0000\u05e7"+ - "\u05e8\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ - "\u0624\u0003\u013a\u009d\u0000\u05ea\u05eb\u0005\u008e\u0000\u0000\u05eb"+ - "\u05ec\u0005\u01f3\u0000\u0000\u05ec\u05ef\u0005\u0156\u0000\u0000\u05ed"+ - "\u05ee\u0005\u00d6\u0000\u0000\u05ee\u05f0\u0005\u00a4\u0000\u0000\u05ef"+ - "\u05ed\u0001\u0000\u0000\u0000\u05ef\u05f0\u0001\u0000\u0000\u0000\u05f0"+ - "\u05f1\u0001\u0000\u0000\u0000\u05f1\u0624\u0003\u00b6[\u0000\u05f2\u05f3"+ - "\u0005\u008e\u0000\u0000\u05f3\u05f4\u0005\u017b\u0000\u0000\u05f4\u0624"+ - "\u0003\u01c0\u00e0\u0000\u05f5\u05f6\u0005\u008e\u0000\u0000\u05f6\u05f9"+ - "\u0005\u01b7\u0000\u0000\u05f7\u05f8\u0005\u00d6\u0000\u0000\u05f8\u05fa"+ - "\u0005\u00a4\u0000\u0000\u05f9\u05f7\u0001\u0000\u0000\u0000\u05f9\u05fa"+ - "\u0001\u0000\u0000\u0000\u05fa\u05fb\u0001\u0000\u0000\u0000\u05fb\u05fd"+ - "\u0003\u0146\u00a3\u0000\u05fc\u05fe\u0005\u00b8\u0000\u0000\u05fd\u05fc"+ - "\u0001\u0000\u0000\u0000\u05fd\u05fe\u0001\u0000\u0000\u0000\u05fe\u0624"+ - "\u0001\u0000\u0000\u0000\u05ff\u0600\u0005\u008e\u0000\u0000\u0600\u0603"+ - "\u0007\u000b\u0000\u0000\u0601\u0602\u0005\u00d6\u0000\u0000\u0602\u0604"+ - "\u0005\u00a4\u0000\u0000\u0603\u0601\u0001\u0000\u0000\u0000\u0603\u0604"+ - "\u0001\u0000\u0000\u0000\u0604\u0605\u0001\u0000\u0000\u0000\u0605\u0607"+ - "\u0003\u0146\u00a3\u0000\u0606\u0608\u0005\u00b8\u0000\u0000\u0607\u0606"+ - "\u0001\u0000\u0000\u0000\u0607\u0608\u0001\u0000\u0000\u0000\u0608\u0624"+ - "\u0001\u0000\u0000\u0000\u0609\u060b\u0005\u008e\u0000\u0000\u060a\u060c"+ - "\u0003\u00aaU\u0000\u060b\u060a\u0001\u0000\u0000\u0000\u060b\u060c\u0001"+ - "\u0000\u0000\u0000\u060c\u060d\u0001\u0000\u0000\u0000\u060d\u0610\u0005"+ - "\u00bf\u0000\u0000\u060e\u060f\u0005\u00d6\u0000\u0000\u060f\u0611\u0005"+ - "\u00a4\u0000\u0000\u0610\u060e\u0001\u0000\u0000\u0000\u0610\u0611\u0001"+ - "\u0000\u0000\u0000\u0611\u0612\u0001\u0000\u0000\u0000\u0612\u0613\u0003"+ - "\u0188\u00c4\u0000\u0613\u0615\u0005\u0002\u0000\u0000\u0614\u0616\u0003"+ - "\u0080@\u0000\u0615\u0614\u0001\u0000\u0000\u0000\u0615\u0616\u0001\u0000"+ - "\u0000\u0000\u0616\u0617\u0001\u0000\u0000\u0000\u0617\u0618\u0005\u0003"+ - "\u0000\u0000\u0618\u0624\u0001\u0000\u0000\u0000\u0619\u061a\u0005\u008e"+ - "\u0000\u0000\u061a\u061d\u0005\u00db\u0000\u0000\u061b\u061c\u0005\u00d6"+ - "\u0000\u0000\u061c\u061e\u0005\u00a4\u0000\u0000\u061d\u061b\u0001\u0000"+ - "\u0000\u0000\u061d\u061e\u0001\u0000\u0000\u0000\u061e\u061f\u0001\u0000"+ - "\u0000\u0000\u061f\u0620\u0003\u01c0\u00e0\u0000\u0620\u0621\u0005\u0135"+ - "\u0000\u0000\u0621\u0622\u0003\u0146\u00a3\u0000\u0622\u0624\u0001\u0000"+ - "\u0000\u0000\u0623\u05a7\u0001\u0000\u0000\u0000\u0623\u05af\u0001\u0000"+ - "\u0000\u0000\u0623\u05b6\u0001\u0000\u0000\u0000\u0623\u05bd\u0001\u0000"+ - "\u0000\u0000\u0623\u05c4\u0001\u0000\u0000\u0000\u0623\u05cb\u0001\u0000"+ - "\u0000\u0000\u0623\u05d3\u0001\u0000\u0000\u0000\u0623\u05db\u0001\u0000"+ - "\u0000\u0000\u0623\u05e2\u0001\u0000\u0000\u0000\u0623\u05ea\u0001\u0000"+ - "\u0000\u0000\u0623\u05f2\u0001\u0000\u0000\u0000\u0623\u05f5\u0001\u0000"+ - "\u0000\u0000\u0623\u05ff\u0001\u0000\u0000\u0000\u0623\u0609\u0001\u0000"+ - "\u0000\u0000\u0623\u0619\u0001\u0000\u0000\u0000\u0624\u0017\u0001\u0000"+ - "\u0000\u0000\u0625\u0627\u0005\u019d\u0000\u0000\u0626\u0628\u0003\u00aa"+ - "U\u0000\u0627\u0626\u0001\u0000\u0000\u0000\u0627\u0628\u0001\u0000\u0000"+ - "\u0000\u0628\u0629\u0001\u0000\u0000\u0000\u0629\u062b\u0005\u01e3\u0000"+ - "\u0000\u062a\u062c\u0003P(\u0000\u062b\u062a\u0001\u0000\u0000\u0000\u062b"+ - "\u062c\u0001\u0000\u0000\u0000\u062c\u077e\u0001\u0000\u0000\u0000\u062d"+ - "\u062e\u0005\u019d\u0000\u0000\u062e\u077e\u0005\u001f\u0000\u0000\u062f"+ - "\u0630\u0005\u019d\u0000\u0000\u0630\u0631\u0005c\u0000\u0000\u0631\u0632"+ - "\u0007\u000b\u0000\u0000\u0632\u077e\u0003\u0146\u00a3\u0000\u0633\u0634"+ - "\u0005\u019d\u0000\u0000\u0634\u077e\u00056\u0000\u0000\u0635\u0636\u0005"+ - "\u019d\u0000\u0000\u0636\u0637\u0005\u0093\u0000\u0000\u0637\u0638\u0005"+ - "\u0141\u0000\u0000\u0638\u063b\u0005\u01b8\u0000\u0000\u0639\u063a\u0007"+ - "\u0006\u0000\u0000\u063a\u063c\u0003\u0146\u00a3\u0000\u063b\u0639\u0001"+ - "\u0000\u0000\u0000\u063b\u063c\u0001\u0000\u0000\u0000\u063c\u077e\u0001"+ - "\u0000\u0000\u0000\u063d\u063e\u0005\u019d\u0000\u0000\u063e\u0641\u0005"+ - "\u009f\u0000\u0000\u063f\u0640\u0007\u0006\u0000\u0000\u0640\u0642\u0003"+ - "\u0146\u00a3\u0000\u0641\u063f\u0001\u0000\u0000\u0000\u0641\u0642\u0001"+ - "\u0000\u0000\u0000\u0642\u0644\u0001\u0000\u0000\u0000\u0643\u0645\u0003"+ - "P(\u0000\u0644\u0643\u0001\u0000\u0000\u0000\u0644\u0645\u0001\u0000\u0000"+ - "\u0000\u0645\u077e\u0001\u0000\u0000\u0000\u0646\u0647\u0005\u019d\u0000"+ - "\u0000\u0647\u0648\u0005\u00f9\u0000\u0000\u0648\u077e\u0005\u00df\u0000"+ - "\u0000\u0649\u064d\u0005\u019d\u0000\u0000\u064a\u064b\u0005E\u0000\u0000"+ - "\u064b\u064e\u0005\u0199\u0000\u0000\u064c\u064e\u0005F\u0000\u0000\u064d"+ - "\u064a\u0001\u0000\u0000\u0000\u064d\u064c\u0001\u0000\u0000\u0000\u064e"+ - "\u077e\u0001\u0000\u0000\u0000\u064f\u0650\u0005\u019d\u0000\u0000\u0650"+ - "\u0653\u0005~\u0000\u0000\u0651\u0652\u0007\u0006\u0000\u0000\u0652\u0654"+ - "\u0003\u0146\u00a3\u0000\u0653\u0651\u0001\u0000\u0000\u0000\u0653\u0654"+ - "\u0001\u0000\u0000\u0000\u0654\u077e\u0001\u0000\u0000\u0000\u0655\u0657"+ - "\u0005\u019d\u0000\u0000\u0656\u0658\u0005\u0014\u0000\u0000\u0657\u0656"+ - "\u0001\u0000\u0000\u0000\u0657\u0658\u0001\u0000\u0000\u0000\u0658\u0659"+ - "\u0001\u0000\u0000\u0000\u0659\u077e\u0005\u00c5\u0000\u0000\u065a\u065b"+ - "\u0005\u019d\u0000\u0000\u065b\u065c\u0005\u00c5\u0000\u0000\u065c\u065d"+ - "\u0005\u00b6\u0000\u0000\u065d\u077e\u0003\u00be_\u0000\u065e\u065f\u0005"+ - "\u019d\u0000\u0000\u065f\u0660\u0005\u01b5\u0000\u0000\u0660\u0663\u0005"+ - "\u00ef\u0000\u0000\u0661\u0662\u0007\u0006\u0000\u0000\u0662\u0664\u0003"+ - "\u0146\u00a3\u0000\u0663\u0661\u0001\u0000\u0000\u0000\u0663\u0664\u0001"+ - "\u0000\u0000\u0000\u0664\u077e\u0001\u0000\u0000\u0000\u0665\u0666\u0005"+ - "\u019d\u0000\u0000\u0666\u0667\u0005\u0105\u0000\u0000\u0667\u0669\u0005"+ - "\u015d\u0000\u0000\u0668\u066a\u0005\u0211\u0000\u0000\u0669\u0668\u0001"+ - "\u0000\u0000\u0000\u0669\u066a\u0001\u0000\u0000\u0000\u066a\u066c\u0001"+ - "\u0000\u0000\u0000\u066b\u066d\u0003\u0128\u0094\u0000\u066c\u066b\u0001"+ - "\u0000\u0000\u0000\u066c\u066d\u0001\u0000\u0000\u0000\u066d\u077e\u0001"+ - "\u0000\u0000\u0000\u066e\u066f\u0005\u019d\u0000\u0000\u066f\u0670\u0005"+ - "c\u0000\u0000\u0670\u0671\u0005\u017b\u0000\u0000\u0671\u0672\u0005\u00b6"+ - "\u0000\u0000\u0672\u077e\u0003\u01c0\u00e0\u0000\u0673\u0674\u0005\u019d"+ - "\u0000\u0000\u0674\u0675\u0005\u01e9\u0000\u0000\u0675\u0676\u0007\u0006"+ - "\u0000\u0000\u0676\u0679\u0003\u0146\u00a3\u0000\u0677\u0678\u0007\u0006"+ - "\u0000\u0000\u0678\u067a\u0003\u01c0\u00e0\u0000\u0679\u0677\u0001\u0000"+ - "\u0000\u0000\u0679\u067a\u0001\u0000\u0000\u0000\u067a\u077e\u0001\u0000"+ - "\u0000\u0000\u067b\u067c\u0005\u019d\u0000\u0000\u067c\u077e\u0005\u0155"+ - "\u0000\u0000\u067d\u067e\u0005\u019d\u0000\u0000\u067e\u077e\u0005\u017a"+ - "\u0000\u0000\u067f\u0680\u0005\u019d\u0000\u0000\u0680\u0683\u0005\u0098"+ - "\u0000\u0000\u0681\u0682\u0007\u0006\u0000\u0000\u0682\u0684\u0003\u0146"+ - "\u00a3\u0000\u0683\u0681\u0001\u0000\u0000\u0000\u0683\u0684\u0001\u0000"+ - "\u0000\u0000\u0684\u0687\u0001\u0000\u0000\u0000\u0685\u0686\u0005\u0100"+ - "\u0000\u0000\u0686\u0688\u0005\u0211\u0000\u0000\u0687\u0685\u0001\u0000"+ - "\u0000\u0000\u0687\u0688\u0001\u0000\u0000\u0000\u0688\u077e\u0001\u0000"+ - "\u0000\u0000\u0689\u068b\u0005\u019d\u0000\u0000\u068a\u068c\u00055\u0000"+ - "\u0000\u068b\u068a\u0001\u0000\u0000\u0000\u068b\u068c\u0001\u0000\u0000"+ - "\u0000\u068c\u068d\u0001\u0000\u0000\u0000\u068d\u068e\u0005c\u0000\u0000"+ - "\u068e\u068f\u0005\u01b7\u0000\u0000\u068f\u077e\u0003\u0146\u00a3\u0000"+ - "\u0690\u0692\u0005\u019d\u0000\u0000\u0691\u0693\u0005\u00be\u0000\u0000"+ - "\u0692\u0691\u0001\u0000\u0000\u0000\u0692\u0693\u0001\u0000\u0000\u0000"+ - "\u0693\u0694\u0001\u0000\u0000\u0000\u0694\u077e\u0005\u015c\u0000\u0000"+ - "\u0695\u0696\u0005\u019d\u0000\u0000\u0696\u077e\u0005\u0187\u0000\u0000"+ - "\u0697\u0698\u0005\u019d\u0000\u0000\u0698\u0699\u0005\u0141\u0000\u0000"+ - "\u0699\u077e\u0005\u0216\u0000\u0000\u069a\u069b\u0005\u019d\u0000\u0000"+ - "\u069b\u077e\u0005\u0152\u0000\u0000\u069c\u069d\u0005\u019d\u0000\u0000"+ - "\u069d\u069e\u0005\u015a\u0000\u0000\u069e\u077e\u0005\u0211\u0000\u0000"+ - "\u069f\u06a0\u0005\u019d\u0000\u0000\u06a0\u06a3\u0005\u00b0\u0000\u0000"+ - "\u06a1\u06a2\u0007\u0006\u0000\u0000\u06a2\u06a4\u0003\u0146\u00a3\u0000"+ - "\u06a3\u06a1\u0001\u0000\u0000\u0000\u06a3\u06a4\u0001\u0000\u0000\u0000"+ - "\u06a4\u077e\u0001\u0000\u0000\u0000\u06a5\u06a7\u0005\u019d\u0000\u0000"+ - "\u06a6\u06a8\u0005\u01ad\u0000\u0000\u06a7\u06a6\u0001\u0000\u0000\u0000"+ - "\u06a7\u06a8\u0001\u0000\u0000\u0000\u06a8\u06a9\u0001\u0000\u0000\u0000"+ - "\u06a9\u077e\u0005\u009c\u0000\u0000\u06aa\u06ab\u0005\u019d\u0000\u0000"+ - "\u06ab\u06ac\u0005c\u0000\u0000\u06ac\u06ad\u0005B\u0000\u0000\u06ad\u077e"+ - "\u0003\u01c0\u00e0\u0000\u06ae\u06af\u0005\u019d\u0000\u0000\u06af\u06b0"+ - "\u0005B\u0000\u0000\u06b0\u077e\u0003\u01c0\u00e0\u0000\u06b1\u06b2\u0005"+ - "\u019d\u0000\u0000\u06b2\u06b4\u0005C\u0000\u0000\u06b3\u06b5\u0003P("+ - "\u0000\u06b4\u06b3\u0001\u0000\u0000\u0000\u06b4\u06b5\u0001\u0000\u0000"+ - "\u0000\u06b5\u077e\u0001\u0000\u0000\u0000\u06b6\u06b7\u0005\u019d\u0000"+ - "\u0000\u06b7\u06ba\u0005\u015f\u0000\u0000\u06b8\u06b9\u0005\u00b6\u0000"+ - "\u0000\u06b9\u06bb\u0003\u00b6[\u0000\u06ba\u06b8\u0001\u0000\u0000\u0000"+ - "\u06ba\u06bb\u0001\u0000\u0000\u0000\u06bb\u06be\u0001\u0000\u0000\u0000"+ - "\u06bc\u06bd\u0005\u0100\u0000\u0000\u06bd\u06bf\u0005\u0211\u0000\u0000"+ - "\u06be\u06bc\u0001\u0000\u0000\u0000\u06be\u06bf\u0001\u0000\u0000\u0000"+ - "\u06bf\u077e\u0001\u0000\u0000\u0000\u06c0\u06c1\u0005\u019d\u0000\u0000"+ - "\u06c1\u06c2\u0005\u0014\u0000\u0000\u06c2\u06c5\u0005\u015e\u0000\u0000"+ - "\u06c3\u06c4\u0005\u0100\u0000\u0000\u06c4\u06c6\u0005\u0211\u0000\u0000"+ - "\u06c5\u06c3\u0001\u0000\u0000\u0000\u06c5\u06c6\u0001\u0000\u0000\u0000"+ - "\u06c6\u077e\u0001\u0000\u0000\u0000\u06c7\u06c8\u0005\u019d\u0000\u0000"+ - "\u06c8\u06ca\u0005L\u0000\u0000\u06c9\u06cb\u0003P(\u0000\u06ca\u06c9"+ - "\u0001\u0000\u0000\u0000\u06ca\u06cb\u0001\u0000\u0000\u0000\u06cb\u077e"+ - "\u0001\u0000\u0000\u0000\u06cc\u06cd\u0005\u019d\u0000\u0000\u06cd\u06ce"+ - "\u0005\u01ad\u0000\u0000\u06ce\u06d4\u0005\u0156\u0000\u0000\u06cf\u06d2"+ - "\u0005\u01de\u0000\u0000\u06d0\u06d1\u0005\u00b6\u0000\u0000\u06d1\u06d3"+ - "\u0003\u00b6[\u0000\u06d2\u06d0\u0001\u0000\u0000\u0000\u06d2\u06d3\u0001"+ - "\u0000\u0000\u0000\u06d3\u06d5\u0001\u0000\u0000\u0000\u06d4\u06cf\u0001"+ - "\u0000\u0000\u0000\u06d4\u06d5\u0001\u0000\u0000\u0000\u06d5\u077e\u0001"+ - "\u0000\u0000\u0000\u06d6\u06d7\u0005\u019d\u0000\u0000\u06d7\u06da\u0005"+ - "\u01a5\u0000\u0000\u06d8\u06d9\u0005\u00b6\u0000\u0000\u06d9\u06db\u0003"+ - "\u01c0\u00e0\u0000\u06da\u06d8\u0001\u0000\u0000\u0000\u06da\u06db\u0001"+ - "\u0000\u0000\u0000\u06db\u077e\u0001\u0000\u0000\u0000\u06dc\u06dd\u0005"+ - "\u019d\u0000\u0000\u06dd\u06de\u0005c\u0000\u0000\u06de\u06df\u0005\u01e9"+ - "\u0000\u0000\u06df\u077e\u0003\u0146\u00a3\u0000\u06e0\u06e1\u0005\u019d"+ - "\u0000\u0000\u06e1\u06e2\u0005n\u0000\u0000\u06e2\u077e\u0005\u01d0\u0000"+ - "\u0000\u06e3\u06e4\u0005\u019d\u0000\u0000\u06e4\u06e6\u0005n\u0000\u0000"+ - "\u06e5\u06e7\u0005\u0014\u0000\u0000\u06e6\u06e5\u0001\u0000\u0000\u0000"+ - "\u06e6\u06e7\u0001\u0000\u0000\u0000\u06e7\u06ea\u0001\u0000\u0000\u0000"+ - "\u06e8\u06e9\u0005\u00bb\u0000\u0000\u06e9\u06eb\u0003\u0146\u00a3\u0000"+ - "\u06ea\u06e8\u0001\u0000\u0000\u0000\u06ea\u06eb\u0001\u0000\u0000\u0000"+ - "\u06eb\u06ed\u0001\u0000\u0000\u0000\u06ec\u06ee\u0003\u0124\u0092\u0000"+ - "\u06ed\u06ec\u0001\u0000\u0000\u0000\u06ed\u06ee\u0001\u0000\u0000\u0000"+ - "\u06ee\u06f0\u0001\u0000\u0000\u0000\u06ef\u06f1\u0003\u013a\u009d\u0000"+ - "\u06f0\u06ef\u0001\u0000\u0000\u0000\u06f0\u06f1\u0001\u0000\u0000\u0000"+ - "\u06f1\u077e\u0001\u0000\u0000\u0000\u06f2\u06f3\u0005\u019d\u0000\u0000"+ - "\u06f3\u06f4\u0005c\u0000\u0000\u06f4\u06f5\u0005\u0118\u0000\u0000\u06f5"+ - "\u06f6\u0005\u01e9\u0000\u0000\u06f6\u06f7\u0003\u01c0\u00e0\u0000\u06f7"+ - "\u06f8\u0005\u0135\u0000\u0000\u06f8\u06f9\u0003\u0146\u00a3\u0000\u06f9"+ - "\u077e\u0001\u0000\u0000\u0000\u06fa\u06fb\u0005\u019d\u0000\u0000\u06fb"+ - "\u06fd\u0007\f\u0000\u0000\u06fc\u06fe\u0003\u0128\u0094\u0000\u06fd\u06fc"+ - "\u0001\u0000\u0000\u0000\u06fd\u06fe\u0001\u0000\u0000\u0000\u06fe\u077e"+ - "\u0001\u0000\u0000\u0000\u06ff\u0700\u0005\u019d\u0000\u0000\u0700\u0701"+ - "\u0005b\u0000\u0000\u0701\u0702\u0005\u0002\u0000\u0000\u0702\u0703\u0005"+ - "\u0200\u0000\u0000\u0703\u0704\u0005\u0003\u0000\u0000\u0704\u077e\u0007"+ - "\f\u0000\u0000\u0705\u0706\u0005\u019d\u0000\u0000\u0706\u077e\u0005$"+ - "\u0000\u0000\u0707\u0708\u0005\u019d\u0000\u0000\u0708\u077e\u0005\u01a7"+ - "\u0000\u0000\u0709\u070a\u0005\u019d\u0000\u0000\u070a\u070b\u0005\u0179"+ - "\u0000\u0000\u070b\u070c\u0005\u0089\u0000\u0000\u070c\u070d\u0005\u00bb"+ - "\u0000\u0000\u070d\u077e\u0003N\'\u0000\u070e\u0710\u0005\u019d\u0000"+ - "\u0000\u070f\u0711\u0005\u00be\u0000\u0000\u0710\u070f\u0001\u0000\u0000"+ - "\u0000\u0710\u0711\u0001\u0000\u0000\u0000\u0711\u0712\u0001\u0000\u0000"+ - "\u0000\u0712\u0715\u0005\u01ca\u0000\u0000\u0713\u0714\u0007\u0006\u0000"+ - "\u0000\u0714\u0716\u0003\u0146\u00a3\u0000\u0715\u0713\u0001\u0000\u0000"+ - "\u0000\u0715\u0716\u0001\u0000\u0000\u0000\u0716\u0718\u0001\u0000\u0000"+ - "\u0000\u0717\u0719\u0003P(\u0000\u0718\u0717\u0001\u0000\u0000\u0000\u0718"+ - "\u0719\u0001\u0000\u0000\u0000\u0719\u077e\u0001\u0000\u0000\u0000\u071a"+ - "\u071b\u0005\u019d\u0000\u0000\u071b\u071c\u0005\u01ba\u0000\u0000\u071c"+ - "\u071d\u0005\u0083\u0000\u0000\u071d\u077e\u0005\u0216\u0000\u0000\u071e"+ - "\u071f\u0005\u019d\u0000\u0000\u071f\u0721\u0005\u00bd\u0000\u0000\u0720"+ - "\u0722\u0003\u01c0\u00e0\u0000\u0721\u0720\u0001\u0000\u0000\u0000\u0721"+ - "\u0722\u0001\u0000\u0000\u0000\u0722\u077e\u0001\u0000\u0000\u0000\u0723"+ - "\u0724\u0005\u019d\u0000\u0000\u0724\u0725\u0005o\u0000\u0000\u0725\u077e"+ - "\u0005\u0216\u0000\u0000\u0726\u0727\u0005\u019d\u0000\u0000\u0727\u0728"+ - "\u0005\u01b7\u0000\u0000\u0728\u077e\u0005\u0216\u0000\u0000\u0729\u072a"+ - "\u0005\u019d\u0000\u0000\u072a\u072d\u0005\u01c8\u0000\u0000\u072b\u072c"+ - "\u0005\u0135\u0000\u0000\u072c\u072e\u0005\u0211\u0000\u0000\u072d\u072b"+ - "\u0001\u0000\u0000\u0000\u072d\u072e\u0001\u0000\u0000\u0000\u072e\u077e"+ - "\u0001\u0000\u0000\u0000\u072f\u0731\u0005\u019d\u0000\u0000\u0730\u0732"+ - "\u0003\u00aaU\u0000\u0731\u0730\u0001\u0000\u0000\u0000\u0731\u0732\u0001"+ - "\u0000\u0000\u0000\u0732\u0733\u0001\u0000\u0000\u0000\u0733\u077e\u0005"+ - "\u01ab\u0000\u0000\u0734\u0735\u0005\u019d\u0000\u0000\u0735\u077e\u0005"+ - "\u01f0\u0000\u0000\u0736\u0737\u0005\u019d\u0000\u0000\u0737\u0738\u0005"+ - "\u01bb\u0000\u0000\u0738\u0739\u0005\'\u0000\u0000\u0739\u073e\u0005\u0216"+ - "\u0000\u0000\u073a\u073b\u0005\u0004\u0000\u0000\u073b\u073d\u0005\u0216"+ - "\u0000\u0000\u073c\u073a\u0001\u0000\u0000\u0000\u073d\u0740\u0001\u0000"+ - "\u0000\u0000\u073e\u073c\u0001\u0000\u0000\u0000\u073e\u073f\u0001\u0000"+ - "\u0000\u0000\u073f\u077e\u0001\u0000\u0000\u0000\u0740\u073e\u0001\u0000"+ - "\u0000\u0000\u0741\u0742\u0005\u019d\u0000\u0000\u0742\u0743\u0005n\u0000"+ - "\u0000\u0743\u0744\u0005\u019f\u0000\u0000\u0744\u0745\u0005\u00bb\u0000"+ - "\u0000\u0745\u077e\u0003N\'\u0000\u0746\u0747\u0005\u019d\u0000\u0000"+ - "\u0747\u0748\u0005\u01b7\u0000\u0000\u0748\u074b\u0005d\u0000\u0000\u0749"+ - "\u074a\u0007\u0006\u0000\u0000\u074a\u074c\u0003\u0146\u00a3\u0000\u074b"+ - "\u0749\u0001\u0000\u0000\u0000\u074b\u074c\u0001\u0000\u0000\u0000\u074c"+ - "\u074f\u0001\u0000\u0000\u0000\u074d\u074e\u0005\u0100\u0000\u0000\u074e"+ - "\u0750\u0005\u0211\u0000\u0000\u074f\u074d\u0001\u0000\u0000\u0000\u074f"+ - "\u0750\u0001\u0000\u0000\u0000\u0750\u077e\u0001\u0000\u0000\u0000\u0751"+ - "\u0752\u0005\u019d\u0000\u0000\u0752\u0753\u0005\u01ba\u0000\u0000\u0753"+ - "\u0754\u0005\u01ad\u0000\u0000\u0754\u0756\u0005\u00b9\u0000\u0000\u0755"+ - "\u0757\u0005\u01e7\u0000\u0000\u0756\u0755\u0001\u0000\u0000\u0000\u0756"+ - "\u0757\u0001\u0000\u0000\u0000\u0757\u077e\u0001\u0000\u0000\u0000\u0758"+ - "\u0759\u0005\u019d\u0000\u0000\u0759\u075a\u0005\u0162\u0000\u0000\u075a"+ - "\u075c\u0005\u015d\u0000\u0000\u075b\u075d\u0005\u0211\u0000\u0000\u075c"+ - "\u075b\u0001\u0000\u0000\u0000\u075c\u075d\u0001\u0000\u0000\u0000\u075d"+ - "\u075f\u0001\u0000\u0000\u0000\u075e\u0760\u0003\u0128\u0094\u0000\u075f"+ - "\u075e\u0001\u0000\u0000\u0000\u075f\u0760\u0001\u0000\u0000\u0000\u0760"+ - "\u077e\u0001\u0000\u0000\u0000\u0761\u0762\u0005\u019d\u0000\u0000\u0762"+ - "\u0765\u0005`\u0000\u0000\u0763\u0764\u0007\u0006\u0000\u0000\u0764\u0766"+ - "\u0003\u0146\u00a3\u0000\u0765\u0763\u0001\u0000\u0000\u0000\u0765\u0766"+ - "\u0001\u0000\u0000\u0000\u0766\u077e\u0001\u0000\u0000\u0000\u0767\u0769"+ - "\u0005\u019d\u0000\u0000\u0768\u076a\u0005\u00be\u0000\u0000\u0769\u0768"+ - "\u0001\u0000\u0000\u0000\u0769\u076a\u0001\u0000\u0000\u0000\u076a\u076b"+ - "\u0001\u0000\u0000\u0000\u076b\u076e\u0005\u01b8\u0000\u0000\u076c\u076d"+ - "\u0007\u0006\u0000\u0000\u076d\u076f\u0003\u0146\u00a3\u0000\u076e\u076c"+ - "\u0001\u0000\u0000\u0000\u076e\u076f\u0001\u0000\u0000\u0000\u076f\u0771"+ - "\u0001\u0000\u0000\u0000\u0770\u0772\u0003P(\u0000\u0771\u0770\u0001\u0000"+ - "\u0000\u0000\u0771\u0772\u0001\u0000\u0000\u0000\u0772\u077e\u0001\u0000"+ - "\u0000\u0000\u0773\u0774\u0005\u019d\u0000\u0000\u0774\u0775\u0005\u01b7"+ - "\u0000\u0000\u0775\u0778\u0005\u01ab\u0000\u0000\u0776\u0777\u0007\u0006"+ - "\u0000\u0000\u0777\u0779\u0003\u0146\u00a3\u0000\u0778\u0776\u0001\u0000"+ - "\u0000\u0000\u0778\u0779\u0001\u0000\u0000\u0000\u0779\u077b\u0001\u0000"+ - "\u0000\u0000\u077a\u077c\u0003P(\u0000\u077b\u077a\u0001\u0000\u0000\u0000"+ - "\u077b\u077c\u0001\u0000\u0000\u0000\u077c\u077e\u0001\u0000\u0000\u0000"+ - "\u077d\u0625\u0001\u0000\u0000\u0000\u077d\u062d\u0001\u0000\u0000\u0000"+ - "\u077d\u062f\u0001\u0000\u0000\u0000\u077d\u0633\u0001\u0000\u0000\u0000"+ - "\u077d\u0635\u0001\u0000\u0000\u0000\u077d\u063d\u0001\u0000\u0000\u0000"+ - "\u077d\u0646\u0001\u0000\u0000\u0000\u077d\u0649\u0001\u0000\u0000\u0000"+ - "\u077d\u064f\u0001\u0000\u0000\u0000\u077d\u0655\u0001\u0000\u0000\u0000"+ - "\u077d\u065a\u0001\u0000\u0000\u0000\u077d\u065e\u0001\u0000\u0000\u0000"+ - "\u077d\u0665\u0001\u0000\u0000\u0000\u077d\u066e\u0001\u0000\u0000\u0000"+ - "\u077d\u0673\u0001\u0000\u0000\u0000\u077d\u067b\u0001\u0000\u0000\u0000"+ - "\u077d\u067d\u0001\u0000\u0000\u0000\u077d\u067f\u0001\u0000\u0000\u0000"+ - "\u077d\u0689\u0001\u0000\u0000\u0000\u077d\u0690\u0001\u0000\u0000\u0000"+ - "\u077d\u0695\u0001\u0000\u0000\u0000\u077d\u0697\u0001\u0000\u0000\u0000"+ - "\u077d\u069a\u0001\u0000\u0000\u0000\u077d\u069c\u0001\u0000\u0000\u0000"+ - "\u077d\u069f\u0001\u0000\u0000\u0000\u077d\u06a5\u0001\u0000\u0000\u0000"+ - "\u077d\u06aa\u0001\u0000\u0000\u0000\u077d\u06ae\u0001\u0000\u0000\u0000"+ - "\u077d\u06b1\u0001\u0000\u0000\u0000\u077d\u06b6\u0001\u0000\u0000\u0000"+ - "\u077d\u06c0\u0001\u0000\u0000\u0000\u077d\u06c7\u0001\u0000\u0000\u0000"+ - "\u077d\u06cc\u0001\u0000\u0000\u0000\u077d\u06d6\u0001\u0000\u0000\u0000"+ - "\u077d\u06dc\u0001\u0000\u0000\u0000\u077d\u06e0\u0001\u0000\u0000\u0000"+ - "\u077d\u06e3\u0001\u0000\u0000\u0000\u077d\u06f2\u0001\u0000\u0000\u0000"+ - "\u077d\u06fa\u0001\u0000\u0000\u0000\u077d\u06ff\u0001\u0000\u0000\u0000"+ - "\u077d\u0705\u0001\u0000\u0000\u0000\u077d\u0707\u0001\u0000\u0000\u0000"+ - "\u077d\u0709\u0001\u0000\u0000\u0000\u077d\u070e\u0001\u0000\u0000\u0000"+ - "\u077d\u071a\u0001\u0000\u0000\u0000\u077d\u071e\u0001\u0000\u0000\u0000"+ - "\u077d\u0723\u0001\u0000\u0000\u0000\u077d\u0726\u0001\u0000\u0000\u0000"+ - "\u077d\u0729\u0001\u0000\u0000\u0000\u077d\u072f\u0001\u0000\u0000\u0000"+ - "\u077d\u0734\u0001\u0000\u0000\u0000\u077d\u0736\u0001\u0000\u0000\u0000"+ - "\u077d\u0741\u0001\u0000\u0000\u0000\u077d\u0746\u0001\u0000\u0000\u0000"+ - "\u077d\u0751\u0001\u0000\u0000\u0000\u077d\u0758\u0001\u0000\u0000\u0000"+ - "\u077d\u0761\u0001\u0000\u0000\u0000\u077d\u0767\u0001\u0000\u0000\u0000"+ - "\u077d\u0773\u0001\u0000\u0000\u0000\u077e\u0019\u0001\u0000\u0000\u0000"+ - "\u077f\u0782\u0005\u01b5\u0000\u0000\u0780\u0782\u0003&\u0013\u0000\u0781"+ - "\u077f\u0001\u0000\u0000\u0000\u0781\u0780\u0001\u0000\u0000\u0000\u0782"+ - "\u001b\u0001\u0000\u0000\u0000\u0783\u0784\u0005\u00cd\u0000\u0000\u0784"+ - "\u0785\u0003\u00b6[\u0000\u0785\u001d\u0001\u0000\u0000\u0000\u0786\u0787"+ - "\u0005\u00e0\u0000\u0000\u0787\u0788\u0005\u0154\u0000\u0000\u0788\u0789"+ - "\u0005\u00bb\u0000\u0000\u0789\u078b\u0003\u00b6[\u0000\u078a\u078c\u0003"+ - "\u013a\u009d\u0000\u078b\u078a\u0001\u0000\u0000\u0000\u078b\u078c\u0001"+ - "\u0000\u0000\u0000\u078c\u07ee\u0001\u0000\u0000\u0000\u078d\u078e\u0005"+ - "\u01d3\u0000\u0000\u078e\u078f\u0005\u0154\u0000\u0000\u078f\u07ee\u0003"+ - "\u00b6[\u0000\u0790\u0791\u0005\u010a\u0000\u0000\u0791\u079a\u0005\u01b8"+ - "\u0000\u0000\u0792\u0797\u0003\"\u0011\u0000\u0793\u0794\u0005\u0004\u0000"+ - "\u0000\u0794\u0796\u0003\"\u0011\u0000\u0795\u0793\u0001\u0000\u0000\u0000"+ - "\u0796\u0799\u0001\u0000\u0000\u0000\u0797\u0795\u0001\u0000\u0000\u0000"+ - "\u0797\u0798\u0001\u0000\u0000\u0000\u0798\u079b\u0001\u0000\u0000\u0000"+ - "\u0799\u0797\u0001\u0000\u0000\u0000\u079a\u0792\u0001\u0000\u0000\u0000"+ - "\u079a\u079b\u0001\u0000\u0000\u0000\u079b\u07ee\u0001\u0000\u0000\u0000"+ - "\u079c\u079d\u0005\u01d6\u0000\u0000\u079d\u07ee\u0005\u01b8\u0000\u0000"+ - "\u079e\u079f\u0005\u01eb\u0000\u0000\u079f\u07a3\u0005\u01d9\u0000\u0000"+ - "\u07a0\u07a4\u0005I\u0000\u0000\u07a1\u07a2\u0005W\u0000\u0000\u07a2\u07a4"+ - "\u0005\u00c7\u0000\u0000\u07a3\u07a0\u0001\u0000\u0000\u0000\u07a3\u07a1"+ - "\u0001\u0000\u0000\u0000\u07a4\u07a5\u0001\u0000\u0000\u0000\u07a5\u07a6"+ - "\u0003\u01c0\u00e0\u0000\u07a6\u07b5\u0005\u01f1\u0000\u0000\u07a7\u07ab"+ - "\u0005I\u0000\u0000\u07a8\u07a9\u0005W\u0000\u0000\u07a9\u07ab\u0005\u00c7"+ - "\u0000\u0000\u07aa\u07a7\u0001\u0000\u0000\u0000\u07aa\u07a8\u0001\u0000"+ - "\u0000\u0000\u07ab\u07ac\u0001\u0000\u0000\u0000\u07ac\u07b6\u0003\u01c0"+ - "\u00e0\u0000\u07ad\u07b2\u0003 \u0010\u0000\u07ae\u07af\u0005\u0018\u0000"+ - "\u0000\u07af\u07b1\u0003 \u0010\u0000\u07b0\u07ae\u0001\u0000\u0000\u0000"+ - "\u07b1\u07b4\u0001\u0000\u0000\u0000\u07b2\u07b0\u0001\u0000\u0000\u0000"+ - "\u07b2\u07b3\u0001\u0000\u0000\u0000\u07b3\u07b6\u0001\u0000\u0000\u0000"+ - "\u07b4\u07b2\u0001\u0000\u0000\u0000\u07b5\u07aa\u0001\u0000\u0000\u0000"+ - "\u07b5\u07ad\u0001\u0000\u0000\u0000\u07b6\u07b8\u0001\u0000\u0000\u0000"+ - "\u07b7\u07b9\u0005\u00b8\u0000\u0000\u07b8\u07b7\u0001\u0000\u0000\u0000"+ - "\u07b8\u07b9\u0001\u0000\u0000\u0000\u07b9\u07ee\u0001\u0000\u0000\u0000"+ - "\u07ba\u07bb\u0005%\u0000\u0000\u07bb\u07bc\u0005\u01a1\u0000\u0000\u07bc"+ - "\u07bd\u0003\u0146\u00a3\u0000\u07bd\u07be\u0005\u01c6\u0000\u0000\u07be"+ - "\u07cb\u0003\u01c0\u00e0\u0000\u07bf\u07c0\u0007\r\u0000\u0000\u07c0\u07c1"+ - "\u0005\u0002\u0000\u0000\u07c1\u07c6\u0003N\'\u0000\u07c2\u07c3\u0005"+ - "\u0004\u0000\u0000\u07c3\u07c5\u0003N\'\u0000\u07c4\u07c2\u0001\u0000"+ - "\u0000\u0000\u07c5\u07c8\u0001\u0000\u0000\u0000\u07c6\u07c4\u0001\u0000"+ - "\u0000\u0000\u07c6\u07c7\u0001\u0000\u0000\u0000\u07c7\u07c9\u0001\u0000"+ - "\u0000\u0000\u07c8\u07c6\u0001\u0000\u0000\u0000\u07c9\u07ca\u0005\u0003"+ - "\u0000\u0000\u07ca\u07cc\u0001\u0000\u0000\u0000\u07cb\u07bf\u0001\u0000"+ - "\u0000\u0000\u07cb\u07cc\u0001\u0000\u0000\u0000\u07cc\u07ce\u0001\u0000"+ - "\u0000\u0000\u07cd\u07cf\u0003\u013a\u009d\u0000\u07ce\u07cd\u0001\u0000"+ - "\u0000\u0000\u07ce\u07cf\u0001\u0000\u0000\u0000\u07cf\u07ee\u0001\u0000"+ - "\u0000\u0000\u07d0\u07d1\u0005\u017e\u0000\u0000\u07d1\u07d2\u0005\u01a1"+ - "\u0000\u0000\u07d2\u07d3\u0003\u0146\u00a3\u0000\u07d3\u07d4\u0005\u00bb"+ - "\u0000\u0000\u07d4\u07e1\u0003\u01c0\u00e0\u0000\u07d5\u07d6\u0007\r\u0000"+ - "\u0000\u07d6\u07d7\u0005\u0002\u0000\u0000\u07d7\u07dc\u0003N\'\u0000"+ - "\u07d8\u07d9\u0005\u0004\u0000\u0000\u07d9\u07db\u0003N\'\u0000\u07da"+ - "\u07d8\u0001\u0000\u0000\u0000\u07db\u07de\u0001\u0000\u0000\u0000\u07dc"+ - "\u07da\u0001\u0000\u0000\u0000\u07dc\u07dd\u0001\u0000\u0000\u0000\u07dd"+ - "\u07df\u0001\u0000\u0000\u0000\u07de\u07dc\u0001\u0000\u0000\u0000\u07df"+ - "\u07e0\u0005\u0003\u0000\u0000\u07e0\u07e2\u0001\u0000\u0000\u0000\u07e1"+ - "\u07d5\u0001\u0000\u0000\u0000\u07e1\u07e2\u0001\u0000\u0000\u0000\u07e2"+ - "\u07e4\u0001\u0000\u0000\u0000\u07e3\u07e5\u0003\u013a\u009d\u0000\u07e4"+ - "\u07e3\u0001\u0000\u0000\u0000\u07e4\u07e5\u0001\u0000\u0000\u0000\u07e5"+ - "\u07ee\u0001\u0000\u0000\u0000\u07e6\u07e7\u0005\u01a8\u0000\u0000\u07e7"+ - "\u07eb\u0005\u01c7\u0000\u0000\u07e8\u07e9\u0005\u01f1\u0000\u0000\u07e9"+ - "\u07ea\u0005\\\u0000\u0000\u07ea\u07ec\u0005\u01a1\u0000\u0000\u07eb\u07e8"+ - "\u0001\u0000\u0000\u0000\u07eb\u07ec\u0001\u0000\u0000\u0000\u07ec\u07ee"+ - "\u0001\u0000\u0000\u0000\u07ed\u0786\u0001\u0000\u0000\u0000\u07ed\u078d"+ - "\u0001\u0000\u0000\u0000\u07ed\u0790\u0001\u0000\u0000\u0000\u07ed\u079c"+ - "\u0001\u0000\u0000\u0000\u07ed\u079e\u0001\u0000\u0000\u0000\u07ed\u07ba"+ - "\u0001\u0000\u0000\u0000\u07ed\u07d0\u0001\u0000\u0000\u0000\u07ed\u07e6"+ - "\u0001\u0000\u0000\u0000\u07ee\u001f\u0001\u0000\u0000\u0000\u07ef\u07f0"+ - "\u0005\u01b7\u0000\u0000\u07f0\u07f3\u0003\u0146\u00a3\u0000\u07f1\u07f2"+ - "\u0005\u0141\u0000\u0000\u07f2\u07f4\u0003\u01c0\u00e0\u0000\u07f3\u07f1"+ - "\u0001\u0000\u0000\u0000\u07f3\u07f4\u0001\u0000\u0000\u0000\u07f4!\u0001"+ - "\u0000\u0000\u0000\u07f5\u07f8\u0003\u0146\u00a3\u0000\u07f6\u07f7\u0005"+ - "\u001c\u0000\u0000\u07f7\u07f9\u0003\u00b6[\u0000\u07f8\u07f6\u0001\u0000"+ - "\u0000\u0000\u07f8\u07f9\u0001\u0000\u0000\u0000\u07f9\u0802\u0001\u0000"+ - "\u0000\u0000\u07fa\u07fc\u0005\u0169\u0000\u0000\u07fb\u07fd\u0005\u0106"+ - "\u0000\u0000\u07fc\u07fb\u0001\u0000\u0000\u0000\u07fc\u07fd\u0001\u0000"+ - "\u0000\u0000\u07fd\u0803\u0001\u0000\u0000\u0000\u07fe\u0800\u0005\u010c"+ - "\u0000\u0000\u07ff\u07fe\u0001\u0000\u0000\u0000\u07ff\u0800\u0001\u0000"+ - "\u0000\u0000\u0800\u0801\u0001\u0000\u0000\u0000\u0801\u0803\u0005\u01f4"+ - "\u0000\u0000\u0802\u07fa\u0001\u0000\u0000\u0000\u0802\u07ff\u0001\u0000"+ - "\u0000\u0000\u0803#\u0001\u0000\u0000\u0000\u0804\u0805\u0005\u019d\u0000"+ - "\u0000\u0805\u0806\u0005\u018b\u0000\u0000\u0806\u080d\u0005\u0156\u0000"+ - "\u0000\u0807\u080b\u0005\u00b6\u0000\u0000\u0808\u080c\u0003\u00be_\u0000"+ - "\u0809\u080a\u0005\u0186\u0000\u0000\u080a\u080c\u0003\u01c0\u00e0\u0000"+ - "\u080b\u0808\u0001\u0000\u0000\u0000\u080b\u0809\u0001\u0000\u0000\u0000"+ - "\u080c\u080e\u0001\u0000\u0000\u0000\u080d\u0807\u0001\u0000\u0000\u0000"+ - "\u080d\u080e\u0001\u0000\u0000\u0000\u080e\u096a\u0001\u0000\u0000\u0000"+ - "\u080f\u0810\u0005\u019d\u0000\u0000\u0810\u0811\u0005\u01ad\u0000\u0000"+ - "\u0811\u096a\u0007\u000e\u0000\u0000\u0812\u0813\u0005\u019d\u0000\u0000"+ - "\u0813\u0814\u0005\u0137\u0000\u0000\u0814\u0817\u0005\u01b8\u0000\u0000"+ - "\u0815\u0816\u0007\u0006\u0000\u0000\u0816\u0818\u0003\u0146\u00a3\u0000"+ - "\u0817\u0815\u0001\u0000\u0000\u0000\u0817\u0818\u0001\u0000\u0000\u0000"+ - "\u0818\u081a\u0001\u0000\u0000\u0000\u0819\u081b\u0003P(\u0000\u081a\u0819"+ - "\u0001\u0000\u0000\u0000\u081a\u081b\u0001\u0000\u0000\u0000\u081b\u096a"+ - "\u0001\u0000\u0000\u0000\u081c\u081e\u0005\u019d\u0000\u0000\u081d\u081f"+ - "\u0005\u00be\u0000\u0000\u081e\u081d\u0001\u0000\u0000\u0000\u081e\u081f"+ - "\u0001\u0000\u0000\u0000\u081f\u0820\u0001\u0000\u0000\u0000\u0820\u0823"+ - "\u0005\u01ea\u0000\u0000\u0821\u0822\u0007\u0006\u0000\u0000\u0822\u0824"+ - "\u0003\u0146\u00a3\u0000\u0823\u0821\u0001\u0000\u0000\u0000\u0823\u0824"+ - "\u0001\u0000\u0000\u0000\u0824\u0826\u0001\u0000\u0000\u0000\u0825\u0827"+ - "\u0003P(\u0000\u0826\u0825\u0001\u0000\u0000\u0000\u0826\u0827\u0001\u0000"+ - "\u0000\u0000\u0827\u096a\u0001\u0000\u0000\u0000\u0828\u0829\u0005\u019d"+ - "\u0000\u0000\u0829\u082a\u0005c\u0000\u0000\u082a\u082b\u0005\u0118\u0000"+ - "\u0000\u082b\u082c\u0005\u01e9\u0000\u0000\u082c\u096a\u0003\u0146\u00a3"+ - "\u0000\u082d\u082e\u0005\u019d\u0000\u0000\u082e\u0830\u0005c\u0000\u0000"+ - "\u082f\u0831\u0003\u00aaU\u0000\u0830\u082f\u0001\u0000\u0000\u0000\u0830"+ - "\u0831\u0001\u0000\u0000\u0000\u0831\u0832\u0001\u0000\u0000\u0000\u0832"+ - "\u0833\u0005\u00bf\u0000\u0000\u0833\u0834\u0003\u0188\u00c4\u0000\u0834"+ - "\u0836\u0005\u0002\u0000\u0000\u0835\u0837\u0003\u0080@\u0000\u0836\u0835"+ - "\u0001\u0000\u0000\u0000\u0836\u0837\u0001\u0000\u0000\u0000\u0837\u0838"+ - "\u0001\u0000\u0000\u0000\u0838\u083b\u0005\u0003\u0000\u0000\u0839\u083a"+ - "\u0007\u0006\u0000\u0000\u083a\u083c\u0003\u0146\u00a3\u0000\u083b\u0839"+ - "\u0001\u0000\u0000\u0000\u083b\u083c\u0001\u0000\u0000\u0000\u083c\u096a"+ - "\u0001\u0000\u0000\u0000\u083d\u083e\u0005\u019d\u0000\u0000\u083e\u0841"+ - "\u0007\u000f\u0000\u0000\u083f\u0840\u0005\u00bb\u0000\u0000\u0840\u0842"+ - "\u0003\u01c0\u00e0\u0000\u0841\u083f\u0001\u0000\u0000\u0000\u0841\u0842"+ - "\u0001\u0000\u0000\u0000\u0842\u0844\u0001\u0000\u0000\u0000\u0843\u0845"+ - "\u0003P(\u0000\u0844\u0843\u0001\u0000\u0000\u0000\u0844\u0845\u0001\u0000"+ - "\u0000\u0000\u0845\u096a\u0001\u0000\u0000\u0000\u0846\u0848\u0005\u019d"+ - "\u0000\u0000\u0847\u0849\u0005\u00be\u0000\u0000\u0848\u0847\u0001\u0000"+ - "\u0000\u0000\u0848\u0849\u0001\u0000\u0000\u0000\u0849\u084a\u0001\u0000"+ - "\u0000\u0000\u084a\u084b\u0007\u0010\u0000\u0000\u084b\u084c\u0007\u0006"+ - "\u0000\u0000\u084c\u084f\u0003\u0146\u00a3\u0000\u084d\u084e\u0007\u0006"+ - "\u0000\u0000\u084e\u0850\u0003\u0146\u00a3\u0000\u084f\u084d\u0001\u0000"+ - "\u0000\u0000\u084f\u0850\u0001\u0000\u0000\u0000\u0850\u0852\u0001\u0000"+ - "\u0000\u0000\u0851\u0853\u0003P(\u0000\u0852\u0851\u0001\u0000\u0000\u0000"+ - "\u0852\u0853\u0001\u0000\u0000\u0000\u0853\u096a\u0001\u0000\u0000\u0000"+ - "\u0854\u0855\u0005\u019d\u0000\u0000\u0855\u0856\u0005\u0105\u0000\u0000"+ - "\u0856\u0863\u0005\u01ec\u0000\u0000\u0857\u0858\u0007\u0006\u0000\u0000"+ - "\u0858\u085a\u0003\u0146\u00a3\u0000\u0859\u0857\u0001\u0000\u0000\u0000"+ - "\u0859\u085a\u0001\u0000\u0000\u0000\u085a\u085c\u0001\u0000\u0000\u0000"+ - "\u085b\u085d\u0003P(\u0000\u085c\u085b\u0001\u0000\u0000\u0000\u085c\u085d"+ - "\u0001\u0000\u0000\u0000\u085d\u085f\u0001\u0000\u0000\u0000\u085e\u0860"+ - "\u0003\u0128\u0094\u0000\u085f\u085e\u0001\u0000\u0000\u0000\u085f\u0860"+ - "\u0001\u0000\u0000\u0000\u0860\u0864\u0001\u0000\u0000\u0000\u0861\u0862"+ - "\u0005\u0135\u0000\u0000\u0862\u0864\u0005\u0211\u0000\u0000\u0863\u0859"+ - "\u0001\u0000\u0000\u0000\u0863\u0861\u0001\u0000\u0000\u0000\u0864\u096a"+ - "\u0001\u0000\u0000\u0000\u0865\u0867\u0005\u019d\u0000\u0000\u0866\u0868"+ - "\u0005\u01ae\u0000\u0000\u0867\u0866\u0001\u0000\u0000\u0000\u0867\u0868"+ - "\u0001\u0000\u0000\u0000\u0868\u0869\u0001\u0000\u0000\u0000\u0869\u086c"+ - "\u0005\u0105\u0000\u0000\u086a\u086b\u0007\u0006\u0000\u0000\u086b\u086d"+ - "\u0003\u0146\u00a3\u0000\u086c\u086a\u0001\u0000\u0000\u0000\u086c\u086d"+ - "\u0001\u0000\u0000\u0000\u086d\u086f\u0001\u0000\u0000\u0000\u086e\u0870"+ - "\u0003P(\u0000\u086f\u086e\u0001\u0000\u0000\u0000\u086f\u0870\u0001\u0000"+ - "\u0000\u0000\u0870\u0872\u0001\u0000\u0000\u0000\u0871\u0873\u0003\u0124"+ - "\u0092\u0000\u0872\u0871\u0001\u0000\u0000\u0000\u0872\u0873\u0001\u0000"+ - "\u0000\u0000\u0873\u0875\u0001\u0000\u0000\u0000\u0874\u0876\u0003\u0128"+ - "\u0094\u0000\u0875\u0874\u0001\u0000\u0000\u0000\u0875\u0876\u0001\u0000"+ - "\u0000\u0000\u0876\u096a\u0001\u0000\u0000\u0000\u0877\u0878\u0005\u019d"+ - "\u0000\u0000\u0878\u087b\u0005\u00a7\u0000\u0000\u0879\u087a\u0007\u0006"+ - "\u0000\u0000\u087a\u087c\u0003\u0146\u00a3\u0000\u087b\u0879\u0001\u0000"+ - "\u0000\u0000\u087b\u087c\u0001\u0000\u0000\u0000\u087c\u087e\u0001\u0000"+ - "\u0000\u0000\u087d\u087f\u0003P(\u0000\u087e\u087d\u0001\u0000\u0000\u0000"+ - "\u087e\u087f\u0001\u0000\u0000\u0000\u087f\u0881\u0001\u0000\u0000\u0000"+ - "\u0880\u0882\u0003\u0124\u0092\u0000\u0881\u0880\u0001\u0000\u0000\u0000"+ - "\u0881\u0882\u0001\u0000\u0000\u0000\u0882\u0884\u0001\u0000\u0000\u0000"+ - "\u0883\u0885\u0003\u0128\u0094\u0000\u0884\u0883\u0001\u0000\u0000\u0000"+ - "\u0884\u0885\u0001\u0000\u0000\u0000\u0885\u096a\u0001\u0000\u0000\u0000"+ - "\u0886\u0887\u0005\u019d\u0000\u0000\u0887\u0888\u0005\u0015\u0000\u0000"+ - "\u0888\u088d\u0005\u01b7\u0000\u0000\u0889\u088e\u0005\u0189\u0000\u0000"+ - "\u088a\u088b\u0005\u0118\u0000\u0000\u088b\u088e\u0005\u01e9\u0000\u0000"+ - "\u088c\u088e\u0005O\u0000\u0000\u088d\u0889\u0001\u0000\u0000\u0000\u088d"+ - "\u088a\u0001\u0000\u0000\u0000\u088d\u088c\u0001\u0000\u0000\u0000\u088e"+ - "\u0891\u0001\u0000\u0000\u0000\u088f\u0890\u0007\u0006\u0000\u0000\u0890"+ - "\u0892\u0003\u0146\u00a3\u0000\u0891\u088f\u0001\u0000\u0000\u0000\u0891"+ - "\u0892\u0001\u0000\u0000\u0000\u0892\u0894\u0001\u0000\u0000\u0000\u0893"+ - "\u0895\u0003P(\u0000\u0894\u0893\u0001\u0000\u0000\u0000\u0894\u0895\u0001"+ - "\u0000\u0000\u0000\u0895\u0897\u0001\u0000\u0000\u0000\u0896\u0898\u0003"+ - "\u0124\u0092\u0000\u0897\u0896\u0001\u0000\u0000\u0000\u0897\u0898\u0001"+ - "\u0000\u0000\u0000\u0898\u089a\u0001\u0000\u0000\u0000\u0899\u089b\u0003"+ - "\u0128\u0094\u0000\u089a\u0899\u0001\u0000\u0000\u0000\u089a\u089b\u0001"+ - "\u0000\u0000\u0000\u089b\u096a\u0001\u0000\u0000\u0000\u089c\u089e\u0005"+ - "\u019d\u0000\u0000\u089d\u089f\u0005\u01be\u0000\u0000\u089e\u089d\u0001"+ - "\u0000\u0000\u0000\u089e\u089f\u0001\u0000\u0000\u0000\u089f\u08a0\u0001"+ - "\u0000\u0000\u0000\u08a0\u08a1\u0005\u0142\u0000\u0000\u08a1\u08a2\u0005"+ - "\u00bb\u0000\u0000\u08a2\u08a4\u0003\u0146\u00a3\u0000\u08a3\u08a5\u0003"+ - "P(\u0000\u08a4\u08a3\u0001\u0000\u0000\u0000\u08a4\u08a5\u0001\u0000\u0000"+ - "\u0000\u08a5\u08a7\u0001\u0000\u0000\u0000\u08a6\u08a8\u0003\u0124\u0092"+ - "\u0000\u08a7\u08a6\u0001\u0000\u0000\u0000\u08a7\u08a8\u0001\u0000\u0000"+ - "\u0000\u08a8\u08aa\u0001\u0000\u0000\u0000\u08a9\u08ab\u0003\u0128\u0094"+ - "\u0000\u08aa\u08a9\u0001\u0000\u0000\u0000\u08aa\u08ab\u0001\u0000\u0000"+ - "\u0000\u08ab\u096a\u0001\u0000\u0000\u0000\u08ac\u08ad\u0005\u019d\u0000"+ - "\u0000\u08ad\u08ae\u0005\u01ba\u0000\u0000\u08ae\u096a\u0005\u0216\u0000"+ - "\u0000\u08af\u08b0\u0005\u019d\u0000\u0000\u08b0\u08b1\u0005\u01bb\u0000"+ - "\u0000\u08b1\u08b2\u0005\u00bb\u0000\u0000\u08b2\u08b4\u0003\u0146\u00a3"+ - "\u0000\u08b3\u08b5\u0003\u00a0P\u0000\u08b4\u08b3\u0001\u0000\u0000\u0000"+ - "\u08b4\u08b5\u0001\u0000\u0000\u0000\u08b5\u08b7\u0001\u0000\u0000\u0000"+ - "\u08b6\u08b8\u0003P(\u0000\u08b7\u08b6\u0001\u0000\u0000\u0000\u08b7\u08b8"+ - "\u0001\u0000\u0000\u0000\u08b8\u08ba\u0001\u0000\u0000\u0000\u08b9\u08bb"+ - "\u0003\u0124\u0092\u0000\u08ba\u08b9\u0001\u0000\u0000\u0000\u08ba\u08bb"+ - "\u0001\u0000\u0000\u0000\u08bb\u08bd\u0001\u0000\u0000\u0000\u08bc\u08be"+ - "\u0003\u0128\u0094\u0000\u08bd\u08bc\u0001\u0000\u0000\u0000\u08bd\u08be"+ - "\u0001\u0000\u0000\u0000\u08be\u096a\u0001\u0000\u0000\u0000\u08bf\u08c0"+ - "\u0005\u019d\u0000\u0000\u08c0\u08c3\u0005%\u0000\u0000\u08c1\u08c2\u0007"+ - "\u0006\u0000\u0000\u08c2\u08c4\u0003\u0146\u00a3\u0000\u08c3\u08c1\u0001"+ - "\u0000\u0000\u0000\u08c3\u08c4\u0001\u0000\u0000\u0000\u08c4\u08c6\u0001"+ - "\u0000\u0000\u0000\u08c5\u08c7\u0003P(\u0000\u08c6\u08c5\u0001\u0000\u0000"+ - "\u0000\u08c6\u08c7\u0001\u0000\u0000\u0000\u08c7\u096a\u0001\u0000\u0000"+ - "\u0000\u08c8\u08ca\u0005\u019d\u0000\u0000\u08c9\u08cb\u00055\u0000\u0000"+ - "\u08ca\u08c9\u0001\u0000\u0000\u0000\u08ca\u08cb\u0001\u0000\u0000\u0000"+ - "\u08cb\u08cc\u0001\u0000\u0000\u0000\u08cc\u08cf\u0005\u017e\u0000\u0000"+ - "\u08cd\u08ce\u0007\u0006\u0000\u0000\u08ce\u08d0\u0003\u0146\u00a3\u0000"+ - "\u08cf\u08cd\u0001\u0000\u0000\u0000\u08cf\u08d0\u0001\u0000\u0000\u0000"+ - "\u08d0\u08d2\u0001\u0000\u0000\u0000\u08d1\u08d3\u0003P(\u0000\u08d2\u08d1"+ - "\u0001\u0000\u0000\u0000\u08d2\u08d3\u0001\u0000\u0000\u0000\u08d3\u096a"+ - "\u0001\u0000\u0000\u0000\u08d4\u08d5\u0005\u019d\u0000\u0000\u08d5\u08d7"+ - "\u0005\u017d\u0000\u0000\u08d6\u08d8\u0003P(\u0000\u08d7\u08d6\u0001\u0000"+ - "\u0000\u0000\u08d7\u08d8\u0001\u0000\u0000\u0000\u08d8\u08da\u0001\u0000"+ - "\u0000\u0000\u08d9\u08db\u0003\u0124\u0092\u0000\u08da\u08d9\u0001\u0000"+ - "\u0000\u0000\u08da\u08db\u0001\u0000\u0000\u0000\u08db\u08dd\u0001\u0000"+ - "\u0000\u0000\u08dc\u08de\u0003\u0128\u0094\u0000\u08dd\u08dc\u0001\u0000"+ - "\u0000\u0000\u08dd\u08de\u0001\u0000\u0000\u0000\u08de\u096a\u0001\u0000"+ - "\u0000\u0000\u08df\u08e0\u0005\u019d\u0000\u0000\u08e0\u08e1\u0005\u01f3"+ - "\u0000\u0000\u08e1\u08e3\u0005\u00c9\u0000\u0000\u08e2\u08e4\u0003P(\u0000"+ - "\u08e3\u08e2\u0001\u0000\u0000\u0000\u08e3\u08e4\u0001\u0000\u0000\u0000"+ - "\u08e4\u096a\u0001\u0000\u0000\u0000\u08e5\u08e6\u0005\u019d\u0000\u0000"+ - "\u08e6\u08e7\u0005\u01a1\u0000\u0000\u08e7\u08e8\u0005\u0135\u0000\u0000"+ - "\u08e8\u08ea\u0003\u01c0\u00e0\u0000\u08e9\u08eb\u0003P(\u0000\u08ea\u08e9"+ - "\u0001\u0000\u0000\u0000\u08ea\u08eb\u0001\u0000\u0000\u0000\u08eb\u096a"+ - "\u0001\u0000\u0000\u0000\u08ec\u08ee\u0005\u019d\u0000\u0000\u08ed\u08ef"+ - "\u0005\u00be\u0000\u0000\u08ee\u08ed\u0001\u0000\u0000\u0000\u08ee\u08ef"+ - "\u0001\u0000\u0000\u0000\u08ef\u08f1\u0001\u0000\u0000\u0000\u08f0\u08f2"+ - "\u00059\u0000\u0000\u08f1\u08f0\u0001\u0000\u0000\u0000\u08f1\u08f2\u0001"+ - "\u0000\u0000\u0000\u08f2\u08f3\u0001\u0000\u0000\u0000\u08f3\u08f6\u0005"+ - "\u00c0\u0000\u0000\u08f4\u08f5\u0007\u0006\u0000\u0000\u08f5\u08f7\u0003"+ - "\u0146\u00a3\u0000\u08f6\u08f4\u0001\u0000\u0000\u0000\u08f6\u08f7\u0001"+ - "\u0000\u0000\u0000\u08f7\u08f9\u0001\u0000\u0000\u0000\u08f8\u08fa\u0003"+ - "P(\u0000\u08f9\u08f8\u0001\u0000\u0000\u0000\u08f9\u08fa\u0001\u0000\u0000"+ - "\u0000\u08fa\u096a\u0001\u0000\u0000\u0000\u08fb\u08fc\u0005\u019d\u0000"+ - "\u0000\u08fc\u08fe\u0005\u00c3\u0000\u0000\u08fd\u08ff\u0005\u00be\u0000"+ - "\u0000\u08fe\u08fd\u0001\u0000\u0000\u0000\u08fe\u08ff\u0001\u0000\u0000"+ - "\u0000\u08ff\u0900\u0001\u0000\u0000\u0000\u0900\u0902\u0005\u00c0\u0000"+ - "\u0000\u0901\u0903\u0003P(\u0000\u0902\u0901\u0001\u0000\u0000\u0000\u0902"+ - "\u0903\u0001\u0000\u0000\u0000\u0903\u096a\u0001\u0000\u0000\u0000\u0904"+ - "\u0905\u0005\u019d\u0000\u0000\u0905\u0908\u0005\u01cf\u0000\u0000\u0906"+ - "\u0907\u0007\u0006\u0000\u0000\u0907\u0909\u0003\u0146\u00a3\u0000\u0908"+ - "\u0906\u0001\u0000\u0000\u0000\u0908\u0909\u0001\u0000\u0000\u0000\u0909"+ - "\u096a\u0001\u0000\u0000\u0000\u090a\u090b\u0005\u019d\u0000\u0000\u090b"+ - "\u090c\u0007\u0011\u0000\u0000\u090c\u090d\u0007\u0006\u0000\u0000\u090d"+ - "\u0910\u0003\u0146\u00a3\u0000\u090e\u090f\u0007\u0006\u0000\u0000\u090f"+ - "\u0911\u0003\u0146\u00a3\u0000\u0910\u090e\u0001\u0000\u0000\u0000\u0910"+ - "\u0911\u0001\u0000\u0000\u0000\u0911\u096a\u0001\u0000\u0000\u0000\u0912"+ - "\u0913\u0005\u019d\u0000\u0000\u0913\u0916\u0005\u01c7\u0000\u0000\u0914"+ - "\u0915\u0007\u0006\u0000\u0000\u0915\u0917\u0003\u0146\u00a3\u0000\u0916"+ - "\u0914\u0001\u0000\u0000\u0000\u0916\u0917\u0001\u0000\u0000\u0000\u0917"+ - "\u0919\u0001\u0000\u0000\u0000\u0918\u091a\u0003P(\u0000\u0919\u0918\u0001"+ - "\u0000\u0000\u0000\u0919\u091a\u0001\u0000\u0000\u0000\u091a\u096a\u0001"+ - "\u0000\u0000\u0000\u091b\u091c\u0005\u019d\u0000\u0000\u091c\u091d\u0005"+ - "<\u0000\u0000\u091d\u091e\u0005\u00d2\u0000\u0000\u091e\u096a\u0005\u0211"+ - "\u0000\u0000\u091f\u0920\u0005\u019d\u0000\u0000\u0920\u0921\u0005B\u0000"+ - "\u0000\u0921\u0922\u0005\u016e\u0000\u0000\u0922\u0924\u0005*\u0000\u0000"+ - "\u0923\u0925\u0003P(\u0000\u0924\u0923\u0001\u0000\u0000\u0000\u0924\u0925"+ - "\u0001\u0000\u0000\u0000\u0925\u096a\u0001\u0000\u0000\u0000\u0926\u0927"+ - "\u0005\u019d\u0000\u0000\u0927\u0928\u0005\u0162\u0000\u0000\u0928\u0933"+ - "\u0005\u01aa\u0000\u0000\u0929\u092a\u0005\u00b6\u0000\u0000\u092a\u0934"+ - "\u0003\u01c0\u00e0\u0000\u092b\u092c\u0005\u00bb\u0000\u0000\u092c\u0931"+ - "\u0003\u0146\u00a3\u0000\u092d\u092f\u0005\u0014\u0000\u0000\u092e\u0930"+ - "\u0005\u01e7\u0000\u0000\u092f\u092e\u0001\u0000\u0000\u0000\u092f\u0930"+ - "\u0001\u0000\u0000\u0000\u0930\u0932\u0001\u0000\u0000\u0000\u0931\u092d"+ - "\u0001\u0000\u0000\u0000\u0931\u0932\u0001\u0000\u0000\u0000\u0932\u0934"+ - "\u0001\u0000\u0000\u0000\u0933\u0929\u0001\u0000\u0000\u0000\u0933\u092b"+ - "\u0001\u0000\u0000\u0000\u0933\u0934\u0001\u0000\u0000\u0000\u0934\u096a"+ - "\u0001\u0000\u0000\u0000\u0935\u0936\u0005\u019d\u0000\u0000\u0936\u0937"+ - "\u00058\u0000\u0000\u0937\u093a\u0005\u00db\u0000\u0000\u0938\u0939\u0007"+ - "\u0006\u0000\u0000\u0939\u093b\u0003\u0146\u00a3\u0000\u093a\u0938\u0001"+ - "\u0000\u0000\u0000\u093a\u093b\u0001\u0000\u0000\u0000\u093b\u093d\u0001"+ - "\u0000\u0000\u0000\u093c\u093e\u0003P(\u0000\u093d\u093c\u0001\u0000\u0000"+ - "\u0000\u093d\u093e\u0001\u0000\u0000\u0000\u093e\u0940\u0001\u0000\u0000"+ - "\u0000\u093f\u0941\u0003\u0124\u0092\u0000\u0940\u093f\u0001\u0000\u0000"+ - "\u0000\u0940\u0941\u0001\u0000\u0000\u0000\u0941\u0943\u0001\u0000\u0000"+ - "\u0000\u0942\u0944\u0003\u0128\u0094\u0000\u0943\u0942\u0001\u0000\u0000"+ - "\u0000\u0943\u0944\u0001\u0000\u0000\u0000\u0944\u096a\u0001\u0000\u0000"+ - "\u0000\u0945\u0949\u0005\u019d\u0000\u0000\u0946\u094a\u0005J\u0000\u0000"+ - "\u0947\u0948\u0005W\u0000\u0000\u0948\u094a\u0005\u00c9\u0000\u0000\u0949"+ - "\u0946\u0001\u0000\u0000\u0000\u0949\u0947\u0001\u0000\u0000\u0000\u094a"+ - "\u096a\u0001\u0000\u0000\u0000\u094b\u094c\u0005\u019d\u0000\u0000\u094c"+ - "\u094d\u0005\u0179\u0000\u0000\u094d\u094e\u0005\u01ab\u0000\u0000\u094e"+ - "\u094f\u0005\u00bb\u0000\u0000\u094f\u0951\u0003N\'\u0000\u0950\u0952"+ - "\u0003P(\u0000\u0951\u0950\u0001\u0000\u0000\u0000\u0951\u0952\u0001\u0000"+ - "\u0000\u0000\u0952\u096a\u0001\u0000\u0000\u0000\u0953\u0954\u0005\u019d"+ - "\u0000\u0000\u0954\u0957\u0005a\u0000\u0000\u0955\u0956\u0007\u0006\u0000"+ - "\u0000\u0956\u0958\u0003\u0146\u00a3\u0000\u0957\u0955\u0001\u0000\u0000"+ - "\u0000\u0957\u0958\u0001\u0000\u0000\u0000\u0958\u095a\u0001\u0000\u0000"+ - "\u0000\u0959\u095b\u0003\u00f8|\u0000\u095a\u0959\u0001\u0000\u0000\u0000"+ - "\u095a\u095b\u0001\u0000\u0000\u0000\u095b\u095d\u0001\u0000\u0000\u0000"+ - "\u095c\u095e\u0003\u0124\u0092\u0000\u095d\u095c\u0001\u0000\u0000\u0000"+ - "\u095d\u095e\u0001\u0000\u0000\u0000\u095e\u0960\u0001\u0000\u0000\u0000"+ - "\u095f\u0961\u0003\u0128\u0094\u0000\u0960\u095f\u0001\u0000\u0000\u0000"+ - "\u0960\u0961\u0001\u0000\u0000\u0000\u0961\u096a\u0001\u0000\u0000\u0000"+ - "\u0962\u0963\u0005\u019d\u0000\u0000\u0963\u0964\u0005\u01eb\u0000\u0000"+ - "\u0964\u0965\u0005\u01d9\u0000\u0000\u0965\u0967\u0005\u00ef\u0000\u0000"+ - "\u0966\u0968\u0003P(\u0000\u0967\u0966\u0001\u0000\u0000\u0000\u0967\u0968"+ - "\u0001\u0000\u0000\u0000\u0968\u096a\u0001\u0000\u0000\u0000\u0969\u0804"+ - "\u0001\u0000\u0000\u0000\u0969\u080f\u0001\u0000\u0000\u0000\u0969\u0812"+ - "\u0001\u0000\u0000\u0000\u0969\u081c\u0001\u0000\u0000\u0000\u0969\u0828"+ - "\u0001\u0000\u0000\u0000\u0969\u082d\u0001\u0000\u0000\u0000\u0969\u083d"+ - "\u0001\u0000\u0000\u0000\u0969\u0846\u0001\u0000\u0000\u0000\u0969\u0854"+ - "\u0001\u0000\u0000\u0000\u0969\u0865\u0001\u0000\u0000\u0000\u0969\u0877"+ - "\u0001\u0000\u0000\u0000\u0969\u0886\u0001\u0000\u0000\u0000\u0969\u089c"+ - "\u0001\u0000\u0000\u0000\u0969\u08ac\u0001\u0000\u0000\u0000\u0969\u08af"+ - "\u0001\u0000\u0000\u0000\u0969\u08bf\u0001\u0000\u0000\u0000\u0969\u08c8"+ - "\u0001\u0000\u0000\u0000\u0969\u08d4\u0001\u0000\u0000\u0000\u0969\u08df"+ - "\u0001\u0000\u0000\u0000\u0969\u08e5\u0001\u0000\u0000\u0000\u0969\u08ec"+ - "\u0001\u0000\u0000\u0000\u0969\u08fb\u0001\u0000\u0000\u0000\u0969\u0904"+ - "\u0001\u0000\u0000\u0000\u0969\u090a\u0001\u0000\u0000\u0000\u0969\u0912"+ - "\u0001\u0000\u0000\u0000\u0969\u091b\u0001\u0000\u0000\u0000\u0969\u091f"+ - "\u0001\u0000\u0000\u0000\u0969\u0926\u0001\u0000\u0000\u0000\u0969\u0935"+ - "\u0001\u0000\u0000\u0000\u0969\u0945\u0001\u0000\u0000\u0000\u0969\u094b"+ - "\u0001\u0000\u0000\u0000\u0969\u0953\u0001\u0000\u0000\u0000\u0969\u0962"+ - "\u0001\u0000\u0000\u0000\u096a%\u0001\u0000\u0000\u0000\u096b\u096c\u0005"+ - "c\u0000\u0000\u096c\u096d\u0005\u018a\u0000\u0000\u096d\u096e\u0005\u0105"+ - "\u0000\u0000\u096e\u0971\u0003\u0146\u00a3\u0000\u096f\u0970\u0005\u0135"+ - "\u0000\u0000\u0970\u0972\u0003\u01c0\u00e0\u0000\u0971\u096f\u0001\u0000"+ - "\u0000\u0000\u0971\u0972\u0001\u0000\u0000\u0000\u0972\u0975\u0001\u0000"+ - "\u0000\u0000\u0973\u0974\u0005\u01f1\u0000\u0000\u0974\u0976\u0007\u0012"+ - "\u0000\u0000\u0975\u0973\u0001\u0000\u0000\u0000\u0975\u0976\u0001\u0000"+ - "\u0000\u0000\u0976\u097f\u0001\u0000\u0000\u0000\u0977\u097c\u0003*\u0015"+ - "\u0000\u0978\u0979\u0005\u0004\u0000\u0000\u0979\u097b\u0003*\u0015\u0000"+ - "\u097a\u0978\u0001\u0000\u0000\u0000\u097b\u097e\u0001\u0000\u0000\u0000"+ - "\u097c\u097a\u0001\u0000\u0000\u0000\u097c\u097d\u0001\u0000\u0000\u0000"+ - "\u097d\u0980\u0001\u0000\u0000\u0000\u097e\u097c\u0001\u0000\u0000\u0000"+ - "\u097f\u0977\u0001\u0000\u0000\u0000\u097f\u0980\u0001\u0000\u0000\u0000"+ - "\u0980\u0982\u0001\u0000\u0000\u0000\u0981\u0983\u0003\u013a\u009d\u0000"+ - "\u0982\u0981\u0001\u0000\u0000\u0000\u0982\u0983\u0001\u0000\u0000\u0000"+ - "\u0983\u0984\u0001\u0000\u0000\u0000\u0984\u0985\u0005\u00bb\u0000\u0000"+ - "\u0985\u0986\u0003\u01c0\u00e0\u0000\u0986\u0987\u0005\u0002\u0000\u0000"+ - "\u0987\u0988\u0003\u013c\u009e\u0000\u0988\u098a\u0005\u0003\u0000\u0000"+ - "\u0989\u098b\u0003\u01b4\u00da\u0000\u098a\u0989\u0001\u0000\u0000\u0000"+ - "\u098a\u098b\u0001\u0000\u0000\u0000\u098b\'\u0001\u0000\u0000\u0000\u098c"+ - "\u098d\u0005\u0105\u0000\u0000\u098d\u0993\u0003\u00deo\u0000\u098e\u098f"+ - "\u0005\u015e\u0000\u0000\u098f\u0990\u0005\u0002\u0000\u0000\u0990\u0991"+ - "\u0003\u013c\u009e\u0000\u0991\u0992\u0005\u0003\u0000\u0000\u0992\u0994"+ - "\u0001\u0000\u0000\u0000\u0993\u098e\u0001\u0000\u0000\u0000\u0993\u0994"+ - "\u0001\u0000\u0000\u0000\u0994\u0996\u0001\u0000\u0000\u0000\u0995\u0997"+ - "\u0003\u01b4\u00da\u0000\u0996\u0995\u0001\u0000\u0000\u0000\u0996\u0997"+ - "\u0001\u0000\u0000\u0000\u0997\u09f0\u0001\u0000\u0000\u0000\u0998\u0999"+ - "\u0005c\u0000\u0000\u0999\u099a\u0005\u01b5\u0000\u0000\u099a\u099b\u0003"+ - "\u0146\u00a3\u0000\u099b\u099c\u0005\u0002\u0000\u0000\u099c\u099d\u0003"+ - "8\u001c\u0000\u099d\u099e\u0005\u0003\u0000\u0000\u099e\u099f\u0005\u00bb"+ - "\u0000\u0000\u099f\u09a0\u0005,\u0000\u0000\u09a0\u09a1\u0005\u0002\u0000"+ - "\u0000\u09a1\u09a2\u0003\u013c\u009e\u0000\u09a2\u09a4\u0005\u0003\u0000"+ - "\u0000\u09a3\u09a5\u0003\u013a\u009d\u0000\u09a4\u09a3\u0001\u0000\u0000"+ - "\u0000\u09a4\u09a5\u0001\u0000\u0000\u0000\u09a5\u09f0\u0001\u0000\u0000"+ - "\u0000\u09a6\u09a7\u0005\u01ac\u0000\u0000\u09a7\u09a8\u0005\u01b5\u0000"+ - "\u0000\u09a8\u09a9\u0005\u00ef\u0000\u0000\u09a9\u09f0\u0003\u0146\u00a3"+ - "\u0000\u09aa\u09ab\u0005\u0180\u0000\u0000\u09ab\u09ac\u0005\u01b5\u0000"+ - "\u0000\u09ac\u09ad\u0005\u00ef\u0000\u0000\u09ad\u09f0\u0003\u0146\u00a3"+ - "\u0000\u09ae\u09af\u0005\u0149\u0000\u0000\u09af\u09b0\u0005\u01b5\u0000"+ - "\u0000\u09b0\u09b1\u0005\u00ef\u0000\u0000\u09b1\u09f0\u0003\u0146\u00a3"+ - "\u0000\u09b2\u09b3\u0005\u0149\u0000\u0000\u09b3\u09b4\u0005\u018a\u0000"+ - "\u0000\u09b4\u09b5\u0005\u0105\u0000\u0000\u09b5\u09b6\u0005\u00b6\u0000"+ - "\u0000\u09b6\u09f0\u0003\u0146\u00a3\u0000\u09b7\u09b8\u0005\u0149\u0000"+ - "\u0000\u09b8\u09b9\u0005\u0014\u0000\u0000\u09b9\u09ba\u0005\u018a\u0000"+ - "\u0000\u09ba\u09f0\u0005\u0105\u0000\u0000\u09bb\u09bc\u0005\u0180\u0000"+ - "\u0000\u09bc\u09bd\u0005\u018a\u0000\u0000\u09bd\u09be\u0005\u0105\u0000"+ - "\u0000\u09be\u09bf\u0005\u00b6\u0000\u0000\u09bf\u09f0\u0003\u0146\u00a3"+ - "\u0000\u09c0\u09c1\u0005\u0180\u0000\u0000\u09c1\u09c2\u0005\u0014\u0000"+ - "\u0000\u09c2\u09c3\u0005\u018a\u0000\u0000\u09c3\u09f0\u0005\u0105\u0000"+ - "\u0000\u09c4\u09c5\u0005\u01ac\u0000\u0000\u09c5\u09c6\u0005\u018a\u0000"+ - "\u0000\u09c6\u09c7\u0005\u0105\u0000\u0000\u09c7\u09c8\u0005\u00b6\u0000"+ - "\u0000\u09c8\u09f0\u0003\u0146\u00a3\u0000\u09c9\u09cb\u0005\u019d\u0000"+ - "\u0000\u09ca\u09cc\u0005\u0014\u0000\u0000\u09cb\u09ca\u0001\u0000\u0000"+ - "\u0000\u09cb\u09cc\u0001\u0000\u0000\u0000\u09cc\u09cd\u0001\u0000\u0000"+ - "\u0000\u09cd\u09ce\u0005\u018a\u0000\u0000\u09ce\u09d4\u0005\u0105\u0000"+ - "\u0000\u09cf\u09d0\u0005\u00b6\u0000\u0000\u09d0\u09d5\u0003\u0146\u00a3"+ - "\u0000\u09d1\u09d3\u0003P(\u0000\u09d2\u09d1\u0001\u0000\u0000\u0000\u09d2"+ - "\u09d3\u0001\u0000\u0000\u0000\u09d3\u09d5\u0001\u0000\u0000\u0000\u09d4"+ - "\u09cf\u0001\u0000\u0000\u0000\u09d4\u09d2\u0001\u0000\u0000\u0000\u09d5"+ - "\u09f0\u0001\u0000\u0000\u0000\u09d6\u09d7\u0005\u019d\u0000\u0000\u09d7"+ - "\u09d8\u0005\u018a\u0000\u0000\u09d8\u09d9\u0005\u0105\u0000\u0000\u09d9"+ - "\u09dc\u0005\u01bc\u0000\u0000\u09da\u09db\u0007\u0006\u0000\u0000\u09db"+ - "\u09dd\u0003\u01c0\u00e0\u0000\u09dc\u09da\u0001\u0000\u0000\u0000\u09dc"+ - "\u09dd\u0001\u0000\u0000\u0000\u09dd\u09df\u0001\u0000\u0000\u0000\u09de"+ - "\u09e0\u0003P(\u0000\u09df\u09de\u0001\u0000\u0000\u0000\u09df\u09e0\u0001"+ - "\u0000\u0000\u0000\u09e0\u09f0\u0001\u0000\u0000\u0000\u09e1\u09e3\u0005"+ - "\u019d\u0000\u0000\u09e2\u09e4\u0005\u0014\u0000\u0000\u09e3\u09e2\u0001"+ - "\u0000\u0000\u0000\u09e3\u09e4\u0001\u0000\u0000\u0000\u09e4\u09e5\u0001"+ - "\u0000\u0000\u0000\u09e5\u09e6\u0005c\u0000\u0000\u09e6\u09e7\u0005\u018a"+ - "\u0000\u0000\u09e7\u09e8\u0005\u0105\u0000\u0000\u09e8\u09e9\u0005\u00b6"+ - "\u0000\u0000\u09e9\u09f0\u0003\u0146\u00a3\u0000\u09ea\u09eb\u0005\u019d"+ - "\u0000\u0000\u09eb\u09ec\u0005c\u0000\u0000\u09ec\u09ed\u0005\u0105\u0000"+ - "\u0000\u09ed\u09ee\u0005\u00b6\u0000\u0000\u09ee\u09f0\u0003\u0146\u00a3"+ - "\u0000\u09ef\u098c\u0001\u0000\u0000\u0000\u09ef\u0998\u0001\u0000\u0000"+ - "\u0000\u09ef\u09a6\u0001\u0000\u0000\u0000\u09ef\u09aa\u0001\u0000\u0000"+ - "\u0000\u09ef\u09ae\u0001\u0000\u0000\u0000\u09ef\u09b2\u0001\u0000\u0000"+ - "\u0000\u09ef\u09b7\u0001\u0000\u0000\u0000\u09ef\u09bb\u0001\u0000\u0000"+ - "\u0000\u09ef\u09c0\u0001\u0000\u0000\u0000\u09ef\u09c4\u0001\u0000\u0000"+ - "\u0000\u09ef\u09c9\u0001\u0000\u0000\u0000\u09ef\u09d6\u0001\u0000\u0000"+ - "\u0000\u09ef\u09e1\u0001\u0000\u0000\u0000\u09ef\u09ea\u0001\u0000\u0000"+ - "\u0000\u09f0)\u0001\u0000\u0000\u0000\u09f1\u09f2\u0005P\u0000\u0000\u09f2"+ - "\u09f3\u0005\u01bf\u0000\u0000\u09f3\u09f4\u0005;\u0000\u0000\u09f4\u09fc"+ - "\u0005\u0211\u0000\u0000\u09f5\u09fc\u00034\u001a\u0000\u09f6\u09fc\u0003"+ - "2\u0019\u0000\u09f7\u09fc\u00030\u0018\u0000\u09f8\u09fc\u0003.\u0017"+ - "\u0000\u09f9\u09fc\u0003,\u0016\u0000\u09fa\u09fc\u0003\u00a0P\u0000\u09fb"+ - "\u09f1\u0001\u0000\u0000\u0000\u09fb\u09f5\u0001\u0000\u0000\u0000\u09fb"+ - "\u09f6\u0001\u0000\u0000\u0000\u09fb\u09f7\u0001\u0000\u0000\u0000\u09fb"+ - "\u09f8\u0001\u0000\u0000\u0000\u09fb\u09f9\u0001\u0000\u0000\u0000\u09fb"+ - "\u09fa\u0001\u0000\u0000\u0000\u09fc+\u0001\u0000\u0000\u0000\u09fd\u09fe"+ - "\u0005\u013a\u0000\u0000\u09fe\u09ff\u0005;\u0000\u0000\u09ff\u0a00\u0003"+ - "\u01c0\u00e0\u0000\u0a00-\u0001\u0000\u0000\u0000\u0a01\u0a02\u0005~\u0000"+ - "\u0000\u0a02\u0a03\u0005\u0135\u0000\u0000\u0a03\u0a04\u0003\u0176\u00bb"+ - "\u0000\u0a04/\u0001\u0000\u0000\u0000\u0a05\u0a06\u0005\u01ef\u0000\u0000"+ - "\u0a06\u0a07\u0003\u0176\u00bb\u0000\u0a071\u0001\u0000\u0000\u0000\u0a08"+ - "\u0a09\u0005\u0157\u0000\u0000\u0a09\u0a0a\u0005\u00b1\u0000\u0000\u0a0a"+ - "\u0a0b\u0003\u0176\u00bb\u0000\u0a0b3\u0001\u0000\u0000\u0000\u0a0c\u0a0d"+ - "\u0005P\u0000\u0000\u0a0d\u0a0e\u0005\u0002\u0000\u0000\u0a0e\u0a13\u0003"+ - "6\u001b\u0000\u0a0f\u0a10\u0005\u0004\u0000\u0000\u0a10\u0a12\u00036\u001b"+ - "\u0000\u0a11\u0a0f\u0001\u0000\u0000\u0000\u0a12\u0a15\u0001\u0000\u0000"+ - "\u0000\u0a13\u0a11\u0001\u0000\u0000\u0000\u0a13\u0a14\u0001\u0000\u0000"+ - "\u0000\u0a14\u0a16\u0001\u0000\u0000\u0000\u0a15\u0a13\u0001\u0000\u0000"+ - "\u0000\u0a16\u0a17\u0005\u0003\u0000\u0000\u0a175\u0001\u0000\u0000\u0000"+ - "\u0a18\u0a1b\u0003\u01c0\u00e0\u0000\u0a19\u0a1a\u0005\u01f7\u0000\u0000"+ - "\u0a1a\u0a1c\u0003\u0176\u00bb\u0000\u0a1b\u0a19\u0001\u0000\u0000\u0000"+ - "\u0a1b\u0a1c\u0001\u0000\u0000\u0000\u0a1c\u0a26\u0001\u0000\u0000\u0000"+ - "\u0a1d\u0a1e\u0005\u0002\u0000\u0000\u0a1e\u0a21\u0003\u01c0\u00e0\u0000"+ - "\u0a1f\u0a20\u0005\u01f7\u0000\u0000\u0a20\u0a22\u0003\u0176\u00bb\u0000"+ - "\u0a21\u0a1f\u0001\u0000\u0000\u0000\u0a21\u0a22\u0001\u0000\u0000\u0000"+ - "\u0a22\u0a23\u0001\u0000\u0000\u0000\u0a23\u0a24\u0005\u0003\u0000\u0000"+ - "\u0a24\u0a26\u0001\u0000\u0000\u0000\u0a25\u0a18\u0001\u0000\u0000\u0000"+ - "\u0a25\u0a1d\u0001\u0000\u0000\u0000\u0a267\u0001\u0000\u0000\u0000\u0a27"+ - "\u0a2c\u0003:\u001d\u0000\u0a28\u0a29\u0005\u0004\u0000\u0000\u0a29\u0a2b"+ - "\u0003:\u001d\u0000\u0a2a\u0a28\u0001\u0000\u0000\u0000\u0a2b\u0a2e\u0001"+ - "\u0000\u0000\u0000\u0a2c\u0a2a\u0001\u0000\u0000\u0000\u0a2c\u0a2d\u0001"+ - "\u0000\u0000\u0000\u0a2d9\u0001\u0000\u0000\u0000\u0a2e\u0a2c\u0001\u0000"+ - "\u0000\u0000\u0a2f\u0a30\u0005\u00bb\u0000\u0000\u0a30\u0a31\u0003\u0146"+ - "\u00a3\u0000\u0a31\u0a32\u0005\u00e6\u0000\u0000\u0a32\u0a34\u0003\u0146"+ - "\u00a3\u0000\u0a33\u0a35\u0003\u00a0P\u0000\u0a34\u0a33\u0001\u0000\u0000"+ - "\u0000\u0a34\u0a35\u0001\u0000\u0000\u0000\u0a35\u0a37\u0001\u0000\u0000"+ - "\u0000\u0a36\u0a38\u0003\u0130\u0098\u0000\u0a37\u0a36\u0001\u0000\u0000"+ - "\u0000\u0a37\u0a38\u0001\u0000\u0000\u0000\u0a38;\u0001\u0000\u0000\u0000"+ - "\u0a39\u0a3a\u0005\u016f\u0000\u0000\u0a3a\u0a3b\u0005B\u0000\u0000\u0a3b"+ - "\u0a3d\u0003\u01c0\u00e0\u0000\u0a3c\u0a3e\u0003\u013a\u009d\u0000\u0a3d"+ - "\u0a3c\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0001\u0000\u0000\u0000\u0a3e"+ - "\u0a49\u0001\u0000\u0000\u0000\u0a3f\u0a40\u0005\u016f\u0000\u0000\u0a40"+ - "\u0a41\u0005o\u0000\u0000\u0a41\u0a43\u0003\u0146\u00a3\u0000\u0a42\u0a44"+ - "\u0003\u013a\u009d\u0000\u0a43\u0a42\u0001\u0000\u0000\u0000\u0a43\u0a44"+ - "\u0001\u0000\u0000\u0000\u0a44\u0a49\u0001\u0000\u0000\u0000\u0a45\u0a46"+ - "\u0005\u016f\u0000\u0000\u0a46\u0a47\u0005\u01b7\u0000\u0000\u0a47\u0a49"+ - "\u0003\u0146\u00a3\u0000\u0a48\u0a39\u0001\u0000\u0000\u0000\u0a48\u0a3f"+ - "\u0001\u0000\u0000\u0000\u0a48\u0a45\u0001\u0000\u0000\u0000\u0a49=\u0001"+ - "\u0000\u0000\u0000\u0a4a\u0a4b\u0005H\u0000\u0000\u0a4b\u0a4c\u0005\u0014"+ - "\u0000\u0000\u0a4c\u0a55\u0005\u015d\u0000\u0000\u0a4d\u0a4e\u0005H\u0000"+ - "\u0000\u0a4e\u0a50\u0005\u00f7\u0000\u0000\u0a4f\u0a51\u0003\u01c0\u00e0"+ - "\u0000\u0a50\u0a4f\u0001\u0000\u0000\u0000\u0a50\u0a51\u0001\u0000\u0000"+ - "\u0000\u0a51\u0a52\u0001\u0000\u0000\u0000\u0a52\u0a53\u0007\u0006\u0000"+ - "\u0000\u0a53\u0a55\u0003\u01c0\u00e0\u0000\u0a54\u0a4a\u0001\u0000\u0000"+ - "\u0000\u0a54\u0a4d\u0001\u0000\u0000\u0000\u0a55?\u0001\u0000\u0000\u0000"+ - "\u0a56\u0a57\u0005\u016f\u0000\u0000\u0a57\u0a5b\u0005\u00fb\u0000\u0000"+ - "\u0a58\u0a5c\u0005\u0014\u0000\u0000\u0a59\u0a5a\u0005\u00b6\u0000\u0000"+ - "\u0a5a\u0a5c\u0003\u00b6[\u0000\u0a5b\u0a58\u0001\u0000\u0000\u0000\u0a5b"+ - "\u0a59\u0001\u0000\u0000\u0000\u0a5cA\u0001\u0000\u0000\u0000\u0a5d\u0a5e"+ - "\u0005H\u0000\u0000\u0a5e\u0a5f\u0005\u0162\u0000\u0000\u0a5f\u0a64\u0005"+ - "\u01aa\u0000\u0000\u0a60\u0a61\u0005\u00b6\u0000\u0000\u0a61\u0a65\u0003"+ - "\u01c0\u00e0\u0000\u0a62\u0a63\u0007\u0006\u0000\u0000\u0a63\u0a65\u0003"+ - "\u0146\u00a3\u0000\u0a64\u0a60\u0001\u0000\u0000\u0000\u0a64\u0a62\u0001"+ - "\u0000\u0000\u0000\u0a65\u0a6b\u0001\u0000\u0000\u0000\u0a66\u0a67\u0005"+ - "H\u0000\u0000\u0a67\u0a68\u0005\u0014\u0000\u0000\u0a68\u0a69\u0005\u0162"+ - "\u0000\u0000\u0a69\u0a6b\u0005\u01aa\u0000\u0000\u0a6a\u0a5d\u0001\u0000"+ - "\u0000\u0000\u0a6a\u0a66\u0001\u0000\u0000\u0000\u0a6bC\u0001\u0000\u0000"+ - "\u0000\u0a6c\u0a6d\u0005?\u0000\u0000\u0a6d\u0a70\u0005\u0105\u0000\u0000"+ - "\u0a6e\u0a6f\u0007\u0006\u0000\u0000\u0a6f\u0a71\u0003\u01c0\u00e0\u0000"+ - "\u0a70\u0a6e\u0001\u0000\u0000\u0000\u0a70\u0a71\u0001\u0000\u0000\u0000"+ - "\u0a71\u0a73\u0001\u0000\u0000\u0000\u0a72\u0a74\u0003P(\u0000\u0a73\u0a72"+ - "\u0001\u0000\u0000\u0000\u0a73\u0a74\u0001\u0000\u0000\u0000\u0a74\u0a86"+ - "\u0001\u0000\u0000\u0000\u0a75\u0a76\u0005?\u0000\u0000\u0a76\u0a79\u0005"+ - "\u00a7\u0000\u0000\u0a77\u0a78\u0007\u0006\u0000\u0000\u0a78\u0a7a\u0003"+ - "\u01c0\u00e0\u0000\u0a79\u0a77\u0001\u0000\u0000\u0000\u0a79\u0a7a\u0001"+ - "\u0000\u0000\u0000\u0a7a\u0a7c\u0001\u0000\u0000\u0000\u0a7b\u0a7d\u0003"+ - "P(\u0000\u0a7c\u0a7b\u0001\u0000\u0000\u0000\u0a7c\u0a7d\u0001\u0000\u0000"+ - "\u0000\u0a7d\u0a86\u0001\u0000\u0000\u0000\u0a7e\u0a7f\u0005?\u0000\u0000"+ - "\u0a7f\u0a80\u0005\u01eb\u0000\u0000\u0a80\u0a81\u0005\u01d9\u0000\u0000"+ - "\u0a81\u0a83\u0005\u00ef\u0000\u0000\u0a82\u0a84\u0003P(\u0000\u0a83\u0a82"+ - "\u0001\u0000\u0000\u0000\u0a83\u0a84\u0001\u0000\u0000\u0000\u0a84\u0a86"+ - "\u0001\u0000\u0000\u0000\u0a85\u0a6c\u0001\u0000\u0000\u0000\u0a85\u0a75"+ - "\u0001\u0000\u0000\u0000\u0a85\u0a7e\u0001\u0000\u0000\u0000\u0a86E\u0001"+ - "\u0000\u0000\u0000\u0a87\u0a88\u0005?\u0000\u0000\u0a88\u0a89\u0005\u0015"+ - "\u0000\u0000\u0a89\u0a8e\u0005\u01b7\u0000\u0000\u0a8a\u0a8f\u0005\u0189"+ - "\u0000\u0000\u0a8b\u0a8c\u0005\u0118\u0000\u0000\u0a8c\u0a8f\u0005\u01e9"+ - "\u0000\u0000\u0a8d\u0a8f\u0005O\u0000\u0000\u0a8e\u0a8a\u0001\u0000\u0000"+ - "\u0000\u0a8e\u0a8b\u0001\u0000\u0000\u0000\u0a8e\u0a8d\u0001\u0000\u0000"+ - "\u0000\u0a8f\u0a90\u0001\u0000\u0000\u0000\u0a90\u0a91\u0005\u00bb\u0000"+ - "\u0000\u0a91\u0a9c\u0003\u0146\u00a3\u0000\u0a92\u0a93\u0005\u0002\u0000"+ - "\u0000\u0a93\u0a98\u0005\u0216\u0000\u0000\u0a94\u0a95\u0005\u0004\u0000"+ - "\u0000\u0a95\u0a97\u0005\u0216\u0000\u0000\u0a96\u0a94\u0001\u0000\u0000"+ - "\u0000\u0a97\u0a9a\u0001\u0000\u0000\u0000\u0a98\u0a96\u0001\u0000\u0000"+ - "\u0000\u0a98\u0a99\u0001\u0000\u0000\u0000\u0a99\u0a9b\u0001\u0000\u0000"+ - "\u0000\u0a9a\u0a98\u0001\u0000\u0000\u0000\u0a9b\u0a9d\u0005\u0003\u0000"+ - "\u0000\u0a9c\u0a92\u0001\u0000\u0000\u0000\u0a9c\u0a9d\u0001\u0000\u0000"+ - "\u0000\u0a9d\u0ac7\u0001\u0000\u0000\u0000\u0a9e\u0a9f\u0005?\u0000\u0000"+ - "\u0a9f\u0aa0\u00058\u0000\u0000\u0aa0\u0aa1\u0005\u00db\u0000\u0000\u0aa1"+ - "\u0aa2\u0005\u0135\u0000\u0000\u0aa2\u0aad\u0003\u0146\u00a3\u0000\u0aa3"+ - "\u0aa4\u0005\u0002\u0000\u0000\u0aa4\u0aa9\u0005\u0216\u0000\u0000\u0aa5"+ - "\u0aa6\u0005\u0004\u0000\u0000\u0aa6\u0aa8\u0005\u0216\u0000\u0000\u0aa7"+ - "\u0aa5\u0001\u0000\u0000\u0000\u0aa8\u0aab\u0001\u0000\u0000\u0000\u0aa9"+ - "\u0aa7\u0001\u0000\u0000\u0000\u0aa9\u0aaa\u0001\u0000\u0000\u0000\u0aaa"+ - "\u0aac\u0001\u0000\u0000\u0000\u0aab\u0aa9\u0001\u0000\u0000\u0000\u0aac"+ - "\u0aae\u0005\u0003\u0000\u0000\u0aad\u0aa3\u0001\u0000\u0000\u0000\u0aad"+ - "\u0aae\u0001\u0000\u0000\u0000\u0aae\u0ac7\u0001\u0000\u0000\u0000\u0aaf"+ - "\u0ab0\u0005?\u0000\u0000\u0ab0\u0ab1\u0005{\u0000\u0000\u0ab1\u0ab2\u0005"+ - "#\u0000\u0000\u0ab2\u0ab7\u0005\u0211\u0000\u0000\u0ab3\u0ab4\u0005\u0004"+ - "\u0000\u0000\u0ab4\u0ab6\u0005\u0211\u0000\u0000\u0ab5\u0ab3\u0001\u0000"+ - "\u0000\u0000\u0ab6\u0ab9\u0001\u0000\u0000\u0000\u0ab7\u0ab5\u0001\u0000"+ - "\u0000\u0000\u0ab7\u0ab8\u0001\u0000\u0000\u0000\u0ab8\u0ac7\u0001\u0000"+ - "\u0000\u0000\u0ab9\u0ab7\u0001\u0000\u0000\u0000\u0aba\u0abb\u0005?\u0000"+ - "\u0000\u0abb\u0abe\u0005%\u0000\u0000\u0abc\u0abd\u0007\u0006\u0000\u0000"+ - "\u0abd\u0abf\u0003\u01c0\u00e0\u0000\u0abe\u0abc\u0001\u0000\u0000\u0000"+ - "\u0abe\u0abf\u0001\u0000\u0000\u0000\u0abf\u0ac7\u0001\u0000\u0000\u0000"+ - "\u0ac0\u0ac1\u0005?\u0000\u0000\u0ac1\u0ac4\u0005\u017e\u0000\u0000\u0ac2"+ - "\u0ac3\u0007\u0006\u0000\u0000\u0ac3\u0ac5\u0003\u01c0\u00e0\u0000\u0ac4"+ - "\u0ac2\u0001\u0000\u0000\u0000\u0ac4\u0ac5\u0001\u0000\u0000\u0000\u0ac5"+ - "\u0ac7\u0001\u0000\u0000\u0000\u0ac6\u0a87\u0001\u0000\u0000\u0000\u0ac6"+ - "\u0a9e\u0001\u0000\u0000\u0000\u0ac6\u0aaf\u0001\u0000\u0000\u0000\u0ac6"+ - "\u0aba\u0001\u0000\u0000\u0000\u0ac6\u0ac0\u0001\u0000\u0000\u0000\u0ac7"+ - "G\u0001\u0000\u0000\u0000\u0ac8\u0ac9\u0005\u000f\u0000\u0000\u0ac9\u0aca"+ - "\u0005\u019d\u0000\u0000\u0aca\u0acb\u0005\u0179\u0000\u0000\u0acb\u0acc"+ - "\u0005\u0089\u0000\u0000\u0acc\u0acd\u0005\u00bb\u0000\u0000\u0acd\u0b31"+ - "\u0003N\'\u0000\u0ace\u0acf\u0005\u000f\u0000\u0000\u0acf\u0ad0\u0005"+ - "\u016b\u0000\u0000\u0ad0\u0adc\u0005\u0084\u0000\u0000\u0ad1\u0ad2\u0005"+ - "\u0135\u0000\u0000\u0ad2\u0ad3\u0005\u0002\u0000\u0000\u0ad3\u0ad8\u0005"+ - "\u0211\u0000\u0000\u0ad4\u0ad5\u0005\u0004\u0000\u0000\u0ad5\u0ad7\u0005"+ - "\u0211\u0000\u0000\u0ad6\u0ad4\u0001\u0000\u0000\u0000\u0ad7\u0ada\u0001"+ - "\u0000\u0000\u0000\u0ad8\u0ad6\u0001\u0000\u0000\u0000\u0ad8\u0ad9\u0001"+ - "\u0000\u0000\u0000\u0ad9\u0adb\u0001\u0000\u0000\u0000\u0ada\u0ad8\u0001"+ - "\u0000\u0000\u0000\u0adb\u0add\u0005\u0003\u0000\u0000\u0adc\u0ad1\u0001"+ - "\u0000\u0000\u0000\u0adc\u0add\u0001\u0000\u0000\u0000\u0add\u0b31\u0001"+ - "\u0000\u0000\u0000\u0ade\u0adf\u0005\u000f\u0000\u0000\u0adf\u0ae0\u0005"+ - "?\u0000\u0000\u0ae0\u0ae1\u0005\u016b\u0000\u0000\u0ae1\u0aed\u0005\u0084"+ - "\u0000\u0000\u0ae2\u0ae3\u0005\u0135\u0000\u0000\u0ae3\u0ae4\u0005\u0002"+ - "\u0000\u0000\u0ae4\u0ae9\u0005\u0211\u0000\u0000\u0ae5\u0ae6\u0005\u0004"+ - "\u0000\u0000\u0ae6\u0ae8\u0005\u0211\u0000\u0000\u0ae7\u0ae5\u0001\u0000"+ - "\u0000\u0000\u0ae8\u0aeb\u0001\u0000\u0000\u0000\u0ae9\u0ae7\u0001\u0000"+ - "\u0000\u0000\u0ae9\u0aea\u0001\u0000\u0000\u0000\u0aea\u0aec\u0001\u0000"+ - "\u0000\u0000\u0aeb\u0ae9\u0001\u0000\u0000\u0000\u0aec\u0aee\u0005\u0003"+ - "\u0000\u0000\u0aed\u0ae2\u0001\u0000\u0000\u0000\u0aed\u0aee\u0001\u0000"+ - "\u0000\u0000\u0aee\u0b31\u0001\u0000\u0000\u0000\u0aef\u0af0\u0005\u000f"+ - "\u0000\u0000\u0af0\u0af1\u0005\u0082\u0000\u0000\u0af1\u0af2\u0005\u01ba"+ - "\u0000\u0000\u0af2\u0b31\u0005\u0216\u0000\u0000\u0af3\u0af4\u0005\u000f"+ - "\u0000\u0000\u0af4\u0af5\u0005\u019d\u0000\u0000\u0af5\u0af6\u0005\u0179"+ - "\u0000\u0000\u0af6\u0af7\u0005\u01ab\u0000\u0000\u0af7\u0af8\u0005\u00bb"+ - "\u0000\u0000\u0af8\u0afe\u0003N\'\u0000\u0af9\u0afa\u0005\u01ef\u0000"+ - "\u0000\u0afa\u0afb\u0005\u01ab\u0000\u0000\u0afb\u0aff\u0005\u01f7\u0000"+ - "\u0000\u0afc\u0afd\u0005\u01f9\u0000\u0000\u0afd\u0aff\u0005\u0211\u0000"+ - "\u0000\u0afe\u0af9\u0001\u0000\u0000\u0000\u0afe\u0afc\u0001\u0000\u0000"+ - "\u0000\u0afe\u0aff\u0001\u0000\u0000\u0000\u0aff\u0b31\u0001\u0000\u0000"+ - "\u0000\u0b00\u0b01\u0005\u000f\u0000\u0000\u0b01\u0b02\u0005T\u0000\u0000"+ - "\u0b02\u0b03\u0005\u01b7\u0000\u0000\u0b03\u0b08\u0003N\'\u0000\u0b04"+ - "\u0b05\u0005\u01ef\u0000\u0000\u0b05\u0b06\u0005\u01ce\u0000\u0000\u0b06"+ - "\u0b07\u0005\u01f7\u0000\u0000\u0b07\u0b09\u0005\u0211\u0000\u0000\u0b08"+ - "\u0b04\u0001\u0000\u0000\u0000\u0b08\u0b09\u0001\u0000\u0000\u0000\u0b09"+ - "\u0b31\u0001\u0000\u0000\u0000\u0b0a\u0b0b\u0005\u000f\u0000\u0000\u0b0b"+ - "\u0b0c\u0005G\u0000\u0000\u0b0c\u0b0e\u0003\u016a\u00b5\u0000\u0b0d\u0b0f"+ - "\u0003\u013a\u009d\u0000\u0b0e\u0b0d\u0001\u0000\u0000\u0000\u0b0e\u0b0f"+ - "\u0001\u0000\u0000\u0000\u0b0f\u0b31\u0001\u0000\u0000\u0000\u0b10\u0b11"+ - "\u0005\u000f\u0000\u0000\u0b11\u0b12\u0005\u019d\u0000\u0000\u0b12\u0b13"+ - "\u0005\u01ba\u0000\u0000\u0b13\u0b14\u0005\u01ad\u0000\u0000\u0b14\u0b16"+ - "\u0005\u00b9\u0000\u0000\u0b15\u0b17\u0005\u01e7\u0000\u0000\u0b16\u0b15"+ - "\u0001\u0000\u0000\u0000\u0b16\u0b17\u0001\u0000\u0000\u0000\u0b17\u0b31"+ - "\u0001\u0000\u0000\u0000\u0b18\u0b19\u0005\u000f\u0000\u0000\u0b19\u0b1a"+ - "\u0005H\u0000\u0000\u0b1a\u0b26\u0005\u01c8\u0000\u0000\u0b1b\u0b1c\u0005"+ - "\u0135\u0000\u0000\u0b1c\u0b1d\u0005\u0002\u0000\u0000\u0b1d\u0b22\u0005"+ - "\u0211\u0000\u0000\u0b1e\u0b1f\u0005\u0004\u0000\u0000\u0b1f\u0b21\u0005"+ - "\u0211\u0000\u0000\u0b20\u0b1e\u0001\u0000\u0000\u0000\u0b21\u0b24\u0001"+ - "\u0000\u0000\u0000\u0b22\u0b20\u0001\u0000\u0000\u0000\u0b22\u0b23\u0001"+ - "\u0000\u0000\u0000\u0b23\u0b25\u0001\u0000\u0000\u0000\u0b24\u0b22\u0001"+ - "\u0000\u0000\u0000\u0b25\u0b27\u0005\u0003\u0000\u0000\u0b26\u0b1b\u0001"+ - "\u0000\u0000\u0000\u0b26\u0b27\u0001\u0000\u0000\u0000\u0b27\u0b31\u0001"+ - "\u0000\u0000\u0000\u0b28\u0b29\u0005\u000f\u0000\u0000\u0b29\u0b2a\u0005"+ - "\u0199\u0000\u0000\u0b2a\u0b2b\u0005\u01b7\u0000\u0000\u0b2b\u0b2c\u0003"+ - "\u0146\u00a3\u0000\u0b2c\u0b2e\u0005\u01ab\u0000\u0000\u0b2d\u0b2f\u0003"+ - "\u013a\u009d\u0000\u0b2e\u0b2d\u0001\u0000\u0000\u0000\u0b2e\u0b2f\u0001"+ - "\u0000\u0000\u0000\u0b2f\u0b31\u0001\u0000\u0000\u0000\u0b30\u0ac8\u0001"+ - "\u0000\u0000\u0000\u0b30\u0ace\u0001\u0000\u0000\u0000\u0b30\u0ade\u0001"+ - "\u0000\u0000\u0000\u0b30\u0aef\u0001\u0000\u0000\u0000\u0b30\u0af3\u0001"+ - "\u0000\u0000\u0000\u0b30\u0b00\u0001\u0000\u0000\u0000\u0b30\u0b0a\u0001"+ - "\u0000\u0000\u0000\u0b30\u0b10\u0001\u0000\u0000\u0000\u0b30\u0b18\u0001"+ - "\u0000\u0000\u0000\u0b30\u0b28\u0001\u0000\u0000\u0000\u0b31I\u0001\u0000"+ - "\u0000\u0000\u0b32\u0b33\u0005\u016d\u0000\u0000\u0b33\u0b34\u0005o\u0000"+ - "\u0000\u0b34\u0b36\u0003\u01c0\u00e0\u0000\u0b35\u0b37\u0005\u0216\u0000"+ - "\u0000\u0b36\u0b35\u0001\u0000\u0000\u0000\u0b36\u0b37\u0001\u0000\u0000"+ - "\u0000\u0b37\u0b3a\u0001\u0000\u0000\u0000\u0b38\u0b39\u0005\u001c\u0000"+ - "\u0000\u0b39\u0b3b\u0003\u01c0\u00e0\u0000\u0b3a\u0b38\u0001\u0000\u0000"+ - "\u0000\u0b3a\u0b3b\u0001\u0000\u0000\u0000\u0b3b\u0b54\u0001\u0000\u0000"+ - "\u0000\u0b3c\u0b3d\u0005\u016d\u0000\u0000\u0b3d\u0b3e\u0005\u01b7\u0000"+ - "\u0000\u0b3e\u0b40\u0003\u0146\u00a3\u0000\u0b3f\u0b41\u0005\u0216\u0000"+ - "\u0000\u0b40\u0b3f\u0001\u0000\u0000\u0000\u0b40\u0b41\u0001\u0000\u0000"+ - "\u0000\u0b41\u0b44\u0001\u0000\u0000\u0000\u0b42\u0b43\u0005\u001c\u0000"+ - "\u0000\u0b43\u0b45\u0003\u01c0\u00e0\u0000\u0b44\u0b42\u0001\u0000\u0000"+ - "\u0000\u0b44\u0b45\u0001\u0000\u0000\u0000\u0b45\u0b54\u0001\u0000\u0000"+ - "\u0000\u0b46\u0b47\u0005\u016d\u0000\u0000\u0b47\u0b48\u0005\u0141\u0000"+ - "\u0000\u0b48\u0b4a\u0003\u01c0\u00e0\u0000\u0b49\u0b4b\u0005\u0216\u0000"+ - "\u0000\u0b4a\u0b49\u0001\u0000\u0000\u0000\u0b4a\u0b4b\u0001\u0000\u0000"+ - "\u0000\u0b4b\u0b4e\u0001\u0000\u0000\u0000\u0b4c\u0b4d\u0005\u001c\u0000"+ - "\u0000\u0b4d\u0b4f\u0003\u01c0\u00e0\u0000\u0b4e\u0b4c\u0001\u0000\u0000"+ - "\u0000\u0b4e\u0b4f\u0001\u0000\u0000\u0000\u0b4f\u0b50\u0001\u0000\u0000"+ - "\u0000\u0b50\u0b51\u0005\u00bb\u0000\u0000\u0b51\u0b52\u0003\u0146\u00a3"+ - "\u0000\u0b52\u0b54\u0001\u0000\u0000\u0000\u0b53\u0b32\u0001\u0000\u0000"+ - "\u0000\u0b53\u0b3c\u0001\u0000\u0000\u0000\u0b53\u0b46\u0001\u0000\u0000"+ - "\u0000\u0b54K\u0001\u0000\u0000\u0000\u0b55\u0b56\u0005\u000f\u0000\u0000"+ - "\u0b56\u0b57\u0005\u0199\u0000\u0000\u0b57\u0b58\u0005\u0179\u0000\u0000"+ - "\u0b58\u0b59\u0005\u01ab\u0000\u0000\u0b59\u0b5a\u0005\u015e\u0000\u0000"+ - "\u0b5a\u0b5b\u0005\u0002\u0000\u0000\u0b5b\u0b5c\u0003\u013c\u009e\u0000"+ - "\u0b5c\u0b5d\u0005\u0003\u0000\u0000\u0b5d\u0b92\u0001\u0000\u0000\u0000"+ - "\u0b5e\u0b5f\u0005\u000f\u0000\u0000\u0b5f\u0b60\u0005\u0199\u0000\u0000"+ - "\u0b60\u0b61\u0005\u0179\u0000\u0000\u0b61\u0b62\u0005\u01e8\u0000\u0000"+ - "\u0b62\u0b63\u0005\u015e\u0000\u0000\u0b63\u0b64\u0005\u0002\u0000\u0000"+ - "\u0b64\u0b65\u0003\u013c\u009e\u0000\u0b65\u0b66\u0005\u0003\u0000\u0000"+ - "\u0b66\u0b92\u0001\u0000\u0000\u0000\u0b67\u0b68\u0005\u000f\u0000\u0000"+ - "\u0b68\u0b69\u0005\u0174\u0000\u0000\u0b69\u0b6a\u0005\u01b7\u0000\u0000"+ - "\u0b6a\u0b92\u0003N\'\u0000\u0b6b\u0b6c\u0005\u000f\u0000\u0000\u0b6c"+ - "\u0b6d\u0005?\u0000\u0000\u0b6d\u0b6e\u0005\u0174\u0000\u0000\u0b6e\u0b6f"+ - "\u0005\u01b7\u0000\u0000\u0b6f\u0b92\u0003N\'\u0000\u0b70\u0b71\u0005"+ - "\u000f\u0000\u0000\u0b71\u0b75\u0005\u0199\u0000\u0000\u0b72\u0b76\u0005"+ - "\u00bc\u0000\u0000\u0b73\u0b74\u0005\u0014\u0000\u0000\u0b74\u0b76\u0005"+ - "\u00bd\u0000\u0000\u0b75\u0b72\u0001\u0000\u0000\u0000\u0b75\u0b73\u0001"+ - "\u0000\u0000\u0000\u0b76\u0b77\u0001\u0000\u0000\u0000\u0b77\u0b7c\u0005"+ - "Y\u0000\u0000\u0b78\u0b79\u0005\u0002\u0000\u0000\u0b79\u0b7a\u0003\u013c"+ - "\u009e\u0000\u0b7a\u0b7b\u0005\u0003\u0000\u0000\u0b7b\u0b7d\u0001\u0000"+ - "\u0000\u0000\u0b7c\u0b78\u0001\u0000\u0000\u0000\u0b7c\u0b7d\u0001\u0000"+ - "\u0000\u0000\u0b7d\u0b7f\u0001\u0000\u0000\u0000\u0b7e\u0b80\u0005\u0014"+ - "\u0000\u0000\u0b7f\u0b7e\u0001\u0000\u0000\u0000\u0b7f\u0b80\u0001\u0000"+ - "\u0000\u0000\u0b80\u0b92\u0001\u0000\u0000\u0000\u0b81\u0b82\u0005\u000f"+ - "\u0000\u0000\u0b82\u0b83\u0005\u0199\u0000\u0000\u0b83\u0b84\u0005\u01b7"+ - "\u0000\u0000\u0b84\u0b85\u0003\u0146\u00a3\u0000\u0b85\u0b86\u0005\u0141"+ - "\u0000\u0000\u0b86\u0b88\u0005\u01e8\u0000\u0000\u0b87\u0b89\u0003\u013a"+ - "\u009d\u0000\u0b88\u0b87\u0001\u0000\u0000\u0000\u0b88\u0b89\u0001\u0000"+ - "\u0000\u0000\u0b89\u0b92\u0001\u0000\u0000\u0000\u0b8a\u0b8b\u0005\u000f"+ - "\u0000\u0000\u0b8b\u0b8c\u0005a\u0000\u0000\u0b8c\u0b8d\u0005\u01ba\u0000"+ - "\u0000\u0b8d\u0b8f\u0005\u0216\u0000\u0000\u0b8e\u0b90\u0003\u013a\u009d"+ - "\u0000\u0b8f\u0b8e\u0001\u0000\u0000\u0000\u0b8f\u0b90\u0001\u0000\u0000"+ - "\u0000\u0b90\u0b92\u0001\u0000\u0000\u0000\u0b91\u0b55\u0001\u0000\u0000"+ - "\u0000\u0b91\u0b5e\u0001\u0000\u0000\u0000\u0b91\u0b67\u0001\u0000\u0000"+ - "\u0000\u0b91\u0b6b\u0001\u0000\u0000\u0000\u0b91\u0b70\u0001\u0000\u0000"+ - "\u0000\u0b91\u0b81\u0001\u0000\u0000\u0000\u0b91\u0b8a\u0001\u0000\u0000"+ - "\u0000\u0b92M\u0001\u0000\u0000\u0000\u0b93\u0b95\u0003\u0146\u00a3\u0000"+ - "\u0b94\u0b96\u0003\u0134\u009a\u0000\u0b95\u0b94\u0001\u0000\u0000\u0000"+ - "\u0b95\u0b96\u0001\u0000\u0000\u0000\u0b96\u0b98\u0001\u0000\u0000\u0000"+ - "\u0b97\u0b99\u0003\u01ba\u00dd\u0000\u0b98\u0b97\u0001\u0000\u0000\u0000"+ - "\u0b98\u0b99\u0001\u0000\u0000\u0000\u0b99\u0b9b\u0001\u0000\u0000\u0000"+ - "\u0b9a\u0b9c\u0003\u0196\u00cb\u0000\u0b9b\u0b9a\u0001\u0000\u0000\u0000"+ - "\u0b9b\u0b9c\u0001\u0000\u0000\u0000\u0b9c\u0b9e\u0001\u0000\u0000\u0000"+ - "\u0b9d\u0b9f\u0003\u016a\u00b5\u0000\u0b9e\u0b9d\u0001\u0000\u0000\u0000"+ - "\u0b9e\u0b9f\u0001\u0000\u0000\u0000\u0b9f\u0ba0\u0001\u0000\u0000\u0000"+ - "\u0ba0\u0ba2\u0003\u0144\u00a2\u0000\u0ba1\u0ba3\u0003\u01b6\u00db\u0000"+ - "\u0ba2\u0ba1\u0001\u0000\u0000\u0000\u0ba2\u0ba3\u0001\u0000\u0000\u0000"+ - "\u0ba3\u0ba5\u0001\u0000\u0000\u0000\u0ba4\u0ba6\u0003\u010a\u0085\u0000"+ - "\u0ba5\u0ba4\u0001\u0000\u0000\u0000\u0ba5\u0ba6\u0001\u0000\u0000\u0000"+ - "\u0ba6O\u0001\u0000\u0000\u0000\u0ba7\u0ba8\u0005\u0100\u0000\u0000\u0ba8"+ - "\u0bac\u0005\u0211\u0000\u0000\u0ba9\u0baa\u0005\u01ef\u0000\u0000\u0baa"+ - "\u0bac\u0003\u0172\u00b9\u0000\u0bab\u0ba7\u0001\u0000\u0000\u0000\u0bab"+ - "\u0ba9\u0001\u0000\u0000\u0000\u0bacQ\u0001\u0000\u0000\u0000\u0bad\u0bb3"+ - "\u0005&\u0000\u0000\u0bae\u0baf\u0005\u01f1\u0000\u0000\u0baf\u0bb1\u0005"+ - "\u00f7\u0000\u0000\u0bb0\u0bb2\u0003\u01c0\u00e0\u0000\u0bb1\u0bb0\u0001"+ - "\u0000\u0000\u0000\u0bb1\u0bb2\u0001\u0000\u0000\u0000\u0bb2\u0bb4\u0001"+ - "\u0000\u0000\u0000\u0bb3\u0bae\u0001\u0000\u0000\u0000\u0bb3\u0bb4\u0001"+ - "\u0000\u0000\u0000\u0bb4\u0bd8\u0001\u0000\u0000\u0000\u0bb5\u0bb7\u0005"+ - "R\u0000\u0000\u0bb6\u0bb8\u0005\u01f2\u0000\u0000\u0bb7\u0bb6\u0001\u0000"+ - "\u0000\u0000\u0bb7\u0bb8\u0001\u0000\u0000\u0000\u0bb8\u0bbe\u0001\u0000"+ - "\u0000\u0000\u0bb9\u0bbb\u0005\u0018\u0000\u0000\u0bba\u0bbc\u0005\u012c"+ - "\u0000\u0000\u0bbb\u0bba\u0001\u0000\u0000\u0000\u0bbb\u0bbc\u0001\u0000"+ - "\u0000\u0000\u0bbc\u0bbd\u0001\u0000\u0000\u0000\u0bbd\u0bbf\u0005D\u0000"+ - "\u0000\u0bbe\u0bb9\u0001\u0000\u0000\u0000\u0bbe\u0bbf\u0001\u0000\u0000"+ - "\u0000\u0bbf\u0bc4\u0001\u0000\u0000\u0000\u0bc0\u0bc2\u0005\u012c\u0000"+ - "\u0000\u0bc1\u0bc0\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0001\u0000\u0000"+ - "\u0000\u0bc2\u0bc3\u0001\u0000\u0000\u0000\u0bc3\u0bc5\u0005\u0172\u0000"+ - "\u0000\u0bc4\u0bc1\u0001\u0000\u0000\u0000\u0bc4\u0bc5\u0001\u0000\u0000"+ - "\u0000\u0bc5\u0bd8\u0001\u0000\u0000\u0000\u0bc6\u0bc8\u0005\u0188\u0000"+ - "\u0000\u0bc7\u0bc9\u0005\u01f2\u0000\u0000\u0bc8\u0bc7\u0001\u0000\u0000"+ - "\u0000\u0bc8\u0bc9\u0001\u0000\u0000\u0000\u0bc9\u0bcf\u0001\u0000\u0000"+ - "\u0000\u0bca\u0bcc\u0005\u0018\u0000\u0000\u0bcb\u0bcd\u0005\u012c\u0000"+ - "\u0000\u0bcc\u0bcb\u0001\u0000\u0000\u0000\u0bcc\u0bcd\u0001\u0000\u0000"+ - "\u0000\u0bcd\u0bce\u0001\u0000\u0000\u0000\u0bce\u0bd0\u0005D\u0000\u0000"+ - "\u0bcf\u0bca\u0001\u0000\u0000\u0000\u0bcf\u0bd0\u0001\u0000\u0000\u0000"+ - "\u0bd0\u0bd5\u0001\u0000\u0000\u0000\u0bd1\u0bd3\u0005\u012c\u0000\u0000"+ - "\u0bd2\u0bd1\u0001\u0000\u0000\u0000\u0bd2\u0bd3\u0001\u0000\u0000\u0000"+ - "\u0bd3\u0bd4\u0001\u0000\u0000\u0000\u0bd4\u0bd6\u0005\u0172\u0000\u0000"+ - "\u0bd5\u0bd2\u0001\u0000\u0000\u0000\u0bd5\u0bd6\u0001\u0000\u0000\u0000"+ - "\u0bd6\u0bd8\u0001\u0000\u0000\u0000\u0bd7\u0bad\u0001\u0000\u0000\u0000"+ - "\u0bd7\u0bb5\u0001\u0000\u0000\u0000\u0bd7\u0bc6\u0001\u0000\u0000\u0000"+ - "\u0bd8S\u0001\u0000\u0000\u0000\u0bd9\u0bda\u0005\u00c4\u0000\u0000\u0bda"+ - "\u0bdb\u0003X,\u0000\u0bdb\u0bdc\u0005\u0135\u0000\u0000\u0bdc\u0bdd\u0003"+ - "\u00ba]\u0000\u0bdd\u0be1\u0005\u01c6\u0000\u0000\u0bde\u0be2\u0003\u00be"+ - "_\u0000\u0bdf\u0be0\u0005\u0186\u0000\u0000\u0be0\u0be2\u0005\u0211\u0000"+ - "\u0000\u0be1\u0bde\u0001\u0000\u0000\u0000\u0be1\u0bdf\u0001\u0000\u0000"+ - "\u0000\u0be2\u0c2e\u0001\u0000\u0000\u0000\u0be3\u0be4\u0005\u00c4\u0000"+ - "\u0000\u0be4\u0be5\u0003X,\u0000\u0be5\u0bef\u0005\u0135\u0000\u0000\u0be6"+ - "\u0bf0\u0005\u017c\u0000\u0000\u0be7\u0bf0\u0005I\u0000\u0000\u0be8\u0be9"+ - "\u0005W\u0000\u0000\u0be9\u0bf0\u0005\u00c7\u0000\u0000\u0bea\u0bf0\u0005"+ - "\u01a6\u0000\u0000\u0beb\u0bec\u0005\u01ad\u0000\u0000\u0bec\u0bf0\u0005"+ - "\u01e5\u0000\u0000\u0bed\u0bee\u0005\u01f3\u0000\u0000\u0bee\u0bf0\u0005"+ - "\u00c7\u0000\u0000\u0bef\u0be6\u0001\u0000\u0000\u0000\u0bef\u0be7\u0001"+ - "\u0000\u0000\u0000\u0bef\u0be8\u0001\u0000\u0000\u0000\u0bef\u0bea\u0001"+ - "\u0000\u0000\u0000\u0bef\u0beb\u0001\u0000\u0000\u0000\u0bef\u0bed\u0001"+ - "\u0000\u0000\u0000\u0bf0\u0bf1\u0001\u0000\u0000\u0000\u0bf1\u0bf2\u0003"+ - "\u00b8\\\u0000\u0bf2\u0bf6\u0005\u01c6\u0000\u0000\u0bf3\u0bf7\u0003\u00be"+ - "_\u0000\u0bf4\u0bf5\u0005\u0186\u0000\u0000\u0bf5\u0bf7\u0005\u0211\u0000"+ - "\u0000\u0bf6\u0bf3\u0001\u0000\u0000\u0000\u0bf6\u0bf4\u0001\u0000\u0000"+ - "\u0000\u0bf7\u0c2e\u0001\u0000\u0000\u0000\u0bf8\u0bf9\u0005\u00c4\u0000"+ - "\u0000\u0bf9\u0bfe\u0005\u0211\u0000\u0000\u0bfa\u0bfb\u0005\u0004\u0000"+ - "\u0000\u0bfb\u0bfd\u0005\u0211\u0000\u0000\u0bfc\u0bfa\u0001\u0000\u0000"+ - "\u0000\u0bfd\u0c00\u0001\u0000\u0000\u0000\u0bfe\u0bfc\u0001\u0000\u0000"+ - "\u0000\u0bfe\u0bff\u0001\u0000\u0000\u0000\u0bff\u0c01\u0001\u0000\u0000"+ - "\u0000\u0c00\u0bfe\u0001\u0000\u0000\u0000\u0c01\u0c02\u0005\u01c6\u0000"+ - "\u0000\u0c02\u0c2e\u0003\u00be_\u0000\u0c03\u0c04\u0005\u0182\u0000\u0000"+ - "\u0c04\u0c05\u0003X,\u0000\u0c05\u0c06\u0005\u0135\u0000\u0000\u0c06\u0c07"+ - "\u0003\u00ba]\u0000\u0c07\u0c0b\u0005\u00bb\u0000\u0000\u0c08\u0c0c\u0003"+ - "\u00be_\u0000\u0c09\u0c0a\u0005\u0186\u0000\u0000\u0c0a\u0c0c\u0005\u0211"+ - "\u0000\u0000\u0c0b\u0c08\u0001\u0000\u0000\u0000\u0c0b\u0c09\u0001\u0000"+ - "\u0000\u0000\u0c0c\u0c2e\u0001\u0000\u0000\u0000\u0c0d\u0c0e\u0005\u0182"+ - "\u0000\u0000\u0c0e\u0c0f\u0003X,\u0000\u0c0f\u0c19\u0005\u0135\u0000\u0000"+ - "\u0c10\u0c1a\u0005\u017c\u0000\u0000\u0c11\u0c1a\u0005I\u0000\u0000\u0c12"+ - "\u0c13\u0005W\u0000\u0000\u0c13\u0c1a\u0005\u00c7\u0000\u0000\u0c14\u0c1a"+ - "\u0005\u01a6\u0000\u0000\u0c15\u0c16\u0005\u01ad\u0000\u0000\u0c16\u0c1a"+ - "\u0005\u01e5\u0000\u0000\u0c17\u0c18\u0005\u01f3\u0000\u0000\u0c18\u0c1a"+ - "\u0005\u00c7\u0000\u0000\u0c19\u0c10\u0001\u0000\u0000\u0000\u0c19\u0c11"+ - "\u0001\u0000\u0000\u0000\u0c19\u0c12\u0001\u0000\u0000\u0000\u0c19\u0c14"+ - "\u0001\u0000\u0000\u0000\u0c19\u0c15\u0001\u0000\u0000\u0000\u0c19\u0c17"+ - "\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0001\u0000\u0000\u0000\u0c1b\u0c1c"+ - "\u0003\u00b8\\\u0000\u0c1c\u0c20\u0005\u00bb\u0000\u0000\u0c1d\u0c21\u0003"+ - "\u00be_\u0000\u0c1e\u0c1f\u0005\u0186\u0000\u0000\u0c1f\u0c21\u0005\u0211"+ - "\u0000\u0000\u0c20\u0c1d\u0001\u0000\u0000\u0000\u0c20\u0c1e\u0001\u0000"+ - "\u0000\u0000\u0c21\u0c2e\u0001\u0000\u0000\u0000\u0c22\u0c23\u0005\u0182"+ - "\u0000\u0000\u0c23\u0c28\u0005\u0211\u0000\u0000\u0c24\u0c25\u0005\u0004"+ - "\u0000\u0000\u0c25\u0c27\u0005\u0211\u0000\u0000\u0c26\u0c24\u0001\u0000"+ - "\u0000\u0000\u0c27\u0c2a\u0001\u0000\u0000\u0000\u0c28\u0c26\u0001\u0000"+ - "\u0000\u0000\u0c28\u0c29\u0001\u0000\u0000\u0000\u0c29\u0c2b\u0001\u0000"+ - "\u0000\u0000\u0c2a\u0c28\u0001\u0000\u0000\u0000\u0c2b\u0c2c\u0005\u00bb"+ - "\u0000\u0000\u0c2c\u0c2e\u0003\u00be_\u0000\u0c2d\u0bd9\u0001\u0000\u0000"+ - "\u0000\u0c2d\u0be3\u0001\u0000\u0000\u0000\u0c2d\u0bf8\u0001\u0000\u0000"+ - "\u0000\u0c2d\u0c03\u0001\u0000\u0000\u0000\u0c2d\u0c0d\u0001\u0000\u0000"+ - "\u0000\u0c2d\u0c22\u0001\u0000\u0000\u0000\u0c2eU\u0001\u0000\u0000\u0000"+ - "\u0c2f\u0c31\u0003\u01c0\u00e0\u0000\u0c30\u0c32\u0003\u0130\u0098\u0000"+ - "\u0c31\u0c30\u0001\u0000\u0000\u0000\u0c31\u0c32\u0001\u0000\u0000\u0000"+ - "\u0c32\u0c35\u0001\u0000\u0000\u0000\u0c33\u0c35\u0005\u0014\u0000\u0000"+ - "\u0c34\u0c2f\u0001\u0000\u0000\u0000\u0c34\u0c33\u0001\u0000\u0000\u0000"+ - "\u0c35W\u0001\u0000\u0000\u0000\u0c36\u0c3b\u0003V+\u0000\u0c37\u0c38"+ - "\u0005\u0004\u0000\u0000\u0c38\u0c3a\u0003V+\u0000\u0c39\u0c37\u0001\u0000"+ - "\u0000\u0000\u0c3a\u0c3d\u0001\u0000\u0000\u0000\u0c3b\u0c39\u0001\u0000"+ - "\u0000\u0000\u0c3b\u0c3c\u0001\u0000\u0000\u0000\u0c3cY\u0001\u0000\u0000"+ - "\u0000\u0c3d\u0c3b\u0001\u0000\u0000\u0000\u0c3e\u0c3f\u0005\u0015\u0000"+ - "\u0000\u0c3f\u0c40\u0005o\u0000\u0000\u0c40\u0c41\u0003\u01c0\u00e0\u0000"+ - "\u0c41\u0c42\u0005\u0199\u0000\u0000\u0c42\u0c43\u0005\u015e\u0000\u0000"+ - "\u0c43\u0c44\u0005\u0002\u0000\u0000\u0c44\u0c45\u0003\u013c\u009e\u0000"+ - "\u0c45\u0c46\u0005\u0003\u0000\u0000\u0c46\u0c79\u0001\u0000\u0000\u0000"+ - "\u0c47\u0c48\u0005\u0015\u0000\u0000\u0c48\u0c49\u0005\u017c\u0000\u0000"+ - "\u0c49\u0c4b\u0003\u00b6[\u0000\u0c4a\u0c4c\u0003\u013a\u009d\u0000\u0c4b"+ - "\u0c4a\u0001\u0000\u0000\u0000\u0c4b\u0c4c\u0001\u0000\u0000\u0000\u0c4c"+ - "\u0c79\u0001\u0000\u0000\u0000\u0c4d\u0c4e\u0005\u0015\u0000\u0000\u0c4e"+ - "\u0c4f\u0005N\u0000\u0000\u0c4f\u0c50\u0005\u00c7\u0000\u0000\u0c50\u0c51"+ - "\u0003\u0146\u00a3\u0000\u0c51\u0c52\u0005\u0199\u0000\u0000\u0c52\u0c53"+ - "\u0005\u0002\u0000\u0000\u0c53\u0c54\u0003\u013c\u009e\u0000\u0c54\u0c55"+ - "\u0005\u0003\u0000\u0000\u0c55\u0c79\u0001\u0000\u0000\u0000\u0c56\u0c57"+ - "\u0005\u0015\u0000\u0000\u0c57\u0c58\u0005\u018a\u0000\u0000\u0c58\u0c59"+ - "\u0005\u0105\u0000\u0000\u0c59\u0c5a\u0005\u00b6\u0000\u0000\u0c5a\u0c5c"+ - "\u0003\u0146\u00a3\u0000\u0c5b\u0c5d\u0003\u013a\u009d\u0000\u0c5c\u0c5b"+ - "\u0001\u0000\u0000\u0000\u0c5c\u0c5d\u0001\u0000\u0000\u0000\u0c5d\u0c64"+ - "\u0001\u0000\u0000\u0000\u0c5e\u0c5f\u0005\u00bb\u0000\u0000\u0c5f\u0c60"+ - "\u0003\u01c0\u00e0\u0000\u0c60\u0c61\u0005\u0002\u0000\u0000\u0c61\u0c62"+ - "\u0003\u013c\u009e\u0000\u0c62\u0c63\u0005\u0003\u0000\u0000\u0c63\u0c65"+ - "\u0001\u0000\u0000\u0000\u0c64\u0c5e\u0001\u0000\u0000\u0000\u0c64\u0c65"+ - "\u0001\u0000\u0000\u0000\u0c65\u0c79\u0001\u0000\u0000\u0000\u0c66\u0c67"+ - "\u0005\u0015\u0000\u0000\u0c67\u0c68\u0005\u01ad\u0000\u0000\u0c68\u0c69"+ - "\u0005\u0156\u0000\u0000\u0c69\u0c6a\u0003\u00b6[\u0000\u0c6a\u0c6b\u0003"+ - "\u013a\u009d\u0000\u0c6b\u0c79\u0001\u0000\u0000\u0000\u0c6c\u0c6d\u0005"+ - "\u0015\u0000\u0000\u0c6d\u0c70\u0005\u01dc\u0000\u0000\u0c6e\u0c6f\u0005"+ - "\u00d6\u0000\u0000\u0c6f\u0c71\u0005\u00a4\u0000\u0000\u0c70\u0c6e\u0001"+ - "\u0000\u0000\u0000\u0c70\u0c71\u0001\u0000\u0000\u0000\u0c71\u0c72\u0001"+ - "\u0000\u0000\u0000\u0c72\u0c73\u0003\u00c0`\u0000\u0c73\u0c76\u0003~?"+ - "\u0000\u0c74\u0c75\u0005Q\u0000\u0000\u0c75\u0c77\u0005\u0211\u0000\u0000"+ - "\u0c76\u0c74\u0001\u0000\u0000\u0000\u0c76\u0c77\u0001\u0000\u0000\u0000"+ - "\u0c77\u0c79\u0001\u0000\u0000\u0000\u0c78\u0c3e\u0001\u0000\u0000\u0000"+ - "\u0c78\u0c47\u0001\u0000\u0000\u0000\u0c78\u0c4d\u0001\u0000\u0000\u0000"+ - "\u0c78\u0c56\u0001\u0000\u0000\u0000\u0c78\u0c66\u0001\u0000\u0000\u0000"+ - "\u0c78\u0c6c\u0001\u0000\u0000\u0000\u0c79[\u0001\u0000\u0000\u0000\u0c7a"+ - "\u0c7b\u0005\u000e\u0000\u0000\u0c7b\u0c7c\u0005#\u0000\u0000\u0c7c\u0c81"+ - "\u0005\u0211\u0000\u0000\u0c7d\u0c7e\u0005\u0004\u0000\u0000\u0c7e\u0c80"+ - "\u0005\u0211\u0000\u0000\u0c7f\u0c7d\u0001\u0000\u0000\u0000\u0c80\u0c83"+ - "\u0001\u0000\u0000\u0000\u0c81\u0c7f\u0001\u0000\u0000\u0000\u0c81\u0c82"+ - "\u0001\u0000\u0000\u0000\u0c82\u0c85\u0001\u0000\u0000\u0000\u0c83\u0c81"+ - "\u0001\u0000\u0000\u0000\u0c84\u0c86\u0003\u013a\u009d\u0000\u0c85\u0c84"+ - "\u0001\u0000\u0000\u0000\u0c85\u0c86\u0001\u0000\u0000\u0000\u0c86\u0cdd"+ - "\u0001\u0000\u0000\u0000\u0c87\u0c88\u0007\u0013\u0000\u0000\u0c88\u0c89"+ - "\u0005#\u0000\u0000\u0c89\u0c8e\u0005\u0211\u0000\u0000\u0c8a\u0c8b\u0005"+ - "\u0004\u0000\u0000\u0c8b\u0c8d\u0005\u0211\u0000\u0000\u0c8c\u0c8a\u0001"+ - "\u0000\u0000\u0000\u0c8d\u0c90\u0001\u0000\u0000\u0000\u0c8e\u0c8c\u0001"+ - "\u0000\u0000\u0000\u0c8e\u0c8f\u0001\u0000\u0000\u0000\u0c8f\u0cdd\u0001"+ - "\u0000\u0000\u0000\u0c90\u0c8e\u0001\u0000\u0000\u0000\u0c91\u0c92\u0005"+ - "{\u0000\u0000\u0c92\u0c93\u0005#\u0000\u0000\u0c93\u0c98\u0005\u0211\u0000"+ - "\u0000\u0c94\u0c95\u0005\u0004\u0000\u0000\u0c95\u0c97\u0005\u0211\u0000"+ - "\u0000\u0c96\u0c94\u0001\u0000\u0000\u0000\u0c97\u0c9a\u0001\u0000\u0000"+ - "\u0000\u0c98\u0c96\u0001\u0000\u0000\u0000\u0c98\u0c99\u0001\u0000\u0000"+ - "\u0000\u0c99\u0cdd\u0001\u0000\u0000\u0000\u0c9a\u0c98\u0001\u0000\u0000"+ - "\u0000\u0c9b\u0c9c\u0005\u000e\u0000\u0000\u0c9c\u0c9d\u0005\u0132\u0000"+ - "\u0000\u0c9d\u0cdd\u0005\u0211\u0000\u0000\u0c9e\u0c9f\u0005\u008e\u0000"+ - "\u0000\u0c9f\u0ca0\u0005\u0132\u0000\u0000\u0ca0\u0cdd\u0005\u0211\u0000"+ - "\u0000\u0ca1\u0ca2\u0005\u000e\u0000\u0000\u0ca2\u0ca3\u0005\u00b4\u0000"+ - "\u0000\u0ca3\u0cdd\u0005\u0211\u0000\u0000\u0ca4\u0ca5\u0005\u008e\u0000"+ - "\u0000\u0ca5\u0ca6\u0005\u00b4\u0000\u0000\u0ca6\u0cdd\u0005\u0211\u0000"+ - "\u0000\u0ca7\u0ca8\u0005\u000e\u0000\u0000\u0ca8\u0ca9\u00056\u0000\u0000"+ - "\u0ca9\u0caa\u0003\u00b6[\u0000\u0caa\u0caf\u0005\u0211\u0000\u0000\u0cab"+ - "\u0cac\u0005\u0004\u0000\u0000\u0cac\u0cae\u0005\u0211\u0000\u0000\u0cad"+ - "\u0cab\u0001\u0000\u0000\u0000\u0cae\u0cb1\u0001\u0000\u0000\u0000\u0caf"+ - "\u0cad\u0001\u0000\u0000\u0000\u0caf\u0cb0\u0001\u0000\u0000\u0000\u0cb0"+ - "\u0cdd\u0001\u0000\u0000\u0000\u0cb1\u0caf\u0001\u0000\u0000\u0000\u0cb2"+ - "\u0cb3\u0005\u008e\u0000\u0000\u0cb3\u0cb4\u00056\u0000\u0000\u0cb4\u0cb5"+ - "\u0003\u00b6[\u0000\u0cb5\u0cba\u0005\u0211\u0000\u0000\u0cb6\u0cb7\u0005"+ - "\u0004\u0000\u0000\u0cb7\u0cb9\u0005\u0211\u0000\u0000\u0cb8\u0cb6\u0001"+ - "\u0000\u0000\u0000\u0cb9\u0cbc\u0001\u0000\u0000\u0000\u0cba\u0cb8\u0001"+ - "\u0000\u0000\u0000\u0cba\u0cbb\u0001\u0000\u0000\u0000\u0cbb\u0cdd\u0001"+ - "\u0000\u0000\u0000\u0cbc\u0cba\u0001\u0000\u0000\u0000\u0cbd\u0cbe\u0005"+ - "\u008e\u0000\u0000\u0cbe\u0cbf\u0005\u0014\u0000\u0000\u0cbf\u0cc0\u0005"+ - "6\u0000\u0000\u0cc0\u0cdd\u0003\u00b6[\u0000\u0cc1\u0cc2\u0005\u0199\u0000"+ - "\u0000\u0cc2\u0cc3\u0005\u0105\u0000\u0000\u0cc3\u0cc4\u0005\u009e\u0000"+ - "\u0000\u0cc4\u0cc6\u0005\u00d4\u0000\u0000\u0cc5\u0cc7\u0003\u013a\u009d"+ - "\u0000\u0cc6\u0cc5\u0001\u0000\u0000\u0000\u0cc6\u0cc7\u0001\u0000\u0000"+ - "\u0000\u0cc7\u0cdd\u0001\u0000\u0000\u0000\u0cc8\u0cc9\u0005\u0122\u0000"+ - "\u0000\u0cc9\u0cca\u0005#\u0000\u0000\u0cca\u0ccf\u0005\u0211\u0000\u0000"+ - "\u0ccb\u0ccc\u0005\u0004\u0000\u0000\u0ccc\u0cce\u0005\u0211\u0000\u0000"+ - "\u0ccd\u0ccb\u0001\u0000\u0000\u0000\u0cce\u0cd1\u0001\u0000\u0000\u0000"+ - "\u0ccf\u0ccd\u0001\u0000\u0000\u0000\u0ccf\u0cd0\u0001\u0000\u0000\u0000"+ - "\u0cd0\u0cd2\u0001\u0000\u0000\u0000\u0cd1\u0ccf\u0001\u0000\u0000\u0000"+ - "\u0cd2\u0cd3\u0005\u0199\u0000\u0000\u0cd3\u0cd4\u0005\u0002\u0000\u0000"+ - "\u0cd4\u0cd5\u0003\u013c\u009e\u0000\u0cd5\u0cd6\u0005\u0003\u0000\u0000"+ - "\u0cd6\u0cdd\u0001\u0000\u0000\u0000\u0cd7\u0cd8\u0005\u0122\u0000\u0000"+ - "\u0cd8\u0cd9\u0007\u0002\u0000\u0000\u0cd9\u0cda\u0005\u0211\u0000\u0000"+ - "\u0cda\u0cdb\u0005\u00d1\u0000\u0000\u0cdb\u0cdd\u0005\u0211\u0000\u0000"+ - "\u0cdc\u0c7a\u0001\u0000\u0000\u0000\u0cdc\u0c87\u0001\u0000\u0000\u0000"+ - "\u0cdc\u0c91\u0001\u0000\u0000\u0000\u0cdc\u0c9b\u0001\u0000\u0000\u0000"+ - "\u0cdc\u0c9e\u0001\u0000\u0000\u0000\u0cdc\u0ca1\u0001\u0000\u0000\u0000"+ - "\u0cdc\u0ca4\u0001\u0000\u0000\u0000\u0cdc\u0ca7\u0001\u0000\u0000\u0000"+ - "\u0cdc\u0cb2\u0001\u0000\u0000\u0000\u0cdc\u0cbd\u0001\u0000\u0000\u0000"+ - "\u0cdc\u0cc1\u0001\u0000\u0000\u0000\u0cdc\u0cc8\u0001\u0000\u0000\u0000"+ - "\u0cdc\u0cd7\u0001\u0000\u0000\u0000\u0cdd]\u0001\u0000\u0000\u0000\u0cde"+ - "\u0ce0\u0003\u01c0\u00e0\u0000\u0cdf\u0ce1\u0003\u013a\u009d\u0000\u0ce0"+ - "\u0cdf\u0001\u0000\u0000\u0000\u0ce0\u0ce1\u0001\u0000\u0000\u0000\u0ce1"+ - "_\u0001\u0000\u0000\u0000\u0ce2\u0ce3\u0003\u01c0\u00e0\u0000\u0ce3\u0ce7"+ - "\u0003\u0130\u0098\u0000\u0ce4\u0ce5\u0005\u0092\u0000\u0000\u0ce5\u0ce6"+ - "\u0005\u00f4\u0000\u0000\u0ce6\u0ce8\u0003\u0130\u0098\u0000\u0ce7\u0ce4"+ - "\u0001\u0000\u0000\u0000\u0ce7\u0ce8\u0001\u0000\u0000\u0000\u0ce8\u0cea"+ - "\u0001\u0000\u0000\u0000\u0ce9\u0ceb\u0003h4\u0000\u0cea\u0ce9\u0001\u0000"+ - "\u0000\u0000\u0cea\u0ceb\u0001\u0000\u0000\u0000\u0ceb\u0ced\u0001\u0000"+ - "\u0000\u0000\u0cec\u0cee\u0003\u013a\u009d\u0000\u0ced\u0cec\u0001\u0000"+ - "\u0000\u0000\u0ced\u0cee\u0001\u0000\u0000\u0000\u0ceea\u0001\u0000\u0000"+ - "\u0000\u0cef\u0cf0\u0005\u000e\u0000\u0000\u0cf0\u0cf1\u0005O\u0000\u0000"+ - "\u0cf1\u0cf3\u0003\u014e\u00a7\u0000\u0cf2\u0cf4\u0003d2\u0000\u0cf3\u0cf2"+ - "\u0001\u0000\u0000\u0000\u0cf3\u0cf4\u0001\u0000\u0000\u0000\u0cf4\u0cf6"+ - "\u0001\u0000\u0000\u0000\u0cf5\u0cf7\u0003f3\u0000\u0cf6\u0cf5\u0001\u0000"+ - "\u0000\u0000\u0cf6\u0cf7\u0001\u0000\u0000\u0000\u0cf7\u0cf9\u0001\u0000"+ - "\u0000\u0000\u0cf8\u0cfa\u0003\u013a\u009d\u0000\u0cf9\u0cf8\u0001\u0000"+ - "\u0000\u0000\u0cf9\u0cfa\u0001\u0000\u0000\u0000\u0cfa\u0dcc\u0001\u0000"+ - "\u0000\u0000\u0cfb\u0cfc\u0005\u000e\u0000\u0000\u0cfc\u0cfd\u0005O\u0000"+ - "\u0000\u0cfd\u0cfe\u0005\u0002\u0000\u0000\u0cfe\u0cff\u0003\u014c\u00a6"+ - "\u0000\u0cff\u0d01\u0005\u0003\u0000\u0000\u0d00\u0d02\u0003f3\u0000\u0d01"+ - "\u0d00\u0001\u0000\u0000\u0000\u0d01\u0d02\u0001\u0000\u0000\u0000\u0d02"+ - "\u0d04\u0001\u0000\u0000\u0000\u0d03\u0d05\u0003\u013a\u009d\u0000\u0d04"+ - "\u0d03\u0001\u0000\u0000\u0000\u0d04\u0d05\u0001\u0000\u0000\u0000\u0d05"+ - "\u0dcc\u0001\u0000\u0000\u0000\u0d06\u0d07\u0005\u008e\u0000\u0000\u0d07"+ - "\u0d08\u0005O\u0000\u0000\u0d08\u0d0a\u0003\u01c0\u00e0\u0000\u0d09\u0d0b"+ - "\u0003h4\u0000\u0d0a\u0d09\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0001\u0000"+ - "\u0000\u0000\u0d0b\u0d0d\u0001\u0000\u0000\u0000\u0d0c\u0d0e\u0003\u013a"+ - "\u009d\u0000\u0d0d\u0d0c\u0001\u0000\u0000\u0000\u0d0d\u0d0e\u0001\u0000"+ - "\u0000\u0000\u0d0e\u0dcc\u0001\u0000\u0000\u0000\u0d0f\u0d10\u0005\u0122"+ - "\u0000\u0000\u0d10\u0d11\u0005O\u0000\u0000\u0d11\u0d13\u0003\u014e\u00a7"+ - "\u0000\u0d12\u0d14\u0003d2\u0000\u0d13\u0d12\u0001\u0000\u0000\u0000\u0d13"+ - "\u0d14\u0001\u0000\u0000\u0000\u0d14\u0d16\u0001\u0000\u0000\u0000\u0d15"+ - "\u0d17\u0003h4\u0000\u0d16\u0d15\u0001\u0000\u0000\u0000\u0d16\u0d17\u0001"+ - "\u0000\u0000\u0000\u0d17\u0d19\u0001\u0000\u0000\u0000\u0d18\u0d1a\u0003"+ - "\u013a\u009d\u0000\u0d19\u0d18\u0001\u0000\u0000\u0000\u0d19\u0d1a\u0001"+ - "\u0000\u0000\u0000\u0d1a\u0dcc\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0005"+ - "\u013a\u0000\u0000\u0d1c\u0d1d\u0005;\u0000\u0000\u0d1d\u0d1f\u0003\u0130"+ - "\u0098\u0000\u0d1e\u0d20\u0003h4\u0000\u0d1f\u0d1e\u0001\u0000\u0000\u0000"+ - "\u0d1f\u0d20\u0001\u0000\u0000\u0000\u0d20\u0d22\u0001\u0000\u0000\u0000"+ - "\u0d21\u0d23\u0003\u013a\u009d\u0000\u0d22\u0d21\u0001\u0000\u0000\u0000"+ - "\u0d22\u0d23\u0001\u0000\u0000\u0000\u0d23\u0dcc\u0001\u0000\u0000\u0000"+ - "\u0d24\u0d26\u0005\u000e\u0000\u0000\u0d25\u0d27\u0005\u01be\u0000\u0000"+ - "\u0d26\u0d25\u0001\u0000\u0000\u0000\u0d26\u0d27\u0001\u0000\u0000\u0000"+ - "\u0d27\u0d28\u0001\u0000\u0000\u0000\u0d28\u0d37\u0003\u0156\u00ab\u0000"+ - "\u0d29\u0d2a\u0005\u0088\u0000\u0000\u0d2a\u0d2e\u0005;\u0000\u0000\u0d2b"+ - "\u0d2c\u0005\u00ca\u0000\u0000\u0d2c\u0d2f\u0003\u0130\u0098\u0000\u0d2d"+ - "\u0d2f\u0005\u0167\u0000\u0000\u0d2e\u0d2b\u0001\u0000\u0000\u0000\u0d2e"+ - "\u0d2d\u0001\u0000\u0000\u0000\u0d2f\u0d35\u0001\u0000\u0000\u0000\u0d30"+ - "\u0d33\u00057\u0000\u0000\u0d31\u0d34\u0005\u0216\u0000\u0000\u0d32\u0d34"+ - "\u0005 \u0000\u0000\u0d33\u0d31\u0001\u0000\u0000\u0000\u0d33\u0d32\u0001"+ - "\u0000\u0000\u0000\u0d34\u0d36\u0001\u0000\u0000\u0000\u0d35\u0d30\u0001"+ - "\u0000\u0000\u0000\u0d35\u0d36\u0001\u0000\u0000\u0000\u0d36\u0d38\u0001"+ - "\u0000\u0000\u0000\u0d37\u0d29\u0001\u0000\u0000\u0000\u0d37\u0d38\u0001"+ - "\u0000\u0000\u0000\u0d38\u0d3a\u0001\u0000\u0000\u0000\u0d39\u0d3b\u0003"+ - "\u013a\u009d\u0000\u0d3a\u0d39\u0001\u0000\u0000\u0000\u0d3a\u0d3b\u0001"+ - "\u0000\u0000\u0000\u0d3b\u0dcc\u0001\u0000\u0000\u0000\u0d3c\u0d3e\u0005"+ - "\u008e\u0000\u0000\u0d3d\u0d3f\u0005\u01be\u0000\u0000\u0d3e\u0d3d\u0001"+ - "\u0000\u0000\u0000\u0d3e\u0d3f\u0001\u0000\u0000\u0000\u0d3f\u0d40\u0001"+ - "\u0000\u0000\u0000\u0d40\u0d43\u0005\u0141\u0000\u0000\u0d41\u0d42\u0005"+ - "\u00d6\u0000\u0000\u0d42\u0d44\u0005\u00a4\u0000\u0000\u0d43\u0d41\u0001"+ - "\u0000\u0000\u0000\u0d43\u0d44\u0001\u0000\u0000\u0000\u0d44\u0d45\u0001"+ - "\u0000\u0000\u0000\u0d45\u0d47\u0003\u01c0\u00e0\u0000\u0d46\u0d48\u0005"+ - "\u00b8\u0000\u0000\u0d47\u0d46\u0001\u0000\u0000\u0000\u0d47\u0d48\u0001"+ - "\u0000\u0000\u0000\u0d48\u0d4c\u0001\u0000\u0000\u0000\u0d49\u0d4a\u0005"+ - "\u00bb\u0000\u0000\u0d4a\u0d4b\u0005\u00db\u0000\u0000\u0d4b\u0d4d\u0003"+ - "\u01c0\u00e0\u0000\u0d4c\u0d49\u0001\u0000\u0000\u0000\u0d4c\u0d4d\u0001"+ - "\u0000\u0000\u0000\u0d4d\u0dcc\u0001\u0000\u0000\u0000\u0d4e\u0d50\u0005"+ - "\u0122\u0000\u0000\u0d4f\u0d51\u0005\u01be\u0000\u0000\u0d50\u0d4f\u0001"+ - "\u0000\u0000\u0000\u0d50\u0d51\u0001\u0000\u0000\u0000\u0d51\u0d52\u0001"+ - "\u0000\u0000\u0000\u0d52\u0d58\u0005\u0141\u0000\u0000\u0d53\u0d59\u0003"+ - "\u01c0\u00e0\u0000\u0d54\u0d59\u0003\u0130\u0098\u0000\u0d55\u0d56\u0005"+ - "\u0002\u0000\u0000\u0d56\u0d57\u0005\u0200\u0000\u0000\u0d57\u0d59\u0005"+ - "\u0003\u0000\u0000\u0d58\u0d53\u0001\u0000\u0000\u0000\u0d58\u0d54\u0001"+ - "\u0000\u0000\u0000\u0d58\u0d55\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0001"+ - "\u0000\u0000\u0000\u0d5a\u0d5b\u0005\u0199\u0000\u0000\u0d5b\u0d5c\u0005"+ - "\u0002\u0000\u0000\u0d5c\u0d5d\u0003\u013c\u009e\u0000\u0d5d\u0d5e\u0005"+ - "\u0003\u0000\u0000\u0d5e\u0dcc\u0001\u0000\u0000\u0000\u0d5f\u0d61\u0005"+ - "\u0176\u0000\u0000\u0d60\u0d62\u0003\u00a0P\u0000\u0d61\u0d60\u0001\u0000"+ - "\u0000\u0000\u0d61\u0d62\u0001\u0000\u0000\u0000\u0d62\u0d63\u0001\u0000"+ - "\u0000\u0000\u0d63\u0d65\u0005\u01f1\u0000\u0000\u0d64\u0d66\u0003\u00a0"+ - "P\u0000\u0d65\u0d64\u0001\u0000\u0000\u0000\u0d65\u0d66\u0001\u0000\u0000"+ - "\u0000\u0d66\u0d68\u0001\u0000\u0000\u0000\u0d67\u0d69\u0005\u00b8\u0000"+ - "\u0000\u0d68\u0d67\u0001\u0000\u0000\u0000\u0d68\u0d69\u0001\u0000\u0000"+ - "\u0000\u0d69\u0d6b\u0001\u0000\u0000\u0000\u0d6a\u0d6c\u0003\u013a\u009d"+ - "\u0000\u0d6b\u0d6a\u0001\u0000\u0000\u0000\u0d6b\u0d6c\u0001\u0000\u0000"+ - "\u0000\u0d6c\u0dcc\u0001\u0000\u0000\u0000\u0d6d\u0d6e\u0005\u0176\u0000"+ - "\u0000\u0d6e\u0d6f\u0005\u01f1\u0000\u0000\u0d6f\u0d70\u0005\u01b7\u0000"+ - "\u0000\u0d70\u0d72\u0003\u01c0\u00e0\u0000\u0d71\u0d73\u0003\u013a\u009d"+ - "\u0000\u0d72\u0d71\u0001\u0000\u0000\u0000\u0d72\u0d73\u0001\u0000\u0000"+ - "\u0000\u0d73\u0d75\u0001\u0000\u0000\u0000\u0d74\u0d76\u0005\u00b8\u0000"+ - "\u0000\u0d75\u0d74\u0001\u0000\u0000\u0000\u0d75\u0d76\u0001\u0000\u0000"+ - "\u0000\u0d76\u0dcc\u0001\u0000\u0000\u0000\u0d77\u0d78\u0005\u0173\u0000"+ - "\u0000\u0d78\u0dcc\u0003\u01c0\u00e0\u0000\u0d79\u0d7a\u0005\u0173\u0000"+ - "\u0000\u0d7a\u0d7b\u0005\u0189\u0000\u0000\u0d7b\u0d7c\u0003\u01c0\u00e0"+ - "\u0000\u0d7c\u0d7d\u0003\u01c0\u00e0\u0000\u0d7d\u0dcc\u0001\u0000\u0000"+ - "\u0000\u0d7e\u0d7f\u0005\u0173\u0000\u0000\u0d7f\u0d80\u0005\u0141\u0000"+ - "\u0000\u0d80\u0d81\u0003\u01c0\u00e0\u0000\u0d81\u0d82\u0003\u01c0\u00e0"+ - "\u0000\u0d82\u0dcc\u0001\u0000\u0000\u0000\u0d83\u0d84\u0005\u0173\u0000"+ - "\u0000\u0d84\u0d85\u0005O\u0000\u0000\u0d85\u0d86\u0003\u01c0\u00e0\u0000"+ - "\u0d86\u0d87\u0003\u01c0\u00e0\u0000\u0d87\u0dcc\u0001\u0000\u0000\u0000"+ - "\u0d88\u0d89\u0005\u000e\u0000\u0000\u0d89\u0dcc\u0003\u0152\u00a9\u0000"+ - "\u0d8a\u0d8b\u0005\u008e\u0000\u0000\u0d8b\u0d8e\u0005\u00db\u0000\u0000"+ - "\u0d8c\u0d8d\u0005\u00d6\u0000\u0000\u0d8d\u0d8f\u0005\u00a4\u0000\u0000"+ - "\u0d8e\u0d8c\u0001\u0000\u0000\u0000\u0d8e\u0d8f\u0001\u0000\u0000\u0000"+ - "\u0d8f\u0d90\u0001\u0000\u0000\u0000\u0d90\u0dcc\u0003\u01c0\u00e0\u0000"+ - "\u0d91\u0d92\u0005\u0096\u0000\u0000\u0d92\u0d93\u0005\u00ae\u0000\u0000"+ - "\u0d93\u0d96\u0005\u0211\u0000\u0000\u0d94\u0d95\u0005\u01f1\u0000\u0000"+ - "\u0d95\u0d97\u0003\u013a\u009d\u0000\u0d96\u0d94\u0001\u0000\u0000\u0000"+ - "\u0d96\u0d97\u0001\u0000\u0000\u0000\u0d97\u0dcc\u0001\u0000\u0000\u0000"+ - "\u0d98\u0d99\u0005\u0122\u0000\u0000\u0d99\u0da8\u0005\u0089\u0000\u0000"+ - "\u0d9a\u0d9b\u0005\u0088\u0000\u0000\u0d9b\u0d9f\u0005;\u0000\u0000\u0d9c"+ - "\u0d9d\u0005\u00ca\u0000\u0000\u0d9d\u0da0\u0003\u0130\u0098\u0000\u0d9e"+ - "\u0da0\u0005\u0167\u0000\u0000\u0d9f\u0d9c\u0001\u0000\u0000\u0000\u0d9f"+ - "\u0d9e\u0001\u0000\u0000\u0000\u0da0\u0da6\u0001\u0000\u0000\u0000\u0da1"+ - "\u0da4\u00057\u0000\u0000\u0da2\u0da5\u0005\u0216\u0000\u0000\u0da3\u0da5"+ - "\u0005 \u0000\u0000\u0da4\u0da2\u0001\u0000\u0000\u0000\u0da4\u0da3\u0001"+ - "\u0000\u0000\u0000\u0da5\u0da7\u0001\u0000\u0000\u0000\u0da6\u0da1\u0001"+ - "\u0000\u0000\u0000\u0da6\u0da7\u0001\u0000\u0000\u0000\u0da7\u0da9\u0001"+ - "\u0000\u0000\u0000\u0da8\u0d9a\u0001\u0000\u0000\u0000\u0da8\u0da9\u0001"+ - "\u0000\u0000\u0000\u0da9\u0dcc\u0001\u0000\u0000\u0000\u0daa\u0dab\u0005"+ - "\u0122\u0000\u0000\u0dab\u0dac\u0005Q\u0000\u0000\u0dac\u0dcc\u0005\u0211"+ - "\u0000\u0000\u0dad\u0dae\u0005\u0122\u0000\u0000\u0dae\u0daf\u0005O\u0000"+ - "\u0000\u0daf\u0db0\u0003\u01c0\u00e0\u0000\u0db0\u0db1\u0005Q\u0000\u0000"+ - "\u0db1\u0db2\u0005\u0211\u0000\u0000\u0db2\u0dcc\u0001\u0000\u0000\u0000"+ - "\u0db3\u0db4\u0005\u0122\u0000\u0000\u0db4\u0db5\u0005\u009b\u0000\u0000"+ - "\u0db5\u0db6\u0005\u01c6\u0000\u0000\u0db6\u0db8\u0003\u01c0\u00e0\u0000"+ - "\u0db7\u0db9\u0003\u013a\u009d\u0000\u0db8\u0db7\u0001\u0000\u0000\u0000"+ - "\u0db8\u0db9\u0001\u0000\u0000\u0000\u0db9\u0dcc\u0001\u0000\u0000\u0000"+ - "\u0dba\u0dbc\u0005\u000e\u0000\u0000\u0dbb\u0dbd\u0005\u01be\u0000\u0000"+ - "\u0dbc\u0dbb\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0001\u0000\u0000\u0000"+ - "\u0dbd\u0dbe\u0001\u0000\u0000\u0000\u0dbe\u0dbf\u0005\u0142\u0000\u0000"+ - "\u0dbf\u0dc0\u0005\u00bb\u0000\u0000\u0dc0\u0dc1\u0003\u0160\u00b0\u0000"+ - "\u0dc1\u0dc2\u0005\u01c6\u0000\u0000\u0dc2\u0dc3\u0003\u0160\u00b0\u0000"+ - "\u0dc3\u0dc4\u0005\u00e5\u0000\u0000\u0dc4\u0dc6\u0005\u0216\u0000\u0000"+ - "\u0dc5\u0dc7\u0003\u01c0\u00e0\u0000\u0dc6\u0dc5\u0001\u0000\u0000\u0000"+ - "\u0dc6\u0dc7\u0001\u0000\u0000\u0000\u0dc7\u0dc9\u0001\u0000\u0000\u0000"+ - "\u0dc8\u0dca\u0003\u013a\u009d\u0000\u0dc9\u0dc8\u0001\u0000\u0000\u0000"+ - "\u0dc9\u0dca\u0001\u0000\u0000\u0000\u0dca\u0dcc\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0cef\u0001\u0000\u0000\u0000\u0dcb\u0cfb\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d06\u0001\u0000\u0000\u0000\u0dcb\u0d0f\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d1b\u0001\u0000\u0000\u0000\u0dcb\u0d24\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d3c\u0001\u0000\u0000\u0000\u0dcb\u0d4e\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d5f\u0001\u0000\u0000\u0000\u0dcb\u0d6d\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d77\u0001\u0000\u0000\u0000\u0dcb\u0d79\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d7e\u0001\u0000\u0000\u0000\u0dcb\u0d83\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d88\u0001\u0000\u0000\u0000\u0dcb\u0d8a\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0d91\u0001\u0000\u0000\u0000\u0dcb\u0d98\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0daa\u0001\u0000\u0000\u0000\u0dcb\u0dad\u0001\u0000\u0000\u0000"+ - "\u0dcb\u0db3\u0001\u0000\u0000\u0000\u0dcb\u0dba\u0001\u0000\u0000\u0000"+ - "\u0dccc\u0001\u0000\u0000\u0000\u0dcd\u0dd1\u0005\u00b2\u0000\u0000\u0dce"+ - "\u0dcf\u0005\u0010\u0000\u0000\u0dcf\u0dd1\u0003\u01c0\u00e0\u0000\u0dd0"+ - "\u0dcd\u0001\u0000\u0000\u0000\u0dd0\u0dce\u0001\u0000\u0000\u0000\u0dd1"+ - "e\u0001\u0000\u0000\u0000\u0dd2\u0dd3\u0007\u0014\u0000\u0000\u0dd3\u0dd4"+ - "\u0003\u01c0\u00e0\u0000\u0dd4g\u0001\u0000\u0000\u0000\u0dd5\u0dd6\u0005"+ - "\u00bb\u0000\u0000\u0dd6\u0dd7\u0003\u01c0\u00e0\u0000\u0dd7i\u0001\u0000"+ - "\u0000\u0000\u0dd8\u0dd9\u0005\u008e\u0000\u0000\u0dd9\u0ddc\u0005\u01e9"+ - "\u0000\u0000\u0dda\u0ddb\u0005\u00d6\u0000\u0000\u0ddb\u0ddd\u0005\u00a4"+ - "\u0000\u0000\u0ddc\u0dda\u0001\u0000\u0000\u0000\u0ddc\u0ddd\u0001\u0000"+ - "\u0000\u0000\u0ddd\u0dde\u0001\u0000\u0000\u0000\u0dde\u0e00\u0003\u0146"+ - "\u00a3\u0000\u0ddf\u0de0\u0005\u008e\u0000\u0000\u0de0\u0de3\u0005\u017c"+ - "\u0000\u0000\u0de1\u0de2\u0005\u00d6\u0000\u0000\u0de2\u0de4\u0005\u00a4"+ - "\u0000\u0000\u0de3\u0de1\u0001\u0000\u0000\u0000\u0de3\u0de4\u0001\u0000"+ - "\u0000\u0000\u0de4\u0de5\u0001\u0000\u0000\u0000\u0de5\u0e00\u0003\u00b6"+ - "[\u0000\u0de6\u0de7\u0005\u008e\u0000\u0000\u0de7\u0de8\u0005\u018b\u0000"+ - "\u0000\u0de8\u0deb\u0005\u0156\u0000\u0000\u0de9\u0dea\u0005\u00d6\u0000"+ - "\u0000\u0dea\u0dec\u0005\u00a4\u0000\u0000\u0deb\u0de9\u0001\u0000\u0000"+ - "\u0000\u0deb\u0dec\u0001\u0000\u0000\u0000\u0dec\u0ded\u0001\u0000\u0000"+ - "\u0000\u0ded\u0dee\u0003\u01c0\u00e0\u0000\u0dee\u0def\u0005\u0135\u0000"+ - "\u0000\u0def\u0df6\u0003\u0146\u00a3\u0000\u0df0\u0df4\u0005\u00b6\u0000"+ - "\u0000\u0df1\u0df5\u0003\u00be_\u0000\u0df2\u0df3\u0005\u0186\u0000\u0000"+ - "\u0df3\u0df5\u0003\u01c0\u00e0\u0000\u0df4\u0df1\u0001\u0000\u0000\u0000"+ - "\u0df4\u0df2\u0001\u0000\u0000\u0000\u0df5\u0df7\u0001\u0000\u0000\u0000"+ - "\u0df6\u0df0\u0001\u0000\u0000\u0000\u0df6\u0df7\u0001\u0000\u0000\u0000"+ - "\u0df7\u0e00\u0001\u0000\u0000\u0000\u0df8\u0df9\u0005\u008e\u0000\u0000"+ - "\u0df9\u0dfc\u0005\u01a6\u0000\u0000\u0dfa\u0dfb\u0005\u00d6\u0000\u0000"+ - "\u0dfb\u0dfd\u0005\u00a4\u0000\u0000\u0dfc\u0dfa\u0001\u0000\u0000\u0000"+ - "\u0dfc\u0dfd\u0001\u0000\u0000\u0000\u0dfd\u0dfe\u0001\u0000\u0000\u0000"+ - "\u0dfe\u0e00\u0003\u01c0\u00e0\u0000\u0dff\u0dd8\u0001\u0000\u0000\u0000"+ - "\u0dff\u0ddf\u0001\u0000\u0000\u0000\u0dff\u0de6\u0001\u0000\u0000\u0000"+ - "\u0dff\u0df8\u0001\u0000\u0000\u0000\u0e00k\u0001\u0000\u0000\u0000\u0e01"+ - "\u0e03\u0005\u019d\u0000\u0000\u0e02\u0e04\u0005 \u0000\u0000\u0e03\u0e02"+ - "\u0001\u0000\u0000\u0000\u0e03\u0e04\u0001\u0000\u0000\u0000\u0e04\u0e05"+ - "\u0001\u0000\u0000\u0000\u0e05\u0e08\u0005\u0016\u0000\u0000\u0e06\u0e09"+ - "\u0005\u0216\u0000\u0000\u0e07\u0e09\u0003\u0146\u00a3\u0000\u0e08\u0e06"+ - "\u0001\u0000\u0000\u0000\u0e08\u0e07\u0001\u0000\u0000\u0000\u0e08\u0e09"+ - "\u0001\u0000\u0000\u0000\u0e09\u0e0f\u0001\u0000\u0000\u0000\u0e0a\u0e0b"+ - "\u0005\u01ef\u0000\u0000\u0e0b\u0e0c\u0003\u01c0\u00e0\u0000\u0e0c\u0e0d"+ - "\u0005\u01f7\u0000\u0000\u0e0d\u0e0e\u0005\u0211\u0000\u0000\u0e0e\u0e10"+ - "\u0001\u0000\u0000\u0000\u0e0f\u0e0a\u0001\u0000\u0000\u0000\u0e0f\u0e10"+ - "\u0001\u0000\u0000\u0000\u0e10\u0e46\u0001\u0000\u0000\u0000\u0e11\u0e12"+ - "\u0005\u019d\u0000\u0000\u0e12\u0e13\u0005\u0163\u0000\u0000\u0e13\u0e14"+ - "\u0005\u0016\u0000\u0000\u0e14\u0e16\u0005\u00f0\u0000\u0000\u0e15\u0e17"+ - "\u0003\u0146\u00a3\u0000\u0e16\u0e15\u0001\u0000\u0000\u0000\u0e16\u0e17"+ - "\u0001\u0000\u0000\u0000\u0e17\u0e1d\u0001\u0000\u0000\u0000\u0e18\u0e19"+ - "\u0005\u01ef\u0000\u0000\u0e19\u0e1a\u0003\u01c0\u00e0\u0000\u0e1a\u0e1b"+ - "\u0005\u01f7\u0000\u0000\u0e1b\u0e1c\u0005\u0211\u0000\u0000\u0e1c\u0e1e"+ - "\u0001\u0000\u0000\u0000\u0e1d\u0e18\u0001\u0000\u0000\u0000\u0e1d\u0e1e"+ - "\u0001\u0000\u0000\u0000\u0e1e\u0e46\u0001\u0000\u0000\u0000\u0e1f\u0e20"+ - "\u0005\u019d\u0000\u0000\u0e20\u0e21\u0005O\u0000\u0000\u0e21\u0e22\u0005"+ - "\u00ce\u0000\u0000\u0e22\u0e23\u0003\u0146\u00a3\u0000\u0e23\u0e24\u0003"+ - "\u0130\u0098\u0000\u0e24\u0e46\u0001\u0000\u0000\u0000\u0e25\u0e26\u0005"+ - "\u0016\u0000\u0000\u0e26\u0e27\u0005o\u0000\u0000\u0e27\u0e2c\u0003\u0146"+ - "\u00a3\u0000\u0e28\u0e29\u0005\u01f1\u0000\u0000\u0e29\u0e2b\u0003p8\u0000"+ - "\u0e2a\u0e28\u0001\u0000\u0000\u0000\u0e2b\u0e2e\u0001\u0000\u0000\u0000"+ - "\u0e2c\u0e2a\u0001\u0000\u0000\u0000\u0e2c\u0e2d\u0001\u0000\u0000\u0000"+ - "\u0e2d\u0e30\u0001\u0000\u0000\u0000\u0e2e\u0e2c\u0001\u0000\u0000\u0000"+ - "\u0e2f\u0e31\u0003\u013a\u009d\u0000\u0e30\u0e2f\u0001\u0000\u0000\u0000"+ - "\u0e30\u0e31\u0001\u0000\u0000\u0000\u0e31\u0e46\u0001\u0000\u0000\u0000"+ - "\u0e32\u0e33\u0005\u0016\u0000\u0000\u0e33\u0e34\u0005\u01b7\u0000\u0000"+ - "\u0e34\u0e36\u0003\u0146\u00a3\u0000\u0e35\u0e37\u0003\u00a0P\u0000\u0e36"+ - "\u0e35\u0001\u0000\u0000\u0000\u0e36\u0e37\u0001\u0000\u0000\u0000\u0e37"+ - "\u0e39\u0001\u0000\u0000\u0000\u0e38\u0e3a\u0003\u0130\u0098\u0000\u0e39"+ - "\u0e38\u0001\u0000\u0000\u0000\u0e39\u0e3a\u0001\u0000\u0000\u0000\u0e3a"+ - "\u0e3f\u0001\u0000\u0000\u0000\u0e3b\u0e3c\u0005\u01f1\u0000\u0000\u0e3c"+ - "\u0e3e\u0003p8\u0000\u0e3d\u0e3b\u0001\u0000\u0000\u0000\u0e3e\u0e41\u0001"+ - "\u0000\u0000\u0000\u0e3f\u0e3d\u0001\u0000\u0000\u0000\u0e3f\u0e40\u0001"+ - "\u0000\u0000\u0000\u0e40\u0e43\u0001\u0000\u0000\u0000\u0e41\u0e3f\u0001"+ - "\u0000\u0000\u0000\u0e42\u0e44\u0003\u013a\u009d\u0000\u0e43\u0e42\u0001"+ - "\u0000\u0000\u0000\u0e43\u0e44\u0001\u0000\u0000\u0000\u0e44\u0e46\u0001"+ - "\u0000\u0000\u0000\u0e45\u0e01\u0001\u0000\u0000\u0000\u0e45\u0e11\u0001"+ - "\u0000\u0000\u0000\u0e45\u0e1f\u0001\u0000\u0000\u0000\u0e45\u0e25\u0001"+ - "\u0000\u0000\u0000\u0e45\u0e32\u0001\u0000\u0000\u0000\u0e46m\u0001\u0000"+ - "\u0000\u0000\u0e47\u0e48\u0005\u0015\u0000\u0000\u0e48\u0e49\u0005\u01b7"+ - "\u0000\u0000\u0e49\u0e4a\u0003\u0146\u00a3\u0000\u0e4a\u0e4b\u0005\u0199"+ - "\u0000\u0000\u0e4b\u0e4c\u0005\u01aa\u0000\u0000\u0e4c\u0e4d\u0005\u0002"+ - "\u0000\u0000\u0e4d\u0e4e\u0003\u013c\u009e\u0000\u0e4e\u0e50\u0005\u0003"+ - "\u0000\u0000\u0e4f\u0e51\u0003\u00a0P\u0000\u0e50\u0e4f\u0001\u0000\u0000"+ - "\u0000\u0e50\u0e51\u0001\u0000\u0000\u0000\u0e51\u0ea2\u0001\u0000\u0000"+ - "\u0000\u0e52\u0e53\u0005\u0015\u0000\u0000\u0e53\u0e54\u0005\u01b7\u0000"+ - "\u0000\u0e54\u0e57\u0003\u0146\u00a3\u0000\u0e55\u0e56\u0005\u00db\u0000"+ - "\u0000\u0e56\u0e58\u0003\u01c0\u00e0\u0000\u0e57\u0e55\u0001\u0000\u0000"+ - "\u0000\u0e57\u0e58\u0001\u0000\u0000\u0000\u0e58\u0e59\u0001\u0000\u0000"+ - "\u0000\u0e59\u0e5a\u0005\u0122\u0000\u0000\u0e5a\u0e5b\u0005O\u0000\u0000"+ - "\u0e5b\u0e5c\u0003\u01c0\u00e0\u0000\u0e5c\u0e5d\u0005\u0199\u0000\u0000"+ - "\u0e5d\u0e5e\u0005\u01aa\u0000\u0000\u0e5e\u0e5f\u0005\u0002\u0000\u0000"+ - "\u0e5f\u0e60\u0003\u013c\u009e\u0000\u0e60\u0e62\u0005\u0003\u0000\u0000"+ - "\u0e61\u0e63\u0003\u00a0P\u0000\u0e62\u0e61\u0001\u0000\u0000\u0000\u0e62"+ - "\u0e63\u0001\u0000\u0000\u0000\u0e63\u0ea2\u0001\u0000\u0000\u0000\u0e64"+ - "\u0e65\u0005\u008e\u0000\u0000\u0e65\u0e66\u0005\u01aa\u0000\u0000\u0e66"+ - "\u0e68\u0003\u0146\u00a3\u0000\u0e67\u0e69\u0003\u0130\u0098\u0000\u0e68"+ - "\u0e67\u0001\u0000\u0000\u0000\u0e68\u0e69\u0001\u0000\u0000\u0000\u0e69"+ - "\u0e6b\u0001\u0000\u0000\u0000\u0e6a\u0e6c\u0003\u00a0P\u0000\u0e6b\u0e6a"+ - "\u0001\u0000\u0000\u0000\u0e6b\u0e6c\u0001\u0000\u0000\u0000\u0e6c\u0ea2"+ - "\u0001\u0000\u0000\u0000\u0e6d\u0e6e\u0005\u008e\u0000\u0000\u0e6e\u0e6f"+ - "\u0005=\u0000\u0000\u0e6f\u0e70\u0005\u01aa\u0000\u0000\u0e70\u0ea2\u0003"+ - "\u0146\u00a3\u0000\u0e71\u0e72\u0005\u008e\u0000\u0000\u0e72\u0e73\u0005"+ - "\u00a5\u0000\u0000\u0e73\u0ea2\u0005\u01aa\u0000\u0000\u0e74\u0e75\u0005"+ - "\u008e\u0000\u0000\u0e75\u0e76\u0005\u0016\u0000\u0000\u0e76\u0e77\u0005"+ - "\u00ef\u0000\u0000\u0e77\u0ea2\u0005\u0216\u0000\u0000\u0e78\u0e79\u0005"+ - "\u00f6\u0000\u0000\u0e79\u0e7a\u0005\u0016\u0000\u0000\u0e7a\u0ea2\u0005"+ - "\u0216\u0000\u0000\u0e7b\u0e7c\u0005\u019d\u0000\u0000\u0e7c\u0e7d\u0005"+ - "\u01b7\u0000\u0000\u0e7d\u0e7e\u0005\u01aa\u0000\u0000\u0e7e\u0e80\u0003"+ - "\u0146\u00a3\u0000\u0e7f\u0e81\u0003\u00a0P\u0000\u0e80\u0e7f\u0001\u0000"+ - "\u0000\u0000\u0e80\u0e81\u0001\u0000\u0000\u0000\u0e81\u0e83\u0001\u0000"+ - "\u0000\u0000\u0e82\u0e84\u0003\u0130\u0098\u0000\u0e83\u0e82\u0001\u0000"+ - "\u0000\u0000\u0e83\u0e84\u0001\u0000\u0000\u0000\u0e84\u0ea2\u0001\u0000"+ - "\u0000\u0000\u0e85\u0e86\u0005\u019d\u0000\u0000\u0e86\u0e87\u0005\u01b7"+ - "\u0000\u0000\u0e87\u0e88\u0005\u01aa\u0000\u0000\u0e88\u0ea2\u0005\u0216"+ - "\u0000\u0000\u0e89\u0e8a\u0005\u019d\u0000\u0000\u0e8a\u0e8b\u0005\u00db"+ - "\u0000\u0000\u0e8b\u0e8c\u0005\u01aa\u0000\u0000\u0e8c\u0e8d\u0003\u0146"+ - "\u00a3\u0000\u0e8d\u0e8e\u0003\u01c0\u00e0\u0000\u0e8e\u0ea2\u0001\u0000"+ - "\u0000\u0000\u0e8f\u0e90\u0005\u019d\u0000\u0000\u0e90\u0e92\u0005O\u0000"+ - "\u0000\u0e91\u0e93\u0005=\u0000\u0000\u0e92\u0e91\u0001\u0000\u0000\u0000"+ - "\u0e92\u0e93\u0001\u0000\u0000\u0000\u0e93\u0e94\u0001\u0000\u0000\u0000"+ - "\u0e94\u0e95\u0005\u01aa\u0000\u0000\u0e95\u0e97\u0003\u0146\u00a3\u0000"+ - "\u0e96\u0e98\u0003\u0130\u0098\u0000\u0e97\u0e96\u0001\u0000\u0000\u0000"+ - "\u0e97\u0e98\u0001\u0000\u0000\u0000\u0e98\u0e9a\u0001\u0000\u0000\u0000"+ - "\u0e99\u0e9b\u0003\u00a0P\u0000\u0e9a\u0e99\u0001\u0000\u0000\u0000\u0e9a"+ - "\u0e9b\u0001\u0000\u0000\u0000\u0e9b\u0ea2\u0001\u0000\u0000\u0000\u0e9c"+ - "\u0e9d\u0005\u019d\u0000\u0000\u0e9d\u0e9e\u0005\u0016\u0000\u0000\u0e9e"+ - "\u0e9f\u0005\u01bc\u0000\u0000\u0e9f\u0ea0\u0005\u01ab\u0000\u0000\u0ea0"+ - "\u0ea2\u0005\u0216\u0000\u0000\u0ea1\u0e47\u0001\u0000\u0000\u0000\u0ea1"+ - "\u0e52\u0001\u0000\u0000\u0000\u0ea1\u0e64\u0001\u0000\u0000\u0000\u0ea1"+ - "\u0e6d\u0001\u0000\u0000\u0000\u0ea1\u0e71\u0001\u0000\u0000\u0000\u0ea1"+ - "\u0e74\u0001\u0000\u0000\u0000\u0ea1\u0e78\u0001\u0000\u0000\u0000\u0ea1"+ - "\u0e7b\u0001\u0000\u0000\u0000\u0ea1\u0e85\u0001\u0000\u0000\u0000\u0ea1"+ - "\u0e89\u0001\u0000\u0000\u0000\u0ea1\u0e8f\u0001\u0000\u0000\u0000\u0ea1"+ - "\u0e9c\u0001\u0000\u0000\u0000\u0ea2o\u0001\u0000\u0000\u0000\u0ea3\u0eb6"+ - "\u0005\u01b5\u0000\u0000\u0ea4\u0eb6\u0005\u00da\u0000\u0000\u0ea5\u0eb6"+ - "\u0005\u00be\u0000\u0000\u0ea6\u0eb6\u0005\u01a4\u0000\u0000\u0ea7\u0eb6"+ - "\u0005\u00ce\u0000\u0000\u0ea8\u0ead\u0005\u018e\u0000\u0000\u0ea9\u0eaa"+ - "\u0005\u018c\u0000\u0000\u0eaa\u0eae\u0005\u0216\u0000\u0000\u0eab\u0eac"+ - "\u0005\u014a\u0000\u0000\u0eac\u0eae\u0005\u0216\u0000\u0000\u0ead\u0ea9"+ - "\u0001\u0000\u0000\u0000\u0ead\u0eab\u0001\u0000\u0000\u0000\u0eae\u0eb6"+ - "\u0001\u0000\u0000\u0000\u0eaf\u0eb0\u00057\u0000\u0000\u0eb0\u0eb6\u0005"+ - "\u0216\u0000\u0000\u0eb1\u0eb2\u0005\u014b\u0000\u0000\u0eb2\u0eb6\u0005"+ - "\u0216\u0000\u0000\u0eb3\u0eb4\u0005e\u0000\u0000\u0eb4\u0eb6\u0005\u0211"+ - "\u0000\u0000\u0eb5\u0ea3\u0001\u0000\u0000\u0000\u0eb5\u0ea4\u0001\u0000"+ - "\u0000\u0000\u0eb5\u0ea5\u0001\u0000\u0000\u0000\u0eb5\u0ea6\u0001\u0000"+ - "\u0000\u0000\u0eb5\u0ea7\u0001\u0000\u0000\u0000\u0eb5\u0ea8\u0001\u0000"+ - "\u0000\u0000\u0eb5\u0eaf\u0001\u0000\u0000\u0000\u0eb5\u0eb1\u0001\u0000"+ - "\u0000\u0000\u0eb5\u0eb3\u0001\u0000\u0000\u0000\u0eb6q\u0001\u0000\u0000"+ - "\u0000\u0eb7\u0eb8\u0005c\u0000\u0000\u0eb8\u0ebc\u0007\u000b\u0000\u0000"+ - "\u0eb9\u0eba\u0005\u00d6\u0000\u0000\u0eba\u0ebb\u0005\u012f\u0000\u0000"+ - "\u0ebb\u0ebd\u0005\u00a4\u0000\u0000\u0ebc\u0eb9\u0001\u0000\u0000\u0000"+ - "\u0ebc\u0ebd\u0001\u0000\u0000\u0000\u0ebd\u0ebe\u0001\u0000\u0000\u0000"+ - "\u0ebe\u0ec0\u0003\u0146\u00a3\u0000\u0ebf\u0ec1\u0003\u013a\u009d\u0000"+ - "\u0ec0\u0ebf\u0001\u0000\u0000\u0000\u0ec0\u0ec1\u0001\u0000\u0000\u0000"+ - "\u0ec1\u0f1f\u0001\u0000\u0000\u0000\u0ec2\u0ec3\u0005c\u0000\u0000\u0ec3"+ - "\u0ec7\u0005\u01dc\u0000\u0000\u0ec4\u0ec5\u0005\u00d6\u0000\u0000\u0ec5"+ - "\u0ec6\u0005\u012f\u0000\u0000\u0ec6\u0ec8\u0005\u00a4\u0000\u0000\u0ec7"+ - "\u0ec4\u0001\u0000\u0000\u0000\u0ec7\u0ec8\u0001\u0000\u0000\u0000\u0ec8"+ - "\u0ec9\u0001\u0000\u0000\u0000\u0ec9\u0ece\u0003\u00c0`\u0000\u0eca\u0ecf"+ - "\u0005\u01b3\u0000\u0000\u0ecb\u0ecc\u0005|\u0000\u0000\u0ecc\u0ecd\u0005"+ - "\u0186\u0000\u0000\u0ecd\u0ecf\u0005\u0211\u0000\u0000\u0ece\u0eca\u0001"+ - "\u0000\u0000\u0000\u0ece\u0ecb\u0001\u0000\u0000\u0000\u0ece\u0ecf\u0001"+ - "\u0000\u0000\u0000\u0ecf\u0ed0\u0001\u0000\u0000\u0000\u0ed0\u0ed3\u0003"+ - "~?\u0000\u0ed1\u0ed2\u0005Q\u0000\u0000\u0ed2\u0ed4\u0005\u0211\u0000"+ - "\u0000\u0ed3\u0ed1\u0001\u0000\u0000\u0000\u0ed3\u0ed4\u0001\u0000\u0000"+ - "\u0000\u0ed4\u0f1f\u0001\u0000\u0000\u0000\u0ed5\u0ed8\u0005c\u0000\u0000"+ - "\u0ed6\u0ed7\u0005\u0169\u0000\u0000\u0ed7\u0ed9\u0005\u0136\u0000\u0000"+ - "\u0ed8\u0ed6\u0001\u0000\u0000\u0000\u0ed8\u0ed9\u0001\u0000\u0000\u0000"+ - "\u0ed9\u0eda\u0001\u0000\u0000\u0000\u0eda\u0edb\u0005\u017b\u0000\u0000"+ - "\u0edb\u0edc\u0003\u01c0\u00e0\u0000\u0edc\u0edd\u0005\u01f1\u0000\u0000"+ - "\u0edd\u0ede\u0003|>\u0000\u0ede\u0f1f\u0001\u0000\u0000\u0000\u0edf\u0ee1"+ - "\u0005c\u0000\u0000\u0ee0\u0ee2\u0005\u00a9\u0000\u0000\u0ee1\u0ee0\u0001"+ - "\u0000\u0000\u0000\u0ee1\u0ee2\u0001\u0000\u0000\u0000\u0ee2\u0ee3\u0001"+ - "\u0000\u0000\u0000\u0ee3\u0ee7\u0005\u017c\u0000\u0000\u0ee4\u0ee5\u0005"+ - "\u00d6\u0000\u0000\u0ee5\u0ee6\u0005\u012f\u0000\u0000\u0ee6\u0ee8\u0005"+ - "\u00a4\u0000\u0000\u0ee7\u0ee4\u0001\u0000\u0000\u0000\u0ee7\u0ee8\u0001"+ - "\u0000\u0000\u0000\u0ee8\u0ee9\u0001\u0000\u0000\u0000\u0ee9\u0eeb\u0003"+ - "\u00b6[\u0000\u0eea\u0eec\u0003\u013a\u009d\u0000\u0eeb\u0eea\u0001\u0000"+ - "\u0000\u0000\u0eeb\u0eec\u0001\u0000\u0000\u0000\u0eec\u0f1f\u0001\u0000"+ - "\u0000\u0000\u0eed\u0eee\u0005c\u0000\u0000\u0eee\u0eef\u0005\u01ad\u0000"+ - "\u0000\u0eef\u0ef3\u0005\u01e5\u0000\u0000\u0ef0\u0ef1\u0005\u00d6\u0000"+ - "\u0000\u0ef1\u0ef2\u0005\u012f\u0000\u0000\u0ef2\u0ef4\u0005\u00a4\u0000"+ - "\u0000\u0ef3\u0ef0\u0001\u0000\u0000\u0000\u0ef3\u0ef4\u0001\u0000\u0000"+ - "\u0000\u0ef4\u0ef5\u0001\u0000\u0000\u0000\u0ef5\u0ef7\u0003\u00b6[\u0000"+ - "\u0ef6\u0ef8\u0003\u013a\u009d\u0000\u0ef7\u0ef6\u0001\u0000\u0000\u0000"+ - "\u0ef7\u0ef8\u0001\u0000\u0000\u0000\u0ef8\u0f1f\u0001\u0000\u0000\u0000"+ - "\u0ef9\u0efa\u0005c\u0000\u0000\u0efa\u0efb\u0005\u01f3\u0000\u0000\u0efb"+ - "\u0eff\u0005\u0156\u0000\u0000\u0efc\u0efd\u0005\u00d6\u0000\u0000\u0efd"+ - "\u0efe\u0005\u012f\u0000\u0000\u0efe\u0f00\u0005\u00a4\u0000\u0000\u0eff"+ - "\u0efc\u0001\u0000\u0000\u0000\u0eff\u0f00\u0001\u0000\u0000\u0000\u0f00"+ - "\u0f01\u0001\u0000\u0000\u0000\u0f01\u0f07\u0003\u00b6[\u0000\u0f02\u0f03"+ - "\u0005X\u0000\u0000\u0f03\u0f04\u0005\u0002\u0000\u0000\u0f04\u0f05\u0003"+ - "x<\u0000\u0f05\u0f06\u0005\u0003\u0000\u0000\u0f06\u0f08\u0001\u0000\u0000"+ - "\u0000\u0f07\u0f02\u0001\u0000\u0000\u0000\u0f07\u0f08\u0001\u0000\u0000"+ - "\u0000\u0f08\u0f0e\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0005\r\u0000\u0000"+ - "\u0f0a\u0f0b\u0005\u0002\u0000\u0000\u0f0b\u0f0c\u0003t:\u0000\u0f0c\u0f0d"+ - "\u0005\u0003\u0000\u0000\u0f0d\u0f0f\u0001\u0000\u0000\u0000\u0f0e\u0f09"+ - "\u0001\u0000\u0000\u0000\u0f0e\u0f0f\u0001\u0000\u0000\u0000\u0f0f\u0f11"+ - "\u0001\u0000\u0000\u0000\u0f10\u0f12\u0003\u013a\u009d\u0000\u0f11\u0f10"+ - "\u0001\u0000\u0000\u0000\u0f11\u0f12\u0001\u0000\u0000\u0000\u0f12\u0f1f"+ - "\u0001\u0000\u0000\u0000\u0f13\u0f14\u0005c\u0000\u0000\u0f14\u0f18\u0005"+ - "\u01a6\u0000\u0000\u0f15\u0f16\u0005\u00d6\u0000\u0000\u0f16\u0f17\u0005"+ - "\u012f\u0000\u0000\u0f17\u0f19\u0005\u00a4\u0000\u0000\u0f18\u0f15\u0001"+ - "\u0000\u0000\u0000\u0f18\u0f19\u0001\u0000\u0000\u0000\u0f19\u0f1a\u0001"+ - "\u0000\u0000\u0000\u0f1a\u0f1c\u0003\u01c0\u00e0\u0000\u0f1b\u0f1d\u0003"+ - "\u013a\u009d\u0000\u0f1c\u0f1b\u0001\u0000\u0000\u0000\u0f1c\u0f1d\u0001"+ - "\u0000\u0000\u0000\u0f1d\u0f1f\u0001\u0000\u0000\u0000\u0f1e\u0eb7\u0001"+ - "\u0000\u0000\u0000\u0f1e\u0ec2\u0001\u0000\u0000\u0000\u0f1e\u0ed5\u0001"+ - "\u0000\u0000\u0000\u0f1e\u0edf\u0001\u0000\u0000\u0000\u0f1e\u0eed\u0001"+ - "\u0000\u0000\u0000\u0f1e\u0ef9\u0001\u0000\u0000\u0000\u0f1e\u0f13\u0001"+ - "\u0000\u0000\u0000\u0f1fs\u0001\u0000\u0000\u0000\u0f20\u0f25\u0003v;"+ - "\u0000\u0f21\u0f22\u0005\u0004\u0000\u0000\u0f22\u0f24\u0003v;\u0000\u0f23"+ - "\u0f21\u0001\u0000\u0000\u0000\u0f24\u0f27\u0001\u0000\u0000\u0000\u0f25"+ - "\u0f23\u0001\u0000\u0000\u0000\u0f25\u0f26\u0001\u0000\u0000\u0000\u0f26"+ - "u\u0001\u0000\u0000\u0000\u0f27\u0f25\u0001\u0000\u0000\u0000\u0f28\u0f29"+ - "\u0005\u019b\u0000\u0000\u0f29\u0f2f\u0005\u0211\u0000\u0000\u0f2a\u0f2c"+ - "\u0003\u01c0\u00e0\u0000\u0f2b\u0f2d\u0005\u0211\u0000\u0000\u0f2c\u0f2b"+ - "\u0001\u0000\u0000\u0000\u0f2c\u0f2d\u0001\u0000\u0000\u0000\u0f2d\u0f2f"+ - "\u0001\u0000\u0000\u0000\u0f2e\u0f28\u0001\u0000\u0000\u0000\u0f2e\u0f2a"+ - "\u0001\u0000\u0000\u0000\u0f2fw\u0001\u0000\u0000\u0000\u0f30\u0f35\u0003"+ - "z=\u0000\u0f31\u0f32\u0005\u0004\u0000\u0000\u0f32\u0f34\u0003z=\u0000"+ - "\u0f33\u0f31\u0001\u0000\u0000\u0000\u0f34\u0f37\u0001\u0000\u0000\u0000"+ - "\u0f35\u0f33\u0001\u0000\u0000\u0000\u0f35\u0f36\u0001\u0000\u0000\u0000"+ - "\u0f36y\u0001\u0000\u0000\u0000\u0f37\u0f35\u0001\u0000\u0000\u0000\u0f38"+ - "\u0f39\u0003\u01c0\u00e0\u0000\u0f39\u0f3c\u0003\u019a\u00cd\u0000\u0f3a"+ - "\u0f3d\u0003\u01c6\u00e3\u0000\u0f3b\u0f3d\u0005\u0211\u0000\u0000\u0f3c"+ - "\u0f3a\u0001\u0000\u0000\u0000\u0f3c\u0f3b\u0001\u0000\u0000\u0000\u0f3d"+ - "{\u0001\u0000\u0000\u0000\u0f3e\u0f40\u0007\u0015\u0000\u0000\u0f3f\u0f41"+ - "\u0003\u01c0\u00e0\u0000\u0f40\u0f3f\u0001\u0000\u0000\u0000\u0f40\u0f41"+ - "\u0001\u0000\u0000\u0000\u0f41\u0f42\u0001\u0000\u0000\u0000\u0f42\u0f43"+ - "\u0005\u0135\u0000\u0000\u0f43\u0f44\u0005\u0109\u0000\u0000\u0f44\u0f46"+ - "\u0005\u0211\u0000\u0000\u0f45\u0f47\u0003\u013a\u009d\u0000\u0f46\u0f45"+ - "\u0001\u0000\u0000\u0000\u0f46\u0f47\u0001\u0000\u0000\u0000\u0f47}\u0001"+ - "\u0000\u0000\u0000\u0f48\u0f4b\u0005\u0145\u0000\u0000\u0f49\u0f4c\u0005"+ - "|\u0000\u0000\u0f4a\u0f4c\u0005\u0216\u0000\u0000\u0f4b\u0f49\u0001\u0000"+ - "\u0000\u0000\u0f4b\u0f4a\u0001\u0000\u0000\u0000\u0f4c\u0f4e\u0001\u0000"+ - "\u0000\u0000\u0f4d\u0f48\u0001\u0000\u0000\u0000\u0f4d\u0f4e\u0001\u0000"+ - "\u0000\u0000\u0f4e\u0f57\u0001\u0000\u0000\u0000\u0f4f\u0f55\u0005\u0144"+ - "\u0000\u0000\u0f50\u0f56\u0005|\u0000\u0000\u0f51\u0f56\u0005\u0129\u0000"+ - "\u0000\u0f52\u0f53\u0005\u00e5\u0000\u0000\u0f53\u0f54\u0005\u0216\u0000"+ - "\u0000\u0f54\u0f56\u0007\u0016\u0000\u0000\u0f55\u0f50\u0001\u0000\u0000"+ - "\u0000\u0f55\u0f51\u0001\u0000\u0000\u0000\u0f55\u0f52\u0001\u0000\u0000"+ - "\u0000\u0f56\u0f58\u0001\u0000\u0000\u0000\u0f57\u0f4f\u0001\u0000\u0000"+ - "\u0000\u0f57\u0f58\u0001\u0000\u0000\u0000\u0f58\u0f60\u0001\u0000\u0000"+ - "\u0000\u0f59\u0f5a\u0005\u0147\u0000\u0000\u0f5a\u0f5e\u0005\u00e5\u0000"+ - "\u0000\u0f5b\u0f5f\u0005|\u0000\u0000\u0f5c\u0f5d\u0005\u0216\u0000\u0000"+ - "\u0f5d\u0f5f\u0005w\u0000\u0000\u0f5e\u0f5b\u0001\u0000\u0000\u0000\u0f5e"+ - "\u0f5c\u0001\u0000\u0000\u0000\u0f5f\u0f61\u0001\u0000\u0000\u0000\u0f60"+ - "\u0f59\u0001\u0000\u0000\u0000\u0f60\u0f61\u0001\u0000\u0000\u0000\u0f61"+ - "\u0f64\u0001\u0000\u0000\u0000\u0f62\u0f63\u0005\u00ab\u0000\u0000\u0f63"+ - "\u0f65\u0005\u0216\u0000\u0000\u0f64\u0f62\u0001\u0000\u0000\u0000\u0f64"+ - "\u0f65\u0001\u0000\u0000\u0000\u0f65\u0f6c\u0001\u0000\u0000\u0000\u0f66"+ - "\u0f6a\u0005\u0146\u0000\u0000\u0f67\u0f6b\u0005\u01d1\u0000\u0000\u0f68"+ - "\u0f69\u0005\u0216\u0000\u0000\u0f69\u0f6b\u0007\u0016\u0000\u0000\u0f6a"+ - "\u0f67\u0001\u0000\u0000\u0000\u0f6a\u0f68\u0001\u0000\u0000\u0000\u0f6b"+ - "\u0f6d\u0001\u0000\u0000\u0000\u0f6c\u0f66\u0001\u0000\u0000\u0000\u0f6c"+ - "\u0f6d\u0001\u0000\u0000\u0000\u0f6d\u0f6f\u0001\u0000\u0000\u0000\u0f6e"+ - "\u0f70\u0007\u0017\u0000\u0000\u0f6f\u0f6e\u0001\u0000\u0000\u0000\u0f6f"+ - "\u0f70\u0001\u0000\u0000\u0000\u0f70\u007f\u0001\u0000\u0000\u0000\u0f71"+ - "\u0f78\u0005\u0006\u0000\u0000\u0f72\u0f78\u0003\u0082A\u0000\u0f73\u0f74"+ - "\u0003\u0082A\u0000\u0f74\u0f75\u0005\u0004\u0000\u0000\u0f75\u0f76\u0005"+ - "\u0006\u0000\u0000\u0f76\u0f78\u0001\u0000\u0000\u0000\u0f77\u0f71\u0001"+ - "\u0000\u0000\u0000\u0f77\u0f72\u0001\u0000\u0000\u0000\u0f77\u0f73\u0001"+ - "\u0000\u0000\u0000\u0f78\u0081\u0001\u0000\u0000\u0000\u0f79\u0f7e\u0003"+ - "\u01a6\u00d3\u0000\u0f7a\u0f7b\u0005\u0004\u0000\u0000\u0f7b\u0f7d\u0003"+ - "\u01a6\u00d3\u0000\u0f7c\u0f7a\u0001\u0000\u0000\u0000\u0f7d\u0f80\u0001"+ - "\u0000\u0000\u0000\u0f7e\u0f7c\u0001\u0000\u0000\u0000\u0f7e\u0f7f\u0001"+ - "\u0000\u0000\u0000\u0f7f\u0083\u0001\u0000\u0000\u0000\u0f80\u0f7e\u0001"+ - "\u0000\u0000\u0000\u0f81\u0f84\u0005\u0199\u0000\u0000\u0f82\u0f85\u0003"+ - "\u0086C\u0000\u0f83\u0f85\u0003\u0088D\u0000\u0f84\u0f82\u0001\u0000\u0000"+ - "\u0000\u0f84\u0f83\u0001\u0000\u0000\u0000\u0f85\u0f8d\u0001\u0000\u0000"+ - "\u0000\u0f86\u0f89\u0005\u0004\u0000\u0000\u0f87\u0f8a\u0003\u0086C\u0000"+ - "\u0f88\u0f8a\u0003\u0088D\u0000\u0f89\u0f87\u0001\u0000\u0000\u0000\u0f89"+ - "\u0f88\u0001\u0000\u0000\u0000\u0f8a\u0f8c\u0001\u0000\u0000\u0000\u0f8b"+ - "\u0f86\u0001\u0000\u0000\u0000\u0f8c\u0f8f\u0001\u0000\u0000\u0000\u0f8d"+ - "\u0f8b\u0001\u0000\u0000\u0000\u0f8d\u0f8e\u0001\u0000\u0000\u0000\u0f8e"+ - "\u0fb0\u0001\u0000\u0000\u0000\u0f8f\u0f8d\u0001\u0000\u0000\u0000\u0f90"+ - "\u0f91\u0005\u0199\u0000\u0000\u0f91\u0f92\u0003\u01c0\u00e0\u0000\u0f92"+ - "\u0f93\u0005\u001c\u0000\u0000\u0f93\u0f94\u0005|\u0000\u0000\u0f94\u0f95"+ - "\u0005\u01ad\u0000\u0000\u0f95\u0f96\u0005\u01e5\u0000\u0000\u0f96\u0fb0"+ - "\u0001\u0000\u0000\u0000\u0f97\u0f98\u0005\u0199\u0000\u0000\u0f98\u0f9b"+ - "\u0005\u015f\u0000\u0000\u0f99\u0f9a\u0005\u00b6\u0000\u0000\u0f9a\u0f9c"+ - "\u0003\u00b6[\u0000\u0f9b\u0f99\u0001\u0000\u0000\u0000\u0f9b\u0f9c\u0001"+ - "\u0000\u0000\u0000\u0f9c\u0f9d\u0001\u0000\u0000\u0000\u0f9d\u0fb0\u0003"+ - "\u013c\u009e\u0000\u0f9e\u0fa0\u0005\u0199\u0000\u0000\u0f9f\u0fa1\u0003"+ - "\u00aaU\u0000\u0fa0\u0f9f\u0001\u0000\u0000\u0000\u0fa0\u0fa1\u0001\u0000"+ - "\u0000\u0000\u0fa1\u0fa2\u0001\u0000\u0000\u0000\u0fa2\u0fad\u0005\u01c7"+ - "\u0000\u0000\u0fa3\u0fae\u0003\u008cF\u0000\u0fa4\u0fae\u0003\u008eG\u0000"+ - "\u0fa5\u0fa6\u0003\u008cF\u0000\u0fa6\u0fa7\u0005\u0004\u0000\u0000\u0fa7"+ - "\u0fa8\u0003\u008eG\u0000\u0fa8\u0fae\u0001\u0000\u0000\u0000\u0fa9\u0faa"+ - "\u0003\u008eG\u0000\u0faa\u0fab\u0005\u0004\u0000\u0000\u0fab\u0fac\u0003"+ - "\u008cF\u0000\u0fac\u0fae\u0001\u0000\u0000\u0000\u0fad\u0fa3\u0001\u0000"+ - "\u0000\u0000\u0fad\u0fa4\u0001\u0000\u0000\u0000\u0fad\u0fa5\u0001\u0000"+ - "\u0000\u0000\u0fad\u0fa9\u0001\u0000\u0000\u0000\u0fae\u0fb0\u0001\u0000"+ - "\u0000\u0000\u0faf\u0f81\u0001\u0000\u0000\u0000\u0faf\u0f90\u0001\u0000"+ - "\u0000\u0000\u0faf\u0f97\u0001\u0000\u0000\u0000\u0faf\u0f9e\u0001\u0000"+ - "\u0000\u0000\u0fb0\u0085\u0001\u0000\u0000\u0000\u0fb1\u0fb2\u0003\u00aa"+ - "U\u0000\u0fb2\u0fb3\u0003\u01c0\u00e0\u0000\u0fb3\u0fb6\u0005\u01f7\u0000"+ - "\u0000\u0fb4\u0fb7\u0003\u0172\u00b9\u0000\u0fb5\u0fb7\u0005|\u0000\u0000"+ - "\u0fb6\u0fb4\u0001\u0000\u0000\u0000\u0fb6\u0fb5\u0001\u0000\u0000\u0000"+ - "\u0fb7\u0087\u0001\u0000\u0000\u0000\u0fb8\u0fb9\u0005\u0126\u0000\u0000"+ - "\u0fb9\u0fba\u0005\u01f7\u0000\u0000\u0fba\u0fe6\u0003\u0172\u00b9\u0000"+ - "\u0fbb\u0fbc\u0005E\u0000\u0000\u0fbc\u0fbf\u0005\u0199\u0000\u0000\u0fbd"+ - "\u0fbf\u0005F\u0000\u0000\u0fbe\u0fbb\u0001\u0000\u0000\u0000\u0fbe\u0fbd"+ - "\u0001\u0000\u0000\u0000\u0fbf\u0fc2\u0001\u0000\u0000\u0000\u0fc0\u0fc3"+ - "\u0003\u00b6[\u0000\u0fc1\u0fc3\u0005|\u0000\u0000\u0fc2\u0fc0\u0001\u0000"+ - "\u0000\u0000\u0fc2\u0fc1\u0001\u0000\u0000\u0000\u0fc3\u0fe6\u0001\u0000"+ - "\u0000\u0000\u0fc4\u0fc7\u0005\u0126\u0000\u0000\u0fc5\u0fc8\u0003\u00b6"+ - "[\u0000\u0fc6\u0fc8\u0005|\u0000\u0000\u0fc7\u0fc5\u0001\u0000\u0000\u0000"+ - "\u0fc7\u0fc6\u0001\u0000\u0000\u0000\u0fc8\u0fcc\u0001\u0000\u0000\u0000"+ - "\u0fc9\u0fca\u0005K\u0000\u0000\u0fca\u0fcd\u0003\u00b6[\u0000\u0fcb\u0fcd"+ - "\u0005|\u0000\u0000\u0fcc\u0fc9\u0001\u0000\u0000\u0000\u0fcc\u0fcb\u0001"+ - "\u0000\u0000\u0000\u0fcc\u0fcd\u0001\u0000\u0000\u0000\u0fcd\u0fe6\u0001"+ - "\u0000\u0000\u0000\u0fce\u0fd1\u0005\u0143\u0000\u0000\u0fcf\u0fd0\u0005"+ - "\u00b6\u0000\u0000\u0fd0\u0fd2\u0003\u00be_\u0000\u0fd1\u0fcf\u0001\u0000"+ - "\u0000\u0000\u0fd1\u0fd2\u0001\u0000\u0000\u0000\u0fd2\u0fd3\u0001\u0000"+ - "\u0000\u0000\u0fd3\u0fd9\u0005\u01f7\u0000\u0000\u0fd4\u0fda\u0005\u0211"+ - "\u0000\u0000\u0fd5\u0fd6\u0005\u0143\u0000\u0000\u0fd6\u0fd7\u0005\u0002"+ - "\u0000\u0000\u0fd7\u0fd8\u0005\u0211\u0000\u0000\u0fd8\u0fda\u0005\u0003"+ - "\u0000\u0000\u0fd9\u0fd4\u0001\u0000\u0000\u0000\u0fd9\u0fd5\u0001\u0000"+ - "\u0000\u0000\u0fda\u0fe6\u0001\u0000\u0000\u0000\u0fdb\u0fdc\u0005\u00fc"+ - "\u0000\u0000\u0fdc\u0fe2\u0005\u01f7\u0000\u0000\u0fdd\u0fe3\u0005\u0211"+ - "\u0000\u0000\u0fde\u0fdf\u0005\u0143\u0000\u0000\u0fdf\u0fe0\u0005\u0002"+ - "\u0000\u0000\u0fe0\u0fe1\u0005\u0211\u0000\u0000\u0fe1\u0fe3\u0005\u0003"+ - "\u0000\u0000\u0fe2\u0fdd\u0001\u0000\u0000\u0000\u0fe2\u0fde\u0001\u0000"+ - "\u0000\u0000\u0fe3\u0fe6\u0001\u0000\u0000\u0000\u0fe4\u0fe6\u0003\u008a"+ - "E\u0000\u0fe5\u0fb8\u0001\u0000\u0000\u0000\u0fe5\u0fbe\u0001\u0000\u0000"+ - "\u0000\u0fe5\u0fc4\u0001\u0000\u0000\u0000\u0fe5\u0fce\u0001\u0000\u0000"+ - "\u0000\u0fe5\u0fdb\u0001\u0000\u0000\u0000\u0fe5\u0fe4\u0001\u0000\u0000"+ - "\u0000\u0fe6\u0089\u0001\u0000\u0000\u0000\u0fe7\u0feb\u0005\u0210\u0000"+ - "\u0000\u0fe8\u0fe9\u0003\u00aaU\u0000\u0fe9\u0fea\u0005\u0005\u0000\u0000"+ - "\u0fea\u0fec\u0001\u0000\u0000\u0000\u0feb\u0fe8\u0001\u0000\u0000\u0000"+ - "\u0feb\u0fec\u0001\u0000\u0000\u0000\u0fec\u0fee\u0001\u0000\u0000\u0000"+ - "\u0fed\u0fe7\u0001\u0000\u0000\u0000\u0fed\u0fee\u0001\u0000\u0000\u0000"+ - "\u0fee\u0fef\u0001\u0000\u0000\u0000\u0fef\u0ff0\u0003\u01c0\u00e0\u0000"+ - "\u0ff0\u0ff3\u0005\u01f7\u0000\u0000\u0ff1\u0ff4\u0003\u0172\u00b9\u0000"+ - "\u0ff2\u0ff4\u0005|\u0000\u0000\u0ff3\u0ff1\u0001\u0000\u0000\u0000\u0ff3"+ - "\u0ff2\u0001\u0000\u0000\u0000\u0ff4\u0ffb\u0001\u0000\u0000\u0000\u0ff5"+ - "\u0ff6\u0005\u020f\u0000\u0000\u0ff6\u0ff7\u0003\u01c0\u00e0\u0000\u0ff7"+ - "\u0ff8\u0005\u01f7\u0000\u0000\u0ff8\u0ff9\u0003\u0172\u00b9\u0000\u0ff9"+ - "\u0ffb\u0001\u0000\u0000\u0000\u0ffa\u0fed\u0001\u0000\u0000\u0000\u0ffa"+ - "\u0ff5\u0001\u0000\u0000\u0000\u0ffb\u008b\u0001\u0000\u0000\u0000\u0ffc"+ - "\u0ffd\u0005\u0169\u0000\u0000\u0ffd\u0ffe\u0007\u0018\u0000\u0000\u0ffe"+ - "\u008d\u0001\u0000\u0000\u0000\u0fff\u1000\u0005\u00ee\u0000\u0000\u1000"+ - "\u1008\u0005\u00ff\u0000\u0000\u1001\u1002\u0005\u0169\u0000\u0000\u1002"+ - "\u1009\u0005\u01d2\u0000\u0000\u1003\u1004\u0005\u0169\u0000\u0000\u1004"+ - "\u1009\u0005S\u0000\u0000\u1005\u1006\u0005\u0175\u0000\u0000\u1006\u1009"+ - "\u0005\u0169\u0000\u0000\u1007\u1009\u0005\u0196\u0000\u0000\u1008\u1001"+ - "\u0001\u0000\u0000\u0000\u1008\u1003\u0001\u0000\u0000\u0000\u1008\u1005"+ - "\u0001\u0000\u0000\u0000\u1008\u1007\u0001\u0000\u0000\u0000\u1009\u008f"+ - "\u0001\u0000\u0000\u0000\u100a\u100c\u0005\u01d7\u0000\u0000\u100b\u100d"+ - "\u0003\u00aaU\u0000\u100c\u100b\u0001\u0000\u0000\u0000\u100c\u100d\u0001"+ - "\u0000\u0000\u0000\u100d\u100e\u0001\u0000\u0000\u0000\u100e\u1011\u0005"+ - "\u01e2\u0000\u0000\u100f\u1012\u0005\u0014\u0000\u0000\u1010\u1012\u0003"+ - "\u01c0\u00e0\u0000\u1011\u100f\u0001\u0000\u0000\u0000\u1011\u1010\u0001"+ - "\u0000\u0000\u0000\u1012\u1018\u0001\u0000\u0000\u0000\u1013\u1014\u0005"+ - "\u01d7\u0000\u0000\u1014\u1015\u0005|\u0000\u0000\u1015\u1016\u0005\u01ad"+ - "\u0000\u0000\u1016\u1018\u0005\u01e5\u0000\u0000\u1017\u100a\u0001\u0000"+ - "\u0000\u0000\u1017\u1013\u0001\u0000\u0000\u0000\u1018\u0091\u0001\u0000"+ - "\u0000\u0000\u1019\u101a\u0005\u01b4\u0000\u0000\u101a\u1023\u0003\u01c0"+ - "\u00e0\u0000\u101b\u101f\u0005\u01db\u0000\u0000\u101c\u101d\u0003\u01c0"+ - "\u00e0\u0000\u101d\u101e\u0005\u0005\u0000\u0000\u101e\u1020\u0001\u0000"+ - "\u0000\u0000\u101f\u101c\u0001\u0000\u0000\u0000\u101f\u1020\u0001\u0000"+ - "\u0000\u0000\u1020\u1021\u0001\u0000\u0000\u0000\u1021\u1023\u0003\u01c0"+ - "\u00e0\u0000\u1022\u1019\u0001\u0000\u0000\u0000\u1022\u101b\u0001\u0000"+ - "\u0000\u0000\u1023\u0093\u0001\u0000\u0000\u0000\u1024\u102b\u0005\u01db"+ - "\u0000\u0000\u1025\u1026\u0003\u01c0\u00e0\u0000\u1026\u1027\u0005\u0005"+ - "\u0000\u0000\u1027\u1029\u0001\u0000\u0000\u0000\u1028\u1025\u0001\u0000"+ - "\u0000\u0000\u1028\u1029\u0001\u0000\u0000\u0000\u1029\u102a\u0001\u0000"+ - "\u0000\u0000\u102a\u102c\u0003\u01c0\u00e0\u0000\u102b\u1028\u0001\u0000"+ - "\u0000\u0000\u102b\u102c\u0001\u0000\u0000\u0000\u102c\u102d\u0001\u0000"+ - "\u0000\u0000\u102d\u102e\u0005\u020f\u0000\u0000\u102e\u102f\u0003\u01c0"+ - "\u00e0\u0000\u102f\u0095\u0001\u0000\u0000\u0000\u1030\u1031\u0005\u01cd"+ - "\u0000\u0000\u1031\u1032\u0005\u01b7\u0000\u0000\u1032\u1034\u0003\u0146"+ - "\u00a3\u0000\u1033\u1035\u0003\u0196\u00cb\u0000\u1034\u1033\u0001\u0000"+ - "\u0000\u0000\u1034\u1035\u0001\u0000\u0000\u0000\u1035\u1037\u0001\u0000"+ - "\u0000\u0000\u1036\u1038\u0005\u00b8\u0000\u0000\u1037\u1036\u0001\u0000"+ - "\u0000\u0000\u1037\u1038\u0001\u0000\u0000\u0000\u1038\u1051\u0001\u0000"+ - "\u0000\u0000\u1039\u103a\u0005a\u0000\u0000\u103a\u103b\u0005\u00e6\u0000"+ - "\u0000\u103b\u103d\u0003\u0146\u00a3\u0000\u103c\u103e\u0003\u0130\u0098"+ - "\u0000\u103d\u103c\u0001\u0000\u0000\u0000\u103d\u103e\u0001\u0000\u0000"+ - "\u0000\u103e\u103f\u0001\u0000\u0000\u0000\u103f\u104b\u0005\u00bb\u0000"+ - "\u0000\u1040\u104c\u0003\u0098L\u0000\u1041\u1042\u0005\u0002\u0000\u0000"+ - "\u1042\u1043\u0005\u0194\u0000\u0000\u1043\u1044\u0003\u00f6{\u0000\u1044"+ - "\u1045\u0005\u00bb\u0000\u0000\u1045\u1047\u0003\u0098L\u0000\u1046\u1048"+ - "\u0003\u00f8|\u0000\u1047\u1046\u0001\u0000\u0000\u0000\u1047\u1048\u0001"+ - "\u0000\u0000\u0000\u1048\u1049\u0001\u0000\u0000\u0000\u1049\u104a\u0005"+ - "\u0003\u0000\u0000\u104a\u104c\u0001\u0000\u0000\u0000\u104b\u1040\u0001"+ - "\u0000\u0000\u0000\u104b\u1041\u0001\u0000\u0000\u0000\u104c\u104e\u0001"+ - "\u0000\u0000\u0000\u104d\u104f\u0003\u013a\u009d\u0000\u104e\u104d\u0001"+ - "\u0000\u0000\u0000\u104e\u104f\u0001\u0000\u0000\u0000\u104f\u1051\u0001"+ - "\u0000\u0000\u0000\u1050\u1030\u0001\u0000\u0000\u0000\u1050\u1039\u0001"+ - "\u0000\u0000\u0000\u1051\u0097\u0001\u0000\u0000\u0000\u1052\u1055\u0005"+ - "\u020f\u0000\u0000\u1053\u1056\u0003\u01c0\u00e0\u0000\u1054\u1056\u0005"+ - "\u0203\u0000\u0000\u1055\u1053\u0001\u0000\u0000\u0000\u1055\u1054\u0001"+ - "\u0000\u0000\u0000\u1056\u105a\u0001\u0000\u0000\u0000\u1057\u1058\u0005"+ - "\u0002\u0000\u0000\u1058\u1059\u0005\u0211\u0000\u0000\u1059\u105b\u0005"+ - "\u0003\u0000\u0000\u105a\u1057\u0001\u0000\u0000\u0000\u105a\u105b\u0001"+ - "\u0000\u0000\u0000\u105b\u0099\u0001\u0000\u0000\u0000\u105c\u105e\u0005"+ - "\u00f6\u0000\u0000\u105d\u105f\u0005Z\u0000\u0000\u105e\u105d\u0001\u0000"+ - "\u0000\u0000\u105e\u105f\u0001\u0000\u0000\u0000\u105f\u1060\u0001\u0000"+ - "\u0000\u0000\u1060\u1065\u0005\u0216\u0000\u0000\u1061\u1062\u0005\u00f6"+ - "\u0000\u0000\u1062\u1063\u0005\u0162\u0000\u0000\u1063\u1065\u0007\u0019"+ - "\u0000\u0000\u1064\u105c\u0001\u0000\u0000\u0000\u1064\u1061\u0001\u0000"+ - "\u0000\u0000\u1065\u009b\u0001\u0000\u0000\u0000\u1066\u1067\u0003\u00c4"+ - "b\u0000\u1067\u1068\u0005\u00bf\u0000\u0000\u1068\u1069\u0003\u01c0\u00e0"+ - "\u0000\u1069\u106b\u0005\u0002\u0000\u0000\u106a\u106c\u0003\u013c\u009e"+ - "\u0000\u106b\u106a\u0001\u0000\u0000\u0000\u106b\u106c\u0001\u0000\u0000"+ - "\u0000\u106c\u106d\u0001\u0000\u0000\u0000\u106d\u106e\u0005\u0003\u0000"+ - "\u0000\u106e\u106f\u0003\u0144\u00a2\u0000\u106f\u107a\u0001\u0000\u0000"+ - "\u0000\u1070\u1071\u0003\u00c4b\u0000\u1071\u1072\u0003\u0146\u00a3\u0000"+ - "\u1072\u1073\u0005\u0014\u0000\u0000\u1073\u107a\u0001\u0000\u0000\u0000"+ - "\u1074\u1075\u0003\u00c4b\u0000\u1075\u1077\u0003\u0146\u00a3\u0000\u1076"+ - "\u1078\u0003\u0196\u00cb\u0000\u1077\u1076\u0001\u0000\u0000\u0000\u1077"+ - "\u1078\u0001\u0000\u0000\u0000\u1078\u107a\u0001\u0000\u0000\u0000\u1079"+ - "\u1066\u0001\u0000\u0000\u0000\u1079\u1070\u0001\u0000\u0000\u0000\u1079"+ - "\u1074\u0001\u0000\u0000\u0000\u107a\u009d\u0001\u0000\u0000\u0000\u107b"+ - "\u107c\u0005\u0159\u0000\u0000\u107c\u107d\u0005\u00f4\u0000\u0000\u107d"+ - "\u1088\u0003\u0130\u0098\u0000\u107e\u107f\u0005\u01d5\u0000\u0000\u107f"+ - "\u1088\u0003\u0130\u0098\u0000\u1080\u1081\u0005\u00b7\u0000\u0000\u1081"+ - "\u1082\u0005\u00f4\u0000\u0000\u1082\u1083\u0003\u0130\u0098\u0000\u1083"+ - "\u1084\u0005\u0170\u0000\u0000\u1084\u1085\u0003\u0146\u00a3\u0000\u1085"+ - "\u1086"; - private static final String _serializedATNSegment2 = - "\u0003\u0130\u0098\u0000\u1086\u1088\u0001\u0000\u0000\u0000\u1087\u107b"+ - "\u0001\u0000\u0000\u0000\u1087\u107e\u0001\u0000\u0000\u0000\u1087\u1080"+ - "\u0001\u0000\u0000\u0000\u1088\u009f\u0001\u0000\u0000\u0000\u1089\u108b"+ - "\u0005\u01be\u0000\u0000\u108a\u1089\u0001\u0000\u0000\u0000\u108a\u108b"+ - "\u0001\u0000\u0000\u0000\u108b\u108c\u0001\u0000\u0000\u0000\u108c\u108d"+ - "\u0007\u001a\u0000\u0000\u108d\u1098\u0003\u0130\u0098\u0000\u108e\u1090"+ - "\u0005\u01be\u0000\u0000\u108f\u108e\u0001\u0000\u0000\u0000\u108f\u1090"+ - "\u0001\u0000\u0000\u0000\u1090\u1091\u0001\u0000\u0000\u0000\u1091\u1092"+ - "\u0005\u0141\u0000\u0000\u1092\u1098\u0003\u01bc\u00de\u0000\u1093\u1094"+ - "\u0007\u001a\u0000\u0000\u1094\u1095\u0005\u0002\u0000\u0000\u1095\u1096"+ - "\u0005\u0200\u0000\u0000\u1096\u1098\u0005\u0003\u0000\u0000\u1097\u108a"+ - "\u0001\u0000\u0000\u0000\u1097\u108f\u0001\u0000\u0000\u0000\u1097\u1093"+ - "\u0001\u0000\u0000\u0000\u1098\u00a1\u0001\u0000\u0000\u0000\u1099\u109b"+ - "\u0005 \u0000\u0000\u109a\u1099\u0001\u0000\u0000\u0000\u109a\u109b\u0001"+ - "\u0000\u0000\u0000\u109b\u109c\u0001\u0000\u0000\u0000\u109c\u109d\u0005"+ - "\u0141\u0000\u0000\u109d\u109f\u0005;\u0000\u0000\u109e\u10a0\u0007\u001b"+ - "\u0000\u0000\u109f\u109e\u0001\u0000\u0000\u0000\u109f\u10a0\u0001\u0000"+ - "\u0000\u0000\u10a0\u10a1\u0001\u0000\u0000\u0000\u10a1\u10a2\u0003\u00a4"+ - "R\u0000\u10a2\u10a4\u0005\u0002\u0000\u0000\u10a3\u10a5\u0003\u0154\u00aa"+ - "\u0000\u10a4\u10a3\u0001\u0000\u0000\u0000\u10a4\u10a5\u0001\u0000\u0000"+ - "\u0000\u10a5\u10a6\u0001\u0000\u0000\u0000\u10a6\u10a7\u0005\u0003\u0000"+ - "\u0000\u10a7\u00a3\u0001\u0000\u0000\u0000\u10a8\u10a9\u0005\u0002\u0000"+ - "\u0000\u10a9\u10ae\u0003\u00a6S\u0000\u10aa\u10ab\u0005\u0004\u0000\u0000"+ - "\u10ab\u10ad\u0003\u00a6S\u0000\u10ac\u10aa\u0001\u0000\u0000\u0000\u10ad"+ - "\u10b0\u0001\u0000\u0000\u0000\u10ae\u10ac\u0001\u0000\u0000\u0000\u10ae"+ - "\u10af\u0001\u0000\u0000\u0000\u10af\u10b1\u0001\u0000\u0000\u0000\u10b0"+ - "\u10ae\u0001\u0000\u0000\u0000\u10b1\u10b2\u0005\u0003\u0000\u0000\u10b2"+ - "\u00a5\u0001\u0000\u0000\u0000\u10b3\u10b6\u0003\u01c0\u00e0\u0000\u10b4"+ - "\u10b6\u0003\u0186\u00c3\u0000\u10b5\u10b3\u0001\u0000\u0000\u0000\u10b5"+ - "\u10b4\u0001\u0000\u0000\u0000\u10b6\u00a7\u0001\u0000\u0000\u0000\u10b7"+ - "\u10b9\u0005\u01f1\u0000\u0000\u10b8\u10b7\u0001\u0000\u0000\u0000\u10b8"+ - "\u10b9\u0001\u0000\u0000\u0000\u10b9\u10ba\u0001\u0000\u0000\u0000\u10ba"+ - "\u10bc\u0003\u00ccf\u0000\u10bb\u10b8\u0001\u0000\u0000\u0000\u10bb\u10bc"+ - "\u0001\u0000\u0000\u0000\u10bc\u10bd\u0001\u0000\u0000\u0000\u10bd\u10be"+ - "\u0005n\u0000\u0000\u10be\u10bf\u0005\u00dd\u0000\u0000\u10bf\u10c0\u0005"+ - "\u0002\u0000\u0000\u10c0\u10c5\u0005\u0211\u0000\u0000\u10c1\u10c2\u0005"+ - "\u0004\u0000\u0000\u10c2\u10c4\u0005\u0211\u0000\u0000\u10c3\u10c1\u0001"+ - "\u0000\u0000\u0000\u10c4\u10c7\u0001\u0000\u0000\u0000\u10c5\u10c3\u0001"+ - "\u0000\u0000\u0000\u10c5\u10c6\u0001\u0000\u0000\u0000\u10c6\u10c8\u0001"+ - "\u0000\u0000\u0000\u10c7\u10c5\u0001\u0000\u0000\u0000\u10c8\u10c9\u0005"+ - "\u0003\u0000\u0000\u10c9\u10ca\u0005\u00e6\u0000\u0000\u10ca\u10cb\u0005"+ - "\u01b7\u0000\u0000\u10cb\u10cd\u0003\u01c0\u00e0\u0000\u10cc\u10ce\u0003"+ - "\u00a0P\u0000\u10cd\u10cc\u0001\u0000\u0000\u0000\u10cd\u10ce\u0001\u0000"+ - "\u0000\u0000\u10ce\u10d3\u0001\u0000\u0000\u0000\u10cf\u10d0\u0005P\u0000"+ - "\u0000\u10d0\u10d1\u0005\u01bf\u0000\u0000\u10d1\u10d2\u0005;\u0000\u0000"+ - "\u10d2\u10d4\u0005\u0211\u0000\u0000\u10d3\u10cf\u0001\u0000\u0000\u0000"+ - "\u10d3\u10d4\u0001\u0000\u0000\u0000\u10d4\u10d9\u0001\u0000\u0000\u0000"+ - "\u10d5\u10d6\u0005\u0102\u0000\u0000\u10d6\u10d7\u0005\u01bf\u0000\u0000"+ - "\u10d7\u10d8\u0005;\u0000\u0000\u10d8\u10da\u0005\u0211\u0000\u0000\u10d9"+ - "\u10d5\u0001\u0000\u0000\u0000\u10d9\u10da\u0001\u0000\u0000\u0000\u10da"+ - "\u10de\u0001\u0000\u0000\u0000\u10db\u10dc\u0005\u00b9\u0000\u0000\u10dc"+ - "\u10dd\u0005\u001c\u0000\u0000\u10dd\u10df\u0003\u00b6[\u0000\u10de\u10db"+ - "\u0001\u0000\u0000\u0000\u10de\u10df\u0001\u0000\u0000\u0000\u10df\u10e3"+ - "\u0001\u0000\u0000\u0000\u10e0\u10e1\u0005V\u0000\u0000\u10e1\u10e2\u0005"+ - "\u001c\u0000\u0000\u10e2\u10e4\u0003\u00b6[\u0000\u10e3\u10e0\u0001\u0000"+ - "\u0000\u0000\u10e3\u10e4\u0001\u0000\u0000\u0000\u10e4\u10e6\u0001\u0000"+ - "\u0000\u0000\u10e5\u10e7\u0003\u0130\u0098\u0000\u10e6\u10e5\u0001\u0000"+ - "\u0000\u0000\u10e6\u10e7\u0001\u0000\u0000\u0000\u10e7\u10e9\u0001\u0000"+ - "\u0000\u0000\u10e8\u10ea\u0003\u00d4j\u0000\u10e9\u10e8\u0001\u0000\u0000"+ - "\u0000\u10e9\u10ea\u0001\u0000\u0000\u0000\u10ea\u10ec\u0001\u0000\u0000"+ - "\u0000\u10eb\u10ed\u0003\u00d6k\u0000\u10ec\u10eb\u0001\u0000\u0000\u0000"+ - "\u10ec\u10ed\u0001\u0000\u0000\u0000\u10ed\u10ef\u0001\u0000\u0000\u0000"+ - "\u10ee\u10f0\u0003\u00ceg\u0000\u10ef\u10ee\u0001\u0000\u0000\u0000\u10ef"+ - "\u10f0\u0001\u0000\u0000\u0000\u10f0\u10f2\u0001\u0000\u0000\u0000\u10f1"+ - "\u10f3\u0003\u00f8|\u0000\u10f2\u10f1\u0001\u0000\u0000\u0000\u10f2\u10f3"+ - "\u0001\u0000\u0000\u0000\u10f3\u10f5\u0001\u0000\u0000\u0000\u10f4\u10f6"+ - "\u0003\u00d0h\u0000\u10f5\u10f4\u0001\u0000\u0000\u0000\u10f5\u10f6\u0001"+ - "\u0000\u0000\u0000\u10f6\u10f8\u0001\u0000\u0000\u0000\u10f7\u10f9\u0003"+ - "\u00d2i\u0000\u10f8\u10f7\u0001\u0000\u0000\u0000\u10f8\u10f9\u0001\u0000"+ - "\u0000\u0000\u10f9\u10fb\u0001\u0000\u0000\u0000\u10fa\u10fc\u0003\u013a"+ - "\u009d\u0000\u10fb\u10fa\u0001\u0000\u0000\u0000\u10fb\u10fc\u0001\u0000"+ - "\u0000\u0000\u10fc\u111b\u0001\u0000\u0000\u0000\u10fd\u10ff\u0005\u01f1"+ - "\u0000\u0000\u10fe\u10fd\u0001\u0000\u0000\u0000\u10fe\u10ff\u0001\u0000"+ - "\u0000\u0000\u10ff\u1100\u0001\u0000\u0000\u0000\u1100\u1102\u0003\u00cc"+ - "f\u0000\u1101\u10fe\u0001\u0000\u0000\u0000\u1101\u1102\u0001\u0000\u0000"+ - "\u0000\u1102\u1103\u0001\u0000\u0000\u0000\u1103\u1104\u0005n\u0000\u0000"+ - "\u1104\u1105\u0005\u00bb\u0000\u0000\u1105\u1106\u0005\u01b7\u0000\u0000"+ - "\u1106\u1107\u0003\u01c0\u00e0\u0000\u1107\u1108\u0005\u00e6\u0000\u0000"+ - "\u1108\u1109\u0005\u01b7\u0000\u0000\u1109\u110c\u0003\u01c0\u00e0\u0000"+ - "\u110a\u110b\u0005\u0141\u0000\u0000\u110b\u110d\u0003\u0130\u0098\u0000"+ - "\u110c\u110a\u0001\u0000\u0000\u0000\u110c\u110d\u0001\u0000\u0000\u0000"+ - "\u110d\u110f\u0001\u0000\u0000\u0000\u110e\u1110\u0003\u00d6k\u0000\u110f"+ - "\u110e\u0001\u0000\u0000\u0000\u110f\u1110\u0001\u0000\u0000\u0000\u1110"+ - "\u1112\u0001\u0000\u0000\u0000\u1111\u1113\u0003\u00f8|\u0000\u1112\u1111"+ - "\u0001\u0000\u0000\u0000\u1112\u1113\u0001\u0000\u0000\u0000\u1113\u1115"+ - "\u0001\u0000\u0000\u0000\u1114\u1116\u0003\u00d0h\u0000\u1115\u1114\u0001"+ - "\u0000\u0000\u0000\u1115\u1116\u0001\u0000\u0000\u0000\u1116\u1118\u0001"+ - "\u0000\u0000\u0000\u1117\u1119\u0003\u013a\u009d\u0000\u1118\u1117\u0001"+ - "\u0000\u0000\u0000\u1118\u1119\u0001\u0000\u0000\u0000\u1119\u111b\u0001"+ - "\u0000\u0000\u0000\u111a\u10bb\u0001\u0000\u0000\u0000\u111a\u1101\u0001"+ - "\u0000\u0000\u0000\u111b\u00a9\u0001\u0000\u0000\u0000\u111c\u111d\u0007"+ - "\u001c\u0000\u0000\u111d\u00ab\u0001\u0000\u0000\u0000\u111e\u111f\u0005"+ - "8\u0000\u0000\u111f\u1120\u0007\u001d\u0000\u0000\u1120\u00ad\u0001\u0000"+ - "\u0000\u0000\u1121\u1122\u0005\u0135\u0000\u0000\u1122\u1129\u0005\u010d"+ - "\u0000\u0000\u1123\u1124\u0005\u0135\u0000\u0000\u1124\u1125\u0005\u018f"+ - "\u0000\u0000\u1125\u1129\u0003\u00b0X\u0000\u1126\u1127\u0005\u0135\u0000"+ - "\u0000\u1127\u1129\u0005R\u0000\u0000\u1128\u1121\u0001\u0000\u0000\u0000"+ - "\u1128\u1123\u0001\u0000\u0000\u0000\u1128\u1126\u0001\u0000\u0000\u0000"+ - "\u1129\u00af\u0001\u0000\u0000\u0000\u112a\u112b\u0005\u00a0\u0000\u0000"+ - "\u112b\u112c\u0005\u0216\u0000\u0000\u112c\u112f\u0003\u01c0\u00e0\u0000"+ - "\u112d\u112e\u0005\u01a9\u0000\u0000\u112e\u1130\u0005\u0211\u0000\u0000"+ - "\u112f\u112d\u0001\u0000\u0000\u0000\u112f\u1130\u0001\u0000\u0000\u0000"+ - "\u1130\u00b1\u0001\u0000\u0000\u0000\u1131\u1132\u0007\u001e\u0000\u0000"+ - "\u1132\u00b3\u0001\u0000\u0000\u0000\u1133\u1136\u0003\u01c0\u00e0\u0000"+ - "\u1134\u1136\u0003\u0186\u00c3\u0000\u1135\u1133\u0001\u0000\u0000\u0000"+ - "\u1135\u1134\u0001\u0000\u0000\u0000\u1136\u00b5\u0001\u0000\u0000\u0000"+ - "\u1137\u113a\u0003\u01c0\u00e0\u0000\u1138\u113a\u0005\u0211\u0000\u0000"+ - "\u1139\u1137\u0001\u0000\u0000\u0000\u1139\u1138\u0001\u0000\u0000\u0000"+ - "\u113a\u00b7\u0001\u0000\u0000\u0000\u113b\u113f\u0003\u01c0\u00e0\u0000"+ - "\u113c\u113f\u0005\u0211\u0000\u0000\u113d\u113f\u0005\u0200\u0000\u0000"+ - "\u113e\u113b\u0001\u0000\u0000\u0000\u113e\u113c\u0001\u0000\u0000\u0000"+ - "\u113e\u113d\u0001\u0000\u0000\u0000\u113f\u00b9\u0001\u0000\u0000\u0000"+ - "\u1140\u1145\u0003\u00bc^\u0000\u1141\u1142\u0005\u0005\u0000\u0000\u1142"+ - "\u1144\u0003\u00bc^\u0000\u1143\u1141\u0001\u0000\u0000\u0000\u1144\u1147"+ - "\u0001\u0000\u0000\u0000\u1145\u1143\u0001\u0000\u0000\u0000\u1145\u1146"+ - "\u0001\u0000\u0000\u0000\u1146\u00bb\u0001\u0000\u0000\u0000\u1147\u1145"+ - "\u0001\u0000\u0000\u0000\u1148\u114b\u0003\u00b6[\u0000\u1149\u114b\u0005"+ - "\u0200\u0000\u0000\u114a\u1148\u0001\u0000\u0000\u0000\u114a\u1149\u0001"+ - "\u0000\u0000\u0000\u114b\u00bd\u0001\u0000\u0000\u0000\u114c\u1155\u0003"+ - "\u00b6[\u0000\u114d\u1153\u0005\u020f\u0000\u0000\u114e\u1154\u0003\u00b6"+ - "[\u0000\u114f\u1150\u0005\u0002\u0000\u0000\u1150\u1151\u0003\u00b6[\u0000"+ - "\u1151\u1152\u0005\u0003\u0000\u0000\u1152\u1154\u0001\u0000\u0000\u0000"+ - "\u1153\u114e\u0001\u0000\u0000\u0000\u1153\u114f\u0001\u0000\u0000\u0000"+ - "\u1154\u1156\u0001\u0000\u0000\u0000\u1155\u114d\u0001\u0000\u0000\u0000"+ - "\u1155\u1156\u0001\u0000\u0000\u0000\u1156\u00bf\u0001\u0000\u0000\u0000"+ - "\u1157\u115e\u0003\u00be_\u0000\u1158\u1159\u0005\u00d5\u0000\u0000\u1159"+ - "\u115b\u0005;\u0000\u0000\u115a\u115c\u0005\u0143\u0000\u0000\u115b\u115a"+ - "\u0001\u0000\u0000\u0000\u115b\u115c\u0001\u0000\u0000\u0000\u115c\u115d"+ - "\u0001\u0000\u0000\u0000\u115d\u115f\u0005\u0211\u0000\u0000\u115e\u1158"+ - "\u0001\u0000\u0000\u0000\u115e\u115f\u0001\u0000\u0000\u0000\u115f\u00c1"+ - "\u0001\u0000\u0000\u0000\u1160\u1162\u0003\u00c4b\u0000\u1161\u1163\u0003"+ - "\u00c6c\u0000\u1162\u1161\u0001\u0000\u0000\u0000\u1162\u1163\u0001\u0000"+ - "\u0000\u0000\u1163\u1165\u0001\u0000\u0000\u0000\u1164\u1166\u0007\u001f"+ - "\u0000\u0000\u1165\u1164\u0001\u0000\u0000\u0000\u1165\u1166\u0001\u0000"+ - "\u0000\u0000\u1166\u1168\u0001\u0000\u0000\u0000\u1167\u1169\u0005\u0153"+ - "\u0000\u0000\u1168\u1167\u0001\u0000\u0000\u0000\u1168\u1169\u0001\u0000"+ - "\u0000\u0000\u1169\u00c3\u0001\u0000\u0000\u0000\u116a\u116b\u0007 \u0000"+ - "\u0000\u116b\u00c5\u0001\u0000\u0000\u0000\u116c\u116d\u0007!\u0000\u0000"+ - "\u116d\u00c7\u0001\u0000\u0000\u0000\u116e\u116f\u0005\u0150\u0000\u0000"+ - "\u116f\u1170\u0005\u0178\u0000\u0000\u1170\u1171\u0003\u00cae\u0000\u1171"+ - "\u00c9\u0001\u0000\u0000\u0000\u1172\u1173\u0005\u0091\u0000\u0000\u1173"+ - "\u1177\u0003\u00e4r\u0000\u1174\u1175\u0005\u0151\u0000\u0000\u1175\u1177"+ - "\u0005\u0211\u0000\u0000\u1176\u1172\u0001\u0000\u0000\u0000\u1176\u1174"+ - "\u0001\u0000\u0000\u0000\u1177\u00cb\u0001\u0000\u0000\u0000\u1178\u1179"+ - "\u0007\u0012\u0000\u0000\u1179\u00cd\u0001\u0000\u0000\u0000\u117a\u117b"+ - "\u0005\u0157\u0000\u0000\u117b\u117c\u0005\u00b1\u0000\u0000\u117c\u117d"+ - "\u0003\u0172\u00b9\u0000\u117d\u00cf\u0001\u0000\u0000\u0000\u117e\u117f"+ - "\u0005~\u0000\u0000\u117f\u1180\u0005\u0135\u0000\u0000\u1180\u1181\u0003"+ - "\u0172\u00b9\u0000\u1181\u00d1\u0001\u0000\u0000\u0000\u1182\u1183\u0005"+ - "\u013a\u0000\u0000\u1183\u1184\u0005;\u0000\u0000\u1184\u1185\u0003\u01c0"+ - "\u00e0\u0000\u1185\u00d3\u0001\u0000\u0000\u0000\u1186\u1187\u0005P\u0000"+ - "\u0000\u1187\u1188\u0005\u00bb\u0000\u0000\u1188\u1189\u0005\u0148\u0000"+ - "\u0000\u1189\u118a\u0005\u001c\u0000\u0000\u118a\u118b\u0003\u0130\u0098"+ - "\u0000\u118b\u00d5\u0001\u0000\u0000\u0000\u118c\u118d\u0005\u0199\u0000"+ - "\u0000\u118d\u118e\u0005\u0002\u0000\u0000\u118e\u1193\u0003\u00d8l\u0000"+ - "\u118f\u1190\u0005\u0004\u0000\u0000\u1190\u1192\u0003\u00d8l\u0000\u1191"+ - "\u118f\u0001\u0000\u0000\u0000\u1192\u1195\u0001\u0000\u0000\u0000\u1193"+ - "\u1191\u0001\u0000\u0000\u0000\u1193\u1194\u0001\u0000\u0000\u0000\u1194"+ - "\u1196\u0001\u0000\u0000\u0000\u1195\u1193\u0001\u0000\u0000\u0000\u1196"+ - "\u1197\u0005\u0003\u0000\u0000\u1197\u00d7\u0001\u0000\u0000\u0000\u1198"+ - "\u1199\u0003\u01c0\u00e0\u0000\u1199\u119a\u0005\u01f7\u0000\u0000\u119a"+ - "\u119b\u0003\u0172\u00b9\u0000\u119b\u00d9\u0001\u0000\u0000\u0000\u119c"+ - "\u11b9\u0003\u00dcn\u0000\u119d\u119e\u0005\u01f1\u0000\u0000\u119e\u119f"+ - "\u0005\u018d\u0000\u0000\u119f\u11a0\u0005\u0002\u0000\u0000\u11a0\u11a1"+ - "\u0003\u013c\u009e\u0000\u11a1\u11a2\u0005\u0003\u0000\u0000\u11a2\u11b9"+ - "\u0001\u0000\u0000\u0000\u11a3\u11a4\u0005\u01f1\u0000\u0000\u11a4\u11a5"+ - "\u0005\u00cc\u0000\u0000\u11a5\u11a6\u0005\u0002\u0000\u0000\u11a6\u11a7"+ - "\u0003\u013c\u009e\u0000\u11a7\u11a8\u0005\u0003\u0000\u0000\u11a8\u11b9"+ - "\u0001\u0000\u0000\u0000\u11a9\u11aa\u0005\u01f1\u0000\u0000\u11aa\u11ab"+ - "\u0005\u0106\u0000\u0000\u11ab\u11ac\u0005\u0002\u0000\u0000\u11ac\u11ad"+ - "\u0003\u013c\u009e\u0000\u11ad\u11ae\u0005\u0003\u0000\u0000\u11ae\u11b9"+ - "\u0001\u0000\u0000\u0000\u11af\u11b0\u0005\u01f1\u0000\u0000\u11b0\u11b1"+ - "\u00056\u0000\u0000\u11b1\u11b6\u0003\u00b6[\u0000\u11b2\u11b3\u0005\u0002"+ - "\u0000\u0000\u11b3\u11b4\u0003\u013c\u009e\u0000\u11b4\u11b5\u0005\u0003"+ - "\u0000\u0000\u11b5\u11b7\u0001\u0000\u0000\u0000\u11b6\u11b2\u0001\u0000"+ - "\u0000\u0000\u11b6\u11b7\u0001\u0000\u0000\u0000\u11b7\u11b9\u0001\u0000"+ - "\u0000\u0000\u11b8\u119c\u0001\u0000\u0000\u0000\u11b8\u119d\u0001\u0000"+ - "\u0000\u0000\u11b8\u11a3\u0001\u0000\u0000\u0000\u11b8\u11a9\u0001\u0000"+ - "\u0000\u0000\u11b8\u11af\u0001\u0000\u0000\u0000\u11b9\u00db\u0001\u0000"+ - "\u0000\u0000\u11ba\u11bb\u0005\u01f1\u0000\u0000\u11bb\u11bc\u0005\u017c"+ - "\u0000\u0000\u11bc\u11c1\u0003\u00b6[\u0000\u11bd\u11be\u0005\u0002\u0000"+ - "\u0000\u11be\u11bf\u0003\u013c\u009e\u0000\u11bf\u11c0\u0005\u0003\u0000"+ - "\u0000\u11c0\u11c2\u0001\u0000\u0000\u0000\u11c1\u11bd\u0001\u0000\u0000"+ - "\u0000\u11c1\u11c2\u0001\u0000\u0000\u0000\u11c2\u00dd\u0001\u0000\u0000"+ - "\u0000\u11c3\u11c5\u0005n\u0000\u0000\u11c4\u11c6\u0005\u0106\u0000\u0000"+ - "\u11c5\u11c4\u0001\u0000\u0000\u0000\u11c5\u11c6\u0001\u0000\u0000\u0000"+ - "\u11c6\u11c7\u0001\u0000\u0000\u0000\u11c7\u11c8\u0005\u00dd\u0000\u0000"+ - "\u11c8\u11c9\u0005\u0211\u0000\u0000\u11c9\u11ca\u0005\u00e6\u0000\u0000"+ - "\u11ca\u11cb\u0005\u01b7\u0000\u0000\u11cb\u11ce\u0003\u0146\u00a3\u0000"+ - "\u11cc\u11cd\u0005\u0141\u0000\u0000\u11cd\u11cf\u0003\u0130\u0098\u0000"+ - "\u11ce\u11cc\u0001\u0000\u0000\u0000\u11ce\u11cf\u0001\u0000\u0000\u0000"+ - "\u11cf\u11d4\u0001\u0000\u0000\u0000\u11d0\u11d1\u0005P\u0000\u0000\u11d1"+ - "\u11d2\u0005\u01bf\u0000\u0000\u11d2\u11d3\u0005;\u0000\u0000\u11d3\u11d5"+ - "\u0005\u0211\u0000\u0000\u11d4\u11d0\u0001\u0000\u0000\u0000\u11d4\u11d5"+ - "\u0001\u0000\u0000\u0000\u11d5\u11da\u0001\u0000\u0000\u0000\u11d6\u11d7"+ - "\u0005\u0102\u0000\u0000\u11d7\u11d8\u0005\u01bf\u0000\u0000\u11d8\u11d9"+ - "\u0005;\u0000\u0000\u11d9\u11db\u0005\u0211\u0000\u0000\u11da\u11d6\u0001"+ - "\u0000\u0000\u0000\u11da\u11db\u0001\u0000\u0000\u0000\u11db\u11dd\u0001"+ - "\u0000\u0000\u0000\u11dc\u11de\u0003\u00e0p\u0000\u11dd\u11dc\u0001\u0000"+ - "\u0000\u0000\u11dd\u11de\u0001\u0000\u0000\u0000\u11de\u11e0\u0001\u0000"+ - "\u0000\u0000\u11df\u11e1\u0003\u0130\u0098\u0000\u11e0\u11df\u0001\u0000"+ - "\u0000\u0000\u11e0\u11e1\u0001\u0000\u0000\u0000\u11e1\u11e3\u0001\u0000"+ - "\u0000\u0000\u11e2\u11e4\u0003\u00d6k\u0000\u11e3\u11e2\u0001\u0000\u0000"+ - "\u0000\u11e3\u11e4\u0001\u0000\u0000\u0000\u11e4\u11e6\u0001\u0000\u0000"+ - "\u0000\u11e5\u11e7\u0003\u013a\u009d\u0000\u11e6\u11e5\u0001\u0000\u0000"+ - "\u0000\u11e6\u11e7\u0001\u0000\u0000\u0000\u11e7\u00df\u0001\u0000\u0000"+ - "\u0000\u11e8\u11e9\u0005\u00d7\u0000\u0000\u11e9\u11ea\u0005\u0216\u0000"+ - "\u0000\u11ea\u11ef\u0005\u0102\u0000\u0000\u11eb\u11ec\u0005\u00d7\u0000"+ - "\u0000\u11ec\u11ed\u0005\u0216\u0000\u0000\u11ed\u11ef\u0005\u018c\u0000"+ - "\u0000\u11ee\u11e8\u0001\u0000\u0000\u0000\u11ee\u11eb\u0001\u0000\u0000"+ - "\u0000\u11ef\u00e1\u0001\u0000\u0000\u0000\u11f0\u11f1\u0005\u00e6\u0000"+ - "\u0000\u11f1\u11f2\u0005\u013c\u0000\u0000\u11f2\u11f6\u0003\u0198\u00cc"+ - "\u0000\u11f3\u11f4\u0005\u00b9\u0000\u0000\u11f4\u11f5\u0005\u001c\u0000"+ - "\u0000\u11f5\u11f7\u0003\u01c0\u00e0\u0000\u11f6\u11f3\u0001\u0000\u0000"+ - "\u0000\u11f6\u11f7\u0001\u0000\u0000\u0000\u11f7\u11f9\u0001\u0000\u0000"+ - "\u0000\u11f8\u11fa\u0003\u013a\u009d\u0000\u11f9\u11f8\u0001\u0000\u0000"+ - "\u0000\u11f9\u11fa\u0001\u0000\u0000\u0000\u11fa\u00e3\u0001\u0000\u0000"+ - "\u0000\u11fb\u11fd\u0003\u00eew\u0000\u11fc\u11fb\u0001\u0000\u0000\u0000"+ - "\u11fc\u11fd\u0001\u0000\u0000\u0000\u11fd\u11fe\u0001\u0000\u0000\u0000"+ - "\u11fe\u11ff\u0003\u00e6s\u0000\u11ff\u1200\u0003\u0122\u0091\u0000\u1200"+ - "\u00e5\u0001\u0000\u0000\u0000\u1201\u1202\u0006s\uffff\uffff\u0000\u1202"+ - "\u1203\u0003\u00eau\u0000\u1203\u1212\u0001\u0000\u0000\u0000\u1204\u1205"+ - "\n\u0002\u0000\u0000\u1205\u1207\u0005\u00e4\u0000\u0000\u1206\u1208\u0003"+ - "\u00e8t\u0000\u1207\u1206\u0001\u0000\u0000\u0000\u1207\u1208\u0001\u0000"+ - "\u0000\u0000\u1208\u1209\u0001\u0000\u0000\u0000\u1209\u1211\u0003\u00e6"+ - "s\u0003\u120a\u120b\n\u0001\u0000\u0000\u120b\u120d\u0007\"\u0000\u0000"+ - "\u120c\u120e\u0003\u00e8t\u0000\u120d\u120c\u0001\u0000\u0000\u0000\u120d"+ - "\u120e\u0001\u0000\u0000\u0000\u120e\u120f\u0001\u0000\u0000\u0000\u120f"+ - "\u1211\u0003\u00e6s\u0002\u1210\u1204\u0001\u0000\u0000\u0000\u1210\u120a"+ - "\u0001\u0000\u0000\u0000\u1211\u1214\u0001\u0000\u0000\u0000\u1212\u1210"+ - "\u0001\u0000\u0000\u0000\u1212\u1213\u0001\u0000\u0000\u0000\u1213\u00e7"+ - "\u0001\u0000\u0000\u0000\u1214\u1212\u0001\u0000\u0000\u0000\u1215\u1216"+ - "\u0007#\u0000\u0000\u1216\u00e9\u0001\u0000\u0000\u0000\u1217\u121e\u0003"+ - "\u00ecv\u0000\u1218\u1219\u0005\u0002\u0000\u0000\u1219\u121a\u0003\u00e4"+ - "r\u0000\u121a\u121b\u0005\u0003\u0000\u0000\u121b\u121e\u0001\u0000\u0000"+ - "\u0000\u121c\u121e\u0003\u016c\u00b6\u0000\u121d\u1217\u0001\u0000\u0000"+ - "\u0000\u121d\u1218\u0001\u0000\u0000\u0000\u121d\u121c\u0001\u0000\u0000"+ - "\u0000\u121e\u00eb\u0001\u0000\u0000\u0000\u121f\u1221\u0003\u00f4z\u0000"+ - "\u1220\u1222\u0003\u00fc~\u0000\u1221\u1220\u0001\u0000\u0000\u0000\u1221"+ - "\u1222\u0001\u0000\u0000\u0000\u1222\u1224\u0001\u0000\u0000\u0000\u1223"+ - "\u1225\u0003\u00fa}\u0000\u1224\u1223\u0001\u0000\u0000\u0000\u1224\u1225"+ - "\u0001\u0000\u0000\u0000\u1225\u1227\u0001\u0000\u0000\u0000\u1226\u1228"+ - "\u0003\u00f8|\u0000\u1227\u1226\u0001\u0000\u0000\u0000\u1227\u1228\u0001"+ - "\u0000\u0000\u0000\u1228\u122a\u0001\u0000\u0000\u0000\u1229\u122b\u0003"+ - "\u010c\u0086\u0000\u122a\u1229\u0001\u0000\u0000\u0000\u122a\u122b\u0001"+ - "\u0000\u0000\u0000\u122b\u122d\u0001\u0000\u0000\u0000\u122c\u122e\u0003"+ - "\u0112\u0089\u0000\u122d\u122c\u0001\u0000\u0000\u0000\u122d\u122e\u0001"+ - "\u0000\u0000\u0000\u122e\u1230\u0001\u0000\u0000\u0000\u122f\u1231\u0003"+ - "\u0114\u008a\u0000\u1230\u122f\u0001\u0000\u0000\u0000\u1230\u1231\u0001"+ - "\u0000\u0000\u0000\u1231\u1232\u0001\u0000\u0000\u0000\u1232\u1233\u0004"+ - "v\u0002\u0000\u1233\u1234\u0003\u0122\u0091\u0000\u1234\u00ed\u0001\u0000"+ - "\u0000\u0000\u1235\u1236\u0005\u01f1\u0000\u0000\u1236\u123b\u0003\u00f0"+ - "x\u0000\u1237\u1238\u0005\u0004\u0000\u0000\u1238\u123a\u0003\u00f0x\u0000"+ - "\u1239\u1237\u0001\u0000\u0000\u0000\u123a\u123d\u0001\u0000\u0000\u0000"+ - "\u123b\u1239\u0001\u0000\u0000\u0000\u123b\u123c\u0001\u0000\u0000\u0000"+ - "\u123c\u00ef\u0001\u0000\u0000\u0000\u123d\u123b\u0001\u0000\u0000\u0000"+ - "\u123e\u1240\u0003\u01c0\u00e0\u0000\u123f\u1241\u0003\u00f2y\u0000\u1240"+ - "\u123f\u0001\u0000\u0000\u0000\u1240\u1241\u0001\u0000\u0000\u0000\u1241"+ - "\u1242\u0001\u0000\u0000\u0000\u1242\u1243\u0005\u001c\u0000\u0000\u1243"+ - "\u1244\u0005\u0002\u0000\u0000\u1244\u1245\u0003\u00e4r\u0000\u1245\u1246"+ - "\u0005\u0003\u0000\u0000\u1246\u00f1\u0001\u0000\u0000\u0000\u1247\u1248"+ - "\u0005\u0002\u0000\u0000\u1248\u124d\u0003\u01c0\u00e0\u0000\u1249\u124a"+ - "\u0005\u0004\u0000\u0000\u124a\u124c\u0003\u01c0\u00e0\u0000\u124b\u1249"+ - "\u0001\u0000\u0000\u0000\u124c\u124f\u0001\u0000\u0000\u0000\u124d\u124b"+ - "\u0001\u0000\u0000\u0000\u124d\u124e\u0001\u0000\u0000\u0000\u124e\u1250"+ - "\u0001\u0000\u0000\u0000\u124f\u124d\u0001\u0000\u0000\u0000\u1250\u1251"+ - "\u0005\u0003\u0000\u0000\u1251\u00f3\u0001\u0000\u0000\u0000\u1252\u1254"+ - "\u0005\u0194\u0000\u0000\u1253\u1255\u0007#\u0000\u0000\u1254\u1253\u0001"+ - "\u0000\u0000\u0000\u1254\u1255\u0001\u0000\u0000\u0000\u1255\u1256\u0001"+ - "\u0000\u0000\u0000\u1256\u1257\u0003\u00f6{\u0000\u1257\u00f5\u0001\u0000"+ - "\u0000\u0000\u1258\u1259\u0003\u0170\u00b8\u0000\u1259\u00f7\u0001\u0000"+ - "\u0000\u0000\u125a\u125b\u0005\u01ef\u0000\u0000\u125b\u125c\u0003\u0176"+ - "\u00bb\u0000\u125c\u00f9\u0001\u0000\u0000\u0000\u125d\u125e\u0005\u00bb"+ - "\u0000\u0000\u125e\u125f\u0003\u0102\u0081\u0000\u125f\u00fb\u0001\u0000"+ - "\u0000\u0000\u1260\u1262\u0003\u00fe\u007f\u0000\u1261\u1260\u0001\u0000"+ - "\u0000\u0000\u1261\u1262\u0001\u0000\u0000\u0000\u1262\u1263\u0001\u0000"+ - "\u0000\u0000\u1263\u1266\u0005\u00e6\u0000\u0000\u1264\u1267\u0003\u0100"+ - "\u0080\u0000\u1265\u1267\u0003\u01c0\u00e0\u0000\u1266\u1264\u0001\u0000"+ - "\u0000\u0000\u1266\u1265\u0001\u0000\u0000\u0000\u1267\u126f\u0001\u0000"+ - "\u0000\u0000\u1268\u126b\u0005\u0004\u0000\u0000\u1269\u126c\u0003\u0100"+ - "\u0080\u0000\u126a\u126c\u0003\u01c0\u00e0\u0000\u126b\u1269\u0001\u0000"+ - "\u0000\u0000\u126b\u126a\u0001\u0000\u0000\u0000\u126c\u126e\u0001\u0000"+ - "\u0000\u0000\u126d\u1268\u0001\u0000\u0000\u0000\u126e\u1271\u0001\u0000"+ - "\u0000\u0000\u126f\u126d\u0001\u0000\u0000\u0000\u126f\u1270\u0001\u0000"+ - "\u0000\u0000\u1270\u00fd\u0001\u0000\u0000\u0000\u1271\u126f\u0001\u0000"+ - "\u0000\u0000\u1272\u1273\u0005:\u0000\u0000\u1273\u1274\u0005M\u0000\u0000"+ - "\u1274\u00ff\u0001\u0000\u0000\u0000\u1275\u1276\u0003\u01c0\u00e0\u0000"+ - "\u1276\u1277\u0005\u0002\u0000\u0000\u1277\u1278\u0005\u0216\u0000\u0000"+ - "\u1278\u1279\u0005\u0003\u0000\u0000\u1279\u0101\u0001\u0000\u0000\u0000"+ - "\u127a\u127f\u0003\u0104\u0082\u0000\u127b\u127c\u0005\u0004\u0000\u0000"+ - "\u127c\u127e\u0003\u0104\u0082\u0000\u127d\u127b\u0001\u0000\u0000\u0000"+ - "\u127e\u1281\u0001\u0000\u0000\u0000\u127f\u127d\u0001\u0000\u0000\u0000"+ - "\u127f\u1280\u0001\u0000\u0000\u0000\u1280\u0103\u0001\u0000\u0000\u0000"+ - "\u1281\u127f\u0001\u0000\u0000\u0000\u1282\u1286\u0003\u0136\u009b\u0000"+ - "\u1283\u1285\u0003\u0106\u0083\u0000\u1284\u1283\u0001\u0000\u0000\u0000"+ - "\u1285\u1288\u0001\u0000\u0000\u0000\u1286\u1284\u0001\u0000\u0000\u0000"+ - "\u1286\u1287\u0001\u0000\u0000\u0000\u1287\u0105\u0001\u0000\u0000\u0000"+ - "\u1288\u1286\u0001\u0000\u0000\u0000\u1289\u128a\u0003\u012c\u0096\u0000"+ - "\u128a\u128c\u0005\u00f1\u0000\u0000\u128b\u128d\u0003\u0108\u0084\u0000"+ - "\u128c\u128b\u0001\u0000\u0000\u0000\u128c\u128d\u0001\u0000\u0000\u0000"+ - "\u128d\u128e\u0001\u0000\u0000\u0000\u128e\u1290\u0003\u0136\u009b\u0000"+ - "\u128f\u1291\u0003\u012e\u0097\u0000\u1290\u128f\u0001\u0000\u0000\u0000"+ - "\u1290\u1291\u0001\u0000\u0000\u0000\u1291\u0107\u0001\u0000\u0000\u0000"+ - "\u1292\u1293\u0005\u0007\u0000\u0000\u1293\u1294\u0003\u01c0\u00e0\u0000"+ - "\u1294\u1295\u0005\b\u0000\u0000\u1295\u129b\u0001\u0000\u0000\u0000\u1296"+ - "\u1297\u0005\u020c\u0000\u0000\u1297\u1298\u0003\u01c0\u00e0\u0000\u1298"+ - "\u1299\u0005\u020d\u0000\u0000\u1299\u129b\u0001\u0000\u0000\u0000\u129a"+ - "\u1292\u0001\u0000\u0000\u0000\u129a\u1296\u0001\u0000\u0000\u0000\u129b"+ - "\u0109\u0001\u0000\u0000\u0000\u129c\u129d\u0005\u0007\u0000\u0000\u129d"+ - "\u12a2\u0003\u01c0\u00e0\u0000\u129e\u129f\u0005\u0004\u0000\u0000\u129f"+ - "\u12a1\u0003\u01c0\u00e0\u0000\u12a0\u129e\u0001\u0000\u0000\u0000\u12a1"+ - "\u12a4\u0001\u0000\u0000\u0000\u12a2\u12a0\u0001\u0000\u0000\u0000\u12a2"+ - "\u12a3\u0001\u0000\u0000\u0000\u12a3\u12a5\u0001\u0000\u0000\u0000\u12a4"+ - "\u12a2\u0001\u0000\u0000\u0000\u12a5\u12a6\u0005\b\u0000\u0000\u12a6\u12b3"+ - "\u0001\u0000\u0000\u0000\u12a7\u12a8\u0005\u020c\u0000\u0000\u12a8\u12ad"+ - "\u0003\u01c0\u00e0\u0000\u12a9\u12aa\u0005\u0004\u0000\u0000\u12aa\u12ac"+ - "\u0003\u01c0\u00e0\u0000\u12ab\u12a9\u0001\u0000\u0000\u0000\u12ac\u12af"+ - "\u0001\u0000\u0000\u0000\u12ad\u12ab\u0001\u0000\u0000\u0000\u12ad\u12ae"+ - "\u0001\u0000\u0000\u0000\u12ae\u12b0\u0001\u0000\u0000\u0000\u12af\u12ad"+ - "\u0001\u0000\u0000\u0000\u12b0\u12b1\u0005\u020d\u0000\u0000\u12b1\u12b3"+ - "\u0001\u0000\u0000\u0000\u12b2\u129c\u0001\u0000\u0000\u0000\u12b2\u12a7"+ - "\u0001\u0000\u0000\u0000\u12b3\u010b\u0001\u0000\u0000\u0000\u12b4\u12b5"+ - "\u0005\u00c7\u0000\u0000\u12b5\u12b6\u0005;\u0000\u0000\u12b6\u12b7\u0003"+ - "\u010e\u0087\u0000\u12b7\u010d\u0001\u0000\u0000\u0000\u12b8\u12b9\u0005"+ - "\u0189\u0000\u0000\u12b9\u12c2\u0005\u0002\u0000\u0000\u12ba\u12bf\u0003"+ - "\u0172\u00b9\u0000\u12bb\u12bc\u0005\u0004\u0000\u0000\u12bc\u12be\u0003"+ - "\u0172\u00b9\u0000\u12bd\u12bb\u0001\u0000\u0000\u0000\u12be\u12c1\u0001"+ - "\u0000\u0000\u0000\u12bf\u12bd\u0001\u0000\u0000\u0000\u12bf\u12c0\u0001"+ - "\u0000\u0000\u0000\u12c0\u12c3\u0001\u0000\u0000\u0000\u12c1\u12bf\u0001"+ - "\u0000\u0000\u0000\u12c2\u12ba\u0001\u0000\u0000\u0000\u12c2\u12c3\u0001"+ - "\u0000\u0000\u0000\u12c3\u12c4\u0001\u0000\u0000\u0000\u12c4\u12e8\u0005"+ - "\u0003\u0000\u0000\u12c5\u12c6\u0005g\u0000\u0000\u12c6\u12cf\u0005\u0002"+ - "\u0000\u0000\u12c7\u12cc\u0003\u0172\u00b9\u0000\u12c8\u12c9\u0005\u0004"+ - "\u0000\u0000\u12c9\u12cb\u0003\u0172\u00b9\u0000\u12ca\u12c8\u0001\u0000"+ - "\u0000\u0000\u12cb\u12ce\u0001\u0000\u0000\u0000\u12cc\u12ca\u0001\u0000"+ - "\u0000\u0000\u12cc\u12cd\u0001\u0000\u0000\u0000\u12cd\u12d0\u0001\u0000"+ - "\u0000\u0000\u12ce\u12cc\u0001\u0000\u0000\u0000\u12cf\u12c7\u0001\u0000"+ - "\u0000\u0000\u12cf\u12d0\u0001\u0000\u0000\u0000\u12d0\u12d1\u0001\u0000"+ - "\u0000\u0000\u12d1\u12e8\u0005\u0003\u0000\u0000\u12d2\u12d3\u0005\u00c8"+ - "\u0000\u0000\u12d3\u12d4\u0005\u019a\u0000\u0000\u12d4\u12d5\u0005\u0002"+ - "\u0000\u0000\u12d5\u12da\u0003\u0110\u0088\u0000\u12d6\u12d7\u0005\u0004"+ - "\u0000\u0000\u12d7\u12d9\u0003\u0110\u0088\u0000\u12d8\u12d6\u0001\u0000"+ - "\u0000\u0000\u12d9\u12dc\u0001\u0000\u0000\u0000\u12da\u12d8\u0001\u0000"+ - "\u0000\u0000\u12da\u12db\u0001\u0000\u0000\u0000\u12db\u12dd\u0001\u0000"+ - "\u0000\u0000\u12dc\u12da\u0001\u0000\u0000\u0000\u12dd\u12de\u0005\u0003"+ - "\u0000\u0000\u12de\u12e8\u0001\u0000\u0000\u0000\u12df\u12e4\u0003\u0172"+ - "\u00b9\u0000\u12e0\u12e1\u0005\u0004\u0000\u0000\u12e1\u12e3\u0003\u0172"+ - "\u00b9\u0000\u12e2\u12e0\u0001\u0000\u0000\u0000\u12e3\u12e6\u0001\u0000"+ - "\u0000\u0000\u12e4\u12e2\u0001\u0000\u0000\u0000\u12e4\u12e5\u0001\u0000"+ - "\u0000\u0000\u12e5\u12e8\u0001\u0000\u0000\u0000\u12e6\u12e4\u0001\u0000"+ - "\u0000\u0000\u12e7\u12b8\u0001\u0000\u0000\u0000\u12e7\u12c5\u0001\u0000"+ - "\u0000\u0000\u12e7\u12d2\u0001\u0000\u0000\u0000\u12e7\u12df\u0001\u0000"+ - "\u0000\u0000\u12e8\u010f\u0001\u0000\u0000\u0000\u12e9\u12f2\u0005\u0002"+ - "\u0000\u0000\u12ea\u12ef\u0003\u0172\u00b9\u0000\u12eb\u12ec\u0005\u0004"+ - "\u0000\u0000\u12ec\u12ee\u0003\u0172\u00b9\u0000\u12ed\u12eb\u0001\u0000"+ - "\u0000\u0000\u12ee\u12f1\u0001\u0000\u0000\u0000\u12ef\u12ed\u0001\u0000"+ - "\u0000\u0000\u12ef\u12f0\u0001\u0000\u0000\u0000\u12f0\u12f3\u0001\u0000"+ - "\u0000\u0000\u12f1\u12ef\u0001\u0000\u0000\u0000\u12f2\u12ea\u0001\u0000"+ - "\u0000\u0000\u12f2\u12f3\u0001\u0000\u0000\u0000\u12f3\u12f4\u0001\u0000"+ - "\u0000\u0000\u12f4\u12f5\u0005\u0003\u0000\u0000\u12f5\u0111\u0001\u0000"+ - "\u0000\u0000\u12f6\u12f7\u0005\u00cb\u0000\u0000\u12f7\u12f8\u0003\u0176"+ - "\u00bb\u0000\u12f8\u0113\u0001\u0000\u0000\u0000\u12f9\u12fa\u0005\u0165"+ - "\u0000\u0000\u12fa\u12fb\u0003\u0176\u00bb\u0000\u12fb\u0115\u0001\u0000"+ - "\u0000\u0000\u12fc\u1303\u0003\u0118\u008c\u0000\u12fd\u12ff\u0005\u0004"+ - "\u0000\u0000\u12fe\u12fd\u0001\u0000\u0000\u0000\u12fe\u12ff\u0001\u0000"+ - "\u0000\u0000\u12ff\u1300\u0001\u0000\u0000\u0000\u1300\u1302\u0003\u0118"+ - "\u008c\u0000\u1301\u12fe\u0001\u0000\u0000\u0000\u1302\u1305\u0001\u0000"+ - "\u0000\u0000\u1303\u1301\u0001\u0000\u0000\u0000\u1303\u1304\u0001\u0000"+ - "\u0000\u0000\u1304\u1306\u0001\u0000\u0000\u0000\u1305\u1303\u0001\u0000"+ - "\u0000\u0000\u1306\u1307\u0005\u020d\u0000\u0000\u1307\u0117\u0001\u0000"+ - "\u0000\u0000\u1308\u1316\u0003\u01c0\u00e0\u0000\u1309\u130a\u0005\u0002"+ - "\u0000\u0000\u130a\u1311\u0003\u011a\u008d\u0000\u130b\u130d\u0005\u0004"+ - "\u0000\u0000\u130c\u130b\u0001\u0000\u0000\u0000\u130c\u130d\u0001\u0000"+ - "\u0000\u0000\u130d\u130e\u0001\u0000\u0000\u0000\u130e\u1310\u0003\u011a"+ - "\u008d\u0000\u130f\u130c\u0001\u0000\u0000\u0000\u1310\u1313\u0001\u0000"+ - "\u0000\u0000\u1311\u130f\u0001\u0000\u0000\u0000\u1311\u1312\u0001\u0000"+ - "\u0000\u0000\u1312\u1314\u0001\u0000\u0000\u0000\u1313\u1311\u0001\u0000"+ - "\u0000\u0000\u1314\u1315\u0005\u0003\u0000\u0000\u1315\u1317\u0001\u0000"+ - "\u0000\u0000\u1316\u1309\u0001\u0000\u0000\u0000\u1316\u1317\u0001\u0000"+ - "\u0000\u0000\u1317\u1327\u0001\u0000\u0000\u0000\u1318\u1324\u0007$\u0000"+ - "\u0000\u1319\u131a\u0005\u0002\u0000\u0000\u131a\u131f\u0003\u0146\u00a3"+ - "\u0000\u131b\u131c\u0005\u0004\u0000\u0000\u131c\u131e\u0003\u0146\u00a3"+ - "\u0000\u131d\u131b\u0001\u0000\u0000\u0000\u131e\u1321\u0001\u0000\u0000"+ - "\u0000\u131f\u131d\u0001\u0000\u0000\u0000\u131f\u1320\u0001\u0000\u0000"+ - "\u0000\u1320\u1322\u0001\u0000\u0000\u0000\u1321\u131f\u0001\u0000\u0000"+ - "\u0000\u1322\u1323\u0005\u0003\u0000\u0000\u1323\u1325\u0001\u0000\u0000"+ - "\u0000\u1324\u1319\u0001\u0000\u0000\u0000\u1324\u1325\u0001\u0000\u0000"+ - "\u0000\u1325\u1327\u0001\u0000\u0000\u0000\u1326\u1308\u0001\u0000\u0000"+ - "\u0000\u1326\u1318\u0001\u0000\u0000\u0000\u1327\u0119\u0001\u0000\u0000"+ - "\u0000\u1328\u132e\u0003\u00b6[\u0000\u1329\u132c\u0005\u01f7\u0000\u0000"+ - "\u132a\u132d\u0003\u0198\u00cc\u0000\u132b\u132d\u0003\u01c0\u00e0\u0000"+ - "\u132c\u132a\u0001\u0000\u0000\u0000\u132c\u132b\u0001\u0000\u0000\u0000"+ - "\u132d\u132f\u0001\u0000\u0000\u0000\u132e\u1329\u0001\u0000\u0000\u0000"+ - "\u132e\u132f\u0001\u0000\u0000\u0000\u132f\u1332\u0001\u0000\u0000\u0000"+ - "\u1330\u1332\u0003\u0198\u00cc\u0000\u1331\u1328\u0001\u0000\u0000\u0000"+ - "\u1331\u1330\u0001\u0000\u0000\u0000\u1332\u011b\u0001\u0000\u0000\u0000"+ - "\u1333\u1334\u0003\u0146\u00a3\u0000\u1334\u1337\u0005\u01f7\u0000\u0000"+ - "\u1335\u1338\u0003\u0172\u00b9\u0000\u1336\u1338\u0005|\u0000\u0000\u1337"+ - "\u1335\u0001\u0000\u0000\u0000\u1337\u1336\u0001\u0000\u0000\u0000\u1338"+ - "\u011d\u0001\u0000\u0000\u0000\u1339\u133e\u0003\u011c\u008e\u0000\u133a"+ - "\u133b\u0005\u0004\u0000\u0000\u133b\u133d\u0003\u011c\u008e\u0000\u133c"+ - "\u133a\u0001\u0000\u0000\u0000\u133d\u1340\u0001\u0000\u0000\u0000\u133e"+ - "\u133c\u0001\u0000\u0000\u0000\u133e\u133f\u0001\u0000\u0000\u0000\u133f"+ - "\u011f\u0001\u0000\u0000\u0000\u1340\u133e\u0001\u0000\u0000\u0000\u1341"+ - "\u1342\u0005\u00fa\u0000\u0000\u1342\u1343\u0005\u01e9\u0000\u0000\u1343"+ - "\u1344\u0003\u01c0\u00e0\u0000\u1344\u134d\u0005\u0002\u0000\u0000\u1345"+ - "\u134a\u0003\u0172\u00b9\u0000\u1346\u1347\u0005\u0004\u0000\u0000\u1347"+ - "\u1349\u0003\u0172\u00b9\u0000\u1348\u1346\u0001\u0000\u0000\u0000\u1349"+ - "\u134c\u0001\u0000\u0000\u0000\u134a\u1348\u0001\u0000\u0000\u0000\u134a"+ - "\u134b\u0001\u0000\u0000\u0000\u134b\u134e\u0001\u0000\u0000\u0000\u134c"+ - "\u134a\u0001\u0000\u0000\u0000\u134d\u1345\u0001\u0000\u0000\u0000\u134d"+ - "\u134e\u0001\u0000\u0000\u0000\u134e\u134f\u0001\u0000\u0000\u0000\u134f"+ - "\u1350\u0005\u0003\u0000\u0000\u1350\u1351\u0003\u01c0\u00e0\u0000\u1351"+ - "\u1352\u0005\u001c\u0000\u0000\u1352\u1357\u0003\u01c0\u00e0\u0000\u1353"+ - "\u1354\u0005\u0004\u0000\u0000\u1354\u1356\u0003\u01c0\u00e0\u0000\u1355"+ - "\u1353\u0001\u0000\u0000\u0000\u1356\u1359\u0001\u0000\u0000\u0000\u1357"+ - "\u1355\u0001\u0000\u0000\u0000\u1357\u1358\u0001\u0000\u0000\u0000\u1358"+ - "\u0121\u0001\u0000\u0000\u0000\u1359\u1357\u0001\u0000\u0000\u0000\u135a"+ - "\u135c\u0003\u0124\u0092\u0000\u135b\u135a\u0001\u0000\u0000\u0000\u135b"+ - "\u135c\u0001\u0000\u0000\u0000\u135c\u135e\u0001\u0000\u0000\u0000\u135d"+ - "\u135f\u0003\u0128\u0094\u0000\u135e\u135d\u0001\u0000\u0000\u0000\u135e"+ - "\u135f\u0001\u0000\u0000\u0000\u135f\u0123\u0001\u0000\u0000\u0000\u1360"+ - "\u1361\u0005\u013a\u0000\u0000\u1361\u1362\u0005;\u0000\u0000\u1362\u1367"+ - "\u0003\u0126\u0093\u0000\u1363\u1364\u0005\u0004\u0000\u0000\u1364\u1366"+ - "\u0003\u0126\u0093\u0000\u1365\u1363\u0001\u0000\u0000\u0000\u1366\u1369"+ - "\u0001\u0000\u0000\u0000\u1367\u1365\u0001\u0000\u0000\u0000\u1367\u1368"+ - "\u0001\u0000\u0000\u0000\u1368\u0125\u0001\u0000\u0000\u0000\u1369\u1367"+ - "\u0001\u0000\u0000\u0000\u136a\u136c\u0003\u0172\u00b9\u0000\u136b\u136d"+ - "\u0007%\u0000\u0000\u136c\u136b\u0001\u0000\u0000\u0000\u136c\u136d\u0001"+ - "\u0000\u0000\u0000\u136d\u1370\u0001\u0000\u0000\u0000\u136e\u136f\u0005"+ - "\u0131\u0000\u0000\u136f\u1371\u0007&\u0000\u0000\u1370\u136e\u0001\u0000"+ - "\u0000\u0000\u1370\u1371\u0001\u0000\u0000\u0000\u1371\u0127\u0001\u0000"+ - "\u0000\u0000\u1372\u1373\u0005\u0101\u0000\u0000\u1373\u137d\u0005\u0216"+ - "\u0000\u0000\u1374\u1375\u0005\u0101\u0000\u0000\u1375\u1376\u0005\u0216"+ - "\u0000\u0000\u1376\u1377\u0005\u0134\u0000\u0000\u1377\u137d\u0005\u0216"+ - "\u0000\u0000\u1378\u1379\u0005\u0101\u0000\u0000\u1379\u137a\u0005\u0216"+ - "\u0000\u0000\u137a\u137b\u0005\u0004\u0000\u0000\u137b\u137d\u0005\u0216"+ - "\u0000\u0000\u137c\u1372\u0001\u0000\u0000\u0000\u137c\u1374\u0001\u0000"+ - "\u0000\u0000\u137c\u1378\u0001\u0000\u0000\u0000\u137d\u0129\u0001\u0000"+ - "\u0000\u0000\u137e\u137f\u0005\u0141\u0000\u0000\u137f\u1380\u0005;\u0000"+ - "\u0000\u1380\u1385\u0003\u0172\u00b9\u0000\u1381\u1382\u0005\u0004\u0000"+ - "\u0000\u1382\u1384\u0003\u0172\u00b9\u0000\u1383\u1381\u0001\u0000\u0000"+ - "\u0000\u1384\u1387\u0001\u0000\u0000\u0000\u1385\u1383\u0001\u0000\u0000"+ - "\u0000\u1385\u1386\u0001\u0000\u0000\u0000\u1386\u012b\u0001\u0000\u0000"+ - "\u0000\u1387\u1385\u0001\u0000\u0000\u0000\u1388\u138a\u0005\u00de\u0000"+ - "\u0000\u1389\u1388\u0001\u0000\u0000\u0000\u1389\u138a\u0001\u0000\u0000"+ - "\u0000\u138a\u13a1\u0001\u0000\u0000\u0000\u138b\u13a1\u0005f\u0000\u0000"+ - "\u138c\u138e\u0005\u00fd\u0000\u0000\u138d\u138f\u0005\u013b\u0000\u0000"+ - "\u138e\u138d\u0001\u0000\u0000\u0000\u138e\u138f\u0001\u0000\u0000\u0000"+ - "\u138f\u13a1\u0001\u0000\u0000\u0000\u1390\u1392\u0005\u0184\u0000\u0000"+ - "\u1391\u1393\u0005\u013b\u0000\u0000\u1392\u1391\u0001\u0000\u0000\u0000"+ - "\u1392\u1393\u0001\u0000\u0000\u0000\u1393\u13a1\u0001\u0000\u0000\u0000"+ - "\u1394\u1396\u0005\u00be\u0000\u0000\u1395\u1397\u0005\u013b\u0000\u0000"+ - "\u1396\u1395\u0001\u0000\u0000\u0000\u1396\u1397\u0001\u0000\u0000\u0000"+ - "\u1397\u13a1\u0001\u0000\u0000\u0000\u1398\u1399\u0005\u00fd\u0000\u0000"+ - "\u1399\u13a1\u0005\u0195\u0000\u0000\u139a\u139b\u0005\u0184\u0000\u0000"+ - "\u139b\u13a1\u0005\u0195\u0000\u0000\u139c\u139d\u0005\u00fd\u0000\u0000"+ - "\u139d\u13a1\u0005\u0019\u0000\u0000\u139e\u139f\u0005\u0184\u0000\u0000"+ - "\u139f\u13a1\u0005\u0019\u0000\u0000\u13a0\u1389\u0001\u0000\u0000\u0000"+ - "\u13a0\u138b\u0001\u0000\u0000\u0000\u13a0\u138c\u0001\u0000\u0000\u0000"+ - "\u13a0\u1390\u0001\u0000\u0000\u0000\u13a0\u1394\u0001\u0000\u0000\u0000"+ - "\u13a0\u1398\u0001\u0000\u0000\u0000\u13a0\u139a\u0001\u0000\u0000\u0000"+ - "\u13a0\u139c\u0001\u0000\u0000\u0000\u13a0\u139e\u0001\u0000\u0000\u0000"+ - "\u13a1\u012d\u0001\u0000\u0000\u0000\u13a2\u13a3\u0005\u0135\u0000\u0000"+ - "\u13a3\u13a7\u0003\u0176\u00bb\u0000\u13a4\u13a5\u0005\u01de\u0000\u0000"+ - "\u13a5\u13a7\u0003\u0130\u0098\u0000\u13a6\u13a2\u0001\u0000\u0000\u0000"+ - "\u13a6\u13a4\u0001\u0000\u0000\u0000\u13a7\u012f\u0001\u0000\u0000\u0000"+ - "\u13a8\u13a9\u0005\u0002\u0000\u0000\u13a9\u13aa\u0003\u0132\u0099\u0000"+ - "\u13aa\u13ab\u0005\u0003\u0000\u0000\u13ab\u0131\u0001\u0000\u0000\u0000"+ - "\u13ac\u13b1\u0003\u01bc\u00de\u0000\u13ad\u13ae\u0005\u0004\u0000\u0000"+ - "\u13ae\u13b0\u0003\u01bc\u00de\u0000\u13af\u13ad\u0001\u0000\u0000\u0000"+ - "\u13b0\u13b3\u0001\u0000\u0000\u0000\u13b1\u13af\u0001\u0000\u0000\u0000"+ - "\u13b1\u13b2\u0001\u0000\u0000\u0000\u13b2\u0133\u0001\u0000\u0000\u0000"+ - "\u13b3\u13b1\u0001\u0000\u0000\u0000\u13b4\u13b5\u0005\u020f\u0000\u0000"+ - "\u13b5\u13b6\u0003\u01c0\u00e0\u0000\u13b6\u13b8\u0005\u0002\u0000\u0000"+ - "\u13b7\u13b9\u0003\u013c\u009e\u0000\u13b8\u13b7\u0001\u0000\u0000\u0000"+ - "\u13b8\u13b9\u0001\u0000\u0000\u0000\u13b9\u13ba\u0001\u0000\u0000\u0000"+ - "\u13ba\u13bb\u0005\u0003\u0000\u0000\u13bb\u0135\u0001\u0000\u0000\u0000"+ - "\u13bc\u13be\u0003\u0146\u00a3\u0000\u13bd\u13bf\u0003\u0134\u009a\u0000"+ - "\u13be\u13bd\u0001\u0000\u0000\u0000\u13be\u13bf\u0001\u0000\u0000\u0000"+ - "\u13bf\u13c1\u0001\u0000\u0000\u0000\u13c0\u13c2\u0003\u0138\u009c\u0000"+ - "\u13c1\u13c0\u0001\u0000\u0000\u0000\u13c1\u13c2\u0001\u0000\u0000\u0000"+ - "\u13c2\u13c4\u0001\u0000\u0000\u0000\u13c3\u13c5\u0003\u01ba\u00dd\u0000"+ - "\u13c4\u13c3\u0001\u0000\u0000\u0000\u13c4\u13c5\u0001\u0000\u0000\u0000"+ - "\u13c5\u13c7\u0001\u0000\u0000\u0000\u13c6\u13c8\u0003\u0196\u00cb\u0000"+ - "\u13c7\u13c6\u0001\u0000\u0000\u0000\u13c7\u13c8\u0001\u0000\u0000\u0000"+ - "\u13c8\u13ca\u0001\u0000\u0000\u0000\u13c9\u13cb\u0003\u016a\u00b5\u0000"+ - "\u13ca\u13c9\u0001\u0000\u0000\u0000\u13ca\u13cb\u0001\u0000\u0000\u0000"+ - "\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13ce\u0003\u0144\u00a2\u0000"+ - "\u13cd\u13cf\u0003\u01b6\u00db\u0000\u13ce\u13cd\u0001\u0000\u0000\u0000"+ - "\u13ce\u13cf\u0001\u0000\u0000\u0000\u13cf\u13d1\u0001\u0000\u0000\u0000"+ - "\u13d0\u13d2\u0003\u010a\u0085\u0000\u13d1\u13d0\u0001\u0000\u0000\u0000"+ - "\u13d1\u13d2\u0001\u0000\u0000\u0000\u13d2\u13d6\u0001\u0000\u0000\u0000"+ - "\u13d3\u13d5\u0003\u0120\u0090\u0000\u13d4\u13d3\u0001\u0000\u0000\u0000"+ - "\u13d5\u13d8\u0001\u0000\u0000\u0000\u13d6\u13d4\u0001\u0000\u0000\u0000"+ - "\u13d6\u13d7\u0001\u0000\u0000\u0000\u13d7\u13f0\u0001\u0000\u0000\u0000"+ - "\u13d8\u13d6\u0001\u0000\u0000\u0000\u13d9\u13da\u0005\u0002\u0000\u0000"+ - "\u13da\u13db\u0003\u00e4r\u0000\u13db\u13dc\u0005\u0003\u0000\u0000\u13dc"+ - "\u13e0\u0003\u0144\u00a2\u0000\u13dd\u13df\u0003\u0120\u0090\u0000\u13de"+ - "\u13dd\u0001\u0000\u0000\u0000\u13df\u13e2\u0001\u0000\u0000\u0000\u13e0"+ - "\u13de\u0001\u0000\u0000\u0000\u13e0\u13e1\u0001\u0000\u0000\u0000\u13e1"+ - "\u13f0\u0001\u0000\u0000\u0000\u13e2\u13e0\u0001\u0000\u0000\u0000\u13e3"+ - "\u13e4\u0003\u01c0\u00e0\u0000\u13e4\u13e6\u0005\u0002\u0000\u0000\u13e5"+ - "\u13e7\u0003\u013c\u009e\u0000\u13e6\u13e5\u0001\u0000\u0000\u0000\u13e6"+ - "\u13e7\u0001\u0000\u0000\u0000\u13e7\u13e8\u0001\u0000\u0000\u0000\u13e8"+ - "\u13e9\u0005\u0003\u0000\u0000\u13e9\u13ea\u0003\u0144\u00a2\u0000\u13ea"+ - "\u13f0\u0001\u0000\u0000\u0000\u13eb\u13ec\u0005\u0002\u0000\u0000\u13ec"+ - "\u13ed\u0003\u0102\u0081\u0000\u13ed\u13ee\u0005\u0003\u0000\u0000\u13ee"+ - "\u13f0\u0001\u0000\u0000\u0000\u13ef\u13bc\u0001\u0000\u0000\u0000\u13ef"+ - "\u13d9\u0001\u0000\u0000\u0000\u13ef\u13e3\u0001\u0000\u0000\u0000\u13ef"+ - "\u13eb\u0001\u0000\u0000\u0000\u13f0\u0137\u0001\u0000\u0000\u0000\u13f1"+ - "\u13f2\u0005\u00db\u0000\u0000\u13f2\u13f3\u0003\u01c0\u00e0\u0000\u13f3"+ - "\u0139\u0001\u0000\u0000\u0000\u13f4\u13f5\u0005\u015e\u0000\u0000\u13f5"+ - "\u13f6\u0005\u0002\u0000\u0000\u13f6\u13f7\u0003\u013c\u009e\u0000\u13f7"+ - "\u13f8\u0005\u0003\u0000\u0000\u13f8\u013b\u0001\u0000\u0000\u0000\u13f9"+ - "\u13fe\u0003\u013e\u009f\u0000\u13fa\u13fb\u0005\u0004\u0000\u0000\u13fb"+ - "\u13fd\u0003\u013e\u009f\u0000\u13fc\u13fa\u0001\u0000\u0000\u0000\u13fd"+ - "\u1400\u0001\u0000\u0000\u0000\u13fe\u13fc\u0001\u0000\u0000\u0000\u13fe"+ - "\u13ff\u0001\u0000\u0000\u0000\u13ff\u013d\u0001\u0000\u0000\u0000\u1400"+ - "\u13fe\u0001\u0000\u0000\u0000\u1401\u1402\u0003\u0140\u00a0\u0000\u1402"+ - "\u1403\u0005\u01f7\u0000\u0000\u1403\u1404\u0003\u0142\u00a1\u0000\u1404"+ - "\u013f\u0001\u0000\u0000\u0000\u1405\u1408\u0003\u01c0\u00e0\u0000\u1406"+ - "\u1408\u0003\u0198\u00cc\u0000\u1407\u1405\u0001\u0000\u0000\u0000\u1407"+ - "\u1406\u0001\u0000\u0000\u0000\u1408\u0141\u0001\u0000\u0000\u0000\u1409"+ - "\u140c\u0003\u01c0\u00e0\u0000\u140a\u140c\u0003\u0198\u00cc\u0000\u140b"+ - "\u1409\u0001\u0000\u0000\u0000\u140b\u140a\u0001\u0000\u0000\u0000\u140c"+ - "\u0143\u0001\u0000\u0000\u0000\u140d\u140f\u0005\u001c\u0000\u0000\u140e"+ - "\u140d\u0001\u0000\u0000\u0000\u140e\u140f\u0001\u0000\u0000\u0000\u140f"+ - "\u1410\u0001\u0000\u0000\u0000\u1410\u1412\u0003\u01c2\u00e1\u0000\u1411"+ - "\u1413\u0003\u0130\u0098\u0000\u1412\u1411\u0001\u0000\u0000\u0000\u1412"+ - "\u1413\u0001\u0000\u0000\u0000\u1413\u1415\u0001\u0000\u0000\u0000\u1414"+ - "\u140e\u0001\u0000\u0000\u0000\u1414\u1415\u0001\u0000\u0000\u0000\u1415"+ - "\u0145\u0001\u0000\u0000\u0000\u1416\u141b\u0003\u01bc\u00de\u0000\u1417"+ - "\u1418\u0005\u0005\u0000\u0000\u1418\u141a\u0003\u01bc\u00de\u0000\u1419"+ - "\u1417\u0001\u0000\u0000\u0000\u141a\u141d\u0001\u0000\u0000\u0000\u141b"+ - "\u1419\u0001\u0000\u0000\u0000\u141b\u141c\u0001\u0000\u0000\u0000\u141c"+ - "\u0147\u0001\u0000\u0000\u0000\u141d\u141b\u0001\u0000\u0000\u0000\u141e"+ - "\u1423\u0003\u014a\u00a5\u0000\u141f\u1420\u0005\u0004\u0000\u0000\u1420"+ - "\u1422\u0003\u014a\u00a5\u0000\u1421\u141f\u0001\u0000\u0000\u0000\u1422"+ - "\u1425\u0001\u0000\u0000\u0000\u1423\u1421\u0001\u0000\u0000\u0000\u1423"+ - "\u1424\u0001\u0000\u0000\u0000\u1424\u0149\u0001\u0000\u0000\u0000\u1425"+ - "\u1423\u0001\u0000\u0000\u0000\u1426\u1429\u0003\u01c0\u00e0\u0000\u1427"+ - "\u1428\u0005Q\u0000\u0000\u1428\u142a\u0005\u0211\u0000\u0000\u1429\u1427"+ - "\u0001\u0000\u0000\u0000\u1429\u142a\u0001\u0000\u0000\u0000\u142a\u014b"+ - "\u0001\u0000\u0000\u0000\u142b\u1430\u0003\u014e\u00a7\u0000\u142c\u142d"+ - "\u0005\u0004\u0000\u0000\u142d\u142f\u0003\u014e\u00a7\u0000\u142e\u142c"+ - "\u0001\u0000\u0000\u0000\u142f\u1432\u0001\u0000\u0000\u0000\u1430\u142e"+ - "\u0001\u0000\u0000\u0000\u1430\u1431\u0001\u0000\u0000\u0000\u1431\u014d"+ - "\u0001\u0000\u0000\u0000\u1432\u1430\u0001\u0000\u0000\u0000\u1433\u1434"+ - "\u0003\u01c0\u00e0\u0000\u1434\u1436\u0003\u01a6\u00d3\u0000\u1435\u1437"+ - "\u0005\u00f4\u0000\u0000\u1436\u1435\u0001\u0000\u0000\u0000\u1436\u1437"+ - "\u0001\u0000\u0000\u0000\u1437\u1439\u0001\u0000\u0000\u0000\u1438\u143a"+ - "\u0003\u0168\u00b4\u0000\u1439\u1438\u0001\u0000\u0000\u0000\u1439\u143a"+ - "\u0001\u0000\u0000\u0000\u143a\u1444\u0001\u0000\u0000\u0000\u143b\u143c"+ - "\u0005\u00c1\u0000\u0000\u143c\u143e\u0005\"\u0000\u0000\u143d\u143b\u0001"+ - "\u0000\u0000\u0000\u143d\u143e\u0001\u0000\u0000\u0000\u143e\u143f\u0001"+ - "\u0000\u0000\u0000\u143f\u1440\u0005\u001c\u0000\u0000\u1440\u1441\u0005"+ - "\u0002\u0000\u0000\u1441\u1442\u0003\u0172\u00b9\u0000\u1442\u1443\u0005"+ - "\u0003\u0000\u0000\u1443\u1445\u0001\u0000\u0000\u0000\u1444\u143d\u0001"+ - "\u0000\u0000\u0000\u1444\u1445\u0001\u0000\u0000\u0000\u1445\u144a\u0001"+ - "\u0000\u0000\u0000\u1446\u1448\u0005\u012f\u0000\u0000\u1447\u1446\u0001"+ - "\u0000\u0000\u0000\u1447\u1448\u0001\u0000\u0000\u0000\u1448\u1449\u0001"+ - "\u0000\u0000\u0000\u1449\u144b\u0005\u0130\u0000\u0000\u144a\u1447\u0001"+ - "\u0000\u0000\u0000\u144a\u144b\u0001\u0000\u0000\u0000\u144b\u1453\u0001"+ - "\u0000\u0000\u0000\u144c\u1451\u0005!\u0000\u0000\u144d\u144e\u0005\u0002"+ - "\u0000\u0000\u144e\u144f\u0003\u01c6\u00e3\u0000\u144f\u1450\u0005\u0003"+ - "\u0000\u0000\u1450\u1452\u0001\u0000\u0000\u0000\u1451\u144d\u0001\u0000"+ - "\u0000\u0000\u1451\u1452\u0001\u0000\u0000\u0000\u1452\u1454\u0001\u0000"+ - "\u0000\u0000\u1453\u144c\u0001\u0000\u0000\u0000\u1453\u1454\u0001\u0000"+ - "\u0000\u0000\u1454\u146d\u0001\u0000\u0000\u0000\u1455\u146b\u0005|\u0000"+ - "\u0000\u1456\u146c\u0005\u0130\u0000\u0000\u1457\u1459\u0005\u01ff\u0000"+ - "\u0000\u1458\u1457\u0001\u0000\u0000\u0000\u1458\u1459\u0001\u0000\u0000"+ - "\u0000\u1459\u145a\u0001\u0000\u0000\u0000\u145a\u146c\u0005\u0216\u0000"+ - "\u0000\u145b\u145d\u0005\u01ff\u0000\u0000\u145c\u145b\u0001\u0000\u0000"+ - "\u0000\u145c\u145d\u0001\u0000\u0000\u0000\u145d\u145e\u0001\u0000\u0000"+ - "\u0000\u145e\u146c\u0005\u0218\u0000\u0000\u145f\u146c\u0005\u014e\u0000"+ - "\u0000\u1460\u146c\u0005\u0094\u0000\u0000\u1461\u146c\u0005/\u0000\u0000"+ - "\u1462\u146c\u0005\u0211\u0000\u0000\u1463\u146c\u0005j\u0000\u0000\u1464"+ - "\u1469\u0005l\u0000\u0000\u1465\u1466\u0005\u0002\u0000\u0000\u1466\u1467"+ - "\u0003\u01c6\u00e3\u0000\u1467\u1468\u0005\u0003\u0000\u0000\u1468\u146a"+ - "\u0001\u0000\u0000\u0000\u1469\u1465\u0001\u0000\u0000\u0000\u1469\u146a"+ - "\u0001\u0000\u0000\u0000\u146a\u146c\u0001\u0000\u0000\u0000\u146b\u1456"+ - "\u0001\u0000\u0000\u0000\u146b\u1458\u0001\u0000\u0000\u0000\u146b\u145c"+ - "\u0001\u0000\u0000\u0000\u146b\u145f\u0001\u0000\u0000\u0000\u146b\u1460"+ - "\u0001\u0000\u0000\u0000\u146b\u1461\u0001\u0000\u0000\u0000\u146b\u1462"+ - "\u0001\u0000\u0000\u0000\u146b\u1463\u0001\u0000\u0000\u0000\u146b\u1464"+ - "\u0001\u0000\u0000\u0000\u146c\u146e\u0001\u0000\u0000\u0000\u146d\u1455"+ - "\u0001\u0000\u0000\u0000\u146d\u146e\u0001\u0000\u0000\u0000\u146e\u1478"+ - "\u0001\u0000\u0000\u0000\u146f\u1470\u0005\u0135\u0000\u0000\u1470\u1471"+ - "\u0005\u01da\u0000\u0000\u1471\u1476\u0005l\u0000\u0000\u1472\u1473\u0005"+ - "\u0002\u0000\u0000\u1473\u1474\u0003\u01c6\u00e3\u0000\u1474\u1475\u0005"+ - "\u0003\u0000\u0000\u1475\u1477\u0001\u0000\u0000\u0000\u1476\u1472\u0001"+ - "\u0000\u0000\u0000\u1476\u1477\u0001\u0000\u0000\u0000\u1477\u1479\u0001"+ - "\u0000\u0000\u0000\u1478\u146f\u0001\u0000\u0000\u0000\u1478\u1479\u0001"+ - "\u0000\u0000\u0000\u1479\u147c\u0001\u0000\u0000\u0000\u147a\u147b\u0005"+ - "Q\u0000\u0000\u147b\u147d\u0005\u0211\u0000\u0000\u147c\u147a\u0001\u0000"+ - "\u0000\u0000\u147c\u147d\u0001\u0000\u0000\u0000\u147d\u014f\u0001\u0000"+ - "\u0000\u0000\u147e\u1483\u0003\u0152\u00a9\u0000\u147f\u1480\u0005\u0004"+ - "\u0000\u0000\u1480\u1482\u0003\u0152\u00a9\u0000\u1481\u147f\u0001\u0000"+ - "\u0000\u0000\u1482\u1485\u0001\u0000\u0000\u0000\u1483\u1481\u0001\u0000"+ - "\u0000\u0000\u1483\u1484\u0001\u0000\u0000\u0000\u1484\u0151\u0001\u0000"+ - "\u0000\u0000\u1485\u1483\u0001\u0000\u0000\u0000\u1486\u148a\u0005\u00db"+ - "\u0000\u0000\u1487\u1488\u0005\u00d6\u0000\u0000\u1488\u1489\u0005\u012f"+ - "\u0000\u0000\u1489\u148b\u0005\u00a4\u0000\u0000\u148a\u1487\u0001\u0000"+ - "\u0000\u0000\u148a\u148b\u0001\u0000\u0000\u0000\u148b\u148c\u0001\u0000"+ - "\u0000\u0000\u148c\u148d\u0003\u01c0\u00e0\u0000\u148d\u1490\u0003\u0130"+ - "\u0098\u0000\u148e\u148f\u0005\u01de\u0000\u0000\u148f\u1491\u0007\b\u0000"+ - "\u0000\u1490\u148e\u0001\u0000\u0000\u0000\u1490\u1491\u0001\u0000\u0000"+ - "\u0000\u1491\u1497\u0001\u0000\u0000\u0000\u1492\u1493\u0005\u015e\u0000"+ - "\u0000\u1493\u1494\u0005\u0002\u0000\u0000\u1494\u1495\u0003\u013c\u009e"+ - "\u0000\u1495\u1496\u0005\u0003\u0000\u0000\u1496\u1498\u0001\u0000\u0000"+ - "\u0000\u1497\u1492\u0001\u0000\u0000\u0000\u1497\u1498\u0001\u0000\u0000"+ - "\u0000\u1498\u149b\u0001\u0000\u0000\u0000\u1499\u149a\u0005Q\u0000\u0000"+ - "\u149a\u149c\u0005\u0211\u0000\u0000\u149b\u1499\u0001\u0000\u0000\u0000"+ - "\u149b\u149c\u0001\u0000\u0000\u0000\u149c\u0153\u0001\u0000\u0000\u0000"+ - "\u149d\u14a2\u0003\u0156\u00ab\u0000\u149e\u149f\u0005\u0004\u0000\u0000"+ - "\u149f\u14a1\u0003\u0156\u00ab\u0000\u14a0\u149e\u0001\u0000\u0000\u0000"+ - "\u14a1\u14a4\u0001\u0000\u0000\u0000\u14a2\u14a0\u0001\u0000\u0000\u0000"+ - "\u14a2\u14a3\u0001\u0000\u0000\u0000\u14a3\u0155\u0001\u0000\u0000\u0000"+ - "\u14a4\u14a2\u0001\u0000\u0000\u0000\u14a5\u14aa\u0003\u0158\u00ac\u0000"+ - "\u14a6\u14aa\u0003\u015a\u00ad\u0000\u14a7\u14aa\u0003\u015c\u00ae\u0000"+ - "\u14a8\u14aa\u0003\u015e\u00af\u0000\u14a9\u14a5\u0001\u0000\u0000\u0000"+ - "\u14a9\u14a6\u0001\u0000\u0000\u0000\u14a9\u14a7\u0001\u0000\u0000\u0000"+ - "\u14a9\u14a8\u0001\u0000\u0000\u0000\u14aa\u14af\u0001\u0000\u0000\u0000"+ - "\u14ab\u14ac\u0005\u0002\u0000\u0000\u14ac\u14ad\u0003\u013c\u009e\u0000"+ - "\u14ad\u14ae\u0005\u0003\u0000\u0000\u14ae\u14b0\u0001\u0000\u0000\u0000"+ - "\u14af\u14ab\u0001\u0000\u0000\u0000\u14af\u14b0\u0001\u0000\u0000\u0000"+ - "\u14b0\u0157\u0001\u0000\u0000\u0000\u14b1\u14b5\u0005\u0141\u0000\u0000"+ - "\u14b2\u14b3\u0005\u00d6\u0000\u0000\u14b3\u14b4\u0005\u012f\u0000\u0000"+ - "\u14b4\u14b6\u0005\u00a4\u0000\u0000\u14b5\u14b2\u0001\u0000\u0000\u0000"+ - "\u14b5\u14b6\u0001\u0000\u0000\u0000\u14b6\u14b7\u0001\u0000\u0000\u0000"+ - "\u14b7\u14b8\u0003\u01c0\u00e0\u0000\u14b8\u14b9\u0005\u01e0\u0000\u0000"+ - "\u14b9\u14ba\u0005\u00fe\u0000\u0000\u14ba\u14bd\u0005\u01c1\u0000\u0000"+ - "\u14bb\u14be\u0005\u011a\u0000\u0000\u14bc\u14be\u0003\u0160\u00b0\u0000"+ - "\u14bd\u14bb\u0001\u0000\u0000\u0000\u14bd\u14bc\u0001\u0000\u0000\u0000"+ - "\u14be\u0159\u0001\u0000\u0000\u0000\u14bf\u14c3\u0005\u0141\u0000\u0000"+ - "\u14c0\u14c1\u0005\u00d6\u0000\u0000\u14c1\u14c2\u0005\u012f\u0000\u0000"+ - "\u14c2\u14c4\u0005\u00a4\u0000\u0000\u14c3\u14c0\u0001\u0000\u0000\u0000"+ - "\u14c3\u14c4\u0001\u0000\u0000\u0000\u14c4\u14c5\u0001\u0000\u0000\u0000"+ - "\u14c5\u14c6\u0003\u01c0\u00e0\u0000\u14c6\u14c7\u0005\u01e0\u0000\u0000"+ - "\u14c7\u14c8\u0005\u0007\u0000\u0000\u14c8\u14c9\u0003\u0160\u00b0\u0000"+ - "\u14c9\u14ca\u0005\u0004\u0000\u0000\u14ca\u14cb\u0003\u0160\u00b0\u0000"+ - "\u14cb\u14cc\u0005\u0003\u0000\u0000\u14cc\u015b\u0001\u0000\u0000\u0000"+ - "\u14cd\u14ce\u0005\u00bb\u0000\u0000\u14ce\u14cf\u0003\u0160\u00b0\u0000"+ - "\u14cf\u14d0\u0005\u01c6\u0000\u0000\u14d0\u14d1\u0003\u0160\u00b0\u0000"+ - "\u14d1\u14d2\u0005\u00e5\u0000\u0000\u14d2\u14d4\u0005\u0216\u0000\u0000"+ - "\u14d3\u14d5\u0003\u01a2\u00d1\u0000\u14d4\u14d3\u0001\u0000\u0000\u0000"+ - "\u14d4\u14d5\u0001\u0000\u0000\u0000\u14d5\u015d\u0001\u0000\u0000\u0000"+ - "\u14d6\u14da\u0005\u0141\u0000\u0000\u14d7\u14d8\u0005\u00d6\u0000\u0000"+ - "\u14d8\u14d9\u0005\u012f\u0000\u0000\u14d9\u14db\u0005\u00a4\u0000\u0000"+ - "\u14da\u14d7\u0001\u0000\u0000\u0000\u14da\u14db\u0001\u0000\u0000\u0000"+ - "\u14db\u14dc\u0001\u0000\u0000\u0000\u14dc\u14ed\u0003\u01c0\u00e0\u0000"+ - "\u14dd\u14de\u0005\u01e0\u0000\u0000\u14de\u14eb\u0005\u00d9\u0000\u0000"+ - "\u14df\u14e0\u0005\u0002\u0000\u0000\u14e0\u14e5\u0003\u0160\u00b0\u0000"+ - "\u14e1\u14e2\u0005\u0004\u0000\u0000\u14e2\u14e4\u0003\u0160\u00b0\u0000"+ - "\u14e3\u14e1\u0001\u0000\u0000\u0000\u14e4\u14e7\u0001\u0000\u0000\u0000"+ - "\u14e5\u14e3\u0001\u0000\u0000\u0000\u14e5\u14e6\u0001\u0000\u0000\u0000"+ - "\u14e6\u14e8\u0001\u0000\u0000\u0000\u14e7\u14e5\u0001\u0000\u0000\u0000"+ - "\u14e8\u14e9\u0005\u0003\u0000\u0000\u14e9\u14ec\u0001\u0000\u0000\u0000"+ - "\u14ea\u14ec\u0003\u0160\u00b0\u0000\u14eb\u14df\u0001\u0000\u0000\u0000"+ - "\u14eb\u14ea\u0001\u0000\u0000\u0000\u14ec\u14ee\u0001\u0000\u0000\u0000"+ - "\u14ed\u14dd\u0001\u0000\u0000\u0000\u14ed\u14ee\u0001\u0000\u0000\u0000"+ - "\u14ee\u015f\u0001\u0000\u0000\u0000\u14ef\u14f0\u0005\u0002\u0000\u0000"+ - "\u14f0\u14f5\u0003\u0162\u00b1\u0000\u14f1\u14f2\u0005\u0004\u0000\u0000"+ - "\u14f2\u14f4\u0003\u0162\u00b1\u0000\u14f3\u14f1\u0001\u0000\u0000\u0000"+ - "\u14f4\u14f7\u0001\u0000\u0000\u0000\u14f5\u14f3\u0001\u0000\u0000\u0000"+ - "\u14f5\u14f6\u0001\u0000\u0000\u0000\u14f6\u14f8\u0001\u0000\u0000\u0000"+ - "\u14f7\u14f5\u0001\u0000\u0000\u0000\u14f8\u14f9\u0005\u0003\u0000\u0000"+ - "\u14f9\u0161\u0001\u0000\u0000\u0000\u14fa\u14fc\u0005\u01ff\u0000\u0000"+ - "\u14fb\u14fa\u0001\u0000\u0000\u0000\u14fb\u14fc\u0001\u0000\u0000\u0000"+ - "\u14fc\u14fd\u0001\u0000\u0000\u0000\u14fd\u1502\u0005\u0216\u0000\u0000"+ - "\u14fe\u1502\u0005\u0211\u0000\u0000\u14ff\u1502\u0005\u011a\u0000\u0000"+ - "\u1500\u1502\u0005\u0130\u0000\u0000\u1501\u14fb\u0001\u0000\u0000\u0000"+ - "\u1501\u14fe\u0001\u0000\u0000\u0000\u1501\u14ff\u0001\u0000\u0000\u0000"+ - "\u1501\u1500\u0001\u0000\u0000\u0000\u1502\u0163\u0001\u0000\u0000\u0000"+ - "\u1503\u1508\u0003\u0166\u00b3\u0000\u1504\u1505\u0005\u0004\u0000\u0000"+ - "\u1505\u1507\u0003\u0166\u00b3\u0000\u1506\u1504\u0001\u0000\u0000\u0000"+ - "\u1507\u150a\u0001\u0000\u0000\u0000\u1508\u1506\u0001\u0000\u0000\u0000"+ - "\u1508\u1509\u0001\u0000\u0000\u0000\u1509\u0165\u0001\u0000\u0000\u0000"+ - "\u150a\u1508\u0001\u0000\u0000\u0000\u150b\u150c\u0003\u01c0\u00e0\u0000"+ - "\u150c\u1510\u0003\u0130\u0098\u0000\u150d\u150e\u0005\u0092\u0000\u0000"+ - "\u150e\u150f\u0005\u00f4\u0000\u0000\u150f\u1511\u0003\u0130\u0098\u0000"+ - "\u1510\u150d\u0001\u0000\u0000\u0000\u1510\u1511\u0001\u0000\u0000\u0000"+ - "\u1511\u1513\u0001\u0000\u0000\u0000\u1512\u1514\u0003\u013a\u009d\u0000"+ - "\u1513\u1512\u0001\u0000\u0000\u0000\u1513\u1514\u0001\u0000\u0000\u0000"+ - "\u1514\u0167\u0001\u0000\u0000\u0000\u1515\u1516\u0007\'\u0000\u0000\u1516"+ - "\u0169\u0001\u0000\u0000\u0000\u1517\u1518\u0005\u01ba\u0000\u0000\u1518"+ - "\u1519\u0005\u0002\u0000\u0000\u1519\u151e\u0005\u0216\u0000\u0000\u151a"+ - "\u151b\u0005\u0004\u0000\u0000\u151b\u151d\u0005\u0216\u0000\u0000\u151c"+ - "\u151a\u0001\u0000\u0000\u0000\u151d\u1520\u0001\u0000\u0000\u0000\u151e"+ - "\u151c\u0001\u0000\u0000\u0000\u151e\u151f\u0001\u0000\u0000\u0000\u151f"+ - "\u1521\u0001\u0000\u0000\u0000\u1520\u151e\u0001\u0000\u0000\u0000\u1521"+ - "\u1522\u0005\u0003\u0000\u0000\u1522\u016b\u0001\u0000\u0000\u0000\u1523"+ - "\u1524\u0005\u01e0\u0000\u0000\u1524\u1529\u0003\u0178\u00bc\u0000\u1525"+ - "\u1526\u0005\u0004\u0000\u0000\u1526\u1528\u0003\u0178\u00bc\u0000\u1527"+ - "\u1525\u0001\u0000\u0000\u0000\u1528\u152b\u0001\u0000\u0000\u0000\u1529"+ - "\u1527\u0001\u0000\u0000\u0000\u1529\u152a\u0001\u0000\u0000\u0000\u152a"+ - "\u016d\u0001\u0000\u0000\u0000\u152b\u1529\u0001\u0000\u0000\u0000\u152c"+ - "\u1531\u0003\u0172\u00b9\u0000\u152d\u152f\u0005\u001c\u0000\u0000\u152e"+ - "\u152d\u0001\u0000\u0000\u0000\u152e\u152f\u0001\u0000\u0000\u0000\u152f"+ - "\u1530\u0001\u0000\u0000\u0000\u1530\u1532\u0003\u00b6[\u0000\u1531\u152e"+ - "\u0001\u0000\u0000\u0000\u1531\u1532\u0001\u0000\u0000\u0000\u1532\u016f"+ - "\u0001\u0000\u0000\u0000\u1533\u1538\u0003\u016e\u00b7\u0000\u1534\u1535"+ - "\u0005\u0004\u0000\u0000\u1535\u1537\u0003\u016e\u00b7\u0000\u1536\u1534"+ - "\u0001\u0000\u0000\u0000\u1537\u153a\u0001\u0000\u0000\u0000\u1538\u1536"+ - "\u0001\u0000\u0000\u0000\u1538\u1539\u0001\u0000\u0000\u0000\u1539\u0171"+ - "\u0001\u0000\u0000\u0000\u153a\u1538\u0001\u0000\u0000\u0000\u153b\u153e"+ - "\u0003\u0176\u00bb\u0000\u153c\u153e\u0003\u0174\u00ba\u0000\u153d\u153b"+ - "\u0001\u0000\u0000\u0000\u153d\u153c\u0001\u0000\u0000\u0000\u153e\u0173"+ - "\u0001\u0000\u0000\u0000\u153f\u1540\u0003\u01bc\u00de\u0000\u1540\u1541"+ - "\u0005\u020b\u0000\u0000\u1541\u1542\u0003\u0176\u00bb\u0000\u1542\u1550"+ - "\u0001\u0000\u0000\u0000\u1543\u1544\u0005\u0002\u0000\u0000\u1544\u1547"+ - "\u0003\u01bc\u00de\u0000\u1545\u1546\u0005\u0004\u0000\u0000\u1546\u1548"+ - "\u0003\u01bc\u00de\u0000\u1547\u1545\u0001\u0000\u0000\u0000\u1548\u1549"+ - "\u0001\u0000\u0000\u0000\u1549\u1547\u0001\u0000\u0000\u0000\u1549\u154a"+ - "\u0001\u0000\u0000\u0000\u154a\u154b\u0001\u0000\u0000\u0000\u154b\u154c"+ - "\u0005\u0003\u0000\u0000\u154c\u154d\u0005\u020b\u0000\u0000\u154d\u154e"+ - "\u0003\u0176\u00bb\u0000\u154e\u1550\u0001\u0000\u0000\u0000\u154f\u153f"+ - "\u0001\u0000\u0000\u0000\u154f\u1543\u0001\u0000\u0000\u0000\u1550\u0175"+ - "\u0001\u0000\u0000\u0000\u1551\u1552\u0006\u00bb\uffff\uffff\u0000\u1552"+ - "\u1553\u0005\u0206\u0000\u0000\u1553\u156a\u0003\u0176\u00bb\n\u1554\u1555"+ - "\u0005\u00a4\u0000\u0000\u1555\u1556\u0005\u0002\u0000\u0000\u1556\u1557"+ - "\u0003\u00e4r\u0000\u1557\u1558\u0005\u0003\u0000\u0000\u1558\u156a\u0001"+ - "\u0000\u0000\u0000\u1559\u155a\u0007(\u0000\u0000\u155a\u155b\u0005\u0002"+ - "\u0000\u0000\u155b\u155c\u0003\u017e\u00bf\u0000\u155c\u155d\u0005\u0003"+ - "\u0000\u0000\u155d\u156a\u0001\u0000\u0000\u0000\u155e\u155f\u0005\u00eb"+ - "\u0000\u0000\u155f\u1560\u0005\u0002\u0000\u0000\u1560\u1561\u0003\u017e"+ - "\u00bf\u0000\u1561\u1562\u0005\u0003\u0000\u0000\u1562\u156a\u0001\u0000"+ - "\u0000\u0000\u1563\u1565\u0003\u017e\u00bf\u0000\u1564\u1566\u0003\u017c"+ - "\u00be\u0000\u1565\u1564\u0001\u0000\u0000\u0000\u1565\u1566\u0001\u0000"+ - "\u0000\u0000\u1566\u156a\u0001\u0000\u0000\u0000\u1567\u1568\u0005\u012f"+ - "\u0000\u0000\u1568\u156a\u0003\u0176\u00bb\u0005\u1569\u1551\u0001\u0000"+ - "\u0000\u0000\u1569\u1554\u0001\u0000\u0000\u0000\u1569\u1559\u0001\u0000"+ - "\u0000\u0000\u1569\u155e\u0001\u0000\u0000\u0000\u1569\u1563\u0001\u0000"+ - "\u0000\u0000\u1569\u1567\u0001\u0000\u0000\u0000\u156a\u1579\u0001\u0000"+ - "\u0000\u0000\u156b\u156c\n\u0004\u0000\u0000\u156c\u156d\u0007)\u0000"+ - "\u0000\u156d\u1578\u0003\u0176\u00bb\u0005\u156e\u156f\n\u0003\u0000\u0000"+ - "\u156f\u1570\u0005\u01f5\u0000\u0000\u1570\u1578\u0003\u0176\u00bb\u0004"+ - "\u1571\u1572\n\u0002\u0000\u0000\u1572\u1573\u0005\u0139\u0000\u0000\u1573"+ - "\u1578\u0003\u0176\u00bb\u0003\u1574\u1575\n\u0001\u0000\u0000\u1575\u1576"+ - "\u0005\u0208\u0000\u0000\u1576\u1578\u0003\u0176\u00bb\u0002\u1577\u156b"+ - "\u0001\u0000\u0000\u0000\u1577\u156e\u0001\u0000\u0000\u0000\u1577\u1571"+ - "\u0001\u0000\u0000\u0000\u1577\u1574\u0001\u0000\u0000\u0000\u1578\u157b"+ - "\u0001\u0000\u0000\u0000\u1579\u1577\u0001\u0000\u0000\u0000\u1579\u157a"+ - "\u0001\u0000\u0000\u0000\u157a\u0177\u0001\u0000\u0000\u0000\u157b\u1579"+ - "\u0001\u0000\u0000\u0000\u157c\u1585\u0005\u0002\u0000\u0000\u157d\u1582"+ - "\u0003\u017a\u00bd\u0000\u157e\u157f\u0005\u0004\u0000\u0000\u157f\u1581"+ - "\u0003\u017a\u00bd\u0000\u1580\u157e\u0001\u0000\u0000\u0000\u1581\u1584"+ - "\u0001\u0000\u0000\u0000\u1582\u1580\u0001\u0000\u0000\u0000\u1582\u1583"+ - "\u0001\u0000\u0000\u0000\u1583\u1586\u0001\u0000\u0000\u0000\u1584\u1582"+ - "\u0001\u0000\u0000\u0000\u1585\u157d\u0001\u0000\u0000\u0000\u1585\u1586"+ - "\u0001\u0000\u0000\u0000\u1586\u1587\u0001\u0000\u0000\u0000\u1587\u1588"+ - "\u0005\u0003\u0000\u0000\u1588\u0179\u0001\u0000\u0000\u0000\u1589\u158d"+ - "\u0003\u0198\u00cc\u0000\u158a\u158d\u0005|\u0000\u0000\u158b\u158d\u0003"+ - "\u016e\u00b7\u0000\u158c\u1589\u0001\u0000\u0000\u0000\u158c\u158a\u0001"+ - "\u0000\u0000\u0000\u158c\u158b\u0001\u0000\u0000\u0000\u158d\u017b\u0001"+ - "\u0000\u0000\u0000\u158e\u1590\u0005\u012f\u0000\u0000\u158f\u158e\u0001"+ - "\u0000\u0000\u0000\u158f\u1590\u0001\u0000\u0000\u0000\u1590\u1591\u0001"+ - "\u0000\u0000\u0000\u1591\u1592\u0005(\u0000\u0000\u1592\u1593\u0003\u017e"+ - "\u00bf\u0000\u1593\u1594\u0005\u0018\u0000\u0000\u1594\u1595\u0003\u017e"+ - "\u00bf\u0000\u1595\u15c2\u0001\u0000\u0000\u0000\u1596\u1598\u0005\u012f"+ - "\u0000\u0000\u1597\u1596\u0001\u0000\u0000\u0000\u1597\u1598\u0001\u0000"+ - "\u0000\u0000\u1598\u1599\u0001\u0000\u0000\u0000\u1599\u159a\u0007*\u0000"+ - "\u0000\u159a\u15c2\u0003\u017e\u00bf\u0000\u159b\u159d\u0005\u012f\u0000"+ - "\u0000\u159c\u159b\u0001\u0000\u0000\u0000\u159c\u159d\u0001\u0000\u0000"+ - "\u0000\u159d\u159e\u0001\u0000\u0000\u0000\u159e\u159f\u0007+\u0000\u0000"+ - "\u159f\u15c2\u0003\u017e\u00bf\u0000\u15a0\u15a2\u0005\u012f\u0000\u0000"+ - "\u15a1\u15a0\u0001\u0000\u0000\u0000\u15a1\u15a2\u0001\u0000\u0000\u0000"+ - "\u15a2\u15a3\u0001\u0000\u0000\u0000\u15a3\u15a4\u0005\u00d9\u0000\u0000"+ - "\u15a4\u15a5\u0005\u0002\u0000\u0000\u15a5\u15a6\u0003\u00e4r\u0000\u15a6"+ - "\u15a7\u0005\u0003\u0000\u0000\u15a7\u15c2\u0001\u0000\u0000\u0000\u15a8"+ - "\u15aa\u0005\u012f\u0000\u0000\u15a9\u15a8\u0001\u0000\u0000\u0000\u15a9"+ - "\u15aa\u0001\u0000\u0000\u0000\u15aa\u15ab\u0001\u0000\u0000\u0000\u15ab"+ - "\u15ac\u0005\u00d9\u0000\u0000\u15ac\u15ad\u0005\u0002\u0000\u0000\u15ad"+ - "\u15b2\u0003\u0172\u00b9\u0000\u15ae\u15af\u0005\u0004\u0000\u0000\u15af"+ - "\u15b1\u0003\u0172\u00b9\u0000\u15b0\u15ae\u0001\u0000\u0000\u0000\u15b1"+ - "\u15b4\u0001\u0000\u0000\u0000\u15b2\u15b0\u0001\u0000\u0000\u0000\u15b2"+ - "\u15b3\u0001\u0000\u0000\u0000\u15b3\u15b5\u0001\u0000\u0000\u0000\u15b4"+ - "\u15b2\u0001\u0000\u0000\u0000\u15b5\u15b6\u0005\u0003\u0000\u0000\u15b6"+ - "\u15c2\u0001\u0000\u0000\u0000\u15b7\u15b9\u0005\u00ea\u0000\u0000\u15b8"+ - "\u15ba\u0005\u012f\u0000\u0000\u15b9\u15b8\u0001\u0000\u0000\u0000\u15b9"+ - "\u15ba\u0001\u0000\u0000\u0000\u15ba\u15bb\u0001\u0000\u0000\u0000\u15bb"+ - "\u15c2\u0005\u0130\u0000\u0000\u15bc\u15be\u0005\u00ea\u0000\u0000\u15bd"+ - "\u15bf\u0005\u012f\u0000\u0000\u15be\u15bd\u0001\u0000\u0000\u0000\u15be"+ - "\u15bf\u0001\u0000\u0000\u0000\u15bf\u15c0\u0001\u0000\u0000\u0000\u15c0"+ - "\u15c2\u0007,\u0000\u0000\u15c1\u158f\u0001\u0000\u0000\u0000\u15c1\u1597"+ - "\u0001\u0000\u0000\u0000\u15c1\u159c\u0001\u0000\u0000\u0000\u15c1\u15a1"+ - "\u0001\u0000\u0000\u0000\u15c1\u15a9\u0001\u0000\u0000\u0000\u15c1\u15b7"+ - "\u0001\u0000\u0000\u0000\u15c1\u15bc\u0001\u0000\u0000\u0000\u15c2\u017d"+ - "\u0001\u0000\u0000\u0000\u15c3\u15c4\u0006\u00bf\uffff\uffff\u0000\u15c4"+ - "\u15c8\u0003\u0180\u00c0\u0000\u15c5\u15c6\u0007-\u0000\u0000\u15c6\u15c8"+ - "\u0003\u017e\u00bf\u0007\u15c7\u15c3\u0001\u0000\u0000\u0000\u15c7\u15c5"+ - "\u0001\u0000\u0000\u0000\u15c8\u15de\u0001\u0000\u0000\u0000\u15c9\u15ca"+ - "\n\u0006\u0000\u0000\u15ca\u15cb\u0005\u0209\u0000\u0000\u15cb\u15dd\u0003"+ - "\u017e\u00bf\u0007\u15cc\u15cd\n\u0005\u0000\u0000\u15cd\u15ce\u0007."+ - "\u0000\u0000\u15ce\u15dd\u0003\u017e\u00bf\u0006\u15cf\u15d0\n\u0004\u0000"+ - "\u0000\u15d0\u15d1\u0007/\u0000\u0000\u15d1\u15dd\u0003\u017e\u00bf\u0005"+ - "\u15d2\u15d3\n\u0003\u0000\u0000\u15d3\u15d4\u0005\u0204\u0000\u0000\u15d4"+ - "\u15dd\u0003\u017e\u00bf\u0004\u15d5\u15d6\n\u0002\u0000\u0000\u15d6\u15d7"+ - "\u0005\u0207\u0000\u0000\u15d7\u15dd\u0003\u017e\u00bf\u0003\u15d8\u15d9"+ - "\n\u0001\u0000\u0000\u15d9\u15da\u0003\u019a\u00cd\u0000\u15da\u15db\u0003"+ - "\u017e\u00bf\u0002\u15db\u15dd\u0001\u0000\u0000\u0000\u15dc\u15c9\u0001"+ - "\u0000\u0000\u0000\u15dc\u15cc\u0001\u0000\u0000\u0000\u15dc\u15cf\u0001"+ - "\u0000\u0000\u0000\u15dc\u15d2\u0001\u0000\u0000\u0000\u15dc\u15d5\u0001"+ - "\u0000\u0000\u0000\u15dc\u15d8\u0001\u0000\u0000\u0000\u15dd\u15e0\u0001"+ - "\u0000\u0000\u0000\u15de\u15dc\u0001\u0000\u0000\u0000\u15de\u15df\u0001"+ - "\u0000\u0000\u0000\u15df\u017f\u0001\u0000\u0000\u0000\u15e0\u15de\u0001"+ - "\u0000\u0000\u0000\u15e1\u15e2\u0006\u00c0\uffff\uffff\u0000\u15e2\u1660"+ - "\u0005j\u0000\u0000\u15e3\u1660\u0005k\u0000\u0000\u15e4\u1660\u0005l"+ - "\u0000\u0000\u15e5\u1660\u0005\u0107\u0000\u0000\u15e6\u1660\u0005\u0108"+ - "\u0000\u0000\u15e7\u1660\u0005m\u0000\u0000\u15e8\u1660\u0005\u0198\u0000"+ - "\u0000\u15e9\u15eb\u0005@\u0000\u0000\u15ea\u15ec\u0003\u019e\u00cf\u0000"+ - "\u15eb\u15ea\u0001\u0000\u0000\u0000\u15ec\u15ed\u0001\u0000\u0000\u0000"+ - "\u15ed\u15eb\u0001\u0000\u0000\u0000\u15ed\u15ee\u0001\u0000\u0000\u0000"+ - "\u15ee\u15f1\u0001\u0000\u0000\u0000\u15ef\u15f0\u0005\u0095\u0000\u0000"+ - "\u15f0\u15f2\u0003\u0172\u00b9\u0000\u15f1\u15ef\u0001\u0000\u0000\u0000"+ - "\u15f1\u15f2\u0001\u0000\u0000\u0000\u15f2\u15f3\u0001\u0000\u0000\u0000"+ - "\u15f3\u15f4\u0005\u0099\u0000\u0000\u15f4\u1660\u0001\u0000\u0000\u0000"+ - "\u15f5\u15f6\u0005@\u0000\u0000\u15f6\u15f8\u0003\u0172\u00b9\u0000\u15f7"+ - "\u15f9\u0003\u019e\u00cf\u0000\u15f8\u15f7\u0001\u0000\u0000\u0000\u15f9"+ - "\u15fa\u0001\u0000\u0000\u0000\u15fa\u15f8\u0001\u0000\u0000\u0000\u15fa"+ - "\u15fb\u0001\u0000\u0000\u0000\u15fb\u15fe\u0001\u0000\u0000\u0000\u15fc"+ - "\u15fd\u0005\u0095\u0000\u0000\u15fd\u15ff\u0003\u0172\u00b9\u0000\u15fe"+ - "\u15fc\u0001\u0000\u0000\u0000\u15fe\u15ff\u0001\u0000\u0000\u0000\u15ff"+ - "\u1600\u0001\u0000\u0000\u0000\u1600\u1601\u0005\u0099\u0000\u0000\u1601"+ - "\u1660\u0001\u0000\u0000\u0000\u1602\u1603\u0005A\u0000\u0000\u1603\u1604"+ - "\u0005\u0002\u0000\u0000\u1604\u1605\u0003\u0172\u00b9\u0000\u1605\u1606"+ - "\u0005\u001c\u0000\u0000\u1606\u1607\u0003\u0184\u00c2\u0000\u1607\u1608"+ - "\u0005\u0003\u0000\u0000\u1608\u1660\u0001\u0000\u0000\u0000\u1609\u1660"+ - "\u0003\u0198\u00cc\u0000\u160a\u1660\u0003\u01a0\u00d0\u0000\u160b\u160f"+ - "\u0005\u0200\u0000\u0000\u160c\u160e\u0003\u0182\u00c1\u0000\u160d\u160c"+ - "\u0001\u0000\u0000\u0000\u160e\u1611\u0001\u0000\u0000\u0000\u160f\u160d"+ - "\u0001\u0000\u0000\u0000\u160f\u1610\u0001\u0000\u0000\u0000\u1610\u1660"+ - "\u0001\u0000\u0000\u0000\u1611\u160f\u0001\u0000\u0000\u0000\u1612\u1613"+ - "\u0003\u0194\u00ca\u0000\u1613\u1614\u0005\u0005\u0000\u0000\u1614\u1618"+ - "\u0005\u0200\u0000\u0000\u1615\u1617\u0003\u0182\u00c1\u0000\u1616\u1615"+ - "\u0001\u0000\u0000\u0000\u1617\u161a\u0001\u0000\u0000\u0000\u1618\u1616"+ - "\u0001\u0000\u0000\u0000\u1618\u1619\u0001\u0000\u0000\u0000\u1619\u1660"+ - "\u0001\u0000\u0000\u0000\u161a\u1618\u0001\u0000\u0000\u0000\u161b\u161c"+ - "\u0005E\u0000\u0000\u161c\u161d\u0005\u0002\u0000\u0000\u161d\u1622\u0003"+ - "\u0172\u00b9\u0000\u161e\u161f\u0005\u0004\u0000\u0000\u161f\u1621\u0003"+ - "\u0172\u00b9\u0000\u1620\u161e\u0001\u0000\u0000\u0000\u1621\u1624\u0001"+ - "\u0000\u0000\u0000\u1622\u1620\u0001\u0000\u0000\u0000\u1622\u1623\u0001"+ - "\u0000\u0000\u0000\u1623\u1627\u0001\u0000\u0000\u0000\u1624\u1622\u0001"+ - "\u0000\u0000\u0000\u1625\u1626\u0005\u01de\u0000\u0000\u1626\u1628\u0003"+ - "\u00b6[\u0000\u1627\u1625\u0001\u0000\u0000\u0000\u1627\u1628\u0001\u0000"+ - "\u0000\u0000\u1628\u1629\u0001\u0000\u0000\u0000\u1629\u162a\u0005\u0003"+ - "\u0000\u0000\u162a\u1660\u0001\u0000\u0000\u0000\u162b\u162c\u0005_\u0000"+ - "\u0000\u162c\u162d\u0005\u0002\u0000\u0000\u162d\u162e\u0003\u0172\u00b9"+ - "\u0000\u162e\u162f\u0005\u01de\u0000\u0000\u162f\u1630\u0003\u00b6[\u0000"+ - "\u1630\u1631\u0005\u0003\u0000\u0000\u1631\u1660\u0001\u0000\u0000\u0000"+ - "\u1632\u1633\u0005_\u0000\u0000\u1633\u1634\u0005\u0002\u0000\u0000\u1634"+ - "\u1635\u0003\u0172\u00b9\u0000\u1635\u1636\u0005\u0004\u0000\u0000\u1636"+ - "\u1637\u0003\u0184\u00c2\u0000\u1637\u1638\u0005\u0003\u0000\u0000\u1638"+ - "\u1660\u0001\u0000\u0000\u0000\u1639\u1660\u0003\u0186\u00c3\u0000\u163a"+ - "\u163b\u0005\u0002\u0000\u0000\u163b\u163c\u0003\u00e4r\u0000\u163c\u163d"+ - "\u0005\u0003\u0000\u0000\u163d\u1660\u0001\u0000\u0000\u0000\u163e\u163f"+ - "\u0005\u020f\u0000\u0000\u163f\u1660\u0003\u00b6[\u0000\u1640\u1643\u0005"+ - "\u0210\u0000\u0000\u1641\u1642\u00070\u0000\u0000\u1642\u1644\u0005\u0005"+ - "\u0000\u0000\u1643\u1641\u0001\u0000\u0000\u0000\u1643\u1644\u0001\u0000"+ - "\u0000\u0000\u1644\u1645\u0001\u0000\u0000\u0000\u1645\u1660\u0003\u01c0"+ - "\u00e0\u0000\u1646\u1648\u0005+\u0000\u0000\u1647\u1646\u0001\u0000\u0000"+ - "\u0000\u1647\u1648\u0001\u0000\u0000\u0000\u1648\u1649\u0001\u0000\u0000"+ - "\u0000\u1649\u1660\u0003\u01c0\u00e0\u0000\u164a\u164b\u0005\u0002\u0000"+ - "\u0000\u164b\u164c\u0003\u0172\u00b9\u0000\u164c\u164d\u0005\u0003\u0000"+ - "\u0000\u164d\u1660\u0001\u0000\u0000\u0000\u164e\u1652\u0005\u00f4\u0000"+ - "\u0000\u164f\u1650\u0003\u01c0\u00e0\u0000\u1650\u1651\u0005\u0005\u0000"+ - "\u0000\u1651\u1653\u0001\u0000\u0000\u0000\u1652\u164f\u0001\u0000\u0000"+ - "\u0000\u1652\u1653\u0001\u0000\u0000\u0000\u1653\u1654\u0001\u0000\u0000"+ - "\u0000\u1654\u1660\u0003\u01c0\u00e0\u0000\u1655\u1656\u0005\u00aa\u0000"+ - "\u0000\u1656\u1657\u0005\u0002\u0000\u0000\u1657\u1658\u0003\u01c0\u00e0"+ - "\u0000\u1658\u165a\u0005\u00bb\u0000\u0000\u1659\u165b\u00071\u0000\u0000"+ - "\u165a\u1659\u0001\u0000\u0000\u0000\u165a\u165b\u0001\u0000\u0000\u0000"+ - "\u165b\u165c\u0001\u0000\u0000\u0000\u165c\u165d\u0003\u017e\u00bf\u0000"+ - "\u165d\u165e\u0005\u0003\u0000\u0000\u165e\u1660\u0001\u0000\u0000\u0000"+ - "\u165f\u15e1\u0001\u0000\u0000\u0000\u165f\u15e3\u0001\u0000\u0000\u0000"+ - "\u165f\u15e4\u0001\u0000\u0000\u0000\u165f\u15e5\u0001\u0000\u0000\u0000"+ - "\u165f\u15e6\u0001\u0000\u0000\u0000\u165f\u15e7\u0001\u0000\u0000\u0000"+ - "\u165f\u15e8\u0001\u0000\u0000\u0000\u165f\u15e9\u0001\u0000\u0000\u0000"+ - "\u165f\u15f5\u0001\u0000\u0000\u0000\u165f\u1602\u0001\u0000\u0000\u0000"+ - "\u165f\u1609\u0001\u0000\u0000\u0000\u165f\u160a\u0001\u0000\u0000\u0000"+ - "\u165f\u160b\u0001\u0000\u0000\u0000\u165f\u1612\u0001\u0000\u0000\u0000"+ - "\u165f\u161b\u0001\u0000\u0000\u0000\u165f\u162b\u0001\u0000\u0000\u0000"+ - "\u165f\u1632\u0001\u0000\u0000\u0000\u165f\u1639\u0001\u0000\u0000\u0000"+ - "\u165f\u163a\u0001\u0000\u0000\u0000\u165f\u163e\u0001\u0000\u0000\u0000"+ - "\u165f\u1640\u0001\u0000\u0000\u0000\u165f\u1647\u0001\u0000\u0000\u0000"+ - "\u165f\u164a\u0001\u0000\u0000\u0000\u165f\u164e\u0001\u0000\u0000\u0000"+ - "\u165f\u1655\u0001\u0000\u0000\u0000\u1660\u167b\u0001\u0000\u0000\u0000"+ - "\u1661\u1662\n\u000b\u0000\u0000\u1662\u1663\u0005\u0007\u0000\u0000\u1663"+ - "\u1664\u0003\u017e\u00bf\u0000\u1664\u1665\u0005\b\u0000\u0000\u1665\u167a"+ - "\u0001\u0000\u0000\u0000\u1666\u1667\n\n\u0000\u0000\u1667\u1668\u0005"+ - "\u0007\u0000\u0000\u1668\u1669\u0003\u017e\u00bf\u0000\u1669\u166b\u0005"+ - "\u020a\u0000\u0000\u166a\u166c\u0003\u017e\u00bf\u0000\u166b\u166a\u0001"+ - "\u0000\u0000\u0000\u166b\u166c\u0001\u0000\u0000\u0000\u166c\u166d\u0001"+ - "\u0000\u0000\u0000\u166d\u166e\u0005\b\u0000\u0000\u166e\u167a\u0001\u0000"+ - "\u0000\u0000\u166f\u1670\n\u0005\u0000\u0000\u1670\u1671\u0005\u0005\u0000"+ - "\u0000\u1671\u167a\u0003\u01c0\u00e0\u0000\u1672\u1673\n\u0001\u0000\u0000"+ - "\u1673\u1677\u0005K\u0000\u0000\u1674\u1678\u0003\u01c0\u00e0\u0000\u1675"+ - "\u1678\u0005\u0211\u0000\u0000\u1676\u1678\u0005|\u0000\u0000\u1677\u1674"+ - "\u0001\u0000\u0000\u0000\u1677\u1675\u0001\u0000\u0000\u0000\u1677\u1676"+ - "\u0001\u0000\u0000\u0000\u1678\u167a\u0001\u0000\u0000\u0000\u1679\u1661"+ - "\u0001\u0000\u0000\u0000\u1679\u1666\u0001\u0000\u0000\u0000\u1679\u166f"+ - "\u0001\u0000\u0000\u0000\u1679\u1672\u0001\u0000\u0000\u0000\u167a\u167d"+ - "\u0001\u0000\u0000\u0000\u167b\u1679\u0001\u0000\u0000\u0000\u167b\u167c"+ - "\u0001\u0000\u0000\u0000\u167c\u0181\u0001\u0000\u0000\u0000\u167d\u167b"+ - "\u0001\u0000\u0000\u0000\u167e\u167f\u0005\u00a1\u0000\u0000\u167f\u1680"+ - "\u0005\u0002\u0000\u0000\u1680\u1681\u0003\u0170\u00b8\u0000\u1681\u1682"+ - "\u0005\u0003\u0000\u0000\u1682\u1689\u0001\u0000\u0000\u0000\u1683\u1684"+ - "\u0005\u0176\u0000\u0000\u1684\u1685\u0005\u0002\u0000\u0000\u1685\u1686"+ - "\u0003\u0170\u00b8\u0000\u1686\u1687\u0005\u0003\u0000\u0000\u1687\u1689"+ - "\u0001\u0000\u0000\u0000\u1688\u167e\u0001\u0000\u0000\u0000\u1688\u1683"+ - "\u0001\u0000\u0000\u0000\u1689\u0183\u0001\u0000\u0000\u0000\u168a\u1690"+ - "\u0003\u01a6\u00d3\u0000\u168b\u168d\u00072\u0000\u0000\u168c\u168e\u0007"+ - "3\u0000\u0000\u168d\u168c\u0001\u0000\u0000\u0000\u168d\u168e\u0001\u0000"+ - "\u0000\u0000\u168e\u1690\u0001\u0000\u0000\u0000\u168f\u168a\u0001\u0000"+ - "\u0000\u0000\u168f\u168b\u0001\u0000\u0000\u0000\u1690\u0185\u0001\u0000"+ - "\u0000\u0000\u1691\u1692\u0003\u0188\u00c4\u0000\u1692\u16aa\u0005\u0002"+ - "\u0000\u0000\u1693\u1695\u0007#\u0000\u0000\u1694\u1693\u0001\u0000\u0000"+ - "\u0000\u1694\u1695\u0001\u0000\u0000\u0000\u1695\u1696\u0001\u0000\u0000"+ - "\u0000\u1696\u169b\u0003\u0172\u00b9\u0000\u1697\u1698\u0005\u0004\u0000"+ - "\u0000\u1698\u169a\u0003\u0172\u00b9\u0000\u1699\u1697\u0001\u0000\u0000"+ - "\u0000\u169a\u169d\u0001\u0000\u0000\u0000\u169b\u1699\u0001\u0000\u0000"+ - "\u0000\u169b\u169c\u0001\u0000\u0000\u0000\u169c\u16a8\u0001\u0000\u0000"+ - "\u0000\u169d\u169b\u0001\u0000\u0000\u0000\u169e\u169f\u0005\u013a\u0000"+ - "\u0000\u169f\u16a0\u0005;\u0000\u0000\u16a0\u16a5\u0003\u0126\u0093\u0000"+ - "\u16a1\u16a2\u0005\u0004\u0000\u0000\u16a2\u16a4\u0003\u0126\u0093\u0000"+ - "\u16a3\u16a1\u0001\u0000\u0000\u0000\u16a4\u16a7\u0001\u0000\u0000\u0000"+ - "\u16a5\u16a3\u0001\u0000\u0000\u0000\u16a5\u16a6\u0001\u0000\u0000\u0000"+ - "\u16a6\u16a9\u0001\u0000\u0000\u0000\u16a7\u16a5\u0001\u0000\u0000\u0000"+ - "\u16a8\u169e\u0001\u0000\u0000\u0000\u16a8\u16a9\u0001\u0000\u0000\u0000"+ - "\u16a9\u16ab\u0001\u0000\u0000\u0000\u16aa\u1694\u0001\u0000\u0000\u0000"+ - "\u16aa\u16ab\u0001\u0000\u0000\u0000\u16ab\u16ac\u0001\u0000\u0000\u0000"+ - "\u16ac\u16af\u0005\u0003\u0000\u0000\u16ad\u16ae\u0005\u013d\u0000\u0000"+ - "\u16ae\u16b0\u0003\u018c\u00c6\u0000\u16af\u16ad\u0001\u0000\u0000\u0000"+ - "\u16af\u16b0\u0001\u0000\u0000\u0000\u16b0\u0187\u0001\u0000\u0000\u0000"+ - "\u16b1\u16b2\u0003\u01c0\u00e0\u0000\u16b2\u16b3\u0005\u0005\u0000\u0000"+ - "\u16b3\u16b5\u0001\u0000\u0000\u0000\u16b4\u16b1\u0001\u0000\u0000\u0000"+ - "\u16b4\u16b5\u0001\u0000\u0000\u0000\u16b5\u16b6\u0001\u0000\u0000\u0000"+ - "\u16b6\u16b7\u0003\u018a\u00c5\u0000\u16b7\u0189\u0001\u0000\u0000\u0000"+ - "\u16b8\u16c9\u0003\u01c0\u00e0\u0000\u16b9\u16c9\u0005\u000e\u0000\u0000"+ - "\u16ba\u16c9\u0005[\u0000\u0000\u16bb\u16c9\u0005i\u0000\u0000\u16bc\u16c9"+ - "\u0005m\u0000\u0000\u16bd\u16c9\u0005o\u0000\u0000\u16be\u16c9\u0005\u00d6"+ - "\u0000\u0000\u16bf\u16c9\u0005\u00fd\u0000\u0000\u16c0\u16c9\u0005\u0100"+ - "\u0000\u0000\u16c1\u16c9\u0005\u0143\u0000\u0000\u16c2\u16c9\u0005\u0171"+ - "\u0000\u0000\u16c3\u16c9\u0005\u0184\u0000\u0000\u16c4\u16c9\u0005\u0191"+ - "\u0000\u0000\u16c5\u16c9\u0005\u0198\u0000\u0000\u16c6\u16c9\u0005\u01cb"+ - "\u0000\u0000\u16c7\u16c9\u0005\u01dc\u0000\u0000\u16c8\u16b8\u0001\u0000"+ - "\u0000\u0000\u16c8\u16b9\u0001\u0000\u0000\u0000\u16c8\u16ba\u0001\u0000"+ - "\u0000\u0000\u16c8\u16bb\u0001\u0000\u0000\u0000\u16c8\u16bc\u0001\u0000"+ - "\u0000\u0000\u16c8\u16bd\u0001\u0000\u0000\u0000\u16c8\u16be\u0001\u0000"+ - "\u0000\u0000\u16c8\u16bf\u0001\u0000\u0000\u0000\u16c8\u16c0\u0001\u0000"+ - "\u0000\u0000\u16c8\u16c1\u0001\u0000\u0000\u0000\u16c8\u16c2\u0001\u0000"+ - "\u0000\u0000\u16c8\u16c3\u0001\u0000\u0000\u0000\u16c8\u16c4\u0001\u0000"+ - "\u0000\u0000\u16c8\u16c5\u0001\u0000\u0000\u0000\u16c8\u16c6\u0001\u0000"+ - "\u0000\u0000\u16c8\u16c7\u0001\u0000\u0000\u0000\u16c9\u018b\u0001\u0000"+ - "\u0000\u0000\u16ca\u16cc\u0005\u0002\u0000\u0000\u16cb\u16cd\u0003\u012a"+ - "\u0095\u0000\u16cc\u16cb\u0001\u0000\u0000\u0000\u16cc\u16cd\u0001\u0000"+ - "\u0000\u0000\u16cd\u16cf\u0001\u0000\u0000\u0000\u16ce\u16d0\u0003\u0124"+ - "\u0092\u0000\u16cf\u16ce\u0001\u0000\u0000\u0000\u16cf\u16d0\u0001\u0000"+ - "\u0000\u0000\u16d0\u16d2\u0001\u0000\u0000\u0000\u16d1\u16d3\u0003\u018e"+ - "\u00c7\u0000\u16d2\u16d1\u0001\u0000\u0000\u0000\u16d2\u16d3\u0001\u0000"+ - "\u0000\u0000\u16d3\u16d4\u0001\u0000\u0000\u0000\u16d4\u16d5\u0005\u0003"+ - "\u0000\u0000\u16d5\u018d\u0001\u0000\u0000\u0000\u16d6\u16d7\u0003\u0190"+ - "\u00c8\u0000\u16d7\u16d8\u0003\u0192\u00c9\u0000\u16d8\u16e0\u0001\u0000"+ - "\u0000\u0000\u16d9\u16da\u0003\u0190\u00c8\u0000\u16da\u16db\u0005(\u0000"+ - "\u0000\u16db\u16dc\u0003\u0192\u00c9\u0000\u16dc\u16dd\u0005\u0018\u0000"+ - "\u0000\u16dd\u16de\u0003\u0192\u00c9\u0000\u16de\u16e0\u0001\u0000\u0000"+ - "\u0000\u16df\u16d6\u0001\u0000\u0000\u0000\u16df\u16d9\u0001\u0000\u0000"+ - "\u0000\u16e0\u018f\u0001\u0000\u0000\u0000\u16e1\u16e2\u00074\u0000\u0000"+ - "\u16e2\u0191\u0001\u0000\u0000\u0000\u16e3\u16e4\u0005\u01d1\u0000\u0000"+ - "\u16e4\u16eb\u00075\u0000\u0000\u16e5\u16e6\u0005h\u0000\u0000\u16e6\u16eb"+ - "\u0005\u018b\u0000\u0000\u16e7\u16e8\u0003\u0172\u00b9\u0000\u16e8\u16e9"+ - "\u00075\u0000\u0000\u16e9\u16eb\u0001\u0000\u0000\u0000\u16ea\u16e3\u0001"+ - "\u0000\u0000\u0000\u16ea\u16e5\u0001\u0000\u0000\u0000\u16ea\u16e7\u0001"+ - "\u0000\u0000\u0000\u16eb\u0193\u0001\u0000\u0000\u0000\u16ec\u16f1\u0003"+ - "\u01c0\u00e0\u0000\u16ed\u16ee\u0005\u0005\u0000\u0000\u16ee\u16f0\u0003"+ - "\u01c0\u00e0\u0000\u16ef\u16ed\u0001\u0000\u0000\u0000\u16f0\u16f3\u0001"+ - "\u0000\u0000\u0000\u16f1\u16ef\u0001\u0000\u0000\u0000\u16f1\u16f2\u0001"+ - "\u0000\u0000\u0000\u16f2\u0195\u0001\u0000\u0000\u0000\u16f3\u16f1\u0001"+ - "\u0000\u0000\u0000\u16f4\u16f6\u0005\u01be\u0000\u0000\u16f5\u16f4\u0001"+ - "\u0000\u0000\u0000\u16f5\u16f6\u0001\u0000\u0000\u0000\u16f6\u16f7\u0001"+ - "\u0000\u0000\u0000\u16f7\u16fa\u0005\u0141\u0000\u0000\u16f8\u16fb\u0003"+ - "\u01c0\u00e0\u0000\u16f9\u16fb\u0003\u0130\u0098\u0000\u16fa\u16f8\u0001"+ - "\u0000\u0000\u0000\u16fa\u16f9\u0001\u0000\u0000\u0000\u16fb\u1702\u0001"+ - "\u0000\u0000\u0000\u16fc\u16fe\u0005\u01be\u0000\u0000\u16fd\u16fc\u0001"+ - "\u0000\u0000\u0000\u16fd\u16fe\u0001\u0000\u0000\u0000\u16fe\u16ff\u0001"+ - "\u0000\u0000\u0000\u16ff\u1700\u0005\u0142\u0000\u0000\u1700\u1702\u0003"+ - "\u0130\u0098\u0000\u1701\u16f5\u0001\u0000\u0000\u0000\u1701\u16fd\u0001"+ - "\u0000\u0000\u0000\u1702\u0197\u0001\u0000\u0000\u0000\u1703\u1737\u0005"+ - "\u0130\u0000\u0000\u1704\u1705\u00076\u0000\u0000\u1705\u1737\u0005\u0211"+ - "\u0000\u0000\u1706\u1737\u0003\u01c6\u00e3\u0000\u1707\u1737\u0003\u019c"+ - "\u00ce\u0000\u1708\u170a\u0005+\u0000\u0000\u1709\u1708\u0001\u0000\u0000"+ - "\u0000\u1709\u170a\u0001\u0000\u0000\u0000\u170a\u170b\u0001\u0000\u0000"+ - "\u0000\u170b\u1737\u0005\u0211\u0000\u0000\u170c\u170e\u0005\u0007\u0000"+ - "\u0000\u170d\u170f\u0003\u0198\u00cc\u0000\u170e\u170d\u0001\u0000\u0000"+ - "\u0000\u170e\u170f\u0001\u0000\u0000\u0000\u170f\u1714\u0001\u0000\u0000"+ - "\u0000\u1710\u1711\u0005\u0004\u0000\u0000\u1711\u1713\u0003\u0198\u00cc"+ - "\u0000\u1712\u1710\u0001\u0000\u0000\u0000\u1713\u1716\u0001\u0000\u0000"+ - "\u0000\u1714\u1712\u0001\u0000\u0000\u0000\u1714\u1715\u0001\u0000\u0000"+ - "\u0000\u1715\u1717\u0001\u0000\u0000\u0000\u1716\u1714\u0001\u0000\u0000"+ - "\u0000\u1717\u1737\u0005\b\u0000\u0000\u1718\u171d\u0005\t\u0000\u0000"+ - "\u1719\u171a\u0003\u0198\u00cc\u0000\u171a\u171b\u0005\u020a\u0000\u0000"+ - "\u171b\u171c\u0003\u0198\u00cc\u0000\u171c\u171e\u0001\u0000\u0000\u0000"+ - "\u171d\u1719\u0001\u0000\u0000\u0000\u171d\u171e\u0001\u0000\u0000\u0000"+ - "\u171e\u1726\u0001\u0000\u0000\u0000\u171f\u1720\u0005\u0004\u0000\u0000"+ - "\u1720\u1721\u0003\u0198\u00cc\u0000\u1721\u1722\u0005\u020a\u0000\u0000"+ - "\u1722\u1723\u0003\u0198\u00cc\u0000\u1723\u1725\u0001\u0000\u0000\u0000"+ - "\u1724\u171f\u0001\u0000\u0000\u0000\u1725\u1728\u0001\u0000\u0000\u0000"+ - "\u1726\u1724\u0001\u0000\u0000\u0000\u1726\u1727\u0001\u0000\u0000\u0000"+ - "\u1727\u1729\u0001\u0000\u0000\u0000\u1728\u1726\u0001\u0000\u0000\u0000"+ - "\u1729\u1737\u0005\n\u0000\u0000\u172a\u172b\u0005\t\u0000\u0000\u172b"+ - "\u1730\u0003\u0198\u00cc\u0000\u172c\u172d\u0005\u0004\u0000\u0000\u172d"+ - "\u172f\u0003\u0198\u00cc\u0000\u172e\u172c\u0001\u0000\u0000\u0000\u172f"+ - "\u1732\u0001\u0000\u0000\u0000\u1730\u172e\u0001\u0000\u0000\u0000\u1730"+ - "\u1731\u0001\u0000\u0000\u0000\u1731\u1733\u0001\u0000\u0000\u0000\u1732"+ - "\u1730\u0001\u0000\u0000\u0000\u1733\u1734\u0005\n\u0000\u0000\u1734\u1737"+ - "\u0001\u0000\u0000\u0000\u1735\u1737\u0005\u014f\u0000\u0000\u1736\u1703"+ - "\u0001\u0000\u0000\u0000\u1736\u1704\u0001\u0000\u0000\u0000\u1736\u1706"+ - "\u0001\u0000\u0000\u0000\u1736\u1707\u0001\u0000\u0000\u0000\u1736\u1709"+ - "\u0001\u0000\u0000\u0000\u1736\u170c\u0001\u0000\u0000\u0000\u1736\u1718"+ - "\u0001\u0000\u0000\u0000\u1736\u172a\u0001\u0000\u0000\u0000\u1736\u1735"+ - "\u0001\u0000\u0000\u0000\u1737\u0199\u0001\u0000\u0000\u0000\u1738\u1739"+ - "\u00077\u0000\u0000\u1739\u019b\u0001\u0000\u0000\u0000\u173a\u173b\u0007"+ - ",\u0000\u0000\u173b\u019d\u0001\u0000\u0000\u0000\u173c\u173d\u0005\u01ee"+ - "\u0000\u0000\u173d\u173e\u0003\u0172\u00b9\u0000\u173e\u173f\u0005\u01c2"+ - "\u0000\u0000\u173f\u1740\u0003\u0172\u00b9\u0000\u1740\u019f\u0001\u0000"+ - "\u0000\u0000\u1741\u1742\u0005\u00e5\u0000\u0000\u1742\u1743\u0003\u0172"+ - "\u00b9\u0000\u1743\u1744\u0003\u01a2\u00d1\u0000\u1744\u01a1\u0001\u0000"+ - "\u0000\u0000\u1745\u1746\u00078\u0000\u0000\u1746\u01a3\u0001\u0000\u0000"+ - "\u0000\u1747\u174c\u0003\u01a6\u00d3\u0000\u1748\u174a\u0005\u012f\u0000"+ - "\u0000\u1749\u1748\u0001\u0000\u0000\u0000\u1749\u174a\u0001\u0000\u0000"+ - "\u0000\u174a\u174b\u0001\u0000\u0000\u0000\u174b\u174d\u0005\u0130\u0000"+ - "\u0000\u174c\u1749\u0001\u0000\u0000\u0000\u174c\u174d\u0001\u0000\u0000"+ - "\u0000\u174d\u01a5\u0001\u0000\u0000\u0000\u174e\u174f\u0005\u001b\u0000"+ - "\u0000\u174f\u1750\u0005\u01fa\u0000\u0000\u1750\u1751\u0003\u01a6\u00d3"+ - "\u0000\u1751\u1752\u0005\u01fc\u0000\u0000\u1752\u1781\u0001\u0000\u0000"+ - "\u0000\u1753\u1754\u0005\u010e\u0000\u0000\u1754\u1755\u0005\u01fa\u0000"+ - "\u0000\u1755\u1756\u0003\u01a6\u00d3\u0000\u1756\u1757\u0005\u0004\u0000"+ - "\u0000\u1757\u1758\u0003\u01a6\u00d3\u0000\u1758\u1759\u0005\u01fc\u0000"+ - "\u0000\u1759\u1781\u0001\u0000\u0000\u0000\u175a\u175b\u0005\u01b1\u0000"+ - "\u0000\u175b\u175c\u0005\u01fa\u0000\u0000\u175c\u175d\u0003\u01aa\u00d5"+ - "\u0000\u175d\u175e\u0005\u01fc\u0000\u0000\u175e\u1781\u0001\u0000\u0000"+ - "\u0000\u175f\u1760\u0005\u01e4\u0000\u0000\u1760\u1761\u0005\u01fa\u0000"+ - "\u0000\u1761\u1762\u0003\u01ae\u00d7\u0000\u1762\u1763\u0005\u01fc\u0000"+ - "\u0000\u1763\u1781\u0001\u0000\u0000\u0000\u1764\u1765\u0005\u0011\u0000"+ - "\u0000\u1765\u1766\u0005\u01fa\u0000\u0000\u1766\u1767\u0003\u018a\u00c5"+ - "\u0000\u1767\u1768\u0005\u0002\u0000\u0000\u1768\u176d\u0003\u01a4\u00d2"+ - "\u0000\u1769\u176a\u0005\u0004\u0000\u0000\u176a\u176c\u0003\u01a4\u00d2"+ - "\u0000\u176b\u1769\u0001\u0000\u0000\u0000\u176c\u176f\u0001\u0000\u0000"+ - "\u0000\u176d\u176b\u0001\u0000\u0000\u0000\u176d\u176e\u0001\u0000\u0000"+ - "\u0000\u176e\u1770\u0001\u0000\u0000\u0000\u176f\u176d\u0001\u0000\u0000"+ - "\u0000\u1770\u1771\u0005\u0003\u0000\u0000\u1771\u1772\u0005\u01fc\u0000"+ - "\u0000\u1772\u1781\u0001\u0000\u0000\u0000\u1773\u177e\u0003\u01a8\u00d4"+ - "\u0000\u1774\u1775\u0005\u0002\u0000\u0000\u1775\u177a\u00079\u0000\u0000"+ - "\u1776\u1777\u0005\u0004\u0000\u0000\u1777\u1779\u0005\u0216\u0000\u0000"+ - "\u1778\u1776\u0001\u0000\u0000\u0000\u1779\u177c\u0001\u0000\u0000\u0000"+ - "\u177a\u1778\u0001\u0000\u0000\u0000\u177a\u177b\u0001\u0000\u0000\u0000"+ - "\u177b\u177d\u0001\u0000\u0000\u0000\u177c\u177a\u0001\u0000\u0000\u0000"+ - "\u177d\u177f\u0005\u0003\u0000\u0000\u177e\u1774\u0001\u0000\u0000\u0000"+ - "\u177e\u177f\u0001\u0000\u0000\u0000\u177f\u1781\u0001\u0000\u0000\u0000"+ - "\u1780\u174e\u0001\u0000\u0000\u0000\u1780\u1753\u0001\u0000\u0000\u0000"+ - "\u1780\u175a\u0001\u0000\u0000\u0000\u1780\u175f\u0001\u0000\u0000\u0000"+ - "\u1780\u1764\u0001\u0000\u0000\u0000\u1780\u1773\u0001\u0000\u0000\u0000"+ - "\u1781\u01a7\u0001\u0000\u0000\u0000\u1782\u17a3\u0005\u01c5\u0000\u0000"+ - "\u1783\u17a3\u0005\u01a0\u0000\u0000\u1784\u17a3\u00073\u0000\u0000\u1785"+ - "\u17a3\u0005)\u0000\u0000\u1786\u17a3\u0005\u00f8\u0000\u0000\u1787\u17a3"+ - "\u00054\u0000\u0000\u1788\u17a3\u0005\u00b3\u0000\u0000\u1789\u17a3\u0005"+ - "\u008d\u0000\u0000\u178a\u17a3\u0005q\u0000\u0000\u178b\u17a3\u0005r\u0000"+ - "\u0000\u178c\u17a3\u0005\u01c3\u0000\u0000\u178d\u17a3\u0005t\u0000\u0000"+ - "\u178e\u17a3\u0005s\u0000\u0000\u178f\u17a3\u0005v\u0000\u0000\u1790\u17a3"+ - "\u0005u\u0000\u0000\u1791\u17a3\u0005.\u0000\u0000\u1792\u17a3\u0005\u0160"+ - "\u0000\u0000\u1793\u17a3\u0005\u00cf\u0000\u0000\u1794\u17a3\u0005\u0011"+ - "\u0000\u0000\u1795\u17a3\u0005\u01b0\u0000\u0000\u1796\u17a3\u0005\u00f2"+ - "\u0000\u0000\u1797\u17a3\u0005\u00f3\u0000\u0000\u1798\u17a3\u0005\u01c0"+ - "\u0000\u0000\u1799\u17a3\u0005\u01e1\u0000\u0000\u179a\u17a3\u0005E\u0000"+ - "\u0000\u179b\u17a3\u0005x\u0000\u0000\u179c\u17a3\u0005y\u0000\u0000\u179d"+ - "\u17a3\u0005z\u0000\u0000\u179e\u17a3\u0005\u00e8\u0000\u0000\u179f\u17a3"+ - "\u0005\u00e9\u0000\u0000\u17a0\u17a3\u0005\u01e4\u0000\u0000\u17a1\u17a3"+ - "\u0005\u0014\u0000\u0000\u17a2\u1782\u0001\u0000\u0000\u0000\u17a2\u1783"+ - "\u0001\u0000\u0000\u0000\u17a2\u1784\u0001\u0000\u0000\u0000\u17a2\u1785"+ - "\u0001\u0000\u0000\u0000\u17a2\u1786\u0001\u0000\u0000\u0000\u17a2\u1787"+ - "\u0001\u0000\u0000\u0000\u17a2\u1788\u0001\u0000\u0000\u0000\u17a2\u1789"+ - "\u0001\u0000\u0000\u0000\u17a2\u178a\u0001\u0000\u0000\u0000\u17a2\u178b"+ - "\u0001\u0000\u0000\u0000\u17a2\u178c\u0001\u0000\u0000\u0000\u17a2\u178d"+ - "\u0001\u0000\u0000\u0000\u17a2\u178e\u0001\u0000\u0000\u0000\u17a2\u178f"+ - "\u0001\u0000\u0000\u0000\u17a2\u1790\u0001\u0000\u0000\u0000\u17a2\u1791"+ - "\u0001\u0000\u0000\u0000\u17a2\u1792\u0001\u0000\u0000\u0000\u17a2\u1793"+ - "\u0001\u0000\u0000\u0000\u17a2\u1794\u0001\u0000\u0000\u0000\u17a2\u1795"+ - "\u0001\u0000\u0000\u0000\u17a2\u1796\u0001\u0000\u0000\u0000\u17a2\u1797"+ - "\u0001\u0000\u0000\u0000\u17a2\u1798\u0001\u0000\u0000\u0000\u17a2\u1799"+ - "\u0001\u0000\u0000\u0000\u17a2\u179a\u0001\u0000\u0000\u0000\u17a2\u179b"+ - "\u0001\u0000\u0000\u0000\u17a2\u179c\u0001\u0000\u0000\u0000\u17a2\u179d"+ - "\u0001\u0000\u0000\u0000\u17a2\u179e\u0001\u0000\u0000\u0000\u17a2\u179f"+ - "\u0001\u0000\u0000\u0000\u17a2\u17a0\u0001\u0000\u0000\u0000\u17a2\u17a1"+ - "\u0001\u0000\u0000\u0000\u17a3\u01a9\u0001\u0000\u0000\u0000\u17a4\u17a9"+ - "\u0003\u01ac\u00d6\u0000\u17a5\u17a6\u0005\u0004\u0000\u0000\u17a6\u17a8"+ - "\u0003\u01ac\u00d6\u0000\u17a7\u17a5\u0001\u0000\u0000\u0000\u17a8\u17ab"+ - "\u0001\u0000\u0000\u0000\u17a9\u17a7\u0001\u0000\u0000\u0000\u17a9\u17aa"+ - "\u0001\u0000\u0000\u0000\u17aa\u01ab\u0001\u0000\u0000\u0000\u17ab\u17a9"+ - "\u0001\u0000\u0000\u0000\u17ac\u17ad\u0003\u01c0\u00e0\u0000\u17ad\u17ae"+ - "\u0005\u020a\u0000\u0000\u17ae\u17b0\u0003\u01a6\u00d3\u0000\u17af\u17b1"+ - "\u0003\u01b4\u00da\u0000\u17b0\u17af\u0001\u0000\u0000\u0000\u17b0\u17b1"+ - "\u0001\u0000\u0000\u0000\u17b1\u01ad\u0001\u0000\u0000\u0000\u17b2\u17b7"+ - "\u0003\u01b0\u00d8\u0000\u17b3\u17b4\u0005\u0004\u0000\u0000\u17b4\u17b6"+ - "\u0003\u01b0\u00d8\u0000\u17b5\u17b3\u0001\u0000\u0000\u0000\u17b6\u17b9"+ - "\u0001\u0000\u0000\u0000\u17b7\u17b5\u0001\u0000\u0000\u0000\u17b7\u17b8"+ - "\u0001\u0000\u0000\u0000\u17b8\u01af\u0001\u0000\u0000\u0000\u17b9\u17b7"+ - "\u0001\u0000\u0000\u0000\u17ba\u17bc\u0003\u01b2\u00d9\u0000\u17bb\u17ba"+ - "\u0001\u0000\u0000\u0000\u17bb\u17bc\u0001\u0000\u0000\u0000\u17bc\u17bd"+ - "\u0001\u0000\u0000\u0000\u17bd\u17be\u0005\u0211\u0000\u0000\u17be\u17bf"+ - "\u0005\u020a\u0000\u0000\u17bf\u17c1\u0003\u01a6\u00d3\u0000\u17c0\u17c2"+ - "\u0003\u01b4\u00da\u0000\u17c1\u17c0\u0001\u0000\u0000\u0000\u17c1\u17c2"+ - "\u0001\u0000\u0000\u0000\u17c2\u01b1\u0001\u0000\u0000\u0000\u17c3\u17c4"+ - "\u0007:\u0000\u0000\u17c4\u01b3\u0001\u0000\u0000\u0000\u17c5\u17c6\u0005"+ - "Q\u0000\u0000\u17c6\u17c7\u0005\u0211\u0000\u0000\u17c7\u01b5\u0001\u0000"+ - "\u0000\u0000\u17c8\u17c9\u0005\u01b9\u0000\u0000\u17c9\u17cb\u0005\u0002"+ - "\u0000\u0000\u17ca\u17cc\u0003\u01b8\u00dc\u0000\u17cb\u17ca\u0001\u0000"+ - "\u0000\u0000\u17cb\u17cc\u0001\u0000\u0000\u0000\u17cc\u17cd\u0001\u0000"+ - "\u0000\u0000\u17cd\u17d0\u0005\u0003\u0000\u0000\u17ce\u17cf\u0005\u0175"+ - "\u0000\u0000\u17cf\u17d1\u0005\u0216\u0000\u0000\u17d0\u17ce\u0001\u0000"+ - "\u0000\u0000\u17d0\u17d1\u0001\u0000\u0000\u0000\u17d1\u01b7\u0001\u0000"+ - "\u0000\u0000\u17d2\u17d3\u0005\u0216\u0000\u0000\u17d3\u17d7\u0005\u014a"+ - "\u0000\u0000\u17d4\u17d5\u0005\u0216\u0000\u0000\u17d5\u17d7\u0005\u018c"+ - "\u0000\u0000\u17d6\u17d2\u0001\u0000\u0000\u0000\u17d6\u17d4\u0001\u0000"+ - "\u0000\u0000\u17d7\u01b9\u0001\u0000\u0000\u0000\u17d8\u17d9\u0005\u00b6"+ - "\u0000\u0000\u17d9\u17da\u0005\u01e8\u0000\u0000\u17da\u17db\u0005\u001c"+ - "\u0000\u0000\u17db\u17dc\u0005\u0133\u0000\u0000\u17dc\u17e3\u0005\u0216"+ - "\u0000\u0000\u17dd\u17de\u0005\u00b6\u0000\u0000\u17de\u17df\u0005\u01c3"+ - "\u0000\u0000\u17df\u17e0\u0005\u001c\u0000\u0000\u17e0\u17e1\u0005\u0133"+ - "\u0000\u0000\u17e1\u17e3\u0005\u0211\u0000\u0000\u17e2\u17d8\u0001\u0000"+ - "\u0000\u0000\u17e2\u17dd\u0001\u0000\u0000\u0000\u17e3\u01bb\u0001\u0000"+ - "\u0000\u0000\u17e4\u17e5\u0003\u01c0\u00e0\u0000\u17e5\u17e6\u0003\u01be"+ - "\u00df\u0000\u17e6\u01bd\u0001\u0000\u0000\u0000\u17e7\u17e8\u0005\u01ff"+ - "\u0000\u0000\u17e8\u17ea\u0003\u01c0\u00e0\u0000\u17e9\u17e7\u0001\u0000"+ - "\u0000\u0000\u17ea\u17eb\u0001\u0000\u0000\u0000\u17eb\u17e9\u0001\u0000"+ - "\u0000\u0000\u17eb\u17ec\u0001\u0000\u0000\u0000\u17ec\u17ef\u0001\u0000"+ - "\u0000\u0000\u17ed\u17ef\u0001\u0000\u0000\u0000\u17ee\u17e9\u0001\u0000"+ - "\u0000\u0000\u17ee\u17ed\u0001\u0000\u0000\u0000\u17ef\u01bf\u0001\u0000"+ - "\u0000\u0000\u17f0\u17f1\u0003\u01c2\u00e1\u0000\u17f1\u01c1\u0001\u0000"+ - "\u0000\u0000\u17f2\u17f6\u0005\u021a\u0000\u0000\u17f3\u17f6\u0003\u01c4"+ - "\u00e2\u0000\u17f4\u17f6\u0003\u01c8\u00e4\u0000\u17f5\u17f2\u0001\u0000"+ - "\u0000\u0000\u17f5\u17f3\u0001\u0000\u0000\u0000\u17f5\u17f4\u0001\u0000"+ - "\u0000\u0000\u17f6\u01c3\u0001\u0000\u0000\u0000\u17f7\u17f8\u0005\u021b"+ - "\u0000\u0000\u17f8\u01c5\u0001\u0000\u0000\u0000\u17f9\u17fb\u0005\u01ff"+ - "\u0000\u0000\u17fa\u17f9\u0001\u0000\u0000\u0000\u17fa\u17fb\u0001\u0000"+ - "\u0000\u0000\u17fb\u17fc\u0001\u0000\u0000\u0000\u17fc\u1802\u0005\u0216"+ - "\u0000\u0000\u17fd\u17ff\u0005\u01ff\u0000\u0000\u17fe\u17fd\u0001\u0000"+ - "\u0000\u0000\u17fe\u17ff\u0001\u0000\u0000\u0000\u17ff\u1800\u0001\u0000"+ - "\u0000\u0000\u1800\u1802\u0007;\u0000\u0000\u1801\u17fa\u0001\u0000\u0000"+ - "\u0000\u1801\u17fe\u0001\u0000\u0000\u0000\u1802\u01c7\u0001\u0000\u0000"+ - "\u0000\u1803\u1804\u0007<\u0000\u0000\u1804\u01c9\u0001\u0000\u0000\u0000"+ - "\u0371\u01cd\u01d1\u01d6\u01db\u01e1\u01e9\u01ed\u01f2\u0200\u0203\u020b"+ - "\u020e\u0216\u021d\u0224\u022d\u0234\u023b\u023f\u0241\u0244\u0248\u025f"+ - "\u0271\u0279\u0280\u0283\u0287\u028a\u028c\u028f\u0293\u0297\u029f\u02a6"+ - "\u02aa\u02ac\u02af\u02bb\u02c9\u02d1\u02d8\u02df\u02e4\u02fe\u030b\u030d"+ - "\u0311\u0316\u0318\u031b\u0323\u0329\u032c\u0331\u0336\u0338\u034d\u0350"+ - "\u0353\u0359\u0360\u0363\u0368\u036b\u0371\u0375\u0378\u0380\u0383\u0386"+ - "\u0389\u038f\u0394\u0397\u03a2\u03a7\u03aa\u03ad\u03b4\u03b7\u03bc\u03bf"+ - "\u03c2\u03c6\u03cc\u03d0\u03d6\u03d9\u03dd\u03e2\u03ea\u03ec\u03f0\u03f3"+ - "\u03fa\u03ff\u0401\u0403\u040a\u040d\u0411\u0415\u041a\u0420\u0427\u042b"+ - "\u0435\u043a\u0440\u0448\u044a\u0451\u0456\u045e\u0462\u0469\u046f\u0473"+ - "\u0476\u047e\u0489\u0496\u049a\u04a2\u04a9\u04b1\u04b4\u04b8\u04bf\u04c3"+ - "\u04ca\u04d2\u04d5\u04db\u04e0\u04e7\u04ea\u04ee\u04f5\u04fa\u0501\u0507"+ - "\u0515\u0519\u0536\u0546\u054c\u0568\u0575\u0582\u0595\u05a3\u05a5\u05b3"+ - "\u05ba\u05c1\u05c8\u05d0\u05d8\u05df\u05e7\u05ef\u05f9\u05fd\u0603\u0607"+ - "\u060b\u0610\u0615\u061d\u0623\u0627\u062b\u063b\u0641\u0644\u064d\u0653"+ - "\u0657\u0663\u0669\u066c\u0679\u0683\u0687\u068b\u0692\u06a3\u06a7\u06b4"+ - "\u06ba\u06be\u06c5\u06ca\u06d2\u06d4\u06da\u06e6\u06ea\u06ed\u06f0\u06fd"+ - "\u0710\u0715\u0718\u0721\u072d\u0731\u073e\u074b\u074f\u0756\u075c\u075f"+ - "\u0765\u0769\u076e\u0771\u0778\u077b\u077d\u0781\u078b\u0797\u079a\u07a3"+ - "\u07aa\u07b2\u07b5\u07b8\u07c6\u07cb\u07ce\u07dc\u07e1\u07e4\u07eb\u07ed"+ - "\u07f3\u07f8\u07fc\u07ff\u0802\u080b\u080d\u0817\u081a\u081e\u0823\u0826"+ - "\u0830\u0836\u083b\u0841\u0844\u0848\u084f\u0852\u0859\u085c\u085f\u0863"+ - "\u0867\u086c\u086f\u0872\u0875\u087b\u087e\u0881\u0884\u088d\u0891\u0894"+ - "\u0897\u089a\u089e\u08a4\u08a7\u08aa\u08b4\u08b7\u08ba\u08bd\u08c3\u08c6"+ - "\u08ca\u08cf\u08d2\u08d7\u08da\u08dd\u08e3\u08ea\u08ee\u08f1\u08f6\u08f9"+ - "\u08fe\u0902\u0908\u0910\u0916\u0919\u0924\u092f\u0931\u0933\u093a\u093d"+ - "\u0940\u0943\u0949\u0951\u0957\u095a\u095d\u0960\u0967\u0969\u0971\u0975"+ - "\u097c\u097f\u0982\u098a\u0993\u0996\u09a4\u09cb\u09d2\u09d4\u09dc\u09df"+ - "\u09e3\u09ef\u09fb\u0a13\u0a1b\u0a21\u0a25\u0a2c\u0a34\u0a37\u0a3d\u0a43"+ - "\u0a48\u0a50\u0a54\u0a5b\u0a64\u0a6a\u0a70\u0a73\u0a79\u0a7c\u0a83\u0a85"+ - "\u0a8e\u0a98\u0a9c\u0aa9\u0aad\u0ab7\u0abe\u0ac4\u0ac6\u0ad8\u0adc\u0ae9"+ - "\u0aed\u0afe\u0b08\u0b0e\u0b16\u0b22\u0b26\u0b2e\u0b30\u0b36\u0b3a\u0b40"+ - "\u0b44\u0b4a\u0b4e\u0b53\u0b75\u0b7c\u0b7f\u0b88\u0b8f\u0b91\u0b95\u0b98"+ - "\u0b9b\u0b9e\u0ba2\u0ba5\u0bab\u0bb1\u0bb3\u0bb7\u0bbb\u0bbe\u0bc1\u0bc4"+ - "\u0bc8\u0bcc\u0bcf\u0bd2\u0bd5\u0bd7\u0be1\u0bef\u0bf6\u0bfe\u0c0b\u0c19"+ - "\u0c20\u0c28\u0c2d\u0c31\u0c34\u0c3b\u0c4b\u0c5c\u0c64\u0c70\u0c76\u0c78"+ - "\u0c81\u0c85\u0c8e\u0c98\u0caf\u0cba\u0cc6\u0ccf\u0cdc\u0ce0\u0ce7\u0cea"+ - "\u0ced\u0cf3\u0cf6\u0cf9\u0d01\u0d04\u0d0a\u0d0d\u0d13\u0d16\u0d19\u0d1f"+ - "\u0d22\u0d26\u0d2e\u0d33\u0d35\u0d37\u0d3a\u0d3e\u0d43\u0d47\u0d4c\u0d50"+ - "\u0d58\u0d61\u0d65\u0d68\u0d6b\u0d72\u0d75\u0d8e\u0d96\u0d9f\u0da4\u0da6"+ - "\u0da8\u0db8\u0dbc\u0dc6\u0dc9\u0dcb\u0dd0\u0ddc\u0de3\u0deb\u0df4\u0df6"+ - "\u0dfc\u0dff\u0e03\u0e08\u0e0f\u0e16\u0e1d\u0e2c\u0e30\u0e36\u0e39\u0e3f"+ - "\u0e43\u0e45\u0e50\u0e57\u0e62\u0e68\u0e6b\u0e80\u0e83\u0e92\u0e97\u0e9a"+ - "\u0ea1\u0ead\u0eb5\u0ebc\u0ec0\u0ec7\u0ece\u0ed3\u0ed8\u0ee1\u0ee7\u0eeb"+ - "\u0ef3\u0ef7\u0eff\u0f07\u0f0e\u0f11\u0f18\u0f1c\u0f1e\u0f25\u0f2c\u0f2e"+ - "\u0f35\u0f3c\u0f40\u0f46\u0f4b\u0f4d\u0f55\u0f57\u0f5e\u0f60\u0f64\u0f6a"+ - "\u0f6c\u0f6f\u0f77\u0f7e\u0f84\u0f89\u0f8d\u0f9b\u0fa0\u0fad\u0faf\u0fb6"+ - "\u0fbe\u0fc2\u0fc7\u0fcc\u0fd1\u0fd9\u0fe2\u0fe5\u0feb\u0fed\u0ff3\u0ffa"+ - "\u1008\u100c\u1011\u1017\u101f\u1022\u1028\u102b\u1034\u1037\u103d\u1047"+ - "\u104b\u104e\u1050\u1055\u105a\u105e\u1064\u106b\u1077\u1079\u1087\u108a"+ - "\u108f\u1097\u109a\u109f\u10a4\u10ae\u10b5\u10b8\u10bb\u10c5\u10cd\u10d3"+ - "\u10d9\u10de\u10e3\u10e6\u10e9\u10ec\u10ef\u10f2\u10f5\u10f8\u10fb\u10fe"+ - "\u1101\u110c\u110f\u1112\u1115\u1118\u111a\u1128\u112f\u1135\u1139\u113e"+ - "\u1145\u114a\u1153\u1155\u115b\u115e\u1162\u1165\u1168\u1176\u1193\u11b6"+ - "\u11b8\u11c1\u11c5\u11ce\u11d4\u11da\u11dd\u11e0\u11e3\u11e6\u11ee\u11f6"+ - "\u11f9\u11fc\u1207\u120d\u1210\u1212\u121d\u1221\u1224\u1227\u122a\u122d"+ - "\u1230\u123b\u1240\u124d\u1254\u1261\u1266\u126b\u126f\u127f\u1286\u128c"+ - "\u1290\u129a\u12a2\u12ad\u12b2\u12bf\u12c2\u12cc\u12cf\u12da\u12e4\u12e7"+ - "\u12ef\u12f2\u12fe\u1303\u130c\u1311\u1316\u131f\u1324\u1326\u132c\u132e"+ - "\u1331\u1337\u133e\u134a\u134d\u1357\u135b\u135e\u1367\u136c\u1370\u137c"+ - "\u1385\u1389\u138e\u1392\u1396\u13a0\u13a6\u13b1\u13b8\u13be\u13c1\u13c4"+ - "\u13c7\u13ca\u13ce\u13d1\u13d6\u13e0\u13e6\u13ef\u13fe\u1407\u140b\u140e"+ - "\u1412\u1414\u141b\u1423\u1429\u1430\u1436\u1439\u143d\u1444\u1447\u144a"+ - "\u1451\u1453\u1458\u145c\u1469\u146b\u146d\u1476\u1478\u147c\u1483\u148a"+ - "\u1490\u1497\u149b\u14a2\u14a9\u14af\u14b5\u14bd\u14c3\u14d4\u14da\u14e5"+ - "\u14eb\u14ed\u14f5\u14fb\u1501\u1508\u1510\u1513\u151e\u1529\u152e\u1531"+ - "\u1538\u153d\u1549\u154f\u1565\u1569\u1577\u1579\u1582\u1585\u158c\u158f"+ - "\u1597\u159c\u15a1\u15a9\u15b2\u15b9\u15be\u15c1\u15c7\u15dc\u15de\u15ed"+ - "\u15f1\u15fa\u15fe\u160f\u1618\u1622\u1627\u1643\u1647\u1652\u165a\u165f"+ - "\u166b\u1677\u1679\u167b\u1688\u168d\u168f\u1694\u169b\u16a5\u16a8\u16aa"+ - "\u16af\u16b4\u16c8\u16cc\u16cf\u16d2\u16df\u16ea\u16f1\u16f5\u16fa\u16fd"+ - "\u1701\u1709\u170e\u1714\u171d\u1726\u1730\u1736\u1749\u174c\u176d\u177a"+ - "\u177e\u1780\u17a2\u17a9\u17b0\u17b7\u17bb\u17c1\u17cb\u17d0\u17d6\u17e2"+ - "\u17eb\u17ee\u17f5\u17fa\u17fe\u1801"; - public static final String _serializedATN = Utils.join( - new String[] { - _serializedATNSegment0, - _serializedATNSegment1, - _serializedATNSegment2 - }, - "" - ); - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens deleted file mode 100644 index aca045377c7e08..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParser.tokens +++ /dev/null @@ -1,1067 +0,0 @@ -SEMICOLON=1 -LEFT_PAREN=2 -RIGHT_PAREN=3 -COMMA=4 -DOT=5 -DOTDOTDOT=6 -LEFT_BRACKET=7 -RIGHT_BRACKET=8 -LEFT_BRACE=9 -RIGHT_BRACE=10 -ACCOUNT_LOCK=11 -ACCOUNT_UNLOCK=12 -ACTIONS=13 -ADD=14 -ADMIN=15 -AFTER=16 -AGG_STATE=17 -AGGREGATE=18 -ALIAS=19 -ALL=20 -ALTER=21 -ANALYZE=22 -ANALYZED=23 -AND=24 -ANTI=25 -APPEND=26 -ARRAY=27 -AS=28 -ASC=29 -AT=30 -AUTHORS=31 -AUTO=32 -AUTO_INCREMENT=33 -ALWAYS=34 -BACKEND=35 -BACKENDS=36 -BACKUP=37 -BEGIN=38 -BELONG=39 -BETWEEN=40 -BIGINT=41 -BIN=42 -BINARY=43 -BINLOG=44 -BITAND=45 -BITMAP=46 -BITMAP_EMPTY=47 -BITMAP_UNION=48 -BITOR=49 -BITXOR=50 -BLOB=51 -BOOLEAN=52 -BRIEF=53 -BROKER=54 -BUCKETS=55 -BUILD=56 -BUILTIN=57 -BULK=58 -BY=59 -CACHE=60 -CACHED=61 -CALL=62 -CANCEL=63 -CASE=64 -CAST=65 -CATALOG=66 -CATALOGS=67 -CHAIN=68 -CHAR=69 -CHARSET=70 -CHECK=71 -CLEAN=72 -CLUSTER=73 -CLUSTERS=74 -COLLATE=75 -COLLATION=76 -COLLECT=77 -COLOCATE=78 -COLUMN=79 -COLUMNS=80 -COMMENT=81 -COMMIT=82 -COMMITTED=83 -COMPACT=84 -COMPLETE=85 -COMPRESS_TYPE=86 -COMPUTE=87 -CONDITIONS=88 -CONFIG=89 -CONNECTION=90 -CONNECTION_ID=91 -CONSISTENT=92 -CONSTRAINT=93 -CONSTRAINTS=94 -CONVERT=95 -CONVERT_LSC=96 -COPY=97 -COUNT=98 -CREATE=99 -CREATION=100 -CRON=101 -CROSS=102 -CUBE=103 -CURRENT=104 -CURRENT_CATALOG=105 -CURRENT_DATE=106 -CURRENT_TIME=107 -CURRENT_TIMESTAMP=108 -CURRENT_USER=109 -DATA=110 -DATABASE=111 -DATABASES=112 -DATE=113 -DATETIME=114 -DATETIMEV2=115 -DATEV2=116 -DATETIMEV1=117 -DATEV1=118 -DAY=119 -DECIMAL=120 -DECIMALV2=121 -DECIMALV3=122 -DECOMMISSION=123 -DEFAULT=124 -DEFERRED=125 -DELETE=126 -DEMAND=127 -DESC=128 -DESCRIBE=129 -DIAGNOSE=130 -DIAGNOSIS=131 -DISK=132 -DISTINCT=133 -DISTINCTPC=134 -DISTINCTPCSA=135 -DISTRIBUTED=136 -DISTRIBUTION=137 -DIV=138 -DO=139 -DORIS_INTERNAL_TABLE_ID=140 -DOUBLE=141 -DROP=142 -DROPP=143 -DUAL=144 -DUMP=145 -DUPLICATE=146 -DYNAMIC=147 -E=148 -ELSE=149 -ENABLE=150 -ENCRYPTKEY=151 -ENCRYPTKEYS=152 -END=153 -ENDS=154 -ENGINE=155 -ENGINES=156 -ENTER=157 -ERRORS=158 -EVENTS=159 -EVERY=160 -EXCEPT=161 -EXCLUDE=162 -EXECUTE=163 -EXISTS=164 -EXPIRED=165 -EXPLAIN=166 -EXPORT=167 -EXTENDED=168 -EXTERNAL=169 -EXTRACT=170 -FAILED_LOGIN_ATTEMPTS=171 -FALSE=172 -FAST=173 -FEATURE=174 -FIELDS=175 -FILE=176 -FILTER=177 -FIRST=178 -FLOAT=179 -FOLLOWER=180 -FOLLOWING=181 -FOR=182 -FOREIGN=183 -FORCE=184 -FORMAT=185 -FREE=186 -FROM=187 -FRONTEND=188 -FRONTENDS=189 -FULL=190 -FUNCTION=191 -FUNCTIONS=192 -GENERATED=193 -GENERIC=194 -GLOBAL=195 -GRANT=196 -GRANTS=197 -GRAPH=198 -GROUP=199 -GROUPING=200 -GROUPS=201 -HASH=202 -HAVING=203 -HDFS=204 -HELP=205 -HISTOGRAM=206 -HLL=207 -HLL_UNION=208 -HOSTNAME=209 -HOTSPOT=210 -HOUR=211 -HUB=212 -IDENTIFIED=213 -IF=214 -IGNORE=215 -IMMEDIATE=216 -IN=217 -INCREMENTAL=218 -INDEX=219 -INDEXES=220 -INFILE=221 -INNER=222 -INSERT=223 -INSTALL=224 -INT=225 -INTEGER=226 -INTERMEDIATE=227 -INTERSECT=228 -INTERVAL=229 -INTO=230 -INVERTED=231 -IPV4=232 -IPV6=233 -IS=234 -IS_NOT_NULL_PRED=235 -IS_NULL_PRED=236 -ISNULL=237 -ISOLATION=238 -JOB=239 -JOBS=240 -JOIN=241 -JSON=242 -JSONB=243 -KEY=244 -KEYS=245 -KILL=246 -LABEL=247 -LARGEINT=248 -LAST=249 -LATERAL=250 -LDAP=251 -LDAP_ADMIN_PASSWORD=252 -LEFT=253 -LESS=254 -LEVEL=255 -LIKE=256 -LIMIT=257 -LINES=258 -LINK=259 -LIST=260 -LOAD=261 -LOCAL=262 -LOCALTIME=263 -LOCALTIMESTAMP=264 -LOCATION=265 -LOCK=266 -LOGICAL=267 -LOW_PRIORITY=268 -MANUAL=269 -MAP=270 -MATCH=271 -MATCH_ALL=272 -MATCH_ANY=273 -MATCH_PHRASE=274 -MATCH_PHRASE_EDGE=275 -MATCH_PHRASE_PREFIX=276 -MATCH_REGEXP=277 -MATCH_NAME=278 -MATCH_NAME_GLOB=279 -MATERIALIZED=280 -MAX=281 -MAXVALUE=282 -MEMO=283 -MERGE=284 -MIGRATE=285 -MIGRATIONS=286 -MIN=287 -MINUS=288 -MINUTE=289 -MODIFY=290 -MONTH=291 -MTMV=292 -NAME=293 -NAMES=294 -NATURAL=295 -NEGATIVE=296 -NEVER=297 -NEXT=298 -NGRAM_BF=299 -NO=300 -NO_USE_MV=301 -NON_NULLABLE=302 -NOT=303 -NULL=304 -NULLS=305 -OBSERVER=306 -OF=307 -OFFSET=308 -ON=309 -ONLY=310 -OPEN=311 -OPTIMIZED=312 -OR=313 -ORDER=314 -OUTER=315 -OUTFILE=316 -OVER=317 -OVERWRITE=318 -PARAMETER=319 -PARSED=320 -PARTITION=321 -PARTITIONS=322 -PASSWORD=323 -PASSWORD_EXPIRE=324 -PASSWORD_HISTORY=325 -PASSWORD_LOCK_TIME=326 -PASSWORD_REUSE=327 -PATH=328 -PAUSE=329 -PERCENT=330 -PERIOD=331 -PERMISSIVE=332 -PHYSICAL=333 -PI=334 -PLACEHOLDER=335 -PLAN=336 -PLAY=337 -PRIVILEGES=338 -PROCESS=339 -PLUGIN=340 -PLUGINS=341 -POLICY=342 -PRECEDING=343 -PREPARE=344 -PRIMARY=345 -PROC=346 -PROCEDURE=347 -PROCESSLIST=348 -PROFILE=349 -PROPERTIES=350 -PROPERTY=351 -QUANTILE_STATE=352 -QUANTILE_UNION=353 -QUERY=354 -QUEUED=355 -QUOTA=356 -QUALIFY=357 -QUARTER=358 -RANDOM=359 -RANGE=360 -READ=361 -REAL=362 -REBALANCE=363 -RECENT=364 -RECOVER=365 -RECYCLE=366 -REFRESH=367 -REFERENCES=368 -REGEXP=369 -RELEASE=370 -RENAME=371 -REPAIR=372 -REPEATABLE=373 -REPLACE=374 -REPLACE_IF_NOT_NULL=375 -REPLAYER=376 -REPLICA=377 -REPOSITORIES=378 -REPOSITORY=379 -RESOURCE=380 -RESOURCES=381 -RESTORE=382 -RESTRICTIVE=383 -RESUME=384 -RETURNS=385 -REVOKE=386 -REWRITTEN=387 -RIGHT=388 -RLIKE=389 -ROLE=390 -ROLES=391 -ROLLBACK=392 -ROLLUP=393 -ROUTINE=394 -ROW=395 -ROWS=396 -S3=397 -SAMPLE=398 -SCHEDULE=399 -SCHEDULER=400 -SCHEMA=401 -SCHEMAS=402 -SECOND=403 -SELECT=404 -SEMI=405 -SERIALIZABLE=406 -SESSION=407 -SESSION_USER=408 -SET=409 -SETS=410 -SET_SESSION_VARIABLE=411 -SHAPE=412 -SHOW=413 -SIGNED=414 -SKEW=415 -SMALLINT=416 -SNAPSHOT=417 -SONAME=418 -SPLIT=419 -SQL=420 -SQL_BLOCK_RULE=421 -STAGE=422 -STAGES=423 -START=424 -STARTS=425 -STATS=426 -STATUS=427 -STOP=428 -STORAGE=429 -STREAM=430 -STREAMING=431 -STRING=432 -STRUCT=433 -SUM=434 -SUPERUSER=435 -SWITCH=436 -SYNC=437 -SYSTEM=438 -TABLE=439 -TABLES=440 -TABLESAMPLE=441 -TABLET=442 -TABLETS=443 -TASK=444 -TASKS=445 -TEMPORARY=446 -TERMINATED=447 -TEXT=448 -THAN=449 -THEN=450 -TIME=451 -TIMESTAMP=452 -TINYINT=453 -TO=454 -TRANSACTION=455 -TRASH=456 -TREE=457 -TRIGGERS=458 -TRIM=459 -TRUE=460 -TRUNCATE=461 -TYPE=462 -TYPECAST=463 -TYPES=464 -UNBOUNDED=465 -UNCOMMITTED=466 -UNINSTALL=467 -UNION=468 -UNIQUE=469 -UNLOCK=470 -UNSET=471 -UNSIGNED=472 -UP=473 -UPDATE=474 -USE=475 -USER=476 -USE_MV=477 -USING=478 -VALUE=479 -VALUES=480 -VARCHAR=481 -VARIABLE=482 -VARIABLES=483 -VARIANT=484 -VAULT=485 -VAULTS=486 -VERBOSE=487 -VERSION=488 -VIEW=489 -VIEWS=490 -WARM=491 -WARNINGS=492 -WEEK=493 -WHEN=494 -WHERE=495 -WHITELIST=496 -WITH=497 -WORK=498 -WORKLOAD=499 -WRITE=500 -XOR=501 -YEAR=502 -EQ=503 -NSEQ=504 -NEQ=505 -LT=506 -LTE=507 -GT=508 -GTE=509 -PLUS=510 -SUBTRACT=511 -ASTERISK=512 -SLASH=513 -MOD=514 -TILDE=515 -AMPERSAND=516 -LOGICALAND=517 -LOGICALNOT=518 -PIPE=519 -DOUBLEPIPES=520 -HAT=521 -COLON=522 -ARROW=523 -HINT_START=524 -HINT_END=525 -COMMENT_START=526 -ATSIGN=527 -DOUBLEATSIGN=528 -STRING_LITERAL=529 -LEADING_STRING=530 -BIGINT_LITERAL=531 -SMALLINT_LITERAL=532 -TINYINT_LITERAL=533 -INTEGER_VALUE=534 -EXPONENT_VALUE=535 -DECIMAL_VALUE=536 -BIGDECIMAL_LITERAL=537 -IDENTIFIER=538 -BACKQUOTED_IDENTIFIER=539 -SIMPLE_COMMENT=540 -BRACKETED_COMMENT=541 -FROM_DUAL=542 -WS=543 -UNRECOGNIZED=544 -';'=1 -'('=2 -')'=3 -','=4 -'.'=5 -'...'=6 -'['=7 -']'=8 -'{'=9 -'}'=10 -'ACCOUNT_LOCK'=11 -'ACCOUNT_UNLOCK'=12 -'ACTIONS'=13 -'ADD'=14 -'ADMIN'=15 -'AFTER'=16 -'AGG_STATE'=17 -'AGGREGATE'=18 -'ALIAS'=19 -'ALL'=20 -'ALTER'=21 -'ANALYZE'=22 -'ANALYZED'=23 -'AND'=24 -'ANTI'=25 -'APPEND'=26 -'ARRAY'=27 -'AS'=28 -'ASC'=29 -'AT'=30 -'AUTHORS'=31 -'AUTO'=32 -'AUTO_INCREMENT'=33 -'ALWAYS'=34 -'BACKEND'=35 -'BACKENDS'=36 -'BACKUP'=37 -'BEGIN'=38 -'BELONG'=39 -'BETWEEN'=40 -'BIGINT'=41 -'BIN'=42 -'BINARY'=43 -'BINLOG'=44 -'BITAND'=45 -'BITMAP'=46 -'BITMAP_EMPTY'=47 -'BITMAP_UNION'=48 -'BITOR'=49 -'BITXOR'=50 -'BLOB'=51 -'BOOLEAN'=52 -'BRIEF'=53 -'BROKER'=54 -'BUCKETS'=55 -'BUILD'=56 -'BUILTIN'=57 -'BULK'=58 -'BY'=59 -'CACHE'=60 -'CACHED'=61 -'CALL'=62 -'CANCEL'=63 -'CASE'=64 -'CAST'=65 -'CATALOG'=66 -'CATALOGS'=67 -'CHAIN'=68 -'CHARSET'=70 -'CHECK'=71 -'CLEAN'=72 -'CLUSTER'=73 -'CLUSTERS'=74 -'COLLATE'=75 -'COLLATION'=76 -'COLLECT'=77 -'COLOCATE'=78 -'COLUMN'=79 -'COLUMNS'=80 -'COMMENT'=81 -'COMMIT'=82 -'COMMITTED'=83 -'COMPACT'=84 -'COMPLETE'=85 -'COMPRESS_TYPE'=86 -'COMPUTE'=87 -'CONDITIONS'=88 -'CONFIG'=89 -'CONNECTION'=90 -'CONNECTION_ID'=91 -'CONSISTENT'=92 -'CONSTRAINT'=93 -'CONSTRAINTS'=94 -'CONVERT'=95 -'CONVERT_LIGHT_SCHEMA_CHANGE_PROCESS'=96 -'COPY'=97 -'COUNT'=98 -'CREATE'=99 -'CREATION'=100 -'CRON'=101 -'CROSS'=102 -'CUBE'=103 -'CURRENT'=104 -'CURRENT_CATALOG'=105 -'CURRENT_DATE'=106 -'CURRENT_TIME'=107 -'CURRENT_TIMESTAMP'=108 -'CURRENT_USER'=109 -'DATA'=110 -'DATABASE'=111 -'DATABASES'=112 -'DATE'=113 -'DATETIME'=114 -'DATETIMEV2'=115 -'DATEV2'=116 -'DATETIMEV1'=117 -'DATEV1'=118 -'DAY'=119 -'DECIMAL'=120 -'DECIMALV2'=121 -'DECIMALV3'=122 -'DECOMMISSION'=123 -'DEFAULT'=124 -'DEFERRED'=125 -'DELETE'=126 -'DEMAND'=127 -'DESC'=128 -'DESCRIBE'=129 -'DIAGNOSE'=130 -'DIAGNOSIS'=131 -'DISK'=132 -'DISTINCT'=133 -'DISTINCTPC'=134 -'DISTINCTPCSA'=135 -'DISTRIBUTED'=136 -'DISTRIBUTION'=137 -'DIV'=138 -'DO'=139 -'DORIS_INTERNAL_TABLE_ID'=140 -'DOUBLE'=141 -'DROP'=142 -'DROPP'=143 -'DUAL'=144 -'DUMP'=145 -'DUPLICATE'=146 -'DYNAMIC'=147 -'E'=148 -'ELSE'=149 -'ENABLE'=150 -'ENCRYPTKEY'=151 -'ENCRYPTKEYS'=152 -'END'=153 -'ENDS'=154 -'ENGINE'=155 -'ENGINES'=156 -'ENTER'=157 -'ERRORS'=158 -'EVENTS'=159 -'EVERY'=160 -'EXCEPT'=161 -'EXCLUDE'=162 -'EXECUTE'=163 -'EXISTS'=164 -'EXPIRED'=165 -'EXPLAIN'=166 -'EXPORT'=167 -'EXTENDED'=168 -'EXTERNAL'=169 -'EXTRACT'=170 -'FAILED_LOGIN_ATTEMPTS'=171 -'FALSE'=172 -'FAST'=173 -'FEATURE'=174 -'FIELDS'=175 -'FILE'=176 -'FILTER'=177 -'FIRST'=178 -'FLOAT'=179 -'FOLLOWER'=180 -'FOLLOWING'=181 -'FOR'=182 -'FOREIGN'=183 -'FORCE'=184 -'FORMAT'=185 -'FREE'=186 -'FROM'=187 -'FRONTEND'=188 -'FRONTENDS'=189 -'FULL'=190 -'FUNCTION'=191 -'FUNCTIONS'=192 -'GENERATED'=193 -'GENERIC'=194 -'GLOBAL'=195 -'GRANT'=196 -'GRANTS'=197 -'GRAPH'=198 -'GROUP'=199 -'GROUPING'=200 -'GROUPS'=201 -'HASH'=202 -'HAVING'=203 -'HDFS'=204 -'HELP'=205 -'HISTOGRAM'=206 -'HLL'=207 -'HLL_UNION'=208 -'HOSTNAME'=209 -'HOTSPOT'=210 -'HOUR'=211 -'HUB'=212 -'IDENTIFIED'=213 -'IF'=214 -'IGNORE'=215 -'IMMEDIATE'=216 -'IN'=217 -'INCREMENTAL'=218 -'INDEX'=219 -'INDEXES'=220 -'INFILE'=221 -'INNER'=222 -'INSERT'=223 -'INSTALL'=224 -'INT'=225 -'INTEGER'=226 -'INTERMEDIATE'=227 -'INTERSECT'=228 -'INTERVAL'=229 -'INTO'=230 -'INVERTED'=231 -'IPV4'=232 -'IPV6'=233 -'IS'=234 -'IS_NOT_NULL_PRED'=235 -'IS_NULL_PRED'=236 -'ISNULL'=237 -'ISOLATION'=238 -'JOB'=239 -'JOBS'=240 -'JOIN'=241 -'JSON'=242 -'JSONB'=243 -'KEY'=244 -'KEYS'=245 -'KILL'=246 -'LABEL'=247 -'LARGEINT'=248 -'LAST'=249 -'LATERAL'=250 -'LDAP'=251 -'LDAP_ADMIN_PASSWORD'=252 -'LEFT'=253 -'LESS'=254 -'LEVEL'=255 -'LIKE'=256 -'LIMIT'=257 -'LINES'=258 -'LINK'=259 -'LIST'=260 -'LOAD'=261 -'LOCAL'=262 -'LOCALTIME'=263 -'LOCALTIMESTAMP'=264 -'LOCATION'=265 -'LOCK'=266 -'LOGICAL'=267 -'LOW_PRIORITY'=268 -'MANUAL'=269 -'MAP'=270 -'MATCH'=271 -'MATCH_ALL'=272 -'MATCH_ANY'=273 -'MATCH_PHRASE'=274 -'MATCH_PHRASE_EDGE'=275 -'MATCH_PHRASE_PREFIX'=276 -'MATCH_REGEXP'=277 -'MATCH_NAME'=278 -'MATCH_NAME_GLOB'=279 -'MATERIALIZED'=280 -'MAX'=281 -'MAXVALUE'=282 -'MEMO'=283 -'MERGE'=284 -'MIGRATE'=285 -'MIGRATIONS'=286 -'MIN'=287 -'MINUS'=288 -'MINUTE'=289 -'MODIFY'=290 -'MONTH'=291 -'MTMV'=292 -'NAME'=293 -'NAMES'=294 -'NATURAL'=295 -'NEGATIVE'=296 -'NEVER'=297 -'NEXT'=298 -'NGRAM_BF'=299 -'NO'=300 -'NO_USE_MV'=301 -'NON_NULLABLE'=302 -'NOT'=303 -'NULL'=304 -'NULLS'=305 -'OBSERVER'=306 -'OF'=307 -'OFFSET'=308 -'ON'=309 -'ONLY'=310 -'OPEN'=311 -'OPTIMIZED'=312 -'OR'=313 -'ORDER'=314 -'OUTER'=315 -'OUTFILE'=316 -'OVER'=317 -'OVERWRITE'=318 -'PARAMETER'=319 -'PARSED'=320 -'PARTITION'=321 -'PARTITIONS'=322 -'PASSWORD'=323 -'PASSWORD_EXPIRE'=324 -'PASSWORD_HISTORY'=325 -'PASSWORD_LOCK_TIME'=326 -'PASSWORD_REUSE'=327 -'PATH'=328 -'PAUSE'=329 -'PERCENT'=330 -'PERIOD'=331 -'PERMISSIVE'=332 -'PHYSICAL'=333 -'PI'=334 -'?'=335 -'PLAN'=336 -'PLAY'=337 -'PRIVILEGES'=338 -'PROCESS'=339 -'PLUGIN'=340 -'PLUGINS'=341 -'POLICY'=342 -'PRECEDING'=343 -'PREPARE'=344 -'PRIMARY'=345 -'PROC'=346 -'PROCEDURE'=347 -'PROCESSLIST'=348 -'PROFILE'=349 -'PROPERTIES'=350 -'PROPERTY'=351 -'QUANTILE_STATE'=352 -'QUANTILE_UNION'=353 -'QUERY'=354 -'QUEUED'=355 -'QUOTA'=356 -'QUALIFY'=357 -'QUARTER'=358 -'RANDOM'=359 -'RANGE'=360 -'READ'=361 -'REAL'=362 -'REBALANCE'=363 -'RECENT'=364 -'RECOVER'=365 -'RECYCLE'=366 -'REFRESH'=367 -'REFERENCES'=368 -'REGEXP'=369 -'RELEASE'=370 -'RENAME'=371 -'REPAIR'=372 -'REPEATABLE'=373 -'REPLACE'=374 -'REPLACE_IF_NOT_NULL'=375 -'REPLAYER'=376 -'REPLICA'=377 -'REPOSITORIES'=378 -'REPOSITORY'=379 -'RESOURCE'=380 -'RESOURCES'=381 -'RESTORE'=382 -'RESTRICTIVE'=383 -'RESUME'=384 -'RETURNS'=385 -'REVOKE'=386 -'REWRITTEN'=387 -'RIGHT'=388 -'RLIKE'=389 -'ROLE'=390 -'ROLES'=391 -'ROLLBACK'=392 -'ROLLUP'=393 -'ROUTINE'=394 -'ROW'=395 -'ROWS'=396 -'S3'=397 -'SAMPLE'=398 -'SCHEDULE'=399 -'SCHEDULER'=400 -'SCHEMA'=401 -'SCHEMAS'=402 -'SECOND'=403 -'SELECT'=404 -'SEMI'=405 -'SERIALIZABLE'=406 -'SESSION'=407 -'SESSION_USER'=408 -'SET'=409 -'SETS'=410 -'SET_SESSION_VARIABLE'=411 -'SHAPE'=412 -'SHOW'=413 -'SIGNED'=414 -'SKEW'=415 -'SMALLINT'=416 -'SNAPSHOT'=417 -'SONAME'=418 -'SPLIT'=419 -'SQL'=420 -'SQL_BLOCK_RULE'=421 -'STAGE'=422 -'STAGES'=423 -'START'=424 -'STARTS'=425 -'STATS'=426 -'STATUS'=427 -'STOP'=428 -'STORAGE'=429 -'STREAM'=430 -'STREAMING'=431 -'STRING'=432 -'STRUCT'=433 -'SUM'=434 -'SUPERUSER'=435 -'SWITCH'=436 -'SYNC'=437 -'SYSTEM'=438 -'TABLE'=439 -'TABLES'=440 -'TABLESAMPLE'=441 -'TABLET'=442 -'TABLETS'=443 -'TASK'=444 -'TASKS'=445 -'TEMPORARY'=446 -'TERMINATED'=447 -'TEXT'=448 -'THAN'=449 -'THEN'=450 -'TIME'=451 -'TIMESTAMP'=452 -'TINYINT'=453 -'TO'=454 -'TRANSACTION'=455 -'TRASH'=456 -'TREE'=457 -'TRIGGERS'=458 -'TRIM'=459 -'TRUE'=460 -'TRUNCATE'=461 -'TYPE'=462 -'TYPE_CAST'=463 -'TYPES'=464 -'UNBOUNDED'=465 -'UNCOMMITTED'=466 -'UNINSTALL'=467 -'UNION'=468 -'UNIQUE'=469 -'UNLOCK'=470 -'UNSET'=471 -'UNSIGNED'=472 -'UP'=473 -'UPDATE'=474 -'USE'=475 -'USER'=476 -'USE_MV'=477 -'USING'=478 -'VALUE'=479 -'VALUES'=480 -'VARCHAR'=481 -'VARIABLE'=482 -'VARIABLES'=483 -'VARIANT'=484 -'VAULT'=485 -'VAULTS'=486 -'VERBOSE'=487 -'VERSION'=488 -'VIEW'=489 -'VIEWS'=490 -'WARM'=491 -'WARNINGS'=492 -'WEEK'=493 -'WHEN'=494 -'WHERE'=495 -'WHITELIST'=496 -'WITH'=497 -'WORK'=498 -'WORKLOAD'=499 -'WRITE'=500 -'XOR'=501 -'YEAR'=502 -'<=>'=504 -'<'=506 -'>'=508 -'+'=510 -'-'=511 -'*'=512 -'/'=513 -'%'=514 -'~'=515 -'&'=516 -'&&'=517 -'!'=518 -'|'=519 -'||'=520 -'^'=521 -':'=522 -'->'=523 -'/*+'=524 -'*/'=525 -'/*'=526 -'@'=527 -'@@'=528 diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java deleted file mode 100644 index 04705bf6a90cf3..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserBaseListener.java +++ /dev/null @@ -1,7263 +0,0 @@ -// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 by ANTLR 4.13.1 - -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.tree.ErrorNode; -import org.antlr.v4.runtime.tree.TerminalNode; - -/** - * This class provides an empty implementation of {@link DorisParserListener}, - * which can be extended to create a listener which only needs to handle a subset - * of the available methods. - */ -@SuppressWarnings("CheckReturnValue") -public class DorisParserBaseListener implements DorisParserListener { - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultiStatements(DorisParser.MultiStatementsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultiStatements(DorisParser.MultiStatementsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSingleStatement(DorisParser.SingleStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSingleStatement(DorisParser.SingleStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCallProcedure(DorisParser.CallProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCallProcedure(DorisParser.CallProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateProcedure(DorisParser.CreateProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateProcedure(DorisParser.CreateProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropProcedure(DorisParser.DropProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropProcedure(DorisParser.DropProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowConfig(DorisParser.ShowConfigContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowConfig(DorisParser.ShowConfigContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStatementDefault(DorisParser.StatementDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStatementDefault(DorisParser.StatementDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnsupported(DorisParser.UnsupportedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnsupported(DorisParser.UnsupportedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateMTMV(DorisParser.CreateMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateMTMV(DorisParser.CreateMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshMTMV(DorisParser.RefreshMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshMTMV(DorisParser.RefreshMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterMTMV(DorisParser.AlterMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterMTMV(DorisParser.AlterMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropMTMV(DorisParser.DropMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropMTMV(DorisParser.DropMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPauseMTMV(DorisParser.PauseMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPauseMTMV(DorisParser.PauseMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResumeMTMV(DorisParser.ResumeMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResumeMTMV(DorisParser.ResumeMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPauseJob(DorisParser.PauseJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPauseJob(DorisParser.PauseJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropJob(DorisParser.DropJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropJob(DorisParser.DropJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResumeJob(DorisParser.ResumeJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResumeJob(DorisParser.ResumeJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelJobTask(DorisParser.CancelJobTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelJobTask(DorisParser.CancelJobTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddConstraint(DorisParser.AddConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddConstraint(DorisParser.AddConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropConstraint(DorisParser.DropConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropConstraint(DorisParser.DropConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowConstraint(DorisParser.ShowConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowConstraint(DorisParser.ShowConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInsertTable(DorisParser.InsertTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInsertTable(DorisParser.InsertTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUpdate(DorisParser.UpdateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUpdate(DorisParser.UpdateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDelete(DorisParser.DeleteContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDelete(DorisParser.DeleteContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLoad(DorisParser.LoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLoad(DorisParser.LoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExport(DorisParser.ExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExport(DorisParser.ExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplay(DorisParser.ReplayContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplay(DorisParser.ReplayContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTable(DorisParser.CreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTable(DorisParser.CreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateView(DorisParser.CreateViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateView(DorisParser.CreateViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateFile(DorisParser.CreateFileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateFile(DorisParser.CreateFileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateTableLike(DorisParser.CreateTableLikeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateTableLike(DorisParser.CreateTableLikeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateRole(DorisParser.CreateRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateRole(DorisParser.CreateRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateCatalog(DorisParser.CreateCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateCatalog(DorisParser.CreateCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBuildIndex(DorisParser.BuildIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBuildIndex(DorisParser.BuildIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateIndex(DorisParser.CreateIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateIndex(DorisParser.CreateIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterSystem(DorisParser.AlterSystemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterSystem(DorisParser.AlterSystemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterView(DorisParser.AlterViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterView(DorisParser.AlterViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterRole(DorisParser.AlterRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterRole(DorisParser.AlterRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterStorageVault(DorisParser.AlterStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterStorageVault(DorisParser.AlterStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterTable(DorisParser.AlterTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterTable(DorisParser.AlterTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterRepository(DorisParser.AlterRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterRepository(DorisParser.AlterRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropEncryptkey(DorisParser.DropEncryptkeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropEncryptkey(DorisParser.DropEncryptkeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropRole(DorisParser.DropRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropRole(DorisParser.DropRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropUser(DorisParser.DropUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropUser(DorisParser.DropUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropCatalog(DorisParser.DropCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropCatalog(DorisParser.DropCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropFile(DorisParser.DropFileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropFile(DorisParser.DropFileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropRepository(DorisParser.DropRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropRepository(DorisParser.DropRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropTable(DorisParser.DropTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropTable(DorisParser.DropTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropDatabase(DorisParser.DropDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropDatabase(DorisParser.DropDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropFunction(DorisParser.DropFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropFunction(DorisParser.DropFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropIndex(DorisParser.DropIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropIndex(DorisParser.DropIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowVariables(DorisParser.ShowVariablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowVariables(DorisParser.ShowVariablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowAuthors(DorisParser.ShowAuthorsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowAuthors(DorisParser.ShowAuthorsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowBroker(DorisParser.ShowBrokerContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowBroker(DorisParser.ShowBrokerContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowEvents(DorisParser.ShowEventsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowEvents(DorisParser.ShowEventsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowLastInsert(DorisParser.ShowLastInsertContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowLastInsert(DorisParser.ShowLastInsertContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCharset(DorisParser.ShowCharsetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCharset(DorisParser.ShowCharsetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDelete(DorisParser.ShowDeleteContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDelete(DorisParser.ShowDeleteContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowGrants(DorisParser.ShowGrantsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowGrants(DorisParser.ShowGrantsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowSyncJob(DorisParser.ShowSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowSyncJob(DorisParser.ShowSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowLoadProfile(DorisParser.ShowLoadProfileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowLoadProfile(DorisParser.ShowLoadProfileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowView(DorisParser.ShowViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowView(DorisParser.ShowViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowPlugins(DorisParser.ShowPluginsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowPlugins(DorisParser.ShowPluginsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowRepositories(DorisParser.ShowRepositoriesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowRepositories(DorisParser.ShowRepositoriesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateTable(DorisParser.ShowCreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateTable(DorisParser.ShowCreateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowProcessList(DorisParser.ShowProcessListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowProcessList(DorisParser.ShowProcessListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowRoles(DorisParser.ShowRolesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowRoles(DorisParser.ShowRolesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowPartitionId(DorisParser.ShowPartitionIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowPartitionId(DorisParser.ShowPartitionIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowPrivileges(DorisParser.ShowPrivilegesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowPrivileges(DorisParser.ShowPrivilegesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowProc(DorisParser.ShowProcContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowProc(DorisParser.ShowProcContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowSmallFiles(DorisParser.ShowSmallFilesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowSmallFiles(DorisParser.ShowSmallFilesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCatalog(DorisParser.ShowCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCatalog(DorisParser.ShowCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCatalogs(DorisParser.ShowCatalogsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCatalogs(DorisParser.ShowCatalogsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowUserProperties(DorisParser.ShowUserPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowUserProperties(DorisParser.ShowUserPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowAllProperties(DorisParser.ShowAllPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowAllProperties(DorisParser.ShowAllPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCollation(DorisParser.ShowCollationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCollation(DorisParser.ShowCollationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateView(DorisParser.ShowCreateViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateView(DorisParser.ShowCreateViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDataTypes(DorisParser.ShowDataTypesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDataTypes(DorisParser.ShowDataTypesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowData(DorisParser.ShowDataContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowData(DorisParser.ShowDataContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowBackends(DorisParser.ShowBackendsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowBackends(DorisParser.ShowBackendsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowStages(DorisParser.ShowStagesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowStages(DorisParser.ShowStagesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTriggers(DorisParser.ShowTriggersContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTriggers(DorisParser.ShowTriggersContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowFrontends(DorisParser.ShowFrontendsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowFrontends(DorisParser.ShowFrontendsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTableId(DorisParser.ShowTableIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTableId(DorisParser.ShowTableIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTrash(DorisParser.ShowTrashContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTrash(DorisParser.ShowTrashContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowStatus(DorisParser.ShowStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowStatus(DorisParser.ShowStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowWhitelist(DorisParser.ShowWhitelistContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowWhitelist(DorisParser.ShowWhitelistContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDataSkew(DorisParser.ShowDataSkewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDataSkew(DorisParser.ShowDataSkewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTableCreation(DorisParser.ShowTableCreationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTableCreation(DorisParser.ShowTableCreationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowQueryProfile(DorisParser.ShowQueryProfileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowQueryProfile(DorisParser.ShowQueryProfileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowConvertLsc(DorisParser.ShowConvertLscContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowConvertLsc(DorisParser.ShowConvertLscContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTables(DorisParser.ShowTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTables(DorisParser.ShowTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTableStatus(DorisParser.ShowTableStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTableStatus(DorisParser.ShowTableStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSync(DorisParser.SyncContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSync(DorisParser.SyncContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHelp(DorisParser.HelpContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHelp(DorisParser.HelpContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInstallPlugin(DorisParser.InstallPluginContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInstallPlugin(DorisParser.InstallPluginContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUninstallPlugin(DorisParser.UninstallPluginContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUninstallPlugin(DorisParser.UninstallPluginContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLockTables(DorisParser.LockTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLockTables(DorisParser.LockTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnlockTables(DorisParser.UnlockTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnlockTables(DorisParser.UnlockTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWarmUpCluster(DorisParser.WarmUpClusterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWarmUpCluster(DorisParser.WarmUpClusterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBackup(DorisParser.BackupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBackup(DorisParser.BackupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRestore(DorisParser.RestoreContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRestore(DorisParser.RestoreContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWarmUpItem(DorisParser.WarmUpItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWarmUpItem(DorisParser.WarmUpItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLockTable(DorisParser.LockTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLockTable(DorisParser.LockTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowRowPolicy(DorisParser.ShowRowPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowRowPolicy(DorisParser.ShowRowPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowStorageVault(DorisParser.ShowStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowStorageVault(DorisParser.ShowStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowOpenTables(DorisParser.ShowOpenTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowOpenTables(DorisParser.ShowOpenTablesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowViews(DorisParser.ShowViewsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowViews(DorisParser.ShowViewsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowDatabases(DorisParser.ShowDatabasesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowDatabases(DorisParser.ShowDatabasesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowColumns(DorisParser.ShowColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowColumns(DorisParser.ShowColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowLoad(DorisParser.ShowLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowLoad(DorisParser.ShowLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowExport(DorisParser.ShowExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowExport(DorisParser.ShowExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowAlterTable(DorisParser.ShowAlterTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowAlterTable(DorisParser.ShowAlterTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowPartitions(DorisParser.ShowPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowPartitions(DorisParser.ShowPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTabletId(DorisParser.ShowTabletIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTabletId(DorisParser.ShowTabletIdContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowBackup(DorisParser.ShowBackupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowBackup(DorisParser.ShowBackupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowRestore(DorisParser.ShowRestoreContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowRestore(DorisParser.ShowRestoreContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowResources(DorisParser.ShowResourcesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowResources(DorisParser.ShowResourcesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowSnapshot(DorisParser.ShowSnapshotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowSnapshot(DorisParser.ShowSnapshotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowFunctions(DorisParser.ShowFunctionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowFunctions(DorisParser.ShowFunctionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTypeCast(DorisParser.ShowTypeCastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTypeCast(DorisParser.ShowTypeCastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowIndex(DorisParser.ShowIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowIndex(DorisParser.ShowIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTransaction(DorisParser.ShowTransactionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTransaction(DorisParser.ShowTransactionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowQueryStats(DorisParser.ShowQueryStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowQueryStats(DorisParser.ShowQueryStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowBuildIndex(DorisParser.ShowBuildIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowBuildIndex(DorisParser.ShowBuildIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowClusters(DorisParser.ShowClustersContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowClusters(DorisParser.ShowClustersContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCopy(DorisParser.ShowCopyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCopy(DorisParser.ShowCopyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMysqlLoad(DorisParser.MysqlLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMysqlLoad(DorisParser.MysqlLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowCreateLoad(DorisParser.ShowCreateLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowCreateLoad(DorisParser.ShowCreateLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSeparator(DorisParser.SeparatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSeparator(DorisParser.SeparatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportColumns(DorisParser.ImportColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportColumns(DorisParser.ImportColumnsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportWhere(DorisParser.ImportWhereContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportWhere(DorisParser.ImportWhereContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportDeleteOn(DorisParser.ImportDeleteOnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportDeleteOn(DorisParser.ImportDeleteOnContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportSequence(DorisParser.ImportSequenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportSequence(DorisParser.ImportSequenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportPartitions(DorisParser.ImportPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportPartitions(DorisParser.ImportPartitionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportWhereStatement(DorisParser.ImportWhereStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportWhereStatement(DorisParser.ImportWhereStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterImportColumnDesc(DorisParser.ImportColumnDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitImportColumnDesc(DorisParser.ImportColumnDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterChannelDescription(DorisParser.ChannelDescriptionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitChannelDescription(DorisParser.ChannelDescriptionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshCatalog(DorisParser.RefreshCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshCatalog(DorisParser.RefreshCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshDatabase(DorisParser.RefreshDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshDatabase(DorisParser.RefreshDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshTable(DorisParser.RefreshTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshTable(DorisParser.RefreshTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCleanAllProfile(DorisParser.CleanAllProfileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCleanAllProfile(DorisParser.CleanAllProfileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCleanLabel(DorisParser.CleanLabelContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCleanLabel(DorisParser.CleanLabelContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshLdap(DorisParser.RefreshLdapContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshLdap(DorisParser.RefreshLdapContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCleanQueryStats(DorisParser.CleanQueryStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCleanQueryStats(DorisParser.CleanQueryStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelLoad(DorisParser.CancelLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelLoad(DorisParser.CancelLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelExport(DorisParser.CancelExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelExport(DorisParser.CancelExportContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelAlterTable(DorisParser.CancelAlterTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelAlterTable(DorisParser.CancelAlterTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelBackup(DorisParser.CancelBackupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelBackup(DorisParser.CancelBackupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCancelRestore(DorisParser.CancelRestoreContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCancelRestore(DorisParser.CancelRestoreContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminCompactTable(DorisParser.AdminCompactTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminCompactTable(DorisParser.AdminCompactTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRecoverDatabase(DorisParser.RecoverDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRecoverDatabase(DorisParser.RecoverDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRecoverTable(DorisParser.RecoverTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRecoverTable(DorisParser.RecoverTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRecoverPartition(DorisParser.RecoverPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRecoverPartition(DorisParser.RecoverPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminRepairTable(DorisParser.AdminRepairTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminRepairTable(DorisParser.AdminRepairTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBaseTableRef(DorisParser.BaseTableRefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBaseTableRef(DorisParser.BaseTableRefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWildWhere(DorisParser.WildWhereContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWildWhere(DorisParser.WildWhereContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransactionBegin(DorisParser.TransactionBeginContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransactionBegin(DorisParser.TransactionBeginContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTranscationCommit(DorisParser.TranscationCommitContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTranscationCommit(DorisParser.TranscationCommitContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransactionRollback(DorisParser.TransactionRollbackContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransactionRollback(DorisParser.TransactionRollbackContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGrantRole(DorisParser.GrantRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGrantRole(DorisParser.GrantRoleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPrivilege(DorisParser.PrivilegeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPrivilege(DorisParser.PrivilegeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPrivilegeList(DorisParser.PrivilegeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPrivilegeList(DorisParser.PrivilegeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterResource(DorisParser.AlterResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterResource(DorisParser.AlterResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterUser(DorisParser.AlterUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterUser(DorisParser.AlterUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddBackendClause(DorisParser.AddBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddBackendClause(DorisParser.AddBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropBackendClause(DorisParser.DropBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropBackendClause(DorisParser.DropBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddObserverClause(DorisParser.AddObserverClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddObserverClause(DorisParser.AddObserverClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropObserverClause(DorisParser.DropObserverClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropObserverClause(DorisParser.DropObserverClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddFollowerClause(DorisParser.AddFollowerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddFollowerClause(DorisParser.AddFollowerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropFollowerClause(DorisParser.DropFollowerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropFollowerClause(DorisParser.DropFollowerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddBrokerClause(DorisParser.AddBrokerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddBrokerClause(DorisParser.AddBrokerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropBrokerClause(DorisParser.DropBrokerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropBrokerClause(DorisParser.DropBrokerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropRollupClause(DorisParser.DropRollupClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropRollupClause(DorisParser.DropRollupClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddRollupClause(DorisParser.AddRollupClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddRollupClause(DorisParser.AddRollupClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddColumnClause(DorisParser.AddColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddColumnClause(DorisParser.AddColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddColumnsClause(DorisParser.AddColumnsClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddColumnsClause(DorisParser.AddColumnsClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropColumnClause(DorisParser.DropColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropColumnClause(DorisParser.DropColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddPartitionClause(DorisParser.AddPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddPartitionClause(DorisParser.AddPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropPartitionClause(DorisParser.DropPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropPartitionClause(DorisParser.DropPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenameClause(DorisParser.RenameClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenameClause(DorisParser.RenameClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenameRollupClause(DorisParser.RenameRollupClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenameRollupClause(DorisParser.RenameRollupClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRenameColumnClause(DorisParser.RenameColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRenameColumnClause(DorisParser.RenameColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAddIndexClause(DorisParser.AddIndexClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAddIndexClause(DorisParser.AddIndexClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropIndexClause(DorisParser.DropIndexClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropIndexClause(DorisParser.DropIndexClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColumnPosition(DorisParser.ColumnPositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColumnPosition(DorisParser.ColumnPositionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterToRollup(DorisParser.ToRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitToRollup(DorisParser.ToRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFromRollup(DorisParser.FromRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFromRollup(DorisParser.FromRollupContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropView(DorisParser.DropViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropView(DorisParser.DropViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropResource(DorisParser.DropResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropResource(DorisParser.DropResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropRowPolicy(DorisParser.DropRowPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropRowPolicy(DorisParser.DropRowPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropStage(DorisParser.DropStageContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropStage(DorisParser.DropStageContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowAnalyze(DorisParser.ShowAnalyzeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowAnalyze(DorisParser.ShowAnalyzeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnalyzeTable(DorisParser.AnalyzeTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnalyzeTable(DorisParser.AnalyzeTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterTableStats(DorisParser.AlterTableStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterTableStats(DorisParser.AlterTableStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAlterColumnStats(DorisParser.AlterColumnStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAlterColumnStats(DorisParser.AlterColumnStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropStats(DorisParser.DropStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropStats(DorisParser.DropStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropCachedStats(DorisParser.DropCachedStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropCachedStats(DorisParser.DropCachedStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropExpiredStats(DorisParser.DropExpiredStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropExpiredStats(DorisParser.DropExpiredStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowTableStats(DorisParser.ShowTableStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowTableStats(DorisParser.ShowTableStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowIndexStats(DorisParser.ShowIndexStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowIndexStats(DorisParser.ShowIndexStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowColumnStats(DorisParser.ShowColumnStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowColumnStats(DorisParser.ShowColumnStatsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateDatabase(DorisParser.CreateDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateDatabase(DorisParser.CreateDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateUser(DorisParser.CreateUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateUser(DorisParser.CreateUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateRepository(DorisParser.CreateRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateRepository(DorisParser.CreateRepositoryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateResource(DorisParser.CreateResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateResource(DorisParser.CreateResourceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateStorageVault(DorisParser.CreateStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateStorageVault(DorisParser.CreateStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCreateStage(DorisParser.CreateStageContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCreateStage(DorisParser.CreateStageContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStorageBackend(DorisParser.StorageBackendContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStorageBackend(DorisParser.StorageBackendContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPasswordOption(DorisParser.PasswordOptionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPasswordOption(DorisParser.PasswordOptionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionArguments(DorisParser.FunctionArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionArguments(DorisParser.FunctionArgumentsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDataTypeList(DorisParser.DataTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDataTypeList(DorisParser.DataTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetOptions(DorisParser.SetOptionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetOptions(DorisParser.SetOptionsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetUserProperties(DorisParser.SetUserPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetUserProperties(DorisParser.SetUserPropertiesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetTransaction(DorisParser.SetTransactionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetTransaction(DorisParser.SetTransactionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetNames(DorisParser.SetNamesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetNames(DorisParser.SetNamesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetCharset(DorisParser.SetCharsetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetCharset(DorisParser.SetCharsetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetCollate(DorisParser.SetCollateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetCollate(DorisParser.SetCollateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetPassword(DorisParser.SetPasswordContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetPassword(DorisParser.SetPasswordContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetSystemVariable(DorisParser.SetSystemVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetSystemVariable(DorisParser.SetSystemVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetUserVariable(DorisParser.SetUserVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetUserVariable(DorisParser.SetUserVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIsolationLevel(DorisParser.IsolationLevelContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIsolationLevel(DorisParser.IsolationLevelContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSwitchCatalog(DorisParser.SwitchCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSwitchCatalog(DorisParser.SwitchCatalogContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUseDatabase(DorisParser.UseDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUseDatabase(DorisParser.UseDatabaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUseCloudCluster(DorisParser.UseCloudClusterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUseCloudCluster(DorisParser.UseCloudClusterContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTruncateTable(DorisParser.TruncateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTruncateTable(DorisParser.TruncateTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCopyInto(DorisParser.CopyIntoContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCopyInto(DorisParser.CopyIntoContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStageAndPattern(DorisParser.StageAndPatternContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStageAndPattern(DorisParser.StageAndPatternContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterKillConnection(DorisParser.KillConnectionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitKillConnection(DorisParser.KillConnectionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterKillQuery(DorisParser.KillQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitKillQuery(DorisParser.KillQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeTableAll(DorisParser.DescribeTableAllContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeTableAll(DorisParser.DescribeTableAllContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDescribeTable(DorisParser.DescribeTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDescribeTable(DorisParser.DescribeTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConstraint(DorisParser.ConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstraint(DorisParser.ConstraintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionSpec(DorisParser.PartitionSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionSpec(DorisParser.PartitionSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionTable(DorisParser.PartitionTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionTable(DorisParser.PartitionTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDataDesc(DorisParser.DataDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDataDesc(DorisParser.DataDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStatementScope(DorisParser.StatementScopeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStatementScope(DorisParser.StatementScopeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBuildMode(DorisParser.BuildModeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBuildMode(DorisParser.BuildModeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshTrigger(DorisParser.RefreshTriggerContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshTrigger(DorisParser.RefreshTriggerContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshSchedule(DorisParser.RefreshScheduleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshSchedule(DorisParser.RefreshScheduleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRefreshMethod(DorisParser.RefreshMethodContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRefreshMethod(DorisParser.RefreshMethodContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMvPartition(DorisParser.MvPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMvPartition(DorisParser.MvPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierOrText(DorisParser.IdentifierOrTextContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierOrText(DorisParser.IdentifierOrTextContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUserIdentify(DorisParser.UserIdentifyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUserIdentify(DorisParser.UserIdentifyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExplain(DorisParser.ExplainContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExplain(DorisParser.ExplainContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExplainCommand(DorisParser.ExplainCommandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExplainCommand(DorisParser.ExplainCommandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPlanType(DorisParser.PlanTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPlanType(DorisParser.PlanTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplayCommand(DorisParser.ReplayCommandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplayCommand(DorisParser.ReplayCommandContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplayType(DorisParser.ReplayTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplayType(DorisParser.ReplayTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMergeType(DorisParser.MergeTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMergeType(DorisParser.MergeTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPreFilterClause(DorisParser.PreFilterClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPreFilterClause(DorisParser.PreFilterClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDeleteOnClause(DorisParser.DeleteOnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDeleteOnClause(DorisParser.DeleteOnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSequenceColClause(DorisParser.SequenceColClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSequenceColClause(DorisParser.SequenceColClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColFromPath(DorisParser.ColFromPathContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColFromPath(DorisParser.ColFromPathContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColMappingList(DorisParser.ColMappingListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColMappingList(DorisParser.ColMappingListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMappingExpr(DorisParser.MappingExprContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMappingExpr(DorisParser.MappingExprContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterResourceDesc(DorisParser.ResourceDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitResourceDesc(DorisParser.ResourceDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMysqlDataDesc(DorisParser.MysqlDataDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMysqlDataDesc(DorisParser.MysqlDataDescContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSkipLines(DorisParser.SkipLinesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSkipLines(DorisParser.SkipLinesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterOutFileClause(DorisParser.OutFileClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitOutFileClause(DorisParser.OutFileClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQuery(DorisParser.QueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQuery(DorisParser.QueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQueryTermDefault(DorisParser.QueryTermDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQueryTermDefault(DorisParser.QueryTermDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetOperation(DorisParser.SetOperationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetOperation(DorisParser.SetOperationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSetQuantifier(DorisParser.SetQuantifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSetQuantifier(DorisParser.SetQuantifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSubquery(DorisParser.SubqueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSubquery(DorisParser.SubqueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterValuesTable(DorisParser.ValuesTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitValuesTable(DorisParser.ValuesTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCte(DorisParser.CteContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCte(DorisParser.CteContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAliasQuery(DorisParser.AliasQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAliasQuery(DorisParser.AliasQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColumnAliases(DorisParser.ColumnAliasesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColumnAliases(DorisParser.ColumnAliasesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSelectClause(DorisParser.SelectClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSelectClause(DorisParser.SelectClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSelectColumnClause(DorisParser.SelectColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSelectColumnClause(DorisParser.SelectColumnClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWhereClause(DorisParser.WhereClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWhereClause(DorisParser.WhereClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFromClause(DorisParser.FromClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFromClause(DorisParser.FromClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntoClause(DorisParser.IntoClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntoClause(DorisParser.IntoClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBulkCollectClause(DorisParser.BulkCollectClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBulkCollectClause(DorisParser.BulkCollectClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableRow(DorisParser.TableRowContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableRow(DorisParser.TableRowContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRelations(DorisParser.RelationsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRelations(DorisParser.RelationsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRelation(DorisParser.RelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRelation(DorisParser.RelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterJoinRelation(DorisParser.JoinRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitJoinRelation(DorisParser.JoinRelationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBracketRelationHint(DorisParser.BracketRelationHintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBracketRelationHint(DorisParser.BracketRelationHintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCommentRelationHint(DorisParser.CommentRelationHintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCommentRelationHint(DorisParser.CommentRelationHintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAggClause(DorisParser.AggClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAggClause(DorisParser.AggClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGroupingElement(DorisParser.GroupingElementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGroupingElement(DorisParser.GroupingElementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterGroupingSet(DorisParser.GroupingSetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitGroupingSet(DorisParser.GroupingSetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHavingClause(DorisParser.HavingClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHavingClause(DorisParser.HavingClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQualifyClause(DorisParser.QualifyClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifyClause(DorisParser.QualifyClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSelectHint(DorisParser.SelectHintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSelectHint(DorisParser.SelectHintContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHintStatement(DorisParser.HintStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHintStatement(DorisParser.HintStatementContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterHintAssignment(DorisParser.HintAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitHintAssignment(DorisParser.HintAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUpdateAssignment(DorisParser.UpdateAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUpdateAssignment(DorisParser.UpdateAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLateralView(DorisParser.LateralViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLateralView(DorisParser.LateralViewContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQueryOrganization(DorisParser.QueryOrganizationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQueryOrganization(DorisParser.QueryOrganizationContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSortClause(DorisParser.SortClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSortClause(DorisParser.SortClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSortItem(DorisParser.SortItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSortItem(DorisParser.SortItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLimitClause(DorisParser.LimitClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLimitClause(DorisParser.LimitClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionClause(DorisParser.PartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionClause(DorisParser.PartitionClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterJoinType(DorisParser.JoinTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitJoinType(DorisParser.JoinTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterJoinCriteria(DorisParser.JoinCriteriaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitJoinCriteria(DorisParser.JoinCriteriaContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierList(DorisParser.IdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierList(DorisParser.IdentifierListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifierSeq(DorisParser.IdentifierSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifierSeq(DorisParser.IdentifierSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterOptScanParams(DorisParser.OptScanParamsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitOptScanParams(DorisParser.OptScanParamsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableName(DorisParser.TableNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableName(DorisParser.TableNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAliasedQuery(DorisParser.AliasedQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAliasedQuery(DorisParser.AliasedQueryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableValuedFunction(DorisParser.TableValuedFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableValuedFunction(DorisParser.TableValuedFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRelationList(DorisParser.RelationListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRelationList(DorisParser.RelationListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMaterializedViewName(DorisParser.MaterializedViewNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMaterializedViewName(DorisParser.MaterializedViewNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyClause(DorisParser.PropertyClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyClause(DorisParser.PropertyClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyItemList(DorisParser.PropertyItemListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyItemList(DorisParser.PropertyItemListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyItem(DorisParser.PropertyItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyItem(DorisParser.PropertyItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyKey(DorisParser.PropertyKeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyKey(DorisParser.PropertyKeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPropertyValue(DorisParser.PropertyValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPropertyValue(DorisParser.PropertyValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableAlias(DorisParser.TableAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableAlias(DorisParser.TableAliasContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColumnDefs(DorisParser.ColumnDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColumnDefs(DorisParser.ColumnDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColumnDef(DorisParser.ColumnDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColumnDef(DorisParser.ColumnDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIndexDefs(DorisParser.IndexDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIndexDefs(DorisParser.IndexDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIndexDef(DorisParser.IndexDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIndexDef(DorisParser.IndexDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionsDef(DorisParser.PartitionsDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionsDef(DorisParser.PartitionsDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionDef(DorisParser.PartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionDef(DorisParser.PartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStepPartitionDef(DorisParser.StepPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStepPartitionDef(DorisParser.StepPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInPartitionDef(DorisParser.InPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInPartitionDef(DorisParser.InPartitionDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionValueList(DorisParser.PartitionValueListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionValueList(DorisParser.PartitionValueListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPartitionValueDef(DorisParser.PartitionValueDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPartitionValueDef(DorisParser.PartitionValueDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRollupDefs(DorisParser.RollupDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRollupDefs(DorisParser.RollupDefsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRollupDef(DorisParser.RollupDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRollupDef(DorisParser.RollupDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAggTypeDef(DorisParser.AggTypeDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAggTypeDef(DorisParser.AggTypeDefContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTabletList(DorisParser.TabletListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTabletList(DorisParser.TabletListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInlineTable(DorisParser.InlineTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInlineTable(DorisParser.InlineTableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamedExpression(DorisParser.NamedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamedExpression(DorisParser.NamedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExpression(DorisParser.ExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExpression(DorisParser.ExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLambdaExpression(DorisParser.LambdaExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLambdaExpression(DorisParser.LambdaExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExist(DorisParser.ExistContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExist(DorisParser.ExistContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLogicalNot(DorisParser.LogicalNotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLogicalNot(DorisParser.LogicalNotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPredicated(DorisParser.PredicatedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPredicated(DorisParser.PredicatedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIsnull(DorisParser.IsnullContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIsnull(DorisParser.IsnullContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIs_not_null_pred(DorisParser.Is_not_null_predContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIs_not_null_pred(DorisParser.Is_not_null_predContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLogicalBinary(DorisParser.LogicalBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLogicalBinary(DorisParser.LogicalBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDoublePipes(DorisParser.DoublePipesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDoublePipes(DorisParser.DoublePipesContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRowConstructor(DorisParser.RowConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRowConstructor(DorisParser.RowConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRowConstructorItem(DorisParser.RowConstructorItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRowConstructorItem(DorisParser.RowConstructorItemContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPredicate(DorisParser.PredicateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPredicate(DorisParser.PredicateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComparison(DorisParser.ComparisonContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComparison(DorisParser.ComparisonContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDereference(DorisParser.DereferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDereference(DorisParser.DereferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCurrentDate(DorisParser.CurrentDateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCurrentDate(DorisParser.CurrentDateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCast(DorisParser.CastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCast(DorisParser.CastContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUserVariable(DorisParser.UserVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUserVariable(DorisParser.UserVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterElementAt(DorisParser.ElementAtContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitElementAt(DorisParser.ElementAtContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLocalTimestamp(DorisParser.LocalTimestampContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLocalTimestamp(DorisParser.LocalTimestampContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCharFunction(DorisParser.CharFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCharFunction(DorisParser.CharFunctionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntervalLiteral(DorisParser.IntervalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntervalLiteral(DorisParser.IntervalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSimpleCase(DorisParser.SimpleCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSimpleCase(DorisParser.SimpleCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterColumnReference(DorisParser.ColumnReferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitColumnReference(DorisParser.ColumnReferenceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStar(DorisParser.StarContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStar(DorisParser.StarContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSessionUser(DorisParser.SessionUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSessionUser(DorisParser.SessionUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConvertType(DorisParser.ConvertTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConvertType(DorisParser.ConvertTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConvertCharSet(DorisParser.ConvertCharSetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConvertCharSet(DorisParser.ConvertCharSetContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSubqueryExpression(DorisParser.SubqueryExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSubqueryExpression(DorisParser.SubqueryExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEncryptKey(DorisParser.EncryptKeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEncryptKey(DorisParser.EncryptKeyContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCurrentTime(DorisParser.CurrentTimeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCurrentTime(DorisParser.CurrentTimeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLocalTime(DorisParser.LocalTimeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLocalTime(DorisParser.LocalTimeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSystemVariable(DorisParser.SystemVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSystemVariable(DorisParser.SystemVariableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCollate(DorisParser.CollateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCollate(DorisParser.CollateContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCurrentUser(DorisParser.CurrentUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCurrentUser(DorisParser.CurrentUserContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterConstantDefault(DorisParser.ConstantDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitConstantDefault(DorisParser.ConstantDefaultContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExtract(DorisParser.ExtractContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExtract(DorisParser.ExtractContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCurrentTimestamp(DorisParser.CurrentTimestampContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCurrentTimestamp(DorisParser.CurrentTimestampContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionCall(DorisParser.FunctionCallContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionCall(DorisParser.FunctionCallContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArraySlice(DorisParser.ArraySliceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArraySlice(DorisParser.ArraySliceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSearchedCase(DorisParser.SearchedCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSearchedCase(DorisParser.SearchedCaseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterExcept(DorisParser.ExceptContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitExcept(DorisParser.ExceptContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterReplace(DorisParser.ReplaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitReplace(DorisParser.ReplaceContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCastDataType(DorisParser.CastDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCastDataType(DorisParser.CastDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWindowSpec(DorisParser.WindowSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWindowSpec(DorisParser.WindowSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWindowFrame(DorisParser.WindowFrameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWindowFrame(DorisParser.WindowFrameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFrameUnits(DorisParser.FrameUnitsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFrameUnits(DorisParser.FrameUnitsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterFrameBoundary(DorisParser.FrameBoundaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitFrameBoundary(DorisParser.FrameBoundaryContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQualifiedName(DorisParser.QualifiedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQualifiedName(DorisParser.QualifiedNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNullLiteral(DorisParser.NullLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNullLiteral(DorisParser.NullLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTypeConstructor(DorisParser.TypeConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTypeConstructor(DorisParser.TypeConstructorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNumericLiteral(DorisParser.NumericLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNumericLiteral(DorisParser.NumericLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBooleanLiteral(DorisParser.BooleanLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBooleanLiteral(DorisParser.BooleanLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStringLiteral(DorisParser.StringLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStringLiteral(DorisParser.StringLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterArrayLiteral(DorisParser.ArrayLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitArrayLiteral(DorisParser.ArrayLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterMapLiteral(DorisParser.MapLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitMapLiteral(DorisParser.MapLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStructLiteral(DorisParser.StructLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStructLiteral(DorisParser.StructLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPlaceholder(DorisParser.PlaceholderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPlaceholder(DorisParser.PlaceholderContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComparisonOperator(DorisParser.ComparisonOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComparisonOperator(DorisParser.ComparisonOperatorContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterBooleanValue(DorisParser.BooleanValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitBooleanValue(DorisParser.BooleanValueContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterWhenClause(DorisParser.WhenClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitWhenClause(DorisParser.WhenClauseContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterInterval(DorisParser.IntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitInterval(DorisParser.IntervalContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnitIdentifier(DorisParser.UnitIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnitIdentifier(DorisParser.UnitIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComplexDataType(DorisParser.ComplexDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComplexDataType(DorisParser.ComplexDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterAggStateDataType(DorisParser.AggStateDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitAggStateDataType(DorisParser.AggStateDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComplexColTypeList(DorisParser.ComplexColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComplexColTypeList(DorisParser.ComplexColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterComplexColType(DorisParser.ComplexColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitComplexColType(DorisParser.ComplexColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariantSubColType(DorisParser.VariantSubColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariantSubColType(DorisParser.VariantSubColTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterCommentSpec(DorisParser.CommentSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitCommentSpec(DorisParser.CommentSpecContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSample(DorisParser.SampleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSample(DorisParser.SampleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSampleByPercentile(DorisParser.SampleByPercentileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSampleByPercentile(DorisParser.SampleByPercentileContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterSampleByRows(DorisParser.SampleByRowsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitSampleByRows(DorisParser.SampleByRowsContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterTableSnapshot(DorisParser.TableSnapshotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitTableSnapshot(DorisParser.TableSnapshotContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterErrorIdent(DorisParser.ErrorIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitErrorIdent(DorisParser.ErrorIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterRealIdent(DorisParser.RealIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitRealIdent(DorisParser.RealIdentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIdentifier(DorisParser.IdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIdentifier(DorisParser.IdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterIntegerLiteral(DorisParser.IntegerLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitIntegerLiteral(DorisParser.IntegerLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterDecimalLiteral(DorisParser.DecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitDecimalLiteral(DorisParser.DecimalLiteralContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNonReserved(DorisParser.NonReservedContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNonReserved(DorisParser.NonReservedContext ctx) { } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterEveryRule(ParserRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitEveryRule(ParserRuleContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void visitTerminal(TerminalNode node) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void visitErrorNode(ErrorNode node) { } -} \ No newline at end of file diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java deleted file mode 100644 index 83b8a7b66bc0bf..00000000000000 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/.antlr/DorisParserListener.java +++ /dev/null @@ -1,6893 +0,0 @@ -// Generated from /mnt/disk1/sunchenyang/doris/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.tree.ParseTreeListener; - -/** - * This interface defines a complete listener for a parse tree produced by - * {@link DorisParser}. - */ -public interface DorisParserListener extends ParseTreeListener { - /** - * Enter a parse tree produced by {@link DorisParser#multiStatements}. - * @param ctx the parse tree - */ - void enterMultiStatements(DorisParser.MultiStatementsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#multiStatements}. - * @param ctx the parse tree - */ - void exitMultiStatements(DorisParser.MultiStatementsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#singleStatement}. - * @param ctx the parse tree - */ - void enterSingleStatement(DorisParser.SingleStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#singleStatement}. - * @param ctx the parse tree - */ - void exitSingleStatement(DorisParser.SingleStatementContext ctx); - /** - * Enter a parse tree produced by the {@code statementBaseAlias} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx); - /** - * Exit a parse tree produced by the {@code statementBaseAlias} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitStatementBaseAlias(DorisParser.StatementBaseAliasContext ctx); - /** - * Enter a parse tree produced by the {@code callProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterCallProcedure(DorisParser.CallProcedureContext ctx); - /** - * Exit a parse tree produced by the {@code callProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitCallProcedure(DorisParser.CallProcedureContext ctx); - /** - * Enter a parse tree produced by the {@code createProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterCreateProcedure(DorisParser.CreateProcedureContext ctx); - /** - * Exit a parse tree produced by the {@code createProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitCreateProcedure(DorisParser.CreateProcedureContext ctx); - /** - * Enter a parse tree produced by the {@code dropProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterDropProcedure(DorisParser.DropProcedureContext ctx); - /** - * Exit a parse tree produced by the {@code dropProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitDropProcedure(DorisParser.DropProcedureContext ctx); - /** - * Enter a parse tree produced by the {@code showProcedureStatus} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx); - /** - * Exit a parse tree produced by the {@code showProcedureStatus} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitShowProcedureStatus(DorisParser.ShowProcedureStatusContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateProcedure} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitShowCreateProcedure(DorisParser.ShowCreateProcedureContext ctx); - /** - * Enter a parse tree produced by the {@code showConfig} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void enterShowConfig(DorisParser.ShowConfigContext ctx); - /** - * Exit a parse tree produced by the {@code showConfig} - * labeled alternative in {@link DorisParser#statement}. - * @param ctx the parse tree - */ - void exitShowConfig(DorisParser.ShowConfigContext ctx); - /** - * Enter a parse tree produced by the {@code statementDefault} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterStatementDefault(DorisParser.StatementDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code statementDefault} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitStatementDefault(DorisParser.StatementDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code supportedDmlStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedDmlStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedDmlStatementAlias(DorisParser.SupportedDmlStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedCreateStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedCreateStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedCreateStatementAlias(DorisParser.SupportedCreateStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedAlterStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedAlterStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedAlterStatementAlias(DorisParser.SupportedAlterStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code materializedViewStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code materializedViewStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitMaterializedViewStatementAlias(DorisParser.MaterializedViewStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedJobStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedJobStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedJobStatementAlias(DorisParser.SupportedJobStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code constraintStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code constraintStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitConstraintStatementAlias(DorisParser.ConstraintStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedCleanStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedCleanStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedCleanStatementAlias(DorisParser.SupportedCleanStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedDescribeStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedDescribeStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedDescribeStatementAlias(DorisParser.SupportedDescribeStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedDropStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedDropStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedDropStatementAlias(DorisParser.SupportedDropStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedSetStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedSetStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedSetStatementAlias(DorisParser.SupportedSetStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedUnsetStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedUnsetStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedUnsetStatementAlias(DorisParser.SupportedUnsetStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedRefreshStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedRefreshStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedRefreshStatementAlias(DorisParser.SupportedRefreshStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedShowStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedShowStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedShowStatementAlias(DorisParser.SupportedShowStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedLoadStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedLoadStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedLoadStatementAlias(DorisParser.SupportedLoadStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedCancelStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedCancelStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedCancelStatementAlias(DorisParser.SupportedCancelStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedRecoverStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedRecoverStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedRecoverStatementAlias(DorisParser.SupportedRecoverStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedAdminStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedAdminStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedAdminStatementAlias(DorisParser.SupportedAdminStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedUseStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedUseStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedUseStatementAlias(DorisParser.SupportedUseStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedOtherStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedOtherStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedOtherStatementAlias(DorisParser.SupportedOtherStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code supportedStatsStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx); - /** - * Exit a parse tree produced by the {@code supportedStatsStatementAlias} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitSupportedStatsStatementAlias(DorisParser.SupportedStatsStatementAliasContext ctx); - /** - * Enter a parse tree produced by the {@code unsupported} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void enterUnsupported(DorisParser.UnsupportedContext ctx); - /** - * Exit a parse tree produced by the {@code unsupported} - * labeled alternative in {@link DorisParser#statementBase}. - * @param ctx the parse tree - */ - void exitUnsupported(DorisParser.UnsupportedContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#unsupportedStatement}. - * @param ctx the parse tree - */ - void enterUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#unsupportedStatement}. - * @param ctx the parse tree - */ - void exitUnsupportedStatement(DorisParser.UnsupportedStatementContext ctx); - /** - * Enter a parse tree produced by the {@code createMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterCreateMTMV(DorisParser.CreateMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code createMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitCreateMTMV(DorisParser.CreateMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code refreshMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterRefreshMTMV(DorisParser.RefreshMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code refreshMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitRefreshMTMV(DorisParser.RefreshMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code alterMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterAlterMTMV(DorisParser.AlterMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code alterMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitAlterMTMV(DorisParser.AlterMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code dropMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterDropMTMV(DorisParser.DropMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code dropMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitDropMTMV(DorisParser.DropMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code pauseMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterPauseMTMV(DorisParser.PauseMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code pauseMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitPauseMTMV(DorisParser.PauseMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code resumeMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterResumeMTMV(DorisParser.ResumeMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code resumeMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitResumeMTMV(DorisParser.ResumeMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code cancelMTMVTask} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx); - /** - * Exit a parse tree produced by the {@code cancelMTMVTask} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitCancelMTMVTask(DorisParser.CancelMTMVTaskContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void enterShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateMTMV} - * labeled alternative in {@link DorisParser#materializedViewStatement}. - * @param ctx the parse tree - */ - void exitShowCreateMTMV(DorisParser.ShowCreateMTMVContext ctx); - /** - * Enter a parse tree produced by the {@code createScheduledJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void enterCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx); - /** - * Exit a parse tree produced by the {@code createScheduledJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void exitCreateScheduledJob(DorisParser.CreateScheduledJobContext ctx); - /** - * Enter a parse tree produced by the {@code pauseJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void enterPauseJob(DorisParser.PauseJobContext ctx); - /** - * Exit a parse tree produced by the {@code pauseJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void exitPauseJob(DorisParser.PauseJobContext ctx); - /** - * Enter a parse tree produced by the {@code dropJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void enterDropJob(DorisParser.DropJobContext ctx); - /** - * Exit a parse tree produced by the {@code dropJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void exitDropJob(DorisParser.DropJobContext ctx); - /** - * Enter a parse tree produced by the {@code resumeJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void enterResumeJob(DorisParser.ResumeJobContext ctx); - /** - * Exit a parse tree produced by the {@code resumeJob} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void exitResumeJob(DorisParser.ResumeJobContext ctx); - /** - * Enter a parse tree produced by the {@code cancelJobTask} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void enterCancelJobTask(DorisParser.CancelJobTaskContext ctx); - /** - * Exit a parse tree produced by the {@code cancelJobTask} - * labeled alternative in {@link DorisParser#supportedJobStatement}. - * @param ctx the parse tree - */ - void exitCancelJobTask(DorisParser.CancelJobTaskContext ctx); - /** - * Enter a parse tree produced by the {@code addConstraint} - * labeled alternative in {@link DorisParser#constraintStatement}. - * @param ctx the parse tree - */ - void enterAddConstraint(DorisParser.AddConstraintContext ctx); - /** - * Exit a parse tree produced by the {@code addConstraint} - * labeled alternative in {@link DorisParser#constraintStatement}. - * @param ctx the parse tree - */ - void exitAddConstraint(DorisParser.AddConstraintContext ctx); - /** - * Enter a parse tree produced by the {@code dropConstraint} - * labeled alternative in {@link DorisParser#constraintStatement}. - * @param ctx the parse tree - */ - void enterDropConstraint(DorisParser.DropConstraintContext ctx); - /** - * Exit a parse tree produced by the {@code dropConstraint} - * labeled alternative in {@link DorisParser#constraintStatement}. - * @param ctx the parse tree - */ - void exitDropConstraint(DorisParser.DropConstraintContext ctx); - /** - * Enter a parse tree produced by the {@code showConstraint} - * labeled alternative in {@link DorisParser#constraintStatement}. - * @param ctx the parse tree - */ - void enterShowConstraint(DorisParser.ShowConstraintContext ctx); - /** - * Exit a parse tree produced by the {@code showConstraint} - * labeled alternative in {@link DorisParser#constraintStatement}. - * @param ctx the parse tree - */ - void exitShowConstraint(DorisParser.ShowConstraintContext ctx); - /** - * Enter a parse tree produced by the {@code insertTable} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void enterInsertTable(DorisParser.InsertTableContext ctx); - /** - * Exit a parse tree produced by the {@code insertTable} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void exitInsertTable(DorisParser.InsertTableContext ctx); - /** - * Enter a parse tree produced by the {@code update} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void enterUpdate(DorisParser.UpdateContext ctx); - /** - * Exit a parse tree produced by the {@code update} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void exitUpdate(DorisParser.UpdateContext ctx); - /** - * Enter a parse tree produced by the {@code delete} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void enterDelete(DorisParser.DeleteContext ctx); - /** - * Exit a parse tree produced by the {@code delete} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void exitDelete(DorisParser.DeleteContext ctx); - /** - * Enter a parse tree produced by the {@code load} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void enterLoad(DorisParser.LoadContext ctx); - /** - * Exit a parse tree produced by the {@code load} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void exitLoad(DorisParser.LoadContext ctx); - /** - * Enter a parse tree produced by the {@code export} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void enterExport(DorisParser.ExportContext ctx); - /** - * Exit a parse tree produced by the {@code export} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void exitExport(DorisParser.ExportContext ctx); - /** - * Enter a parse tree produced by the {@code replay} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void enterReplay(DorisParser.ReplayContext ctx); - /** - * Exit a parse tree produced by the {@code replay} - * labeled alternative in {@link DorisParser#supportedDmlStatement}. - * @param ctx the parse tree - */ - void exitReplay(DorisParser.ReplayContext ctx); - /** - * Enter a parse tree produced by the {@code createTable} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateTable(DorisParser.CreateTableContext ctx); - /** - * Exit a parse tree produced by the {@code createTable} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateTable(DorisParser.CreateTableContext ctx); - /** - * Enter a parse tree produced by the {@code createView} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateView(DorisParser.CreateViewContext ctx); - /** - * Exit a parse tree produced by the {@code createView} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateView(DorisParser.CreateViewContext ctx); - /** - * Enter a parse tree produced by the {@code createFile} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateFile(DorisParser.CreateFileContext ctx); - /** - * Exit a parse tree produced by the {@code createFile} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateFile(DorisParser.CreateFileContext ctx); - /** - * Enter a parse tree produced by the {@code createTableLike} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateTableLike(DorisParser.CreateTableLikeContext ctx); - /** - * Exit a parse tree produced by the {@code createTableLike} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateTableLike(DorisParser.CreateTableLikeContext ctx); - /** - * Enter a parse tree produced by the {@code createRole} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateRole(DorisParser.CreateRoleContext ctx); - /** - * Exit a parse tree produced by the {@code createRole} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateRole(DorisParser.CreateRoleContext ctx); - /** - * Enter a parse tree produced by the {@code createWorkloadGroup} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx); - /** - * Exit a parse tree produced by the {@code createWorkloadGroup} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateWorkloadGroup(DorisParser.CreateWorkloadGroupContext ctx); - /** - * Enter a parse tree produced by the {@code createCatalog} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateCatalog(DorisParser.CreateCatalogContext ctx); - /** - * Exit a parse tree produced by the {@code createCatalog} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateCatalog(DorisParser.CreateCatalogContext ctx); - /** - * Enter a parse tree produced by the {@code createRowPolicy} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx); - /** - * Exit a parse tree produced by the {@code createRowPolicy} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateRowPolicy(DorisParser.CreateRowPolicyContext ctx); - /** - * Enter a parse tree produced by the {@code createStoragePolicy} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx); - /** - * Exit a parse tree produced by the {@code createStoragePolicy} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateStoragePolicy(DorisParser.CreateStoragePolicyContext ctx); - /** - * Enter a parse tree produced by the {@code buildIndex} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterBuildIndex(DorisParser.BuildIndexContext ctx); - /** - * Exit a parse tree produced by the {@code buildIndex} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitBuildIndex(DorisParser.BuildIndexContext ctx); - /** - * Enter a parse tree produced by the {@code createIndex} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateIndex(DorisParser.CreateIndexContext ctx); - /** - * Exit a parse tree produced by the {@code createIndex} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateIndex(DorisParser.CreateIndexContext ctx); - /** - * Enter a parse tree produced by the {@code createSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx); - /** - * Exit a parse tree produced by the {@code createSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateSqlBlockRule(DorisParser.CreateSqlBlockRuleContext ctx); - /** - * Enter a parse tree produced by the {@code createEncryptkey} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx); - /** - * Exit a parse tree produced by the {@code createEncryptkey} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateEncryptkey(DorisParser.CreateEncryptkeyContext ctx); - /** - * Enter a parse tree produced by the {@code createUserDefineFunction} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code createUserDefineFunction} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateUserDefineFunction(DorisParser.CreateUserDefineFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code createAliasFunction} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code createAliasFunction} - * labeled alternative in {@link DorisParser#supportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateAliasFunction(DorisParser.CreateAliasFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code alterSystem} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterSystem(DorisParser.AlterSystemContext ctx); - /** - * Exit a parse tree produced by the {@code alterSystem} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterSystem(DorisParser.AlterSystemContext ctx); - /** - * Enter a parse tree produced by the {@code alterView} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterView(DorisParser.AlterViewContext ctx); - /** - * Exit a parse tree produced by the {@code alterView} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterView(DorisParser.AlterViewContext ctx); - /** - * Enter a parse tree produced by the {@code alterCatalogRename} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx); - /** - * Exit a parse tree produced by the {@code alterCatalogRename} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterCatalogRename(DorisParser.AlterCatalogRenameContext ctx); - /** - * Enter a parse tree produced by the {@code alterRole} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterRole(DorisParser.AlterRoleContext ctx); - /** - * Exit a parse tree produced by the {@code alterRole} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterRole(DorisParser.AlterRoleContext ctx); - /** - * Enter a parse tree produced by the {@code alterStorageVault} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterStorageVault(DorisParser.AlterStorageVaultContext ctx); - /** - * Exit a parse tree produced by the {@code alterStorageVault} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterStorageVault(DorisParser.AlterStorageVaultContext ctx); - /** - * Enter a parse tree produced by the {@code alterWorkloadGroup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx); - /** - * Exit a parse tree produced by the {@code alterWorkloadGroup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterWorkloadGroup(DorisParser.AlterWorkloadGroupContext ctx); - /** - * Enter a parse tree produced by the {@code alterCatalogProperties} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code alterCatalogProperties} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterCatalogProperties(DorisParser.AlterCatalogPropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code alterWorkloadPolicy} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx); - /** - * Exit a parse tree produced by the {@code alterWorkloadPolicy} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterWorkloadPolicy(DorisParser.AlterWorkloadPolicyContext ctx); - /** - * Enter a parse tree produced by the {@code alterSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx); - /** - * Exit a parse tree produced by the {@code alterSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterSqlBlockRule(DorisParser.AlterSqlBlockRuleContext ctx); - /** - * Enter a parse tree produced by the {@code alterCatalogComment} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx); - /** - * Exit a parse tree produced by the {@code alterCatalogComment} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterCatalogComment(DorisParser.AlterCatalogCommentContext ctx); - /** - * Enter a parse tree produced by the {@code alterDatabaseRename} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx); - /** - * Exit a parse tree produced by the {@code alterDatabaseRename} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterDatabaseRename(DorisParser.AlterDatabaseRenameContext ctx); - /** - * Enter a parse tree produced by the {@code alterTable} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterTable(DorisParser.AlterTableContext ctx); - /** - * Exit a parse tree produced by the {@code alterTable} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterTable(DorisParser.AlterTableContext ctx); - /** - * Enter a parse tree produced by the {@code alterTableAddRollup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx); - /** - * Exit a parse tree produced by the {@code alterTableAddRollup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterTableAddRollup(DorisParser.AlterTableAddRollupContext ctx); - /** - * Enter a parse tree produced by the {@code alterTableDropRollup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx); - /** - * Exit a parse tree produced by the {@code alterTableDropRollup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterTableDropRollup(DorisParser.AlterTableDropRollupContext ctx); - /** - * Enter a parse tree produced by the {@code alterTableProperties} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code alterTableProperties} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterTableProperties(DorisParser.AlterTablePropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code alterDatabaseSetQuota} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx); - /** - * Exit a parse tree produced by the {@code alterDatabaseSetQuota} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterDatabaseSetQuota(DorisParser.AlterDatabaseSetQuotaContext ctx); - /** - * Enter a parse tree produced by the {@code alterSystemRenameComputeGroup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx); - /** - * Exit a parse tree produced by the {@code alterSystemRenameComputeGroup} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterSystemRenameComputeGroup(DorisParser.AlterSystemRenameComputeGroupContext ctx); - /** - * Enter a parse tree produced by the {@code alterRepository} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterRepository(DorisParser.AlterRepositoryContext ctx); - /** - * Exit a parse tree produced by the {@code alterRepository} - * labeled alternative in {@link DorisParser#supportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterRepository(DorisParser.AlterRepositoryContext ctx); - /** - * Enter a parse tree produced by the {@code dropCatalogRecycleBin} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx); - /** - * Exit a parse tree produced by the {@code dropCatalogRecycleBin} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropCatalogRecycleBin(DorisParser.DropCatalogRecycleBinContext ctx); - /** - * Enter a parse tree produced by the {@code dropEncryptkey} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropEncryptkey(DorisParser.DropEncryptkeyContext ctx); - /** - * Exit a parse tree produced by the {@code dropEncryptkey} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropEncryptkey(DorisParser.DropEncryptkeyContext ctx); - /** - * Enter a parse tree produced by the {@code dropRole} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropRole(DorisParser.DropRoleContext ctx); - /** - * Exit a parse tree produced by the {@code dropRole} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropRole(DorisParser.DropRoleContext ctx); - /** - * Enter a parse tree produced by the {@code dropSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx); - /** - * Exit a parse tree produced by the {@code dropSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropSqlBlockRule(DorisParser.DropSqlBlockRuleContext ctx); - /** - * Enter a parse tree produced by the {@code dropUser} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropUser(DorisParser.DropUserContext ctx); - /** - * Exit a parse tree produced by the {@code dropUser} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropUser(DorisParser.DropUserContext ctx); - /** - * Enter a parse tree produced by the {@code dropStoragePolicy} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx); - /** - * Exit a parse tree produced by the {@code dropStoragePolicy} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropStoragePolicy(DorisParser.DropStoragePolicyContext ctx); - /** - * Enter a parse tree produced by the {@code dropWorkloadGroup} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx); - /** - * Exit a parse tree produced by the {@code dropWorkloadGroup} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropWorkloadGroup(DorisParser.DropWorkloadGroupContext ctx); - /** - * Enter a parse tree produced by the {@code dropCatalog} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropCatalog(DorisParser.DropCatalogContext ctx); - /** - * Exit a parse tree produced by the {@code dropCatalog} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropCatalog(DorisParser.DropCatalogContext ctx); - /** - * Enter a parse tree produced by the {@code dropFile} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropFile(DorisParser.DropFileContext ctx); - /** - * Exit a parse tree produced by the {@code dropFile} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropFile(DorisParser.DropFileContext ctx); - /** - * Enter a parse tree produced by the {@code dropWorkloadPolicy} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx); - /** - * Exit a parse tree produced by the {@code dropWorkloadPolicy} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropWorkloadPolicy(DorisParser.DropWorkloadPolicyContext ctx); - /** - * Enter a parse tree produced by the {@code dropRepository} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropRepository(DorisParser.DropRepositoryContext ctx); - /** - * Exit a parse tree produced by the {@code dropRepository} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropRepository(DorisParser.DropRepositoryContext ctx); - /** - * Enter a parse tree produced by the {@code dropTable} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropTable(DorisParser.DropTableContext ctx); - /** - * Exit a parse tree produced by the {@code dropTable} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropTable(DorisParser.DropTableContext ctx); - /** - * Enter a parse tree produced by the {@code dropDatabase} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropDatabase(DorisParser.DropDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code dropDatabase} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropDatabase(DorisParser.DropDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code dropFunction} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropFunction(DorisParser.DropFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code dropFunction} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropFunction(DorisParser.DropFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code dropIndex} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropIndex(DorisParser.DropIndexContext ctx); - /** - * Exit a parse tree produced by the {@code dropIndex} - * labeled alternative in {@link DorisParser#supportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropIndex(DorisParser.DropIndexContext ctx); - /** - * Enter a parse tree produced by the {@code showVariables} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowVariables(DorisParser.ShowVariablesContext ctx); - /** - * Exit a parse tree produced by the {@code showVariables} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowVariables(DorisParser.ShowVariablesContext ctx); - /** - * Enter a parse tree produced by the {@code showAuthors} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowAuthors(DorisParser.ShowAuthorsContext ctx); - /** - * Exit a parse tree produced by the {@code showAuthors} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowAuthors(DorisParser.ShowAuthorsContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateDatabase} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateDatabase} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateDatabase(DorisParser.ShowCreateDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code showBroker} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowBroker(DorisParser.ShowBrokerContext ctx); - /** - * Exit a parse tree produced by the {@code showBroker} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowBroker(DorisParser.ShowBrokerContext ctx); - /** - * Enter a parse tree produced by the {@code showDynamicPartition} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx); - /** - * Exit a parse tree produced by the {@code showDynamicPartition} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDynamicPartition(DorisParser.ShowDynamicPartitionContext ctx); - /** - * Enter a parse tree produced by the {@code showEvents} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowEvents(DorisParser.ShowEventsContext ctx); - /** - * Exit a parse tree produced by the {@code showEvents} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowEvents(DorisParser.ShowEventsContext ctx); - /** - * Enter a parse tree produced by the {@code showLastInsert} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowLastInsert(DorisParser.ShowLastInsertContext ctx); - /** - * Exit a parse tree produced by the {@code showLastInsert} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowLastInsert(DorisParser.ShowLastInsertContext ctx); - /** - * Enter a parse tree produced by the {@code showCharset} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCharset(DorisParser.ShowCharsetContext ctx); - /** - * Exit a parse tree produced by the {@code showCharset} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCharset(DorisParser.ShowCharsetContext ctx); - /** - * Enter a parse tree produced by the {@code showDelete} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDelete(DorisParser.ShowDeleteContext ctx); - /** - * Exit a parse tree produced by the {@code showDelete} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDelete(DorisParser.ShowDeleteContext ctx); - /** - * Enter a parse tree produced by the {@code showGrants} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowGrants(DorisParser.ShowGrantsContext ctx); - /** - * Exit a parse tree produced by the {@code showGrants} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowGrants(DorisParser.ShowGrantsContext ctx); - /** - * Enter a parse tree produced by the {@code showGrantsForUser} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx); - /** - * Exit a parse tree produced by the {@code showGrantsForUser} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowGrantsForUser(DorisParser.ShowGrantsForUserContext ctx); - /** - * Enter a parse tree produced by the {@code showSyncJob} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowSyncJob(DorisParser.ShowSyncJobContext ctx); - /** - * Exit a parse tree produced by the {@code showSyncJob} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowSyncJob(DorisParser.ShowSyncJobContext ctx); - /** - * Enter a parse tree produced by the {@code showLoadProfile} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowLoadProfile(DorisParser.ShowLoadProfileContext ctx); - /** - * Exit a parse tree produced by the {@code showLoadProfile} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowLoadProfile(DorisParser.ShowLoadProfileContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateRepository} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateRepository} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateRepository(DorisParser.ShowCreateRepositoryContext ctx); - /** - * Enter a parse tree produced by the {@code showView} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowView(DorisParser.ShowViewContext ctx); - /** - * Exit a parse tree produced by the {@code showView} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowView(DorisParser.ShowViewContext ctx); - /** - * Enter a parse tree produced by the {@code showPlugins} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowPlugins(DorisParser.ShowPluginsContext ctx); - /** - * Exit a parse tree produced by the {@code showPlugins} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowPlugins(DorisParser.ShowPluginsContext ctx); - /** - * Enter a parse tree produced by the {@code showRepositories} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowRepositories(DorisParser.ShowRepositoriesContext ctx); - /** - * Exit a parse tree produced by the {@code showRepositories} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowRepositories(DorisParser.ShowRepositoriesContext ctx); - /** - * Enter a parse tree produced by the {@code showEncryptKeys} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx); - /** - * Exit a parse tree produced by the {@code showEncryptKeys} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowEncryptKeys(DorisParser.ShowEncryptKeysContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateTable} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateTable(DorisParser.ShowCreateTableContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateTable} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateTable(DorisParser.ShowCreateTableContext ctx); - /** - * Enter a parse tree produced by the {@code showProcessList} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowProcessList(DorisParser.ShowProcessListContext ctx); - /** - * Exit a parse tree produced by the {@code showProcessList} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowProcessList(DorisParser.ShowProcessListContext ctx); - /** - * Enter a parse tree produced by the {@code showRoles} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowRoles(DorisParser.ShowRolesContext ctx); - /** - * Exit a parse tree produced by the {@code showRoles} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowRoles(DorisParser.ShowRolesContext ctx); - /** - * Enter a parse tree produced by the {@code showPartitionId} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowPartitionId(DorisParser.ShowPartitionIdContext ctx); - /** - * Exit a parse tree produced by the {@code showPartitionId} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowPartitionId(DorisParser.ShowPartitionIdContext ctx); - /** - * Enter a parse tree produced by the {@code showPrivileges} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowPrivileges(DorisParser.ShowPrivilegesContext ctx); - /** - * Exit a parse tree produced by the {@code showPrivileges} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowPrivileges(DorisParser.ShowPrivilegesContext ctx); - /** - * Enter a parse tree produced by the {@code showProc} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowProc(DorisParser.ShowProcContext ctx); - /** - * Exit a parse tree produced by the {@code showProc} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowProc(DorisParser.ShowProcContext ctx); - /** - * Enter a parse tree produced by the {@code showSmallFiles} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowSmallFiles(DorisParser.ShowSmallFilesContext ctx); - /** - * Exit a parse tree produced by the {@code showSmallFiles} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowSmallFiles(DorisParser.ShowSmallFilesContext ctx); - /** - * Enter a parse tree produced by the {@code showStorageEngines} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx); - /** - * Exit a parse tree produced by the {@code showStorageEngines} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowStorageEngines(DorisParser.ShowStorageEnginesContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateCatalog} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateCatalog} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateCatalog(DorisParser.ShowCreateCatalogContext ctx); - /** - * Enter a parse tree produced by the {@code showCatalog} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCatalog(DorisParser.ShowCatalogContext ctx); - /** - * Exit a parse tree produced by the {@code showCatalog} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCatalog(DorisParser.ShowCatalogContext ctx); - /** - * Enter a parse tree produced by the {@code showCatalogs} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCatalogs(DorisParser.ShowCatalogsContext ctx); - /** - * Exit a parse tree produced by the {@code showCatalogs} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCatalogs(DorisParser.ShowCatalogsContext ctx); - /** - * Enter a parse tree produced by the {@code showUserProperties} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowUserProperties(DorisParser.ShowUserPropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code showUserProperties} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowUserProperties(DorisParser.ShowUserPropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code showAllProperties} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowAllProperties(DorisParser.ShowAllPropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code showAllProperties} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowAllProperties(DorisParser.ShowAllPropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code showCollation} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCollation(DorisParser.ShowCollationContext ctx); - /** - * Exit a parse tree produced by the {@code showCollation} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCollation(DorisParser.ShowCollationContext ctx); - /** - * Enter a parse tree produced by the {@code showStoragePolicy} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx); - /** - * Exit a parse tree produced by the {@code showStoragePolicy} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowStoragePolicy(DorisParser.ShowStoragePolicyContext ctx); - /** - * Enter a parse tree produced by the {@code showSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx); - /** - * Exit a parse tree produced by the {@code showSqlBlockRule} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowSqlBlockRule(DorisParser.ShowSqlBlockRuleContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateView} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateView(DorisParser.ShowCreateViewContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateView} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateView(DorisParser.ShowCreateViewContext ctx); - /** - * Enter a parse tree produced by the {@code showDataTypes} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDataTypes(DorisParser.ShowDataTypesContext ctx); - /** - * Exit a parse tree produced by the {@code showDataTypes} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDataTypes(DorisParser.ShowDataTypesContext ctx); - /** - * Enter a parse tree produced by the {@code showData} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowData(DorisParser.ShowDataContext ctx); - /** - * Exit a parse tree produced by the {@code showData} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowData(DorisParser.ShowDataContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateMaterializedView} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateMaterializedView} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateMaterializedView(DorisParser.ShowCreateMaterializedViewContext ctx); - /** - * Enter a parse tree produced by the {@code showWarningErrors} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx); - /** - * Exit a parse tree produced by the {@code showWarningErrors} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowWarningErrors(DorisParser.ShowWarningErrorsContext ctx); - /** - * Enter a parse tree produced by the {@code showWarningErrorCount} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx); - /** - * Exit a parse tree produced by the {@code showWarningErrorCount} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowWarningErrorCount(DorisParser.ShowWarningErrorCountContext ctx); - /** - * Enter a parse tree produced by the {@code showBackends} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowBackends(DorisParser.ShowBackendsContext ctx); - /** - * Exit a parse tree produced by the {@code showBackends} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowBackends(DorisParser.ShowBackendsContext ctx); - /** - * Enter a parse tree produced by the {@code showStages} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowStages(DorisParser.ShowStagesContext ctx); - /** - * Exit a parse tree produced by the {@code showStages} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowStages(DorisParser.ShowStagesContext ctx); - /** - * Enter a parse tree produced by the {@code showReplicaDistribution} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx); - /** - * Exit a parse tree produced by the {@code showReplicaDistribution} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowReplicaDistribution(DorisParser.ShowReplicaDistributionContext ctx); - /** - * Enter a parse tree produced by the {@code showTriggers} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTriggers(DorisParser.ShowTriggersContext ctx); - /** - * Exit a parse tree produced by the {@code showTriggers} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTriggers(DorisParser.ShowTriggersContext ctx); - /** - * Enter a parse tree produced by the {@code showDiagnoseTablet} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx); - /** - * Exit a parse tree produced by the {@code showDiagnoseTablet} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDiagnoseTablet(DorisParser.ShowDiagnoseTabletContext ctx); - /** - * Enter a parse tree produced by the {@code showFrontends} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowFrontends(DorisParser.ShowFrontendsContext ctx); - /** - * Exit a parse tree produced by the {@code showFrontends} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowFrontends(DorisParser.ShowFrontendsContext ctx); - /** - * Enter a parse tree produced by the {@code showDatabaseId} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx); - /** - * Exit a parse tree produced by the {@code showDatabaseId} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDatabaseId(DorisParser.ShowDatabaseIdContext ctx); - /** - * Enter a parse tree produced by the {@code showTableId} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTableId(DorisParser.ShowTableIdContext ctx); - /** - * Exit a parse tree produced by the {@code showTableId} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTableId(DorisParser.ShowTableIdContext ctx); - /** - * Enter a parse tree produced by the {@code showTrash} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTrash(DorisParser.ShowTrashContext ctx); - /** - * Exit a parse tree produced by the {@code showTrash} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTrash(DorisParser.ShowTrashContext ctx); - /** - * Enter a parse tree produced by the {@code showStatus} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowStatus(DorisParser.ShowStatusContext ctx); - /** - * Exit a parse tree produced by the {@code showStatus} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowStatus(DorisParser.ShowStatusContext ctx); - /** - * Enter a parse tree produced by the {@code showWhitelist} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowWhitelist(DorisParser.ShowWhitelistContext ctx); - /** - * Exit a parse tree produced by the {@code showWhitelist} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowWhitelist(DorisParser.ShowWhitelistContext ctx); - /** - * Enter a parse tree produced by the {@code showTabletsBelong} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx); - /** - * Exit a parse tree produced by the {@code showTabletsBelong} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTabletsBelong(DorisParser.ShowTabletsBelongContext ctx); - /** - * Enter a parse tree produced by the {@code showDataSkew} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDataSkew(DorisParser.ShowDataSkewContext ctx); - /** - * Exit a parse tree produced by the {@code showDataSkew} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDataSkew(DorisParser.ShowDataSkewContext ctx); - /** - * Enter a parse tree produced by the {@code showTableCreation} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTableCreation(DorisParser.ShowTableCreationContext ctx); - /** - * Exit a parse tree produced by the {@code showTableCreation} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTableCreation(DorisParser.ShowTableCreationContext ctx); - /** - * Enter a parse tree produced by the {@code showTabletStorageFormat} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx); - /** - * Exit a parse tree produced by the {@code showTabletStorageFormat} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTabletStorageFormat(DorisParser.ShowTabletStorageFormatContext ctx); - /** - * Enter a parse tree produced by the {@code showQueryProfile} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowQueryProfile(DorisParser.ShowQueryProfileContext ctx); - /** - * Exit a parse tree produced by the {@code showQueryProfile} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowQueryProfile(DorisParser.ShowQueryProfileContext ctx); - /** - * Enter a parse tree produced by the {@code showConvertLsc} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowConvertLsc(DorisParser.ShowConvertLscContext ctx); - /** - * Exit a parse tree produced by the {@code showConvertLsc} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowConvertLsc(DorisParser.ShowConvertLscContext ctx); - /** - * Enter a parse tree produced by the {@code showTables} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTables(DorisParser.ShowTablesContext ctx); - /** - * Exit a parse tree produced by the {@code showTables} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTables(DorisParser.ShowTablesContext ctx); - /** - * Enter a parse tree produced by the {@code showTableStatus} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTableStatus(DorisParser.ShowTableStatusContext ctx); - /** - * Exit a parse tree produced by the {@code showTableStatus} - * labeled alternative in {@link DorisParser#supportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTableStatus(DorisParser.ShowTableStatusContext ctx); - /** - * Enter a parse tree produced by the {@code sync} - * labeled alternative in {@link DorisParser#supportedLoadStatement}. - * @param ctx the parse tree - */ - void enterSync(DorisParser.SyncContext ctx); - /** - * Exit a parse tree produced by the {@code sync} - * labeled alternative in {@link DorisParser#supportedLoadStatement}. - * @param ctx the parse tree - */ - void exitSync(DorisParser.SyncContext ctx); - /** - * Enter a parse tree produced by the {@code createRoutineLoadAlias} - * labeled alternative in {@link DorisParser#supportedLoadStatement}. - * @param ctx the parse tree - */ - void enterCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx); - /** - * Exit a parse tree produced by the {@code createRoutineLoadAlias} - * labeled alternative in {@link DorisParser#supportedLoadStatement}. - * @param ctx the parse tree - */ - void exitCreateRoutineLoadAlias(DorisParser.CreateRoutineLoadAliasContext ctx); - /** - * Enter a parse tree produced by the {@code help} - * labeled alternative in {@link DorisParser#supportedOtherStatement}. - * @param ctx the parse tree - */ - void enterHelp(DorisParser.HelpContext ctx); - /** - * Exit a parse tree produced by the {@code help} - * labeled alternative in {@link DorisParser#supportedOtherStatement}. - * @param ctx the parse tree - */ - void exitHelp(DorisParser.HelpContext ctx); - /** - * Enter a parse tree produced by the {@code installPlugin} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterInstallPlugin(DorisParser.InstallPluginContext ctx); - /** - * Exit a parse tree produced by the {@code installPlugin} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitInstallPlugin(DorisParser.InstallPluginContext ctx); - /** - * Enter a parse tree produced by the {@code uninstallPlugin} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterUninstallPlugin(DorisParser.UninstallPluginContext ctx); - /** - * Exit a parse tree produced by the {@code uninstallPlugin} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitUninstallPlugin(DorisParser.UninstallPluginContext ctx); - /** - * Enter a parse tree produced by the {@code lockTables} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterLockTables(DorisParser.LockTablesContext ctx); - /** - * Exit a parse tree produced by the {@code lockTables} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitLockTables(DorisParser.LockTablesContext ctx); - /** - * Enter a parse tree produced by the {@code unlockTables} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterUnlockTables(DorisParser.UnlockTablesContext ctx); - /** - * Exit a parse tree produced by the {@code unlockTables} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitUnlockTables(DorisParser.UnlockTablesContext ctx); - /** - * Enter a parse tree produced by the {@code warmUpCluster} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterWarmUpCluster(DorisParser.WarmUpClusterContext ctx); - /** - * Exit a parse tree produced by the {@code warmUpCluster} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitWarmUpCluster(DorisParser.WarmUpClusterContext ctx); - /** - * Enter a parse tree produced by the {@code backup} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterBackup(DorisParser.BackupContext ctx); - /** - * Exit a parse tree produced by the {@code backup} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitBackup(DorisParser.BackupContext ctx); - /** - * Enter a parse tree produced by the {@code restore} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterRestore(DorisParser.RestoreContext ctx); - /** - * Exit a parse tree produced by the {@code restore} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitRestore(DorisParser.RestoreContext ctx); - /** - * Enter a parse tree produced by the {@code unsupportedStartTransaction} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void enterUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx); - /** - * Exit a parse tree produced by the {@code unsupportedStartTransaction} - * labeled alternative in {@link DorisParser#unsupportedOtherStatement}. - * @param ctx the parse tree - */ - void exitUnsupportedStartTransaction(DorisParser.UnsupportedStartTransactionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#warmUpItem}. - * @param ctx the parse tree - */ - void enterWarmUpItem(DorisParser.WarmUpItemContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#warmUpItem}. - * @param ctx the parse tree - */ - void exitWarmUpItem(DorisParser.WarmUpItemContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#lockTable}. - * @param ctx the parse tree - */ - void enterLockTable(DorisParser.LockTableContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#lockTable}. - * @param ctx the parse tree - */ - void exitLockTable(DorisParser.LockTableContext ctx); - /** - * Enter a parse tree produced by the {@code showRowPolicy} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowRowPolicy(DorisParser.ShowRowPolicyContext ctx); - /** - * Exit a parse tree produced by the {@code showRowPolicy} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowRowPolicy(DorisParser.ShowRowPolicyContext ctx); - /** - * Enter a parse tree produced by the {@code showStorageVault} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowStorageVault(DorisParser.ShowStorageVaultContext ctx); - /** - * Exit a parse tree produced by the {@code showStorageVault} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowStorageVault(DorisParser.ShowStorageVaultContext ctx); - /** - * Enter a parse tree produced by the {@code showOpenTables} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowOpenTables(DorisParser.ShowOpenTablesContext ctx); - /** - * Exit a parse tree produced by the {@code showOpenTables} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowOpenTables(DorisParser.ShowOpenTablesContext ctx); - /** - * Enter a parse tree produced by the {@code showViews} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowViews(DorisParser.ShowViewsContext ctx); - /** - * Exit a parse tree produced by the {@code showViews} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowViews(DorisParser.ShowViewsContext ctx); - /** - * Enter a parse tree produced by the {@code showMaterializedView} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx); - /** - * Exit a parse tree produced by the {@code showMaterializedView} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowMaterializedView(DorisParser.ShowMaterializedViewContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateFunction} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateFunction} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCreateFunction(DorisParser.ShowCreateFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code showDatabases} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowDatabases(DorisParser.ShowDatabasesContext ctx); - /** - * Exit a parse tree produced by the {@code showDatabases} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowDatabases(DorisParser.ShowDatabasesContext ctx); - /** - * Enter a parse tree produced by the {@code showColumns} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowColumns(DorisParser.ShowColumnsContext ctx); - /** - * Exit a parse tree produced by the {@code showColumns} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowColumns(DorisParser.ShowColumnsContext ctx); - /** - * Enter a parse tree produced by the {@code showLoadWarings} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx); - /** - * Exit a parse tree produced by the {@code showLoadWarings} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowLoadWarings(DorisParser.ShowLoadWaringsContext ctx); - /** - * Enter a parse tree produced by the {@code showLoad} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowLoad(DorisParser.ShowLoadContext ctx); - /** - * Exit a parse tree produced by the {@code showLoad} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowLoad(DorisParser.ShowLoadContext ctx); - /** - * Enter a parse tree produced by the {@code showExport} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowExport(DorisParser.ShowExportContext ctx); - /** - * Exit a parse tree produced by the {@code showExport} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowExport(DorisParser.ShowExportContext ctx); - /** - * Enter a parse tree produced by the {@code showAlterTable} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowAlterTable(DorisParser.ShowAlterTableContext ctx); - /** - * Exit a parse tree produced by the {@code showAlterTable} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowAlterTable(DorisParser.ShowAlterTableContext ctx); - /** - * Enter a parse tree produced by the {@code showPartitions} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowPartitions(DorisParser.ShowPartitionsContext ctx); - /** - * Exit a parse tree produced by the {@code showPartitions} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowPartitions(DorisParser.ShowPartitionsContext ctx); - /** - * Enter a parse tree produced by the {@code showTabletId} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTabletId(DorisParser.ShowTabletIdContext ctx); - /** - * Exit a parse tree produced by the {@code showTabletId} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTabletId(DorisParser.ShowTabletIdContext ctx); - /** - * Enter a parse tree produced by the {@code showTabletsFromTable} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx); - /** - * Exit a parse tree produced by the {@code showTabletsFromTable} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTabletsFromTable(DorisParser.ShowTabletsFromTableContext ctx); - /** - * Enter a parse tree produced by the {@code showBackup} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowBackup(DorisParser.ShowBackupContext ctx); - /** - * Exit a parse tree produced by the {@code showBackup} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowBackup(DorisParser.ShowBackupContext ctx); - /** - * Enter a parse tree produced by the {@code showRestore} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowRestore(DorisParser.ShowRestoreContext ctx); - /** - * Exit a parse tree produced by the {@code showRestore} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowRestore(DorisParser.ShowRestoreContext ctx); - /** - * Enter a parse tree produced by the {@code showResources} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowResources(DorisParser.ShowResourcesContext ctx); - /** - * Exit a parse tree produced by the {@code showResources} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowResources(DorisParser.ShowResourcesContext ctx); - /** - * Enter a parse tree produced by the {@code showWorkloadGroups} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx); - /** - * Exit a parse tree produced by the {@code showWorkloadGroups} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowWorkloadGroups(DorisParser.ShowWorkloadGroupsContext ctx); - /** - * Enter a parse tree produced by the {@code showSnapshot} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowSnapshot(DorisParser.ShowSnapshotContext ctx); - /** - * Exit a parse tree produced by the {@code showSnapshot} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowSnapshot(DorisParser.ShowSnapshotContext ctx); - /** - * Enter a parse tree produced by the {@code showFunctions} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowFunctions(DorisParser.ShowFunctionsContext ctx); - /** - * Exit a parse tree produced by the {@code showFunctions} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowFunctions(DorisParser.ShowFunctionsContext ctx); - /** - * Enter a parse tree produced by the {@code showGlobalFunctions} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx); - /** - * Exit a parse tree produced by the {@code showGlobalFunctions} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowGlobalFunctions(DorisParser.ShowGlobalFunctionsContext ctx); - /** - * Enter a parse tree produced by the {@code showTypeCast} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTypeCast(DorisParser.ShowTypeCastContext ctx); - /** - * Exit a parse tree produced by the {@code showTypeCast} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTypeCast(DorisParser.ShowTypeCastContext ctx); - /** - * Enter a parse tree produced by the {@code showIndex} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowIndex(DorisParser.ShowIndexContext ctx); - /** - * Exit a parse tree produced by the {@code showIndex} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowIndex(DorisParser.ShowIndexContext ctx); - /** - * Enter a parse tree produced by the {@code showTransaction} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowTransaction(DorisParser.ShowTransactionContext ctx); - /** - * Exit a parse tree produced by the {@code showTransaction} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowTransaction(DorisParser.ShowTransactionContext ctx); - /** - * Enter a parse tree produced by the {@code showCacheHotSpot} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx); - /** - * Exit a parse tree produced by the {@code showCacheHotSpot} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCacheHotSpot(DorisParser.ShowCacheHotSpotContext ctx); - /** - * Enter a parse tree produced by the {@code showCatalogRecycleBin} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx); - /** - * Exit a parse tree produced by the {@code showCatalogRecycleBin} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCatalogRecycleBin(DorisParser.ShowCatalogRecycleBinContext ctx); - /** - * Enter a parse tree produced by the {@code showQueryStats} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowQueryStats(DorisParser.ShowQueryStatsContext ctx); - /** - * Exit a parse tree produced by the {@code showQueryStats} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowQueryStats(DorisParser.ShowQueryStatsContext ctx); - /** - * Enter a parse tree produced by the {@code showBuildIndex} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowBuildIndex(DorisParser.ShowBuildIndexContext ctx); - /** - * Exit a parse tree produced by the {@code showBuildIndex} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowBuildIndex(DorisParser.ShowBuildIndexContext ctx); - /** - * Enter a parse tree produced by the {@code showClusters} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowClusters(DorisParser.ShowClustersContext ctx); - /** - * Exit a parse tree produced by the {@code showClusters} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowClusters(DorisParser.ShowClustersContext ctx); - /** - * Enter a parse tree produced by the {@code showReplicaStatus} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx); - /** - * Exit a parse tree produced by the {@code showReplicaStatus} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowReplicaStatus(DorisParser.ShowReplicaStatusContext ctx); - /** - * Enter a parse tree produced by the {@code showCopy} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowCopy(DorisParser.ShowCopyContext ctx); - /** - * Exit a parse tree produced by the {@code showCopy} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowCopy(DorisParser.ShowCopyContext ctx); - /** - * Enter a parse tree produced by the {@code showWarmUpJob} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void enterShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx); - /** - * Exit a parse tree produced by the {@code showWarmUpJob} - * labeled alternative in {@link DorisParser#unsupportedShowStatement}. - * @param ctx the parse tree - */ - void exitShowWarmUpJob(DorisParser.ShowWarmUpJobContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#createRoutineLoad}. - * @param ctx the parse tree - */ - void enterCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#createRoutineLoad}. - * @param ctx the parse tree - */ - void exitCreateRoutineLoad(DorisParser.CreateRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code mysqlLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterMysqlLoad(DorisParser.MysqlLoadContext ctx); - /** - * Exit a parse tree produced by the {@code mysqlLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitMysqlLoad(DorisParser.MysqlLoadContext ctx); - /** - * Enter a parse tree produced by the {@code createDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx); - /** - * Exit a parse tree produced by the {@code createDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitCreateDataSyncJob(DorisParser.CreateDataSyncJobContext ctx); - /** - * Enter a parse tree produced by the {@code stopDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx); - /** - * Exit a parse tree produced by the {@code stopDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitStopDataSyncJob(DorisParser.StopDataSyncJobContext ctx); - /** - * Enter a parse tree produced by the {@code resumeDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx); - /** - * Exit a parse tree produced by the {@code resumeDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitResumeDataSyncJob(DorisParser.ResumeDataSyncJobContext ctx); - /** - * Enter a parse tree produced by the {@code pauseDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx); - /** - * Exit a parse tree produced by the {@code pauseDataSyncJob} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitPauseDataSyncJob(DorisParser.PauseDataSyncJobContext ctx); - /** - * Enter a parse tree produced by the {@code pauseRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code pauseRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitPauseRoutineLoad(DorisParser.PauseRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code pauseAllRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code pauseAllRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitPauseAllRoutineLoad(DorisParser.PauseAllRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code resumeRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code resumeRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitResumeRoutineLoad(DorisParser.ResumeRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code resumeAllRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code resumeAllRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitResumeAllRoutineLoad(DorisParser.ResumeAllRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code stopRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code stopRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitStopRoutineLoad(DorisParser.StopRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code showRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code showRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitShowRoutineLoad(DorisParser.ShowRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code showRoutineLoadTask} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx); - /** - * Exit a parse tree produced by the {@code showRoutineLoadTask} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitShowCreateRoutineLoad(DorisParser.ShowCreateRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code showCreateLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void enterShowCreateLoad(DorisParser.ShowCreateLoadContext ctx); - /** - * Exit a parse tree produced by the {@code showCreateLoad} - * labeled alternative in {@link DorisParser#unsupportedLoadStatement}. - * @param ctx the parse tree - */ - void exitShowCreateLoad(DorisParser.ShowCreateLoadContext ctx); - /** - * Enter a parse tree produced by the {@code separator} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterSeparator(DorisParser.SeparatorContext ctx); - /** - * Exit a parse tree produced by the {@code separator} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitSeparator(DorisParser.SeparatorContext ctx); - /** - * Enter a parse tree produced by the {@code importColumns} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterImportColumns(DorisParser.ImportColumnsContext ctx); - /** - * Exit a parse tree produced by the {@code importColumns} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitImportColumns(DorisParser.ImportColumnsContext ctx); - /** - * Enter a parse tree produced by the {@code importPrecedingFilter} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx); - /** - * Exit a parse tree produced by the {@code importPrecedingFilter} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitImportPrecedingFilter(DorisParser.ImportPrecedingFilterContext ctx); - /** - * Enter a parse tree produced by the {@code importWhere} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterImportWhere(DorisParser.ImportWhereContext ctx); - /** - * Exit a parse tree produced by the {@code importWhere} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitImportWhere(DorisParser.ImportWhereContext ctx); - /** - * Enter a parse tree produced by the {@code importDeleteOn} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterImportDeleteOn(DorisParser.ImportDeleteOnContext ctx); - /** - * Exit a parse tree produced by the {@code importDeleteOn} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitImportDeleteOn(DorisParser.ImportDeleteOnContext ctx); - /** - * Enter a parse tree produced by the {@code importSequence} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterImportSequence(DorisParser.ImportSequenceContext ctx); - /** - * Exit a parse tree produced by the {@code importSequence} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitImportSequence(DorisParser.ImportSequenceContext ctx); - /** - * Enter a parse tree produced by the {@code importPartitions} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void enterImportPartitions(DorisParser.ImportPartitionsContext ctx); - /** - * Exit a parse tree produced by the {@code importPartitions} - * labeled alternative in {@link DorisParser#loadProperty}. - * @param ctx the parse tree - */ - void exitImportPartitions(DorisParser.ImportPartitionsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#importSequenceStatement}. - * @param ctx the parse tree - */ - void enterImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#importSequenceStatement}. - * @param ctx the parse tree - */ - void exitImportSequenceStatement(DorisParser.ImportSequenceStatementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#importDeleteOnStatement}. - * @param ctx the parse tree - */ - void enterImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#importDeleteOnStatement}. - * @param ctx the parse tree - */ - void exitImportDeleteOnStatement(DorisParser.ImportDeleteOnStatementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#importWhereStatement}. - * @param ctx the parse tree - */ - void enterImportWhereStatement(DorisParser.ImportWhereStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#importWhereStatement}. - * @param ctx the parse tree - */ - void exitImportWhereStatement(DorisParser.ImportWhereStatementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#importPrecedingFilterStatement}. - * @param ctx the parse tree - */ - void enterImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#importPrecedingFilterStatement}. - * @param ctx the parse tree - */ - void exitImportPrecedingFilterStatement(DorisParser.ImportPrecedingFilterStatementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#importColumnsStatement}. - * @param ctx the parse tree - */ - void enterImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#importColumnsStatement}. - * @param ctx the parse tree - */ - void exitImportColumnsStatement(DorisParser.ImportColumnsStatementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#importColumnDesc}. - * @param ctx the parse tree - */ - void enterImportColumnDesc(DorisParser.ImportColumnDescContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#importColumnDesc}. - * @param ctx the parse tree - */ - void exitImportColumnDesc(DorisParser.ImportColumnDescContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#channelDescriptions}. - * @param ctx the parse tree - */ - void enterChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#channelDescriptions}. - * @param ctx the parse tree - */ - void exitChannelDescriptions(DorisParser.ChannelDescriptionsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#channelDescription}. - * @param ctx the parse tree - */ - void enterChannelDescription(DorisParser.ChannelDescriptionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#channelDescription}. - * @param ctx the parse tree - */ - void exitChannelDescription(DorisParser.ChannelDescriptionContext ctx); - /** - * Enter a parse tree produced by the {@code refreshCatalog} - * labeled alternative in {@link DorisParser#supportedRefreshStatement}. - * @param ctx the parse tree - */ - void enterRefreshCatalog(DorisParser.RefreshCatalogContext ctx); - /** - * Exit a parse tree produced by the {@code refreshCatalog} - * labeled alternative in {@link DorisParser#supportedRefreshStatement}. - * @param ctx the parse tree - */ - void exitRefreshCatalog(DorisParser.RefreshCatalogContext ctx); - /** - * Enter a parse tree produced by the {@code refreshDatabase} - * labeled alternative in {@link DorisParser#supportedRefreshStatement}. - * @param ctx the parse tree - */ - void enterRefreshDatabase(DorisParser.RefreshDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code refreshDatabase} - * labeled alternative in {@link DorisParser#supportedRefreshStatement}. - * @param ctx the parse tree - */ - void exitRefreshDatabase(DorisParser.RefreshDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code refreshTable} - * labeled alternative in {@link DorisParser#supportedRefreshStatement}. - * @param ctx the parse tree - */ - void enterRefreshTable(DorisParser.RefreshTableContext ctx); - /** - * Exit a parse tree produced by the {@code refreshTable} - * labeled alternative in {@link DorisParser#supportedRefreshStatement}. - * @param ctx the parse tree - */ - void exitRefreshTable(DorisParser.RefreshTableContext ctx); - /** - * Enter a parse tree produced by the {@code cleanAllProfile} - * labeled alternative in {@link DorisParser#supportedCleanStatement}. - * @param ctx the parse tree - */ - void enterCleanAllProfile(DorisParser.CleanAllProfileContext ctx); - /** - * Exit a parse tree produced by the {@code cleanAllProfile} - * labeled alternative in {@link DorisParser#supportedCleanStatement}. - * @param ctx the parse tree - */ - void exitCleanAllProfile(DorisParser.CleanAllProfileContext ctx); - /** - * Enter a parse tree produced by the {@code cleanLabel} - * labeled alternative in {@link DorisParser#supportedCleanStatement}. - * @param ctx the parse tree - */ - void enterCleanLabel(DorisParser.CleanLabelContext ctx); - /** - * Exit a parse tree produced by the {@code cleanLabel} - * labeled alternative in {@link DorisParser#supportedCleanStatement}. - * @param ctx the parse tree - */ - void exitCleanLabel(DorisParser.CleanLabelContext ctx); - /** - * Enter a parse tree produced by the {@code refreshLdap} - * labeled alternative in {@link DorisParser#unsupportedRefreshStatement}. - * @param ctx the parse tree - */ - void enterRefreshLdap(DorisParser.RefreshLdapContext ctx); - /** - * Exit a parse tree produced by the {@code refreshLdap} - * labeled alternative in {@link DorisParser#unsupportedRefreshStatement}. - * @param ctx the parse tree - */ - void exitRefreshLdap(DorisParser.RefreshLdapContext ctx); - /** - * Enter a parse tree produced by the {@code cleanQueryStats} - * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. - * @param ctx the parse tree - */ - void enterCleanQueryStats(DorisParser.CleanQueryStatsContext ctx); - /** - * Exit a parse tree produced by the {@code cleanQueryStats} - * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. - * @param ctx the parse tree - */ - void exitCleanQueryStats(DorisParser.CleanQueryStatsContext ctx); - /** - * Enter a parse tree produced by the {@code cleanAllQueryStats} - * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. - * @param ctx the parse tree - */ - void enterCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx); - /** - * Exit a parse tree produced by the {@code cleanAllQueryStats} - * labeled alternative in {@link DorisParser#unsupportedCleanStatement}. - * @param ctx the parse tree - */ - void exitCleanAllQueryStats(DorisParser.CleanAllQueryStatsContext ctx); - /** - * Enter a parse tree produced by the {@code cancelLoad} - * labeled alternative in {@link DorisParser#supportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelLoad(DorisParser.CancelLoadContext ctx); - /** - * Exit a parse tree produced by the {@code cancelLoad} - * labeled alternative in {@link DorisParser#supportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelLoad(DorisParser.CancelLoadContext ctx); - /** - * Enter a parse tree produced by the {@code cancelExport} - * labeled alternative in {@link DorisParser#supportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelExport(DorisParser.CancelExportContext ctx); - /** - * Exit a parse tree produced by the {@code cancelExport} - * labeled alternative in {@link DorisParser#supportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelExport(DorisParser.CancelExportContext ctx); - /** - * Enter a parse tree produced by the {@code cancelWarmUpJob} - * labeled alternative in {@link DorisParser#supportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx); - /** - * Exit a parse tree produced by the {@code cancelWarmUpJob} - * labeled alternative in {@link DorisParser#supportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelWarmUpJob(DorisParser.CancelWarmUpJobContext ctx); - /** - * Enter a parse tree produced by the {@code cancelAlterTable} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelAlterTable(DorisParser.CancelAlterTableContext ctx); - /** - * Exit a parse tree produced by the {@code cancelAlterTable} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelAlterTable(DorisParser.CancelAlterTableContext ctx); - /** - * Enter a parse tree produced by the {@code cancelBuildIndex} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx); - /** - * Exit a parse tree produced by the {@code cancelBuildIndex} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelBuildIndex(DorisParser.CancelBuildIndexContext ctx); - /** - * Enter a parse tree produced by the {@code cancelDecommisionBackend} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx); - /** - * Exit a parse tree produced by the {@code cancelDecommisionBackend} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelDecommisionBackend(DorisParser.CancelDecommisionBackendContext ctx); - /** - * Enter a parse tree produced by the {@code cancelBackup} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelBackup(DorisParser.CancelBackupContext ctx); - /** - * Exit a parse tree produced by the {@code cancelBackup} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelBackup(DorisParser.CancelBackupContext ctx); - /** - * Enter a parse tree produced by the {@code cancelRestore} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void enterCancelRestore(DorisParser.CancelRestoreContext ctx); - /** - * Exit a parse tree produced by the {@code cancelRestore} - * labeled alternative in {@link DorisParser#unsupportedCancelStatement}. - * @param ctx the parse tree - */ - void exitCancelRestore(DorisParser.CancelRestoreContext ctx); - /** - * Enter a parse tree produced by the {@code adminShowReplicaDistribution} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx); - /** - * Exit a parse tree produced by the {@code adminShowReplicaDistribution} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminShowReplicaDistribution(DorisParser.AdminShowReplicaDistributionContext ctx); - /** - * Enter a parse tree produced by the {@code adminRebalanceDisk} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx); - /** - * Exit a parse tree produced by the {@code adminRebalanceDisk} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminRebalanceDisk(DorisParser.AdminRebalanceDiskContext ctx); - /** - * Enter a parse tree produced by the {@code adminCancelRebalanceDisk} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx); - /** - * Exit a parse tree produced by the {@code adminCancelRebalanceDisk} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminCancelRebalanceDisk(DorisParser.AdminCancelRebalanceDiskContext ctx); - /** - * Enter a parse tree produced by the {@code adminDiagnoseTablet} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx); - /** - * Exit a parse tree produced by the {@code adminDiagnoseTablet} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminDiagnoseTablet(DorisParser.AdminDiagnoseTabletContext ctx); - /** - * Enter a parse tree produced by the {@code adminShowReplicaStatus} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx); - /** - * Exit a parse tree produced by the {@code adminShowReplicaStatus} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminShowReplicaStatus(DorisParser.AdminShowReplicaStatusContext ctx); - /** - * Enter a parse tree produced by the {@code adminCompactTable} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminCompactTable(DorisParser.AdminCompactTableContext ctx); - /** - * Exit a parse tree produced by the {@code adminCompactTable} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminCompactTable(DorisParser.AdminCompactTableContext ctx); - /** - * Enter a parse tree produced by the {@code adminCheckTablets} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx); - /** - * Exit a parse tree produced by the {@code adminCheckTablets} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminCheckTablets(DorisParser.AdminCheckTabletsContext ctx); - /** - * Enter a parse tree produced by the {@code adminShowTabletStorageFormat} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx); - /** - * Exit a parse tree produced by the {@code adminShowTabletStorageFormat} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminShowTabletStorageFormat(DorisParser.AdminShowTabletStorageFormatContext ctx); - /** - * Enter a parse tree produced by the {@code adminCleanTrash} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx); - /** - * Exit a parse tree produced by the {@code adminCleanTrash} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminCleanTrash(DorisParser.AdminCleanTrashContext ctx); - /** - * Enter a parse tree produced by the {@code adminSetTableStatus} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx); - /** - * Exit a parse tree produced by the {@code adminSetTableStatus} - * labeled alternative in {@link DorisParser#supportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminSetTableStatus(DorisParser.AdminSetTableStatusContext ctx); - /** - * Enter a parse tree produced by the {@code recoverDatabase} - * labeled alternative in {@link DorisParser#supportedRecoverStatement}. - * @param ctx the parse tree - */ - void enterRecoverDatabase(DorisParser.RecoverDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code recoverDatabase} - * labeled alternative in {@link DorisParser#supportedRecoverStatement}. - * @param ctx the parse tree - */ - void exitRecoverDatabase(DorisParser.RecoverDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code recoverTable} - * labeled alternative in {@link DorisParser#supportedRecoverStatement}. - * @param ctx the parse tree - */ - void enterRecoverTable(DorisParser.RecoverTableContext ctx); - /** - * Exit a parse tree produced by the {@code recoverTable} - * labeled alternative in {@link DorisParser#supportedRecoverStatement}. - * @param ctx the parse tree - */ - void exitRecoverTable(DorisParser.RecoverTableContext ctx); - /** - * Enter a parse tree produced by the {@code recoverPartition} - * labeled alternative in {@link DorisParser#supportedRecoverStatement}. - * @param ctx the parse tree - */ - void enterRecoverPartition(DorisParser.RecoverPartitionContext ctx); - /** - * Exit a parse tree produced by the {@code recoverPartition} - * labeled alternative in {@link DorisParser#supportedRecoverStatement}. - * @param ctx the parse tree - */ - void exitRecoverPartition(DorisParser.RecoverPartitionContext ctx); - /** - * Enter a parse tree produced by the {@code adminSetReplicaStatus} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx); - /** - * Exit a parse tree produced by the {@code adminSetReplicaStatus} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminSetReplicaStatus(DorisParser.AdminSetReplicaStatusContext ctx); - /** - * Enter a parse tree produced by the {@code adminSetReplicaVersion} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx); - /** - * Exit a parse tree produced by the {@code adminSetReplicaVersion} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminSetReplicaVersion(DorisParser.AdminSetReplicaVersionContext ctx); - /** - * Enter a parse tree produced by the {@code adminRepairTable} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminRepairTable(DorisParser.AdminRepairTableContext ctx); - /** - * Exit a parse tree produced by the {@code adminRepairTable} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminRepairTable(DorisParser.AdminRepairTableContext ctx); - /** - * Enter a parse tree produced by the {@code adminCancelRepairTable} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx); - /** - * Exit a parse tree produced by the {@code adminCancelRepairTable} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminCancelRepairTable(DorisParser.AdminCancelRepairTableContext ctx); - /** - * Enter a parse tree produced by the {@code adminSetFrontendConfig} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx); - /** - * Exit a parse tree produced by the {@code adminSetFrontendConfig} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminSetFrontendConfig(DorisParser.AdminSetFrontendConfigContext ctx); - /** - * Enter a parse tree produced by the {@code adminSetPartitionVersion} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx); - /** - * Exit a parse tree produced by the {@code adminSetPartitionVersion} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminSetPartitionVersion(DorisParser.AdminSetPartitionVersionContext ctx); - /** - * Enter a parse tree produced by the {@code adminCopyTablet} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void enterAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx); - /** - * Exit a parse tree produced by the {@code adminCopyTablet} - * labeled alternative in {@link DorisParser#unsupportedAdminStatement}. - * @param ctx the parse tree - */ - void exitAdminCopyTablet(DorisParser.AdminCopyTabletContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#baseTableRef}. - * @param ctx the parse tree - */ - void enterBaseTableRef(DorisParser.BaseTableRefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#baseTableRef}. - * @param ctx the parse tree - */ - void exitBaseTableRef(DorisParser.BaseTableRefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#wildWhere}. - * @param ctx the parse tree - */ - void enterWildWhere(DorisParser.WildWhereContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#wildWhere}. - * @param ctx the parse tree - */ - void exitWildWhere(DorisParser.WildWhereContext ctx); - /** - * Enter a parse tree produced by the {@code transactionBegin} - * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. - * @param ctx the parse tree - */ - void enterTransactionBegin(DorisParser.TransactionBeginContext ctx); - /** - * Exit a parse tree produced by the {@code transactionBegin} - * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. - * @param ctx the parse tree - */ - void exitTransactionBegin(DorisParser.TransactionBeginContext ctx); - /** - * Enter a parse tree produced by the {@code transcationCommit} - * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. - * @param ctx the parse tree - */ - void enterTranscationCommit(DorisParser.TranscationCommitContext ctx); - /** - * Exit a parse tree produced by the {@code transcationCommit} - * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. - * @param ctx the parse tree - */ - void exitTranscationCommit(DorisParser.TranscationCommitContext ctx); - /** - * Enter a parse tree produced by the {@code transactionRollback} - * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. - * @param ctx the parse tree - */ - void enterTransactionRollback(DorisParser.TransactionRollbackContext ctx); - /** - * Exit a parse tree produced by the {@code transactionRollback} - * labeled alternative in {@link DorisParser#unsupportedTransactionStatement}. - * @param ctx the parse tree - */ - void exitTransactionRollback(DorisParser.TransactionRollbackContext ctx); - /** - * Enter a parse tree produced by the {@code grantTablePrivilege} - * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. - * @param ctx the parse tree - */ - void enterGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx); - /** - * Exit a parse tree produced by the {@code grantTablePrivilege} - * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. - * @param ctx the parse tree - */ - void exitGrantTablePrivilege(DorisParser.GrantTablePrivilegeContext ctx); - /** - * Enter a parse tree produced by the {@code grantResourcePrivilege} - * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. - * @param ctx the parse tree - */ - void enterGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx); - /** - * Exit a parse tree produced by the {@code grantResourcePrivilege} - * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. - * @param ctx the parse tree - */ - void exitGrantResourcePrivilege(DorisParser.GrantResourcePrivilegeContext ctx); - /** - * Enter a parse tree produced by the {@code grantRole} - * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. - * @param ctx the parse tree - */ - void enterGrantRole(DorisParser.GrantRoleContext ctx); - /** - * Exit a parse tree produced by the {@code grantRole} - * labeled alternative in {@link DorisParser#unsupportedGrantRevokeStatement}. - * @param ctx the parse tree - */ - void exitGrantRole(DorisParser.GrantRoleContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#privilege}. - * @param ctx the parse tree - */ - void enterPrivilege(DorisParser.PrivilegeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#privilege}. - * @param ctx the parse tree - */ - void exitPrivilege(DorisParser.PrivilegeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#privilegeList}. - * @param ctx the parse tree - */ - void enterPrivilegeList(DorisParser.PrivilegeListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#privilegeList}. - * @param ctx the parse tree - */ - void exitPrivilegeList(DorisParser.PrivilegeListContext ctx); - /** - * Enter a parse tree produced by the {@code alterDatabaseProperties} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code alterDatabaseProperties} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterDatabaseProperties(DorisParser.AlterDatabasePropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code alterResource} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterResource(DorisParser.AlterResourceContext ctx); - /** - * Exit a parse tree produced by the {@code alterResource} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterResource(DorisParser.AlterResourceContext ctx); - /** - * Enter a parse tree produced by the {@code alterColocateGroup} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx); - /** - * Exit a parse tree produced by the {@code alterColocateGroup} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterColocateGroup(DorisParser.AlterColocateGroupContext ctx); - /** - * Enter a parse tree produced by the {@code alterRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx); - /** - * Exit a parse tree produced by the {@code alterRoutineLoad} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterRoutineLoad(DorisParser.AlterRoutineLoadContext ctx); - /** - * Enter a parse tree produced by the {@code alterStoragePlicy} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx); - /** - * Exit a parse tree produced by the {@code alterStoragePlicy} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterStoragePlicy(DorisParser.AlterStoragePlicyContext ctx); - /** - * Enter a parse tree produced by the {@code alterUser} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void enterAlterUser(DorisParser.AlterUserContext ctx); - /** - * Exit a parse tree produced by the {@code alterUser} - * labeled alternative in {@link DorisParser#unsupportedAlterStatement}. - * @param ctx the parse tree - */ - void exitAlterUser(DorisParser.AlterUserContext ctx); - /** - * Enter a parse tree produced by the {@code addBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterAddBackendClause(DorisParser.AddBackendClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitAddBackendClause(DorisParser.AddBackendClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterDropBackendClause(DorisParser.DropBackendClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitDropBackendClause(DorisParser.DropBackendClauseContext ctx); - /** - * Enter a parse tree produced by the {@code decommissionBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx); - /** - * Exit a parse tree produced by the {@code decommissionBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitDecommissionBackendClause(DorisParser.DecommissionBackendClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addObserverClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterAddObserverClause(DorisParser.AddObserverClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addObserverClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitAddObserverClause(DorisParser.AddObserverClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropObserverClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterDropObserverClause(DorisParser.DropObserverClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropObserverClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitDropObserverClause(DorisParser.DropObserverClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addFollowerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterAddFollowerClause(DorisParser.AddFollowerClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addFollowerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitAddFollowerClause(DorisParser.AddFollowerClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropFollowerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterDropFollowerClause(DorisParser.DropFollowerClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropFollowerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitDropFollowerClause(DorisParser.DropFollowerClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addBrokerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterAddBrokerClause(DorisParser.AddBrokerClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addBrokerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitAddBrokerClause(DorisParser.AddBrokerClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropBrokerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterDropBrokerClause(DorisParser.DropBrokerClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropBrokerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitDropBrokerClause(DorisParser.DropBrokerClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropAllBrokerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropAllBrokerClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitDropAllBrokerClause(DorisParser.DropAllBrokerClauseContext ctx); - /** - * Enter a parse tree produced by the {@code alterLoadErrorUrlClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx); - /** - * Exit a parse tree produced by the {@code alterLoadErrorUrlClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitAlterLoadErrorUrlClause(DorisParser.AlterLoadErrorUrlClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyBackendClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitModifyBackendClause(DorisParser.ModifyBackendClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyFrontendOrBackendHostNameClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void enterModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyFrontendOrBackendHostNameClause} - * labeled alternative in {@link DorisParser#alterSystemClause}. - * @param ctx the parse tree - */ - void exitModifyFrontendOrBackendHostNameClause(DorisParser.ModifyFrontendOrBackendHostNameClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#dropRollupClause}. - * @param ctx the parse tree - */ - void enterDropRollupClause(DorisParser.DropRollupClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#dropRollupClause}. - * @param ctx the parse tree - */ - void exitDropRollupClause(DorisParser.DropRollupClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#addRollupClause}. - * @param ctx the parse tree - */ - void enterAddRollupClause(DorisParser.AddRollupClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#addRollupClause}. - * @param ctx the parse tree - */ - void exitAddRollupClause(DorisParser.AddRollupClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterAddColumnClause(DorisParser.AddColumnClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitAddColumnClause(DorisParser.AddColumnClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addColumnsClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterAddColumnsClause(DorisParser.AddColumnsClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addColumnsClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitAddColumnsClause(DorisParser.AddColumnsClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterDropColumnClause(DorisParser.DropColumnClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitDropColumnClause(DorisParser.DropColumnClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitModifyColumnClause(DorisParser.ModifyColumnClauseContext ctx); - /** - * Enter a parse tree produced by the {@code reorderColumnsClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx); - /** - * Exit a parse tree produced by the {@code reorderColumnsClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitReorderColumnsClause(DorisParser.ReorderColumnsClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterAddPartitionClause(DorisParser.AddPartitionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitAddPartitionClause(DorisParser.AddPartitionClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterDropPartitionClause(DorisParser.DropPartitionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitDropPartitionClause(DorisParser.DropPartitionClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitModifyPartitionClause(DorisParser.ModifyPartitionClauseContext ctx); - /** - * Enter a parse tree produced by the {@code replacePartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code replacePartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitReplacePartitionClause(DorisParser.ReplacePartitionClauseContext ctx); - /** - * Enter a parse tree produced by the {@code replaceTableClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx); - /** - * Exit a parse tree produced by the {@code replaceTableClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitReplaceTableClause(DorisParser.ReplaceTableClauseContext ctx); - /** - * Enter a parse tree produced by the {@code renameClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterRenameClause(DorisParser.RenameClauseContext ctx); - /** - * Exit a parse tree produced by the {@code renameClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitRenameClause(DorisParser.RenameClauseContext ctx); - /** - * Enter a parse tree produced by the {@code renameRollupClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterRenameRollupClause(DorisParser.RenameRollupClauseContext ctx); - /** - * Exit a parse tree produced by the {@code renameRollupClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitRenameRollupClause(DorisParser.RenameRollupClauseContext ctx); - /** - * Enter a parse tree produced by the {@code renamePartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code renamePartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitRenamePartitionClause(DorisParser.RenamePartitionClauseContext ctx); - /** - * Enter a parse tree produced by the {@code renameColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterRenameColumnClause(DorisParser.RenameColumnClauseContext ctx); - /** - * Exit a parse tree produced by the {@code renameColumnClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitRenameColumnClause(DorisParser.RenameColumnClauseContext ctx); - /** - * Enter a parse tree produced by the {@code addIndexClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterAddIndexClause(DorisParser.AddIndexClauseContext ctx); - /** - * Exit a parse tree produced by the {@code addIndexClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitAddIndexClause(DorisParser.AddIndexClauseContext ctx); - /** - * Enter a parse tree produced by the {@code dropIndexClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterDropIndexClause(DorisParser.DropIndexClauseContext ctx); - /** - * Exit a parse tree produced by the {@code dropIndexClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitDropIndexClause(DorisParser.DropIndexClauseContext ctx); - /** - * Enter a parse tree produced by the {@code enableFeatureClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx); - /** - * Exit a parse tree produced by the {@code enableFeatureClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitEnableFeatureClause(DorisParser.EnableFeatureClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyDistributionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyDistributionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitModifyDistributionClause(DorisParser.ModifyDistributionClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyTableCommentClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyTableCommentClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitModifyTableCommentClause(DorisParser.ModifyTableCommentClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyColumnCommentClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyColumnCommentClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitModifyColumnCommentClause(DorisParser.ModifyColumnCommentClauseContext ctx); - /** - * Enter a parse tree produced by the {@code modifyEngineClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx); - /** - * Exit a parse tree produced by the {@code modifyEngineClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitModifyEngineClause(DorisParser.ModifyEngineClauseContext ctx); - /** - * Enter a parse tree produced by the {@code alterMultiPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void enterAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx); - /** - * Exit a parse tree produced by the {@code alterMultiPartitionClause} - * labeled alternative in {@link DorisParser#alterTableClause}. - * @param ctx the parse tree - */ - void exitAlterMultiPartitionClause(DorisParser.AlterMultiPartitionClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#columnPosition}. - * @param ctx the parse tree - */ - void enterColumnPosition(DorisParser.ColumnPositionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#columnPosition}. - * @param ctx the parse tree - */ - void exitColumnPosition(DorisParser.ColumnPositionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#toRollup}. - * @param ctx the parse tree - */ - void enterToRollup(DorisParser.ToRollupContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#toRollup}. - * @param ctx the parse tree - */ - void exitToRollup(DorisParser.ToRollupContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#fromRollup}. - * @param ctx the parse tree - */ - void enterFromRollup(DorisParser.FromRollupContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#fromRollup}. - * @param ctx the parse tree - */ - void exitFromRollup(DorisParser.FromRollupContext ctx); - /** - * Enter a parse tree produced by the {@code dropView} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropView(DorisParser.DropViewContext ctx); - /** - * Exit a parse tree produced by the {@code dropView} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropView(DorisParser.DropViewContext ctx); - /** - * Enter a parse tree produced by the {@code dropResource} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropResource(DorisParser.DropResourceContext ctx); - /** - * Exit a parse tree produced by the {@code dropResource} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropResource(DorisParser.DropResourceContext ctx); - /** - * Enter a parse tree produced by the {@code dropRowPolicy} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropRowPolicy(DorisParser.DropRowPolicyContext ctx); - /** - * Exit a parse tree produced by the {@code dropRowPolicy} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropRowPolicy(DorisParser.DropRowPolicyContext ctx); - /** - * Enter a parse tree produced by the {@code dropStage} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void enterDropStage(DorisParser.DropStageContext ctx); - /** - * Exit a parse tree produced by the {@code dropStage} - * labeled alternative in {@link DorisParser#unsupportedDropStatement}. - * @param ctx the parse tree - */ - void exitDropStage(DorisParser.DropStageContext ctx); - /** - * Enter a parse tree produced by the {@code showAnalyze} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowAnalyze(DorisParser.ShowAnalyzeContext ctx); - /** - * Exit a parse tree produced by the {@code showAnalyze} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowAnalyze(DorisParser.ShowAnalyzeContext ctx); - /** - * Enter a parse tree produced by the {@code showQueuedAnalyzeJobs} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx); - /** - * Exit a parse tree produced by the {@code showQueuedAnalyzeJobs} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowQueuedAnalyzeJobs(DorisParser.ShowQueuedAnalyzeJobsContext ctx); - /** - * Enter a parse tree produced by the {@code showColumnHistogramStats} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx); - /** - * Exit a parse tree produced by the {@code showColumnHistogramStats} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowColumnHistogramStats(DorisParser.ShowColumnHistogramStatsContext ctx); - /** - * Enter a parse tree produced by the {@code analyzeDatabase} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void enterAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code analyzeDatabase} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void exitAnalyzeDatabase(DorisParser.AnalyzeDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code analyzeTable} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void enterAnalyzeTable(DorisParser.AnalyzeTableContext ctx); - /** - * Exit a parse tree produced by the {@code analyzeTable} - * labeled alternative in {@link DorisParser#supportedStatsStatement}. - * @param ctx the parse tree - */ - void exitAnalyzeTable(DorisParser.AnalyzeTableContext ctx); - /** - * Enter a parse tree produced by the {@code alterTableStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterAlterTableStats(DorisParser.AlterTableStatsContext ctx); - /** - * Exit a parse tree produced by the {@code alterTableStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitAlterTableStats(DorisParser.AlterTableStatsContext ctx); - /** - * Enter a parse tree produced by the {@code alterColumnStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterAlterColumnStats(DorisParser.AlterColumnStatsContext ctx); - /** - * Exit a parse tree produced by the {@code alterColumnStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitAlterColumnStats(DorisParser.AlterColumnStatsContext ctx); - /** - * Enter a parse tree produced by the {@code dropStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterDropStats(DorisParser.DropStatsContext ctx); - /** - * Exit a parse tree produced by the {@code dropStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitDropStats(DorisParser.DropStatsContext ctx); - /** - * Enter a parse tree produced by the {@code dropCachedStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterDropCachedStats(DorisParser.DropCachedStatsContext ctx); - /** - * Exit a parse tree produced by the {@code dropCachedStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitDropCachedStats(DorisParser.DropCachedStatsContext ctx); - /** - * Enter a parse tree produced by the {@code dropExpiredStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterDropExpiredStats(DorisParser.DropExpiredStatsContext ctx); - /** - * Exit a parse tree produced by the {@code dropExpiredStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitDropExpiredStats(DorisParser.DropExpiredStatsContext ctx); - /** - * Enter a parse tree produced by the {@code dropAanalyzeJob} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx); - /** - * Exit a parse tree produced by the {@code dropAanalyzeJob} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitDropAanalyzeJob(DorisParser.DropAanalyzeJobContext ctx); - /** - * Enter a parse tree produced by the {@code killAnalyzeJob} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx); - /** - * Exit a parse tree produced by the {@code killAnalyzeJob} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitKillAnalyzeJob(DorisParser.KillAnalyzeJobContext ctx); - /** - * Enter a parse tree produced by the {@code showTableStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowTableStats(DorisParser.ShowTableStatsContext ctx); - /** - * Exit a parse tree produced by the {@code showTableStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowTableStats(DorisParser.ShowTableStatsContext ctx); - /** - * Enter a parse tree produced by the {@code showIndexStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowIndexStats(DorisParser.ShowIndexStatsContext ctx); - /** - * Exit a parse tree produced by the {@code showIndexStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowIndexStats(DorisParser.ShowIndexStatsContext ctx); - /** - * Enter a parse tree produced by the {@code showColumnStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowColumnStats(DorisParser.ShowColumnStatsContext ctx); - /** - * Exit a parse tree produced by the {@code showColumnStats} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowColumnStats(DorisParser.ShowColumnStatsContext ctx); - /** - * Enter a parse tree produced by the {@code showAnalyzeTask} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void enterShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx); - /** - * Exit a parse tree produced by the {@code showAnalyzeTask} - * labeled alternative in {@link DorisParser#unsupportedStatsStatement}. - * @param ctx the parse tree - */ - void exitShowAnalyzeTask(DorisParser.ShowAnalyzeTaskContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#analyzeProperties}. - * @param ctx the parse tree - */ - void enterAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#analyzeProperties}. - * @param ctx the parse tree - */ - void exitAnalyzeProperties(DorisParser.AnalyzePropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code createDatabase} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateDatabase(DorisParser.CreateDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code createDatabase} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateDatabase(DorisParser.CreateDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code createUser} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateUser(DorisParser.CreateUserContext ctx); - /** - * Exit a parse tree produced by the {@code createUser} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateUser(DorisParser.CreateUserContext ctx); - /** - * Enter a parse tree produced by the {@code createRepository} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateRepository(DorisParser.CreateRepositoryContext ctx); - /** - * Exit a parse tree produced by the {@code createRepository} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateRepository(DorisParser.CreateRepositoryContext ctx); - /** - * Enter a parse tree produced by the {@code createResource} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateResource(DorisParser.CreateResourceContext ctx); - /** - * Exit a parse tree produced by the {@code createResource} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateResource(DorisParser.CreateResourceContext ctx); - /** - * Enter a parse tree produced by the {@code createStorageVault} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateStorageVault(DorisParser.CreateStorageVaultContext ctx); - /** - * Exit a parse tree produced by the {@code createStorageVault} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateStorageVault(DorisParser.CreateStorageVaultContext ctx); - /** - * Enter a parse tree produced by the {@code createWorkloadPolicy} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx); - /** - * Exit a parse tree produced by the {@code createWorkloadPolicy} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateWorkloadPolicy(DorisParser.CreateWorkloadPolicyContext ctx); - /** - * Enter a parse tree produced by the {@code createStage} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void enterCreateStage(DorisParser.CreateStageContext ctx); - /** - * Exit a parse tree produced by the {@code createStage} - * labeled alternative in {@link DorisParser#unsupportedCreateStatement}. - * @param ctx the parse tree - */ - void exitCreateStage(DorisParser.CreateStageContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#workloadPolicyActions}. - * @param ctx the parse tree - */ - void enterWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#workloadPolicyActions}. - * @param ctx the parse tree - */ - void exitWorkloadPolicyActions(DorisParser.WorkloadPolicyActionsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#workloadPolicyAction}. - * @param ctx the parse tree - */ - void enterWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#workloadPolicyAction}. - * @param ctx the parse tree - */ - void exitWorkloadPolicyAction(DorisParser.WorkloadPolicyActionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#workloadPolicyConditions}. - * @param ctx the parse tree - */ - void enterWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#workloadPolicyConditions}. - * @param ctx the parse tree - */ - void exitWorkloadPolicyConditions(DorisParser.WorkloadPolicyConditionsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#workloadPolicyCondition}. - * @param ctx the parse tree - */ - void enterWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#workloadPolicyCondition}. - * @param ctx the parse tree - */ - void exitWorkloadPolicyCondition(DorisParser.WorkloadPolicyConditionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#storageBackend}. - * @param ctx the parse tree - */ - void enterStorageBackend(DorisParser.StorageBackendContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#storageBackend}. - * @param ctx the parse tree - */ - void exitStorageBackend(DorisParser.StorageBackendContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#passwordOption}. - * @param ctx the parse tree - */ - void enterPasswordOption(DorisParser.PasswordOptionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#passwordOption}. - * @param ctx the parse tree - */ - void exitPasswordOption(DorisParser.PasswordOptionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#functionArguments}. - * @param ctx the parse tree - */ - void enterFunctionArguments(DorisParser.FunctionArgumentsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#functionArguments}. - * @param ctx the parse tree - */ - void exitFunctionArguments(DorisParser.FunctionArgumentsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#dataTypeList}. - * @param ctx the parse tree - */ - void enterDataTypeList(DorisParser.DataTypeListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#dataTypeList}. - * @param ctx the parse tree - */ - void exitDataTypeList(DorisParser.DataTypeListContext ctx); - /** - * Enter a parse tree produced by the {@code setOptions} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void enterSetOptions(DorisParser.SetOptionsContext ctx); - /** - * Exit a parse tree produced by the {@code setOptions} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void exitSetOptions(DorisParser.SetOptionsContext ctx); - /** - * Enter a parse tree produced by the {@code setDefaultStorageVault} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void enterSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx); - /** - * Exit a parse tree produced by the {@code setDefaultStorageVault} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void exitSetDefaultStorageVault(DorisParser.SetDefaultStorageVaultContext ctx); - /** - * Enter a parse tree produced by the {@code setUserProperties} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void enterSetUserProperties(DorisParser.SetUserPropertiesContext ctx); - /** - * Exit a parse tree produced by the {@code setUserProperties} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void exitSetUserProperties(DorisParser.SetUserPropertiesContext ctx); - /** - * Enter a parse tree produced by the {@code setTransaction} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void enterSetTransaction(DorisParser.SetTransactionContext ctx); - /** - * Exit a parse tree produced by the {@code setTransaction} - * labeled alternative in {@link DorisParser#supportedSetStatement}. - * @param ctx the parse tree - */ - void exitSetTransaction(DorisParser.SetTransactionContext ctx); - /** - * Enter a parse tree produced by the {@code setVariableWithType} - * labeled alternative in {@link DorisParser#optionWithType}. - * @param ctx the parse tree - */ - void enterSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx); - /** - * Exit a parse tree produced by the {@code setVariableWithType} - * labeled alternative in {@link DorisParser#optionWithType}. - * @param ctx the parse tree - */ - void exitSetVariableWithType(DorisParser.SetVariableWithTypeContext ctx); - /** - * Enter a parse tree produced by the {@code setNames} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void enterSetNames(DorisParser.SetNamesContext ctx); - /** - * Exit a parse tree produced by the {@code setNames} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void exitSetNames(DorisParser.SetNamesContext ctx); - /** - * Enter a parse tree produced by the {@code setCharset} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void enterSetCharset(DorisParser.SetCharsetContext ctx); - /** - * Exit a parse tree produced by the {@code setCharset} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void exitSetCharset(DorisParser.SetCharsetContext ctx); - /** - * Enter a parse tree produced by the {@code setCollate} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void enterSetCollate(DorisParser.SetCollateContext ctx); - /** - * Exit a parse tree produced by the {@code setCollate} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void exitSetCollate(DorisParser.SetCollateContext ctx); - /** - * Enter a parse tree produced by the {@code setPassword} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void enterSetPassword(DorisParser.SetPasswordContext ctx); - /** - * Exit a parse tree produced by the {@code setPassword} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void exitSetPassword(DorisParser.SetPasswordContext ctx); - /** - * Enter a parse tree produced by the {@code setLdapAdminPassword} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void enterSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx); - /** - * Exit a parse tree produced by the {@code setLdapAdminPassword} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void exitSetLdapAdminPassword(DorisParser.SetLdapAdminPasswordContext ctx); - /** - * Enter a parse tree produced by the {@code setVariableWithoutType} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void enterSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx); - /** - * Exit a parse tree produced by the {@code setVariableWithoutType} - * labeled alternative in {@link DorisParser#optionWithoutType}. - * @param ctx the parse tree - */ - void exitSetVariableWithoutType(DorisParser.SetVariableWithoutTypeContext ctx); - /** - * Enter a parse tree produced by the {@code setSystemVariable} - * labeled alternative in {@link DorisParser#variable}. - * @param ctx the parse tree - */ - void enterSetSystemVariable(DorisParser.SetSystemVariableContext ctx); - /** - * Exit a parse tree produced by the {@code setSystemVariable} - * labeled alternative in {@link DorisParser#variable}. - * @param ctx the parse tree - */ - void exitSetSystemVariable(DorisParser.SetSystemVariableContext ctx); - /** - * Enter a parse tree produced by the {@code setUserVariable} - * labeled alternative in {@link DorisParser#variable}. - * @param ctx the parse tree - */ - void enterSetUserVariable(DorisParser.SetUserVariableContext ctx); - /** - * Exit a parse tree produced by the {@code setUserVariable} - * labeled alternative in {@link DorisParser#variable}. - * @param ctx the parse tree - */ - void exitSetUserVariable(DorisParser.SetUserVariableContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#transactionAccessMode}. - * @param ctx the parse tree - */ - void enterTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#transactionAccessMode}. - * @param ctx the parse tree - */ - void exitTransactionAccessMode(DorisParser.TransactionAccessModeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#isolationLevel}. - * @param ctx the parse tree - */ - void enterIsolationLevel(DorisParser.IsolationLevelContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#isolationLevel}. - * @param ctx the parse tree - */ - void exitIsolationLevel(DorisParser.IsolationLevelContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#supportedUnsetStatement}. - * @param ctx the parse tree - */ - void enterSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#supportedUnsetStatement}. - * @param ctx the parse tree - */ - void exitSupportedUnsetStatement(DorisParser.SupportedUnsetStatementContext ctx); - /** - * Enter a parse tree produced by the {@code switchCatalog} - * labeled alternative in {@link DorisParser#supportedUseStatement}. - * @param ctx the parse tree - */ - void enterSwitchCatalog(DorisParser.SwitchCatalogContext ctx); - /** - * Exit a parse tree produced by the {@code switchCatalog} - * labeled alternative in {@link DorisParser#supportedUseStatement}. - * @param ctx the parse tree - */ - void exitSwitchCatalog(DorisParser.SwitchCatalogContext ctx); - /** - * Enter a parse tree produced by the {@code useDatabase} - * labeled alternative in {@link DorisParser#supportedUseStatement}. - * @param ctx the parse tree - */ - void enterUseDatabase(DorisParser.UseDatabaseContext ctx); - /** - * Exit a parse tree produced by the {@code useDatabase} - * labeled alternative in {@link DorisParser#supportedUseStatement}. - * @param ctx the parse tree - */ - void exitUseDatabase(DorisParser.UseDatabaseContext ctx); - /** - * Enter a parse tree produced by the {@code useCloudCluster} - * labeled alternative in {@link DorisParser#unsupportedUseStatement}. - * @param ctx the parse tree - */ - void enterUseCloudCluster(DorisParser.UseCloudClusterContext ctx); - /** - * Exit a parse tree produced by the {@code useCloudCluster} - * labeled alternative in {@link DorisParser#unsupportedUseStatement}. - * @param ctx the parse tree - */ - void exitUseCloudCluster(DorisParser.UseCloudClusterContext ctx); - /** - * Enter a parse tree produced by the {@code truncateTable} - * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. - * @param ctx the parse tree - */ - void enterTruncateTable(DorisParser.TruncateTableContext ctx); - /** - * Exit a parse tree produced by the {@code truncateTable} - * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. - * @param ctx the parse tree - */ - void exitTruncateTable(DorisParser.TruncateTableContext ctx); - /** - * Enter a parse tree produced by the {@code copyInto} - * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. - * @param ctx the parse tree - */ - void enterCopyInto(DorisParser.CopyIntoContext ctx); - /** - * Exit a parse tree produced by the {@code copyInto} - * labeled alternative in {@link DorisParser#unsupportedDmlStatement}. - * @param ctx the parse tree - */ - void exitCopyInto(DorisParser.CopyIntoContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#stageAndPattern}. - * @param ctx the parse tree - */ - void enterStageAndPattern(DorisParser.StageAndPatternContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#stageAndPattern}. - * @param ctx the parse tree - */ - void exitStageAndPattern(DorisParser.StageAndPatternContext ctx); - /** - * Enter a parse tree produced by the {@code killConnection} - * labeled alternative in {@link DorisParser#unsupportedKillStatement}. - * @param ctx the parse tree - */ - void enterKillConnection(DorisParser.KillConnectionContext ctx); - /** - * Exit a parse tree produced by the {@code killConnection} - * labeled alternative in {@link DorisParser#unsupportedKillStatement}. - * @param ctx the parse tree - */ - void exitKillConnection(DorisParser.KillConnectionContext ctx); - /** - * Enter a parse tree produced by the {@code killQuery} - * labeled alternative in {@link DorisParser#unsupportedKillStatement}. - * @param ctx the parse tree - */ - void enterKillQuery(DorisParser.KillQueryContext ctx); - /** - * Exit a parse tree produced by the {@code killQuery} - * labeled alternative in {@link DorisParser#unsupportedKillStatement}. - * @param ctx the parse tree - */ - void exitKillQuery(DorisParser.KillQueryContext ctx); - /** - * Enter a parse tree produced by the {@code describeTableValuedFunction} - * labeled alternative in {@link DorisParser#supportedDescribeStatement}. - * @param ctx the parse tree - */ - void enterDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code describeTableValuedFunction} - * labeled alternative in {@link DorisParser#supportedDescribeStatement}. - * @param ctx the parse tree - */ - void exitDescribeTableValuedFunction(DorisParser.DescribeTableValuedFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code describeTableAll} - * labeled alternative in {@link DorisParser#supportedDescribeStatement}. - * @param ctx the parse tree - */ - void enterDescribeTableAll(DorisParser.DescribeTableAllContext ctx); - /** - * Exit a parse tree produced by the {@code describeTableAll} - * labeled alternative in {@link DorisParser#supportedDescribeStatement}. - * @param ctx the parse tree - */ - void exitDescribeTableAll(DorisParser.DescribeTableAllContext ctx); - /** - * Enter a parse tree produced by the {@code describeTable} - * labeled alternative in {@link DorisParser#supportedDescribeStatement}. - * @param ctx the parse tree - */ - void enterDescribeTable(DorisParser.DescribeTableContext ctx); - /** - * Exit a parse tree produced by the {@code describeTable} - * labeled alternative in {@link DorisParser#supportedDescribeStatement}. - * @param ctx the parse tree - */ - void exitDescribeTable(DorisParser.DescribeTableContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#constraint}. - * @param ctx the parse tree - */ - void enterConstraint(DorisParser.ConstraintContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#constraint}. - * @param ctx the parse tree - */ - void exitConstraint(DorisParser.ConstraintContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionSpec}. - * @param ctx the parse tree - */ - void enterPartitionSpec(DorisParser.PartitionSpecContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionSpec}. - * @param ctx the parse tree - */ - void exitPartitionSpec(DorisParser.PartitionSpecContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionTable}. - * @param ctx the parse tree - */ - void enterPartitionTable(DorisParser.PartitionTableContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionTable}. - * @param ctx the parse tree - */ - void exitPartitionTable(DorisParser.PartitionTableContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identityOrFunctionList}. - * @param ctx the parse tree - */ - void enterIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identityOrFunctionList}. - * @param ctx the parse tree - */ - void exitIdentityOrFunctionList(DorisParser.IdentityOrFunctionListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identityOrFunction}. - * @param ctx the parse tree - */ - void enterIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identityOrFunction}. - * @param ctx the parse tree - */ - void exitIdentityOrFunction(DorisParser.IdentityOrFunctionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#dataDesc}. - * @param ctx the parse tree - */ - void enterDataDesc(DorisParser.DataDescContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#dataDesc}. - * @param ctx the parse tree - */ - void exitDataDesc(DorisParser.DataDescContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#statementScope}. - * @param ctx the parse tree - */ - void enterStatementScope(DorisParser.StatementScopeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#statementScope}. - * @param ctx the parse tree - */ - void exitStatementScope(DorisParser.StatementScopeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#buildMode}. - * @param ctx the parse tree - */ - void enterBuildMode(DorisParser.BuildModeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#buildMode}. - * @param ctx the parse tree - */ - void exitBuildMode(DorisParser.BuildModeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#refreshTrigger}. - * @param ctx the parse tree - */ - void enterRefreshTrigger(DorisParser.RefreshTriggerContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#refreshTrigger}. - * @param ctx the parse tree - */ - void exitRefreshTrigger(DorisParser.RefreshTriggerContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#refreshSchedule}. - * @param ctx the parse tree - */ - void enterRefreshSchedule(DorisParser.RefreshScheduleContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#refreshSchedule}. - * @param ctx the parse tree - */ - void exitRefreshSchedule(DorisParser.RefreshScheduleContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#refreshMethod}. - * @param ctx the parse tree - */ - void enterRefreshMethod(DorisParser.RefreshMethodContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#refreshMethod}. - * @param ctx the parse tree - */ - void exitRefreshMethod(DorisParser.RefreshMethodContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#mvPartition}. - * @param ctx the parse tree - */ - void enterMvPartition(DorisParser.MvPartitionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#mvPartition}. - * @param ctx the parse tree - */ - void exitMvPartition(DorisParser.MvPartitionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identifierOrText}. - * @param ctx the parse tree - */ - void enterIdentifierOrText(DorisParser.IdentifierOrTextContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identifierOrText}. - * @param ctx the parse tree - */ - void exitIdentifierOrText(DorisParser.IdentifierOrTextContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identifierOrTextOrAsterisk}. - * @param ctx the parse tree - */ - void enterIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identifierOrTextOrAsterisk}. - * @param ctx the parse tree - */ - void exitIdentifierOrTextOrAsterisk(DorisParser.IdentifierOrTextOrAsteriskContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#multipartIdentifierOrAsterisk}. - * @param ctx the parse tree - */ - void enterMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#multipartIdentifierOrAsterisk}. - * @param ctx the parse tree - */ - void exitMultipartIdentifierOrAsterisk(DorisParser.MultipartIdentifierOrAsteriskContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identifierOrAsterisk}. - * @param ctx the parse tree - */ - void enterIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identifierOrAsterisk}. - * @param ctx the parse tree - */ - void exitIdentifierOrAsterisk(DorisParser.IdentifierOrAsteriskContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#userIdentify}. - * @param ctx the parse tree - */ - void enterUserIdentify(DorisParser.UserIdentifyContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#userIdentify}. - * @param ctx the parse tree - */ - void exitUserIdentify(DorisParser.UserIdentifyContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#grantUserIdentify}. - * @param ctx the parse tree - */ - void enterGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#grantUserIdentify}. - * @param ctx the parse tree - */ - void exitGrantUserIdentify(DorisParser.GrantUserIdentifyContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#explain}. - * @param ctx the parse tree - */ - void enterExplain(DorisParser.ExplainContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#explain}. - * @param ctx the parse tree - */ - void exitExplain(DorisParser.ExplainContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#explainCommand}. - * @param ctx the parse tree - */ - void enterExplainCommand(DorisParser.ExplainCommandContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#explainCommand}. - * @param ctx the parse tree - */ - void exitExplainCommand(DorisParser.ExplainCommandContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#planType}. - * @param ctx the parse tree - */ - void enterPlanType(DorisParser.PlanTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#planType}. - * @param ctx the parse tree - */ - void exitPlanType(DorisParser.PlanTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#replayCommand}. - * @param ctx the parse tree - */ - void enterReplayCommand(DorisParser.ReplayCommandContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#replayCommand}. - * @param ctx the parse tree - */ - void exitReplayCommand(DorisParser.ReplayCommandContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#replayType}. - * @param ctx the parse tree - */ - void enterReplayType(DorisParser.ReplayTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#replayType}. - * @param ctx the parse tree - */ - void exitReplayType(DorisParser.ReplayTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#mergeType}. - * @param ctx the parse tree - */ - void enterMergeType(DorisParser.MergeTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#mergeType}. - * @param ctx the parse tree - */ - void exitMergeType(DorisParser.MergeTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#preFilterClause}. - * @param ctx the parse tree - */ - void enterPreFilterClause(DorisParser.PreFilterClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#preFilterClause}. - * @param ctx the parse tree - */ - void exitPreFilterClause(DorisParser.PreFilterClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#deleteOnClause}. - * @param ctx the parse tree - */ - void enterDeleteOnClause(DorisParser.DeleteOnClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#deleteOnClause}. - * @param ctx the parse tree - */ - void exitDeleteOnClause(DorisParser.DeleteOnClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#sequenceColClause}. - * @param ctx the parse tree - */ - void enterSequenceColClause(DorisParser.SequenceColClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#sequenceColClause}. - * @param ctx the parse tree - */ - void exitSequenceColClause(DorisParser.SequenceColClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#colFromPath}. - * @param ctx the parse tree - */ - void enterColFromPath(DorisParser.ColFromPathContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#colFromPath}. - * @param ctx the parse tree - */ - void exitColFromPath(DorisParser.ColFromPathContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#colMappingList}. - * @param ctx the parse tree - */ - void enterColMappingList(DorisParser.ColMappingListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#colMappingList}. - * @param ctx the parse tree - */ - void exitColMappingList(DorisParser.ColMappingListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#mappingExpr}. - * @param ctx the parse tree - */ - void enterMappingExpr(DorisParser.MappingExprContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#mappingExpr}. - * @param ctx the parse tree - */ - void exitMappingExpr(DorisParser.MappingExprContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#withRemoteStorageSystem}. - * @param ctx the parse tree - */ - void enterWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#withRemoteStorageSystem}. - * @param ctx the parse tree - */ - void exitWithRemoteStorageSystem(DorisParser.WithRemoteStorageSystemContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#resourceDesc}. - * @param ctx the parse tree - */ - void enterResourceDesc(DorisParser.ResourceDescContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#resourceDesc}. - * @param ctx the parse tree - */ - void exitResourceDesc(DorisParser.ResourceDescContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#mysqlDataDesc}. - * @param ctx the parse tree - */ - void enterMysqlDataDesc(DorisParser.MysqlDataDescContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#mysqlDataDesc}. - * @param ctx the parse tree - */ - void exitMysqlDataDesc(DorisParser.MysqlDataDescContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#skipLines}. - * @param ctx the parse tree - */ - void enterSkipLines(DorisParser.SkipLinesContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#skipLines}. - * @param ctx the parse tree - */ - void exitSkipLines(DorisParser.SkipLinesContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#outFileClause}. - * @param ctx the parse tree - */ - void enterOutFileClause(DorisParser.OutFileClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#outFileClause}. - * @param ctx the parse tree - */ - void exitOutFileClause(DorisParser.OutFileClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#query}. - * @param ctx the parse tree - */ - void enterQuery(DorisParser.QueryContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#query}. - * @param ctx the parse tree - */ - void exitQuery(DorisParser.QueryContext ctx); - /** - * Enter a parse tree produced by the {@code queryTermDefault} - * labeled alternative in {@link DorisParser#queryTerm}. - * @param ctx the parse tree - */ - void enterQueryTermDefault(DorisParser.QueryTermDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code queryTermDefault} - * labeled alternative in {@link DorisParser#queryTerm}. - * @param ctx the parse tree - */ - void exitQueryTermDefault(DorisParser.QueryTermDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code setOperation} - * labeled alternative in {@link DorisParser#queryTerm}. - * @param ctx the parse tree - */ - void enterSetOperation(DorisParser.SetOperationContext ctx); - /** - * Exit a parse tree produced by the {@code setOperation} - * labeled alternative in {@link DorisParser#queryTerm}. - * @param ctx the parse tree - */ - void exitSetOperation(DorisParser.SetOperationContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#setQuantifier}. - * @param ctx the parse tree - */ - void enterSetQuantifier(DorisParser.SetQuantifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#setQuantifier}. - * @param ctx the parse tree - */ - void exitSetQuantifier(DorisParser.SetQuantifierContext ctx); - /** - * Enter a parse tree produced by the {@code queryPrimaryDefault} - * labeled alternative in {@link DorisParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code queryPrimaryDefault} - * labeled alternative in {@link DorisParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitQueryPrimaryDefault(DorisParser.QueryPrimaryDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code subquery} - * labeled alternative in {@link DorisParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterSubquery(DorisParser.SubqueryContext ctx); - /** - * Exit a parse tree produced by the {@code subquery} - * labeled alternative in {@link DorisParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitSubquery(DorisParser.SubqueryContext ctx); - /** - * Enter a parse tree produced by the {@code valuesTable} - * labeled alternative in {@link DorisParser#queryPrimary}. - * @param ctx the parse tree - */ - void enterValuesTable(DorisParser.ValuesTableContext ctx); - /** - * Exit a parse tree produced by the {@code valuesTable} - * labeled alternative in {@link DorisParser#queryPrimary}. - * @param ctx the parse tree - */ - void exitValuesTable(DorisParser.ValuesTableContext ctx); - /** - * Enter a parse tree produced by the {@code regularQuerySpecification} - * labeled alternative in {@link DorisParser#querySpecification}. - * @param ctx the parse tree - */ - void enterRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx); - /** - * Exit a parse tree produced by the {@code regularQuerySpecification} - * labeled alternative in {@link DorisParser#querySpecification}. - * @param ctx the parse tree - */ - void exitRegularQuerySpecification(DorisParser.RegularQuerySpecificationContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#cte}. - * @param ctx the parse tree - */ - void enterCte(DorisParser.CteContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#cte}. - * @param ctx the parse tree - */ - void exitCte(DorisParser.CteContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#aliasQuery}. - * @param ctx the parse tree - */ - void enterAliasQuery(DorisParser.AliasQueryContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#aliasQuery}. - * @param ctx the parse tree - */ - void exitAliasQuery(DorisParser.AliasQueryContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#columnAliases}. - * @param ctx the parse tree - */ - void enterColumnAliases(DorisParser.ColumnAliasesContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#columnAliases}. - * @param ctx the parse tree - */ - void exitColumnAliases(DorisParser.ColumnAliasesContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#selectClause}. - * @param ctx the parse tree - */ - void enterSelectClause(DorisParser.SelectClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#selectClause}. - * @param ctx the parse tree - */ - void exitSelectClause(DorisParser.SelectClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#selectColumnClause}. - * @param ctx the parse tree - */ - void enterSelectColumnClause(DorisParser.SelectColumnClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#selectColumnClause}. - * @param ctx the parse tree - */ - void exitSelectColumnClause(DorisParser.SelectColumnClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#whereClause}. - * @param ctx the parse tree - */ - void enterWhereClause(DorisParser.WhereClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#whereClause}. - * @param ctx the parse tree - */ - void exitWhereClause(DorisParser.WhereClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#fromClause}. - * @param ctx the parse tree - */ - void enterFromClause(DorisParser.FromClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#fromClause}. - * @param ctx the parse tree - */ - void exitFromClause(DorisParser.FromClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#intoClause}. - * @param ctx the parse tree - */ - void enterIntoClause(DorisParser.IntoClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#intoClause}. - * @param ctx the parse tree - */ - void exitIntoClause(DorisParser.IntoClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#bulkCollectClause}. - * @param ctx the parse tree - */ - void enterBulkCollectClause(DorisParser.BulkCollectClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#bulkCollectClause}. - * @param ctx the parse tree - */ - void exitBulkCollectClause(DorisParser.BulkCollectClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#tableRow}. - * @param ctx the parse tree - */ - void enterTableRow(DorisParser.TableRowContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#tableRow}. - * @param ctx the parse tree - */ - void exitTableRow(DorisParser.TableRowContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#relations}. - * @param ctx the parse tree - */ - void enterRelations(DorisParser.RelationsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#relations}. - * @param ctx the parse tree - */ - void exitRelations(DorisParser.RelationsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#relation}. - * @param ctx the parse tree - */ - void enterRelation(DorisParser.RelationContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#relation}. - * @param ctx the parse tree - */ - void exitRelation(DorisParser.RelationContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#joinRelation}. - * @param ctx the parse tree - */ - void enterJoinRelation(DorisParser.JoinRelationContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#joinRelation}. - * @param ctx the parse tree - */ - void exitJoinRelation(DorisParser.JoinRelationContext ctx); - /** - * Enter a parse tree produced by the {@code bracketDistributeType} - * labeled alternative in {@link DorisParser#distributeType}. - * @param ctx the parse tree - */ - void enterBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx); - /** - * Exit a parse tree produced by the {@code bracketDistributeType} - * labeled alternative in {@link DorisParser#distributeType}. - * @param ctx the parse tree - */ - void exitBracketDistributeType(DorisParser.BracketDistributeTypeContext ctx); - /** - * Enter a parse tree produced by the {@code commentDistributeType} - * labeled alternative in {@link DorisParser#distributeType}. - * @param ctx the parse tree - */ - void enterCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx); - /** - * Exit a parse tree produced by the {@code commentDistributeType} - * labeled alternative in {@link DorisParser#distributeType}. - * @param ctx the parse tree - */ - void exitCommentDistributeType(DorisParser.CommentDistributeTypeContext ctx); - /** - * Enter a parse tree produced by the {@code bracketRelationHint} - * labeled alternative in {@link DorisParser#relationHint}. - * @param ctx the parse tree - */ - void enterBracketRelationHint(DorisParser.BracketRelationHintContext ctx); - /** - * Exit a parse tree produced by the {@code bracketRelationHint} - * labeled alternative in {@link DorisParser#relationHint}. - * @param ctx the parse tree - */ - void exitBracketRelationHint(DorisParser.BracketRelationHintContext ctx); - /** - * Enter a parse tree produced by the {@code commentRelationHint} - * labeled alternative in {@link DorisParser#relationHint}. - * @param ctx the parse tree - */ - void enterCommentRelationHint(DorisParser.CommentRelationHintContext ctx); - /** - * Exit a parse tree produced by the {@code commentRelationHint} - * labeled alternative in {@link DorisParser#relationHint}. - * @param ctx the parse tree - */ - void exitCommentRelationHint(DorisParser.CommentRelationHintContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#aggClause}. - * @param ctx the parse tree - */ - void enterAggClause(DorisParser.AggClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#aggClause}. - * @param ctx the parse tree - */ - void exitAggClause(DorisParser.AggClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#groupingElement}. - * @param ctx the parse tree - */ - void enterGroupingElement(DorisParser.GroupingElementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#groupingElement}. - * @param ctx the parse tree - */ - void exitGroupingElement(DorisParser.GroupingElementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#groupingSet}. - * @param ctx the parse tree - */ - void enterGroupingSet(DorisParser.GroupingSetContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#groupingSet}. - * @param ctx the parse tree - */ - void exitGroupingSet(DorisParser.GroupingSetContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#havingClause}. - * @param ctx the parse tree - */ - void enterHavingClause(DorisParser.HavingClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#havingClause}. - * @param ctx the parse tree - */ - void exitHavingClause(DorisParser.HavingClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#qualifyClause}. - * @param ctx the parse tree - */ - void enterQualifyClause(DorisParser.QualifyClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#qualifyClause}. - * @param ctx the parse tree - */ - void exitQualifyClause(DorisParser.QualifyClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#selectHint}. - * @param ctx the parse tree - */ - void enterSelectHint(DorisParser.SelectHintContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#selectHint}. - * @param ctx the parse tree - */ - void exitSelectHint(DorisParser.SelectHintContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#hintStatement}. - * @param ctx the parse tree - */ - void enterHintStatement(DorisParser.HintStatementContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#hintStatement}. - * @param ctx the parse tree - */ - void exitHintStatement(DorisParser.HintStatementContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#hintAssignment}. - * @param ctx the parse tree - */ - void enterHintAssignment(DorisParser.HintAssignmentContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#hintAssignment}. - * @param ctx the parse tree - */ - void exitHintAssignment(DorisParser.HintAssignmentContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#updateAssignment}. - * @param ctx the parse tree - */ - void enterUpdateAssignment(DorisParser.UpdateAssignmentContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#updateAssignment}. - * @param ctx the parse tree - */ - void exitUpdateAssignment(DorisParser.UpdateAssignmentContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#updateAssignmentSeq}. - * @param ctx the parse tree - */ - void enterUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#updateAssignmentSeq}. - * @param ctx the parse tree - */ - void exitUpdateAssignmentSeq(DorisParser.UpdateAssignmentSeqContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#lateralView}. - * @param ctx the parse tree - */ - void enterLateralView(DorisParser.LateralViewContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#lateralView}. - * @param ctx the parse tree - */ - void exitLateralView(DorisParser.LateralViewContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#queryOrganization}. - * @param ctx the parse tree - */ - void enterQueryOrganization(DorisParser.QueryOrganizationContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#queryOrganization}. - * @param ctx the parse tree - */ - void exitQueryOrganization(DorisParser.QueryOrganizationContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#sortClause}. - * @param ctx the parse tree - */ - void enterSortClause(DorisParser.SortClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#sortClause}. - * @param ctx the parse tree - */ - void exitSortClause(DorisParser.SortClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#sortItem}. - * @param ctx the parse tree - */ - void enterSortItem(DorisParser.SortItemContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#sortItem}. - * @param ctx the parse tree - */ - void exitSortItem(DorisParser.SortItemContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#limitClause}. - * @param ctx the parse tree - */ - void enterLimitClause(DorisParser.LimitClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#limitClause}. - * @param ctx the parse tree - */ - void exitLimitClause(DorisParser.LimitClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionClause}. - * @param ctx the parse tree - */ - void enterPartitionClause(DorisParser.PartitionClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionClause}. - * @param ctx the parse tree - */ - void exitPartitionClause(DorisParser.PartitionClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#joinType}. - * @param ctx the parse tree - */ - void enterJoinType(DorisParser.JoinTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#joinType}. - * @param ctx the parse tree - */ - void exitJoinType(DorisParser.JoinTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#joinCriteria}. - * @param ctx the parse tree - */ - void enterJoinCriteria(DorisParser.JoinCriteriaContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#joinCriteria}. - * @param ctx the parse tree - */ - void exitJoinCriteria(DorisParser.JoinCriteriaContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identifierList}. - * @param ctx the parse tree - */ - void enterIdentifierList(DorisParser.IdentifierListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identifierList}. - * @param ctx the parse tree - */ - void exitIdentifierList(DorisParser.IdentifierListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identifierSeq}. - * @param ctx the parse tree - */ - void enterIdentifierSeq(DorisParser.IdentifierSeqContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identifierSeq}. - * @param ctx the parse tree - */ - void exitIdentifierSeq(DorisParser.IdentifierSeqContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#optScanParams}. - * @param ctx the parse tree - */ - void enterOptScanParams(DorisParser.OptScanParamsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#optScanParams}. - * @param ctx the parse tree - */ - void exitOptScanParams(DorisParser.OptScanParamsContext ctx); - /** - * Enter a parse tree produced by the {@code tableName} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterTableName(DorisParser.TableNameContext ctx); - /** - * Exit a parse tree produced by the {@code tableName} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitTableName(DorisParser.TableNameContext ctx); - /** - * Enter a parse tree produced by the {@code aliasedQuery} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterAliasedQuery(DorisParser.AliasedQueryContext ctx); - /** - * Exit a parse tree produced by the {@code aliasedQuery} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitAliasedQuery(DorisParser.AliasedQueryContext ctx); - /** - * Enter a parse tree produced by the {@code tableValuedFunction} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterTableValuedFunction(DorisParser.TableValuedFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code tableValuedFunction} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitTableValuedFunction(DorisParser.TableValuedFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code relationList} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void enterRelationList(DorisParser.RelationListContext ctx); - /** - * Exit a parse tree produced by the {@code relationList} - * labeled alternative in {@link DorisParser#relationPrimary}. - * @param ctx the parse tree - */ - void exitRelationList(DorisParser.RelationListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#materializedViewName}. - * @param ctx the parse tree - */ - void enterMaterializedViewName(DorisParser.MaterializedViewNameContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#materializedViewName}. - * @param ctx the parse tree - */ - void exitMaterializedViewName(DorisParser.MaterializedViewNameContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#propertyClause}. - * @param ctx the parse tree - */ - void enterPropertyClause(DorisParser.PropertyClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#propertyClause}. - * @param ctx the parse tree - */ - void exitPropertyClause(DorisParser.PropertyClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#propertyItemList}. - * @param ctx the parse tree - */ - void enterPropertyItemList(DorisParser.PropertyItemListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#propertyItemList}. - * @param ctx the parse tree - */ - void exitPropertyItemList(DorisParser.PropertyItemListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#propertyItem}. - * @param ctx the parse tree - */ - void enterPropertyItem(DorisParser.PropertyItemContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#propertyItem}. - * @param ctx the parse tree - */ - void exitPropertyItem(DorisParser.PropertyItemContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#propertyKey}. - * @param ctx the parse tree - */ - void enterPropertyKey(DorisParser.PropertyKeyContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#propertyKey}. - * @param ctx the parse tree - */ - void exitPropertyKey(DorisParser.PropertyKeyContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#propertyValue}. - * @param ctx the parse tree - */ - void enterPropertyValue(DorisParser.PropertyValueContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#propertyValue}. - * @param ctx the parse tree - */ - void exitPropertyValue(DorisParser.PropertyValueContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#tableAlias}. - * @param ctx the parse tree - */ - void enterTableAlias(DorisParser.TableAliasContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#tableAlias}. - * @param ctx the parse tree - */ - void exitTableAlias(DorisParser.TableAliasContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#multipartIdentifier}. - * @param ctx the parse tree - */ - void enterMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#multipartIdentifier}. - * @param ctx the parse tree - */ - void exitMultipartIdentifier(DorisParser.MultipartIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#simpleColumnDefs}. - * @param ctx the parse tree - */ - void enterSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#simpleColumnDefs}. - * @param ctx the parse tree - */ - void exitSimpleColumnDefs(DorisParser.SimpleColumnDefsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#simpleColumnDef}. - * @param ctx the parse tree - */ - void enterSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#simpleColumnDef}. - * @param ctx the parse tree - */ - void exitSimpleColumnDef(DorisParser.SimpleColumnDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#columnDefs}. - * @param ctx the parse tree - */ - void enterColumnDefs(DorisParser.ColumnDefsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#columnDefs}. - * @param ctx the parse tree - */ - void exitColumnDefs(DorisParser.ColumnDefsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#columnDef}. - * @param ctx the parse tree - */ - void enterColumnDef(DorisParser.ColumnDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#columnDef}. - * @param ctx the parse tree - */ - void exitColumnDef(DorisParser.ColumnDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#indexDefs}. - * @param ctx the parse tree - */ - void enterIndexDefs(DorisParser.IndexDefsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#indexDefs}. - * @param ctx the parse tree - */ - void exitIndexDefs(DorisParser.IndexDefsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#indexDef}. - * @param ctx the parse tree - */ - void enterIndexDef(DorisParser.IndexDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#indexDef}. - * @param ctx the parse tree - */ - void exitIndexDef(DorisParser.IndexDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionsDef}. - * @param ctx the parse tree - */ - void enterPartitionsDef(DorisParser.PartitionsDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionsDef}. - * @param ctx the parse tree - */ - void exitPartitionsDef(DorisParser.PartitionsDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionDef}. - * @param ctx the parse tree - */ - void enterPartitionDef(DorisParser.PartitionDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionDef}. - * @param ctx the parse tree - */ - void exitPartitionDef(DorisParser.PartitionDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#lessThanPartitionDef}. - * @param ctx the parse tree - */ - void enterLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#lessThanPartitionDef}. - * @param ctx the parse tree - */ - void exitLessThanPartitionDef(DorisParser.LessThanPartitionDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#fixedPartitionDef}. - * @param ctx the parse tree - */ - void enterFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#fixedPartitionDef}. - * @param ctx the parse tree - */ - void exitFixedPartitionDef(DorisParser.FixedPartitionDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#stepPartitionDef}. - * @param ctx the parse tree - */ - void enterStepPartitionDef(DorisParser.StepPartitionDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#stepPartitionDef}. - * @param ctx the parse tree - */ - void exitStepPartitionDef(DorisParser.StepPartitionDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#inPartitionDef}. - * @param ctx the parse tree - */ - void enterInPartitionDef(DorisParser.InPartitionDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#inPartitionDef}. - * @param ctx the parse tree - */ - void exitInPartitionDef(DorisParser.InPartitionDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionValueList}. - * @param ctx the parse tree - */ - void enterPartitionValueList(DorisParser.PartitionValueListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionValueList}. - * @param ctx the parse tree - */ - void exitPartitionValueList(DorisParser.PartitionValueListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#partitionValueDef}. - * @param ctx the parse tree - */ - void enterPartitionValueDef(DorisParser.PartitionValueDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#partitionValueDef}. - * @param ctx the parse tree - */ - void exitPartitionValueDef(DorisParser.PartitionValueDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#rollupDefs}. - * @param ctx the parse tree - */ - void enterRollupDefs(DorisParser.RollupDefsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#rollupDefs}. - * @param ctx the parse tree - */ - void exitRollupDefs(DorisParser.RollupDefsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#rollupDef}. - * @param ctx the parse tree - */ - void enterRollupDef(DorisParser.RollupDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#rollupDef}. - * @param ctx the parse tree - */ - void exitRollupDef(DorisParser.RollupDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#aggTypeDef}. - * @param ctx the parse tree - */ - void enterAggTypeDef(DorisParser.AggTypeDefContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#aggTypeDef}. - * @param ctx the parse tree - */ - void exitAggTypeDef(DorisParser.AggTypeDefContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#tabletList}. - * @param ctx the parse tree - */ - void enterTabletList(DorisParser.TabletListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#tabletList}. - * @param ctx the parse tree - */ - void exitTabletList(DorisParser.TabletListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#inlineTable}. - * @param ctx the parse tree - */ - void enterInlineTable(DorisParser.InlineTableContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#inlineTable}. - * @param ctx the parse tree - */ - void exitInlineTable(DorisParser.InlineTableContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#namedExpression}. - * @param ctx the parse tree - */ - void enterNamedExpression(DorisParser.NamedExpressionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#namedExpression}. - * @param ctx the parse tree - */ - void exitNamedExpression(DorisParser.NamedExpressionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#namedExpressionSeq}. - * @param ctx the parse tree - */ - void enterNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#namedExpressionSeq}. - * @param ctx the parse tree - */ - void exitNamedExpressionSeq(DorisParser.NamedExpressionSeqContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#expression}. - * @param ctx the parse tree - */ - void enterExpression(DorisParser.ExpressionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#expression}. - * @param ctx the parse tree - */ - void exitExpression(DorisParser.ExpressionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#lambdaExpression}. - * @param ctx the parse tree - */ - void enterLambdaExpression(DorisParser.LambdaExpressionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#lambdaExpression}. - * @param ctx the parse tree - */ - void exitLambdaExpression(DorisParser.LambdaExpressionContext ctx); - /** - * Enter a parse tree produced by the {@code exist} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterExist(DorisParser.ExistContext ctx); - /** - * Exit a parse tree produced by the {@code exist} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitExist(DorisParser.ExistContext ctx); - /** - * Enter a parse tree produced by the {@code logicalNot} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterLogicalNot(DorisParser.LogicalNotContext ctx); - /** - * Exit a parse tree produced by the {@code logicalNot} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitLogicalNot(DorisParser.LogicalNotContext ctx); - /** - * Enter a parse tree produced by the {@code predicated} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterPredicated(DorisParser.PredicatedContext ctx); - /** - * Exit a parse tree produced by the {@code predicated} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitPredicated(DorisParser.PredicatedContext ctx); - /** - * Enter a parse tree produced by the {@code isnull} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterIsnull(DorisParser.IsnullContext ctx); - /** - * Exit a parse tree produced by the {@code isnull} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitIsnull(DorisParser.IsnullContext ctx); - /** - * Enter a parse tree produced by the {@code is_not_null_pred} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterIs_not_null_pred(DorisParser.Is_not_null_predContext ctx); - /** - * Exit a parse tree produced by the {@code is_not_null_pred} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitIs_not_null_pred(DorisParser.Is_not_null_predContext ctx); - /** - * Enter a parse tree produced by the {@code logicalBinary} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterLogicalBinary(DorisParser.LogicalBinaryContext ctx); - /** - * Exit a parse tree produced by the {@code logicalBinary} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitLogicalBinary(DorisParser.LogicalBinaryContext ctx); - /** - * Enter a parse tree produced by the {@code doublePipes} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void enterDoublePipes(DorisParser.DoublePipesContext ctx); - /** - * Exit a parse tree produced by the {@code doublePipes} - * labeled alternative in {@link DorisParser#booleanExpression}. - * @param ctx the parse tree - */ - void exitDoublePipes(DorisParser.DoublePipesContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#rowConstructor}. - * @param ctx the parse tree - */ - void enterRowConstructor(DorisParser.RowConstructorContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#rowConstructor}. - * @param ctx the parse tree - */ - void exitRowConstructor(DorisParser.RowConstructorContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#rowConstructorItem}. - * @param ctx the parse tree - */ - void enterRowConstructorItem(DorisParser.RowConstructorItemContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#rowConstructorItem}. - * @param ctx the parse tree - */ - void exitRowConstructorItem(DorisParser.RowConstructorItemContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#predicate}. - * @param ctx the parse tree - */ - void enterPredicate(DorisParser.PredicateContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#predicate}. - * @param ctx the parse tree - */ - void exitPredicate(DorisParser.PredicateContext ctx); - /** - * Enter a parse tree produced by the {@code valueExpressionDefault} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void enterValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code valueExpressionDefault} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void exitValueExpressionDefault(DorisParser.ValueExpressionDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code comparison} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void enterComparison(DorisParser.ComparisonContext ctx); - /** - * Exit a parse tree produced by the {@code comparison} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void exitComparison(DorisParser.ComparisonContext ctx); - /** - * Enter a parse tree produced by the {@code arithmeticBinary} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void enterArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx); - /** - * Exit a parse tree produced by the {@code arithmeticBinary} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void exitArithmeticBinary(DorisParser.ArithmeticBinaryContext ctx); - /** - * Enter a parse tree produced by the {@code arithmeticUnary} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void enterArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx); - /** - * Exit a parse tree produced by the {@code arithmeticUnary} - * labeled alternative in {@link DorisParser#valueExpression}. - * @param ctx the parse tree - */ - void exitArithmeticUnary(DorisParser.ArithmeticUnaryContext ctx); - /** - * Enter a parse tree produced by the {@code dereference} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterDereference(DorisParser.DereferenceContext ctx); - /** - * Exit a parse tree produced by the {@code dereference} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitDereference(DorisParser.DereferenceContext ctx); - /** - * Enter a parse tree produced by the {@code currentDate} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCurrentDate(DorisParser.CurrentDateContext ctx); - /** - * Exit a parse tree produced by the {@code currentDate} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCurrentDate(DorisParser.CurrentDateContext ctx); - /** - * Enter a parse tree produced by the {@code cast} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCast(DorisParser.CastContext ctx); - /** - * Exit a parse tree produced by the {@code cast} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCast(DorisParser.CastContext ctx); - /** - * Enter a parse tree produced by the {@code parenthesizedExpression} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code parenthesizedExpression} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitParenthesizedExpression(DorisParser.ParenthesizedExpressionContext ctx); - /** - * Enter a parse tree produced by the {@code userVariable} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterUserVariable(DorisParser.UserVariableContext ctx); - /** - * Exit a parse tree produced by the {@code userVariable} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitUserVariable(DorisParser.UserVariableContext ctx); - /** - * Enter a parse tree produced by the {@code elementAt} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterElementAt(DorisParser.ElementAtContext ctx); - /** - * Exit a parse tree produced by the {@code elementAt} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitElementAt(DorisParser.ElementAtContext ctx); - /** - * Enter a parse tree produced by the {@code localTimestamp} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterLocalTimestamp(DorisParser.LocalTimestampContext ctx); - /** - * Exit a parse tree produced by the {@code localTimestamp} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitLocalTimestamp(DorisParser.LocalTimestampContext ctx); - /** - * Enter a parse tree produced by the {@code charFunction} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCharFunction(DorisParser.CharFunctionContext ctx); - /** - * Exit a parse tree produced by the {@code charFunction} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCharFunction(DorisParser.CharFunctionContext ctx); - /** - * Enter a parse tree produced by the {@code intervalLiteral} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterIntervalLiteral(DorisParser.IntervalLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code intervalLiteral} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitIntervalLiteral(DorisParser.IntervalLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code simpleCase} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSimpleCase(DorisParser.SimpleCaseContext ctx); - /** - * Exit a parse tree produced by the {@code simpleCase} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSimpleCase(DorisParser.SimpleCaseContext ctx); - /** - * Enter a parse tree produced by the {@code columnReference} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterColumnReference(DorisParser.ColumnReferenceContext ctx); - /** - * Exit a parse tree produced by the {@code columnReference} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitColumnReference(DorisParser.ColumnReferenceContext ctx); - /** - * Enter a parse tree produced by the {@code star} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterStar(DorisParser.StarContext ctx); - /** - * Exit a parse tree produced by the {@code star} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitStar(DorisParser.StarContext ctx); - /** - * Enter a parse tree produced by the {@code sessionUser} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSessionUser(DorisParser.SessionUserContext ctx); - /** - * Exit a parse tree produced by the {@code sessionUser} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSessionUser(DorisParser.SessionUserContext ctx); - /** - * Enter a parse tree produced by the {@code convertType} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterConvertType(DorisParser.ConvertTypeContext ctx); - /** - * Exit a parse tree produced by the {@code convertType} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitConvertType(DorisParser.ConvertTypeContext ctx); - /** - * Enter a parse tree produced by the {@code convertCharSet} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterConvertCharSet(DorisParser.ConvertCharSetContext ctx); - /** - * Exit a parse tree produced by the {@code convertCharSet} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitConvertCharSet(DorisParser.ConvertCharSetContext ctx); - /** - * Enter a parse tree produced by the {@code subqueryExpression} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSubqueryExpression(DorisParser.SubqueryExpressionContext ctx); - /** - * Exit a parse tree produced by the {@code subqueryExpression} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSubqueryExpression(DorisParser.SubqueryExpressionContext ctx); - /** - * Enter a parse tree produced by the {@code encryptKey} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterEncryptKey(DorisParser.EncryptKeyContext ctx); - /** - * Exit a parse tree produced by the {@code encryptKey} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitEncryptKey(DorisParser.EncryptKeyContext ctx); - /** - * Enter a parse tree produced by the {@code currentTime} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCurrentTime(DorisParser.CurrentTimeContext ctx); - /** - * Exit a parse tree produced by the {@code currentTime} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCurrentTime(DorisParser.CurrentTimeContext ctx); - /** - * Enter a parse tree produced by the {@code localTime} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterLocalTime(DorisParser.LocalTimeContext ctx); - /** - * Exit a parse tree produced by the {@code localTime} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitLocalTime(DorisParser.LocalTimeContext ctx); - /** - * Enter a parse tree produced by the {@code systemVariable} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSystemVariable(DorisParser.SystemVariableContext ctx); - /** - * Exit a parse tree produced by the {@code systemVariable} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSystemVariable(DorisParser.SystemVariableContext ctx); - /** - * Enter a parse tree produced by the {@code collate} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCollate(DorisParser.CollateContext ctx); - /** - * Exit a parse tree produced by the {@code collate} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCollate(DorisParser.CollateContext ctx); - /** - * Enter a parse tree produced by the {@code currentUser} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCurrentUser(DorisParser.CurrentUserContext ctx); - /** - * Exit a parse tree produced by the {@code currentUser} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCurrentUser(DorisParser.CurrentUserContext ctx); - /** - * Enter a parse tree produced by the {@code constantDefault} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterConstantDefault(DorisParser.ConstantDefaultContext ctx); - /** - * Exit a parse tree produced by the {@code constantDefault} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitConstantDefault(DorisParser.ConstantDefaultContext ctx); - /** - * Enter a parse tree produced by the {@code extract} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterExtract(DorisParser.ExtractContext ctx); - /** - * Exit a parse tree produced by the {@code extract} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitExtract(DorisParser.ExtractContext ctx); - /** - * Enter a parse tree produced by the {@code currentTimestamp} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterCurrentTimestamp(DorisParser.CurrentTimestampContext ctx); - /** - * Exit a parse tree produced by the {@code currentTimestamp} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitCurrentTimestamp(DorisParser.CurrentTimestampContext ctx); - /** - * Enter a parse tree produced by the {@code functionCall} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterFunctionCall(DorisParser.FunctionCallContext ctx); - /** - * Exit a parse tree produced by the {@code functionCall} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitFunctionCall(DorisParser.FunctionCallContext ctx); - /** - * Enter a parse tree produced by the {@code arraySlice} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterArraySlice(DorisParser.ArraySliceContext ctx); - /** - * Exit a parse tree produced by the {@code arraySlice} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitArraySlice(DorisParser.ArraySliceContext ctx); - /** - * Enter a parse tree produced by the {@code searchedCase} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void enterSearchedCase(DorisParser.SearchedCaseContext ctx); - /** - * Exit a parse tree produced by the {@code searchedCase} - * labeled alternative in {@link DorisParser#primaryExpression}. - * @param ctx the parse tree - */ - void exitSearchedCase(DorisParser.SearchedCaseContext ctx); - /** - * Enter a parse tree produced by the {@code except} - * labeled alternative in {@link DorisParser#exceptOrReplace}. - * @param ctx the parse tree - */ - void enterExcept(DorisParser.ExceptContext ctx); - /** - * Exit a parse tree produced by the {@code except} - * labeled alternative in {@link DorisParser#exceptOrReplace}. - * @param ctx the parse tree - */ - void exitExcept(DorisParser.ExceptContext ctx); - /** - * Enter a parse tree produced by the {@code replace} - * labeled alternative in {@link DorisParser#exceptOrReplace}. - * @param ctx the parse tree - */ - void enterReplace(DorisParser.ReplaceContext ctx); - /** - * Exit a parse tree produced by the {@code replace} - * labeled alternative in {@link DorisParser#exceptOrReplace}. - * @param ctx the parse tree - */ - void exitReplace(DorisParser.ReplaceContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#castDataType}. - * @param ctx the parse tree - */ - void enterCastDataType(DorisParser.CastDataTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#castDataType}. - * @param ctx the parse tree - */ - void exitCastDataType(DorisParser.CastDataTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#functionCallExpression}. - * @param ctx the parse tree - */ - void enterFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#functionCallExpression}. - * @param ctx the parse tree - */ - void exitFunctionCallExpression(DorisParser.FunctionCallExpressionContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#functionIdentifier}. - * @param ctx the parse tree - */ - void enterFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#functionIdentifier}. - * @param ctx the parse tree - */ - void exitFunctionIdentifier(DorisParser.FunctionIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#functionNameIdentifier}. - * @param ctx the parse tree - */ - void enterFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#functionNameIdentifier}. - * @param ctx the parse tree - */ - void exitFunctionNameIdentifier(DorisParser.FunctionNameIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#windowSpec}. - * @param ctx the parse tree - */ - void enterWindowSpec(DorisParser.WindowSpecContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#windowSpec}. - * @param ctx the parse tree - */ - void exitWindowSpec(DorisParser.WindowSpecContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#windowFrame}. - * @param ctx the parse tree - */ - void enterWindowFrame(DorisParser.WindowFrameContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#windowFrame}. - * @param ctx the parse tree - */ - void exitWindowFrame(DorisParser.WindowFrameContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#frameUnits}. - * @param ctx the parse tree - */ - void enterFrameUnits(DorisParser.FrameUnitsContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#frameUnits}. - * @param ctx the parse tree - */ - void exitFrameUnits(DorisParser.FrameUnitsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#frameBoundary}. - * @param ctx the parse tree - */ - void enterFrameBoundary(DorisParser.FrameBoundaryContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#frameBoundary}. - * @param ctx the parse tree - */ - void exitFrameBoundary(DorisParser.FrameBoundaryContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#qualifiedName}. - * @param ctx the parse tree - */ - void enterQualifiedName(DorisParser.QualifiedNameContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#qualifiedName}. - * @param ctx the parse tree - */ - void exitQualifiedName(DorisParser.QualifiedNameContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#specifiedPartition}. - * @param ctx the parse tree - */ - void enterSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#specifiedPartition}. - * @param ctx the parse tree - */ - void exitSpecifiedPartition(DorisParser.SpecifiedPartitionContext ctx); - /** - * Enter a parse tree produced by the {@code nullLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterNullLiteral(DorisParser.NullLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code nullLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitNullLiteral(DorisParser.NullLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code typeConstructor} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterTypeConstructor(DorisParser.TypeConstructorContext ctx); - /** - * Exit a parse tree produced by the {@code typeConstructor} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitTypeConstructor(DorisParser.TypeConstructorContext ctx); - /** - * Enter a parse tree produced by the {@code numericLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterNumericLiteral(DorisParser.NumericLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code numericLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitNumericLiteral(DorisParser.NumericLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code booleanLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterBooleanLiteral(DorisParser.BooleanLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code booleanLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitBooleanLiteral(DorisParser.BooleanLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code stringLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterStringLiteral(DorisParser.StringLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code stringLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitStringLiteral(DorisParser.StringLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code arrayLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterArrayLiteral(DorisParser.ArrayLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code arrayLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitArrayLiteral(DorisParser.ArrayLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code mapLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterMapLiteral(DorisParser.MapLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code mapLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitMapLiteral(DorisParser.MapLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code structLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterStructLiteral(DorisParser.StructLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code structLiteral} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitStructLiteral(DorisParser.StructLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code placeholder} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void enterPlaceholder(DorisParser.PlaceholderContext ctx); - /** - * Exit a parse tree produced by the {@code placeholder} - * labeled alternative in {@link DorisParser#constant}. - * @param ctx the parse tree - */ - void exitPlaceholder(DorisParser.PlaceholderContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#comparisonOperator}. - * @param ctx the parse tree - */ - void enterComparisonOperator(DorisParser.ComparisonOperatorContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#comparisonOperator}. - * @param ctx the parse tree - */ - void exitComparisonOperator(DorisParser.ComparisonOperatorContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#booleanValue}. - * @param ctx the parse tree - */ - void enterBooleanValue(DorisParser.BooleanValueContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#booleanValue}. - * @param ctx the parse tree - */ - void exitBooleanValue(DorisParser.BooleanValueContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#whenClause}. - * @param ctx the parse tree - */ - void enterWhenClause(DorisParser.WhenClauseContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#whenClause}. - * @param ctx the parse tree - */ - void exitWhenClause(DorisParser.WhenClauseContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#interval}. - * @param ctx the parse tree - */ - void enterInterval(DorisParser.IntervalContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#interval}. - * @param ctx the parse tree - */ - void exitInterval(DorisParser.IntervalContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#unitIdentifier}. - * @param ctx the parse tree - */ - void enterUnitIdentifier(DorisParser.UnitIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#unitIdentifier}. - * @param ctx the parse tree - */ - void exitUnitIdentifier(DorisParser.UnitIdentifierContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#dataTypeWithNullable}. - * @param ctx the parse tree - */ - void enterDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#dataTypeWithNullable}. - * @param ctx the parse tree - */ - void exitDataTypeWithNullable(DorisParser.DataTypeWithNullableContext ctx); - /** - * Enter a parse tree produced by the {@code complexDataType} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void enterComplexDataType(DorisParser.ComplexDataTypeContext ctx); - /** - * Exit a parse tree produced by the {@code complexDataType} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void exitComplexDataType(DorisParser.ComplexDataTypeContext ctx); - /** - * Enter a parse tree produced by the {@code variantPredefinedFields} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void enterVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx); - /** - * Exit a parse tree produced by the {@code variantPredefinedFields} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void exitVariantPredefinedFields(DorisParser.VariantPredefinedFieldsContext ctx); - /** - * Enter a parse tree produced by the {@code aggStateDataType} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void enterAggStateDataType(DorisParser.AggStateDataTypeContext ctx); - /** - * Exit a parse tree produced by the {@code aggStateDataType} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void exitAggStateDataType(DorisParser.AggStateDataTypeContext ctx); - /** - * Enter a parse tree produced by the {@code primitiveDataType} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void enterPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx); - /** - * Exit a parse tree produced by the {@code primitiveDataType} - * labeled alternative in {@link DorisParser#dataType}. - * @param ctx the parse tree - */ - void exitPrimitiveDataType(DorisParser.PrimitiveDataTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#primitiveColType}. - * @param ctx the parse tree - */ - void enterPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#primitiveColType}. - * @param ctx the parse tree - */ - void exitPrimitiveColType(DorisParser.PrimitiveColTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#complexColTypeList}. - * @param ctx the parse tree - */ - void enterComplexColTypeList(DorisParser.ComplexColTypeListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#complexColTypeList}. - * @param ctx the parse tree - */ - void exitComplexColTypeList(DorisParser.ComplexColTypeListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#complexColType}. - * @param ctx the parse tree - */ - void enterComplexColType(DorisParser.ComplexColTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#complexColType}. - * @param ctx the parse tree - */ - void exitComplexColType(DorisParser.ComplexColTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#variantSubColTypeList}. - * @param ctx the parse tree - */ - void enterVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#variantSubColTypeList}. - * @param ctx the parse tree - */ - void exitVariantSubColTypeList(DorisParser.VariantSubColTypeListContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#variantSubColType}. - * @param ctx the parse tree - */ - void enterVariantSubColType(DorisParser.VariantSubColTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#variantSubColType}. - * @param ctx the parse tree - */ - void exitVariantSubColType(DorisParser.VariantSubColTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#variantSubColMatchType}. - * @param ctx the parse tree - */ - void enterVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#variantSubColMatchType}. - * @param ctx the parse tree - */ - void exitVariantSubColMatchType(DorisParser.VariantSubColMatchTypeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#commentSpec}. - * @param ctx the parse tree - */ - void enterCommentSpec(DorisParser.CommentSpecContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#commentSpec}. - * @param ctx the parse tree - */ - void exitCommentSpec(DorisParser.CommentSpecContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#sample}. - * @param ctx the parse tree - */ - void enterSample(DorisParser.SampleContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#sample}. - * @param ctx the parse tree - */ - void exitSample(DorisParser.SampleContext ctx); - /** - * Enter a parse tree produced by the {@code sampleByPercentile} - * labeled alternative in {@link DorisParser#sampleMethod}. - * @param ctx the parse tree - */ - void enterSampleByPercentile(DorisParser.SampleByPercentileContext ctx); - /** - * Exit a parse tree produced by the {@code sampleByPercentile} - * labeled alternative in {@link DorisParser#sampleMethod}. - * @param ctx the parse tree - */ - void exitSampleByPercentile(DorisParser.SampleByPercentileContext ctx); - /** - * Enter a parse tree produced by the {@code sampleByRows} - * labeled alternative in {@link DorisParser#sampleMethod}. - * @param ctx the parse tree - */ - void enterSampleByRows(DorisParser.SampleByRowsContext ctx); - /** - * Exit a parse tree produced by the {@code sampleByRows} - * labeled alternative in {@link DorisParser#sampleMethod}. - * @param ctx the parse tree - */ - void exitSampleByRows(DorisParser.SampleByRowsContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#tableSnapshot}. - * @param ctx the parse tree - */ - void enterTableSnapshot(DorisParser.TableSnapshotContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#tableSnapshot}. - * @param ctx the parse tree - */ - void exitTableSnapshot(DorisParser.TableSnapshotContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#errorCapturingIdentifier}. - * @param ctx the parse tree - */ - void enterErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#errorCapturingIdentifier}. - * @param ctx the parse tree - */ - void exitErrorCapturingIdentifier(DorisParser.ErrorCapturingIdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code errorIdent} - * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void enterErrorIdent(DorisParser.ErrorIdentContext ctx); - /** - * Exit a parse tree produced by the {@code errorIdent} - * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void exitErrorIdent(DorisParser.ErrorIdentContext ctx); - /** - * Enter a parse tree produced by the {@code realIdent} - * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void enterRealIdent(DorisParser.RealIdentContext ctx); - /** - * Exit a parse tree produced by the {@code realIdent} - * labeled alternative in {@link DorisParser#errorCapturingIdentifierExtra}. - * @param ctx the parse tree - */ - void exitRealIdent(DorisParser.RealIdentContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#identifier}. - * @param ctx the parse tree - */ - void enterIdentifier(DorisParser.IdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#identifier}. - * @param ctx the parse tree - */ - void exitIdentifier(DorisParser.IdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code unquotedIdentifier} - * labeled alternative in {@link DorisParser#strictIdentifier}. - * @param ctx the parse tree - */ - void enterUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx); - /** - * Exit a parse tree produced by the {@code unquotedIdentifier} - * labeled alternative in {@link DorisParser#strictIdentifier}. - * @param ctx the parse tree - */ - void exitUnquotedIdentifier(DorisParser.UnquotedIdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code quotedIdentifierAlternative} - * labeled alternative in {@link DorisParser#strictIdentifier}. - * @param ctx the parse tree - */ - void enterQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx); - /** - * Exit a parse tree produced by the {@code quotedIdentifierAlternative} - * labeled alternative in {@link DorisParser#strictIdentifier}. - * @param ctx the parse tree - */ - void exitQuotedIdentifierAlternative(DorisParser.QuotedIdentifierAlternativeContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#quotedIdentifier}. - * @param ctx the parse tree - */ - void enterQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#quotedIdentifier}. - * @param ctx the parse tree - */ - void exitQuotedIdentifier(DorisParser.QuotedIdentifierContext ctx); - /** - * Enter a parse tree produced by the {@code integerLiteral} - * labeled alternative in {@link DorisParser#number}. - * @param ctx the parse tree - */ - void enterIntegerLiteral(DorisParser.IntegerLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code integerLiteral} - * labeled alternative in {@link DorisParser#number}. - * @param ctx the parse tree - */ - void exitIntegerLiteral(DorisParser.IntegerLiteralContext ctx); - /** - * Enter a parse tree produced by the {@code decimalLiteral} - * labeled alternative in {@link DorisParser#number}. - * @param ctx the parse tree - */ - void enterDecimalLiteral(DorisParser.DecimalLiteralContext ctx); - /** - * Exit a parse tree produced by the {@code decimalLiteral} - * labeled alternative in {@link DorisParser#number}. - * @param ctx the parse tree - */ - void exitDecimalLiteral(DorisParser.DecimalLiteralContext ctx); - /** - * Enter a parse tree produced by {@link DorisParser#nonReserved}. - * @param ctx the parse tree - */ - void enterNonReserved(DorisParser.NonReservedContext ctx); - /** - * Exit a parse tree produced by {@link DorisParser#nonReserved}. - * @param ctx the parse tree - */ - void exitNonReserved(DorisParser.NonReservedContext ctx); -} \ No newline at end of file From 13db2ed3dc1ec474b449c88d1abaf43cb1562ce3 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Thu, 24 Apr 2025 19:01:09 +0800 Subject: [PATCH 6/8] fix --- be/src/olap/rowset/segment_v2/segment_iterator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index fa8616d37ed8e6..f7f2dc42b81798 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -1079,7 +1079,7 @@ Status SegmentIterator::_init_inverted_index_iterators() { const auto& column = _opts.tablet_schema->column(cid); std::vector inverted_indexs; // If the column is an extracted column, we need to find the sub-column in the parent column reader. - if (column.is_extracted_column()) { + if (column.is_extracted_column() && InvertedIndexColumnWriter::check_support_inverted_index(column)) { if (_segment->_column_readers.find(column.parent_unique_id()) == _segment->_column_readers.end()) { continue; From 325764301a0b289995802b024b07fff177b45c31 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Fri, 25 Apr 2025 12:56:23 +0800 Subject: [PATCH 7/8] fix --- be/src/olap/rowset/segment_v2/column_reader.cpp | 7 ++++++- .../rowset/segment_v2/inverted_index_writer.cpp | 14 +++++++++----- .../olap/rowset/segment_v2/inverted_index_writer.h | 2 ++ be/src/olap/rowset/segment_v2/segment_iterator.cpp | 2 +- be/src/vec/common/schema_util.cpp | 3 ++- .../data/variant_p0/with_index/var_index.out | 8 +++++--- .../suites/variant_p0/with_index/var_index.groovy | 1 + 7 files changed, 26 insertions(+), 11 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 8481c33d65506e..31536c44236e64 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -589,12 +589,17 @@ Status VariantColumnReader::init(const ColumnReaderOptions& opts, const SegmentF _subcolumn_readers->add(relative_path, SubcolumnReader {std::move(reader), get_data_type_fn()}); TabletSchema::SubColumnInfo sub_column_info; + // if subcolumn has index, add index to _variant_subcolumns_indexes if (vectorized::schema_util::generate_sub_column_info( *opts.tablet_schema, self_column_pb.unique_id(), relative_path.get_path(), &sub_column_info) && !sub_column_info.indexes.empty()) { _variant_subcolumns_indexes[path.get_path()] = std::move(sub_column_info.indexes); - } else if (!parent_index.empty()) { + } + // if parent column has index, add index to _variant_subcolumns_indexes + else if (!parent_index.empty() && + InvertedIndexColumnWriter::check_support_inverted_index( + (FieldType)column_pb.type())) { for (const auto& index : parent_index) { const auto& suffix_path = path.get_path(); auto subcolumn_index = std::make_unique(*index); diff --git a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp index 951188b496986a..292a53c7e5f3ba 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp +++ b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp @@ -72,11 +72,7 @@ const float MAXMBSortInHeap = 512.0 * 8; const int DIMS = 1; bool InvertedIndexColumnWriter::check_support_inverted_index(const TabletColumn& column) { - // bellow types are not supported in inverted index for extracted columns - static std::set invalid_types = {FieldType::OLAP_FIELD_TYPE_DOUBLE, - FieldType::OLAP_FIELD_TYPE_JSONB, - FieldType::OLAP_FIELD_TYPE_FLOAT}; - if (invalid_types.contains(column.type())) { + if (!check_support_inverted_index(column.type())) { return false; } if (column.is_variant_type()) { @@ -90,6 +86,14 @@ bool InvertedIndexColumnWriter::check_support_inverted_index(const TabletColumn& return true; } +bool InvertedIndexColumnWriter::check_support_inverted_index(FieldType type) { + // bellow types are not supported in inverted index for extracted columns + static std::set invalid_types = {FieldType::OLAP_FIELD_TYPE_DOUBLE, + FieldType::OLAP_FIELD_TYPE_JSONB, + FieldType::OLAP_FIELD_TYPE_FLOAT}; + return !invalid_types.contains(type); +} + template class InvertedIndexColumnWriterImpl : public InvertedIndexColumnWriter { public: diff --git a/be/src/olap/rowset/segment_v2/inverted_index_writer.h b/be/src/olap/rowset/segment_v2/inverted_index_writer.h index a8f719ee1268c6..875a1c6c0b9c08 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_writer.h +++ b/be/src/olap/rowset/segment_v2/inverted_index_writer.h @@ -76,6 +76,8 @@ class InvertedIndexColumnWriter { // are generated from variant, but not all of them are supported static bool check_support_inverted_index(const TabletColumn& column); + static bool check_support_inverted_index(FieldType); + private: DISALLOW_COPY_AND_ASSIGN(InvertedIndexColumnWriter); }; diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index f7f2dc42b81798..fa8616d37ed8e6 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -1079,7 +1079,7 @@ Status SegmentIterator::_init_inverted_index_iterators() { const auto& column = _opts.tablet_schema->column(cid); std::vector inverted_indexs; // If the column is an extracted column, we need to find the sub-column in the parent column reader. - if (column.is_extracted_column() && InvertedIndexColumnWriter::check_support_inverted_index(column)) { + if (column.is_extracted_column()) { if (_segment->_column_readers.find(column.parent_unique_id()) == _segment->_column_readers.end()) { continue; diff --git a/be/src/vec/common/schema_util.cpp b/be/src/vec/common/schema_util.cpp index 2e6f9ba308f559..de090b65367815 100644 --- a/be/src/vec/common/schema_util.cpp +++ b/be/src/vec/common/schema_util.cpp @@ -1203,7 +1203,8 @@ bool generate_sub_column_info(const TabletSchema& schema, int32_t col_unique_id, } // 2. find parent column's index else if (const auto parent_index = schema.inverted_indexs(col_unique_id); - !parent_index.empty()) { + !parent_index.empty() && + InvertedIndexColumnWriter::check_support_inverted_index(sub_column_info->column)) { for (const auto& index : parent_index) { auto index_ptr = std::make_shared(*index); index_ptr->set_escaped_escaped_index_suffix_path( diff --git a/regression-test/data/variant_p0/with_index/var_index.out b/regression-test/data/variant_p0/with_index/var_index.out index 5dd0cadd1c3eae..c47ba8e9b946f3 100644 --- a/regression-test/data/variant_p0/with_index/var_index.out +++ b/regression-test/data/variant_p0/with_index/var_index.out @@ -4,6 +4,11 @@ 3 {"a":18811,"b":"hello wworld","c":11111} 4 {"a":1234,"b":"hello xxx world","c":8181111} +-- !sql -- +2 {"a":18811,"b":"hello world","c":1181111} +3 {"a":18811,"b":"hello wworld","c":11111} +4 {"a":1234,"b":"hello xxx world","c":8181111} + -- !sql -- 2 {"a":18811,"b":"hello world","c":1181111} 4 {"a":1234,"b":"hello xxx world","c":8181111} @@ -22,6 +27,3 @@ 11 {"nested":[{"a":1}]} 11 {"nested":[{"b":"1024"}]} --- !sql -- -1 - diff --git a/regression-test/suites/variant_p0/with_index/var_index.groovy b/regression-test/suites/variant_p0/with_index/var_index.groovy index ce639f34de5be0..a75fbf99a838c1 100644 --- a/regression-test/suites/variant_p0/with_index/var_index.groovy +++ b/regression-test/suites/variant_p0/with_index/var_index.groovy @@ -33,6 +33,7 @@ suite("regression_test_variant_var_index", "p0, nonConcurrent"){ sql """insert into var_index values(2, '{"a" : 18811, "b" : "hello world", "c" : 1181111}')""" sql """insert into var_index values(3, '{"a" : 18811, "b" : "hello wworld", "c" : 11111}')""" sql """insert into var_index values(4, '{"a" : 1234, "b" : "hello xxx world", "c" : 8181111}')""" + qt_sql """select * from var_index where cast(v["a"] as smallint) > 123 and cast(v["b"] as string) match 'hello' and cast(v["c"] as int) > 1024 order by k""" trigger_and_wait_compaction(table_name, "full") sql """ set enable_common_expr_pushdown = true """ sql """set enable_match_without_inverted_index = false""" From d10207bc612b468d1563350bd06f043208cfeff1 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Fri, 25 Apr 2025 15:43:39 +0800 Subject: [PATCH 8/8] fix ut --- be/test/common/schema_util_test.cpp | 121 - .../segment_v2/inverted_index_reader_test.cpp | 1990 ----------------- be/test/olap/tablet_index_test.cpp | 4 +- be/test/vec/common/schema_util_test.cpp | 12 +- 4 files changed, 8 insertions(+), 2119 deletions(-) delete mode 100644 be/test/common/schema_util_test.cpp delete mode 100644 be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp diff --git a/be/test/common/schema_util_test.cpp b/be/test/common/schema_util_test.cpp deleted file mode 100644 index 61b6eb97a3164d..00000000000000 --- a/be/test/common/schema_util_test.cpp +++ /dev/null @@ -1,121 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "vec/common/schema_util.h" - -#include - -namespace doris { - -class SchemaUtilTest : public testing::Test {}; - -void construct_column(ColumnPB* column_pb, TabletIndexPB* tablet_index, int64_t index_id, - const std::string& index_name, int32_t col_unique_id, - const std::string& column_type, const std::string& column_name, - const IndexType& index_type) { - column_pb->set_unique_id(col_unique_id); - column_pb->set_name(column_name); - column_pb->set_type(column_type); - column_pb->set_is_nullable(true); - column_pb->set_is_bf_column(true); - tablet_index->set_index_id(index_id); - tablet_index->set_index_name(index_name); - tablet_index->set_index_type(index_type); - tablet_index->add_col_unique_id(col_unique_id); -} - -void construct_subcolumn(TabletSchemaSPtr schema, const FieldType& type, int32_t col_unique_id, - std::string_view path, std::vector* subcolumns) { - TabletColumn subcol; - subcol.set_type(type); - subcol.set_is_nullable(true); - subcol.set_unique_id(-1); - subcol.set_parent_unique_id(col_unique_id); - vectorized::PathInData col_path(path); - subcol.set_path_info(col_path); - subcol.set_name(col_path.get_path()); - - if (type == FieldType::OLAP_FIELD_TYPE_ARRAY) { - TabletColumn array_item_col; - // double not support inverted index - array_item_col.set_type(FieldType::OLAP_FIELD_TYPE_DOUBLE); - array_item_col.set_is_nullable(true); - array_item_col.set_unique_id(-1); - array_item_col.set_parent_unique_id(col_unique_id); - - subcol.add_sub_column(array_item_col); - } - - schema->append_column(subcol); - subcolumns->emplace_back(std::move(subcol)); -} - -TEST_F(SchemaUtilTest, inherit_column_attributes) { - TabletSchemaPB schema_pb; - schema_pb.set_keys_type(KeysType::DUP_KEYS); - schema_pb.set_inverted_index_storage_format(InvertedIndexStorageFormatPB::V2); - - construct_column(schema_pb.add_column(), schema_pb.add_index(), 10000, "key_index", 0, "INT", - "key", IndexType::INVERTED); - construct_column(schema_pb.add_column(), schema_pb.add_index(), 10001, "v1_index", 1, "VARIANT", - "v1", IndexType::INVERTED); - construct_column(schema_pb.add_column(), schema_pb.add_index(), 10003, "v3_index", 3, "VARIANT", - "v3", IndexType::INVERTED); - - TabletSchemaSPtr tablet_schema = std::make_shared(); - tablet_schema->init_from_pb(schema_pb); - std::vector subcolumns; - - construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_STRING, 1, "v1.b", &subcolumns); - construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_INT, 1, "v1.c", &subcolumns); - - construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_ARRAY, 3, "v3.d", &subcolumns); - construct_subcolumn(tablet_schema, FieldType::OLAP_FIELD_TYPE_FLOAT, 3, "v3.a", &subcolumns); - - vectorized::schema_util::inherit_column_attributes(tablet_schema); - for (const auto& col : subcolumns) { - switch (col._parent_col_unique_id) { - case 1: - EXPECT_TRUE(!tablet_schema->inverted_indexs(col).empty()); - break; - case 3: - EXPECT_TRUE(tablet_schema->inverted_indexs(col).empty()); - break; - default: - EXPECT_TRUE(false); - } - } - EXPECT_EQ(tablet_schema->inverted_indexes().size(), 7); - - for (const auto& col : tablet_schema->_cols) { - if (!col->is_extracted_column()) { - continue; - } - switch (col->_parent_col_unique_id) { - case 1: - EXPECT_TRUE(col->is_bf_column()); - break; - case 3: - EXPECT_TRUE(!col->is_bf_column()); - break; - default: - EXPECT_TRUE(false); - } - } -} - -} // namespace doris diff --git a/be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp b/be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp deleted file mode 100644 index c665395ec7056f..00000000000000 --- a/be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp +++ /dev/null @@ -1,1990 +0,0 @@ -// be/test/olap/rowset/segment_v2/inverted_index_reader_test.cpp -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "olap/rowset/segment_v2/inverted_index_reader.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "olap/field.h" -#include "olap/rowset/segment_v2/inverted_index_desc.h" -#include "olap/rowset/segment_v2/inverted_index_file_reader.h" -#include "olap/rowset/segment_v2/inverted_index_file_writer.h" -#include "olap/rowset/segment_v2/inverted_index_writer.h" -#include "olap/tablet_schema.h" -#include "olap/tablet_schema_helper.h" -#include "runtime/runtime_state.h" -#include "util/slice.h" -#include "vec/data_types/data_type_number.h" -#include "vec/data_types/data_type_string.h" - -namespace doris::segment_v2 { - -class InvertedIndexReaderTest : public testing::Test { -public: - const std::string kTestDir = "./ut_dir/inverted_index_reader_test"; - - void SetUp() override { - auto st = io::global_local_filesystem()->delete_directory(kTestDir); - ASSERT_TRUE(st.ok()) << st; - st = io::global_local_filesystem()->create_directory(kTestDir); - ASSERT_TRUE(st.ok()) << st; - std::vector paths; - paths.emplace_back(kTestDir, 1024); - auto tmp_file_dirs = std::make_unique(paths); - st = tmp_file_dirs->init(); - if (!st.ok()) { - std::cout << "init tmp file dirs error:" << st.to_string() << std::endl; - return; - } - ExecEnv::GetInstance()->set_tmp_file_dir(std::move(tmp_file_dirs)); - - // Initialize cache - int64_t inverted_index_cache_limit = 1024 * 1024 * 1024; - _inverted_index_searcher_cache = std::unique_ptr( - InvertedIndexSearcherCache::create_global_instance(inverted_index_cache_limit, 1)); - _inverted_index_query_cache = std::unique_ptr( - InvertedIndexQueryCache::create_global_cache(inverted_index_cache_limit, 1)); - - ExecEnv::GetInstance()->set_inverted_index_searcher_cache( - _inverted_index_searcher_cache.get()); - ExecEnv::GetInstance()->_inverted_index_query_cache = _inverted_index_query_cache.get(); - } - - void TearDown() override { - ASSERT_TRUE(io::global_local_filesystem()->delete_directory(kTestDir).ok()); - } - - // Create table schema - TabletSchemaSPtr create_schema(KeysType keys_type = DUP_KEYS) { - TabletSchemaSPtr tablet_schema = std::make_shared(); - TabletSchemaPB tablet_schema_pb; - tablet_schema_pb.set_keys_type(keys_type); - - tablet_schema->init_from_pb(tablet_schema_pb); - - // Add INT type key column - TabletColumn column_1; - column_1.set_name("c1"); - column_1.set_unique_id(0); - column_1.set_type(FieldType::OLAP_FIELD_TYPE_INT); - column_1.set_length(4); - column_1.set_index_length(4); - column_1.set_is_key(true); - column_1.set_is_nullable(true); - tablet_schema->append_column(column_1); - - // Add VARCHAR type value column - TabletColumn column_2; - column_2.set_name("c2"); - column_2.set_unique_id(1); - column_2.set_type(FieldType::OLAP_FIELD_TYPE_VARCHAR); - column_2.set_length(65535); - column_2.set_is_key(false); - column_2.set_is_nullable(false); - tablet_schema->append_column(column_2); - - return tablet_schema; - } - - std::string local_segment_path(std::string base, std::string_view rowset_id, int64_t seg_id) { - return fmt::format("{}/{}_{}.dat", base, rowset_id, seg_id); - } - - // Create string inverted index and write data - void prepare_string_index( - std::string_view rowset_id, int seg_id, std::vector& values, - TabletIndex* idx_meta, std::string* index_path_prefix, - InvertedIndexStorageFormatPB format = InvertedIndexStorageFormatPB::V2) { - auto tablet_schema = create_schema(); - - *index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix( - local_segment_path(kTestDir, rowset_id, seg_id)); - std::string index_path = - InvertedIndexDescriptor::get_index_file_path_v2(*index_path_prefix); - - io::FileWriterPtr file_writer; - io::FileWriterOptions opts; - auto fs = io::global_local_filesystem(); - Status sts = fs->create_file(index_path, &file_writer, &opts); - ASSERT_TRUE(sts.ok()) << sts; - auto index_file_writer = std::make_unique( - fs, *index_path_prefix, std::string {rowset_id}, seg_id, format, - std::move(file_writer)); - - // Get c2 column Field - const TabletColumn& column = tablet_schema->column(1); - ASSERT_NE(&column, nullptr); - std::unique_ptr field(FieldFactory::create(column)); - ASSERT_NE(field.get(), nullptr); - - // Create column writer - std::unique_ptr column_writer; - auto status = InvertedIndexColumnWriter::create(field.get(), &column_writer, - index_file_writer.get(), idx_meta); - EXPECT_TRUE(status.ok()) << status; - - // Write string values - status = column_writer->add_values("c2", values.data(), values.size()); - EXPECT_TRUE(status.ok()) << status; - - // Finish and close - status = column_writer->finish(); - EXPECT_TRUE(status.ok()) << status; - status = index_file_writer->close(); - EXPECT_TRUE(status.ok()) << status; - } - - // Create inverted index with NULL values - void prepare_null_index(std::string_view rowset_id, int seg_id, TabletIndex* idx_meta, - std::string* index_path_prefix) { - auto tablet_schema = create_schema(); - - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - - idx_meta->init_from_pb(*index_meta_pb.get()); - - *index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix( - local_segment_path(kTestDir, rowset_id, seg_id)); - std::string index_path = - InvertedIndexDescriptor::get_index_file_path_v2(*index_path_prefix); - - io::FileWriterPtr file_writer; - io::FileWriterOptions opts; - auto fs = io::global_local_filesystem(); - Status sts = fs->create_file(index_path, &file_writer, &opts); - ASSERT_TRUE(sts.ok()) << sts; - auto index_file_writer = std::make_unique( - fs, *index_path_prefix, std::string {rowset_id}, seg_id, - InvertedIndexStorageFormatPB::V2, std::move(file_writer)); - - // Get c2 column Field - const TabletColumn& column = tablet_schema->column(1); - ASSERT_NE(&column, nullptr); - std::unique_ptr field(FieldFactory::create(column)); - ASSERT_NE(field.get(), nullptr); - - // Create column writer - std::unique_ptr column_writer; - auto status = InvertedIndexColumnWriter::create(field.get(), &column_writer, - index_file_writer.get(), idx_meta); - EXPECT_TRUE(status.ok()) << status; - - // Add NULL values - status = column_writer->add_nulls(3); - EXPECT_TRUE(status.ok()) << status; - - // Add some regular values - std::vector values = {Slice("apple"), Slice("banana")}; - status = column_writer->add_values("c2", values.data(), values.size()); - EXPECT_TRUE(status.ok()) << status; - - // Add more NULL values - status = column_writer->add_nulls(2); - EXPECT_TRUE(status.ok()) << status; - - // Finish and close - status = column_writer->finish(); - EXPECT_TRUE(status.ok()) << status; - - status = index_file_writer->close(); - EXPECT_TRUE(status.ok()) << status; - } - - // Create BKD index - void prepare_bkd_index(std::string_view rowset_id, int seg_id, std::vector& values, - TabletIndex* idx_meta, std::string* index_path_prefix) { - auto tablet_schema = create_schema(); - - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(0); // c1 column ID - - // Set BKD index properties - auto* properties = index_meta_pb->mutable_properties(); - (*properties)["type"] = "bkd"; - - idx_meta->init_from_pb(*index_meta_pb.get()); - - *index_path_prefix = InvertedIndexDescriptor::get_index_file_path_prefix( - local_segment_path(kTestDir, rowset_id, seg_id)); - std::string index_path = - InvertedIndexDescriptor::get_index_file_path_v2(*index_path_prefix); - - io::FileWriterPtr file_writer; - io::FileWriterOptions opts; - auto fs = io::global_local_filesystem(); - Status sts = fs->create_file(index_path, &file_writer, &opts); - ASSERT_TRUE(sts.ok()) << sts; - auto index_file_writer = std::make_unique( - fs, *index_path_prefix, std::string {rowset_id}, seg_id, - InvertedIndexStorageFormatPB::V2, std::move(file_writer)); - - // Get c1 column Field - const TabletColumn& column = tablet_schema->column(0); - ASSERT_NE(&column, nullptr); - std::unique_ptr field(FieldFactory::create(column)); - ASSERT_NE(field.get(), nullptr); - - // Create column writer - std::unique_ptr column_writer; - auto status = InvertedIndexColumnWriter::create(field.get(), &column_writer, - index_file_writer.get(), idx_meta); - EXPECT_TRUE(status.ok()) << status; - - // Add integer values - status = column_writer->add_values("c1", values.data(), values.size()); - EXPECT_TRUE(status.ok()) << status; - - // Finish and close - status = column_writer->finish(); - EXPECT_TRUE(status.ok()) << status; - - status = index_file_writer->close(); - EXPECT_TRUE(status.ok()) << status; - } - - // Test string inverted index reading - void test_string_index_read() { - std::string_view rowset_id = "test_read_rowset_1"; - int seg_id = 0; - - // Prepare data - std::vector values = {Slice("apple"), Slice("banana"), Slice("cherry"), - Slice("apple"), // Duplicate value to test frequency - Slice("date")}; - - TabletIndex idx_meta; - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - idx_meta.init_from_pb(*index_meta_pb.get()); - std::string index_path_prefix; - prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, - InvertedIndexStorageFormatPB::V2); - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_searcher_cache = false; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - // Test query - io::IOContext io_ctx; - std::string field_name = "1"; // c2 column unique_id - - // Test EQUAL query - std::shared_ptr bitmap = std::make_shared(); - StringRef str_ref(values[0].data, values[0].size); // "apple" - - auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::EQUAL_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 2) << "Should find 2 documents matching 'apple'"; - EXPECT_TRUE(bitmap->contains(0)) << "Document 0 should match 'apple'"; - EXPECT_TRUE(bitmap->contains(3)) << "Document 3 should match 'apple'"; - - // Test non-existent value - bitmap = std::make_shared(); - std::string not_exist = "orange"; - StringRef not_exist_ref(not_exist.c_str(), not_exist.length()); - - query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, ¬_exist_ref, - InvertedIndexQueryType::EQUAL_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 0) << "Should not find any document matching 'orange'"; - } - - // Test NULL value handling - void test_null_bitmap_read() { - std::string_view rowset_id = "test_read_rowset_2"; - int seg_id = 0; - - TabletIndex idx_meta; - std::string index_path_prefix; - prepare_null_index(rowset_id, seg_id, &idx_meta, &index_path_prefix); - - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - io::IOContext io_ctx; - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - // Read NULL bitmap - InvertedIndexQueryCacheHandle cache_handle; - status = str_reader->read_null_bitmap(&io_ctx, &stats, &cache_handle, nullptr); - EXPECT_TRUE(status.ok()) << status; - - // Get NULL bitmap - std::shared_ptr null_bitmap = cache_handle.get_bitmap(); - EXPECT_NE(null_bitmap, nullptr); - - // Verify expected values in NULL bitmap - EXPECT_EQ(null_bitmap->cardinality(), 5) << "Should have 5 NULL documents"; - std::vector expected_nulls = {0, 1, 2, 5, 6}; - for (int doc_id : expected_nulls) { - EXPECT_TRUE(null_bitmap->contains(doc_id)) - << "Document " << doc_id << " should be NULL"; - } - } - - // Test BKD index query - void test_bkd_index_read() { - std::string_view rowset_id = "test_read_rowset_3"; - int seg_id = 0; - - // Prepare data - std::vector values = {42, 100, 42, 200, 300}; - - TabletIndex idx_meta; - std::string index_path_prefix; - prepare_bkd_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix); - - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_searcher_cache = false; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto bkd_reader = BkdIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(bkd_reader, nullptr); - - io::IOContext io_ctx; - std::string field_name = "0"; // c1 column unique_id - - // Test EQUAL query - int32_t query_value = 42; - std::shared_ptr bitmap = std::make_shared(); - - auto query_status = - bkd_reader->query(&io_ctx, &stats, &runtime_state, field_name, &query_value, - InvertedIndexQueryType::EQUAL_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 2) << "Should find 2 documents matching value 42"; - EXPECT_TRUE(bitmap->contains(0)) << "Document 0 should match value 42"; - EXPECT_TRUE(bitmap->contains(2)) << "Document 2 should match value 42"; - - // Test LESS_THAN query - bitmap = std::make_shared(); - int32_t less_than_value = 100; - - query_status = - bkd_reader->query(&io_ctx, &stats, &runtime_state, field_name, &less_than_value, - InvertedIndexQueryType::LESS_THAN_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 2) << "Should find 2 documents with values less than 100"; - EXPECT_TRUE(bitmap->contains(0)) << "Document 0 should have value less than 100"; - EXPECT_TRUE(bitmap->contains(2)) << "Document 2 should have value less than 100"; - - // Test GREATER_THAN query - bitmap = std::make_shared(); - int32_t greater_than_value = 100; - - query_status = - bkd_reader->query(&io_ctx, &stats, &runtime_state, field_name, &greater_than_value, - InvertedIndexQueryType::GREATER_THAN_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 2) - << "Should find 2 documents with values greater than 100"; - EXPECT_TRUE(bitmap->contains(3)) << "Document 3 should have value greater than 100"; - EXPECT_TRUE(bitmap->contains(4)) << "Document 4 should have value greater than 100"; - } - - // Test query cache - void test_query_cache() { - std::string_view rowset_id = "test_read_rowset_4"; - int seg_id = 0; - - // Prepare data - std::vector values = {Slice("apple"), Slice("banana"), Slice("cherry")}; - - TabletIndex idx_meta; - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - idx_meta.init_from_pb(*index_meta_pb.get()); - std::string index_path_prefix; - prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix); - - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_query_cache = true; - query_options.enable_inverted_index_searcher_cache = true; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - io::IOContext io_ctx; - std::string field_name = "1"; // c2 column unique_id - - // First query, should be cache miss - std::shared_ptr bitmap1 = std::make_shared(); - StringRef str_ref(values[0].data, values[0].size); // "apple" - - auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::EQUAL_QUERY, bitmap1); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(stats.inverted_index_query_cache_miss, 1) << "First query should be cache miss"; - EXPECT_EQ(bitmap1->cardinality(), 1) << "Should find 1 document matching 'apple'"; - - // Second query with same value, should be cache hit - std::shared_ptr bitmap2 = std::make_shared(); - - query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::EQUAL_QUERY, bitmap2); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(stats.inverted_index_query_cache_hit, 1) << "Second query should be cache hit"; - EXPECT_EQ(bitmap2->cardinality(), 1) << "Should find 1 document matching 'apple'"; - } - - // Test searcher cache - void test_searcher_cache() { - std::string_view rowset_id = "test_read_rowset_5"; - int seg_id = 0; - - // Prepare data - std::vector values = {Slice("apple"), Slice("banana"), Slice("cherry")}; - - TabletIndex idx_meta; - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - idx_meta.init_from_pb(*index_meta_pb.get()); - std::string index_path_prefix; - prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, - InvertedIndexStorageFormatPB::V2); - - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_query_cache = false; - query_options.enable_inverted_index_searcher_cache = true; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - io::IOContext io_ctx; - std::string field_name = "1"; // c2 column unique_id - - // First query, should be searcher cache miss - std::shared_ptr bitmap1 = std::make_shared(); - StringRef str_ref(values[0].data, values[0].size); // "apple" - - auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::EQUAL_QUERY, bitmap1); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(stats.inverted_index_searcher_cache_miss, 1) - << "First query should be searcher cache miss"; - - // Query with different value, should be searcher cache hit - std::shared_ptr bitmap2 = std::make_shared(); - StringRef str_ref2(values[1].data, values[1].size); // "banana" - - query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref2, - InvertedIndexQueryType::EQUAL_QUERY, bitmap2); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(stats.inverted_index_searcher_cache_hit, 1) - << "Second query should be searcher cache hit"; - } - - // Test string index with large document set (>512 docs) - void test_string_index_large_docset() { - std::string_view rowset_id = "test_read_rowset_6"; - int seg_id = 0; - - // Prepare data with 1000 documents - std::vector values; - values.reserve(1000); - - // Add 600 documents with term "common" - for (int i = 0; i < 600; i++) { - values.emplace_back("common"); - } - - // Add 200 documents with term "apple" - for (int i = 0; i < 200; i++) { - values.emplace_back("apple"); - } - - // Add 200 documents with term "banana" - for (int i = 0; i < 200; i++) { - values.emplace_back("banana"); - } - - TabletIndex idx_meta; - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - index_meta_pb->mutable_properties()->insert({"parser", "english"}); - index_meta_pb->mutable_properties()->insert({"lower_case", "true"}); - index_meta_pb->mutable_properties()->insert({"support_phrase", "true"}); - idx_meta.init_from_pb(*index_meta_pb.get()); - std::string index_path_prefix; - prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, - InvertedIndexStorageFormatPB::V2); - - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_searcher_cache = false; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, InvertedIndexStorageFormatPB::V2); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = FullTextIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - io::IOContext io_ctx; - std::string field_name = "1"; // c2 column unique_id - - // Test query for "common_term" which has >512 documents - std::shared_ptr bitmap = std::make_shared(); - std::string query_term = "common"; - StringRef str_ref(query_term.c_str(), query_term.length()); - - auto query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 600) << "Should find 600 documents matching 'common'"; - - // Verify first and last document IDs - EXPECT_TRUE(bitmap->contains(0)) << "First document should match 'common'"; - EXPECT_TRUE(bitmap->contains(599)) << "Last document should match 'common'"; - - // Test query for "apple" - bitmap = std::make_shared(); - query_term = "apple"; - StringRef str_ref_a(query_term.c_str(), query_term.length()); - - query_status = str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_a, - InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 200) << "Should find 200 documents matching 'apple'"; - EXPECT_TRUE(bitmap->contains(600)) << "First document of apple should be at position 600"; - EXPECT_TRUE(bitmap->contains(799)) << "Last document of apple should be at position 799"; - } - - // Test string index with large document set using V3 format - void test_string_index_large_docset_v3() { - std::string_view rowset_id = "test_read_rowset_6_v3"; - int seg_id = 0; - - // Prepare data with 1000 documents - std::vector values; - values.reserve(1000); - - // Add 600 documents with term "common_term" - for (int i = 0; i < 600; i++) { - values.emplace_back("common_term"); - } - - // Add 200 documents with term "term_a" - for (int i = 0; i < 200; i++) { - values.emplace_back("term_a"); - } - - // Add 200 documents with term "term_b" - for (int i = 0; i < 200; i++) { - values.emplace_back("term_b"); - } - - { - TabletIndex idx_meta; - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - index_meta_pb->mutable_properties()->insert({"parser", "english"}); - index_meta_pb->mutable_properties()->insert({"lower_case", "true"}); - index_meta_pb->mutable_properties()->insert({"support_phrase", "true"}); - idx_meta.init_from_pb(*index_meta_pb.get()); - std::string index_path_prefix; - prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, - InvertedIndexStorageFormatPB::V3); - - // Create V3 format reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_searcher_cache = false; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, - InvertedIndexStorageFormatPB::V3); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = FullTextIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - io::IOContext io_ctx; - std::string field_name = "1"; // c2 column unique_id - - // Test query for "common_term" which has >512 documents with V3 format - std::shared_ptr bitmap = std::make_shared(); - std::string query_term = "common_term"; - StringRef str_ref(query_term.c_str(), query_term.length()); - - auto query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 600) - << "V3: Should find 600 documents matching 'common_term'"; - - // Verify first and last document IDs - EXPECT_TRUE(bitmap->contains(0)) << "V3: First document should match 'common_term'"; - EXPECT_TRUE(bitmap->contains(599)) << "V3: Last document should match 'common_term'"; - - // Test query for "term_a" with V3 format - bitmap = std::make_shared(); - query_term = "term_a"; - StringRef str_ref_a(query_term.c_str(), query_term.length()); - - query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_a, - InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 200) - << "V3: Should find 200 documents matching 'term_a'"; - EXPECT_TRUE(bitmap->contains(600)) - << "V3: First document of term_a should be at position 600"; - EXPECT_TRUE(bitmap->contains(799)) - << "V3: Last document of term_a should be at position 799"; - - // Test query for "noexist" with V3 format - bitmap = std::make_shared(); - query_term = "noexist"; - StringRef str_ref_no_term(query_term.c_str(), query_term.length()); - - query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_no_term, - InvertedIndexQueryType::MATCH_ANY_QUERY, bitmap); - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 0) << "V3: Should find 0 documents matching 'noexist'"; - } - { - TabletIndex idx_meta; - // Create index metadata - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(1); - index_meta_pb->set_index_name("test"); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(1); // c2 column ID - idx_meta.init_from_pb(*index_meta_pb.get()); - std::string index_path_prefix; - prepare_string_index(rowset_id, seg_id, values, &idx_meta, &index_path_prefix, - InvertedIndexStorageFormatPB::V3); - - // Create V3 format reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_searcher_cache = false; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared( - io::global_local_filesystem(), index_path_prefix, - InvertedIndexStorageFormatPB::V3); - - auto status = reader->init(); - EXPECT_EQ(status, Status::OK()); - - auto str_reader = StringTypeInvertedIndexReader::create_shared(&idx_meta, reader); - EXPECT_NE(str_reader, nullptr); - - io::IOContext io_ctx; - std::string field_name = "1"; // c2 column unique_id - - // Test query for "common_term" which has >512 documents with V3 format - std::shared_ptr bitmap = std::make_shared(); - std::string query_term = "common_term"; - StringRef str_ref(query_term.c_str(), query_term.length()); - - auto query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::EQUAL_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 600) - << "V3: Should find 600 documents matching 'common_term'"; - - // Verify first and last document IDs - EXPECT_TRUE(bitmap->contains(0)) << "V3: First document should match 'common_term'"; - EXPECT_TRUE(bitmap->contains(599)) << "V3: Last document should match 'common_term'"; - - // Test query for "term_a" with V3 format - bitmap = std::make_shared(); - query_term = "term_a"; - StringRef str_ref_a(query_term.c_str(), query_term.length()); - - query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_a, - InvertedIndexQueryType::EQUAL_QUERY, bitmap); - - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 200) - << "V3: Should find 200 documents matching 'term_a'"; - EXPECT_TRUE(bitmap->contains(600)) - << "V3: First document of term_a should be at position 600"; - EXPECT_TRUE(bitmap->contains(799)) - << "V3: Last document of term_a should be at position 799"; - - // Test query for "noexist" with V3 format - bitmap = std::make_shared(); - query_term = "noexist"; - StringRef str_ref_no_term(query_term.c_str(), query_term.length()); - - query_status = - str_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref_no_term, - InvertedIndexQueryType::EQUAL_QUERY, bitmap); - EXPECT_TRUE(query_status.ok()) << query_status; - EXPECT_EQ(bitmap->cardinality(), 0) << "V3: Should find 0 documents matching 'noexist'"; - } - } - - // Helper function to check CPU architecture - bool is_arm_architecture() { -#if defined(__aarch64__) - return true; -#else - return false; -#endif - } - - // Helper function to check AVX2 support - bool has_avx2_support() { -#if defined(USE_AVX2) && defined(__x86_64__) - unsigned int eax, ebx, ecx, edx; - __asm__("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "0"(7), "c"(0)); - return (ebx & (1 << 5)) != 0; // Check AVX2 bit -#else - return false; -#endif - } - - // Helper function to test index reading with inline validation - void test_read_index_file( - const TabletIndex& idx_meta, const std::string& data_dir, const std::string& index_file, - const std::string& field_name, const std::string& query_term, - InvertedIndexStorageFormatPB storage_format, bool enable_compatible_read, - uint64_t expected_cardinality, // Added expected cardinality parameter - const std::vector& expected_doc_ids) { // Added expected doc IDs parameter - // Get the index file path - std::string index_path_prefix = data_dir + "/" + index_file; - - // Create reader - OlapReaderStatistics stats; - RuntimeState runtime_state; - TQueryOptions query_options; - query_options.enable_inverted_index_searcher_cache = false; - query_options.inverted_index_compatible_read = enable_compatible_read; - runtime_state.set_query_options(query_options); - - auto reader = std::make_shared(io::global_local_filesystem(), - index_path_prefix, storage_format); - - auto status = reader->init(); - ASSERT_TRUE(status.ok()) << "Failed to initialize InvertedIndexFileReader for " - << index_file << ": " << status.to_string(); - - auto index_reader = FullTextIndexReader::create_shared(&idx_meta, reader); - ASSERT_NE(index_reader, nullptr) - << "Failed to create FullTextIndexReader for " << index_file; - - io::IOContext io_ctx; - - // Test queries - std::shared_ptr bitmap = std::make_shared(); - StringRef str_ref(query_term.c_str(), query_term.length()); - - auto query_status = - index_reader->query(&io_ctx, &stats, &runtime_state, field_name, &str_ref, - InvertedIndexQueryType::MATCH_PHRASE_QUERY, bitmap); - - ASSERT_TRUE(query_status.ok()) << "Query failed for term '" << query_term << "' in file " - << index_file << ": " << query_status.to_string(); - - // Perform validation inline - ASSERT_NE(bitmap, nullptr) - << "Bitmap is null after successful query for file: " << index_file; - EXPECT_EQ(bitmap->cardinality(), expected_cardinality) - << "File: " << index_file << " - Incorrect cardinality for term '" << query_term - << "'"; - //std::cout << "bitmap: " << bitmap->toString() << std::endl; - for (uint32_t doc_id : expected_doc_ids) { - EXPECT_TRUE(bitmap->contains(doc_id)) - << "File: " << index_file << " - Bitmap should contain doc ID " << doc_id - << " for term '" << query_term << "'"; - } - } - - // Test reading existing large document set index file - void test_compatible_read_cross_platform() { - std::string data_dir = "./be/test/olap/test_data"; - - // Helper lambda to create TabletIndex easily - auto create_test_index_meta = [](int64_t index_id, const std::string& index_name, - int64_t col_unique_id) { - auto index_meta_pb = std::make_unique(); - index_meta_pb->set_index_type(IndexType::INVERTED); - index_meta_pb->set_index_id(index_id); - index_meta_pb->set_index_name(index_name); - index_meta_pb->clear_col_unique_id(); - index_meta_pb->add_col_unique_id(col_unique_id); - index_meta_pb->mutable_properties()->insert({"parser", "english"}); - index_meta_pb->mutable_properties()->insert({"lower_case", "true"}); - index_meta_pb->mutable_properties()->insert({"support_phrase", "true"}); - TabletIndex idx_meta; - idx_meta.init_from_pb(*index_meta_pb.get()); - return idx_meta; - }; - - // Default metadata, query parameters, and expected results - std::string default_index_name = "test"; - std::string default_query_term = "gif"; - uint64_t expected_gif_cardinality = 27296; - std::vector expected_gif_doc_ids = {0, 19, 22, 23, 24, 26, 1000, 10278, 44702}; - - if (is_arm_architecture()) { - // Test ARM architecture cases - std::cout << "Testing on ARM architecture" << std::endl; - { - TabletIndex meta_arm_old_v2 = - create_test_index_meta(1744016478578, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37284; - expected_gif_doc_ids = {0, 19, 110, 1000, 2581, 7197, 9091, 16711, 29676, 44702}; - test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, false, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 359; - expected_gif_doc_ids = { - 25, 63, 66, 135, 214, 276, 287, 321, 653, 819, 968, - 1038, 1115, 1210, 1305, 1394, 1650, 1690, 1761, 1934, 1935, 2101, - 2114, 2544, 2815, 2912, 3028, 3104, 3475, 3953, 3991, 4052, 4097, - 4424, 4430, 4458, 4504, 4571, 4629, 4704, 4711, 4838, 5021, 5322, - 5362, 5414, 5461, 5524, 5681, 5828, 5877, 6031, 6123, 6249, 6298, - 6575, 6626, 6637, 6692, 6708, 6765, 6926, 6953, 7061, 7089, 7144, - 7147, 7184, 7342, 7461, 7615, 7703, 7818, 8002, 8014, 8280, 8369, - 8398, 8440, 8554, 8675, 8682, 8780, 9064, 9379, 9448, 9455, 9639, - 10036, 10124, 10164, 10224, 10246, 10568, 10736, 10750, 10914, 10930, 10944, - 10970, 11149, 11434, 11435, 11534, 11862, 11961, 12187, 12247, 12344, 12479, - 12632, 12923, 13015, 13018, 13122, 13277, 13357, 13459, 13466, 13597, 13792, - 13857, 13952, 14096, 14127, 14211, 14221, 14344, 14563, 14567, 14588, 14606, - 14692, 14868, 14880, 14990, 15085, 15101, 15211, 15218, 15439, 15530, 15564, - 15676, 15695, 15727, 15754, 15846, 15895, 15904, 15983, 16004, 16299, 16423, - 16476, 16530, 16954, 17045, 17202, 17393, 17592, 17693, 17829, 17852, 18018, - 18224, 18335, 18881, 18942, 19162, 19387, 19401, 19418, 19434, 19525, 19710, - 19805, 20054, 20126, 20127, 20407, 20572, 20742, 20929, 21023, 21024, 21248, - 21267, 21354, 21452, 21704, 21810, 21831, 21847, 21900, 22202, 22328, 22599, - 22629, 22671, 22761, 22762, 22824, 23139, 23478, 23784, 23797, 23884, 23886, - 23983, 24128, 24137, 24176, 24253, 24434, 24484, 24518, 24538, 24655, 24849, - 24853, 24865, 24888, 25163, 25256, 25274, 25307, 25613, 25816, 26225, 26323, - 26459, 26461, 26476, 26580, 26598, 26800, 26932, 26962, 27202, 27499, 27506, - 27768, 27923, 28049, 28133, 28305, 28468, 28535, 28670, 28717, 28782, 29154, - 29692, 29742, 30112, 30125, 30289, 30353, 30437, 30734, 30741, 30848, 30933, - 31332, 31399, 31581, 31841, 31867, 32025, 32446, 32463, 32712, 32947, 33038, - 33210, 33325, 33563, 33572, 33757, 33947, 33975, 34016, 34041, 34210, 34627, - 34684, 34732, 35064, 35684, 35787, 35809, 35811, 35996, 36272, 36389, 36418, - 36420, 36568, 36847, 36956, 37022, 37189, 37200, 37401, 37484, 37581, 37852, - 37939, 38156, 38269, 38785, 38874, 39072, 39081, 39094, 39157, 39187, 39308, - 39562, 39676, 39690, 39814, 39848, 40134, 40350, 40352, 40684, 41143, 41249, - 41416, 41463, 41738, 41840, 41875, 42028, 42077, 42104, 42439, 42467, 42528, - 42784, 42793, 42970, 43020, 43418, 43430, 43571, 43809, 43811, 44040, 44057, - 44081, 44168, 44288, 44329, 44608, 44624, 44690}; - test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, false, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_arm_old_v1 = - create_test_index_meta(1744016478651, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 40962; - expected_gif_doc_ids = {0, 21, 110, 1000, 2581, 7196, 9091, 16712, 26132, 44702}; - test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, false, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 402; - expected_gif_doc_ids = { - 36, 41, 242, 628, 716, 741, 884, 902, 1025, 1129, 1349, - 1401, 1871, 1873, 2074, 2184, 2420, 2815, 3138, 3164, 3189, 3302, - 3308, 3347, 3430, 3475, 3645, 3772, 3803, 3921, 4036, 4080, 4127, - 4419, 4424, 4450, 4526, 4546, 4608, 4668, 4701, 5223, 5274, 5366, - 5438, 5670, 6109, 6176, 6386, 6412, 6466, 6554, 6594, 6761, 6941, - 6957, 7076, 7173, 7178, 7208, 7263, 7370, 7489, 7726, 7800, 8293, - 8309, 8469, 8588, 8759, 8914, 9242, 9254, 9334, 9354, 9422, 9476, - 9515, 9545, 9709, 9714, 9741, 9982, 9995, 10145, 10284, 10384, 10464, - 10508, 10641, 10720, 10771, 10810, 10935, 11097, 11367, 11525, 11554, 11574, - 11660, 11857, 11930, 12025, 12078, 12203, 12237, 12245, 12297, 12432, 12466, - 12601, 12745, 12893, 12928, 13127, 13157, 13173, 13336, 13458, 13517, 13553, - 13681, 13747, 13893, 13935, 14108, 14191, 14265, 14408, 14439, 14468, 14528, - 14565, 14587, 14618, 14642, 14993, 15010, 15260, 15358, 15453, 15539, 15557, - 15586, 15594, 15728, 15893, 15904, 16156, 16304, 16408, 16532, 16789, 16974, - 17015, 17294, 17330, 17347, 17733, 17773, 17981, 17992, 18015, 18209, 18211, - 18278, 18566, 18603, 18643, 18912, 19327, 19419, 19538, 19700, 19714, 19872, - 19873, 19895, 19971, 20118, 20379, 20515, 20526, 20781, 20967, 21108, 21163, - 21179, 21431, 21474, 21595, 21749, 21822, 21848, 21999, 22314, 22476, 22539, - 22677, 23070, 23071, 23491, 23841, 23986, 24017, 24109, 24139, 24196, 24301, - 24355, 24742, 24965, 24970, 24987, 25254, 25268, 25287, 25331, 26050, 26133, - 26238, 26364, 26388, 26435, 26804, 26844, 26849, 26934, 27190, 27294, 27441, - 27467, 27679, 27702, 27762, 27772, 27821, 27844, 27860, 27912, 28068, 28115, - 28301, 28304, 28379, 28440, 28816, 28885, 28948, 28966, 29348, 29484, 29509, - 29902, 29908, 29917, 29951, 30127, 30181, 30693, 30779, 30861, 30903, 31061, - 31358, 31646, 31658, 31713, 31782, 31815, 31905, 31967, 32019, 32333, 32376, - 32394, 32452, 32635, 32709, 32973, 33505, 33506, 33602, 33693, 33751, 33793, - 33942, 33993, 34106, 34413, 34508, 34526, 34798, 34974, 34999, 35033, 35106, - 35159, 35200, 35288, 35305, 35355, 35373, 35522, 35583, 35602, 35716, 35956, - 36022, 36035, 36264, 36315, 36359, 36525, 36601, 36616, 36627, 36677, 36939, - 36970, 37050, 37139, 37218, 37287, 37445, 37467, 37502, 37521, 37552, 37635, - 37705, 37737, 37786, 37855, 38242, 38410, 38790, 38881, 39036, 39051, 39103, - 39123, 39165, 39195, 39373, 39425, 39464, 39476, 39499, 39627, 39657, 39754, - 39804, 40029, 40510, 40651, 40660, 40745, 40974, 41163, 41275, 41515, 41847, - 41931, 42030, 42174, 42385, 42448, 42462, 43183, 43243, 43279, 43417, 43645, - 43698, 44144, 44425, 44430, 44625, 44739, 44849, 44993, 45335, 45343, 45561, - 45594, 45734, 45978, 46070, 46162, 46378, 46449, 46704, 46833, 47257, 47268, - 47548, 47984, 47990, 48101, 48545, 48661}; - test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, false, - expected_gif_cardinality, expected_gif_doc_ids); - { - TabletIndex meta_x86_old_v2 = create_test_index_meta(10083, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37343; - expected_gif_doc_ids = {0, 19, 110, 1000, 2581, - 7196, 9090, 16711, 10278, 44702}; - test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 346; - expected_gif_doc_ids = { - 3, 222, 502, 649, 671, 814, 1101, 1110, 1286, 1329, - 1350, 1409, 1478, 1598, 1621, 1627, 1686, 1895, 2218, 2304, - 2429, 2654, 2735, 2798, 2799, 2828, 2966, 3050, 3083, 3261, - 3296, 3574, 3625, 3653, 4053, 4128, 4192, 4200, 4594, 4623, - 4747, 5284, 5371, 5379, 5467, 5567, 5694, 5714, 5723, 5903, - 5954, 6120, 6187, 6226, 6451, 6664, 6723, 6748, 6958, 7319, - 7933, 7947, 8041, 8156, 8203, 8205, 8568, 8626, 8777, 8923, - 8999, 9088, 9193, 9239, 9282, 9358, 9386, 9531, 9589, 9599, - 9864, 10006, 10229, 10370, 10523, 10751, 10854, 10864, 10883, 11045, - 11077, 11134, 11149, 11252, 11258, 11260, 11432, 11488, 11578, 11599, - 11765, 11826, 11929, 12124, 12154, 12277, 12339, 12410, 12432, 12500, - 12612, 12618, 12654, 12872, 12929, 12987, 13173, 13293, 13306, 13397, - 13559, 13800, 14017, 14180, 14195, 14283, 14385, 14481, 14659, 14728, - 14738, 15150, 15574, 15586, 15774, 15914, 15968, 16093, 16131, 16155, - 16337, 16340, 16391, 16420, 16577, 16632, 16836, 16874, 16883, 16896, - 16954, 17060, 17241, 17302, 17359, 17601, 17985, 18017, 18043, 18084, - 18334, 18539, 18637, 18831, 18864, 19068, 19075, 19140, 19445, 19487, - 19495, 19559, 19648, 19656, 19770, 19880, 20284, 20311, 20358, 20439, - 21103, 21252, 21382, 21429, 21678, 21765, 21773, 21779, 21877, 22067, - 22318, 22607, 22713, 22719, 22929, 23074, 23148, 23209, 23500, 23611, - 23614, 23709, 23761, 23952, 23999, 24120, 24217, 24503, 24656, 24675, - 24842, 24924, 24970, 25144, 25582, 25767, 25923, 26184, 26206, 26344, - 26376, 26529, 26682, 26686, 26803, 26896, 26921, 26951, 26982, 27033, - 27075, 27163, 27166, 27299, 27567, 27682, 28010, 28173, 28368, 28423, - 28440, 28590, 28801, 28990, 28994, 29138, 29256, 29300, 29657, 29769, - 30018, 30086, 30154, 30189, 30382, 30385, 30445, 30456, 30489, 30545, - 30908, 30931, 31009, 31267, 31297, 31336, 31696, 31728, 31735, 31943, - 32155, 32244, 32342, 32431, 32569, 32733, 32799, 32817, 32903, 33078, - 33552, 34064, 34604, 34705, 35186, 35256, 35284, 35295, 35494, 35745, - 35943, 36051, 36343, 36430, 36452, 36666, 36697, 36763, 36822, 36890, - 37511, 37547, 37706, 38256, 38581, 38911, 38931, 38955, 38998, 39131, - 39135, 39255, 39312, 39394, 39459, 39635, 39707, 40190, 40215, 40708, - 41063, 41264, 41361, 41593, 41699, 41864, 42190, 42363, 42444, 42873, - 42983, 43314, 43587, 43693, 43880, 43908, 43909, 43925, 43978, 43986, - 44071, 44183, 44340, 44398, 44466, 44498}; - test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_old_v1 = create_test_index_meta(10248, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 40893; - expected_gif_doc_ids = {0, 19, 110, 1001, 2581, - 7196, 9090, 16711, 10278, 44701}; - test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, true, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 356; - expected_gif_doc_ids = { - 622, 754, 1021, 1186, 1403, 1506, 1655, 1661, 1833, 2287, - 2356, 2425, 2849, 3198, 3350, 3365, 3416, 3423, 3499, 3541, - 3609, 3682, 3936, 4117, 4198, 4589, 4591, 4808, 4959, 5282, - 5332, 5495, 5560, 5624, 5773, 5831, 6138, 6180, 6361, 6372, - 6621, 6777, 6878, 6911, 6983, 7048, 7148, 7207, 7273, 7274, - 7385, 7545, 7735, 7904, 7912, 8150, 8215, 8238, 8363, 8598, - 8672, 8765, 8877, 9188, 9264, 9761, 9864, 9866, 9946, 10022, - 10139, 10143, 10146, 10184, 10291, 10304, 10308, 10332, 10371, 10695, - 10707, 11056, 11095, 11111, 11505, 11752, 11860, 11989, 12119, 12156, - 12655, 12764, 12792, 13055, 13636, 13824, 13902, 13912, 14061, 14152, - 14315, 14355, 14618, 14712, 14788, 15050, 15057, 15110, 15122, 15249, - 15267, 15281, 15735, 15848, 15939, 16117, 16327, 16331, 16597, 16739, - 16868, 17092, 17458, 17553, 17602, 17664, 17781, 18061, 18353, 18397, - 18468, 18717, 18726, 19131, 19209, 19402, 19551, 19812, 20128, 20146, - 20232, 20322, 20407, 20431, 20436, 20466, 20757, 20960, 20994, 21197, - 21254, 21487, 21561, 21602, 21662, 21710, 21754, 21826, 21965, 22091, - 22200, 22203, 22291, 22317, 22561, 22584, 22606, 22950, 23140, 23315, - 23442, 23858, 24026, 24322, 24581, 24617, 24655, 24756, 24974, 25191, - 25246, 25287, 25406, 25599, 25830, 26020, 26109, 26149, 26402, 26431, - 26451, 26458, 26495, 26766, 26777, 26848, 26966, 27053, 27089, 27177, - 27519, 27595, 27693, 28294, 28719, 28755, 29073, 29323, 29472, 29496, - 29604, 29761, 29772, 29953, 30030, 30083, 30139, 30210, 30719, 30774, - 30868, 30897, 31200, 31347, 31811, 31880, 31903, 32040, 32048, 32225, - 32335, 32357, 32517, 32579, 32679, 32821, 33294, 33393, 33509, 33675, - 33802, 34390, 34441, 34474, 34547, 34557, 35057, 35262, 35327, 35348, - 35455, 35482, 35668, 35811, 35845, 35953, 36098, 36151, 36602, 36711, - 36946, 37036, 37220, 37291, 37436, 37721, 37747, 37864, 37890, 37923, - 38045, 38588, 38654, 38730, 38930, 39169, 39814, 40401, 40689, 40762, - 40822, 41249, 41399, 41419, 41572, 41736, 41768, 41946, 41989, 42077, - 42079, 42225, 42360, 42524, 42576, 42595, 42691, 42784, 42892, 42930, - 43210, 43299, 43348, 43468, 43510, 43622, 43795, 43824, 43893, 43972, - 43975, 43998, 44008, 44023, 44031, 44049, 44139, 44518, 44555, 44597, - 44815, 44879, 45014, 45020, 45054, 45084, 45100, 45464, 45471, 45505, - 45580, 45593, 45686, 45991, 46019, 46021, 46107, 46138, 46197, 46209, - 46551, 46658, 46988, 47027, 47046, 47071, 47106, 47190, 47225, 47439, - 47465, 47531, 47602, 47660, 48453, 48575}; - test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, true, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_new_v1 = - create_test_index_meta(1744025019684, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 37337; - expected_gif_doc_ids = {0, 19, 110, 1001, 2581, - 7196, 9090, 16711, 10279, 44701}; - test_read_index_file(meta_x86_new_v1, data_dir, "x86_new", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, - false, expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 368; - expected_gif_doc_ids = { - 294, 678, 835, 852, 998, 1204, 1237, 1553, 1648, 1674, - 1859, 1944, 2024, 2043, 2319, 2383, 2476, 2955, 3064, 3281, - 3292, 3324, 3341, 3389, 3424, 3713, 3715, 3731, 3794, 3801, - 3824, 3892, 4089, 4174, 4302, 4436, 4459, 4509, 4697, 4726, - 4891, 4931, 4975, 5008, 5020, 5154, 5200, 5288, 5375, 5458, - 5624, 5728, 5844, 5864, 6306, 6452, 6461, 6619, 6632, 6755, - 7021, 7093, 7400, 7414, 7422, 7484, 7752, 7758, 7785, 7900, - 7992, 8013, 8019, 8075, 8076, 8118, 8119, 8123, 8126, 8248, - 8345, 8557, 8772, 8900, 8946, 8966, 8974, 9583, 9597, 9613, - 9782, 9869, 10033, 10162, 10271, 10297, 10439, 10520, 10558, 10591, - 10651, 10807, 10810, 10864, 10906, 11293, 11499, 11511, 11572, 11574, - 11665, 11697, 11722, 11729, 11801, 11845, 11868, 12031, 12251, 12289, - 12323, 12337, 12576, 12804, 12938, 13349, 13459, 13509, 13558, 13938, - 13951, 13989, 14006, 14237, 14362, 14365, 14508, 14560, 14658, 14666, - 14954, 15155, 15216, 15314, 15430, 15532, 15567, 15689, 15848, 15978, - 15983, 15985, 16119, 16174, 16193, 16506, 16543, 17048, 17078, 17190, - 17351, 17412, 17444, 17475, 17761, 17950, 17996, 18195, 18275, 18405, - 18637, 18780, 19245, 19445, 19604, 19744, 19763, 20284, 20308, 20530, - 20762, 20782, 20792, 20818, 20867, 20959, 21104, 21207, 21255, 21280, - 21339, 21514, 21870, 21966, 22231, 22275, 22391, 22478, 22509, 22637, - 22942, 22984, 23121, 23269, 23362, 23572, 23589, 23832, 23919, 24043, - 24078, 24126, 24244, 24364, 24405, 24454, 24782, 24794, 24833, 24949, - 24980, 24989, 25034, 25166, 25358, 25443, 25553, 25600, 25634, 25900, - 26054, 26105, 26196, 26218, 26241, 26532, 26637, 26918, 27179, 27207, - 27258, 27463, 27604, 27614, 27624, 27669, 27837, 27841, 28025, 28172, - 28181, 28214, 28391, 28554, 28785, 28812, 28893, 29063, 29665, 29810, - 29900, 30236, 30256, 30313, 30357, 30447, 30945, 30965, 30997, 31012, - 31033, 31302, 31309, 31806, 31821, 31904, 32080, 32128, 32330, 32359, - 32426, 32430, 32507, 32580, 32588, 32711, 32767, 32835, 32841, 32903, - 33094, 33226, 33313, 33371, 33615, 33742, 33808, 34480, 34571, 34874, - 34989, 35189, 35234, 35241, 35258, 35742, 35793, 36207, 36208, 36214, - 36735, 36915, 37041, 37286, 37391, 37433, 37454, 37480, 37493, 37504, - 37695, 37761, 37769, 38027, 38038, 38113, 38285, 38343, 38596, 38625, - 38758, 38874, 38944, 39045, 39346, 39390, 39432, 39670, 40012, 40068, - 40342, 40826, 41087, 41206, 41502, 41700, 42215, 42251, 42373, 42413, - 42475, 42482, 42490, 42506, 42594, 42656, 42665, 43075, 43147, 43366, - 43488, 43499, 43609, 43889, 43925, 44040, 44180, 44568}; - test_read_index_file(meta_x86_new_v1, data_dir, "x86_new", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, - false, expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_new_v2 = - create_test_index_meta(1744025019611, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37170; - expected_gif_doc_ids = {0, 18, 110, 1000, 2581, - 7196, 9090, 16711, 10276, 44702}; - test_read_index_file(meta_x86_new_v2, data_dir, "x86_new_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 356; - expected_gif_doc_ids = { - 260, 329, 334, 347, 459, 471, 568, 676, 689, 718, - 760, 1267, 1421, 1477, 2363, 2523, 2571, 2725, 2941, 3125, - 3148, 3306, 3459, 3808, 3856, 3933, 4022, 4076, 4386, 4815, - 4818, 4898, 4938, 4970, 4975, 5192, 5302, 5320, 5417, 5470, - 5752, 5875, 6007, 6143, 6425, 6597, 6639, 6761, 6961, 6977, - 6983, 7045, 7179, 7214, 7350, 7393, 7436, 7485, 7518, 7592, - 7739, 7856, 7921, 7957, 8006, 8116, 8411, 8664, 8716, 8728, - 8747, 8809, 8883, 8907, 8931, 8995, 9089, 9393, 9611, 9746, - 9787, 9963, 10080, 10230, 10348, 10464, 10494, 10547, 10552, 10666, - 10813, 10847, 10989, 11134, 11298, 11531, 11605, 11654, 11720, 11791, - 11835, 11994, 12012, 12068, 12232, 12272, 12336, 12438, 12537, 12646, - 12738, 12768, 12923, 12925, 13173, 13186, 13187, 13251, 13503, 13830, - 13973, 14121, 14291, 14378, 14380, 14389, 14453, 14495, 14508, 14620, - 14686, 14872, 15241, 15275, 15491, 15564, 15652, 15951, 15966, 16287, - 16289, 16531, 16681, 16914, 16919, 17079, 17382, 17393, 17860, 17961, - 18158, 18191, 18578, 18692, 18741, 18987, 19038, 19117, 19271, 19641, - 19723, 20253, 20259, 20473, 20766, 20863, 21419, 21424, 21908, 22325, - 22327, 22449, 22701, 22852, 22867, 22906, 22912, 22958, 23175, 23203, - 23332, 23461, 23493, 23746, 23921, 24257, 24328, 24411, 24479, 24747, - 24816, 25462, 25492, 25528, 25872, 25944, 26164, 26414, 26463, 26688, - 26779, 27033, 27283, 27303, 27858, 27948, 28248, 28372, 28402, 28460, - 28478, 28897, 29019, 29053, 29140, 29216, 29299, 29393, 29414, 29575, - 29789, 29803, 29805, 29934, 30270, 30278, 30291, 30301, 30433, 30493, - 30698, 30723, 30737, 30751, 31015, 31167, 31447, 32136, 32138, 32296, - 32318, 32374, 32585, 32747, 32815, 32964, 33060, 33144, 33159, 33315, - 33342, 33543, 33753, 33767, 33990, 34176, 34375, 34422, 34455, 34538, - 34563, 34708, 34738, 35050, 35130, 35137, 35220, 35422, 35484, 35487, - 35603, 35697, 35717, 35986, 36114, 36116, 36230, 36288, 36332, 36469, - 36520, 36572, 36727, 36959, 37099, 37152, 37400, 37473, 37712, 37838, - 37920, 38264, 38354, 38431, 38646, 38692, 38757, 38888, 38909, 38945, - 39078, 39103, 39125, 39138, 39155, 39274, 39412, 39553, 39577, 39583, - 39653, 39706, 39895, 39934, 39978, 40023, 40154, 40250, 40259, 40310, - 40357, 40376, 40457, 40643, 40665, 40881, 40990, 41368, 41379, 41519, - 41578, 41641, 41680, 42260, 42357, 42391, 42461, 42561, 42575, 42781, - 42810, 42844, 43026, 43028, 43046, 43145, 43386, 43388, 43576, 43667, - 43798, 43983, 44280, 44453, 44591, 44634}; - test_read_index_file(meta_x86_new_v2, data_dir, "x86_new_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - } - } - } else { - // Test x86 architecture cases - std::cout << "Testing on x86 architecture" << std::endl; - - if (has_avx2_support()) { - std::cout << "Testing with AVX2 support" << std::endl; - { - TabletIndex meta_arm_old_v2 = - create_test_index_meta(1744016478578, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37284; - expected_gif_doc_ids = {0, 19, 110, 1000, 2581, - 7197, 9091, 16711, 29676, 44702}; - test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 359; - expected_gif_doc_ids = { - 25, 63, 66, 135, 214, 276, 287, 321, 653, 819, - 968, 1038, 1115, 1210, 1305, 1394, 1650, 1690, 1761, 1934, - 1935, 2101, 2114, 2544, 2815, 2912, 3028, 3104, 3475, 3953, - 3991, 4052, 4097, 4424, 4430, 4458, 4504, 4571, 4629, 4704, - 4711, 4838, 5021, 5322, 5362, 5414, 5461, 5524, 5681, 5828, - 5877, 6031, 6123, 6249, 6298, 6575, 6626, 6637, 6692, 6708, - 6765, 6926, 6953, 7061, 7089, 7144, 7147, 7184, 7342, 7461, - 7615, 7703, 7818, 8002, 8014, 8280, 8369, 8398, 8440, 8554, - 8675, 8682, 8780, 9064, 9379, 9448, 9455, 9639, 10036, 10124, - 10164, 10224, 10246, 10568, 10736, 10750, 10914, 10930, 10944, 10970, - 11149, 11434, 11435, 11534, 11862, 11961, 12187, 12247, 12344, 12479, - 12632, 12923, 13015, 13018, 13122, 13277, 13357, 13459, 13466, 13597, - 13792, 13857, 13952, 14096, 14127, 14211, 14221, 14344, 14563, 14567, - 14588, 14606, 14692, 14868, 14880, 14990, 15085, 15101, 15211, 15218, - 15439, 15530, 15564, 15676, 15695, 15727, 15754, 15846, 15895, 15904, - 15983, 16004, 16299, 16423, 16476, 16530, 16954, 17045, 17202, 17393, - 17592, 17693, 17829, 17852, 18018, 18224, 18335, 18881, 18942, 19162, - 19387, 19401, 19418, 19434, 19525, 19710, 19805, 20054, 20126, 20127, - 20407, 20572, 20742, 20929, 21023, 21024, 21248, 21267, 21354, 21452, - 21704, 21810, 21831, 21847, 21900, 22202, 22328, 22599, 22629, 22671, - 22761, 22762, 22824, 23139, 23478, 23784, 23797, 23884, 23886, 23983, - 24128, 24137, 24176, 24253, 24434, 24484, 24518, 24538, 24655, 24849, - 24853, 24865, 24888, 25163, 25256, 25274, 25307, 25613, 25816, 26225, - 26323, 26459, 26461, 26476, 26580, 26598, 26800, 26932, 26962, 27202, - 27499, 27506, 27768, 27923, 28049, 28133, 28305, 28468, 28535, 28670, - 28717, 28782, 29154, 29692, 29742, 30112, 30125, 30289, 30353, 30437, - 30734, 30741, 30848, 30933, 31332, 31399, 31581, 31841, 31867, 32025, - 32446, 32463, 32712, 32947, 33038, 33210, 33325, 33563, 33572, 33757, - 33947, 33975, 34016, 34041, 34210, 34627, 34684, 34732, 35064, 35684, - 35787, 35809, 35811, 35996, 36272, 36389, 36418, 36420, 36568, 36847, - 36956, 37022, 37189, 37200, 37401, 37484, 37581, 37852, 37939, 38156, - 38269, 38785, 38874, 39072, 39081, 39094, 39157, 39187, 39308, 39562, - 39676, 39690, 39814, 39848, 40134, 40350, 40352, 40684, 41143, 41249, - 41416, 41463, 41738, 41840, 41875, 42028, 42077, 42104, 42439, 42467, - 42528, 42784, 42793, 42970, 43020, 43418, 43430, 43571, 43809, 43811, - 44040, 44057, 44081, 44168, 44288, 44329, 44608, 44624, 44690}; - test_read_index_file(meta_arm_old_v2, data_dir, "arm_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_arm_old_v1 = - create_test_index_meta(1744016478651, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 40962; - expected_gif_doc_ids = {0, 21, 110, 1000, 2581, - 7196, 9091, 16712, 26132, 44702}; - test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, true, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 402; - expected_gif_doc_ids = { - 36, 41, 242, 628, 716, 741, 884, 902, 1025, 1129, - 1349, 1401, 1871, 1873, 2074, 2184, 2420, 2815, 3138, 3164, - 3189, 3302, 3308, 3347, 3430, 3475, 3645, 3772, 3803, 3921, - 4036, 4080, 4127, 4419, 4424, 4450, 4526, 4546, 4608, 4668, - 4701, 5223, 5274, 5366, 5438, 5670, 6109, 6176, 6386, 6412, - 6466, 6554, 6594, 6761, 6941, 6957, 7076, 7173, 7178, 7208, - 7263, 7370, 7489, 7726, 7800, 8293, 8309, 8469, 8588, 8759, - 8914, 9242, 9254, 9334, 9354, 9422, 9476, 9515, 9545, 9709, - 9714, 9741, 9982, 9995, 10145, 10284, 10384, 10464, 10508, 10641, - 10720, 10771, 10810, 10935, 11097, 11367, 11525, 11554, 11574, 11660, - 11857, 11930, 12025, 12078, 12203, 12237, 12245, 12297, 12432, 12466, - 12601, 12745, 12893, 12928, 13127, 13157, 13173, 13336, 13458, 13517, - 13553, 13681, 13747, 13893, 13935, 14108, 14191, 14265, 14408, 14439, - 14468, 14528, 14565, 14587, 14618, 14642, 14993, 15010, 15260, 15358, - 15453, 15539, 15557, 15586, 15594, 15728, 15893, 15904, 16156, 16304, - 16408, 16532, 16789, 16974, 17015, 17294, 17330, 17347, 17733, 17773, - 17981, 17992, 18015, 18209, 18211, 18278, 18566, 18603, 18643, 18912, - 19327, 19419, 19538, 19700, 19714, 19872, 19873, 19895, 19971, 20118, - 20379, 20515, 20526, 20781, 20967, 21108, 21163, 21179, 21431, 21474, - 21595, 21749, 21822, 21848, 21999, 22314, 22476, 22539, 22677, 23070, - 23071, 23491, 23841, 23986, 24017, 24109, 24139, 24196, 24301, 24355, - 24742, 24965, 24970, 24987, 25254, 25268, 25287, 25331, 26050, 26133, - 26238, 26364, 26388, 26435, 26804, 26844, 26849, 26934, 27190, 27294, - 27441, 27467, 27679, 27702, 27762, 27772, 27821, 27844, 27860, 27912, - 28068, 28115, 28301, 28304, 28379, 28440, 28816, 28885, 28948, 28966, - 29348, 29484, 29509, 29902, 29908, 29917, 29951, 30127, 30181, 30693, - 30779, 30861, 30903, 31061, 31358, 31646, 31658, 31713, 31782, 31815, - 31905, 31967, 32019, 32333, 32376, 32394, 32452, 32635, 32709, 32973, - 33505, 33506, 33602, 33693, 33751, 33793, 33942, 33993, 34106, 34413, - 34508, 34526, 34798, 34974, 34999, 35033, 35106, 35159, 35200, 35288, - 35305, 35355, 35373, 35522, 35583, 35602, 35716, 35956, 36022, 36035, - 36264, 36315, 36359, 36525, 36601, 36616, 36627, 36677, 36939, 36970, - 37050, 37139, 37218, 37287, 37445, 37467, 37502, 37521, 37552, 37635, - 37705, 37737, 37786, 37855, 38242, 38410, 38790, 38881, 39036, 39051, - 39103, 39123, 39165, 39195, 39373, 39425, 39464, 39476, 39499, 39627, - 39657, 39754, 39804, 40029, 40510, 40651, 40660, 40745, 40974, 41163, - 41275, 41515, 41847, 41931, 42030, 42174, 42385, 42448, 42462, 43183, - 43243, 43279, 43417, 43645, 43698, 44144, 44425, 44430, 44625, 44739, - 44849, 44993, 45335, 45343, 45561, 45594, 45734, 45978, 46070, 46162, - 46378, 46449, 46704, 46833, 47257, 47268, 47548, 47984, 47990, 48101, - 48545, 48661}; - test_read_index_file(meta_arm_old_v1, data_dir, "arm_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, true, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_arm_new_v2 = - create_test_index_meta(1744017919311, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37170; - expected_gif_doc_ids = {0, 18, 110, 1000, 2581, - 7196, 9090, 16711, 10276, 44702}; - test_read_index_file(meta_arm_new_v2, data_dir, "arm_new_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, - false, expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 356; - expected_gif_doc_ids = { - 260, 329, 334, 347, 459, 471, 568, 676, 689, 718, - 760, 1267, 1421, 1477, 2363, 2523, 2571, 2725, 2941, 3125, - 3148, 3306, 3459, 3808, 3856, 3933, 4022, 4076, 4386, 4815, - 4818, 4898, 4938, 4970, 4975, 5192, 5302, 5320, 5417, 5470, - 5752, 5875, 6007, 6143, 6425, 6597, 6639, 6761, 6961, 6977, - 6983, 7045, 7179, 7214, 7350, 7393, 7436, 7485, 7518, 7592, - 7739, 7856, 7921, 7957, 8006, 8116, 8411, 8664, 8716, 8728, - 8747, 8809, 8883, 8907, 8931, 8995, 9089, 9393, 9611, 9746, - 9787, 9963, 10080, 10230, 10348, 10464, 10494, 10547, 10552, 10666, - 10813, 10847, 10989, 11134, 11298, 11531, 11605, 11654, 11720, 11791, - 11835, 11994, 12012, 12068, 12232, 12272, 12336, 12438, 12537, 12646, - 12738, 12768, 12923, 12925, 13173, 13186, 13187, 13251, 13503, 13830, - 13973, 14121, 14291, 14378, 14380, 14389, 14453, 14495, 14508, 14620, - 14686, 14872, 15241, 15275, 15491, 15564, 15652, 15951, 15966, 16287, - 16289, 16531, 16681, 16914, 16919, 17079, 17382, 17393, 17860, 17961, - 18158, 18191, 18578, 18692, 18741, 18987, 19038, 19117, 19271, 19641, - 19723, 20253, 20259, 20473, 20766, 20863, 21419, 21424, 21908, 22325, - 22327, 22449, 22701, 22852, 22867, 22906, 22912, 22958, 23175, 23203, - 23332, 23461, 23493, 23746, 23921, 24257, 24328, 24411, 24479, 24747, - 24816, 25462, 25492, 25528, 25872, 25944, 26164, 26414, 26463, 26688, - 26779, 27033, 27283, 27303, 27858, 27948, 28248, 28372, 28402, 28460, - 28478, 28897, 29019, 29053, 29140, 29216, 29299, 29393, 29414, 29575, - 29789, 29803, 29805, 29934, 30270, 30278, 30291, 30301, 30433, 30493, - 30698, 30723, 30737, 30751, 31015, 31167, 31447, 32136, 32138, 32296, - 32318, 32374, 32585, 32747, 32815, 32964, 33060, 33144, 33159, 33315, - 33342, 33543, 33753, 33767, 33990, 34176, 34375, 34422, 34455, 34538, - 34563, 34708, 34738, 35050, 35130, 35137, 35220, 35422, 35484, 35487, - 35603, 35697, 35717, 35986, 36114, 36116, 36230, 36288, 36332, 36469, - 36520, 36572, 36727, 36959, 37099, 37152, 37400, 37473, 37712, 37838, - 37920, 38264, 38354, 38431, 38646, 38692, 38757, 38888, 38909, 38945, - 39078, 39103, 39125, 39138, 39155, 39274, 39412, 39553, 39577, 39583, - 39653, 39706, 39895, 39934, 39978, 40023, 40154, 40250, 40259, 40310, - 40357, 40376, 40457, 40643, 40665, 40881, 40990, 41368, 41379, 41519, - 41578, 41641, 41680, 42260, 42357, 42391, 42461, 42561, 42575, 42781, - 42810, 42844, 43026, 43028, 43046, 43145, 43386, 43388, 43576, 43667, - 43798, 43983, 44280, 44453, 44591, 44634}; - test_read_index_file(meta_arm_new_v2, data_dir, "arm_new_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, - false, expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_arm_new_v1 = - create_test_index_meta(1744017919441, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 37343; - expected_gif_doc_ids = {0, 21, 110, 1000, 2580, - 7195, 9091, 16711, 26131, 44702}; - test_read_index_file(meta_arm_new_v1, data_dir, "arm_new", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, - false, expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 346; - expected_gif_doc_ids = { - 3, 222, 502, 649, 671, 814, 1101, 1110, 1286, 1329, - 1350, 1409, 1478, 1598, 1621, 1627, 1686, 1895, 2218, 2304, - 2429, 2654, 2735, 2798, 2799, 2828, 2966, 3050, 3083, 3261, - 3296, 3574, 3625, 3653, 4053, 4128, 4192, 4200, 4594, 4623, - 4747, 5284, 5371, 5379, 5467, 5567, 5694, 5714, 5723, 5903, - 5954, 6120, 6187, 6226, 6451, 6664, 6723, 6748, 6958, 7319, - 7933, 7947, 8041, 8156, 8203, 8205, 8568, 8626, 8777, 8923, - 8999, 9088, 9193, 9239, 9282, 9358, 9386, 9531, 9589, 9599, - 9864, 10006, 10229, 10370, 10523, 10751, 10854, 10864, 10883, 11045, - 11077, 11134, 11149, 11252, 11258, 11260, 11432, 11488, 11578, 11599, - 11765, 11826, 11929, 12124, 12154, 12277, 12339, 12410, 12432, 12500, - 12612, 12618, 12654, 12872, 12929, 12987, 13173, 13293, 13306, 13397, - 13559, 13800, 14017, 14180, 14195, 14283, 14385, 14481, 14659, 14728, - 14738, 15150, 15574, 15586, 15774, 15914, 15968, 16093, 16131, 16155, - 16337, 16340, 16391, 16420, 16577, 16632, 16836, 16874, 16883, 16896, - 16954, 17060, 17241, 17302, 17359, 17601, 17985, 18017, 18043, 18084, - 18334, 18539, 18637, 18831, 18864, 19068, 19075, 19140, 19445, 19487, - 19495, 19559, 19648, 19656, 19770, 19880, 20284, 20311, 20358, 20439, - 21103, 21252, 21382, 21429, 21678, 21765, 21773, 21779, 21877, 22067, - 22318, 22607, 22713, 22719, 22929, 23074, 23148, 23209, 23500, 23611, - 23614, 23709, 23761, 23952, 23999, 24120, 24217, 24503, 24656, 24675, - 24842, 24924, 24970, 25144, 25582, 25767, 25923, 26184, 26206, 26344, - 26376, 26529, 26682, 26686, 26803, 26896, 26921, 26951, 26982, 27033, - 27075, 27163, 27166, 27299, 27567, 27682, 28010, 28173, 28368, 28423, - 28440, 28590, 28801, 28990, 28994, 29138, 29256, 29300, 29657, 29769, - 30018, 30086, 30154, 30189, 30382, 30385, 30445, 30456, 30489, 30545, - 30908, 30931, 31009, 31267, 31297, 31336, 31696, 31728, 31735, 31943, - 32155, 32244, 32342, 32431, 32569, 32733, 32799, 32817, 32903, 33078, - 33552, 34064, 34604, 34705, 35186, 35256, 35284, 35295, 35494, 35745, - 35943, 36051, 36343, 36430, 36452, 36666, 36697, 36763, 36822, 36890, - 37511, 37547, 37706, 38256, 38581, 38911, 38931, 38955, 38998, 39131, - 39135, 39255, 39312, 39394, 39459, 39635, 39707, 40190, 40215, 40708, - 41063, 41264, 41361, 41593, 41699, 41864, 42190, 42363, 42444, 42873, - 42983, 43314, 43587, 43693, 43880, 43908, 43909, 43925, 43978, 43986, - 44071, 44183, 44340, 44398, 44466, 44498}; - test_read_index_file(meta_arm_new_v1, data_dir, "arm_new", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, - false, expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_old_v2 = create_test_index_meta(10083, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37343; - expected_gif_doc_ids = {0, 19, 110, 1000, 2581, - 7196, 9090, 16711, 10278, 44702}; - test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, - false, expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 346; - expected_gif_doc_ids = { - 3, 222, 502, 649, 671, 814, 1101, 1110, 1286, 1329, - 1350, 1409, 1478, 1598, 1621, 1627, 1686, 1895, 2218, 2304, - 2429, 2654, 2735, 2798, 2799, 2828, 2966, 3050, 3083, 3261, - 3296, 3574, 3625, 3653, 4053, 4128, 4192, 4200, 4594, 4623, - 4747, 5284, 5371, 5379, 5467, 5567, 5694, 5714, 5723, 5903, - 5954, 6120, 6187, 6226, 6451, 6664, 6723, 6748, 6958, 7319, - 7933, 7947, 8041, 8156, 8203, 8205, 8568, 8626, 8777, 8923, - 8999, 9088, 9193, 9239, 9282, 9358, 9386, 9531, 9589, 9599, - 9864, 10006, 10229, 10370, 10523, 10751, 10854, 10864, 10883, 11045, - 11077, 11134, 11149, 11252, 11258, 11260, 11432, 11488, 11578, 11599, - 11765, 11826, 11929, 12124, 12154, 12277, 12339, 12410, 12432, 12500, - 12612, 12618, 12654, 12872, 12929, 12987, 13173, 13293, 13306, 13397, - 13559, 13800, 14017, 14180, 14195, 14283, 14385, 14481, 14659, 14728, - 14738, 15150, 15574, 15586, 15774, 15914, 15968, 16093, 16131, 16155, - 16337, 16340, 16391, 16420, 16577, 16632, 16836, 16874, 16883, 16896, - 16954, 17060, 17241, 17302, 17359, 17601, 17985, 18017, 18043, 18084, - 18334, 18539, 18637, 18831, 18864, 19068, 19075, 19140, 19445, 19487, - 19495, 19559, 19648, 19656, 19770, 19880, 20284, 20311, 20358, 20439, - 21103, 21252, 21382, 21429, 21678, 21765, 21773, 21779, 21877, 22067, - 22318, 22607, 22713, 22719, 22929, 23074, 23148, 23209, 23500, 23611, - 23614, 23709, 23761, 23952, 23999, 24120, 24217, 24503, 24656, 24675, - 24842, 24924, 24970, 25144, 25582, 25767, 25923, 26184, 26206, 26344, - 26376, 26529, 26682, 26686, 26803, 26896, 26921, 26951, 26982, 27033, - 27075, 27163, 27166, 27299, 27567, 27682, 28010, 28173, 28368, 28423, - 28440, 28590, 28801, 28990, 28994, 29138, 29256, 29300, 29657, 29769, - 30018, 30086, 30154, 30189, 30382, 30385, 30445, 30456, 30489, 30545, - 30908, 30931, 31009, 31267, 31297, 31336, 31696, 31728, 31735, 31943, - 32155, 32244, 32342, 32431, 32569, 32733, 32799, 32817, 32903, 33078, - 33552, 34064, 34604, 34705, 35186, 35256, 35284, 35295, 35494, 35745, - 35943, 36051, 36343, 36430, 36452, 36666, 36697, 36763, 36822, 36890, - 37511, 37547, 37706, 38256, 38581, 38911, 38931, 38955, 38998, 39131, - 39135, 39255, 39312, 39394, 39459, 39635, 39707, 40190, 40215, 40708, - 41063, 41264, 41361, 41593, 41699, 41864, 42190, 42363, 42444, 42873, - 42983, 43314, 43587, 43693, 43880, 43908, 43909, 43925, 43978, 43986, - 44071, 44183, 44340, 44398, 44466, 44498}; - test_read_index_file(meta_x86_old_v2, data_dir, "x86_old_v2", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V2, - false, expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_old_v1 = create_test_index_meta(10248, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 40893; - expected_gif_doc_ids = {0, 19, 110, 1001, 2581, - 7196, 9090, 16711, 10278, 44701}; - test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, - false, expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 356; - expected_gif_doc_ids = { - 622, 754, 1021, 1186, 1403, 1506, 1655, 1661, 1833, 2287, - 2356, 2425, 2849, 3198, 3350, 3365, 3416, 3423, 3499, 3541, - 3609, 3682, 3936, 4117, 4198, 4589, 4591, 4808, 4959, 5282, - 5332, 5495, 5560, 5624, 5773, 5831, 6138, 6180, 6361, 6372, - 6621, 6777, 6878, 6911, 6983, 7048, 7148, 7207, 7273, 7274, - 7385, 7545, 7735, 7904, 7912, 8150, 8215, 8238, 8363, 8598, - 8672, 8765, 8877, 9188, 9264, 9761, 9864, 9866, 9946, 10022, - 10139, 10143, 10146, 10184, 10291, 10304, 10308, 10332, 10371, 10695, - 10707, 11056, 11095, 11111, 11505, 11752, 11860, 11989, 12119, 12156, - 12655, 12764, 12792, 13055, 13636, 13824, 13902, 13912, 14061, 14152, - 14315, 14355, 14618, 14712, 14788, 15050, 15057, 15110, 15122, 15249, - 15267, 15281, 15735, 15848, 15939, 16117, 16327, 16331, 16597, 16739, - 16868, 17092, 17458, 17553, 17602, 17664, 17781, 18061, 18353, 18397, - 18468, 18717, 18726, 19131, 19209, 19402, 19551, 19812, 20128, 20146, - 20232, 20322, 20407, 20431, 20436, 20466, 20757, 20960, 20994, 21197, - 21254, 21487, 21561, 21602, 21662, 21710, 21754, 21826, 21965, 22091, - 22200, 22203, 22291, 22317, 22561, 22584, 22606, 22950, 23140, 23315, - 23442, 23858, 24026, 24322, 24581, 24617, 24655, 24756, 24974, 25191, - 25246, 25287, 25406, 25599, 25830, 26020, 26109, 26149, 26402, 26431, - 26451, 26458, 26495, 26766, 26777, 26848, 26966, 27053, 27089, 27177, - 27519, 27595, 27693, 28294, 28719, 28755, 29073, 29323, 29472, 29496, - 29604, 29761, 29772, 29953, 30030, 30083, 30139, 30210, 30719, 30774, - 30868, 30897, 31200, 31347, 31811, 31880, 31903, 32040, 32048, 32225, - 32335, 32357, 32517, 32579, 32679, 32821, 33294, 33393, 33509, 33675, - 33802, 34390, 34441, 34474, 34547, 34557, 35057, 35262, 35327, 35348, - 35455, 35482, 35668, 35811, 35845, 35953, 36098, 36151, 36602, 36711, - 36946, 37036, 37220, 37291, 37436, 37721, 37747, 37864, 37890, 37923, - 38045, 38588, 38654, 38730, 38930, 39169, 39814, 40401, 40689, 40762, - 40822, 41249, 41399, 41419, 41572, 41736, 41768, 41946, 41989, 42077, - 42079, 42225, 42360, 42524, 42576, 42595, 42691, 42784, 42892, 42930, - 43210, 43299, 43348, 43468, 43510, 43622, 43795, 43824, 43893, 43972, - 43975, 43998, 44008, 44023, 44031, 44049, 44139, 44518, 44555, 44597, - 44815, 44879, 45014, 45020, 45054, 45084, 45100, 45464, 45471, 45505, - 45580, 45593, 45686, 45991, 46019, 46021, 46107, 46138, 46197, 46209, - 46551, 46658, 46988, 47027, 47046, 47071, 47106, 47190, 47225, 47439, - 47465, 47531, 47602, 47660, 48453, 48575}; - test_read_index_file(meta_x86_old_v1, data_dir, "x86_old", field_name_avx2, - default_query_term, InvertedIndexStorageFormatPB::V1, - false, expected_gif_cardinality, expected_gif_doc_ids); - } - } else { - std::cout << "Testing with SSE support" << std::endl; - { - TabletIndex meta_x86_old_noavx2_v2 = - create_test_index_meta(1744076789957, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37203; - expected_gif_doc_ids = {0, 19, 110, 1000, 2582, - 7196, 9090, 16711, 10279, 44703}; - test_read_index_file(meta_x86_old_noavx2_v2, data_dir, "x86_noavx2_old_v2", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V2, false, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 395; - expected_gif_doc_ids = { - 267, 285, 462, 515, 578, 710, 778, 805, 807, 834, - 958, 1166, 1231, 1266, 1339, 1487, 1523, 1524, 1555, 1622, - 1632, 1676, 1742, 1762, 1798, 2068, 2074, 2220, 2559, 2594, - 2600, 2646, 3101, 3426, 3491, 3827, 4085, 4192, 4358, 4590, - 4776, 4789, 5191, 5236, 5339, 5378, 5578, 5630, 5711, 5742, - 5747, 5884, 5932, 6061, 6157, 6187, 6387, 6404, 6488, 6583, - 6808, 6905, 6969, 7033, 7059, 7582, 7630, 7651, 7820, 8045, - 8161, 8244, 8382, 8472, 8476, 8545, 8628, 8700, 9047, 9129, - 9191, 9197, 9265, 9660, 9808, 9998, 10185, 10324, 10431, 10441, - 10507, 10569, 10611, 10693, 10761, 10965, 10996, 11113, 11348, 11370, - 11578, 11592, 11694, 11969, 12104, 12521, 12718, 12871, 12907, 12911, - 13018, 13113, 13126, 13136, 13140, 13304, 13381, 13568, 13606, 13637, - 13720, 13727, 13871, 13883, 13931, 14075, 14179, 14210, 14367, 14464, - 14475, 14526, 14723, 14835, 14884, 15070, 15163, 15283, 15309, 15373, - 15420, 15495, 15531, 15635, 15704, 15752, 15760, 15768, 15777, 15827, - 15855, 15977, 16048, 16284, 16305, 16348, 16387, 16519, 16637, 16641, - 16954, 17080, 17318, 17409, 17435, 17491, 17550, 17587, 17872, 18021, - 18248, 18272, 18395, 18541, 18569, 19100, 19170, 19331, 19383, 19529, - 19571, 19581, 19594, 19630, 19635, 19714, 19970, 20272, 20317, 20432, - 20689, 20798, 20896, 20936, 21327, 21357, 22049, 22076, 22108, 22125, - 22181, 22185, 22262, 22327, 22411, 22514, 22531, 22553, 22774, 22824, - 22929, 22995, 23026, 23069, 23146, 23193, 23194, 23411, 23430, 23515, - 23561, 23616, 23680, 23898, 24104, 24200, 24235, 24287, 24358, 24417, - 24483, 24678, 24758, 24764, 24824, 24926, 25202, 25257, 25576, 25598, - 25816, 25910, 26015, 26277, 26479, 26787, 26857, 26941, 27140, 27216, - 27282, 27528, 27554, 27725, 27974, 28087, 28136, 28228, 28441, 28491, - 28618, 28628, 28733, 28758, 28793, 28896, 29143, 29150, 29279, 29617, - 29632, 29854, 30086, 30364, 30371, 30868, 31034, 31139, 31421, 31502, - 31538, 31968, 31989, 32220, 32264, 32363, 32393, 32490, 32576, 32671, - 32741, 32867, 32874, 33115, 33503, 33970, 34192, 34258, 34366, 34418, - 34550, 34648, 34667, 34738, 34829, 35184, 35279, 35314, 35510, 35645, - 35684, 35708, 35725, 35768, 35895, 36227, 36247, 36307, 36361, 36456, - 36586, 36638, 36656, 36716, 36856, 36907, 37088, 37217, 37321, 37374, - 37397, 37448, 37481, 37572, 37769, 37911, 37925, 37973, 37988, 38020, - 38108, 38134, 38248, 38429, 38615, 38814, 38827, 38877, 39080, 39167, - 39218, 39593, 39932, 39946, 40143, 40303, 40339, 40405, 40592, 40719, - 40791, 41101, 41194, 41206, 41358, 41455, 41470, 41560, 42374, 42597, - 42718, 42728, 42800, 42826, 42902, 43085, 43130, 43203, 43301, 43448, - 43556, 43604, 43606, 43656, 43781, 44029, 44043, 44129, 44203, 44273, - 44323, 44412, 44590, 44619, 44659}; - test_read_index_file(meta_x86_old_noavx2_v2, data_dir, "x86_noavx2_old_v2", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V2, false, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_old_noavx2_v1 = - create_test_index_meta(1744076790030, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 40657; - expected_gif_doc_ids = {0, 19, 110, 1001, 2581, - 7197, 9090, 16711, 10278, 44701}; - test_read_index_file(meta_x86_old_noavx2_v1, data_dir, "x86_noavx2_old", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V1, false, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 407; - expected_gif_doc_ids = { - 401, 452, 511, 584, 661, 916, 1019, 1149, 1212, 1285, - 1498, 1877, 1998, 2048, 2065, 2123, 2266, 2332, 2436, 2711, - 2743, 2851, 2927, 2959, 3129, 3330, 3433, 3536, 3745, 3808, - 3825, 4472, 4523, 4641, 4780, 4788, 4799, 5032, 5043, 5077, - 5368, 5532, 5638, 5794, 5837, 6179, 6744, 6756, 7057, 7093, - 7100, 7143, 7269, 7277, 7429, 7431, 7484, 7531, 8032, 8275, - 8303, 8327, 8423, 8944, 9043, 9075, 9170, 9317, 9636, 9683, - 9687, 9755, 10054, 10062, 10152, 10208, 10471, 10747, 10771, 10815, - 10861, 10976, 11012, 11014, 11099, 11110, 11251, 11261, 11266, 11293, - 11436, 11474, 11752, 11783, 11800, 11851, 11960, 12028, 12068, 12199, - 12404, 12422, 12605, 12814, 12889, 13104, 13414, 13505, 13572, 13839, - 14099, 14212, 14245, 14248, 14260, 14364, 14396, 14478, 14486, 14542, - 14627, 14674, 14797, 14853, 14875, 14945, 14984, 15254, 15273, 15591, - 15600, 15621, 15650, 15794, 15987, 16046, 16112, 16119, 16170, 16173, - 16325, 16461, 16474, 16525, 16656, 16758, 16963, 17068, 17262, 17329, - 17507, 17511, 17535, 17630, 17897, 17966, 18075, 18163, 18209, 18297, - 18378, 18380, 18419, 18533, 18587, 18681, 18927, 19108, 19283, 19350, - 19370, 19493, 19516, 19612, 19792, 20045, 20107, 20111, 20211, 20266, - 20322, 20325, 20384, 20986, 21035, 21193, 21201, 21578, 21589, 21604, - 21686, 21800, 21816, 21983, 22007, 22185, 22230, 22338, 22482, 22526, - 22540, 22563, 22575, 22726, 22855, 23032, 23087, 23149, 23182, 23890, - 24070, 24192, 24239, 24368, 24521, 24562, 24567, 24625, 24685, 24797, - 24898, 24971, 25006, 25007, 25229, 25425, 25753, 25777, 25877, 25921, - 26328, 26455, 26537, 26587, 26677, 26881, 27086, 27431, 27491, 27537, - 27640, 27748, 27829, 27919, 28104, 28170, 28235, 28449, 28468, 28574, - 28834, 28942, 29092, 29102, 29184, 29215, 29237, 29318, 29622, 29974, - 30071, 30192, 30218, 30302, 30353, 30711, 30869, 31070, 31133, 31193, - 31210, 31273, 31391, 31516, 31704, 31746, 31792, 31807, 32046, 32054, - 32297, 32484, 32513, 32676, 33028, 33173, 33463, 33554, 33620, 33652, - 33741, 33967, 34082, 34092, 34294, 34321, 34338, 34362, 34641, 35035, - 35039, 35149, 35270, 35322, 35349, 35586, 35627, 35820, 35832, 35920, - 36505, 36518, 36589, 36597, 36755, 36772, 36774, 36871, 37211, 37405, - 37564, 37843, 37927, 37935, 38171, 38416, 38520, 38586, 38685, 38821, - 38906, 38944, 39001, 39124, 39153, 39276, 39421, 39426, 39609, 39612, - 39734, 39836, 39999, 40108, 40136, 40226, 40307, 40349, 40403, 40491, - 40993, 41189, 41448, 41487, 41666, 41691, 41716, 41733, 41924, 42006, - 42070, 42317, 42451, 42588, 42800, 42903, 42934, 43217, 43221, 43544, - 43586, 43945, 44030, 44068, 44334, 44355, 44650, 44676, 44722, 44738, - 44915, 45060, 45493, 45650, 45708, 45740, 45800, 46172, 46485, 46674, - 46680, 46763, 46898, 47021, 47092, 47214, 47321, 47758, 47761, 47913, - 48121, 48167, 48184, 48271, 48383, 48431, 48560}; - test_read_index_file(meta_x86_old_noavx2_v1, data_dir, "x86_noavx2_old", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V1, false, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_new_noavx2_v2 = - create_test_index_meta(1744093412497, "request_idx", 2); - std::string field_name_avx2 = "2"; - default_query_term = "gif"; - expected_gif_cardinality = 37409; - expected_gif_doc_ids = {2, 19, 110, 1001, 2583, - 7196, 9090, 16710, 10278, 44702}; - test_read_index_file(meta_x86_new_noavx2_v2, data_dir, "x86_noavx2_new_v2", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V2, false, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 368; - expected_gif_doc_ids = { - 20, 206, 632, 742, 799, 1080, 1217, 1764, 1770, 2401, - 2415, 2425, 2560, 2587, 2852, 2876, 3235, 3336, 3763, 4051, - 4101, 4330, 4361, 4393, 4405, 4743, 4812, 4815, 4897, 4958, - 5088, 5180, 5250, 5326, 5379, 5428, 5497, 5514, 5626, 6041, - 6068, 6107, 6354, 6576, 6779, 6784, 6964, 6988, 7005, 7123, - 7172, 7459, 7575, 7863, 7920, 7923, 7939, 7957, 7977, 8550, - 8654, 8683, 8790, 8921, 8992, 9088, 9101, 9235, 9348, 9469, - 9486, 9670, 9759, 9823, 9833, 9857, 10187, 10477, 10760, 10955, - 11056, 11266, 11289, 11343, 11357, 11439, 11447, 11508, 11608, 11719, - 11797, 11843, 11937, 11939, 12126, 12173, 12228, 12321, 12364, 12504, - 12749, 12821, 12858, 13031, 13108, 13126, 13214, 13235, 13314, 13360, - 13374, 13385, 13455, 13596, 13707, 13771, 13810, 14305, 14444, 14617, - 14679, 14865, 15301, 15332, 15341, 15696, 15807, 15839, 15883, 15946, - 16015, 16156, 16304, 16412, 16607, 16709, 16797, 17290, 17563, 17570, - 18091, 18218, 18220, 18258, 18465, 18628, 18644, 18652, 18653, 18729, - 18737, 19053, 19138, 19155, 19208, 19209, 19245, 19384, 19587, 19947, - 20008, 20151, 20178, 20468, 20623, 20667, 20796, 20924, 21019, 21194, - 21471, 21493, 21540, 21622, 21675, 21746, 21991, 22184, 22490, 22627, - 23004, 23005, 23122, 23197, 23279, 23322, 23733, 23788, 23857, 23898, - 23924, 24359, 24574, 24635, 24759, 24804, 25009, 25083, 25181, 25349, - 25503, 25900, 26135, 26306, 26755, 26838, 26870, 26880, 26927, 27000, - 27063, 27226, 27391, 27418, 27458, 27536, 27544, 27595, 27660, 27854, - 27875, 27901, 27947, 28064, 28201, 28211, 28240, 28270, 28349, 28408, - 28456, 28696, 28829, 28886, 28944, 28967, 29107, 29215, 29782, 29907, - 30382, 30434, 30491, 30515, 30539, 30777, 30896, 30935, 31041, 31161, - 31244, 31521, 31625, 31669, 31800, 31819, 32308, 32327, 32483, 32690, - 32709, 33087, 33222, 33272, 33370, 33522, 33677, 33699, 34086, 34280, - 34303, 34372, 34492, 34564, 34602, 34668, 34738, 34854, 34871, 35154, - 35228, 35474, 35637, 35658, 35671, 35672, 35775, 35896, 35913, 36024, - 36220, 36259, 36394, 36437, 36671, 36833, 37023, 37073, 37095, 37136, - 37171, 37262, 37369, 37528, 37583, 37697, 37710, 37842, 37955, 38073, - 38080, 38091, 38100, 38187, 38214, 38283, 38430, 38485, 38578, 38592, - 38910, 39157, 39254, 39387, 39388, 39570, 39642, 39664, 39732, 39814, - 39817, 39865, 40071, 40096, 40113, 40495, 40529, 40596, 40676, 40711, - 40850, 41156, 41160, 41236, 41809, 41822, 41895, 41912, 41961, 41991, - 42037, 42271, 42333, 42556, 42614, 42682, 42897, 43041, 43429, 43530, - 43597, 43646, 43754, 44312, 44334, 44438, 44489, 44513}; - test_read_index_file(meta_x86_new_noavx2_v2, data_dir, "x86_noavx2_new_v2", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V2, true, - expected_gif_cardinality, expected_gif_doc_ids); - } - { - TabletIndex meta_x86_new_noavx2_v1 = - create_test_index_meta(1744093412581, "request_idx", 2); - std::string field_name_avx2 = "request"; - default_query_term = "gif"; - expected_gif_cardinality = 37272; - expected_gif_doc_ids = {0, 19, 110, 1001, 2581, - 7197, 9090, 16711, 10278, 44701}; - test_read_index_file(meta_x86_new_noavx2_v1, data_dir, "x86_noavx2_new", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V1, false, - expected_gif_cardinality, expected_gif_doc_ids); - default_query_term = "/english/index.html"; - expected_gif_cardinality = 326; - expected_gif_doc_ids = { - 50, 117, 237, 623, 1102, 1172, 1358, 1612, 1725, 1932, - 2074, 2233, 2395, 2618, 2871, 2977, 2985, 3305, 3375, 3385, - 3518, 3713, 3761, 3810, 3879, 3917, 4059, 4081, 4114, 4121, - 4292, 4306, 4509, 4565, 4566, 4700, 4711, 4831, 4832, 5024, - 5029, 5184, 5324, 5432, 5618, 5753, 5803, 5844, 6558, 6594, - 6876, 6901, 7273, 7429, 7498, 7504, 7624, 7681, 7842, 7883, - 7971, 7983, 8349, 8530, 8597, 8632, 8687, 8807, 8847, 8865, - 8886, 9303, 9315, 9319, 9428, 9509, 9601, 9799, 9909, 10101, - 10177, 10203, 10228, 10553, 10666, 10693, 10780, 10814, 10824, 11046, - 11118, 11265, 11409, 11463, 11611, 11730, 11767, 12041, 12096, 12119, - 12294, 12475, 12496, 12634, 12759, 12987, 13181, 13276, 13373, 13566, - 13830, 14001, 14383, 14425, 14613, 14846, 15002, 15039, 15072, 15817, - 15950, 16092, 16109, 16334, 16442, 16531, 16635, 17023, 17030, 17661, - 17726, 17856, 18208, 18210, 18261, 18414, 18420, 18582, 18645, 19045, - 19101, 19374, 19535, 19728, 19740, 19815, 19861, 19938, 19955, 19991, - 20512, 20908, 21066, 21097, 21403, 21524, 21789, 22177, 22298, 22402, - 22422, 22769, 22836, 22874, 22985, 23005, 23018, 23027, 23291, 23361, - 23413, 23500, 23513, 23588, 23609, 23851, 23959, 24228, 24383, 24445, - 24468, 24636, 24817, 24888, 25070, 25459, 25618, 25640, 26178, 26459, - 26583, 26970, 27070, 27131, 27147, 27479, 27606, 27616, 27696, 27780, - 27871, 27960, 28094, 28306, 28442, 28516, 28609, 28843, 29042, 29488, - 29512, 29686, 29891, 29932, 29956, 30094, 30319, 30357, 30478, 30527, - 30914, 31035, 31530, 31586, 31659, 31696, 32134, 32178, 32273, 32713, - 32932, 33273, 33334, 33338, 33461, 33481, 33552, 33727, 33852, 33982, - 34104, 34235, 34253, 34308, 34816, 35126, 35147, 35246, 35293, 35329, - 35402, 35482, 35535, 35940, 35986, 36034, 36075, 36125, 36170, 36313, - 36340, 36683, 36823, 37002, 37351, 37458, 37537, 37552, 37808, 37943, - 37952, 37954, 38166, 38461, 38624, 38756, 38807, 38847, 39096, 39147, - 39358, 39592, 40015, 40170, 40201, 40230, 40409, 40542, 40593, 40608, - 40687, 40825, 40894, 40903, 41234, 41278, 41380, 41488, 41522, 41555, - 41559, 41593, 41678, 41742, 41765, 41792, 42054, 42248, 42319, 42623, - 42660, 42886, 42925, 43338, 43552, 43593, 43594, 43766, 43782, 43881, - 44229, 44263, 44324, 44537, 44601, 44661}; - test_read_index_file(meta_x86_new_noavx2_v1, data_dir, "x86_noavx2_new", - field_name_avx2, default_query_term, - InvertedIndexStorageFormatPB::V1, false, - expected_gif_cardinality, expected_gif_doc_ids); - } - } - } - } - -private: - std::unique_ptr _inverted_index_searcher_cache; - std::unique_ptr _inverted_index_query_cache; -}; - -// String index reading test -TEST_F(InvertedIndexReaderTest, StringIndexRead) { - test_string_index_read(); -} - -// NULL value bitmap test -TEST_F(InvertedIndexReaderTest, NullBitmapRead) { - test_null_bitmap_read(); -} - -// BKD index reading test -TEST_F(InvertedIndexReaderTest, BkdIndexRead) { - test_bkd_index_read(); -} - -// Query cache test -TEST_F(InvertedIndexReaderTest, QueryCache) { - test_query_cache(); -} - -// Searcher cache test -TEST_F(InvertedIndexReaderTest, SearcherCache) { - test_searcher_cache(); -} - -// Test string index with large document set (>512 docs) -TEST_F(InvertedIndexReaderTest, StringIndexLargeDocset) { - test_string_index_large_docset(); -} - -// Test string index with large document set using V3 format -TEST_F(InvertedIndexReaderTest, StringIndexLargeDocsetV3) { - test_string_index_large_docset_v3(); -} - -// Test reading existing large document set index file -TEST_F(InvertedIndexReaderTest, CompatibleTest) { - test_compatible_read_cross_platform(); -} - -class MockInvertedIndexReader : public InvertedIndexReader { -public: - MockInvertedIndexReader(InvertedIndexReaderType type, const TabletIndex* tablet_index) - : InvertedIndexReader(tablet_index, nullptr), _type(type) {} - - MOCK_METHOD(Status, new_iterator, - (const io::IOContext& io_ctx, OlapReaderStatistics* stats, - RuntimeState* runtime_state, std::unique_ptr* iterator), - (override)); - - MOCK_METHOD(Status, query, - (const io::IOContext* io_ctx, OlapReaderStatistics* stats, - RuntimeState* runtime_state, const std::string& column_name, - const void* query_value, InvertedIndexQueryType query_type, - std::shared_ptr& bit_map), - (override)); - - MOCK_METHOD(Status, try_query, - (const io::IOContext* io_ctx, OlapReaderStatistics* stats, - RuntimeState* runtime_state, const std::string& column_name, - const void* query_value, InvertedIndexQueryType query_type, uint32_t* count), - (override)); - - InvertedIndexReaderType type() override { return _type; } - -private: - InvertedIndexReaderType _type; -}; - -TEST_F(InvertedIndexReaderTest, InvertedIndexIteratorTest) { - // Mock dependencies - io::IOContext io_ctx; - TabletIndex tablet_index; - - // Create iterator - InvertedIndexIterator iterator(io_ctx, nullptr, nullptr); - - // Create mock readers - auto string_reader = std::make_shared( - InvertedIndexReaderType::STRING_TYPE, &tablet_index); - auto fulltext_reader = std::make_shared( - InvertedIndexReaderType::FULLTEXT, &tablet_index); - auto bkd_reader = - std::make_shared(InvertedIndexReaderType::BKD, &tablet_index); - - // Test add_reader and get_reader - iterator.add_reader(InvertedIndexReaderType::STRING_TYPE, string_reader); - iterator.add_reader(InvertedIndexReaderType::FULLTEXT, fulltext_reader); - iterator.add_reader(InvertedIndexReaderType::BKD, bkd_reader); - - // Verify get_reader returns correct readers - ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::STRING_TYPE), string_reader); - ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::FULLTEXT), fulltext_reader); - ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::BKD), bkd_reader); - ASSERT_EQ(iterator.get_reader(InvertedIndexReaderType::UNKNOWN), nullptr); - - // Test _select_best_reader() - should return first reader when no criteria - auto best_reader = iterator._select_best_reader(); - ASSERT_TRUE(best_reader.has_value()); - ASSERT_TRUE(best_reader.value()); // First added - - // Test _select_best_reader with type and query criteria - // Create mock column types - auto string_type = std::make_shared(); - auto int_type = std::make_shared(); - - // String type with match query should prefer fulltext - auto result = - iterator._select_best_reader(string_type, InvertedIndexQueryType::MATCH_ANY_QUERY); - ASSERT_TRUE(result.has_value()); - ASSERT_EQ(result.value(), fulltext_reader); - - // String type with equal query should prefer string reader - result = iterator._select_best_reader(string_type, InvertedIndexQueryType::EQUAL_QUERY); - ASSERT_TRUE(result.has_value()); - ASSERT_EQ(result.value(), string_reader); - - // Numeric type should return error since we don't have logic for it in this implementation - result = iterator._select_best_reader(int_type, InvertedIndexQueryType::LESS_THAN_QUERY); - ASSERT_FALSE(result.has_value()); - - // Test empty readers case - InvertedIndexIterator empty_iterator(io_ctx, nullptr, nullptr); - auto empty_result = empty_iterator._select_best_reader(); - ASSERT_FALSE(empty_result.has_value()); - - empty_result = empty_iterator._select_best_reader(string_type, - InvertedIndexQueryType::MATCH_PHRASE_QUERY); - ASSERT_FALSE(empty_result.has_value()); -} - -} // namespace doris::segment_v2 \ No newline at end of file diff --git a/be/test/olap/tablet_index_test.cpp b/be/test/olap/tablet_index_test.cpp index 8850a12a8011b8..a46ee18d6ef82a 100644 --- a/be/test/olap/tablet_index_test.cpp +++ b/be/test/olap/tablet_index_test.cpp @@ -97,8 +97,8 @@ TEST_F(TabletIndexTest, test_schema_index_diff) { TabletSchemaSPtr old_tablet_schema = std::make_shared(); old_tablet_schema->init_from_pb(old_schema_pb); - EXPECT_FALSE(vectorized::schema_util::has_schema_index_diff(new_tablet_schema.get(), - old_tablet_schema.get(), 0, 0)); + EXPECT_TRUE(vectorized::schema_util::has_schema_index_diff(new_tablet_schema.get(), + old_tablet_schema.get(), 0, 0)); EXPECT_TRUE(vectorized::schema_util::has_schema_index_diff(new_tablet_schema.get(), old_tablet_schema.get(), 1, 1)); EXPECT_TRUE(vectorized::schema_util::has_schema_index_diff(new_tablet_schema.get(), diff --git a/be/test/vec/common/schema_util_test.cpp b/be/test/vec/common/schema_util_test.cpp index 3d58863d594c8e..48968efdecb71a 100644 --- a/be/test/vec/common/schema_util_test.cpp +++ b/be/test/vec/common/schema_util_test.cpp @@ -90,7 +90,7 @@ void construct_subcolumn(TabletSchemaSPtr schema, const FieldType& type, int32_t // subcolumns->emplace_back(std::move(subcol)); // } -TEST_F(SchemaUtilTest, inherit_column_attributes) { +TEST_F(SchemaUtilTest, test_inherit_column_attributes) { TabletSchemaPB schema_pb; schema_pb.set_keys_type(KeysType::DUP_KEYS); schema_pb.set_inverted_index_storage_format(InvertedIndexStorageFormatPB::V2); @@ -116,10 +116,10 @@ TEST_F(SchemaUtilTest, inherit_column_attributes) { for (const auto& col : subcolumns) { switch (col._parent_col_unique_id) { case 1: - EXPECT_TRUE(tablet_schema->inverted_index(col) != nullptr); + EXPECT_EQ(tablet_schema->inverted_indexs(col).size(), 1); break; case 3: - EXPECT_TRUE(tablet_schema->inverted_index(col) == nullptr); + EXPECT_EQ(tablet_schema->inverted_indexs(col).size(), 0); break; default: EXPECT_TRUE(false); @@ -458,15 +458,15 @@ TEST_F(SchemaUtilTest, generate_sub_column_info_advanced) { schema_util::generate_sub_column_info(schema, 10, "profile.id.name", &sub_column_info); EXPECT_TRUE(match); EXPECT_EQ(sub_column_info.column.parent_unique_id(), 10); - EXPECT_TRUE(sub_column_info.index); + EXPECT_FALSE(sub_column_info.indexes.empty()); match = schema_util::generate_sub_column_info(schema, 10, "profile.id2", &sub_column_info); EXPECT_TRUE(match); EXPECT_EQ(sub_column_info.column.parent_unique_id(), 10); - EXPECT_TRUE(sub_column_info.index); + EXPECT_FALSE(sub_column_info.indexes.empty()); match = schema_util::generate_sub_column_info(schema, 10, "profilexid", &sub_column_info); EXPECT_TRUE(match); EXPECT_EQ(sub_column_info.column.parent_unique_id(), 10); - EXPECT_FALSE(sub_column_info.index); + EXPECT_TRUE(sub_column_info.indexes.empty()); }