{
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Cypher(CypherParser.OC_CypherContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Statement(CypherParser.OC_StatementContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Query(CypherParser.OC_QueryContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RegularQuery(CypherParser.OC_RegularQueryContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Union(CypherParser.OC_UnionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_SingleQuery(CypherParser.OC_SingleQueryContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_SinglePartQuery(CypherParser.OC_SinglePartQueryContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_MultiPartQuery(CypherParser.OC_MultiPartQueryContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_UpdatingClause(CypherParser.OC_UpdatingClauseContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ReadingClause(CypherParser.OC_ReadingClauseContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Match(CypherParser.OC_MatchContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Unwind(CypherParser.OC_UnwindContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Merge(CypherParser.OC_MergeContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_MergeAction(CypherParser.OC_MergeActionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Create(CypherParser.OC_CreateContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Set(CypherParser.OC_SetContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_SetItem(CypherParser.OC_SetItemContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Delete(CypherParser.OC_DeleteContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Remove(CypherParser.OC_RemoveContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RemoveItem(CypherParser.OC_RemoveItemContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_InQueryCall(CypherParser.OC_InQueryCallContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_StandaloneCall(CypherParser.OC_StandaloneCallContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_YieldItems(CypherParser.OC_YieldItemsContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_YieldItem(CypherParser.OC_YieldItemContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_With(CypherParser.OC_WithContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Return(CypherParser.OC_ReturnContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ProjectionBody(CypherParser.OC_ProjectionBodyContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ProjectionItems(CypherParser.OC_ProjectionItemsContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ProjectionItem(CypherParser.OC_ProjectionItemContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Order(CypherParser.OC_OrderContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Skip(CypherParser.OC_SkipContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Limit(CypherParser.OC_LimitContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_SortItem(CypherParser.OC_SortItemContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Where(CypherParser.OC_WhereContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Pattern(CypherParser.OC_PatternContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PatternPart(CypherParser.OC_PatternPartContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_AnonymousPatternPart(CypherParser.OC_AnonymousPatternPartContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PatternElement(CypherParser.OC_PatternElementContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RelationshipsPattern(CypherParser.OC_RelationshipsPatternContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NodePattern(CypherParser.OC_NodePatternContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PatternElementChain(CypherParser.OC_PatternElementChainContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RelationshipPattern(CypherParser.OC_RelationshipPatternContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RelationshipDetail(CypherParser.OC_RelationshipDetailContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Properties(CypherParser.OC_PropertiesContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RelationshipTypes(CypherParser.OC_RelationshipTypesContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NodeLabels(CypherParser.OC_NodeLabelsContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NodeLabel(CypherParser.OC_NodeLabelContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RangeLiteral(CypherParser.OC_RangeLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_LabelName(CypherParser.OC_LabelNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RelTypeName(CypherParser.OC_RelTypeNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PropertyExpression(CypherParser.OC_PropertyExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Expression(CypherParser.OC_ExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_OrExpression(CypherParser.OC_OrExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_XorExpression(CypherParser.OC_XorExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_AndExpression(CypherParser.OC_AndExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NotExpression(CypherParser.OC_NotExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ComparisonExpression(CypherParser.OC_ComparisonExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PartialComparisonExpression(
+ CypherParser.OC_PartialComparisonExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_StringListNullPredicateExpression(
+ CypherParser.OC_StringListNullPredicateExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_StringPredicateExpression(
+ CypherParser.OC_StringPredicateExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ListPredicateExpression(CypherParser.OC_ListPredicateExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NullPredicateExpression(CypherParser.OC_NullPredicateExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_AddOrSubtractExpression(CypherParser.OC_AddOrSubtractExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_MultiplyDivideModuloExpression(
+ CypherParser.OC_MultiplyDivideModuloExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PowerOfExpression(CypherParser.OC_PowerOfExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_UnaryAddOrSubtractExpression(
+ CypherParser.OC_UnaryAddOrSubtractExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NonArithmeticOperatorExpression(
+ CypherParser.OC_NonArithmeticOperatorExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ListOperatorExpression(CypherParser.OC_ListOperatorExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PropertyLookup(CypherParser.OC_PropertyLookupContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Atom(CypherParser.OC_AtomContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_CaseExpression(CypherParser.OC_CaseExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_CaseAlternative(CypherParser.OC_CaseAlternativeContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ListComprehension(CypherParser.OC_ListComprehensionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PatternComprehension(CypherParser.OC_PatternComprehensionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Quantifier(CypherParser.OC_QuantifierContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_FilterExpression(CypherParser.OC_FilterExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PatternPredicate(CypherParser.OC_PatternPredicateContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ParenthesizedExpression(CypherParser.OC_ParenthesizedExpressionContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_IdInColl(CypherParser.OC_IdInCollContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_FunctionInvocation(CypherParser.OC_FunctionInvocationContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_FunctionName(CypherParser.OC_FunctionNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ExistentialSubquery(CypherParser.OC_ExistentialSubqueryContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ExplicitProcedureInvocation(
+ CypherParser.OC_ExplicitProcedureInvocationContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ImplicitProcedureInvocation(
+ CypherParser.OC_ImplicitProcedureInvocationContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ProcedureResultField(CypherParser.OC_ProcedureResultFieldContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ProcedureName(CypherParser.OC_ProcedureNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Namespace(CypherParser.OC_NamespaceContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Variable(CypherParser.OC_VariableContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Literal(CypherParser.OC_LiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_BooleanLiteral(CypherParser.OC_BooleanLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_NumberLiteral(CypherParser.OC_NumberLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_IntegerLiteral(CypherParser.OC_IntegerLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_DoubleLiteral(CypherParser.OC_DoubleLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ListLiteral(CypherParser.OC_ListLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_MapLiteral(CypherParser.OC_MapLiteralContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_PropertyKeyName(CypherParser.OC_PropertyKeyNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Parameter(CypherParser.OC_ParameterContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_SchemaName(CypherParser.OC_SchemaNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_ReservedWord(CypherParser.OC_ReservedWordContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_SymbolicName(CypherParser.OC_SymbolicNameContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_LeftArrowHead(CypherParser.OC_LeftArrowHeadContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_RightArrowHead(CypherParser.OC_RightArrowHeadContext ctx) {
+ return visitChildren(ctx);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation returns the result of calling {@link #visitChildren} on {@code
+ * ctx}.
+ */
+ @Override
+ public T visitOC_Dash(CypherParser.OC_DashContext ctx) {
+ return visitChildren(ctx);
+ }
+}
diff --git a/estore/src/main/java/org/estore/antlr4/CypherLexer.interp b/estore/src/main/java/org/estore/antlr4/CypherLexer.interp
new file mode 100644
index 0000000..930491d
--- /dev/null
+++ b/estore/src/main/java/org/estore/antlr4/CypherLexer.interp
@@ -0,0 +1,418 @@
+token literal names:
+null
+';'
+','
+'='
+'+='
+'*'
+'('
+')'
+'['
+']'
+':'
+'|'
+'..'
+'<>'
+'<'
+'>'
+'<='
+'>='
+'+'
+'-'
+'/'
+'%'
+'^'
+'.'
+'{'
+'}'
+'$'
+'\u27e8'
+'\u3008'
+'\ufe64'
+'\uff1c'
+'\u27e9'
+'\u3009'
+'\ufe65'
+'\uff1e'
+'\u00ad'
+'\u2010'
+'\u2011'
+'\u2012'
+'\u2013'
+'\u2014'
+'\u2015'
+'\u2212'
+'\ufe58'
+'\ufe63'
+'\uff0d'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+'0'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+UNION
+ALL
+OPTIONAL
+MATCH
+UNWIND
+AS
+MERGE
+ON
+CREATE
+SET
+DETACH
+DELETE
+REMOVE
+CALL
+YIELD
+WITH
+RETURN
+DISTINCT
+ORDER
+BY
+L_SKIP
+LIMIT
+ASCENDING
+ASC
+DESCENDING
+DESC
+WHERE
+OR
+XOR
+AND
+NOT
+STARTS
+ENDS
+CONTAINS
+IN
+IS
+NULL
+COUNT
+CASE
+ELSE
+END
+WHEN
+THEN
+ANY
+NONE
+SINGLE
+EXISTS
+TRUE
+FALSE
+HexInteger
+DecimalInteger
+OctalInteger
+HexLetter
+HexDigit
+Digit
+NonZeroDigit
+NonZeroOctDigit
+OctDigit
+ZeroDigit
+ExponentDecimalReal
+RegularDecimalReal
+StringLiteral
+EscapedChar
+CONSTRAINT
+DO
+FOR
+REQUIRE
+UNIQUE
+MANDATORY
+SCALAR
+OF
+ADD
+DROP
+FILTER
+EXTRACT
+UnescapedSymbolicName
+IdentifierStart
+IdentifierPart
+EscapedSymbolicName
+SP
+WHITESPACE
+Comment
+
+rule names:
+T__0
+T__1
+T__2
+T__3
+T__4
+T__5
+T__6
+T__7
+T__8
+T__9
+T__10
+T__11
+T__12
+T__13
+T__14
+T__15
+T__16
+T__17
+T__18
+T__19
+T__20
+T__21
+T__22
+T__23
+T__24
+T__25
+T__26
+T__27
+T__28
+T__29
+T__30
+T__31
+T__32
+T__33
+T__34
+T__35
+T__36
+T__37
+T__38
+T__39
+T__40
+T__41
+T__42
+T__43
+T__44
+UNION
+ALL
+OPTIONAL
+MATCH
+UNWIND
+AS
+MERGE
+ON
+CREATE
+SET
+DETACH
+DELETE
+REMOVE
+CALL
+YIELD
+WITH
+RETURN
+DISTINCT
+ORDER
+BY
+L_SKIP
+LIMIT
+ASCENDING
+ASC
+DESCENDING
+DESC
+WHERE
+OR
+XOR
+AND
+NOT
+STARTS
+ENDS
+CONTAINS
+IN
+IS
+NULL
+COUNT
+CASE
+ELSE
+END
+WHEN
+THEN
+ANY
+NONE
+SINGLE
+EXISTS
+TRUE
+FALSE
+HexInteger
+DecimalInteger
+OctalInteger
+HexLetter
+HexDigit
+Digit
+NonZeroDigit
+NonZeroOctDigit
+OctDigit
+ZeroDigit
+ExponentDecimalReal
+RegularDecimalReal
+StringLiteral
+EscapedChar
+CONSTRAINT
+DO
+FOR
+REQUIRE
+UNIQUE
+MANDATORY
+SCALAR
+OF
+ADD
+DROP
+FILTER
+EXTRACT
+UnescapedSymbolicName
+IdentifierStart
+IdentifierPart
+EscapedSymbolicName
+SP
+WHITESPACE
+Comment
+FF
+EscapedSymbolicName_0
+RS
+ID_Continue
+Comment_1
+StringLiteral_1
+Comment_3
+Comment_2
+GS
+FS
+CR
+Sc
+SPACE
+Pc
+TAB
+StringLiteral_0
+LF
+VT
+US
+ID_Start
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[4, 0, 127, 993, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 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, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 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, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 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, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 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, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 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, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 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, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 4, 94, 670, 8, 94, 11, 94, 12, 94, 671, 1, 95, 1, 95, 1, 95, 5, 95, 677, 8, 95, 10, 95, 12, 95, 680, 9, 95, 3, 95, 682, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 4, 96, 688, 8, 96, 11, 96, 12, 96, 689, 1, 97, 3, 97, 693, 8, 97, 1, 98, 1, 98, 3, 98, 697, 8, 98, 1, 99, 1, 99, 3, 99, 701, 8, 99, 1, 100, 1, 100, 3, 100, 705, 8, 100, 1, 101, 1, 101, 1, 102, 1, 102, 3, 102, 711, 8, 102, 1, 103, 1, 103, 1, 104, 4, 104, 716, 8, 104, 11, 104, 12, 104, 717, 1, 104, 4, 104, 721, 8, 104, 11, 104, 12, 104, 722, 1, 104, 1, 104, 4, 104, 727, 8, 104, 11, 104, 12, 104, 728, 1, 104, 1, 104, 4, 104, 733, 8, 104, 11, 104, 12, 104, 734, 3, 104, 737, 8, 104, 1, 104, 1, 104, 3, 104, 741, 8, 104, 1, 104, 4, 104, 744, 8, 104, 11, 104, 12, 104, 745, 1, 105, 5, 105, 749, 8, 105, 10, 105, 12, 105, 752, 9, 105, 1, 105, 1, 105, 4, 105, 756, 8, 105, 11, 105, 12, 105, 757, 1, 106, 1, 106, 1, 106, 5, 106, 763, 8, 106, 10, 106, 12, 106, 766, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 772, 8, 106, 10, 106, 12, 106, 775, 9, 106, 1, 106, 3, 106, 778, 8, 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, 3, 107, 798, 8, 107, 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, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 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, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 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, 5, 120, 879, 8, 120, 10, 120, 12, 120, 882, 9, 120, 1, 121, 1, 121, 3, 121, 886, 8, 121, 1, 122, 1, 122, 3, 122, 890, 8, 122, 1, 123, 1, 123, 5, 123, 894, 8, 123, 10, 123, 12, 123, 897, 9, 123, 1, 123, 4, 123, 900, 8, 123, 11, 123, 12, 123, 901, 1, 124, 4, 124, 905, 8, 124, 11, 124, 12, 124, 906, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 921, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 929, 8, 126, 10, 126, 12, 126, 932, 9, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 940, 8, 126, 10, 126, 12, 126, 943, 9, 126, 1, 126, 3, 126, 946, 8, 126, 1, 126, 1, 126, 3, 126, 950, 8, 126, 3, 126, 952, 8, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 0, 0, 147, 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, 0, 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, 0, 291, 0, 293, 0, 1, 0, 47, 2, 0, 85, 85, 117, 117, 2, 0, 78, 78, 110, 110, 2, 0, 73, 73, 105, 105, 2, 0, 79, 79, 111, 111, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 80, 80, 112, 112, 2, 0, 84, 84, 116, 116, 2, 0, 77, 77, 109, 109, 2, 0, 67, 67, 99, 99, 2, 0, 72, 72, 104, 104, 2, 0, 87, 87, 119, 119, 2, 0, 68, 68, 100, 100, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 86, 86, 118, 118, 2, 0, 89, 89, 121, 121, 2, 0, 66, 66, 98, 98, 2, 0, 75, 75, 107, 107, 2, 0, 88, 88, 120, 120, 2, 0, 70, 70, 102, 102, 2, 0, 65, 70, 97, 102, 13, 0, 34, 34, 39, 39, 66, 66, 70, 70, 78, 78, 82, 82, 84, 84, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 2, 0, 81, 81, 113, 113, 8, 0, 160, 160, 5760, 5760, 6158, 6158, 8192, 8202, 8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288, 1, 0, 12, 12, 1, 0, 96, 96, 1, 0, 30, 30, 768, 0, 48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999, 1, 0, 42, 42, 2, 0, 39, 39, 92, 92, 2, 0, 10, 10, 13, 13, 1, 0, 47, 47, 1, 0, 29, 29, 1, 0, 28, 28, 1, 0, 13, 13, 21, 0, 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, 2047, 2546, 2547, 2555, 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, 6107, 8352, 8384, 43064, 43064, 65020, 65020, 65129, 65129, 65284, 65284, 65504, 65505, 65509, 65510, 73693, 73696, 123647, 123647, 126128, 126128, 1, 0, 32, 32, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 1, 0, 9, 9, 2, 0, 34, 34, 92, 92, 1, 0, 10, 10, 1, 0, 11, 11, 1, 0, 31, 31, 659, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 1020, 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, 1, 295, 1, 0, 0, 0, 3, 297, 1, 0, 0, 0, 5, 299, 1, 0, 0, 0, 7, 301, 1, 0, 0, 0, 9, 304, 1, 0, 0, 0, 11, 306, 1, 0, 0, 0, 13, 308, 1, 0, 0, 0, 15, 310, 1, 0, 0, 0, 17, 312, 1, 0, 0, 0, 19, 314, 1, 0, 0, 0, 21, 316, 1, 0, 0, 0, 23, 318, 1, 0, 0, 0, 25, 321, 1, 0, 0, 0, 27, 324, 1, 0, 0, 0, 29, 326, 1, 0, 0, 0, 31, 328, 1, 0, 0, 0, 33, 331, 1, 0, 0, 0, 35, 334, 1, 0, 0, 0, 37, 336, 1, 0, 0, 0, 39, 338, 1, 0, 0, 0, 41, 340, 1, 0, 0, 0, 43, 342, 1, 0, 0, 0, 45, 344, 1, 0, 0, 0, 47, 346, 1, 0, 0, 0, 49, 348, 1, 0, 0, 0, 51, 350, 1, 0, 0, 0, 53, 352, 1, 0, 0, 0, 55, 354, 1, 0, 0, 0, 57, 356, 1, 0, 0, 0, 59, 358, 1, 0, 0, 0, 61, 360, 1, 0, 0, 0, 63, 362, 1, 0, 0, 0, 65, 364, 1, 0, 0, 0, 67, 366, 1, 0, 0, 0, 69, 368, 1, 0, 0, 0, 71, 370, 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 376, 1, 0, 0, 0, 79, 378, 1, 0, 0, 0, 81, 380, 1, 0, 0, 0, 83, 382, 1, 0, 0, 0, 85, 384, 1, 0, 0, 0, 87, 386, 1, 0, 0, 0, 89, 388, 1, 0, 0, 0, 91, 390, 1, 0, 0, 0, 93, 396, 1, 0, 0, 0, 95, 400, 1, 0, 0, 0, 97, 409, 1, 0, 0, 0, 99, 415, 1, 0, 0, 0, 101, 422, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 431, 1, 0, 0, 0, 107, 434, 1, 0, 0, 0, 109, 441, 1, 0, 0, 0, 111, 445, 1, 0, 0, 0, 113, 452, 1, 0, 0, 0, 115, 459, 1, 0, 0, 0, 117, 466, 1, 0, 0, 0, 119, 471, 1, 0, 0, 0, 121, 477, 1, 0, 0, 0, 123, 482, 1, 0, 0, 0, 125, 489, 1, 0, 0, 0, 127, 498, 1, 0, 0, 0, 129, 504, 1, 0, 0, 0, 131, 507, 1, 0, 0, 0, 133, 512, 1, 0, 0, 0, 135, 518, 1, 0, 0, 0, 137, 528, 1, 0, 0, 0, 139, 532, 1, 0, 0, 0, 141, 543, 1, 0, 0, 0, 143, 548, 1, 0, 0, 0, 145, 554, 1, 0, 0, 0, 147, 557, 1, 0, 0, 0, 149, 561, 1, 0, 0, 0, 151, 565, 1, 0, 0, 0, 153, 569, 1, 0, 0, 0, 155, 576, 1, 0, 0, 0, 157, 581, 1, 0, 0, 0, 159, 590, 1, 0, 0, 0, 161, 593, 1, 0, 0, 0, 163, 596, 1, 0, 0, 0, 165, 601, 1, 0, 0, 0, 167, 607, 1, 0, 0, 0, 169, 612, 1, 0, 0, 0, 171, 617, 1, 0, 0, 0, 173, 621, 1, 0, 0, 0, 175, 626, 1, 0, 0, 0, 177, 631, 1, 0, 0, 0, 179, 635, 1, 0, 0, 0, 181, 640, 1, 0, 0, 0, 183, 647, 1, 0, 0, 0, 185, 654, 1, 0, 0, 0, 187, 659, 1, 0, 0, 0, 189, 665, 1, 0, 0, 0, 191, 681, 1, 0, 0, 0, 193, 683, 1, 0, 0, 0, 195, 692, 1, 0, 0, 0, 197, 696, 1, 0, 0, 0, 199, 700, 1, 0, 0, 0, 201, 704, 1, 0, 0, 0, 203, 706, 1, 0, 0, 0, 205, 710, 1, 0, 0, 0, 207, 712, 1, 0, 0, 0, 209, 736, 1, 0, 0, 0, 211, 750, 1, 0, 0, 0, 213, 777, 1, 0, 0, 0, 215, 779, 1, 0, 0, 0, 217, 799, 1, 0, 0, 0, 219, 810, 1, 0, 0, 0, 221, 813, 1, 0, 0, 0, 223, 817, 1, 0, 0, 0, 225, 825, 1, 0, 0, 0, 227, 832, 1, 0, 0, 0, 229, 842, 1, 0, 0, 0, 231, 849, 1, 0, 0, 0, 233, 852, 1, 0, 0, 0, 235, 856, 1, 0, 0, 0, 237, 861, 1, 0, 0, 0, 239, 868, 1, 0, 0, 0, 241, 876, 1, 0, 0, 0, 243, 885, 1, 0, 0, 0, 245, 889, 1, 0, 0, 0, 247, 899, 1, 0, 0, 0, 249, 904, 1, 0, 0, 0, 251, 920, 1, 0, 0, 0, 253, 951, 1, 0, 0, 0, 255, 953, 1, 0, 0, 0, 257, 955, 1, 0, 0, 0, 259, 957, 1, 0, 0, 0, 261, 959, 1, 0, 0, 0, 263, 961, 1, 0, 0, 0, 265, 963, 1, 0, 0, 0, 267, 965, 1, 0, 0, 0, 269, 967, 1, 0, 0, 0, 271, 969, 1, 0, 0, 0, 273, 971, 1, 0, 0, 0, 275, 973, 1, 0, 0, 0, 277, 975, 1, 0, 0, 0, 279, 977, 1, 0, 0, 0, 281, 979, 1, 0, 0, 0, 283, 981, 1, 0, 0, 0, 285, 983, 1, 0, 0, 0, 287, 985, 1, 0, 0, 0, 289, 987, 1, 0, 0, 0, 291, 989, 1, 0, 0, 0, 293, 991, 1, 0, 0, 0, 295, 296, 5, 59, 0, 0, 296, 2, 1, 0, 0, 0, 297, 298, 5, 44, 0, 0, 298, 4, 1, 0, 0, 0, 299, 300, 5, 61, 0, 0, 300, 6, 1, 0, 0, 0, 301, 302, 5, 43, 0, 0, 302, 303, 5, 61, 0, 0, 303, 8, 1, 0, 0, 0, 304, 305, 5, 42, 0, 0, 305, 10, 1, 0, 0, 0, 306, 307, 5, 40, 0, 0, 307, 12, 1, 0, 0, 0, 308, 309, 5, 41, 0, 0, 309, 14, 1, 0, 0, 0, 310, 311, 5, 91, 0, 0, 311, 16, 1, 0, 0, 0, 312, 313, 5, 93, 0, 0, 313, 18, 1, 0, 0, 0, 314, 315, 5, 58, 0, 0, 315, 20, 1, 0, 0, 0, 316, 317, 5, 124, 0, 0, 317, 22, 1, 0, 0, 0, 318, 319, 5, 46, 0, 0, 319, 320, 5, 46, 0, 0, 320, 24, 1, 0, 0, 0, 321, 322, 5, 60, 0, 0, 322, 323, 5, 62, 0, 0, 323, 26, 1, 0, 0, 0, 324, 325, 5, 60, 0, 0, 325, 28, 1, 0, 0, 0, 326, 327, 5, 62, 0, 0, 327, 30, 1, 0, 0, 0, 328, 329, 5, 60, 0, 0, 329, 330, 5, 61, 0, 0, 330, 32, 1, 0, 0, 0, 331, 332, 5, 62, 0, 0, 332, 333, 5, 61, 0, 0, 333, 34, 1, 0, 0, 0, 334, 335, 5, 43, 0, 0, 335, 36, 1, 0, 0, 0, 336, 337, 5, 45, 0, 0, 337, 38, 1, 0, 0, 0, 338, 339, 5, 47, 0, 0, 339, 40, 1, 0, 0, 0, 340, 341, 5, 37, 0, 0, 341, 42, 1, 0, 0, 0, 342, 343, 5, 94, 0, 0, 343, 44, 1, 0, 0, 0, 344, 345, 5, 46, 0, 0, 345, 46, 1, 0, 0, 0, 346, 347, 5, 123, 0, 0, 347, 48, 1, 0, 0, 0, 348, 349, 5, 125, 0, 0, 349, 50, 1, 0, 0, 0, 350, 351, 5, 36, 0, 0, 351, 52, 1, 0, 0, 0, 352, 353, 5, 10216, 0, 0, 353, 54, 1, 0, 0, 0, 354, 355, 5, 12296, 0, 0, 355, 56, 1, 0, 0, 0, 356, 357, 5, 65124, 0, 0, 357, 58, 1, 0, 0, 0, 358, 359, 5, 65308, 0, 0, 359, 60, 1, 0, 0, 0, 360, 361, 5, 10217, 0, 0, 361, 62, 1, 0, 0, 0, 362, 363, 5, 12297, 0, 0, 363, 64, 1, 0, 0, 0, 364, 365, 5, 65125, 0, 0, 365, 66, 1, 0, 0, 0, 366, 367, 5, 65310, 0, 0, 367, 68, 1, 0, 0, 0, 368, 369, 5, 173, 0, 0, 369, 70, 1, 0, 0, 0, 370, 371, 5, 8208, 0, 0, 371, 72, 1, 0, 0, 0, 372, 373, 5, 8209, 0, 0, 373, 74, 1, 0, 0, 0, 374, 375, 5, 8210, 0, 0, 375, 76, 1, 0, 0, 0, 376, 377, 5, 8211, 0, 0, 377, 78, 1, 0, 0, 0, 378, 379, 5, 8212, 0, 0, 379, 80, 1, 0, 0, 0, 380, 381, 5, 8213, 0, 0, 381, 82, 1, 0, 0, 0, 382, 383, 5, 8722, 0, 0, 383, 84, 1, 0, 0, 0, 384, 385, 5, 65112, 0, 0, 385, 86, 1, 0, 0, 0, 386, 387, 5, 65123, 0, 0, 387, 88, 1, 0, 0, 0, 388, 389, 5, 65293, 0, 0, 389, 90, 1, 0, 0, 0, 390, 391, 7, 0, 0, 0, 391, 392, 7, 1, 0, 0, 392, 393, 7, 2, 0, 0, 393, 394, 7, 3, 0, 0, 394, 395, 7, 1, 0, 0, 395, 92, 1, 0, 0, 0, 396, 397, 7, 4, 0, 0, 397, 398, 7, 5, 0, 0, 398, 399, 7, 5, 0, 0, 399, 94, 1, 0, 0, 0, 400, 401, 7, 3, 0, 0, 401, 402, 7, 6, 0, 0, 402, 403, 7, 7, 0, 0, 403, 404, 7, 2, 0, 0, 404, 405, 7, 3, 0, 0, 405, 406, 7, 1, 0, 0, 406, 407, 7, 4, 0, 0, 407, 408, 7, 5, 0, 0, 408, 96, 1, 0, 0, 0, 409, 410, 7, 8, 0, 0, 410, 411, 7, 4, 0, 0, 411, 412, 7, 7, 0, 0, 412, 413, 7, 9, 0, 0, 413, 414, 7, 10, 0, 0, 414, 98, 1, 0, 0, 0, 415, 416, 7, 0, 0, 0, 416, 417, 7, 1, 0, 0, 417, 418, 7, 11, 0, 0, 418, 419, 7, 2, 0, 0, 419, 420, 7, 1, 0, 0, 420, 421, 7, 12, 0, 0, 421, 100, 1, 0, 0, 0, 422, 423, 7, 4, 0, 0, 423, 424, 7, 13, 0, 0, 424, 102, 1, 0, 0, 0, 425, 426, 7, 8, 0, 0, 426, 427, 7, 14, 0, 0, 427, 428, 7, 15, 0, 0, 428, 429, 7, 16, 0, 0, 429, 430, 7, 14, 0, 0, 430, 104, 1, 0, 0, 0, 431, 432, 7, 3, 0, 0, 432, 433, 7, 1, 0, 0, 433, 106, 1, 0, 0, 0, 434, 435, 7, 9, 0, 0, 435, 436, 7, 15, 0, 0, 436, 437, 7, 14, 0, 0, 437, 438, 7, 4, 0, 0, 438, 439, 7, 7, 0, 0, 439, 440, 7, 14, 0, 0, 440, 108, 1, 0, 0, 0, 441, 442, 7, 13, 0, 0, 442, 443, 7, 14, 0, 0, 443, 444, 7, 7, 0, 0, 444, 110, 1, 0, 0, 0, 445, 446, 7, 12, 0, 0, 446, 447, 7, 14, 0, 0, 447, 448, 7, 7, 0, 0, 448, 449, 7, 4, 0, 0, 449, 450, 7, 9, 0, 0, 450, 451, 7, 10, 0, 0, 451, 112, 1, 0, 0, 0, 452, 453, 7, 12, 0, 0, 453, 454, 7, 14, 0, 0, 454, 455, 7, 5, 0, 0, 455, 456, 7, 14, 0, 0, 456, 457, 7, 7, 0, 0, 457, 458, 7, 14, 0, 0, 458, 114, 1, 0, 0, 0, 459, 460, 7, 15, 0, 0, 460, 461, 7, 14, 0, 0, 461, 462, 7, 8, 0, 0, 462, 463, 7, 3, 0, 0, 463, 464, 7, 17, 0, 0, 464, 465, 7, 14, 0, 0, 465, 116, 1, 0, 0, 0, 466, 467, 7, 9, 0, 0, 467, 468, 7, 4, 0, 0, 468, 469, 7, 5, 0, 0, 469, 470, 7, 5, 0, 0, 470, 118, 1, 0, 0, 0, 471, 472, 7, 18, 0, 0, 472, 473, 7, 2, 0, 0, 473, 474, 7, 14, 0, 0, 474, 475, 7, 5, 0, 0, 475, 476, 7, 12, 0, 0, 476, 120, 1, 0, 0, 0, 477, 478, 7, 11, 0, 0, 478, 479, 7, 2, 0, 0, 479, 480, 7, 7, 0, 0, 480, 481, 7, 10, 0, 0, 481, 122, 1, 0, 0, 0, 482, 483, 7, 15, 0, 0, 483, 484, 7, 14, 0, 0, 484, 485, 7, 7, 0, 0, 485, 486, 7, 0, 0, 0, 486, 487, 7, 15, 0, 0, 487, 488, 7, 1, 0, 0, 488, 124, 1, 0, 0, 0, 489, 490, 7, 12, 0, 0, 490, 491, 7, 2, 0, 0, 491, 492, 7, 13, 0, 0, 492, 493, 7, 7, 0, 0, 493, 494, 7, 2, 0, 0, 494, 495, 7, 1, 0, 0, 495, 496, 7, 9, 0, 0, 496, 497, 7, 7, 0, 0, 497, 126, 1, 0, 0, 0, 498, 499, 7, 3, 0, 0, 499, 500, 7, 15, 0, 0, 500, 501, 7, 12, 0, 0, 501, 502, 7, 14, 0, 0, 502, 503, 7, 15, 0, 0, 503, 128, 1, 0, 0, 0, 504, 505, 7, 19, 0, 0, 505, 506, 7, 18, 0, 0, 506, 130, 1, 0, 0, 0, 507, 508, 7, 13, 0, 0, 508, 509, 7, 20, 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 6, 0, 0, 511, 132, 1, 0, 0, 0, 512, 513, 7, 5, 0, 0, 513, 514, 7, 2, 0, 0, 514, 515, 7, 8, 0, 0, 515, 516, 7, 2, 0, 0, 516, 517, 7, 7, 0, 0, 517, 134, 1, 0, 0, 0, 518, 519, 7, 4, 0, 0, 519, 520, 7, 13, 0, 0, 520, 521, 7, 9, 0, 0, 521, 522, 7, 14, 0, 0, 522, 523, 7, 1, 0, 0, 523, 524, 7, 12, 0, 0, 524, 525, 7, 2, 0, 0, 525, 526, 7, 1, 0, 0, 526, 527, 7, 16, 0, 0, 527, 136, 1, 0, 0, 0, 528, 529, 7, 4, 0, 0, 529, 530, 7, 13, 0, 0, 530, 531, 7, 9, 0, 0, 531, 138, 1, 0, 0, 0, 532, 533, 7, 12, 0, 0, 533, 534, 7, 14, 0, 0, 534, 535, 7, 13, 0, 0, 535, 536, 7, 9, 0, 0, 536, 537, 7, 14, 0, 0, 537, 538, 7, 1, 0, 0, 538, 539, 7, 12, 0, 0, 539, 540, 7, 2, 0, 0, 540, 541, 7, 1, 0, 0, 541, 542, 7, 16, 0, 0, 542, 140, 1, 0, 0, 0, 543, 544, 7, 12, 0, 0, 544, 545, 7, 14, 0, 0, 545, 546, 7, 13, 0, 0, 546, 547, 7, 9, 0, 0, 547, 142, 1, 0, 0, 0, 548, 549, 7, 11, 0, 0, 549, 550, 7, 10, 0, 0, 550, 551, 7, 14, 0, 0, 551, 552, 7, 15, 0, 0, 552, 553, 7, 14, 0, 0, 553, 144, 1, 0, 0, 0, 554, 555, 7, 3, 0, 0, 555, 556, 7, 15, 0, 0, 556, 146, 1, 0, 0, 0, 557, 558, 7, 21, 0, 0, 558, 559, 7, 3, 0, 0, 559, 560, 7, 15, 0, 0, 560, 148, 1, 0, 0, 0, 561, 562, 7, 4, 0, 0, 562, 563, 7, 1, 0, 0, 563, 564, 7, 12, 0, 0, 564, 150, 1, 0, 0, 0, 565, 566, 7, 1, 0, 0, 566, 567, 7, 3, 0, 0, 567, 568, 7, 7, 0, 0, 568, 152, 1, 0, 0, 0, 569, 570, 7, 13, 0, 0, 570, 571, 7, 7, 0, 0, 571, 572, 7, 4, 0, 0, 572, 573, 7, 15, 0, 0, 573, 574, 7, 7, 0, 0, 574, 575, 7, 13, 0, 0, 575, 154, 1, 0, 0, 0, 576, 577, 7, 14, 0, 0, 577, 578, 7, 1, 0, 0, 578, 579, 7, 12, 0, 0, 579, 580, 7, 13, 0, 0, 580, 156, 1, 0, 0, 0, 581, 582, 7, 9, 0, 0, 582, 583, 7, 3, 0, 0, 583, 584, 7, 1, 0, 0, 584, 585, 7, 7, 0, 0, 585, 586, 7, 4, 0, 0, 586, 587, 7, 2, 0, 0, 587, 588, 7, 1, 0, 0, 588, 589, 7, 13, 0, 0, 589, 158, 1, 0, 0, 0, 590, 591, 7, 2, 0, 0, 591, 592, 7, 1, 0, 0, 592, 160, 1, 0, 0, 0, 593, 594, 7, 2, 0, 0, 594, 595, 7, 13, 0, 0, 595, 162, 1, 0, 0, 0, 596, 597, 7, 1, 0, 0, 597, 598, 7, 0, 0, 0, 598, 599, 7, 5, 0, 0, 599, 600, 7, 5, 0, 0, 600, 164, 1, 0, 0, 0, 601, 602, 7, 9, 0, 0, 602, 603, 7, 3, 0, 0, 603, 604, 7, 0, 0, 0, 604, 605, 7, 1, 0, 0, 605, 606, 7, 7, 0, 0, 606, 166, 1, 0, 0, 0, 607, 608, 7, 9, 0, 0, 608, 609, 7, 4, 0, 0, 609, 610, 7, 13, 0, 0, 610, 611, 7, 14, 0, 0, 611, 168, 1, 0, 0, 0, 612, 613, 7, 14, 0, 0, 613, 614, 7, 5, 0, 0, 614, 615, 7, 13, 0, 0, 615, 616, 7, 14, 0, 0, 616, 170, 1, 0, 0, 0, 617, 618, 7, 14, 0, 0, 618, 619, 7, 1, 0, 0, 619, 620, 7, 12, 0, 0, 620, 172, 1, 0, 0, 0, 621, 622, 7, 11, 0, 0, 622, 623, 7, 10, 0, 0, 623, 624, 7, 14, 0, 0, 624, 625, 7, 1, 0, 0, 625, 174, 1, 0, 0, 0, 626, 627, 7, 7, 0, 0, 627, 628, 7, 10, 0, 0, 628, 629, 7, 14, 0, 0, 629, 630, 7, 1, 0, 0, 630, 176, 1, 0, 0, 0, 631, 632, 7, 4, 0, 0, 632, 633, 7, 1, 0, 0, 633, 634, 7, 18, 0, 0, 634, 178, 1, 0, 0, 0, 635, 636, 7, 1, 0, 0, 636, 637, 7, 3, 0, 0, 637, 638, 7, 1, 0, 0, 638, 639, 7, 14, 0, 0, 639, 180, 1, 0, 0, 0, 640, 641, 7, 13, 0, 0, 641, 642, 7, 2, 0, 0, 642, 643, 7, 1, 0, 0, 643, 644, 7, 16, 0, 0, 644, 645, 7, 5, 0, 0, 645, 646, 7, 14, 0, 0, 646, 182, 1, 0, 0, 0, 647, 648, 7, 14, 0, 0, 648, 649, 7, 21, 0, 0, 649, 650, 7, 2, 0, 0, 650, 651, 7, 13, 0, 0, 651, 652, 7, 7, 0, 0, 652, 653, 7, 13, 0, 0, 653, 184, 1, 0, 0, 0, 654, 655, 7, 7, 0, 0, 655, 656, 7, 15, 0, 0, 656, 657, 7, 0, 0, 0, 657, 658, 7, 14, 0, 0, 658, 186, 1, 0, 0, 0, 659, 660, 7, 22, 0, 0, 660, 661, 7, 4, 0, 0, 661, 662, 7, 5, 0, 0, 662, 663, 7, 13, 0, 0, 663, 664, 7, 14, 0, 0, 664, 188, 1, 0, 0, 0, 665, 666, 5, 48, 0, 0, 666, 667, 5, 120, 0, 0, 667, 669, 1, 0, 0, 0, 668, 670, 3, 197, 98, 0, 669, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 669, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 190, 1, 0, 0, 0, 673, 682, 3, 207, 103, 0, 674, 678, 3, 201, 100, 0, 675, 677, 3, 199, 99, 0, 676, 675, 1, 0, 0, 0, 677, 680, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 681, 673, 1, 0, 0, 0, 681, 674, 1, 0, 0, 0, 682, 192, 1, 0, 0, 0, 683, 684, 5, 48, 0, 0, 684, 685, 5, 111, 0, 0, 685, 687, 1, 0, 0, 0, 686, 688, 3, 205, 102, 0, 687, 686, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 687, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 194, 1, 0, 0, 0, 691, 693, 7, 23, 0, 0, 692, 691, 1, 0, 0, 0, 693, 196, 1, 0, 0, 0, 694, 697, 3, 199, 99, 0, 695, 697, 3, 195, 97, 0, 696, 694, 1, 0, 0, 0, 696, 695, 1, 0, 0, 0, 697, 198, 1, 0, 0, 0, 698, 701, 3, 207, 103, 0, 699, 701, 3, 201, 100, 0, 700, 698, 1, 0, 0, 0, 700, 699, 1, 0, 0, 0, 701, 200, 1, 0, 0, 0, 702, 705, 3, 203, 101, 0, 703, 705, 2, 56, 57, 0, 704, 702, 1, 0, 0, 0, 704, 703, 1, 0, 0, 0, 705, 202, 1, 0, 0, 0, 706, 707, 2, 49, 55, 0, 707, 204, 1, 0, 0, 0, 708, 711, 3, 207, 103, 0, 709, 711, 3, 203, 101, 0, 710, 708, 1, 0, 0, 0, 710, 709, 1, 0, 0, 0, 711, 206, 1, 0, 0, 0, 712, 713, 5, 48, 0, 0, 713, 208, 1, 0, 0, 0, 714, 716, 3, 199, 99, 0, 715, 714, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 715, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 737, 1, 0, 0, 0, 719, 721, 3, 199, 99, 0, 720, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 726, 5, 46, 0, 0, 725, 727, 3, 199, 99, 0, 726, 725, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 726, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 737, 1, 0, 0, 0, 730, 732, 5, 46, 0, 0, 731, 733, 3, 199, 99, 0, 732, 731, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 715, 1, 0, 0, 0, 736, 720, 1, 0, 0, 0, 736, 730, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 740, 7, 14, 0, 0, 739, 741, 5, 45, 0, 0, 740, 739, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 1, 0, 0, 0, 742, 744, 3, 199, 99, 0, 743, 742, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 743, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 210, 1, 0, 0, 0, 747, 749, 3, 199, 99, 0, 748, 747, 1, 0, 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 753, 1, 0, 0, 0, 752, 750, 1, 0, 0, 0, 753, 755, 5, 46, 0, 0, 754, 756, 3, 199, 99, 0, 755, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 212, 1, 0, 0, 0, 759, 764, 5, 34, 0, 0, 760, 763, 3, 285, 142, 0, 761, 763, 3, 215, 107, 0, 762, 760, 1, 0, 0, 0, 762, 761, 1, 0, 0, 0, 763, 766, 1, 0, 0, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 767, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 767, 778, 5, 34, 0, 0, 768, 773, 5, 39, 0, 0, 769, 772, 3, 265, 132, 0, 770, 772, 3, 215, 107, 0, 771, 769, 1, 0, 0, 0, 771, 770, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 778, 5, 39, 0, 0, 777, 759, 1, 0, 0, 0, 777, 768, 1, 0, 0, 0, 778, 214, 1, 0, 0, 0, 779, 797, 5, 92, 0, 0, 780, 798, 7, 24, 0, 0, 781, 782, 7, 0, 0, 0, 782, 783, 3, 197, 98, 0, 783, 784, 3, 197, 98, 0, 784, 785, 3, 197, 98, 0, 785, 786, 3, 197, 98, 0, 786, 798, 1, 0, 0, 0, 787, 788, 7, 0, 0, 0, 788, 789, 3, 197, 98, 0, 789, 790, 3, 197, 98, 0, 790, 791, 3, 197, 98, 0, 791, 792, 3, 197, 98, 0, 792, 793, 3, 197, 98, 0, 793, 794, 3, 197, 98, 0, 794, 795, 3, 197, 98, 0, 795, 796, 3, 197, 98, 0, 796, 798, 1, 0, 0, 0, 797, 780, 1, 0, 0, 0, 797, 781, 1, 0, 0, 0, 797, 787, 1, 0, 0, 0, 798, 216, 1, 0, 0, 0, 799, 800, 7, 9, 0, 0, 800, 801, 7, 3, 0, 0, 801, 802, 7, 1, 0, 0, 802, 803, 7, 13, 0, 0, 803, 804, 7, 7, 0, 0, 804, 805, 7, 15, 0, 0, 805, 806, 7, 4, 0, 0, 806, 807, 7, 2, 0, 0, 807, 808, 7, 1, 0, 0, 808, 809, 7, 7, 0, 0, 809, 218, 1, 0, 0, 0, 810, 811, 7, 12, 0, 0, 811, 812, 7, 3, 0, 0, 812, 220, 1, 0, 0, 0, 813, 814, 7, 22, 0, 0, 814, 815, 7, 3, 0, 0, 815, 816, 7, 15, 0, 0, 816, 222, 1, 0, 0, 0, 817, 818, 7, 15, 0, 0, 818, 819, 7, 14, 0, 0, 819, 820, 7, 25, 0, 0, 820, 821, 7, 0, 0, 0, 821, 822, 7, 2, 0, 0, 822, 823, 7, 15, 0, 0, 823, 824, 7, 14, 0, 0, 824, 224, 1, 0, 0, 0, 825, 826, 7, 0, 0, 0, 826, 827, 7, 1, 0, 0, 827, 828, 7, 2, 0, 0, 828, 829, 7, 25, 0, 0, 829, 830, 7, 0, 0, 0, 830, 831, 7, 14, 0, 0, 831, 226, 1, 0, 0, 0, 832, 833, 7, 8, 0, 0, 833, 834, 7, 4, 0, 0, 834, 835, 7, 1, 0, 0, 835, 836, 7, 12, 0, 0, 836, 837, 7, 4, 0, 0, 837, 838, 7, 7, 0, 0, 838, 839, 7, 3, 0, 0, 839, 840, 7, 15, 0, 0, 840, 841, 7, 18, 0, 0, 841, 228, 1, 0, 0, 0, 842, 843, 7, 13, 0, 0, 843, 844, 7, 9, 0, 0, 844, 845, 7, 4, 0, 0, 845, 846, 7, 5, 0, 0, 846, 847, 7, 4, 0, 0, 847, 848, 7, 15, 0, 0, 848, 230, 1, 0, 0, 0, 849, 850, 7, 3, 0, 0, 850, 851, 7, 22, 0, 0, 851, 232, 1, 0, 0, 0, 852, 853, 7, 4, 0, 0, 853, 854, 7, 12, 0, 0, 854, 855, 7, 12, 0, 0, 855, 234, 1, 0, 0, 0, 856, 857, 7, 12, 0, 0, 857, 858, 7, 15, 0, 0, 858, 859, 7, 3, 0, 0, 859, 860, 7, 6, 0, 0, 860, 236, 1, 0, 0, 0, 861, 862, 7, 22, 0, 0, 862, 863, 7, 2, 0, 0, 863, 864, 7, 5, 0, 0, 864, 865, 7, 7, 0, 0, 865, 866, 7, 14, 0, 0, 866, 867, 7, 15, 0, 0, 867, 238, 1, 0, 0, 0, 868, 869, 7, 14, 0, 0, 869, 870, 7, 21, 0, 0, 870, 871, 7, 7, 0, 0, 871, 872, 7, 15, 0, 0, 872, 873, 7, 4, 0, 0, 873, 874, 7, 9, 0, 0, 874, 875, 7, 7, 0, 0, 875, 240, 1, 0, 0, 0, 876, 880, 3, 243, 121, 0, 877, 879, 3, 245, 122, 0, 878, 877, 1, 0, 0, 0, 879, 882, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 880, 881, 1, 0, 0, 0, 881, 242, 1, 0, 0, 0, 882, 880, 1, 0, 0, 0, 883, 886, 3, 293, 146, 0, 884, 886, 3, 281, 140, 0, 885, 883, 1, 0, 0, 0, 885, 884, 1, 0, 0, 0, 886, 244, 1, 0, 0, 0, 887, 890, 3, 261, 130, 0, 888, 890, 3, 277, 138, 0, 889, 887, 1, 0, 0, 0, 889, 888, 1, 0, 0, 0, 890, 246, 1, 0, 0, 0, 891, 895, 5, 96, 0, 0, 892, 894, 3, 257, 128, 0, 893, 892, 1, 0, 0, 0, 894, 897, 1, 0, 0, 0, 895, 893, 1, 0, 0, 0, 895, 896, 1, 0, 0, 0, 896, 898, 1, 0, 0, 0, 897, 895, 1, 0, 0, 0, 898, 900, 5, 96, 0, 0, 899, 891, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 248, 1, 0, 0, 0, 903, 905, 3, 251, 125, 0, 904, 903, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 904, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 250, 1, 0, 0, 0, 908, 921, 3, 279, 139, 0, 909, 921, 3, 283, 141, 0, 910, 921, 3, 287, 143, 0, 911, 921, 3, 289, 144, 0, 912, 921, 3, 255, 127, 0, 913, 921, 3, 275, 137, 0, 914, 921, 3, 273, 136, 0, 915, 921, 3, 271, 135, 0, 916, 921, 3, 259, 129, 0, 917, 921, 3, 291, 145, 0, 918, 921, 7, 26, 0, 0, 919, 921, 3, 253, 126, 0, 920, 908, 1, 0, 0, 0, 920, 909, 1, 0, 0, 0, 920, 910, 1, 0, 0, 0, 920, 911, 1, 0, 0, 0, 920, 912, 1, 0, 0, 0, 920, 913, 1, 0, 0, 0, 920, 914, 1, 0, 0, 0, 920, 915, 1, 0, 0, 0, 920, 916, 1, 0, 0, 0, 920, 917, 1, 0, 0, 0, 920, 918, 1, 0, 0, 0, 920, 919, 1, 0, 0, 0, 921, 252, 1, 0, 0, 0, 922, 923, 5, 47, 0, 0, 923, 924, 5, 42, 0, 0, 924, 930, 1, 0, 0, 0, 925, 929, 3, 263, 131, 0, 926, 927, 5, 42, 0, 0, 927, 929, 3, 269, 134, 0, 928, 925, 1, 0, 0, 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, 934, 5, 42, 0, 0, 934, 952, 5, 47, 0, 0, 935, 936, 5, 47, 0, 0, 936, 937, 5, 47, 0, 0, 937, 941, 1, 0, 0, 0, 938, 940, 3, 267, 133, 0, 939, 938, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 945, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 275, 137, 0, 945, 944, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 949, 1, 0, 0, 0, 947, 950, 3, 287, 143, 0, 948, 950, 5, 0, 0, 1, 949, 947, 1, 0, 0, 0, 949, 948, 1, 0, 0, 0, 950, 952, 1, 0, 0, 0, 951, 922, 1, 0, 0, 0, 951, 935, 1, 0, 0, 0, 952, 254, 1, 0, 0, 0, 953, 954, 7, 27, 0, 0, 954, 256, 1, 0, 0, 0, 955, 956, 8, 28, 0, 0, 956, 258, 1, 0, 0, 0, 957, 958, 7, 29, 0, 0, 958, 260, 1, 0, 0, 0, 959, 960, 7, 30, 0, 0, 960, 262, 1, 0, 0, 0, 961, 962, 8, 31, 0, 0, 962, 264, 1, 0, 0, 0, 963, 964, 8, 32, 0, 0, 964, 266, 1, 0, 0, 0, 965, 966, 8, 33, 0, 0, 966, 268, 1, 0, 0, 0, 967, 968, 8, 34, 0, 0, 968, 270, 1, 0, 0, 0, 969, 970, 7, 35, 0, 0, 970, 272, 1, 0, 0, 0, 971, 972, 7, 36, 0, 0, 972, 274, 1, 0, 0, 0, 973, 974, 7, 37, 0, 0, 974, 276, 1, 0, 0, 0, 975, 976, 7, 38, 0, 0, 976, 278, 1, 0, 0, 0, 977, 978, 7, 39, 0, 0, 978, 280, 1, 0, 0, 0, 979, 980, 7, 40, 0, 0, 980, 282, 1, 0, 0, 0, 981, 982, 7, 41, 0, 0, 982, 284, 1, 0, 0, 0, 983, 984, 8, 42, 0, 0, 984, 286, 1, 0, 0, 0, 985, 986, 7, 43, 0, 0, 986, 288, 1, 0, 0, 0, 987, 988, 7, 44, 0, 0, 988, 290, 1, 0, 0, 0, 989, 990, 7, 45, 0, 0, 990, 292, 1, 0, 0, 0, 991, 992, 7, 46, 0, 0, 992, 294, 1, 0, 0, 0, 38, 0, 671, 678, 681, 689, 692, 696, 700, 704, 710, 717, 722, 728, 734, 736, 740, 745, 750, 757, 762, 764, 771, 773, 777, 797, 880, 885, 889, 895, 901, 906, 920, 928, 930, 941, 945, 949, 951, 0]
\ No newline at end of file
diff --git a/estore/src/main/java/org/estore/antlr4/CypherLexer.java b/estore/src/main/java/org/estore/antlr4/CypherLexer.java
new file mode 100644
index 0000000..ef2e1d6
--- /dev/null
+++ b/estore/src/main/java/org/estore/antlr4/CypherLexer.java
@@ -0,0 +1,1638 @@
+// Generated from Cypher.g4 by ANTLR 4.13.1
+
+package org.estore.antlr4;
+
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Lexer;
+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 CypherLexer extends Lexer {
+ static {
+ RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION);
+ }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int T__0 = 1,
+ T__1 = 2,
+ T__2 = 3,
+ T__3 = 4,
+ T__4 = 5,
+ T__5 = 6,
+ T__6 = 7,
+ T__7 = 8,
+ T__8 = 9,
+ T__9 = 10,
+ T__10 = 11,
+ T__11 = 12,
+ T__12 = 13,
+ T__13 = 14,
+ T__14 = 15,
+ T__15 = 16,
+ T__16 = 17,
+ T__17 = 18,
+ T__18 = 19,
+ T__19 = 20,
+ T__20 = 21,
+ T__21 = 22,
+ T__22 = 23,
+ T__23 = 24,
+ T__24 = 25,
+ T__25 = 26,
+ T__26 = 27,
+ T__27 = 28,
+ T__28 = 29,
+ T__29 = 30,
+ T__30 = 31,
+ T__31 = 32,
+ T__32 = 33,
+ T__33 = 34,
+ T__34 = 35,
+ T__35 = 36,
+ T__36 = 37,
+ T__37 = 38,
+ T__38 = 39,
+ T__39 = 40,
+ T__40 = 41,
+ T__41 = 42,
+ T__42 = 43,
+ T__43 = 44,
+ T__44 = 45,
+ UNION = 46,
+ ALL = 47,
+ OPTIONAL = 48,
+ MATCH = 49,
+ UNWIND = 50,
+ AS = 51,
+ MERGE = 52,
+ ON = 53,
+ CREATE = 54,
+ SET = 55,
+ DETACH = 56,
+ DELETE = 57,
+ REMOVE = 58,
+ CALL = 59,
+ YIELD = 60,
+ WITH = 61,
+ RETURN = 62,
+ DISTINCT = 63,
+ ORDER = 64,
+ BY = 65,
+ L_SKIP = 66,
+ LIMIT = 67,
+ ASCENDING = 68,
+ ASC = 69,
+ DESCENDING = 70,
+ DESC = 71,
+ WHERE = 72,
+ OR = 73,
+ XOR = 74,
+ AND = 75,
+ NOT = 76,
+ STARTS = 77,
+ ENDS = 78,
+ CONTAINS = 79,
+ IN = 80,
+ IS = 81,
+ NULL = 82,
+ COUNT = 83,
+ CASE = 84,
+ ELSE = 85,
+ END = 86,
+ WHEN = 87,
+ THEN = 88,
+ ANY = 89,
+ NONE = 90,
+ SINGLE = 91,
+ EXISTS = 92,
+ TRUE = 93,
+ FALSE = 94,
+ HexInteger = 95,
+ DecimalInteger = 96,
+ OctalInteger = 97,
+ HexLetter = 98,
+ HexDigit = 99,
+ Digit = 100,
+ NonZeroDigit = 101,
+ NonZeroOctDigit = 102,
+ OctDigit = 103,
+ ZeroDigit = 104,
+ ExponentDecimalReal = 105,
+ RegularDecimalReal = 106,
+ StringLiteral = 107,
+ EscapedChar = 108,
+ CONSTRAINT = 109,
+ DO = 110,
+ FOR = 111,
+ REQUIRE = 112,
+ UNIQUE = 113,
+ MANDATORY = 114,
+ SCALAR = 115,
+ OF = 116,
+ ADD = 117,
+ DROP = 118,
+ FILTER = 119,
+ EXTRACT = 120,
+ UnescapedSymbolicName = 121,
+ IdentifierStart = 122,
+ IdentifierPart = 123,
+ EscapedSymbolicName = 124,
+ SP = 125,
+ WHITESPACE = 126,
+ Comment = 127;
+ public static String[] channelNames = {"DEFAULT_TOKEN_CHANNEL", "HIDDEN"};
+
+ public static String[] modeNames = {"DEFAULT_MODE"};
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "T__0",
+ "T__1",
+ "T__2",
+ "T__3",
+ "T__4",
+ "T__5",
+ "T__6",
+ "T__7",
+ "T__8",
+ "T__9",
+ "T__10",
+ "T__11",
+ "T__12",
+ "T__13",
+ "T__14",
+ "T__15",
+ "T__16",
+ "T__17",
+ "T__18",
+ "T__19",
+ "T__20",
+ "T__21",
+ "T__22",
+ "T__23",
+ "T__24",
+ "T__25",
+ "T__26",
+ "T__27",
+ "T__28",
+ "T__29",
+ "T__30",
+ "T__31",
+ "T__32",
+ "T__33",
+ "T__34",
+ "T__35",
+ "T__36",
+ "T__37",
+ "T__38",
+ "T__39",
+ "T__40",
+ "T__41",
+ "T__42",
+ "T__43",
+ "T__44",
+ "UNION",
+ "ALL",
+ "OPTIONAL",
+ "MATCH",
+ "UNWIND",
+ "AS",
+ "MERGE",
+ "ON",
+ "CREATE",
+ "SET",
+ "DETACH",
+ "DELETE",
+ "REMOVE",
+ "CALL",
+ "YIELD",
+ "WITH",
+ "RETURN",
+ "DISTINCT",
+ "ORDER",
+ "BY",
+ "L_SKIP",
+ "LIMIT",
+ "ASCENDING",
+ "ASC",
+ "DESCENDING",
+ "DESC",
+ "WHERE",
+ "OR",
+ "XOR",
+ "AND",
+ "NOT",
+ "STARTS",
+ "ENDS",
+ "CONTAINS",
+ "IN",
+ "IS",
+ "NULL",
+ "COUNT",
+ "CASE",
+ "ELSE",
+ "END",
+ "WHEN",
+ "THEN",
+ "ANY",
+ "NONE",
+ "SINGLE",
+ "EXISTS",
+ "TRUE",
+ "FALSE",
+ "HexInteger",
+ "DecimalInteger",
+ "OctalInteger",
+ "HexLetter",
+ "HexDigit",
+ "Digit",
+ "NonZeroDigit",
+ "NonZeroOctDigit",
+ "OctDigit",
+ "ZeroDigit",
+ "ExponentDecimalReal",
+ "RegularDecimalReal",
+ "StringLiteral",
+ "EscapedChar",
+ "CONSTRAINT",
+ "DO",
+ "FOR",
+ "REQUIRE",
+ "UNIQUE",
+ "MANDATORY",
+ "SCALAR",
+ "OF",
+ "ADD",
+ "DROP",
+ "FILTER",
+ "EXTRACT",
+ "UnescapedSymbolicName",
+ "IdentifierStart",
+ "IdentifierPart",
+ "EscapedSymbolicName",
+ "SP",
+ "WHITESPACE",
+ "Comment",
+ "FF",
+ "EscapedSymbolicName_0",
+ "RS",
+ "ID_Continue",
+ "Comment_1",
+ "StringLiteral_1",
+ "Comment_3",
+ "Comment_2",
+ "GS",
+ "FS",
+ "CR",
+ "Sc",
+ "SPACE",
+ "Pc",
+ "TAB",
+ "StringLiteral_0",
+ "LF",
+ "VT",
+ "US",
+ "ID_Start"
+ };
+ }
+
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null,
+ "';'",
+ "','",
+ "'='",
+ "'+='",
+ "'*'",
+ "'('",
+ "')'",
+ "'['",
+ "']'",
+ "':'",
+ "'|'",
+ "'..'",
+ "'<>'",
+ "'<'",
+ "'>'",
+ "'<='",
+ "'>='",
+ "'+'",
+ "'-'",
+ "'/'",
+ "'%'",
+ "'^'",
+ "'.'",
+ "'{'",
+ "'}'",
+ "'$'",
+ "'\\u27E8'",
+ "'\\u3008'",
+ "'\\uFE64'",
+ "'\\uFF1C'",
+ "'\\u27E9'",
+ "'\\u3009'",
+ "'\\uFE65'",
+ "'\\uFF1E'",
+ "'\\u00AD'",
+ "'\\u2010'",
+ "'\\u2011'",
+ "'\\u2012'",
+ "'\\u2013'",
+ "'\\u2014'",
+ "'\\u2015'",
+ "'\\u2212'",
+ "'\\uFE58'",
+ "'\\uFE63'",
+ "'\\uFF0D'",
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "'0'"
+ };
+ }
+
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "UNION",
+ "ALL",
+ "OPTIONAL",
+ "MATCH",
+ "UNWIND",
+ "AS",
+ "MERGE",
+ "ON",
+ "CREATE",
+ "SET",
+ "DETACH",
+ "DELETE",
+ "REMOVE",
+ "CALL",
+ "YIELD",
+ "WITH",
+ "RETURN",
+ "DISTINCT",
+ "ORDER",
+ "BY",
+ "L_SKIP",
+ "LIMIT",
+ "ASCENDING",
+ "ASC",
+ "DESCENDING",
+ "DESC",
+ "WHERE",
+ "OR",
+ "XOR",
+ "AND",
+ "NOT",
+ "STARTS",
+ "ENDS",
+ "CONTAINS",
+ "IN",
+ "IS",
+ "NULL",
+ "COUNT",
+ "CASE",
+ "ELSE",
+ "END",
+ "WHEN",
+ "THEN",
+ "ANY",
+ "NONE",
+ "SINGLE",
+ "EXISTS",
+ "TRUE",
+ "FALSE",
+ "HexInteger",
+ "DecimalInteger",
+ "OctalInteger",
+ "HexLetter",
+ "HexDigit",
+ "Digit",
+ "NonZeroDigit",
+ "NonZeroOctDigit",
+ "OctDigit",
+ "ZeroDigit",
+ "ExponentDecimalReal",
+ "RegularDecimalReal",
+ "StringLiteral",
+ "EscapedChar",
+ "CONSTRAINT",
+ "DO",
+ "FOR",
+ "REQUIRE",
+ "UNIQUE",
+ "MANDATORY",
+ "SCALAR",
+ "OF",
+ "ADD",
+ "DROP",
+ "FILTER",
+ "EXTRACT",
+ "UnescapedSymbolicName",
+ "IdentifierStart",
+ "IdentifierPart",
+ "EscapedSymbolicName",
+ "SP",
+ "WHITESPACE",
+ "Comment"
+ };
+ }
+
+ 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;
+ }
+
+ public CypherLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() {
+ return "Cypher.g4";
+ }
+
+ @Override
+ public String[] getRuleNames() {
+ return ruleNames;
+ }
+
+ @Override
+ public String getSerializedATN() {
+ return _serializedATN;
+ }
+
+ @Override
+ public String[] getChannelNames() {
+ return channelNames;
+ }
+
+ @Override
+ public String[] getModeNames() {
+ return modeNames;
+ }
+
+ @Override
+ public ATN getATN() {
+ return _ATN;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0000\u007f\u03e1\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\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"
+ + "\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004"
+ + "\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007"
+ + "\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b"
+ + "\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"
+ + "\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001"
+ + "\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001"
+ + "\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"
+ + "\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001"
+ + "\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001"
+ + "\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001"
+ + "\u001f\u0001\u001f\u0001 \u0001 \u0001!\u0001!\u0001\"\u0001\"\u0001#"
+ + "\u0001#\u0001$\u0001$\u0001%\u0001%\u0001&\u0001&\u0001\'\u0001\'\u0001"
+ + "(\u0001(\u0001)\u0001)\u0001*\u0001*\u0001+\u0001+\u0001,\u0001,\u0001"
+ + "-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001"
+ + "/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u00010\u0001"
+ + "0\u00010\u00010\u00010\u00010\u00011\u00011\u00011\u00011\u00011\u0001"
+ + "1\u00011\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u0001"
+ + "3\u00014\u00014\u00014\u00015\u00015\u00015\u00015\u00015\u00015\u0001"
+ + "5\u00016\u00016\u00016\u00016\u00017\u00017\u00017\u00017\u00017\u0001"
+ + "7\u00017\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00019\u0001"
+ + "9\u00019\u00019\u00019\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001"
+ + ":\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001"
+ + "<\u0001<\u0001=\u0001=\u0001=\u0001=\u0001=\u0001=\u0001=\u0001>\u0001"
+ + ">\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001>\u0001?\u0001?\u0001"
+ + "?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001"
+ + "A\u0001A\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001"
+ + "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001"
+ + "D\u0001D\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001"
+ + "E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001G\u0001G\u0001"
+ + "G\u0001G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001"
+ + "I\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001K\u0001K\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\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001"
+ + "Q\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001"
+ + "S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001"
+ + "U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001W\u0001W\u0001"
+ + "W\u0001X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"
+ + "Z\u0001Z\u0001Z\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^\u0004"
+ + "^\u029e\b^\u000b^\f^\u029f\u0001_\u0001_\u0001_\u0005_\u02a5\b_\n_\f_"
+ + "\u02a8\t_\u0003_\u02aa\b_\u0001`\u0001`\u0001`\u0001`\u0004`\u02b0\b`"
+ + "\u000b`\f`\u02b1\u0001a\u0003a\u02b5\ba\u0001b\u0001b\u0003b\u02b9\bb"
+ + "\u0001c\u0001c\u0003c\u02bd\bc\u0001d\u0001d\u0003d\u02c1\bd\u0001e\u0001"
+ + "e\u0001f\u0001f\u0003f\u02c7\bf\u0001g\u0001g\u0001h\u0004h\u02cc\bh\u000b"
+ + "h\fh\u02cd\u0001h\u0004h\u02d1\bh\u000bh\fh\u02d2\u0001h\u0001h\u0004"
+ + "h\u02d7\bh\u000bh\fh\u02d8\u0001h\u0001h\u0004h\u02dd\bh\u000bh\fh\u02de"
+ + "\u0003h\u02e1\bh\u0001h\u0001h\u0003h\u02e5\bh\u0001h\u0004h\u02e8\bh"
+ + "\u000bh\fh\u02e9\u0001i\u0005i\u02ed\bi\ni\fi\u02f0\ti\u0001i\u0001i\u0004"
+ + "i\u02f4\bi\u000bi\fi\u02f5\u0001j\u0001j\u0001j\u0005j\u02fb\bj\nj\fj"
+ + "\u02fe\tj\u0001j\u0001j\u0001j\u0001j\u0005j\u0304\bj\nj\fj\u0307\tj\u0001"
+ + "j\u0003j\u030a\bj\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"
+ + "k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"
+ + "k\u0003k\u031e\bk\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001"
+ + "l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0001"
+ + "n\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001"
+ + "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001"
+ + "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001"
+ + "r\u0001r\u0001r\u0001s\u0001s\u0001s\u0001t\u0001t\u0001t\u0001t\u0001"
+ + "u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"
+ + "v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"
+ + "x\u0001x\u0005x\u036f\bx\nx\fx\u0372\tx\u0001y\u0001y\u0003y\u0376\by"
+ + "\u0001z\u0001z\u0003z\u037a\bz\u0001{\u0001{\u0005{\u037e\b{\n{\f{\u0381"
+ + "\t{\u0001{\u0004{\u0384\b{\u000b{\f{\u0385\u0001|\u0004|\u0389\b|\u000b"
+ + "|\f|\u038a\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001"
+ + "}\u0001}\u0001}\u0001}\u0003}\u0399\b}\u0001~\u0001~\u0001~\u0001~\u0001"
+ + "~\u0001~\u0005~\u03a1\b~\n~\f~\u03a4\t~\u0001~\u0001~\u0001~\u0001~\u0001"
+ + "~\u0001~\u0005~\u03ac\b~\n~\f~\u03af\t~\u0001~\u0003~\u03b2\b~\u0001~"
+ + "\u0001~\u0003~\u03b6\b~\u0003~\u03b8\b~\u0001\u007f\u0001\u007f\u0001"
+ + "\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001"
+ + "\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0001"
+ + "\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001"
+ + "\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001"
+ + "\u008c\u0001\u008c\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001"
+ + "\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001"
+ + "\u0092\u0001\u0092\u0000\u0000\u0093\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\u001c"
+ + "9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e3g4i5k6"
+ + "m7o8q9s:u;w}?\u007f@\u0081A\u0083B\u0085C\u0087D\u0089E\u008bF\u008d"
+ + "G\u008fH\u0091I\u0093J\u0095K\u0097L\u0099M\u009bN\u009dO\u009fP\u00a1"
+ + "Q\u00a3R\u00a5S\u00a7T\u00a9U\u00abV\u00adW\u00afX\u00b1Y\u00b3Z\u00b5"
+ + "[\u00b7\\\u00b9]\u00bb^\u00bd_\u00bf`\u00c1a\u00c3b\u00c5c\u00c7d\u00c9"
+ + "e\u00cbf\u00cdg\u00cfh\u00d1i\u00d3j\u00d5k\u00d7l\u00d9m\u00dbn\u00dd"
+ + "o\u00dfp\u00e1q\u00e3r\u00e5s\u00e7t\u00e9u\u00ebv\u00edw\u00efx\u00f1"
+ + "y\u00f3z\u00f5{\u00f7|\u00f9}\u00fb~\u00fd\u007f\u00ff\u0000\u0101\u0000"
+ + "\u0103\u0000\u0105\u0000\u0107\u0000\u0109\u0000\u010b\u0000\u010d\u0000"
+ + "\u010f\u0000\u0111\u0000\u0113\u0000\u0115\u0000\u0117\u0000\u0119\u0000"
+ + "\u011b\u0000\u011d\u0000\u011f\u0000\u0121\u0000\u0123\u0000\u0125\u0000"
+ + "\u0001\u0000/\u0002\u0000UUuu\u0002\u0000NNnn\u0002\u0000IIii\u0002\u0000"
+ + "OOoo\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000PPpp\u0002\u0000TTtt\u0002"
+ + "\u0000MMmm\u0002\u0000CCcc\u0002\u0000HHhh\u0002\u0000WWww\u0002\u0000"
+ + "DDdd\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000RRrr\u0002\u0000GGgg\u0002"
+ + "\u0000VVvv\u0002\u0000YYyy\u0002\u0000BBbb\u0002\u0000KKkk\u0002\u0000"
+ + "XXxx\u0002\u0000FFff\u0002\u0000AFaf\r\u0000\"\"\'\'BBFFNNRRTT\\\\bbf"
+ + "fnnrrtt\u0002\u0000QQqq\b\u0000\u00a0\u00a0\u1680\u1680\u180e\u180e\u2000"
+ + "\u200a\u2028\u2029\u202f\u202f\u205f\u205f\u3000\u3000\u0001\u0000\f\f"
+ + "\u0001\u0000``\u0001\u0000\u001e\u001e\u0300\u000009AZ__az\u00aa\u00aa"
+ + "\u00b5\u00b5\u00b7\u00b7\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8\u02c1"
+ + "\u02c6\u02d1\u02e0\u02e4\u02ec\u02ec\u02ee\u02ee\u0300\u0374\u0376\u0377"
+ + "\u037a\u037d\u037f\u037f\u0386\u038a\u038c\u038c\u038e\u03a1\u03a3\u03f5"
+ + "\u03f7\u0481\u0483\u0487\u048a\u052f\u0531\u0556\u0559\u0559\u0560\u0588"
+ + "\u0591\u05bd\u05bf\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05c7\u05d0\u05ea"
+ + "\u05ef\u05f2\u0610\u061a\u0620\u0669\u066e\u06d3\u06d5\u06dc\u06df\u06e8"
+ + "\u06ea\u06fc\u06ff\u06ff\u0710\u074a\u074d\u07b1\u07c0\u07f5\u07fa\u07fa"
+ + "\u07fd\u07fd\u0800\u082d\u0840\u085b\u0860\u086a\u0870\u0887\u0889\u088e"
+ + "\u0898\u08e1\u08e3\u0963\u0966\u096f\u0971\u0983\u0985\u098c\u098f\u0990"
+ + "\u0993\u09a8\u09aa\u09b0\u09b2\u09b2\u09b6\u09b9\u09bc\u09c4\u09c7\u09c8"
+ + "\u09cb\u09ce\u09d7\u09d7\u09dc\u09dd\u09df\u09e3\u09e6\u09f1\u09fc\u09fc"
+ + "\u09fe\u09fe\u0a01\u0a03\u0a05\u0a0a\u0a0f\u0a10\u0a13\u0a28\u0a2a\u0a30"
+ + "\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3c\u0a3e\u0a42\u0a47\u0a48"
+ + "\u0a4b\u0a4d\u0a51\u0a51\u0a59\u0a5c\u0a5e\u0a5e\u0a66\u0a75\u0a81\u0a83"
+ + "\u0a85\u0a8d\u0a8f\u0a91\u0a93\u0aa8\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5\u0ab9"
+ + "\u0abc\u0ac5\u0ac7\u0ac9\u0acb\u0acd\u0ad0\u0ad0\u0ae0\u0ae3\u0ae6\u0aef"
+ + "\u0af9\u0aff\u0b01\u0b03\u0b05\u0b0c\u0b0f\u0b10\u0b13\u0b28\u0b2a\u0b30"
+ + "\u0b32\u0b33\u0b35\u0b39\u0b3c\u0b44\u0b47\u0b48\u0b4b\u0b4d\u0b55\u0b57"
+ + "\u0b5c\u0b5d\u0b5f\u0b63\u0b66\u0b6f\u0b71\u0b71\u0b82\u0b83\u0b85\u0b8a"
+ + "\u0b8e\u0b90\u0b92\u0b95\u0b99\u0b9a\u0b9c\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4"
+ + "\u0ba8\u0baa\u0bae\u0bb9\u0bbe\u0bc2\u0bc6\u0bc8\u0bca\u0bcd\u0bd0\u0bd0"
+ + "\u0bd7\u0bd7\u0be6\u0bef\u0c00\u0c0c\u0c0e\u0c10\u0c12\u0c28\u0c2a\u0c39"
+ + "\u0c3c\u0c44\u0c46\u0c48\u0c4a\u0c4d\u0c55\u0c56\u0c58\u0c5a\u0c5d\u0c5d"
+ + "\u0c60\u0c63\u0c66\u0c6f\u0c80\u0c83\u0c85\u0c8c\u0c8e\u0c90\u0c92\u0ca8"
+ + "\u0caa\u0cb3\u0cb5\u0cb9\u0cbc\u0cc4\u0cc6\u0cc8\u0cca\u0ccd\u0cd5\u0cd6"
+ + "\u0cdd\u0cde\u0ce0\u0ce3\u0ce6\u0cef\u0cf1\u0cf3\u0d00\u0d0c\u0d0e\u0d10"
+ + "\u0d12\u0d44\u0d46\u0d48\u0d4a\u0d4e\u0d54\u0d57\u0d5f\u0d63\u0d66\u0d6f"
+ + "\u0d7a\u0d7f\u0d81\u0d83\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd\u0dbd"
+ + "\u0dc0\u0dc6\u0dca\u0dca\u0dcf\u0dd4\u0dd6\u0dd6\u0dd8\u0ddf\u0de6\u0def"
+ + "\u0df2\u0df3\u0e01\u0e3a\u0e40\u0e4e\u0e50\u0e59\u0e81\u0e82\u0e84\u0e84"
+ + "\u0e86\u0e8a\u0e8c\u0ea3\u0ea5\u0ea5\u0ea7\u0ebd\u0ec0\u0ec4\u0ec6\u0ec6"
+ + "\u0ec8\u0ece\u0ed0\u0ed9\u0edc\u0edf\u0f00\u0f00\u0f18\u0f19\u0f20\u0f29"
+ + "\u0f35\u0f35\u0f37\u0f37\u0f39\u0f39\u0f3e\u0f47\u0f49\u0f6c\u0f71\u0f84"
+ + "\u0f86\u0f97\u0f99\u0fbc\u0fc6\u0fc6\u1000\u1049\u1050\u109d\u10a0\u10c5"
+ + "\u10c7\u10c7\u10cd\u10cd\u10d0\u10fa\u10fc\u1248\u124a\u124d\u1250\u1256"
+ + "\u1258\u1258\u125a\u125d\u1260\u1288\u128a\u128d\u1290\u12b0\u12b2\u12b5"
+ + "\u12b8\u12be\u12c0\u12c0\u12c2\u12c5\u12c8\u12d6\u12d8\u1310\u1312\u1315"
+ + "\u1318\u135a\u135d\u135f\u1369\u1371\u1380\u138f\u13a0\u13f5\u13f8\u13fd"
+ + "\u1401\u166c\u166f\u167f\u1681\u169a\u16a0\u16ea\u16ee\u16f8\u1700\u1715"
+ + "\u171f\u1734\u1740\u1753\u1760\u176c\u176e\u1770\u1772\u1773\u1780\u17d3"
+ + "\u17d7\u17d7\u17dc\u17dd\u17e0\u17e9\u180b\u180d\u180f\u1819\u1820\u1878"
+ + "\u1880\u18aa\u18b0\u18f5\u1900\u191e\u1920\u192b\u1930\u193b\u1946\u196d"
+ + "\u1970\u1974\u1980\u19ab\u19b0\u19c9\u19d0\u19da\u1a00\u1a1b\u1a20\u1a5e"
+ + "\u1a60\u1a7c\u1a7f\u1a89\u1a90\u1a99\u1aa7\u1aa7\u1ab0\u1abd\u1abf\u1ace"
+ + "\u1b00\u1b4c\u1b50\u1b59\u1b6b\u1b73\u1b80\u1bf3\u1c00\u1c37\u1c40\u1c49"
+ + "\u1c4d\u1c7d\u1c80\u1c88\u1c90\u1cba\u1cbd\u1cbf\u1cd0\u1cd2\u1cd4\u1cfa"
+ + "\u1d00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48\u1f4d\u1f50\u1f57\u1f59\u1f59"
+ + "\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80\u1fb4\u1fb6\u1fbc\u1fbe\u1fbe"
+ + "\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6\u1fdb\u1fe0\u1fec\u1ff2\u1ff4"
+ + "\u1ff6\u1ffc\u203f\u2040\u2054\u2054\u2071\u2071\u207f\u207f\u2090\u209c"
+ + "\u20d0\u20dc\u20e1\u20e1\u20e5\u20f0\u2102\u2102\u2107\u2107\u210a\u2113"
+ + "\u2115\u2115\u2118\u211d\u2124\u2124\u2126\u2126\u2128\u2128\u212a\u2139"
+ + "\u213c\u213f\u2145\u2149\u214e\u214e\u2160\u2188\u2c00\u2ce4\u2ceb\u2cf3"
+ + "\u2d00\u2d25\u2d27\u2d27\u2d2d\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d7f\u2d96"
+ + "\u2da0\u2da6\u2da8\u2dae\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce"
+ + "\u2dd0\u2dd6\u2dd8\u2dde\u2de0\u2dff\u3005\u3007\u3021\u302f\u3031\u3035"
+ + "\u3038\u303c\u3041\u3096\u3099\u309f\u30a1\u30fa\u30fc\u30ff\u3105\u312f"
+ + "\u3131\u318e\u31a0\u31bf\u31f0\u31ff\u3400\u4dbf\u4e00\u8000\ua48c\u8000"
+ + "\ua4d0\u8000\ua4fd\u8000\ua500\u8000\ua60c\u8000\ua610\u8000\ua62b\u8000"
+ + "\ua640\u8000\ua66f\u8000\ua674\u8000\ua67d\u8000\ua67f\u8000\ua6f1\u8000"
+ + "\ua717\u8000\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7ca\u8000"
+ + "\ua7d0\u8000\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000\ua7d5\u8000\ua7d9\u8000"
+ + "\ua7f2\u8000\ua827\u8000\ua82c\u8000\ua82c\u8000\ua840\u8000\ua873\u8000"
+ + "\ua880\u8000\ua8c5\u8000\ua8d0\u8000\ua8d9\u8000\ua8e0\u8000\ua8f7\u8000"
+ + "\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua92d\u8000\ua930\u8000\ua953\u8000"
+ + "\ua960\u8000\ua97c\u8000\ua980\u8000\ua9c0\u8000\ua9cf\u8000\ua9d9\u8000"
+ + "\ua9e0\u8000\ua9fe\u8000\uaa00\u8000\uaa36\u8000\uaa40\u8000\uaa4d\u8000"
+ + "\uaa50\u8000\uaa59\u8000\uaa60\u8000\uaa76\u8000\uaa7a\u8000\uaac2\u8000"
+ + "\uaadb\u8000\uaadd\u8000\uaae0\u8000\uaaef\u8000\uaaf2\u8000\uaaf6\u8000"
+ + "\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000\uab11\u8000\uab16\u8000"
+ + "\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000\uab30\u8000\uab5a\u8000"
+ + "\uab5c\u8000\uab69\u8000\uab70\u8000\uabea\u8000\uabec\u8000\uabed\u8000"
+ + "\uabf0\u8000\uabf9\u8000\uac00\u8000\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000"
+ + "\ud7cb\u8000\ud7fb\u8000\uf900\u8000\ufa6d\u8000\ufa70\u8000\ufad9\u8000"
+ + "\ufb00\u8000\ufb06\u8000\ufb13\u8000\ufb17\u8000\ufb1d\u8000\ufb28\u8000"
+ + "\ufb2a\u8000\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000"
+ + "\ufb40\u8000\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000"
+ + "\ufbd3\u8000\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000"
+ + "\ufdf0\u8000\ufdfb\u8000\ufe00\u8000\ufe0f\u8000\ufe20\u8000\ufe2f\u8000"
+ + "\ufe33\u8000\ufe34\u8000\ufe4d\u8000\ufe4f\u8000\ufe70\u8000\ufe74\u8000"
+ + "\ufe76\u8000\ufefc\u8000\uff10\u8000\uff19\u8000\uff21\u8000\uff3a\u8000"
+ + "\uff3f\u8000\uff3f\u8000\uff41\u8000\uff5a\u8000\uff66\u8000\uffbe\u8000"
+ + "\uffc2\u8000\uffc7\u8000\uffca\u8000\uffcf\u8000\uffd2\u8000\uffd7\u8000"
+ + "\uffda\u8000\uffdc\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001"
+ + ":\u8001<\u8001=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001"
+ + "\u0140\u8001\u0174\u8001\u01fd\u8001\u01fd\u8001\u0280\u8001\u029c\u8001"
+ + "\u02a0\u8001\u02d0\u8001\u02e0\u8001\u02e0\u8001\u0300\u8001\u031f\u8001"
+ + "\u032d\u8001\u034a\u8001\u0350\u8001\u037a\u8001\u0380\u8001\u039d\u8001"
+ + "\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001\u03d1\u8001\u03d5\u8001"
+ + "\u0400\u8001\u049d\u8001\u04a0\u8001\u04a9\u8001\u04b0\u8001\u04d3\u8001"
+ + "\u04d8\u8001\u04fb\u8001\u0500\u8001\u0527\u8001\u0530\u8001\u0563\u8001"
+ + "\u0570\u8001\u057a\u8001\u057c\u8001\u058a\u8001\u058c\u8001\u0592\u8001"
+ + "\u0594\u8001\u0595\u8001\u0597\u8001\u05a1\u8001\u05a3\u8001\u05b1\u8001"
+ + "\u05b3\u8001\u05b9\u8001\u05bb\u8001\u05bc\u8001\u0600\u8001\u0736\u8001"
+ + "\u0740\u8001\u0755\u8001\u0760\u8001\u0767\u8001\u0780\u8001\u0785\u8001"
+ + "\u0787\u8001\u07b0\u8001\u07b2\u8001\u07ba\u8001\u0800\u8001\u0805\u8001"
+ + "\u0808\u8001\u0808\u8001\u080a\u8001\u0835\u8001\u0837\u8001\u0838\u8001"
+ + "\u083c\u8001\u083c\u8001\u083f\u8001\u0855\u8001\u0860\u8001\u0876\u8001"
+ + "\u0880\u8001\u089e\u8001\u08e0\u8001\u08f2\u8001\u08f4\u8001\u08f5\u8001"
+ + "\u0900\u8001\u0915\u8001\u0920\u8001\u0939\u8001\u0980\u8001\u09b7\u8001"
+ + "\u09be\u8001\u09bf\u8001\u0a00\u8001\u0a03\u8001\u0a05\u8001\u0a06\u8001"
+ + "\u0a0c\u8001\u0a13\u8001\u0a15\u8001\u0a17\u8001\u0a19\u8001\u0a35\u8001"
+ + "\u0a38\u8001\u0a3a\u8001\u0a3f\u8001\u0a3f\u8001\u0a60\u8001\u0a7c\u8001"
+ + "\u0a80\u8001\u0a9c\u8001\u0ac0\u8001\u0ac7\u8001\u0ac9\u8001\u0ae6\u8001"
+ + "\u0b00\u8001\u0b35\u8001\u0b40\u8001\u0b55\u8001\u0b60\u8001\u0b72\u8001"
+ + "\u0b80\u8001\u0b91\u8001\u0c00\u8001\u0c48\u8001\u0c80\u8001\u0cb2\u8001"
+ + "\u0cc0\u8001\u0cf2\u8001\u0d00\u8001\u0d27\u8001\u0d30\u8001\u0d39\u8001"
+ + "\u0e80\u8001\u0ea9\u8001\u0eab\u8001\u0eac\u8001\u0eb0\u8001\u0eb1\u8001"
+ + "\u0efd\u8001\u0f1c\u8001\u0f27\u8001\u0f27\u8001\u0f30\u8001\u0f50\u8001"
+ + "\u0f70\u8001\u0f85\u8001\u0fb0\u8001\u0fc4\u8001\u0fe0\u8001\u0ff6\u8001"
+ + "\u1000\u8001\u1046\u8001\u1066\u8001\u1075\u8001\u107f\u8001\u10ba\u8001"
+ + "\u10c2\u8001\u10c2\u8001\u10d0\u8001\u10e8\u8001\u10f0\u8001\u10f9\u8001"
+ + "\u1100\u8001\u1134\u8001\u1136\u8001\u113f\u8001\u1144\u8001\u1147\u8001"
+ + "\u1150\u8001\u1173\u8001\u1176\u8001\u1176\u8001\u1180\u8001\u11c4\u8001"
+ + "\u11c9\u8001\u11cc\u8001\u11ce\u8001\u11da\u8001\u11dc\u8001\u11dc\u8001"
+ + "\u1200\u8001\u1211\u8001\u1213\u8001\u1237\u8001\u123e\u8001\u1241\u8001"
+ + "\u1280\u8001\u1286\u8001\u1288\u8001\u1288\u8001\u128a\u8001\u128d\u8001"
+ + "\u128f\u8001\u129d\u8001\u129f\u8001\u12a8\u8001\u12b0\u8001\u12ea\u8001"
+ + "\u12f0\u8001\u12f9\u8001\u1300\u8001\u1303\u8001\u1305\u8001\u130c\u8001"
+ + "\u130f\u8001\u1310\u8001\u1313\u8001\u1328\u8001\u132a\u8001\u1330\u8001"
+ + "\u1332\u8001\u1333\u8001\u1335\u8001\u1339\u8001\u133b\u8001\u1344\u8001"
+ + "\u1347\u8001\u1348\u8001\u134b\u8001\u134d\u8001\u1350\u8001\u1350\u8001"
+ + "\u1357\u8001\u1357\u8001\u135d\u8001\u1363\u8001\u1366\u8001\u136c\u8001"
+ + "\u1370\u8001\u1374\u8001\u1400\u8001\u144a\u8001\u1450\u8001\u1459\u8001"
+ + "\u145e\u8001\u1461\u8001\u1480\u8001\u14c5\u8001\u14c7\u8001\u14c7\u8001"
+ + "\u14d0\u8001\u14d9\u8001\u1580\u8001\u15b5\u8001\u15b8\u8001\u15c0\u8001"
+ + "\u15d8\u8001\u15dd\u8001\u1600\u8001\u1640\u8001\u1644\u8001\u1644\u8001"
+ + "\u1650\u8001\u1659\u8001\u1680\u8001\u16b8\u8001\u16c0\u8001\u16c9\u8001"
+ + "\u1700\u8001\u171a\u8001\u171d\u8001\u172b\u8001\u1730\u8001\u1739\u8001"
+ + "\u1740\u8001\u1746\u8001\u1800\u8001\u183a\u8001\u18a0\u8001\u18e9\u8001"
+ + "\u18ff\u8001\u1906\u8001\u1909\u8001\u1909\u8001\u190c\u8001\u1913\u8001"
+ + "\u1915\u8001\u1916\u8001\u1918\u8001\u1935\u8001\u1937\u8001\u1938\u8001"
+ + "\u193b\u8001\u1943\u8001\u1950\u8001\u1959\u8001\u19a0\u8001\u19a7\u8001"
+ + "\u19aa\u8001\u19d7\u8001\u19da\u8001\u19e1\u8001\u19e3\u8001\u19e4\u8001"
+ + "\u1a00\u8001\u1a3e\u8001\u1a47\u8001\u1a47\u8001\u1a50\u8001\u1a99\u8001"
+ + "\u1a9d\u8001\u1a9d\u8001\u1ab0\u8001\u1af8\u8001\u1c00\u8001\u1c08\u8001"
+ + "\u1c0a\u8001\u1c36\u8001\u1c38\u8001\u1c40\u8001\u1c50\u8001\u1c59\u8001"
+ + "\u1c72\u8001\u1c8f\u8001\u1c92\u8001\u1ca7\u8001\u1ca9\u8001\u1cb6\u8001"
+ + "\u1d00\u8001\u1d06\u8001\u1d08\u8001\u1d09\u8001\u1d0b\u8001\u1d36\u8001"
+ + "\u1d3a\u8001\u1d3a\u8001\u1d3c\u8001\u1d3d\u8001\u1d3f\u8001\u1d47\u8001"
+ + "\u1d50\u8001\u1d59\u8001\u1d60\u8001\u1d65\u8001\u1d67\u8001\u1d68\u8001"
+ + "\u1d6a\u8001\u1d8e\u8001\u1d90\u8001\u1d91\u8001\u1d93\u8001\u1d98\u8001"
+ + "\u1da0\u8001\u1da9\u8001\u1ee0\u8001\u1ef6\u8001\u1f00\u8001\u1f10\u8001"
+ + "\u1f12\u8001\u1f3a\u8001\u1f3e\u8001\u1f42\u8001\u1f50\u8001\u1f59\u8001"
+ + "\u1fb0\u8001\u1fb0\u8001\u2000\u8001\u2399\u8001\u2400\u8001\u246e\u8001"
+ + "\u2480\u8001\u2543\u8001\u2f90\u8001\u2ff0\u8001\u3000\u8001\u342f\u8001"
+ + "\u3440\u8001\u3455\u8001\u4400\u8001\u4646\u8001\u6800\u8001\u6a38\u8001"
+ + "\u6a40\u8001\u6a5e\u8001\u6a60\u8001\u6a69\u8001\u6a70\u8001\u6abe\u8001"
+ + "\u6ac0\u8001\u6ac9\u8001\u6ad0\u8001\u6aed\u8001\u6af0\u8001\u6af4\u8001"
+ + "\u6b00\u8001\u6b36\u8001\u6b40\u8001\u6b43\u8001\u6b50\u8001\u6b59\u8001"
+ + "\u6b63\u8001\u6b77\u8001\u6b7d\u8001\u6b8f\u8001\u6e40\u8001\u6e7f\u8001"
+ + "\u6f00\u8001\u6f4a\u8001\u6f4f\u8001\u6f87\u8001\u6f8f\u8001\u6f9f\u8001"
+ + "\u6fe0\u8001\u6fe1\u8001\u6fe3\u8001\u6fe4\u8001\u6ff0\u8001\u6ff1\u8001"
+ + "\u7000\u8001\u87f7\u8001\u8800\u8001\u8cd5\u8001\u8d00\u8001\u8d08\u8001"
+ + "\uaff0\u8001\uaff3\u8001\uaff5\u8001\uaffb\u8001\uaffd\u8001\uaffe\u8001"
+ + "\ub000\u8001\ub122\u8001\ub132\u8001\ub132\u8001\ub150\u8001\ub152\u8001"
+ + "\ub155\u8001\ub155\u8001\ub164\u8001\ub167\u8001\ub170\u8001\ub2fb\u8001"
+ + "\ubc00\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001\ubc88\u8001"
+ + "\ubc90\u8001\ubc99\u8001\ubc9d\u8001\ubc9e\u8001\ucf00\u8001\ucf2d\u8001"
+ + "\ucf30\u8001\ucf46\u8001\ud165\u8001\ud169\u8001\ud16d\u8001\ud172\u8001"
+ + "\ud17b\u8001\ud182\u8001\ud185\u8001\ud18b\u8001\ud1aa\u8001\ud1ad\u8001"
+ + "\ud242\u8001\ud244\u8001\ud400\u8001\ud454\u8001\ud456\u8001\ud49c\u8001"
+ + "\ud49e\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001\ud4a6\u8001"
+ + "\ud4a9\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001\ud4bb\u8001"
+ + "\ud4bd\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001\ud50a\u8001"
+ + "\ud50d\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001\ud539\u8001"
+ + "\ud53b\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546\u8001\ud546\u8001"
+ + "\ud54a\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001\ud6c0\u8001"
+ + "\ud6c2\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001\ud714\u8001"
+ + "\ud716\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750\u8001\ud76e\u8001"
+ + "\ud770\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001\ud7c2\u8001"
+ + "\ud7c4\u8001\ud7cb\u8001\ud7ce\u8001\ud7ff\u8001\uda00\u8001\uda36\u8001"
+ + "\uda3b\u8001\uda6c\u8001\uda75\u8001\uda75\u8001\uda84\u8001\uda84\u8001"
+ + "\uda9b\u8001\uda9f\u8001\udaa1\u8001\udaaf\u8001\udf00\u8001\udf1e\u8001"
+ + "\udf25\u8001\udf2a\u8001\ue000\u8001\ue006\u8001\ue008\u8001\ue018\u8001"
+ + "\ue01b\u8001\ue021\u8001\ue023\u8001\ue024\u8001\ue026\u8001\ue02a\u8001"
+ + "\ue030\u8001\ue06d\u8001\ue08f\u8001\ue08f\u8001\ue100\u8001\ue12c\u8001"
+ + "\ue130\u8001\ue13d\u8001\ue140\u8001\ue149\u8001\ue14e\u8001\ue14e\u8001"
+ + "\ue290\u8001\ue2ae\u8001\ue2c0\u8001\ue2f9\u8001\ue4d0\u8001\ue4f9\u8001"
+ + "\ue7e0\u8001\ue7e6\u8001\ue7e8\u8001\ue7eb\u8001\ue7ed\u8001\ue7ee\u8001"
+ + "\ue7f0\u8001\ue7fe\u8001\ue800\u8001\ue8c4\u8001\ue8d0\u8001\ue8d6\u8001"
+ + "\ue900\u8001\ue94b\u8001\ue950\u8001\ue959\u8001\uee00\u8001\uee03\u8001"
+ + "\uee05\u8001\uee1f\u8001\uee21\u8001\uee22\u8001\uee24\u8001\uee24\u8001"
+ + "\uee27\u8001\uee27\u8001\uee29\u8001\uee32\u8001\uee34\u8001\uee37\u8001"
+ + "\uee39\u8001\uee39\u8001\uee3b\u8001\uee3b\u8001\uee42\u8001\uee42\u8001"
+ + "\uee47\u8001\uee47\u8001\uee49\u8001\uee49\u8001\uee4b\u8001\uee4b\u8001"
+ + "\uee4d\u8001\uee4f\u8001\uee51\u8001\uee52\u8001\uee54\u8001\uee54\u8001"
+ + "\uee57\u8001\uee57\u8001\uee59\u8001\uee59\u8001\uee5b\u8001\uee5b\u8001"
+ + "\uee5d\u8001\uee5d\u8001\uee5f\u8001\uee5f\u8001\uee61\u8001\uee62\u8001"
+ + "\uee64\u8001\uee64\u8001\uee67\u8001\uee6a\u8001\uee6c\u8001\uee72\u8001"
+ + "\uee74\u8001\uee77\u8001\uee79\u8001\uee7c\u8001\uee7e\u8001\uee7e\u8001"
+ + "\uee80\u8001\uee89\u8001\uee8b\u8001\uee9b\u8001\ueea1\u8001\ueea3\u8001"
+ + "\ueea5\u8001\ueea9\u8001\ueeab\u8001\ueebb\u8001\ufbf0\u8001\ufbf9\u8002"
+ + "\u0000\u8002\ua6df\u8002\ua700\u8002\ub739\u8002\ub740\u8002\ub81d\u8002"
+ + "\ub820\u8002\ucea1\u8002\uceb0\u8002\uebe0\u8002\uf800\u8002\ufa1d\u8003"
+ + "\u0000\u8003\u134a\u8003\u1350\u8003\u23af\u800e\u0100\u800e\u01ef\u0001"
+ + "\u0000**\u0002\u0000\'\'\\\\\u0002\u0000\n\n\r\r\u0001\u0000//\u0001\u0000"
+ + "\u001d\u001d\u0001\u0000\u001c\u001c\u0001\u0000\r\r\u0015\u0000$$\u00a2"
+ + "\u00a5\u058f\u058f\u060b\u060b\u07fe\u07ff\u09f2\u09f3\u09fb\u09fb\u0af1"
+ + "\u0af1\u0bf9\u0bf9\u0e3f\u0e3f\u17db\u17db\u20a0\u20c0\u8000\ua838\u8000"
+ + "\ua838\u8000\ufdfc\u8000\ufdfc\u8000\ufe69\u8000\ufe69\u8000\uff04\u8000"
+ + "\uff04\u8000\uffe0\u8000\uffe1\u8000\uffe5\u8000\uffe6\u8001\u1fdd\u8001"
+ + "\u1fe0\u8001\ue2ff\u8001\ue2ff\u8001\uecb0\u8001\uecb0\u0001\u0000 \u0006"
+ + "\u0000__\u203f\u2040\u2054\u2054\u8000\ufe33\u8000\ufe34\u8000\ufe4d\u8000"
+ + "\ufe4f\u8000\uff3f\u8000\uff3f\u0001\u0000\t\t\u0002\u0000\"\"\\\\\u0001"
+ + "\u0000\n\n\u0001\u0000\u000b\u000b\u0001\u0000\u001f\u001f\u0293\u0000"
+ + "AZaz\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6\u00f8"
+ + "\u02c1\u02c6\u02d1\u02e0\u02e4\u02ec\u02ec\u02ee\u02ee\u0370\u0374\u0376"
+ + "\u0377\u037a\u037d\u037f\u037f\u0386\u0386\u0388\u038a\u038c\u038c\u038e"
+ + "\u03a1\u03a3\u03f5\u03f7\u0481\u048a\u052f\u0531\u0556\u0559\u0559\u0560"
+ + "\u0588\u05d0\u05ea\u05ef\u05f2\u0620\u064a\u066e\u066f\u0671\u06d3\u06d5"
+ + "\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa\u06fc\u06ff\u06ff\u0710\u0710\u0712"
+ + "\u072f\u074d\u07a5\u07b1\u07b1\u07ca\u07ea\u07f4\u07f5\u07fa\u07fa\u0800"
+ + "\u0815\u081a\u081a\u0824\u0824\u0828\u0828\u0840\u0858\u0860\u086a\u0870"
+ + "\u0887\u0889\u088e\u08a0\u08c9\u0904\u0939\u093d\u093d\u0950\u0950\u0958"
+ + "\u0961\u0971\u0980\u0985\u098c\u098f\u0990\u0993\u09a8\u09aa\u09b0\u09b2"
+ + "\u09b2\u09b6\u09b9\u09bd\u09bd\u09ce\u09ce\u09dc\u09dd\u09df\u09e1\u09f0"
+ + "\u09f1\u09fc\u09fc\u0a05\u0a0a\u0a0f\u0a10\u0a13\u0a28\u0a2a\u0a30\u0a32"
+ + "\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59\u0a5c\u0a5e\u0a5e\u0a72\u0a74\u0a85"
+ + "\u0a8d\u0a8f\u0a91\u0a93\u0aa8\u0aaa\u0ab0\u0ab2\u0ab3\u0ab5\u0ab9\u0abd"
+ + "\u0abd\u0ad0\u0ad0\u0ae0\u0ae1\u0af9\u0af9\u0b05\u0b0c\u0b0f\u0b10\u0b13"
+ + "\u0b28\u0b2a\u0b30\u0b32\u0b33\u0b35\u0b39\u0b3d\u0b3d\u0b5c\u0b5d\u0b5f"
+ + "\u0b61\u0b71\u0b71\u0b83\u0b83\u0b85\u0b8a\u0b8e\u0b90\u0b92\u0b95\u0b99"
+ + "\u0b9a\u0b9c\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0bb9\u0bd0"
+ + "\u0bd0\u0c05\u0c0c\u0c0e\u0c10\u0c12\u0c28\u0c2a\u0c39\u0c3d\u0c3d\u0c58"
+ + "\u0c5a\u0c5d\u0c5d\u0c60\u0c61\u0c80\u0c80\u0c85\u0c8c\u0c8e\u0c90\u0c92"
+ + "\u0ca8\u0caa\u0cb3\u0cb5\u0cb9\u0cbd\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1"
+ + "\u0cf2\u0d04\u0d0c\u0d0e\u0d10\u0d12\u0d3a\u0d3d\u0d3d\u0d4e\u0d4e\u0d54"
+ + "\u0d56\u0d5f\u0d61\u0d7a\u0d7f\u0d85\u0d96\u0d9a\u0db1\u0db3\u0dbb\u0dbd"
+ + "\u0dbd\u0dc0\u0dc6\u0e01\u0e30\u0e32\u0e33\u0e40\u0e46\u0e81\u0e82\u0e84"
+ + "\u0e84\u0e86\u0e8a\u0e8c\u0ea3\u0ea5\u0ea5\u0ea7\u0eb0\u0eb2\u0eb3\u0ebd"
+ + "\u0ebd\u0ec0\u0ec4\u0ec6\u0ec6\u0edc\u0edf\u0f00\u0f00\u0f40\u0f47\u0f49"
+ + "\u0f6c\u0f88\u0f8c\u1000\u102a\u103f\u103f\u1050\u1055\u105a\u105d\u1061"
+ + "\u1061\u1065\u1066\u106e\u1070\u1075\u1081\u108e\u108e\u10a0\u10c5\u10c7"
+ + "\u10c7\u10cd\u10cd\u10d0\u10fa\u10fc\u1248\u124a\u124d\u1250\u1256\u1258"
+ + "\u1258\u125a\u125d\u1260\u1288\u128a\u128d\u1290\u12b0\u12b2\u12b5\u12b8"
+ + "\u12be\u12c0\u12c0\u12c2\u12c5\u12c8\u12d6\u12d8\u1310\u1312\u1315\u1318"
+ + "\u135a\u1380\u138f\u13a0\u13f5\u13f8\u13fd\u1401\u166c\u166f\u167f\u1681"
+ + "\u169a\u16a0\u16ea\u16ee\u16f8\u1700\u1711\u171f\u1731\u1740\u1751\u1760"
+ + "\u176c\u176e\u1770\u1780\u17b3\u17d7\u17d7\u17dc\u17dc\u1820\u1878\u1880"
+ + "\u18a8\u18aa\u18aa\u18b0\u18f5\u1900\u191e\u1950\u196d\u1970\u1974\u1980"
+ + "\u19ab\u19b0\u19c9\u1a00\u1a16\u1a20\u1a54\u1aa7\u1aa7\u1b05\u1b33\u1b45"
+ + "\u1b4c\u1b83\u1ba0\u1bae\u1baf\u1bba\u1be5\u1c00\u1c23\u1c4d\u1c4f\u1c5a"
+ + "\u1c7d\u1c80\u1c88\u1c90\u1cba\u1cbd\u1cbf\u1ce9\u1cec\u1cee\u1cf3\u1cf5"
+ + "\u1cf6\u1cfa\u1cfa\u1d00\u1dbf\u1e00\u1f15\u1f18\u1f1d\u1f20\u1f45\u1f48"
+ + "\u1f4d\u1f50\u1f57\u1f59\u1f59\u1f5b\u1f5b\u1f5d\u1f5d\u1f5f\u1f7d\u1f80"
+ + "\u1fb4\u1fb6\u1fbc\u1fbe\u1fbe\u1fc2\u1fc4\u1fc6\u1fcc\u1fd0\u1fd3\u1fd6"
+ + "\u1fdb\u1fe0\u1fec\u1ff2\u1ff4\u1ff6\u1ffc\u2071\u2071\u207f\u207f\u2090"
+ + "\u209c\u2102\u2102\u2107\u2107\u210a\u2113\u2115\u2115\u2118\u211d\u2124"
+ + "\u2124\u2126\u2126\u2128\u2128\u212a\u2139\u213c\u213f\u2145\u2149\u214e"
+ + "\u214e\u2160\u2188\u2c00\u2ce4\u2ceb\u2cee\u2cf2\u2cf3\u2d00\u2d25\u2d27"
+ + "\u2d27\u2d2d\u2d2d\u2d30\u2d67\u2d6f\u2d6f\u2d80\u2d96\u2da0\u2da6\u2da8"
+ + "\u2dae\u2db0\u2db6\u2db8\u2dbe\u2dc0\u2dc6\u2dc8\u2dce\u2dd0\u2dd6\u2dd8"
+ + "\u2dde\u3005\u3007\u3021\u3029\u3031\u3035\u3038\u303c\u3041\u3096\u309b"
+ + "\u309f\u30a1\u30fa\u30fc\u30ff\u3105\u312f\u3131\u318e\u31a0\u31bf\u31f0"
+ + "\u31ff\u3400\u4dbf\u4e00\u8000\ua48c\u8000\ua4d0\u8000\ua4fd\u8000\ua500"
+ + "\u8000\ua60c\u8000\ua610\u8000\ua61f\u8000\ua62a\u8000\ua62b\u8000\ua640"
+ + "\u8000\ua66e\u8000\ua67f\u8000\ua69d\u8000\ua6a0\u8000\ua6ef\u8000\ua717"
+ + "\u8000\ua71f\u8000\ua722\u8000\ua788\u8000\ua78b\u8000\ua7ca\u8000\ua7d0"
+ + "\u8000\ua7d1\u8000\ua7d3\u8000\ua7d3\u8000\ua7d5\u8000\ua7d9\u8000\ua7f2"
+ + "\u8000\ua801\u8000\ua803\u8000\ua805\u8000\ua807\u8000\ua80a\u8000\ua80c"
+ + "\u8000\ua822\u8000\ua840\u8000\ua873\u8000\ua882\u8000\ua8b3\u8000\ua8f2"
+ + "\u8000\ua8f7\u8000\ua8fb\u8000\ua8fb\u8000\ua8fd\u8000\ua8fe\u8000\ua90a"
+ + "\u8000\ua925\u8000\ua930\u8000\ua946\u8000\ua960\u8000\ua97c\u8000\ua984"
+ + "\u8000\ua9b2\u8000\ua9cf\u8000\ua9cf\u8000\ua9e0\u8000\ua9e4\u8000\ua9e6"
+ + "\u8000\ua9ef\u8000\ua9fa\u8000\ua9fe\u8000\uaa00\u8000\uaa28\u8000\uaa40"
+ + "\u8000\uaa42\u8000\uaa44\u8000\uaa4b\u8000\uaa60\u8000\uaa76\u8000\uaa7a"
+ + "\u8000\uaa7a\u8000\uaa7e\u8000\uaaaf\u8000\uaab1\u8000\uaab1\u8000\uaab5"
+ + "\u8000\uaab6\u8000\uaab9\u8000\uaabd\u8000\uaac0\u8000\uaac0\u8000\uaac2"
+ + "\u8000\uaac2\u8000\uaadb\u8000\uaadd\u8000\uaae0\u8000\uaaea\u8000\uaaf2"
+ + "\u8000\uaaf4\u8000\uab01\u8000\uab06\u8000\uab09\u8000\uab0e\u8000\uab11"
+ + "\u8000\uab16\u8000\uab20\u8000\uab26\u8000\uab28\u8000\uab2e\u8000\uab30"
+ + "\u8000\uab5a\u8000\uab5c\u8000\uab69\u8000\uab70\u8000\uabe2\u8000\uac00"
+ + "\u8000\ud7a3\u8000\ud7b0\u8000\ud7c6\u8000\ud7cb\u8000\ud7fb\u8000\uf900"
+ + "\u8000\ufa6d\u8000\ufa70\u8000\ufad9\u8000\ufb00\u8000\ufb06\u8000\ufb13"
+ + "\u8000\ufb17\u8000\ufb1d\u8000\ufb1d\u8000\ufb1f\u8000\ufb28\u8000\ufb2a"
+ + "\u8000\ufb36\u8000\ufb38\u8000\ufb3c\u8000\ufb3e\u8000\ufb3e\u8000\ufb40"
+ + "\u8000\ufb41\u8000\ufb43\u8000\ufb44\u8000\ufb46\u8000\ufbb1\u8000\ufbd3"
+ + "\u8000\ufd3d\u8000\ufd50\u8000\ufd8f\u8000\ufd92\u8000\ufdc7\u8000\ufdf0"
+ + "\u8000\ufdfb\u8000\ufe70\u8000\ufe74\u8000\ufe76\u8000\ufefc\u8000\uff21"
+ + "\u8000\uff3a\u8000\uff41\u8000\uff5a\u8000\uff66\u8000\uffbe\u8000\uffc2"
+ + "\u8000\uffc7\u8000\uffca\u8000\uffcf\u8000\uffd2\u8000\uffd7\u8000\uffda"
+ + "\u8000\uffdc\u8001\u0000\u8001\u000b\u8001\r\u8001&\u8001(\u8001:\u8001"
+ + "<\u8001=\u8001?\u8001M\u8001P\u8001]\u8001\u0080\u8001\u00fa\u8001\u0140"
+ + "\u8001\u0174\u8001\u0280\u8001\u029c\u8001\u02a0\u8001\u02d0\u8001\u0300"
+ + "\u8001\u031f\u8001\u032d\u8001\u034a\u8001\u0350\u8001\u0375\u8001\u0380"
+ + "\u8001\u039d\u8001\u03a0\u8001\u03c3\u8001\u03c8\u8001\u03cf\u8001\u03d1"
+ + "\u8001\u03d5\u8001\u0400\u8001\u049d\u8001\u04b0\u8001\u04d3\u8001\u04d8"
+ + "\u8001\u04fb\u8001\u0500\u8001\u0527\u8001\u0530\u8001\u0563\u8001\u0570"
+ + "\u8001\u057a\u8001\u057c\u8001\u058a\u8001\u058c\u8001\u0592\u8001\u0594"
+ + "\u8001\u0595\u8001\u0597\u8001\u05a1\u8001\u05a3\u8001\u05b1\u8001\u05b3"
+ + "\u8001\u05b9\u8001\u05bb\u8001\u05bc\u8001\u0600\u8001\u0736\u8001\u0740"
+ + "\u8001\u0755\u8001\u0760\u8001\u0767\u8001\u0780\u8001\u0785\u8001\u0787"
+ + "\u8001\u07b0\u8001\u07b2\u8001\u07ba\u8001\u0800\u8001\u0805\u8001\u0808"
+ + "\u8001\u0808\u8001\u080a\u8001\u0835\u8001\u0837\u8001\u0838\u8001\u083c"
+ + "\u8001\u083c\u8001\u083f\u8001\u0855\u8001\u0860\u8001\u0876\u8001\u0880"
+ + "\u8001\u089e\u8001\u08e0\u8001\u08f2\u8001\u08f4\u8001\u08f5\u8001\u0900"
+ + "\u8001\u0915\u8001\u0920\u8001\u0939\u8001\u0980\u8001\u09b7\u8001\u09be"
+ + "\u8001\u09bf\u8001\u0a00\u8001\u0a00\u8001\u0a10\u8001\u0a13\u8001\u0a15"
+ + "\u8001\u0a17\u8001\u0a19\u8001\u0a35\u8001\u0a60\u8001\u0a7c\u8001\u0a80"
+ + "\u8001\u0a9c\u8001\u0ac0\u8001\u0ac7\u8001\u0ac9\u8001\u0ae4\u8001\u0b00"
+ + "\u8001\u0b35\u8001\u0b40\u8001\u0b55\u8001\u0b60\u8001\u0b72\u8001\u0b80"
+ + "\u8001\u0b91\u8001\u0c00\u8001\u0c48\u8001\u0c80\u8001\u0cb2\u8001\u0cc0"
+ + "\u8001\u0cf2\u8001\u0d00\u8001\u0d23\u8001\u0e80\u8001\u0ea9\u8001\u0eb0"
+ + "\u8001\u0eb1\u8001\u0f00\u8001\u0f1c\u8001\u0f27\u8001\u0f27\u8001\u0f30"
+ + "\u8001\u0f45\u8001\u0f70\u8001\u0f81\u8001\u0fb0\u8001\u0fc4\u8001\u0fe0"
+ + "\u8001\u0ff6\u8001\u1003\u8001\u1037\u8001\u1071\u8001\u1072\u8001\u1075"
+ + "\u8001\u1075\u8001\u1083\u8001\u10af\u8001\u10d0\u8001\u10e8\u8001\u1103"
+ + "\u8001\u1126\u8001\u1144\u8001\u1144\u8001\u1147\u8001\u1147\u8001\u1150"
+ + "\u8001\u1172\u8001\u1176\u8001\u1176\u8001\u1183\u8001\u11b2\u8001\u11c1"
+ + "\u8001\u11c4\u8001\u11da\u8001\u11da\u8001\u11dc\u8001\u11dc\u8001\u1200"
+ + "\u8001\u1211\u8001\u1213\u8001\u122b\u8001\u123f\u8001\u1240\u8001\u1280"
+ + "\u8001\u1286\u8001\u1288\u8001\u1288\u8001\u128a\u8001\u128d\u8001\u128f"
+ + "\u8001\u129d\u8001\u129f\u8001\u12a8\u8001\u12b0\u8001\u12de\u8001\u1305"
+ + "\u8001\u130c\u8001\u130f\u8001\u1310\u8001\u1313\u8001\u1328\u8001\u132a"
+ + "\u8001\u1330\u8001\u1332\u8001\u1333\u8001\u1335\u8001\u1339\u8001\u133d"
+ + "\u8001\u133d\u8001\u1350\u8001\u1350\u8001\u135d\u8001\u1361\u8001\u1400"
+ + "\u8001\u1434\u8001\u1447\u8001\u144a\u8001\u145f\u8001\u1461\u8001\u1480"
+ + "\u8001\u14af\u8001\u14c4\u8001\u14c5\u8001\u14c7\u8001\u14c7\u8001\u1580"
+ + "\u8001\u15ae\u8001\u15d8\u8001\u15db\u8001\u1600\u8001\u162f\u8001\u1644"
+ + "\u8001\u1644\u8001\u1680\u8001\u16aa\u8001\u16b8\u8001\u16b8\u8001\u1700"
+ + "\u8001\u171a\u8001\u1740\u8001\u1746\u8001\u1800\u8001\u182b\u8001\u18a0"
+ + "\u8001\u18df\u8001\u18ff\u8001\u1906\u8001\u1909\u8001\u1909\u8001\u190c"
+ + "\u8001\u1913\u8001\u1915\u8001\u1916\u8001\u1918\u8001\u192f\u8001\u193f"
+ + "\u8001\u193f\u8001\u1941\u8001\u1941\u8001\u19a0\u8001\u19a7\u8001\u19aa"
+ + "\u8001\u19d0\u8001\u19e1\u8001\u19e1\u8001\u19e3\u8001\u19e3\u8001\u1a00"
+ + "\u8001\u1a00\u8001\u1a0b\u8001\u1a32\u8001\u1a3a\u8001\u1a3a\u8001\u1a50"
+ + "\u8001\u1a50\u8001\u1a5c\u8001\u1a89\u8001\u1a9d\u8001\u1a9d\u8001\u1ab0"
+ + "\u8001\u1af8\u8001\u1c00\u8001\u1c08\u8001\u1c0a\u8001\u1c2e\u8001\u1c40"
+ + "\u8001\u1c40\u8001\u1c72\u8001\u1c8f\u8001\u1d00\u8001\u1d06\u8001\u1d08"
+ + "\u8001\u1d09\u8001\u1d0b\u8001\u1d30\u8001\u1d46\u8001\u1d46\u8001\u1d60"
+ + "\u8001\u1d65\u8001\u1d67\u8001\u1d68\u8001\u1d6a\u8001\u1d89\u8001\u1d98"
+ + "\u8001\u1d98\u8001\u1ee0\u8001\u1ef2\u8001\u1f02\u8001\u1f02\u8001\u1f04"
+ + "\u8001\u1f10\u8001\u1f12\u8001\u1f33\u8001\u1fb0\u8001\u1fb0\u8001\u2000"
+ + "\u8001\u2399\u8001\u2400\u8001\u246e\u8001\u2480\u8001\u2543\u8001\u2f90"
+ + "\u8001\u2ff0\u8001\u3000\u8001\u342f\u8001\u3441\u8001\u3446\u8001\u4400"
+ + "\u8001\u4646\u8001\u6800\u8001\u6a38\u8001\u6a40\u8001\u6a5e\u8001\u6a70"
+ + "\u8001\u6abe\u8001\u6ad0\u8001\u6aed\u8001\u6b00\u8001\u6b2f\u8001\u6b40"
+ + "\u8001\u6b43\u8001\u6b63\u8001\u6b77\u8001\u6b7d\u8001\u6b8f\u8001\u6e40"
+ + "\u8001\u6e7f\u8001\u6f00\u8001\u6f4a\u8001\u6f50\u8001\u6f50\u8001\u6f93"
+ + "\u8001\u6f9f\u8001\u6fe0\u8001\u6fe1\u8001\u6fe3\u8001\u6fe3\u8001\u7000"
+ + "\u8001\u87f7\u8001\u8800\u8001\u8cd5\u8001\u8d00\u8001\u8d08\u8001\uaff0"
+ + "\u8001\uaff3\u8001\uaff5\u8001\uaffb\u8001\uaffd\u8001\uaffe\u8001\ub000"
+ + "\u8001\ub122\u8001\ub132\u8001\ub132\u8001\ub150\u8001\ub152\u8001\ub155"
+ + "\u8001\ub155\u8001\ub164\u8001\ub167\u8001\ub170\u8001\ub2fb\u8001\ubc00"
+ + "\u8001\ubc6a\u8001\ubc70\u8001\ubc7c\u8001\ubc80\u8001\ubc88\u8001\ubc90"
+ + "\u8001\ubc99\u8001\ud400\u8001\ud454\u8001\ud456\u8001\ud49c\u8001\ud49e"
+ + "\u8001\ud49f\u8001\ud4a2\u8001\ud4a2\u8001\ud4a5\u8001\ud4a6\u8001\ud4a9"
+ + "\u8001\ud4ac\u8001\ud4ae\u8001\ud4b9\u8001\ud4bb\u8001\ud4bb\u8001\ud4bd"
+ + "\u8001\ud4c3\u8001\ud4c5\u8001\ud505\u8001\ud507\u8001\ud50a\u8001\ud50d"
+ + "\u8001\ud514\u8001\ud516\u8001\ud51c\u8001\ud51e\u8001\ud539\u8001\ud53b"
+ + "\u8001\ud53e\u8001\ud540\u8001\ud544\u8001\ud546\u8001\ud546\u8001\ud54a"
+ + "\u8001\ud550\u8001\ud552\u8001\ud6a5\u8001\ud6a8\u8001\ud6c0\u8001\ud6c2"
+ + "\u8001\ud6da\u8001\ud6dc\u8001\ud6fa\u8001\ud6fc\u8001\ud714\u8001\ud716"
+ + "\u8001\ud734\u8001\ud736\u8001\ud74e\u8001\ud750\u8001\ud76e\u8001\ud770"
+ + "\u8001\ud788\u8001\ud78a\u8001\ud7a8\u8001\ud7aa\u8001\ud7c2\u8001\ud7c4"
+ + "\u8001\ud7cb\u8001\udf00\u8001\udf1e\u8001\udf25\u8001\udf2a\u8001\ue030"
+ + "\u8001\ue06d\u8001\ue100\u8001\ue12c\u8001\ue137\u8001\ue13d\u8001\ue14e"
+ + "\u8001\ue14e\u8001\ue290\u8001\ue2ad\u8001\ue2c0\u8001\ue2eb\u8001\ue4d0"
+ + "\u8001\ue4eb\u8001\ue7e0\u8001\ue7e6\u8001\ue7e8\u8001\ue7eb\u8001\ue7ed"
+ + "\u8001\ue7ee\u8001\ue7f0\u8001\ue7fe\u8001\ue800\u8001\ue8c4\u8001\ue900"
+ + "\u8001\ue943\u8001\ue94b\u8001\ue94b\u8001\uee00\u8001\uee03\u8001\uee05"
+ + "\u8001\uee1f\u8001\uee21\u8001\uee22\u8001\uee24\u8001\uee24\u8001\uee27"
+ + "\u8001\uee27\u8001\uee29\u8001\uee32\u8001\uee34\u8001\uee37\u8001\uee39"
+ + "\u8001\uee39\u8001\uee3b\u8001\uee3b\u8001\uee42\u8001\uee42\u8001\uee47"
+ + "\u8001\uee47\u8001\uee49\u8001\uee49\u8001\uee4b\u8001\uee4b\u8001\uee4d"
+ + "\u8001\uee4f\u8001\uee51\u8001\uee52\u8001\uee54\u8001\uee54\u8001\uee57"
+ + "\u8001\uee57\u8001\uee59\u8001\uee59\u8001\uee5b\u8001\uee5b\u8001\uee5d"
+ + "\u8001\uee5d\u8001\uee5f\u8001\uee5f\u8001\uee61\u8001\uee62\u8001\uee64"
+ + "\u8001\uee64\u8001\uee67\u8001\uee6a\u8001\uee6c\u8001\uee72\u8001\uee74"
+ + "\u8001\uee77\u8001\uee79\u8001\uee7c\u8001\uee7e\u8001\uee7e\u8001\uee80"
+ + "\u8001\uee89\u8001\uee8b\u8001\uee9b\u8001\ueea1\u8001\ueea3\u8001\ueea5"
+ + "\u8001\ueea9\u8001\ueeab\u8001\ueebb\u8002\u0000\u8002\ua6df\u8002\ua700"
+ + "\u8002\ub739\u8002\ub740\u8002\ub81d\u8002\ub820\u8002\ucea1\u8002\uceb0"
+ + "\u8002\uebe0\u8002\uf800\u8002\ufa1d\u8003\u0000\u8003\u134a\u8003\u1350"
+ + "\u8003\u23af\u03fc\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\u0000"
+ + "3\u0001\u0000\u0000\u0000\u00005\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\u0000"
+ + "A\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\u0000M\u0001\u0000\u0000\u0000\u0000"
+ + "O\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_\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\u0000"
+ + "k\u0001\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001"
+ + "\u0000\u0000\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000"
+ + "\u0000\u0000u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000"
+ + "y\u0001\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001"
+ + "\u0000\u0000\u0000\u0000\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\u0001\u0127\u0001\u0000\u0000\u0000\u0003\u0129\u0001"
+ + "\u0000\u0000\u0000\u0005\u012b\u0001\u0000\u0000\u0000\u0007\u012d\u0001"
+ + "\u0000\u0000\u0000\t\u0130\u0001\u0000\u0000\u0000\u000b\u0132\u0001\u0000"
+ + "\u0000\u0000\r\u0134\u0001\u0000\u0000\u0000\u000f\u0136\u0001\u0000\u0000"
+ + "\u0000\u0011\u0138\u0001\u0000\u0000\u0000\u0013\u013a\u0001\u0000\u0000"
+ + "\u0000\u0015\u013c\u0001\u0000\u0000\u0000\u0017\u013e\u0001\u0000\u0000"
+ + "\u0000\u0019\u0141\u0001\u0000\u0000\u0000\u001b\u0144\u0001\u0000\u0000"
+ + "\u0000\u001d\u0146\u0001\u0000\u0000\u0000\u001f\u0148\u0001\u0000\u0000"
+ + "\u0000!\u014b\u0001\u0000\u0000\u0000#\u014e\u0001\u0000\u0000\u0000%"
+ + "\u0150\u0001\u0000\u0000\u0000\'\u0152\u0001\u0000\u0000\u0000)\u0154"
+ + "\u0001\u0000\u0000\u0000+\u0156\u0001\u0000\u0000\u0000-\u0158\u0001\u0000"
+ + "\u0000\u0000/\u015a\u0001\u0000\u0000\u00001\u015c\u0001\u0000\u0000\u0000"
+ + "3\u015e\u0001\u0000\u0000\u00005\u0160\u0001\u0000\u0000\u00007\u0162"
+ + "\u0001\u0000\u0000\u00009\u0164\u0001\u0000\u0000\u0000;\u0166\u0001\u0000"
+ + "\u0000\u0000=\u0168\u0001\u0000\u0000\u0000?\u016a\u0001\u0000\u0000\u0000"
+ + "A\u016c\u0001\u0000\u0000\u0000C\u016e\u0001\u0000\u0000\u0000E\u0170"
+ + "\u0001\u0000\u0000\u0000G\u0172\u0001\u0000\u0000\u0000I\u0174\u0001\u0000"
+ + "\u0000\u0000K\u0176\u0001\u0000\u0000\u0000M\u0178\u0001\u0000\u0000\u0000"
+ + "O\u017a\u0001\u0000\u0000\u0000Q\u017c\u0001\u0000\u0000\u0000S\u017e"
+ + "\u0001\u0000\u0000\u0000U\u0180\u0001\u0000\u0000\u0000W\u0182\u0001\u0000"
+ + "\u0000\u0000Y\u0184\u0001\u0000\u0000\u0000[\u0186\u0001\u0000\u0000\u0000"
+ + "]\u018c\u0001\u0000\u0000\u0000_\u0190\u0001\u0000\u0000\u0000a\u0199"
+ + "\u0001\u0000\u0000\u0000c\u019f\u0001\u0000\u0000\u0000e\u01a6\u0001\u0000"
+ + "\u0000\u0000g\u01a9\u0001\u0000\u0000\u0000i\u01af\u0001\u0000\u0000\u0000"
+ + "k\u01b2\u0001\u0000\u0000\u0000m\u01b9\u0001\u0000\u0000\u0000o\u01bd"
+ + "\u0001\u0000\u0000\u0000q\u01c4\u0001\u0000\u0000\u0000s\u01cb\u0001\u0000"
+ + "\u0000\u0000u\u01d2\u0001\u0000\u0000\u0000w\u01d7\u0001\u0000\u0000\u0000"
+ + "y\u01dd\u0001\u0000\u0000\u0000{\u01e2\u0001\u0000\u0000\u0000}\u01e9"
+ + "\u0001\u0000\u0000\u0000\u007f\u01f2\u0001\u0000\u0000\u0000\u0081\u01f8"
+ + "\u0001\u0000\u0000\u0000\u0083\u01fb\u0001\u0000\u0000\u0000\u0085\u0200"
+ + "\u0001\u0000\u0000\u0000\u0087\u0206\u0001\u0000\u0000\u0000\u0089\u0210"
+ + "\u0001\u0000\u0000\u0000\u008b\u0214\u0001\u0000\u0000\u0000\u008d\u021f"
+ + "\u0001\u0000\u0000\u0000\u008f\u0224\u0001\u0000\u0000\u0000\u0091\u022a"
+ + "\u0001\u0000\u0000\u0000\u0093\u022d\u0001\u0000\u0000\u0000\u0095\u0231"
+ + "\u0001\u0000\u0000\u0000\u0097\u0235\u0001\u0000\u0000\u0000\u0099\u0239"
+ + "\u0001\u0000\u0000\u0000\u009b\u0240\u0001\u0000\u0000\u0000\u009d\u0245"
+ + "\u0001\u0000\u0000\u0000\u009f\u024e\u0001\u0000\u0000\u0000\u00a1\u0251"
+ + "\u0001\u0000\u0000\u0000\u00a3\u0254\u0001\u0000\u0000\u0000\u00a5\u0259"
+ + "\u0001\u0000\u0000\u0000\u00a7\u025f\u0001\u0000\u0000\u0000\u00a9\u0264"
+ + "\u0001\u0000\u0000\u0000\u00ab\u0269\u0001\u0000\u0000\u0000\u00ad\u026d"
+ + "\u0001\u0000\u0000\u0000\u00af\u0272\u0001\u0000\u0000\u0000\u00b1\u0277"
+ + "\u0001\u0000\u0000\u0000\u00b3\u027b\u0001\u0000\u0000\u0000\u00b5\u0280"
+ + "\u0001\u0000\u0000\u0000\u00b7\u0287\u0001\u0000\u0000\u0000\u00b9\u028e"
+ + "\u0001\u0000\u0000\u0000\u00bb\u0293\u0001\u0000\u0000\u0000\u00bd\u0299"
+ + "\u0001\u0000\u0000\u0000\u00bf\u02a9\u0001\u0000\u0000\u0000\u00c1\u02ab"
+ + "\u0001\u0000\u0000\u0000\u00c3\u02b4\u0001\u0000\u0000\u0000\u00c5\u02b8"
+ + "\u0001\u0000\u0000\u0000\u00c7\u02bc\u0001\u0000\u0000\u0000\u00c9\u02c0"
+ + "\u0001\u0000\u0000\u0000\u00cb\u02c2\u0001\u0000\u0000\u0000\u00cd\u02c6"
+ + "\u0001\u0000\u0000\u0000\u00cf\u02c8\u0001\u0000\u0000\u0000\u00d1\u02e0"
+ + "\u0001\u0000\u0000\u0000\u00d3\u02ee\u0001\u0000\u0000\u0000\u00d5\u0309"
+ + "\u0001\u0000\u0000\u0000\u00d7\u030b\u0001\u0000\u0000\u0000\u00d9\u031f"
+ + "\u0001\u0000\u0000\u0000\u00db\u032a\u0001\u0000\u0000\u0000\u00dd\u032d"
+ + "\u0001\u0000\u0000\u0000\u00df\u0331\u0001\u0000\u0000\u0000\u00e1\u0339"
+ + "\u0001\u0000\u0000\u0000\u00e3\u0340\u0001\u0000\u0000\u0000\u00e5\u034a"
+ + "\u0001\u0000\u0000\u0000\u00e7\u0351\u0001\u0000\u0000\u0000\u00e9\u0354"
+ + "\u0001\u0000\u0000\u0000\u00eb\u0358\u0001\u0000\u0000\u0000\u00ed\u035d"
+ + "\u0001\u0000\u0000\u0000\u00ef\u0364\u0001\u0000\u0000\u0000\u00f1\u036c"
+ + "\u0001\u0000\u0000\u0000\u00f3\u0375\u0001\u0000\u0000\u0000\u00f5\u0379"
+ + "\u0001\u0000\u0000\u0000\u00f7\u0383\u0001\u0000\u0000\u0000\u00f9\u0388"
+ + "\u0001\u0000\u0000\u0000\u00fb\u0398\u0001\u0000\u0000\u0000\u00fd\u03b7"
+ + "\u0001\u0000\u0000\u0000\u00ff\u03b9\u0001\u0000\u0000\u0000\u0101\u03bb"
+ + "\u0001\u0000\u0000\u0000\u0103\u03bd\u0001\u0000\u0000\u0000\u0105\u03bf"
+ + "\u0001\u0000\u0000\u0000\u0107\u03c1\u0001\u0000\u0000\u0000\u0109\u03c3"
+ + "\u0001\u0000\u0000\u0000\u010b\u03c5\u0001\u0000\u0000\u0000\u010d\u03c7"
+ + "\u0001\u0000\u0000\u0000\u010f\u03c9\u0001\u0000\u0000\u0000\u0111\u03cb"
+ + "\u0001\u0000\u0000\u0000\u0113\u03cd\u0001\u0000\u0000\u0000\u0115\u03cf"
+ + "\u0001\u0000\u0000\u0000\u0117\u03d1\u0001\u0000\u0000\u0000\u0119\u03d3"
+ + "\u0001\u0000\u0000\u0000\u011b\u03d5\u0001\u0000\u0000\u0000\u011d\u03d7"
+ + "\u0001\u0000\u0000\u0000\u011f\u03d9\u0001\u0000\u0000\u0000\u0121\u03db"
+ + "\u0001\u0000\u0000\u0000\u0123\u03dd\u0001\u0000\u0000\u0000\u0125\u03df"
+ + "\u0001\u0000\u0000\u0000\u0127\u0128\u0005;\u0000\u0000\u0128\u0002\u0001"
+ + "\u0000\u0000\u0000\u0129\u012a\u0005,\u0000\u0000\u012a\u0004\u0001\u0000"
+ + "\u0000\u0000\u012b\u012c\u0005=\u0000\u0000\u012c\u0006\u0001\u0000\u0000"
+ + "\u0000\u012d\u012e\u0005+\u0000\u0000\u012e\u012f\u0005=\u0000\u0000\u012f"
+ + "\b\u0001\u0000\u0000\u0000\u0130\u0131\u0005*\u0000\u0000\u0131\n\u0001"
+ + "\u0000\u0000\u0000\u0132\u0133\u0005(\u0000\u0000\u0133\f\u0001\u0000"
+ + "\u0000\u0000\u0134\u0135\u0005)\u0000\u0000\u0135\u000e\u0001\u0000\u0000"
+ + "\u0000\u0136\u0137\u0005[\u0000\u0000\u0137\u0010\u0001\u0000\u0000\u0000"
+ + "\u0138\u0139\u0005]\u0000\u0000\u0139\u0012\u0001\u0000\u0000\u0000\u013a"
+ + "\u013b\u0005:\u0000\u0000\u013b\u0014\u0001\u0000\u0000\u0000\u013c\u013d"
+ + "\u0005|\u0000\u0000\u013d\u0016\u0001\u0000\u0000\u0000\u013e\u013f\u0005"
+ + ".\u0000\u0000\u013f\u0140\u0005.\u0000\u0000\u0140\u0018\u0001\u0000\u0000"
+ + "\u0000\u0141\u0142\u0005<\u0000\u0000\u0142\u0143\u0005>\u0000\u0000\u0143"
+ + "\u001a\u0001\u0000\u0000\u0000\u0144\u0145\u0005<\u0000\u0000\u0145\u001c"
+ + "\u0001\u0000\u0000\u0000\u0146\u0147\u0005>\u0000\u0000\u0147\u001e\u0001"
+ + "\u0000\u0000\u0000\u0148\u0149\u0005<\u0000\u0000\u0149\u014a\u0005=\u0000"
+ + "\u0000\u014a \u0001\u0000\u0000\u0000\u014b\u014c\u0005>\u0000\u0000\u014c"
+ + "\u014d\u0005=\u0000\u0000\u014d\"\u0001\u0000\u0000\u0000\u014e\u014f"
+ + "\u0005+\u0000\u0000\u014f$\u0001\u0000\u0000\u0000\u0150\u0151\u0005-"
+ + "\u0000\u0000\u0151&\u0001\u0000\u0000\u0000\u0152\u0153\u0005/\u0000\u0000"
+ + "\u0153(\u0001\u0000\u0000\u0000\u0154\u0155\u0005%\u0000\u0000\u0155*"
+ + "\u0001\u0000\u0000\u0000\u0156\u0157\u0005^\u0000\u0000\u0157,\u0001\u0000"
+ + "\u0000\u0000\u0158\u0159\u0005.\u0000\u0000\u0159.\u0001\u0000\u0000\u0000"
+ + "\u015a\u015b\u0005{\u0000\u0000\u015b0\u0001\u0000\u0000\u0000\u015c\u015d"
+ + "\u0005}\u0000\u0000\u015d2\u0001\u0000\u0000\u0000\u015e\u015f\u0005$"
+ + "\u0000\u0000\u015f4\u0001\u0000\u0000\u0000\u0160\u0161\u0005\u27e8\u0000"
+ + "\u0000\u01616\u0001\u0000\u0000\u0000\u0162\u0163\u0005\u3008\u0000\u0000"
+ + "\u01638\u0001\u0000\u0000\u0000\u0164\u0165\u0005\u8000\ufe64\u0000\u0000"
+ + "\u0165:\u0001\u0000\u0000\u0000\u0166\u0167\u0005\u8000\uff1c\u0000\u0000"
+ + "\u0167<\u0001\u0000\u0000\u0000\u0168\u0169\u0005\u27e9\u0000\u0000\u0169"
+ + ">\u0001\u0000\u0000\u0000\u016a\u016b\u0005\u3009\u0000\u0000\u016b@\u0001"
+ + "\u0000\u0000\u0000\u016c\u016d\u0005\u8000\ufe65\u0000\u0000\u016dB\u0001"
+ + "\u0000\u0000\u0000\u016e\u016f\u0005\u8000\uff1e\u0000\u0000\u016fD\u0001"
+ + "\u0000\u0000\u0000\u0170\u0171\u0005\u00ad\u0000\u0000\u0171F\u0001\u0000"
+ + "\u0000\u0000\u0172\u0173\u0005\u2010\u0000\u0000\u0173H\u0001\u0000\u0000"
+ + "\u0000\u0174\u0175\u0005\u2011\u0000\u0000\u0175J\u0001\u0000\u0000\u0000"
+ + "\u0176\u0177\u0005\u2012\u0000\u0000\u0177L\u0001\u0000\u0000\u0000\u0178"
+ + "\u0179\u0005\u2013\u0000\u0000\u0179N\u0001\u0000\u0000\u0000\u017a\u017b"
+ + "\u0005\u2014\u0000\u0000\u017bP\u0001\u0000\u0000\u0000\u017c\u017d\u0005"
+ + "\u2015\u0000\u0000\u017dR\u0001\u0000\u0000\u0000\u017e\u017f\u0005\u2212"
+ + "\u0000\u0000\u017fT\u0001\u0000\u0000\u0000\u0180\u0181\u0005\u8000\ufe58"
+ + "\u0000\u0000\u0181V\u0001\u0000\u0000\u0000\u0182\u0183\u0005\u8000\ufe63"
+ + "\u0000\u0000\u0183X\u0001\u0000\u0000\u0000\u0184\u0185\u0005\u8000\uff0d"
+ + "\u0000\u0000\u0185Z\u0001\u0000\u0000\u0000\u0186\u0187\u0007\u0000\u0000"
+ + "\u0000\u0187\u0188\u0007\u0001\u0000\u0000\u0188\u0189\u0007\u0002\u0000"
+ + "\u0000\u0189\u018a\u0007\u0003\u0000\u0000\u018a\u018b\u0007\u0001\u0000"
+ + "\u0000\u018b\\\u0001\u0000\u0000\u0000\u018c\u018d\u0007\u0004\u0000\u0000"
+ + "\u018d\u018e\u0007\u0005\u0000\u0000\u018e\u018f\u0007\u0005\u0000\u0000"
+ + "\u018f^\u0001\u0000\u0000\u0000\u0190\u0191\u0007\u0003\u0000\u0000\u0191"
+ + "\u0192\u0007\u0006\u0000\u0000\u0192\u0193\u0007\u0007\u0000\u0000\u0193"
+ + "\u0194\u0007\u0002\u0000\u0000\u0194\u0195\u0007\u0003\u0000\u0000\u0195"
+ + "\u0196\u0007\u0001\u0000\u0000\u0196\u0197\u0007\u0004\u0000\u0000\u0197"
+ + "\u0198\u0007\u0005\u0000\u0000\u0198`\u0001\u0000\u0000\u0000\u0199\u019a"
+ + "\u0007\b\u0000\u0000\u019a\u019b\u0007\u0004\u0000\u0000\u019b\u019c\u0007"
+ + "\u0007\u0000\u0000\u019c\u019d\u0007\t\u0000\u0000\u019d\u019e\u0007\n"
+ + "\u0000\u0000\u019eb\u0001\u0000\u0000\u0000\u019f\u01a0\u0007\u0000\u0000"
+ + "\u0000\u01a0\u01a1\u0007\u0001\u0000\u0000\u01a1\u01a2\u0007\u000b\u0000"
+ + "\u0000\u01a2\u01a3\u0007\u0002\u0000\u0000\u01a3\u01a4\u0007\u0001\u0000"
+ + "\u0000\u01a4\u01a5\u0007\f\u0000\u0000\u01a5d\u0001\u0000\u0000\u0000"
+ + "\u01a6\u01a7\u0007\u0004\u0000\u0000\u01a7\u01a8\u0007\r\u0000\u0000\u01a8"
+ + "f\u0001\u0000\u0000\u0000\u01a9\u01aa\u0007\b\u0000\u0000\u01aa\u01ab"
+ + "\u0007\u000e\u0000\u0000\u01ab\u01ac\u0007\u000f\u0000\u0000\u01ac\u01ad"
+ + "\u0007\u0010\u0000\u0000\u01ad\u01ae\u0007\u000e\u0000\u0000\u01aeh\u0001"
+ + "\u0000\u0000\u0000\u01af\u01b0\u0007\u0003\u0000\u0000\u01b0\u01b1\u0007"
+ + "\u0001\u0000\u0000\u01b1j\u0001\u0000\u0000\u0000\u01b2\u01b3\u0007\t"
+ + "\u0000\u0000\u01b3\u01b4\u0007\u000f\u0000\u0000\u01b4\u01b5\u0007\u000e"
+ + "\u0000\u0000\u01b5\u01b6\u0007\u0004\u0000\u0000\u01b6\u01b7\u0007\u0007"
+ + "\u0000\u0000\u01b7\u01b8\u0007\u000e\u0000\u0000\u01b8l\u0001\u0000\u0000"
+ + "\u0000\u01b9\u01ba\u0007\r\u0000\u0000\u01ba\u01bb\u0007\u000e\u0000\u0000"
+ + "\u01bb\u01bc\u0007\u0007\u0000\u0000\u01bcn\u0001\u0000\u0000\u0000\u01bd"
+ + "\u01be\u0007\f\u0000\u0000\u01be\u01bf\u0007\u000e\u0000\u0000\u01bf\u01c0"
+ + "\u0007\u0007\u0000\u0000\u01c0\u01c1\u0007\u0004\u0000\u0000\u01c1\u01c2"
+ + "\u0007\t\u0000\u0000\u01c2\u01c3\u0007\n\u0000\u0000\u01c3p\u0001\u0000"
+ + "\u0000\u0000\u01c4\u01c5\u0007\f\u0000\u0000\u01c5\u01c6\u0007\u000e\u0000"
+ + "\u0000\u01c6\u01c7\u0007\u0005\u0000\u0000\u01c7\u01c8\u0007\u000e\u0000"
+ + "\u0000\u01c8\u01c9\u0007\u0007\u0000\u0000\u01c9\u01ca\u0007\u000e\u0000"
+ + "\u0000\u01car\u0001\u0000\u0000\u0000\u01cb\u01cc\u0007\u000f\u0000\u0000"
+ + "\u01cc\u01cd\u0007\u000e\u0000\u0000\u01cd\u01ce\u0007\b\u0000\u0000\u01ce"
+ + "\u01cf\u0007\u0003\u0000\u0000\u01cf\u01d0\u0007\u0011\u0000\u0000\u01d0"
+ + "\u01d1\u0007\u000e\u0000\u0000\u01d1t\u0001\u0000\u0000\u0000\u01d2\u01d3"
+ + "\u0007\t\u0000\u0000\u01d3\u01d4\u0007\u0004\u0000\u0000\u01d4\u01d5\u0007"
+ + "\u0005\u0000\u0000\u01d5\u01d6\u0007\u0005\u0000\u0000\u01d6v\u0001\u0000"
+ + "\u0000\u0000\u01d7\u01d8\u0007\u0012\u0000\u0000\u01d8\u01d9\u0007\u0002"
+ + "\u0000\u0000\u01d9\u01da\u0007\u000e\u0000\u0000\u01da\u01db\u0007\u0005"
+ + "\u0000\u0000\u01db\u01dc\u0007\f\u0000\u0000\u01dcx\u0001\u0000\u0000"
+ + "\u0000\u01dd\u01de\u0007\u000b\u0000\u0000\u01de\u01df\u0007\u0002\u0000"
+ + "\u0000\u01df\u01e0\u0007\u0007\u0000\u0000\u01e0\u01e1\u0007\n\u0000\u0000"
+ + "\u01e1z\u0001\u0000\u0000\u0000\u01e2\u01e3\u0007\u000f\u0000\u0000\u01e3"
+ + "\u01e4\u0007\u000e\u0000\u0000\u01e4\u01e5\u0007\u0007\u0000\u0000\u01e5"
+ + "\u01e6\u0007\u0000\u0000\u0000\u01e6\u01e7\u0007\u000f\u0000\u0000\u01e7"
+ + "\u01e8\u0007\u0001\u0000\u0000\u01e8|\u0001\u0000\u0000\u0000\u01e9\u01ea"
+ + "\u0007\f\u0000\u0000\u01ea\u01eb\u0007\u0002\u0000\u0000\u01eb\u01ec\u0007"
+ + "\r\u0000\u0000\u01ec\u01ed\u0007\u0007\u0000\u0000\u01ed\u01ee\u0007\u0002"
+ + "\u0000\u0000\u01ee\u01ef\u0007\u0001\u0000\u0000\u01ef\u01f0\u0007\t\u0000"
+ + "\u0000\u01f0\u01f1\u0007\u0007\u0000\u0000\u01f1~\u0001\u0000\u0000\u0000"
+ + "\u01f2\u01f3\u0007\u0003\u0000\u0000\u01f3\u01f4\u0007\u000f\u0000\u0000"
+ + "\u01f4\u01f5\u0007\f\u0000\u0000\u01f5\u01f6\u0007\u000e\u0000\u0000\u01f6"
+ + "\u01f7\u0007\u000f\u0000\u0000\u01f7\u0080\u0001\u0000\u0000\u0000\u01f8"
+ + "\u01f9\u0007\u0013\u0000\u0000\u01f9\u01fa\u0007\u0012\u0000\u0000\u01fa"
+ + "\u0082\u0001\u0000\u0000\u0000\u01fb\u01fc\u0007\r\u0000\u0000\u01fc\u01fd"
+ + "\u0007\u0014\u0000\u0000\u01fd\u01fe\u0007\u0002\u0000\u0000\u01fe\u01ff"
+ + "\u0007\u0006\u0000\u0000\u01ff\u0084\u0001\u0000\u0000\u0000\u0200\u0201"
+ + "\u0007\u0005\u0000\u0000\u0201\u0202\u0007\u0002\u0000\u0000\u0202\u0203"
+ + "\u0007\b\u0000\u0000\u0203\u0204\u0007\u0002\u0000\u0000\u0204\u0205\u0007"
+ + "\u0007\u0000\u0000\u0205\u0086\u0001\u0000\u0000\u0000\u0206\u0207\u0007"
+ + "\u0004\u0000\u0000\u0207\u0208\u0007\r\u0000\u0000\u0208\u0209\u0007\t"
+ + "\u0000\u0000\u0209\u020a\u0007\u000e\u0000\u0000\u020a\u020b\u0007\u0001"
+ + "\u0000\u0000\u020b\u020c\u0007\f\u0000\u0000\u020c\u020d\u0007\u0002\u0000"
+ + "\u0000\u020d\u020e\u0007\u0001\u0000\u0000\u020e\u020f\u0007\u0010\u0000"
+ + "\u0000\u020f\u0088\u0001\u0000\u0000\u0000\u0210\u0211\u0007\u0004\u0000"
+ + "\u0000\u0211\u0212\u0007\r\u0000\u0000\u0212\u0213\u0007\t\u0000\u0000"
+ + "\u0213\u008a\u0001\u0000\u0000\u0000\u0214\u0215\u0007\f\u0000\u0000\u0215"
+ + "\u0216\u0007\u000e\u0000\u0000\u0216\u0217\u0007\r\u0000\u0000\u0217\u0218"
+ + "\u0007\t\u0000\u0000\u0218\u0219\u0007\u000e\u0000\u0000\u0219\u021a\u0007"
+ + "\u0001\u0000\u0000\u021a\u021b\u0007\f\u0000\u0000\u021b\u021c\u0007\u0002"
+ + "\u0000\u0000\u021c\u021d\u0007\u0001\u0000\u0000\u021d\u021e\u0007\u0010"
+ + "\u0000\u0000\u021e\u008c\u0001\u0000\u0000\u0000\u021f\u0220\u0007\f\u0000"
+ + "\u0000\u0220\u0221\u0007\u000e\u0000\u0000\u0221\u0222\u0007\r\u0000\u0000"
+ + "\u0222\u0223\u0007\t\u0000\u0000\u0223\u008e\u0001\u0000\u0000\u0000\u0224"
+ + "\u0225\u0007\u000b\u0000\u0000\u0225\u0226\u0007\n\u0000\u0000\u0226\u0227"
+ + "\u0007\u000e\u0000\u0000\u0227\u0228\u0007\u000f\u0000\u0000\u0228\u0229"
+ + "\u0007\u000e\u0000\u0000\u0229\u0090\u0001\u0000\u0000\u0000\u022a\u022b"
+ + "\u0007\u0003\u0000\u0000\u022b\u022c\u0007\u000f\u0000\u0000\u022c\u0092"
+ + "\u0001\u0000\u0000\u0000\u022d\u022e\u0007\u0015\u0000\u0000\u022e\u022f"
+ + "\u0007\u0003\u0000\u0000\u022f\u0230\u0007\u000f\u0000\u0000\u0230\u0094"
+ + "\u0001\u0000\u0000\u0000\u0231\u0232\u0007\u0004\u0000\u0000\u0232\u0233"
+ + "\u0007\u0001\u0000\u0000\u0233\u0234\u0007\f\u0000\u0000\u0234\u0096\u0001"
+ + "\u0000\u0000\u0000\u0235\u0236\u0007\u0001\u0000\u0000\u0236\u0237\u0007"
+ + "\u0003\u0000\u0000\u0237\u0238\u0007\u0007\u0000\u0000\u0238\u0098\u0001"
+ + "\u0000\u0000\u0000\u0239\u023a\u0007\r\u0000\u0000\u023a\u023b\u0007\u0007"
+ + "\u0000\u0000\u023b\u023c\u0007\u0004\u0000\u0000\u023c\u023d\u0007\u000f"
+ + "\u0000\u0000\u023d\u023e\u0007\u0007\u0000\u0000\u023e\u023f\u0007\r\u0000"
+ + "\u0000\u023f\u009a\u0001\u0000\u0000\u0000\u0240\u0241\u0007\u000e\u0000"
+ + "\u0000\u0241\u0242\u0007\u0001\u0000\u0000\u0242\u0243\u0007\f\u0000\u0000"
+ + "\u0243\u0244\u0007\r\u0000\u0000\u0244\u009c\u0001\u0000\u0000\u0000\u0245"
+ + "\u0246\u0007\t\u0000\u0000\u0246\u0247\u0007\u0003\u0000\u0000\u0247\u0248"
+ + "\u0007\u0001\u0000\u0000\u0248\u0249\u0007\u0007\u0000\u0000\u0249\u024a"
+ + "\u0007\u0004\u0000\u0000\u024a\u024b\u0007\u0002\u0000\u0000\u024b\u024c"
+ + "\u0007\u0001\u0000\u0000\u024c\u024d\u0007\r\u0000\u0000\u024d\u009e\u0001"
+ + "\u0000\u0000\u0000\u024e\u024f\u0007\u0002\u0000\u0000\u024f\u0250\u0007"
+ + "\u0001\u0000\u0000\u0250\u00a0\u0001\u0000\u0000\u0000\u0251\u0252\u0007"
+ + "\u0002\u0000\u0000\u0252\u0253\u0007\r\u0000\u0000\u0253\u00a2\u0001\u0000"
+ + "\u0000\u0000\u0254\u0255\u0007\u0001\u0000\u0000\u0255\u0256\u0007\u0000"
+ + "\u0000\u0000\u0256\u0257\u0007\u0005\u0000\u0000\u0257\u0258\u0007\u0005"
+ + "\u0000\u0000\u0258\u00a4\u0001\u0000\u0000\u0000\u0259\u025a\u0007\t\u0000"
+ + "\u0000\u025a\u025b\u0007\u0003\u0000\u0000\u025b\u025c\u0007\u0000\u0000"
+ + "\u0000\u025c\u025d\u0007\u0001\u0000\u0000\u025d\u025e\u0007\u0007\u0000"
+ + "\u0000\u025e\u00a6\u0001\u0000\u0000\u0000\u025f\u0260\u0007\t\u0000\u0000"
+ + "\u0260\u0261\u0007\u0004\u0000\u0000\u0261\u0262\u0007\r\u0000\u0000\u0262"
+ + "\u0263\u0007\u000e\u0000\u0000\u0263\u00a8\u0001\u0000\u0000\u0000\u0264"
+ + "\u0265\u0007\u000e\u0000\u0000\u0265\u0266\u0007\u0005\u0000\u0000\u0266"
+ + "\u0267\u0007\r\u0000\u0000\u0267\u0268\u0007\u000e\u0000\u0000\u0268\u00aa"
+ + "\u0001\u0000\u0000\u0000\u0269\u026a\u0007\u000e\u0000\u0000\u026a\u026b"
+ + "\u0007\u0001\u0000\u0000\u026b\u026c\u0007\f\u0000\u0000\u026c\u00ac\u0001"
+ + "\u0000\u0000\u0000\u026d\u026e\u0007\u000b\u0000\u0000\u026e\u026f\u0007"
+ + "\n\u0000\u0000\u026f\u0270\u0007\u000e\u0000\u0000\u0270\u0271\u0007\u0001"
+ + "\u0000\u0000\u0271\u00ae\u0001\u0000\u0000\u0000\u0272\u0273\u0007\u0007"
+ + "\u0000\u0000\u0273\u0274\u0007\n\u0000\u0000\u0274\u0275\u0007\u000e\u0000"
+ + "\u0000\u0275\u0276\u0007\u0001\u0000\u0000\u0276\u00b0\u0001\u0000\u0000"
+ + "\u0000\u0277\u0278\u0007\u0004\u0000\u0000\u0278\u0279\u0007\u0001\u0000"
+ + "\u0000\u0279\u027a\u0007\u0012\u0000\u0000\u027a\u00b2\u0001\u0000\u0000"
+ + "\u0000\u027b\u027c\u0007\u0001\u0000\u0000\u027c\u027d\u0007\u0003\u0000"
+ + "\u0000\u027d\u027e\u0007\u0001\u0000\u0000\u027e\u027f\u0007\u000e\u0000"
+ + "\u0000\u027f\u00b4\u0001\u0000\u0000\u0000\u0280\u0281\u0007\r\u0000\u0000"
+ + "\u0281\u0282\u0007\u0002\u0000\u0000\u0282\u0283\u0007\u0001\u0000\u0000"
+ + "\u0283\u0284\u0007\u0010\u0000\u0000\u0284\u0285\u0007\u0005\u0000\u0000"
+ + "\u0285\u0286\u0007\u000e\u0000\u0000\u0286\u00b6\u0001\u0000\u0000\u0000"
+ + "\u0287\u0288\u0007\u000e\u0000\u0000\u0288\u0289\u0007\u0015\u0000\u0000"
+ + "\u0289\u028a\u0007\u0002\u0000\u0000\u028a\u028b\u0007\r\u0000\u0000\u028b"
+ + "\u028c\u0007\u0007\u0000\u0000\u028c\u028d\u0007\r\u0000\u0000\u028d\u00b8"
+ + "\u0001\u0000\u0000\u0000\u028e\u028f\u0007\u0007\u0000\u0000\u028f\u0290"
+ + "\u0007\u000f\u0000\u0000\u0290\u0291\u0007\u0000\u0000\u0000\u0291\u0292"
+ + "\u0007\u000e\u0000\u0000\u0292\u00ba\u0001\u0000\u0000\u0000\u0293\u0294"
+ + "\u0007\u0016\u0000\u0000\u0294\u0295\u0007\u0004\u0000\u0000\u0295\u0296"
+ + "\u0007\u0005\u0000\u0000\u0296\u0297\u0007\r\u0000\u0000\u0297\u0298\u0007"
+ + "\u000e\u0000\u0000\u0298\u00bc\u0001\u0000\u0000\u0000\u0299\u029a\u0005"
+ + "0\u0000\u0000\u029a\u029b\u0005x\u0000\u0000\u029b\u029d\u0001\u0000\u0000"
+ + "\u0000\u029c\u029e\u0003\u00c5b\u0000\u029d\u029c\u0001\u0000\u0000\u0000"
+ + "\u029e\u029f\u0001\u0000\u0000\u0000\u029f\u029d\u0001\u0000\u0000\u0000"
+ + "\u029f\u02a0\u0001\u0000\u0000\u0000\u02a0\u00be\u0001\u0000\u0000\u0000"
+ + "\u02a1\u02aa\u0003\u00cfg\u0000\u02a2\u02a6\u0003\u00c9d\u0000\u02a3\u02a5"
+ + "\u0003\u00c7c\u0000\u02a4\u02a3\u0001\u0000\u0000\u0000\u02a5\u02a8\u0001"
+ + "\u0000\u0000\u0000\u02a6\u02a4\u0001\u0000\u0000\u0000\u02a6\u02a7\u0001"
+ + "\u0000\u0000\u0000\u02a7\u02aa\u0001\u0000\u0000\u0000\u02a8\u02a6\u0001"
+ + "\u0000\u0000\u0000\u02a9\u02a1\u0001\u0000\u0000\u0000\u02a9\u02a2\u0001"
+ + "\u0000\u0000\u0000\u02aa\u00c0\u0001\u0000\u0000\u0000\u02ab\u02ac\u0005"
+ + "0\u0000\u0000\u02ac\u02ad\u0005o\u0000\u0000\u02ad\u02af\u0001\u0000\u0000"
+ + "\u0000\u02ae\u02b0\u0003\u00cdf\u0000\u02af\u02ae\u0001\u0000\u0000\u0000"
+ + "\u02b0\u02b1\u0001\u0000\u0000\u0000\u02b1\u02af\u0001\u0000\u0000\u0000"
+ + "\u02b1\u02b2\u0001\u0000\u0000\u0000\u02b2\u00c2\u0001\u0000\u0000\u0000"
+ + "\u02b3\u02b5\u0007\u0017\u0000\u0000\u02b4\u02b3\u0001\u0000\u0000\u0000"
+ + "\u02b5\u00c4\u0001\u0000\u0000\u0000\u02b6\u02b9\u0003\u00c7c\u0000\u02b7"
+ + "\u02b9\u0003\u00c3a\u0000\u02b8\u02b6\u0001\u0000\u0000\u0000\u02b8\u02b7"
+ + "\u0001\u0000\u0000\u0000\u02b9\u00c6\u0001\u0000\u0000\u0000\u02ba\u02bd"
+ + "\u0003\u00cfg\u0000\u02bb\u02bd\u0003\u00c9d\u0000\u02bc\u02ba\u0001\u0000"
+ + "\u0000\u0000\u02bc\u02bb\u0001\u0000\u0000\u0000\u02bd\u00c8\u0001\u0000"
+ + "\u0000\u0000\u02be\u02c1\u0003\u00cbe\u0000\u02bf\u02c1\u000289\u0000"
+ + "\u02c0\u02be\u0001\u0000\u0000\u0000\u02c0\u02bf\u0001\u0000\u0000\u0000"
+ + "\u02c1\u00ca\u0001\u0000\u0000\u0000\u02c2\u02c3\u000217\u0000\u02c3\u00cc"
+ + "\u0001\u0000\u0000\u0000\u02c4\u02c7\u0003\u00cfg\u0000\u02c5\u02c7\u0003"
+ + "\u00cbe\u0000\u02c6\u02c4\u0001\u0000\u0000\u0000\u02c6\u02c5\u0001\u0000"
+ + "\u0000\u0000\u02c7\u00ce\u0001\u0000\u0000\u0000\u02c8\u02c9\u00050\u0000"
+ + "\u0000\u02c9\u00d0\u0001\u0000\u0000\u0000\u02ca\u02cc\u0003\u00c7c\u0000"
+ + "\u02cb\u02ca\u0001\u0000\u0000\u0000\u02cc\u02cd\u0001\u0000\u0000\u0000"
+ + "\u02cd\u02cb\u0001\u0000\u0000\u0000\u02cd\u02ce\u0001\u0000\u0000\u0000"
+ + "\u02ce\u02e1\u0001\u0000\u0000\u0000\u02cf\u02d1\u0003\u00c7c\u0000\u02d0"
+ + "\u02cf\u0001\u0000\u0000\u0000\u02d1\u02d2\u0001\u0000\u0000\u0000\u02d2"
+ + "\u02d0\u0001\u0000\u0000\u0000\u02d2\u02d3\u0001\u0000\u0000\u0000\u02d3"
+ + "\u02d4\u0001\u0000\u0000\u0000\u02d4\u02d6\u0005.\u0000\u0000\u02d5\u02d7"
+ + "\u0003\u00c7c\u0000\u02d6\u02d5\u0001\u0000\u0000\u0000\u02d7\u02d8\u0001"
+ + "\u0000\u0000\u0000\u02d8\u02d6\u0001\u0000\u0000\u0000\u02d8\u02d9\u0001"
+ + "\u0000\u0000\u0000\u02d9\u02e1\u0001\u0000\u0000\u0000\u02da\u02dc\u0005"
+ + ".\u0000\u0000\u02db\u02dd\u0003\u00c7c\u0000\u02dc\u02db\u0001\u0000\u0000"
+ + "\u0000\u02dd\u02de\u0001\u0000\u0000\u0000\u02de\u02dc\u0001\u0000\u0000"
+ + "\u0000\u02de\u02df\u0001\u0000\u0000\u0000\u02df\u02e1\u0001\u0000\u0000"
+ + "\u0000\u02e0\u02cb\u0001\u0000\u0000\u0000\u02e0\u02d0\u0001\u0000\u0000"
+ + "\u0000\u02e0\u02da\u0001\u0000\u0000\u0000\u02e1\u02e2\u0001\u0000\u0000"
+ + "\u0000\u02e2\u02e4\u0007\u000e\u0000\u0000\u02e3\u02e5\u0005-\u0000\u0000"
+ + "\u02e4\u02e3\u0001\u0000\u0000\u0000\u02e4\u02e5\u0001\u0000\u0000\u0000"
+ + "\u02e5\u02e7\u0001\u0000\u0000\u0000\u02e6\u02e8\u0003\u00c7c\u0000\u02e7"
+ + "\u02e6\u0001\u0000\u0000\u0000\u02e8\u02e9\u0001\u0000\u0000\u0000\u02e9"
+ + "\u02e7\u0001\u0000\u0000\u0000\u02e9\u02ea\u0001\u0000\u0000\u0000\u02ea"
+ + "\u00d2\u0001\u0000\u0000\u0000\u02eb\u02ed\u0003\u00c7c\u0000\u02ec\u02eb"
+ + "\u0001\u0000\u0000\u0000\u02ed\u02f0\u0001\u0000\u0000\u0000\u02ee\u02ec"
+ + "\u0001\u0000\u0000\u0000\u02ee\u02ef\u0001\u0000\u0000\u0000\u02ef\u02f1"
+ + "\u0001\u0000\u0000\u0000\u02f0\u02ee\u0001\u0000\u0000\u0000\u02f1\u02f3"
+ + "\u0005.\u0000\u0000\u02f2\u02f4\u0003\u00c7c\u0000\u02f3\u02f2\u0001\u0000"
+ + "\u0000\u0000\u02f4\u02f5\u0001\u0000\u0000\u0000\u02f5\u02f3\u0001\u0000"
+ + "\u0000\u0000\u02f5\u02f6\u0001\u0000\u0000\u0000\u02f6\u00d4\u0001\u0000"
+ + "\u0000\u0000\u02f7\u02fc\u0005\"\u0000\u0000\u02f8\u02fb\u0003\u011d\u008e"
+ + "\u0000\u02f9\u02fb\u0003\u00d7k\u0000\u02fa\u02f8\u0001\u0000\u0000\u0000"
+ + "\u02fa\u02f9\u0001\u0000\u0000\u0000\u02fb\u02fe\u0001\u0000\u0000\u0000"
+ + "\u02fc\u02fa\u0001\u0000\u0000\u0000\u02fc\u02fd\u0001\u0000\u0000\u0000"
+ + "\u02fd\u02ff\u0001\u0000\u0000\u0000\u02fe\u02fc\u0001\u0000\u0000\u0000"
+ + "\u02ff\u030a\u0005\"\u0000\u0000\u0300\u0305\u0005\'\u0000\u0000\u0301"
+ + "\u0304\u0003\u0109\u0084\u0000\u0302\u0304\u0003\u00d7k\u0000\u0303\u0301"
+ + "\u0001\u0000\u0000\u0000\u0303\u0302\u0001\u0000\u0000\u0000\u0304\u0307"
+ + "\u0001\u0000\u0000\u0000\u0305\u0303\u0001\u0000\u0000\u0000\u0305\u0306"
+ + "\u0001\u0000\u0000\u0000\u0306\u0308\u0001\u0000\u0000\u0000\u0307\u0305"
+ + "\u0001\u0000\u0000\u0000\u0308\u030a\u0005\'\u0000\u0000\u0309\u02f7\u0001"
+ + "\u0000\u0000\u0000\u0309\u0300\u0001\u0000\u0000\u0000\u030a\u00d6\u0001"
+ + "\u0000\u0000\u0000\u030b\u031d\u0005\\\u0000\u0000\u030c\u031e\u0007\u0018"
+ + "\u0000\u0000\u030d\u030e\u0007\u0000\u0000\u0000\u030e\u030f\u0003\u00c5"
+ + "b\u0000\u030f\u0310\u0003\u00c5b\u0000\u0310\u0311\u0003\u00c5b\u0000"
+ + "\u0311\u0312\u0003\u00c5b\u0000\u0312\u031e\u0001\u0000\u0000\u0000\u0313"
+ + "\u0314\u0007\u0000\u0000\u0000\u0314\u0315\u0003\u00c5b\u0000\u0315\u0316"
+ + "\u0003\u00c5b\u0000\u0316\u0317\u0003\u00c5b\u0000\u0317\u0318\u0003\u00c5"
+ + "b\u0000\u0318\u0319\u0003\u00c5b\u0000\u0319\u031a\u0003\u00c5b\u0000"
+ + "\u031a\u031b\u0003\u00c5b\u0000\u031b\u031c\u0003\u00c5b\u0000\u031c\u031e"
+ + "\u0001\u0000\u0000\u0000\u031d\u030c\u0001\u0000\u0000\u0000\u031d\u030d"
+ + "\u0001\u0000\u0000\u0000\u031d\u0313\u0001\u0000\u0000\u0000\u031e\u00d8"
+ + "\u0001\u0000\u0000\u0000\u031f\u0320\u0007\t\u0000\u0000\u0320\u0321\u0007"
+ + "\u0003\u0000\u0000\u0321\u0322\u0007\u0001\u0000\u0000\u0322\u0323\u0007"
+ + "\r\u0000\u0000\u0323\u0324\u0007\u0007\u0000\u0000\u0324\u0325\u0007\u000f"
+ + "\u0000\u0000\u0325\u0326\u0007\u0004\u0000\u0000\u0326\u0327\u0007\u0002"
+ + "\u0000\u0000\u0327\u0328\u0007\u0001\u0000\u0000\u0328\u0329\u0007\u0007"
+ + "\u0000\u0000\u0329\u00da\u0001\u0000\u0000\u0000\u032a\u032b\u0007\f\u0000"
+ + "\u0000\u032b\u032c\u0007\u0003\u0000\u0000\u032c\u00dc\u0001\u0000\u0000"
+ + "\u0000\u032d\u032e\u0007\u0016\u0000\u0000\u032e\u032f\u0007\u0003\u0000"
+ + "\u0000\u032f\u0330\u0007\u000f\u0000\u0000\u0330\u00de\u0001\u0000\u0000"
+ + "\u0000\u0331\u0332\u0007\u000f\u0000\u0000\u0332\u0333\u0007\u000e\u0000"
+ + "\u0000\u0333\u0334\u0007\u0019\u0000\u0000\u0334\u0335\u0007\u0000\u0000"
+ + "\u0000\u0335\u0336\u0007\u0002\u0000\u0000\u0336\u0337\u0007\u000f\u0000"
+ + "\u0000\u0337\u0338\u0007\u000e\u0000\u0000\u0338\u00e0\u0001\u0000\u0000"
+ + "\u0000\u0339\u033a\u0007\u0000\u0000\u0000\u033a\u033b\u0007\u0001\u0000"
+ + "\u0000\u033b\u033c\u0007\u0002\u0000\u0000\u033c\u033d\u0007\u0019\u0000"
+ + "\u0000\u033d\u033e\u0007\u0000\u0000\u0000\u033e\u033f\u0007\u000e\u0000"
+ + "\u0000\u033f\u00e2\u0001\u0000\u0000\u0000\u0340\u0341\u0007\b\u0000\u0000"
+ + "\u0341\u0342\u0007\u0004\u0000\u0000\u0342\u0343\u0007\u0001\u0000\u0000"
+ + "\u0343\u0344\u0007\f\u0000\u0000\u0344\u0345\u0007\u0004\u0000\u0000\u0345"
+ + "\u0346\u0007\u0007\u0000\u0000\u0346\u0347\u0007\u0003\u0000\u0000\u0347"
+ + "\u0348\u0007\u000f\u0000\u0000\u0348\u0349\u0007\u0012\u0000\u0000\u0349"
+ + "\u00e4\u0001\u0000\u0000\u0000\u034a\u034b\u0007\r\u0000\u0000\u034b\u034c"
+ + "\u0007\t\u0000\u0000\u034c\u034d\u0007\u0004\u0000\u0000\u034d\u034e\u0007"
+ + "\u0005\u0000\u0000\u034e\u034f\u0007\u0004\u0000\u0000\u034f\u0350\u0007"
+ + "\u000f\u0000\u0000\u0350\u00e6\u0001\u0000\u0000\u0000\u0351\u0352\u0007"
+ + "\u0003\u0000\u0000\u0352\u0353\u0007\u0016\u0000\u0000\u0353\u00e8\u0001"
+ + "\u0000\u0000\u0000\u0354\u0355\u0007\u0004\u0000\u0000\u0355\u0356\u0007"
+ + "\f\u0000\u0000\u0356\u0357\u0007\f\u0000\u0000\u0357\u00ea\u0001\u0000"
+ + "\u0000\u0000\u0358\u0359\u0007\f\u0000\u0000\u0359\u035a\u0007\u000f\u0000"
+ + "\u0000\u035a\u035b\u0007\u0003\u0000\u0000\u035b\u035c\u0007\u0006\u0000"
+ + "\u0000\u035c\u00ec\u0001\u0000\u0000\u0000\u035d\u035e\u0007\u0016\u0000"
+ + "\u0000\u035e\u035f\u0007\u0002\u0000\u0000\u035f\u0360\u0007\u0005\u0000"
+ + "\u0000\u0360\u0361\u0007\u0007\u0000\u0000\u0361\u0362\u0007\u000e\u0000"
+ + "\u0000\u0362\u0363\u0007\u000f\u0000\u0000\u0363\u00ee\u0001\u0000\u0000"
+ + "\u0000\u0364\u0365\u0007\u000e\u0000\u0000\u0365\u0366\u0007\u0015\u0000"
+ + "\u0000\u0366\u0367\u0007\u0007\u0000\u0000\u0367\u0368\u0007\u000f\u0000"
+ + "\u0000\u0368\u0369\u0007\u0004\u0000\u0000\u0369\u036a\u0007\t\u0000\u0000"
+ + "\u036a\u036b\u0007\u0007\u0000\u0000\u036b\u00f0\u0001\u0000\u0000\u0000"
+ + "\u036c\u0370\u0003\u00f3y\u0000\u036d\u036f\u0003\u00f5z\u0000\u036e\u036d"
+ + "\u0001\u0000\u0000\u0000\u036f\u0372\u0001\u0000\u0000\u0000\u0370\u036e"
+ + "\u0001\u0000\u0000\u0000\u0370\u0371\u0001\u0000\u0000\u0000\u0371\u00f2"
+ + "\u0001\u0000\u0000\u0000\u0372\u0370\u0001\u0000\u0000\u0000\u0373\u0376"
+ + "\u0003\u0125\u0092\u0000\u0374\u0376\u0003\u0119\u008c\u0000\u0375\u0373"
+ + "\u0001\u0000\u0000\u0000\u0375\u0374\u0001\u0000\u0000\u0000\u0376\u00f4"
+ + "\u0001\u0000\u0000\u0000\u0377\u037a\u0003\u0105\u0082\u0000\u0378\u037a"
+ + "\u0003\u0115\u008a\u0000\u0379\u0377\u0001\u0000\u0000\u0000\u0379\u0378"
+ + "\u0001\u0000\u0000\u0000\u037a\u00f6\u0001\u0000\u0000\u0000\u037b\u037f"
+ + "\u0005`\u0000\u0000\u037c\u037e\u0003\u0101\u0080\u0000\u037d\u037c\u0001"
+ + "\u0000\u0000\u0000\u037e\u0381\u0001\u0000\u0000\u0000\u037f\u037d\u0001"
+ + "\u0000\u0000\u0000\u037f\u0380\u0001\u0000\u0000\u0000\u0380\u0382\u0001"
+ + "\u0000\u0000\u0000\u0381\u037f\u0001\u0000\u0000\u0000\u0382\u0384\u0005"
+ + "`\u0000\u0000\u0383\u037b\u0001\u0000\u0000\u0000\u0384\u0385\u0001\u0000"
+ + "\u0000\u0000\u0385\u0383\u0001\u0000\u0000\u0000\u0385\u0386\u0001\u0000"
+ + "\u0000\u0000\u0386\u00f8\u0001\u0000\u0000\u0000\u0387\u0389\u0003\u00fb"
+ + "}\u0000\u0388\u0387\u0001\u0000\u0000\u0000\u0389\u038a\u0001\u0000\u0000"
+ + "\u0000\u038a\u0388\u0001\u0000\u0000\u0000\u038a\u038b\u0001\u0000\u0000"
+ + "\u0000\u038b\u00fa\u0001\u0000\u0000\u0000\u038c\u0399\u0003\u0117\u008b"
+ + "\u0000\u038d\u0399\u0003\u011b\u008d\u0000\u038e\u0399\u0003\u011f\u008f"
+ + "\u0000\u038f\u0399\u0003\u0121\u0090\u0000\u0390\u0399\u0003\u00ff\u007f"
+ + "\u0000\u0391\u0399\u0003\u0113\u0089\u0000\u0392\u0399\u0003\u0111\u0088"
+ + "\u0000\u0393\u0399\u0003\u010f\u0087\u0000\u0394\u0399\u0003\u0103\u0081"
+ + "\u0000\u0395\u0399\u0003\u0123\u0091\u0000\u0396\u0399\u0007\u001a\u0000"
+ + "\u0000\u0397\u0399\u0003\u00fd~\u0000\u0398\u038c\u0001\u0000\u0000\u0000"
+ + "\u0398\u038d\u0001\u0000\u0000\u0000\u0398\u038e\u0001\u0000\u0000\u0000"
+ + "\u0398\u038f\u0001\u0000\u0000\u0000\u0398\u0390\u0001\u0000\u0000\u0000"
+ + "\u0398\u0391\u0001\u0000\u0000\u0000\u0398\u0392\u0001\u0000\u0000\u0000"
+ + "\u0398\u0393\u0001\u0000\u0000\u0000\u0398\u0394\u0001\u0000\u0000\u0000"
+ + "\u0398\u0395\u0001\u0000\u0000\u0000\u0398\u0396\u0001\u0000\u0000\u0000"
+ + "\u0398\u0397\u0001\u0000\u0000\u0000\u0399\u00fc\u0001\u0000\u0000\u0000"
+ + "\u039a\u039b\u0005/\u0000\u0000\u039b\u039c\u0005*\u0000\u0000\u039c\u03a2"
+ + "\u0001\u0000\u0000\u0000\u039d\u03a1\u0003\u0107\u0083\u0000\u039e\u039f"
+ + "\u0005*\u0000\u0000\u039f\u03a1\u0003\u010d\u0086\u0000\u03a0\u039d\u0001"
+ + "\u0000\u0000\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\u03a6\u0005*\u0000\u0000\u03a6\u03b8\u0005/\u0000"
+ + "\u0000\u03a7\u03a8\u0005/\u0000\u0000\u03a8\u03a9\u0005/\u0000\u0000\u03a9"
+ + "\u03ad\u0001\u0000\u0000\u0000\u03aa\u03ac\u0003\u010b\u0085\u0000\u03ab"
+ + "\u03aa\u0001\u0000\u0000\u0000\u03ac\u03af\u0001\u0000\u0000\u0000\u03ad"
+ + "\u03ab\u0001\u0000\u0000\u0000\u03ad\u03ae\u0001\u0000\u0000\u0000\u03ae"
+ + "\u03b1\u0001\u0000\u0000\u0000\u03af\u03ad\u0001\u0000\u0000\u0000\u03b0"
+ + "\u03b2\u0003\u0113\u0089\u0000\u03b1\u03b0\u0001\u0000\u0000\u0000\u03b1"
+ + "\u03b2\u0001\u0000\u0000\u0000\u03b2\u03b5\u0001\u0000\u0000\u0000\u03b3"
+ + "\u03b6\u0003\u011f\u008f\u0000\u03b4\u03b6\u0005\u0000\u0000\u0001\u03b5"
+ + "\u03b3\u0001\u0000\u0000\u0000\u03b5\u03b4\u0001\u0000\u0000\u0000\u03b6"
+ + "\u03b8\u0001\u0000\u0000\u0000\u03b7\u039a\u0001\u0000\u0000\u0000\u03b7"
+ + "\u03a7\u0001\u0000\u0000\u0000\u03b8\u00fe\u0001\u0000\u0000\u0000\u03b9"
+ + "\u03ba\u0007\u001b\u0000\u0000\u03ba\u0100\u0001\u0000\u0000\u0000\u03bb"
+ + "\u03bc\b\u001c\u0000\u0000\u03bc\u0102\u0001\u0000\u0000\u0000\u03bd\u03be"
+ + "\u0007\u001d\u0000\u0000\u03be\u0104\u0001\u0000\u0000\u0000\u03bf\u03c0"
+ + "\u0007\u001e\u0000\u0000\u03c0\u0106\u0001\u0000\u0000\u0000\u03c1\u03c2"
+ + "\b\u001f\u0000\u0000\u03c2\u0108\u0001\u0000\u0000\u0000\u03c3\u03c4\b"
+ + " \u0000\u0000\u03c4\u010a\u0001\u0000\u0000\u0000\u03c5\u03c6\b!\u0000"
+ + "\u0000\u03c6\u010c\u0001\u0000\u0000\u0000\u03c7\u03c8\b\"\u0000\u0000"
+ + "\u03c8\u010e\u0001\u0000\u0000\u0000\u03c9\u03ca\u0007#\u0000\u0000\u03ca"
+ + "\u0110\u0001\u0000\u0000\u0000\u03cb\u03cc\u0007$\u0000\u0000\u03cc\u0112"
+ + "\u0001\u0000\u0000\u0000\u03cd\u03ce\u0007%\u0000\u0000\u03ce\u0114\u0001"
+ + "\u0000\u0000\u0000\u03cf\u03d0\u0007&\u0000\u0000\u03d0\u0116\u0001\u0000"
+ + "\u0000\u0000\u03d1\u03d2\u0007\'\u0000\u0000\u03d2\u0118\u0001\u0000\u0000"
+ + "\u0000\u03d3\u03d4\u0007(\u0000\u0000\u03d4\u011a\u0001\u0000\u0000\u0000"
+ + "\u03d5\u03d6\u0007)\u0000\u0000\u03d6\u011c\u0001\u0000\u0000\u0000\u03d7"
+ + "\u03d8\b*\u0000\u0000\u03d8\u011e\u0001\u0000\u0000\u0000\u03d9\u03da"
+ + "\u0007+\u0000\u0000\u03da\u0120\u0001\u0000\u0000\u0000\u03db\u03dc\u0007"
+ + ",\u0000\u0000\u03dc\u0122\u0001\u0000\u0000\u0000\u03dd\u03de\u0007-\u0000"
+ + "\u0000\u03de\u0124\u0001\u0000\u0000\u0000\u03df\u03e0\u0007.\u0000\u0000"
+ + "\u03e0\u0126\u0001\u0000\u0000\u0000&\u0000\u029f\u02a6\u02a9\u02b1\u02b4"
+ + "\u02b8\u02bc\u02c0\u02c6\u02cd\u02d2\u02d8\u02de\u02e0\u02e4\u02e9\u02ee"
+ + "\u02f5\u02fa\u02fc\u0303\u0305\u0309\u031d\u0370\u0375\u0379\u037f\u0385"
+ + "\u038a\u0398\u03a0\u03a2\u03ad\u03b1\u03b5\u03b7\u0000";
+ public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
diff --git a/estore/src/main/java/org/estore/antlr4/CypherLexer.tokens b/estore/src/main/java/org/estore/antlr4/CypherLexer.tokens
new file mode 100644
index 0000000..a243979
--- /dev/null
+++ b/estore/src/main/java/org/estore/antlr4/CypherLexer.tokens
@@ -0,0 +1,173 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+T__9=10
+T__10=11
+T__11=12
+T__12=13
+T__13=14
+T__14=15
+T__15=16
+T__16=17
+T__17=18
+T__18=19
+T__19=20
+T__20=21
+T__21=22
+T__22=23
+T__23=24
+T__24=25
+T__25=26
+T__26=27
+T__27=28
+T__28=29
+T__29=30
+T__30=31
+T__31=32
+T__32=33
+T__33=34
+T__34=35
+T__35=36
+T__36=37
+T__37=38
+T__38=39
+T__39=40
+T__40=41
+T__41=42
+T__42=43
+T__43=44
+T__44=45
+UNION=46
+ALL=47
+OPTIONAL=48
+MATCH=49
+UNWIND=50
+AS=51
+MERGE=52
+ON=53
+CREATE=54
+SET=55
+DETACH=56
+DELETE=57
+REMOVE=58
+CALL=59
+YIELD=60
+WITH=61
+RETURN=62
+DISTINCT=63
+ORDER=64
+BY=65
+L_SKIP=66
+LIMIT=67
+ASCENDING=68
+ASC=69
+DESCENDING=70
+DESC=71
+WHERE=72
+OR=73
+XOR=74
+AND=75
+NOT=76
+STARTS=77
+ENDS=78
+CONTAINS=79
+IN=80
+IS=81
+NULL=82
+COUNT=83
+CASE=84
+ELSE=85
+END=86
+WHEN=87
+THEN=88
+ANY=89
+NONE=90
+SINGLE=91
+EXISTS=92
+TRUE=93
+FALSE=94
+HexInteger=95
+DecimalInteger=96
+OctalInteger=97
+HexLetter=98
+HexDigit=99
+Digit=100
+NonZeroDigit=101
+NonZeroOctDigit=102
+OctDigit=103
+ZeroDigit=104
+ExponentDecimalReal=105
+RegularDecimalReal=106
+StringLiteral=107
+EscapedChar=108
+CONSTRAINT=109
+DO=110
+FOR=111
+REQUIRE=112
+UNIQUE=113
+MANDATORY=114
+SCALAR=115
+OF=116
+ADD=117
+DROP=118
+FILTER=119
+EXTRACT=120
+UnescapedSymbolicName=121
+IdentifierStart=122
+IdentifierPart=123
+EscapedSymbolicName=124
+SP=125
+WHITESPACE=126
+Comment=127
+';'=1
+','=2
+'='=3
+'+='=4
+'*'=5
+'('=6
+')'=7
+'['=8
+']'=9
+':'=10
+'|'=11
+'..'=12
+'<>'=13
+'<'=14
+'>'=15
+'<='=16
+'>='=17
+'+'=18
+'-'=19
+'/'=20
+'%'=21
+'^'=22
+'.'=23
+'{'=24
+'}'=25
+'$'=26
+'\u27e8'=27
+'\u3008'=28
+'\ufe64'=29
+'\uff1c'=30
+'\u27e9'=31
+'\u3009'=32
+'\ufe65'=33
+'\uff1e'=34
+'\u00ad'=35
+'\u2010'=36
+'\u2011'=37
+'\u2012'=38
+'\u2013'=39
+'\u2014'=40
+'\u2015'=41
+'\u2212'=42
+'\ufe58'=43
+'\ufe63'=44
+'\uff0d'=45
+'0'=104
diff --git a/estore/src/main/java/org/estore/antlr4/CypherParser.java b/estore/src/main/java/org/estore/antlr4/CypherParser.java
new file mode 100644
index 0000000..5a21d3d
--- /dev/null
+++ b/estore/src/main/java/org/estore/antlr4/CypherParser.java
@@ -0,0 +1,11935 @@
+// Generated from Cypher.g4 by ANTLR 4.13.1
+
+package org.estore.antlr4;
+
+import java.util.List;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class CypherParser extends Parser {
+ static {
+ RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION);
+ }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int T__0 = 1,
+ T__1 = 2,
+ T__2 = 3,
+ T__3 = 4,
+ T__4 = 5,
+ T__5 = 6,
+ T__6 = 7,
+ T__7 = 8,
+ T__8 = 9,
+ T__9 = 10,
+ T__10 = 11,
+ T__11 = 12,
+ T__12 = 13,
+ T__13 = 14,
+ T__14 = 15,
+ T__15 = 16,
+ T__16 = 17,
+ T__17 = 18,
+ T__18 = 19,
+ T__19 = 20,
+ T__20 = 21,
+ T__21 = 22,
+ T__22 = 23,
+ T__23 = 24,
+ T__24 = 25,
+ T__25 = 26,
+ T__26 = 27,
+ T__27 = 28,
+ T__28 = 29,
+ T__29 = 30,
+ T__30 = 31,
+ T__31 = 32,
+ T__32 = 33,
+ T__33 = 34,
+ T__34 = 35,
+ T__35 = 36,
+ T__36 = 37,
+ T__37 = 38,
+ T__38 = 39,
+ T__39 = 40,
+ T__40 = 41,
+ T__41 = 42,
+ T__42 = 43,
+ T__43 = 44,
+ T__44 = 45,
+ UNION = 46,
+ ALL = 47,
+ OPTIONAL = 48,
+ MATCH = 49,
+ UNWIND = 50,
+ AS = 51,
+ MERGE = 52,
+ ON = 53,
+ CREATE = 54,
+ SET = 55,
+ DETACH = 56,
+ DELETE = 57,
+ REMOVE = 58,
+ CALL = 59,
+ YIELD = 60,
+ WITH = 61,
+ RETURN = 62,
+ DISTINCT = 63,
+ ORDER = 64,
+ BY = 65,
+ L_SKIP = 66,
+ LIMIT = 67,
+ ASCENDING = 68,
+ ASC = 69,
+ DESCENDING = 70,
+ DESC = 71,
+ WHERE = 72,
+ OR = 73,
+ XOR = 74,
+ AND = 75,
+ NOT = 76,
+ STARTS = 77,
+ ENDS = 78,
+ CONTAINS = 79,
+ IN = 80,
+ IS = 81,
+ NULL = 82,
+ COUNT = 83,
+ CASE = 84,
+ ELSE = 85,
+ END = 86,
+ WHEN = 87,
+ THEN = 88,
+ ANY = 89,
+ NONE = 90,
+ SINGLE = 91,
+ EXISTS = 92,
+ TRUE = 93,
+ FALSE = 94,
+ HexInteger = 95,
+ DecimalInteger = 96,
+ OctalInteger = 97,
+ HexLetter = 98,
+ HexDigit = 99,
+ Digit = 100,
+ NonZeroDigit = 101,
+ NonZeroOctDigit = 102,
+ OctDigit = 103,
+ ZeroDigit = 104,
+ ExponentDecimalReal = 105,
+ RegularDecimalReal = 106,
+ StringLiteral = 107,
+ EscapedChar = 108,
+ CONSTRAINT = 109,
+ DO = 110,
+ FOR = 111,
+ REQUIRE = 112,
+ UNIQUE = 113,
+ MANDATORY = 114,
+ SCALAR = 115,
+ OF = 116,
+ ADD = 117,
+ DROP = 118,
+ FILTER = 119,
+ EXTRACT = 120,
+ UnescapedSymbolicName = 121,
+ IdentifierStart = 122,
+ IdentifierPart = 123,
+ EscapedSymbolicName = 124,
+ SP = 125,
+ WHITESPACE = 126,
+ Comment = 127;
+ public static final int RULE_oC_Cypher = 0,
+ RULE_oC_Statement = 1,
+ RULE_oC_Query = 2,
+ RULE_oC_RegularQuery = 3,
+ RULE_oC_Union = 4,
+ RULE_oC_SingleQuery = 5,
+ RULE_oC_SinglePartQuery = 6,
+ RULE_oC_MultiPartQuery = 7,
+ RULE_oC_UpdatingClause = 8,
+ RULE_oC_ReadingClause = 9,
+ RULE_oC_Match = 10,
+ RULE_oC_Unwind = 11,
+ RULE_oC_Merge = 12,
+ RULE_oC_MergeAction = 13,
+ RULE_oC_Create = 14,
+ RULE_oC_Set = 15,
+ RULE_oC_SetItem = 16,
+ RULE_oC_Delete = 17,
+ RULE_oC_Remove = 18,
+ RULE_oC_RemoveItem = 19,
+ RULE_oC_InQueryCall = 20,
+ RULE_oC_StandaloneCall = 21,
+ RULE_oC_YieldItems = 22,
+ RULE_oC_YieldItem = 23,
+ RULE_oC_With = 24,
+ RULE_oC_Return = 25,
+ RULE_oC_ProjectionBody = 26,
+ RULE_oC_ProjectionItems = 27,
+ RULE_oC_ProjectionItem = 28,
+ RULE_oC_Order = 29,
+ RULE_oC_Skip = 30,
+ RULE_oC_Limit = 31,
+ RULE_oC_SortItem = 32,
+ RULE_oC_Where = 33,
+ RULE_oC_Pattern = 34,
+ RULE_oC_PatternPart = 35,
+ RULE_oC_AnonymousPatternPart = 36,
+ RULE_oC_PatternElement = 37,
+ RULE_oC_RelationshipsPattern = 38,
+ RULE_oC_NodePattern = 39,
+ RULE_oC_PatternElementChain = 40,
+ RULE_oC_RelationshipPattern = 41,
+ RULE_oC_RelationshipDetail = 42,
+ RULE_oC_Properties = 43,
+ RULE_oC_RelationshipTypes = 44,
+ RULE_oC_NodeLabels = 45,
+ RULE_oC_NodeLabel = 46,
+ RULE_oC_RangeLiteral = 47,
+ RULE_oC_LabelName = 48,
+ RULE_oC_RelTypeName = 49,
+ RULE_oC_PropertyExpression = 50,
+ RULE_oC_Expression = 51,
+ RULE_oC_OrExpression = 52,
+ RULE_oC_XorExpression = 53,
+ RULE_oC_AndExpression = 54,
+ RULE_oC_NotExpression = 55,
+ RULE_oC_ComparisonExpression = 56,
+ RULE_oC_PartialComparisonExpression = 57,
+ RULE_oC_StringListNullPredicateExpression = 58,
+ RULE_oC_StringPredicateExpression = 59,
+ RULE_oC_ListPredicateExpression = 60,
+ RULE_oC_NullPredicateExpression = 61,
+ RULE_oC_AddOrSubtractExpression = 62,
+ RULE_oC_MultiplyDivideModuloExpression = 63,
+ RULE_oC_PowerOfExpression = 64,
+ RULE_oC_UnaryAddOrSubtractExpression = 65,
+ RULE_oC_NonArithmeticOperatorExpression = 66,
+ RULE_oC_ListOperatorExpression = 67,
+ RULE_oC_PropertyLookup = 68,
+ RULE_oC_Atom = 69,
+ RULE_oC_CaseExpression = 70,
+ RULE_oC_CaseAlternative = 71,
+ RULE_oC_ListComprehension = 72,
+ RULE_oC_PatternComprehension = 73,
+ RULE_oC_Quantifier = 74,
+ RULE_oC_FilterExpression = 75,
+ RULE_oC_PatternPredicate = 76,
+ RULE_oC_ParenthesizedExpression = 77,
+ RULE_oC_IdInColl = 78,
+ RULE_oC_FunctionInvocation = 79,
+ RULE_oC_FunctionName = 80,
+ RULE_oC_ExistentialSubquery = 81,
+ RULE_oC_ExplicitProcedureInvocation = 82,
+ RULE_oC_ImplicitProcedureInvocation = 83,
+ RULE_oC_ProcedureResultField = 84,
+ RULE_oC_ProcedureName = 85,
+ RULE_oC_Namespace = 86,
+ RULE_oC_Variable = 87,
+ RULE_oC_Literal = 88,
+ RULE_oC_BooleanLiteral = 89,
+ RULE_oC_NumberLiteral = 90,
+ RULE_oC_IntegerLiteral = 91,
+ RULE_oC_DoubleLiteral = 92,
+ RULE_oC_ListLiteral = 93,
+ RULE_oC_MapLiteral = 94,
+ RULE_oC_PropertyKeyName = 95,
+ RULE_oC_Parameter = 96,
+ RULE_oC_SchemaName = 97,
+ RULE_oC_ReservedWord = 98,
+ RULE_oC_SymbolicName = 99,
+ RULE_oC_LeftArrowHead = 100,
+ RULE_oC_RightArrowHead = 101,
+ RULE_oC_Dash = 102;
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "oC_Cypher",
+ "oC_Statement",
+ "oC_Query",
+ "oC_RegularQuery",
+ "oC_Union",
+ "oC_SingleQuery",
+ "oC_SinglePartQuery",
+ "oC_MultiPartQuery",
+ "oC_UpdatingClause",
+ "oC_ReadingClause",
+ "oC_Match",
+ "oC_Unwind",
+ "oC_Merge",
+ "oC_MergeAction",
+ "oC_Create",
+ "oC_Set",
+ "oC_SetItem",
+ "oC_Delete",
+ "oC_Remove",
+ "oC_RemoveItem",
+ "oC_InQueryCall",
+ "oC_StandaloneCall",
+ "oC_YieldItems",
+ "oC_YieldItem",
+ "oC_With",
+ "oC_Return",
+ "oC_ProjectionBody",
+ "oC_ProjectionItems",
+ "oC_ProjectionItem",
+ "oC_Order",
+ "oC_Skip",
+ "oC_Limit",
+ "oC_SortItem",
+ "oC_Where",
+ "oC_Pattern",
+ "oC_PatternPart",
+ "oC_AnonymousPatternPart",
+ "oC_PatternElement",
+ "oC_RelationshipsPattern",
+ "oC_NodePattern",
+ "oC_PatternElementChain",
+ "oC_RelationshipPattern",
+ "oC_RelationshipDetail",
+ "oC_Properties",
+ "oC_RelationshipTypes",
+ "oC_NodeLabels",
+ "oC_NodeLabel",
+ "oC_RangeLiteral",
+ "oC_LabelName",
+ "oC_RelTypeName",
+ "oC_PropertyExpression",
+ "oC_Expression",
+ "oC_OrExpression",
+ "oC_XorExpression",
+ "oC_AndExpression",
+ "oC_NotExpression",
+ "oC_ComparisonExpression",
+ "oC_PartialComparisonExpression",
+ "oC_StringListNullPredicateExpression",
+ "oC_StringPredicateExpression",
+ "oC_ListPredicateExpression",
+ "oC_NullPredicateExpression",
+ "oC_AddOrSubtractExpression",
+ "oC_MultiplyDivideModuloExpression",
+ "oC_PowerOfExpression",
+ "oC_UnaryAddOrSubtractExpression",
+ "oC_NonArithmeticOperatorExpression",
+ "oC_ListOperatorExpression",
+ "oC_PropertyLookup",
+ "oC_Atom",
+ "oC_CaseExpression",
+ "oC_CaseAlternative",
+ "oC_ListComprehension",
+ "oC_PatternComprehension",
+ "oC_Quantifier",
+ "oC_FilterExpression",
+ "oC_PatternPredicate",
+ "oC_ParenthesizedExpression",
+ "oC_IdInColl",
+ "oC_FunctionInvocation",
+ "oC_FunctionName",
+ "oC_ExistentialSubquery",
+ "oC_ExplicitProcedureInvocation",
+ "oC_ImplicitProcedureInvocation",
+ "oC_ProcedureResultField",
+ "oC_ProcedureName",
+ "oC_Namespace",
+ "oC_Variable",
+ "oC_Literal",
+ "oC_BooleanLiteral",
+ "oC_NumberLiteral",
+ "oC_IntegerLiteral",
+ "oC_DoubleLiteral",
+ "oC_ListLiteral",
+ "oC_MapLiteral",
+ "oC_PropertyKeyName",
+ "oC_Parameter",
+ "oC_SchemaName",
+ "oC_ReservedWord",
+ "oC_SymbolicName",
+ "oC_LeftArrowHead",
+ "oC_RightArrowHead",
+ "oC_Dash"
+ };
+ }
+
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null,
+ "';'",
+ "','",
+ "'='",
+ "'+='",
+ "'*'",
+ "'('",
+ "')'",
+ "'['",
+ "']'",
+ "':'",
+ "'|'",
+ "'..'",
+ "'<>'",
+ "'<'",
+ "'>'",
+ "'<='",
+ "'>='",
+ "'+'",
+ "'-'",
+ "'/'",
+ "'%'",
+ "'^'",
+ "'.'",
+ "'{'",
+ "'}'",
+ "'$'",
+ "'\\u27E8'",
+ "'\\u3008'",
+ "'\\uFE64'",
+ "'\\uFF1C'",
+ "'\\u27E9'",
+ "'\\u3009'",
+ "'\\uFE65'",
+ "'\\uFF1E'",
+ "'\\u00AD'",
+ "'\\u2010'",
+ "'\\u2011'",
+ "'\\u2012'",
+ "'\\u2013'",
+ "'\\u2014'",
+ "'\\u2015'",
+ "'\\u2212'",
+ "'\\uFE58'",
+ "'\\uFE63'",
+ "'\\uFF0D'",
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "'0'"
+ };
+ }
+
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ "UNION",
+ "ALL",
+ "OPTIONAL",
+ "MATCH",
+ "UNWIND",
+ "AS",
+ "MERGE",
+ "ON",
+ "CREATE",
+ "SET",
+ "DETACH",
+ "DELETE",
+ "REMOVE",
+ "CALL",
+ "YIELD",
+ "WITH",
+ "RETURN",
+ "DISTINCT",
+ "ORDER",
+ "BY",
+ "L_SKIP",
+ "LIMIT",
+ "ASCENDING",
+ "ASC",
+ "DESCENDING",
+ "DESC",
+ "WHERE",
+ "OR",
+ "XOR",
+ "AND",
+ "NOT",
+ "STARTS",
+ "ENDS",
+ "CONTAINS",
+ "IN",
+ "IS",
+ "NULL",
+ "COUNT",
+ "CASE",
+ "ELSE",
+ "END",
+ "WHEN",
+ "THEN",
+ "ANY",
+ "NONE",
+ "SINGLE",
+ "EXISTS",
+ "TRUE",
+ "FALSE",
+ "HexInteger",
+ "DecimalInteger",
+ "OctalInteger",
+ "HexLetter",
+ "HexDigit",
+ "Digit",
+ "NonZeroDigit",
+ "NonZeroOctDigit",
+ "OctDigit",
+ "ZeroDigit",
+ "ExponentDecimalReal",
+ "RegularDecimalReal",
+ "StringLiteral",
+ "EscapedChar",
+ "CONSTRAINT",
+ "DO",
+ "FOR",
+ "REQUIRE",
+ "UNIQUE",
+ "MANDATORY",
+ "SCALAR",
+ "OF",
+ "ADD",
+ "DROP",
+ "FILTER",
+ "EXTRACT",
+ "UnescapedSymbolicName",
+ "IdentifierStart",
+ "IdentifierPart",
+ "EscapedSymbolicName",
+ "SP",
+ "WHITESPACE",
+ "Comment"
+ };
+ }
+
+ 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 "Cypher.g4";
+ }
+
+ @Override
+ public String[] getRuleNames() {
+ return ruleNames;
+ }
+
+ @Override
+ public String getSerializedATN() {
+ return _serializedATN;
+ }
+
+ @Override
+ public ATN getATN() {
+ return _ATN;
+ }
+
+ public CypherParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_CypherContext extends ParserRuleContext {
+ public OC_StatementContext oC_Statement() {
+ return getRuleContext(OC_StatementContext.class, 0);
+ }
+
+ public TerminalNode EOF() {
+ return getToken(CypherParser.EOF, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_CypherContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Cypher;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Cypher(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_CypherContext oC_Cypher() throws RecognitionException {
+ OC_CypherContext _localctx = new OC_CypherContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_oC_Cypher);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(207);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(206);
+ match(SP);
+ }
+ }
+
+ setState(209);
+ oC_Statement();
+ setState(214);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 2, _ctx)) {
+ case 1:
+ {
+ setState(211);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(210);
+ match(SP);
+ }
+ }
+
+ setState(213);
+ match(T__0);
+ }
+ break;
+ }
+ setState(217);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(216);
+ match(SP);
+ }
+ }
+
+ setState(219);
+ 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 OC_StatementContext extends ParserRuleContext {
+ public OC_QueryContext oC_Query() {
+ return getRuleContext(OC_QueryContext.class, 0);
+ }
+
+ public OC_StatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Statement;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Statement(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_StatementContext oC_Statement() throws RecognitionException {
+ OC_StatementContext _localctx = new OC_StatementContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_oC_Statement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(221);
+ oC_Query();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_QueryContext extends ParserRuleContext {
+ public OC_RegularQueryContext oC_RegularQuery() {
+ return getRuleContext(OC_RegularQueryContext.class, 0);
+ }
+
+ public OC_StandaloneCallContext oC_StandaloneCall() {
+ return getRuleContext(OC_StandaloneCallContext.class, 0);
+ }
+
+ public OC_QueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Query;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Query(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_QueryContext oC_Query() throws RecognitionException {
+ OC_QueryContext _localctx = new OC_QueryContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_oC_Query);
+ try {
+ setState(225);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 4, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(223);
+ oC_RegularQuery();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(224);
+ oC_StandaloneCall();
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RegularQueryContext extends ParserRuleContext {
+ public OC_SingleQueryContext oC_SingleQuery() {
+ return getRuleContext(OC_SingleQueryContext.class, 0);
+ }
+
+ public List oC_Union() {
+ return getRuleContexts(OC_UnionContext.class);
+ }
+
+ public OC_UnionContext oC_Union(int i) {
+ return getRuleContext(OC_UnionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_RegularQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RegularQuery;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RegularQuery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RegularQueryContext oC_RegularQuery() throws RecognitionException {
+ OC_RegularQueryContext _localctx = new OC_RegularQueryContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_oC_RegularQuery);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(227);
+ oC_SingleQuery();
+ setState(234);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 6, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(229);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(228);
+ match(SP);
+ }
+ }
+
+ setState(231);
+ oC_Union();
+ }
+ }
+ }
+ setState(236);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 6, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_UnionContext extends ParserRuleContext {
+ public TerminalNode UNION() {
+ return getToken(CypherParser.UNION, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode ALL() {
+ return getToken(CypherParser.ALL, 0);
+ }
+
+ public OC_SingleQueryContext oC_SingleQuery() {
+ return getRuleContext(OC_SingleQueryContext.class, 0);
+ }
+
+ public OC_UnionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Union;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Union(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_UnionContext oC_Union() throws RecognitionException {
+ OC_UnionContext _localctx = new OC_UnionContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_oC_Union);
+ int _la;
+ try {
+ setState(249);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 9, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(237);
+ match(UNION);
+ setState(238);
+ match(SP);
+ setState(239);
+ match(ALL);
+ setState(241);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(240);
+ match(SP);
+ }
+ }
+
+ setState(243);
+ oC_SingleQuery();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(244);
+ match(UNION);
+ setState(246);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(245);
+ match(SP);
+ }
+ }
+
+ setState(248);
+ oC_SingleQuery();
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_SingleQueryContext extends ParserRuleContext {
+ public OC_SinglePartQueryContext oC_SinglePartQuery() {
+ return getRuleContext(OC_SinglePartQueryContext.class, 0);
+ }
+
+ public OC_MultiPartQueryContext oC_MultiPartQuery() {
+ return getRuleContext(OC_MultiPartQueryContext.class, 0);
+ }
+
+ public OC_SingleQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_SingleQuery;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_SingleQuery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SingleQueryContext oC_SingleQuery() throws RecognitionException {
+ OC_SingleQueryContext _localctx = new OC_SingleQueryContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_oC_SingleQuery);
+ try {
+ setState(253);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 10, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(251);
+ oC_SinglePartQuery();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(252);
+ oC_MultiPartQuery();
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_SinglePartQueryContext extends ParserRuleContext {
+ public OC_ReturnContext oC_Return() {
+ return getRuleContext(OC_ReturnContext.class, 0);
+ }
+
+ public List oC_ReadingClause() {
+ return getRuleContexts(OC_ReadingClauseContext.class);
+ }
+
+ public OC_ReadingClauseContext oC_ReadingClause(int i) {
+ return getRuleContext(OC_ReadingClauseContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_UpdatingClause() {
+ return getRuleContexts(OC_UpdatingClauseContext.class);
+ }
+
+ public OC_UpdatingClauseContext oC_UpdatingClause(int i) {
+ return getRuleContext(OC_UpdatingClauseContext.class, i);
+ }
+
+ public OC_SinglePartQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_SinglePartQuery;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_SinglePartQuery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SinglePartQueryContext oC_SinglePartQuery() throws RecognitionException {
+ OC_SinglePartQueryContext _localctx = new OC_SinglePartQueryContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_oC_SinglePartQuery);
+ int _la;
+ try {
+ int _alt;
+ setState(290);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 19, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(261);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0
+ && ((1L << _la) & 578431077140398080L) != 0)) {
+ {
+ {
+ setState(255);
+ oC_ReadingClause();
+ setState(257);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(256);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(263);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(264);
+ oC_Return();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(271);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0
+ && ((1L << _la) & 578431077140398080L) != 0)) {
+ {
+ {
+ setState(265);
+ oC_ReadingClause();
+ setState(267);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(266);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(273);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(274);
+ oC_UpdatingClause();
+ setState(281);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 16, _ctx);
+ while (_alt != 2
+ && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(276);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(275);
+ match(SP);
+ }
+ }
+
+ setState(278);
+ oC_UpdatingClause();
+ }
+ }
+ }
+ setState(283);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 16, _ctx);
+ }
+ setState(288);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 18, _ctx)) {
+ case 1:
+ {
+ setState(285);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(284);
+ match(SP);
+ }
+ }
+
+ setState(287);
+ oC_Return();
+ }
+ 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 OC_MultiPartQueryContext extends ParserRuleContext {
+ public OC_SinglePartQueryContext oC_SinglePartQuery() {
+ return getRuleContext(OC_SinglePartQueryContext.class, 0);
+ }
+
+ public List oC_With() {
+ return getRuleContexts(OC_WithContext.class);
+ }
+
+ public OC_WithContext oC_With(int i) {
+ return getRuleContext(OC_WithContext.class, i);
+ }
+
+ public List oC_ReadingClause() {
+ return getRuleContexts(OC_ReadingClauseContext.class);
+ }
+
+ public OC_ReadingClauseContext oC_ReadingClause(int i) {
+ return getRuleContext(OC_ReadingClauseContext.class, i);
+ }
+
+ public List oC_UpdatingClause() {
+ return getRuleContexts(OC_UpdatingClauseContext.class);
+ }
+
+ public OC_UpdatingClauseContext oC_UpdatingClause(int i) {
+ return getRuleContext(OC_UpdatingClauseContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_MultiPartQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_MultiPartQuery;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_MultiPartQuery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_MultiPartQueryContext oC_MultiPartQuery() throws RecognitionException {
+ OC_MultiPartQueryContext _localctx = new OC_MultiPartQueryContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_oC_MultiPartQuery);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(314);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(298);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0
+ && ((1L << _la) & 578431077140398080L) != 0)) {
+ {
+ {
+ setState(292);
+ oC_ReadingClause();
+ setState(294);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(293);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(300);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(307);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0
+ && ((1L << _la) & 562949953421312000L) != 0)) {
+ {
+ {
+ setState(301);
+ oC_UpdatingClause();
+ setState(303);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(302);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(309);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(310);
+ oC_With();
+ setState(312);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(311);
+ match(SP);
+ }
+ }
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(316);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 25, _ctx);
+ } while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER);
+ setState(318);
+ oC_SinglePartQuery();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_UpdatingClauseContext extends ParserRuleContext {
+ public OC_CreateContext oC_Create() {
+ return getRuleContext(OC_CreateContext.class, 0);
+ }
+
+ public OC_MergeContext oC_Merge() {
+ return getRuleContext(OC_MergeContext.class, 0);
+ }
+
+ public OC_DeleteContext oC_Delete() {
+ return getRuleContext(OC_DeleteContext.class, 0);
+ }
+
+ public OC_SetContext oC_Set() {
+ return getRuleContext(OC_SetContext.class, 0);
+ }
+
+ public OC_RemoveContext oC_Remove() {
+ return getRuleContext(OC_RemoveContext.class, 0);
+ }
+
+ public OC_UpdatingClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_UpdatingClause;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_UpdatingClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_UpdatingClauseContext oC_UpdatingClause() throws RecognitionException {
+ OC_UpdatingClauseContext _localctx = new OC_UpdatingClauseContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_oC_UpdatingClause);
+ try {
+ setState(325);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case CREATE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(320);
+ oC_Create();
+ }
+ break;
+ case MERGE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(321);
+ oC_Merge();
+ }
+ break;
+ case DETACH:
+ case DELETE:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(322);
+ oC_Delete();
+ }
+ break;
+ case SET:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(323);
+ oC_Set();
+ }
+ break;
+ case REMOVE:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(324);
+ oC_Remove();
+ }
+ 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 OC_ReadingClauseContext extends ParserRuleContext {
+ public OC_MatchContext oC_Match() {
+ return getRuleContext(OC_MatchContext.class, 0);
+ }
+
+ public OC_UnwindContext oC_Unwind() {
+ return getRuleContext(OC_UnwindContext.class, 0);
+ }
+
+ public OC_InQueryCallContext oC_InQueryCall() {
+ return getRuleContext(OC_InQueryCallContext.class, 0);
+ }
+
+ public OC_ReadingClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ReadingClause;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ReadingClause(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ReadingClauseContext oC_ReadingClause() throws RecognitionException {
+ OC_ReadingClauseContext _localctx = new OC_ReadingClauseContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_oC_ReadingClause);
+ try {
+ setState(330);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case OPTIONAL:
+ case MATCH:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(327);
+ oC_Match();
+ }
+ break;
+ case UNWIND:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(328);
+ oC_Unwind();
+ }
+ break;
+ case CALL:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(329);
+ oC_InQueryCall();
+ }
+ 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 OC_MatchContext extends ParserRuleContext {
+ public TerminalNode MATCH() {
+ return getToken(CypherParser.MATCH, 0);
+ }
+
+ public OC_PatternContext oC_Pattern() {
+ return getRuleContext(OC_PatternContext.class, 0);
+ }
+
+ public TerminalNode OPTIONAL() {
+ return getToken(CypherParser.OPTIONAL, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_WhereContext oC_Where() {
+ return getRuleContext(OC_WhereContext.class, 0);
+ }
+
+ public OC_MatchContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Match;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Match(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_MatchContext oC_Match() throws RecognitionException {
+ OC_MatchContext _localctx = new OC_MatchContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_oC_Match);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(334);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == OPTIONAL) {
+ {
+ setState(332);
+ match(OPTIONAL);
+ setState(333);
+ match(SP);
+ }
+ }
+
+ setState(336);
+ match(MATCH);
+ setState(338);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(337);
+ match(SP);
+ }
+ }
+
+ setState(340);
+ oC_Pattern();
+ setState(345);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 31, _ctx)) {
+ case 1:
+ {
+ setState(342);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(341);
+ match(SP);
+ }
+ }
+
+ setState(344);
+ oC_Where();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_UnwindContext extends ParserRuleContext {
+ public TerminalNode UNWIND() {
+ return getToken(CypherParser.UNWIND, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode AS() {
+ return getToken(CypherParser.AS, 0);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_UnwindContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Unwind;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Unwind(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_UnwindContext oC_Unwind() throws RecognitionException {
+ OC_UnwindContext _localctx = new OC_UnwindContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_oC_Unwind);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(347);
+ match(UNWIND);
+ setState(349);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(348);
+ match(SP);
+ }
+ }
+
+ setState(351);
+ oC_Expression();
+ setState(352);
+ match(SP);
+ setState(353);
+ match(AS);
+ setState(354);
+ match(SP);
+ setState(355);
+ oC_Variable();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_MergeContext extends ParserRuleContext {
+ public TerminalNode MERGE() {
+ return getToken(CypherParser.MERGE, 0);
+ }
+
+ public OC_PatternPartContext oC_PatternPart() {
+ return getRuleContext(OC_PatternPartContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_MergeAction() {
+ return getRuleContexts(OC_MergeActionContext.class);
+ }
+
+ public OC_MergeActionContext oC_MergeAction(int i) {
+ return getRuleContext(OC_MergeActionContext.class, i);
+ }
+
+ public OC_MergeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Merge;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Merge(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_MergeContext oC_Merge() throws RecognitionException {
+ OC_MergeContext _localctx = new OC_MergeContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_oC_Merge);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(357);
+ match(MERGE);
+ setState(359);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(358);
+ match(SP);
+ }
+ }
+
+ setState(361);
+ oC_PatternPart();
+ setState(366);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 34, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(362);
+ match(SP);
+ setState(363);
+ oC_MergeAction();
+ }
+ }
+ }
+ setState(368);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 34, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_MergeActionContext extends ParserRuleContext {
+ public TerminalNode ON() {
+ return getToken(CypherParser.ON, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode MATCH() {
+ return getToken(CypherParser.MATCH, 0);
+ }
+
+ public OC_SetContext oC_Set() {
+ return getRuleContext(OC_SetContext.class, 0);
+ }
+
+ public TerminalNode CREATE() {
+ return getToken(CypherParser.CREATE, 0);
+ }
+
+ public OC_MergeActionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_MergeAction;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_MergeAction(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_MergeActionContext oC_MergeAction() throws RecognitionException {
+ OC_MergeActionContext _localctx = new OC_MergeActionContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_oC_MergeAction);
+ try {
+ setState(379);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 35, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(369);
+ match(ON);
+ setState(370);
+ match(SP);
+ setState(371);
+ match(MATCH);
+ setState(372);
+ match(SP);
+ setState(373);
+ oC_Set();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(374);
+ match(ON);
+ setState(375);
+ match(SP);
+ setState(376);
+ match(CREATE);
+ setState(377);
+ match(SP);
+ setState(378);
+ oC_Set();
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_CreateContext extends ParserRuleContext {
+ public TerminalNode CREATE() {
+ return getToken(CypherParser.CREATE, 0);
+ }
+
+ public OC_PatternContext oC_Pattern() {
+ return getRuleContext(OC_PatternContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_CreateContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Create;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Create(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_CreateContext oC_Create() throws RecognitionException {
+ OC_CreateContext _localctx = new OC_CreateContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_oC_Create);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(381);
+ match(CREATE);
+ setState(383);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(382);
+ match(SP);
+ }
+ }
+
+ setState(385);
+ oC_Pattern();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_SetContext extends ParserRuleContext {
+ public TerminalNode SET() {
+ return getToken(CypherParser.SET, 0);
+ }
+
+ public List oC_SetItem() {
+ return getRuleContexts(OC_SetItemContext.class);
+ }
+
+ public OC_SetItemContext oC_SetItem(int i) {
+ return getRuleContext(OC_SetItemContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_SetContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Set;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Set(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SetContext oC_Set() throws RecognitionException {
+ OC_SetContext _localctx = new OC_SetContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_oC_Set);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(387);
+ match(SET);
+ setState(389);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(388);
+ match(SP);
+ }
+ }
+
+ setState(391);
+ oC_SetItem();
+ setState(402);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 40, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(393);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(392);
+ match(SP);
+ }
+ }
+
+ setState(395);
+ match(T__1);
+ setState(397);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(396);
+ match(SP);
+ }
+ }
+
+ setState(399);
+ oC_SetItem();
+ }
+ }
+ }
+ setState(404);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 40, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_SetItemContext extends ParserRuleContext {
+ public OC_PropertyExpressionContext oC_PropertyExpression() {
+ return getRuleContext(OC_PropertyExpressionContext.class, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_NodeLabelsContext oC_NodeLabels() {
+ return getRuleContext(OC_NodeLabelsContext.class, 0);
+ }
+
+ public OC_SetItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_SetItem;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_SetItem(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SetItemContext oC_SetItem() throws RecognitionException {
+ OC_SetItemContext _localctx = new OC_SetItemContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_oC_SetItem);
+ int _la;
+ try {
+ setState(441);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 48, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(405);
+ oC_PropertyExpression();
+ setState(407);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(406);
+ match(SP);
+ }
+ }
+
+ setState(409);
+ match(T__2);
+ setState(411);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(410);
+ match(SP);
+ }
+ }
+
+ setState(413);
+ oC_Expression();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(415);
+ oC_Variable();
+ setState(417);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(416);
+ match(SP);
+ }
+ }
+
+ setState(419);
+ match(T__2);
+ setState(421);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(420);
+ match(SP);
+ }
+ }
+
+ setState(423);
+ oC_Expression();
+ }
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ {
+ setState(425);
+ oC_Variable();
+ setState(427);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(426);
+ match(SP);
+ }
+ }
+
+ setState(429);
+ match(T__3);
+ setState(431);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(430);
+ match(SP);
+ }
+ }
+
+ setState(433);
+ oC_Expression();
+ }
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ {
+ setState(435);
+ oC_Variable();
+ setState(437);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(436);
+ match(SP);
+ }
+ }
+
+ setState(439);
+ oC_NodeLabels();
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_DeleteContext extends ParserRuleContext {
+ public TerminalNode DELETE() {
+ return getToken(CypherParser.DELETE, 0);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public TerminalNode DETACH() {
+ return getToken(CypherParser.DETACH, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_DeleteContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Delete;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Delete(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_DeleteContext oC_Delete() throws RecognitionException {
+ OC_DeleteContext _localctx = new OC_DeleteContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_oC_Delete);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(445);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == DETACH) {
+ {
+ setState(443);
+ match(DETACH);
+ setState(444);
+ match(SP);
+ }
+ }
+
+ setState(447);
+ match(DELETE);
+ setState(449);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(448);
+ match(SP);
+ }
+ }
+
+ setState(451);
+ oC_Expression();
+ setState(462);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 53, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(453);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(452);
+ match(SP);
+ }
+ }
+
+ setState(455);
+ match(T__1);
+ setState(457);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(456);
+ match(SP);
+ }
+ }
+
+ setState(459);
+ oC_Expression();
+ }
+ }
+ }
+ setState(464);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 53, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RemoveContext extends ParserRuleContext {
+ public TerminalNode REMOVE() {
+ return getToken(CypherParser.REMOVE, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_RemoveItem() {
+ return getRuleContexts(OC_RemoveItemContext.class);
+ }
+
+ public OC_RemoveItemContext oC_RemoveItem(int i) {
+ return getRuleContext(OC_RemoveItemContext.class, i);
+ }
+
+ public OC_RemoveContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Remove;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Remove(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RemoveContext oC_Remove() throws RecognitionException {
+ OC_RemoveContext _localctx = new OC_RemoveContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_oC_Remove);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(465);
+ match(REMOVE);
+ setState(466);
+ match(SP);
+ setState(467);
+ oC_RemoveItem();
+ setState(478);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 56, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(469);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(468);
+ match(SP);
+ }
+ }
+
+ setState(471);
+ match(T__1);
+ setState(473);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(472);
+ match(SP);
+ }
+ }
+
+ setState(475);
+ oC_RemoveItem();
+ }
+ }
+ }
+ setState(480);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 56, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RemoveItemContext extends ParserRuleContext {
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_NodeLabelsContext oC_NodeLabels() {
+ return getRuleContext(OC_NodeLabelsContext.class, 0);
+ }
+
+ public OC_PropertyExpressionContext oC_PropertyExpression() {
+ return getRuleContext(OC_PropertyExpressionContext.class, 0);
+ }
+
+ public OC_RemoveItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RemoveItem;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RemoveItem(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RemoveItemContext oC_RemoveItem() throws RecognitionException {
+ OC_RemoveItemContext _localctx = new OC_RemoveItemContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_oC_RemoveItem);
+ try {
+ setState(485);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 57, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(481);
+ oC_Variable();
+ setState(482);
+ oC_NodeLabels();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(484);
+ oC_PropertyExpression();
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_InQueryCallContext extends ParserRuleContext {
+ public TerminalNode CALL() {
+ return getToken(CypherParser.CALL, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ExplicitProcedureInvocationContext oC_ExplicitProcedureInvocation() {
+ return getRuleContext(OC_ExplicitProcedureInvocationContext.class, 0);
+ }
+
+ public TerminalNode YIELD() {
+ return getToken(CypherParser.YIELD, 0);
+ }
+
+ public OC_YieldItemsContext oC_YieldItems() {
+ return getRuleContext(OC_YieldItemsContext.class, 0);
+ }
+
+ public OC_InQueryCallContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_InQueryCall;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_InQueryCall(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_InQueryCallContext oC_InQueryCall() throws RecognitionException {
+ OC_InQueryCallContext _localctx = new OC_InQueryCallContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_oC_InQueryCall);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(487);
+ match(CALL);
+ setState(488);
+ match(SP);
+ setState(489);
+ oC_ExplicitProcedureInvocation();
+ setState(496);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 59, _ctx)) {
+ case 1:
+ {
+ setState(491);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(490);
+ match(SP);
+ }
+ }
+
+ setState(493);
+ match(YIELD);
+ setState(494);
+ match(SP);
+ setState(495);
+ oC_YieldItems();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_StandaloneCallContext extends ParserRuleContext {
+ public TerminalNode CALL() {
+ return getToken(CypherParser.CALL, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ExplicitProcedureInvocationContext oC_ExplicitProcedureInvocation() {
+ return getRuleContext(OC_ExplicitProcedureInvocationContext.class, 0);
+ }
+
+ public OC_ImplicitProcedureInvocationContext oC_ImplicitProcedureInvocation() {
+ return getRuleContext(OC_ImplicitProcedureInvocationContext.class, 0);
+ }
+
+ public TerminalNode YIELD() {
+ return getToken(CypherParser.YIELD, 0);
+ }
+
+ public OC_YieldItemsContext oC_YieldItems() {
+ return getRuleContext(OC_YieldItemsContext.class, 0);
+ }
+
+ public OC_StandaloneCallContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_StandaloneCall;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_StandaloneCall(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_StandaloneCallContext oC_StandaloneCall() throws RecognitionException {
+ OC_StandaloneCallContext _localctx = new OC_StandaloneCallContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_oC_StandaloneCall);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(498);
+ match(CALL);
+ setState(499);
+ match(SP);
+ setState(502);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 60, _ctx)) {
+ case 1:
+ {
+ setState(500);
+ oC_ExplicitProcedureInvocation();
+ }
+ break;
+ case 2:
+ {
+ setState(501);
+ oC_ImplicitProcedureInvocation();
+ }
+ break;
+ }
+ setState(513);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 63, _ctx)) {
+ case 1:
+ {
+ setState(505);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(504);
+ match(SP);
+ }
+ }
+
+ setState(507);
+ match(YIELD);
+ setState(508);
+ match(SP);
+ setState(511);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__4:
+ {
+ setState(509);
+ match(T__4);
+ }
+ break;
+ case COUNT:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case HexLetter:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ {
+ setState(510);
+ oC_YieldItems();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_YieldItemsContext extends ParserRuleContext {
+ public List oC_YieldItem() {
+ return getRuleContexts(OC_YieldItemContext.class);
+ }
+
+ public OC_YieldItemContext oC_YieldItem(int i) {
+ return getRuleContext(OC_YieldItemContext.class, i);
+ }
+
+ public OC_WhereContext oC_Where() {
+ return getRuleContext(OC_WhereContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_YieldItemsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_YieldItems;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_YieldItems(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_YieldItemsContext oC_YieldItems() throws RecognitionException {
+ OC_YieldItemsContext _localctx = new OC_YieldItemsContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_oC_YieldItems);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(515);
+ oC_YieldItem();
+ setState(526);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 66, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(517);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(516);
+ match(SP);
+ }
+ }
+
+ setState(519);
+ match(T__1);
+ setState(521);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(520);
+ match(SP);
+ }
+ }
+
+ setState(523);
+ oC_YieldItem();
+ }
+ }
+ }
+ setState(528);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 66, _ctx);
+ }
+ setState(533);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 68, _ctx)) {
+ case 1:
+ {
+ setState(530);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(529);
+ match(SP);
+ }
+ }
+
+ setState(532);
+ oC_Where();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_YieldItemContext extends ParserRuleContext {
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_ProcedureResultFieldContext oC_ProcedureResultField() {
+ return getRuleContext(OC_ProcedureResultFieldContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode AS() {
+ return getToken(CypherParser.AS, 0);
+ }
+
+ public OC_YieldItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_YieldItem;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_YieldItem(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_YieldItemContext oC_YieldItem() throws RecognitionException {
+ OC_YieldItemContext _localctx = new OC_YieldItemContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_oC_YieldItem);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(540);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 69, _ctx)) {
+ case 1:
+ {
+ setState(535);
+ oC_ProcedureResultField();
+ setState(536);
+ match(SP);
+ setState(537);
+ match(AS);
+ setState(538);
+ match(SP);
+ }
+ break;
+ }
+ setState(542);
+ oC_Variable();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_WithContext extends ParserRuleContext {
+ public TerminalNode WITH() {
+ return getToken(CypherParser.WITH, 0);
+ }
+
+ public OC_ProjectionBodyContext oC_ProjectionBody() {
+ return getRuleContext(OC_ProjectionBodyContext.class, 0);
+ }
+
+ public OC_WhereContext oC_Where() {
+ return getRuleContext(OC_WhereContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_WithContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_With;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_With(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_WithContext oC_With() throws RecognitionException {
+ OC_WithContext _localctx = new OC_WithContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_oC_With);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(544);
+ match(WITH);
+ setState(545);
+ oC_ProjectionBody();
+ setState(550);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 71, _ctx)) {
+ case 1:
+ {
+ setState(547);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(546);
+ match(SP);
+ }
+ }
+
+ setState(549);
+ oC_Where();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ReturnContext extends ParserRuleContext {
+ public TerminalNode RETURN() {
+ return getToken(CypherParser.RETURN, 0);
+ }
+
+ public OC_ProjectionBodyContext oC_ProjectionBody() {
+ return getRuleContext(OC_ProjectionBodyContext.class, 0);
+ }
+
+ public OC_ReturnContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Return;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Return(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ReturnContext oC_Return() throws RecognitionException {
+ OC_ReturnContext _localctx = new OC_ReturnContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_oC_Return);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(552);
+ match(RETURN);
+ setState(553);
+ oC_ProjectionBody();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ProjectionBodyContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ProjectionItemsContext oC_ProjectionItems() {
+ return getRuleContext(OC_ProjectionItemsContext.class, 0);
+ }
+
+ public TerminalNode DISTINCT() {
+ return getToken(CypherParser.DISTINCT, 0);
+ }
+
+ public OC_OrderContext oC_Order() {
+ return getRuleContext(OC_OrderContext.class, 0);
+ }
+
+ public OC_SkipContext oC_Skip() {
+ return getRuleContext(OC_SkipContext.class, 0);
+ }
+
+ public OC_LimitContext oC_Limit() {
+ return getRuleContext(OC_LimitContext.class, 0);
+ }
+
+ public OC_ProjectionBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ProjectionBody;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ProjectionBody(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ProjectionBodyContext oC_ProjectionBody() throws RecognitionException {
+ OC_ProjectionBodyContext _localctx = new OC_ProjectionBodyContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_oC_ProjectionBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(559);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 73, _ctx)) {
+ case 1:
+ {
+ setState(556);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(555);
+ match(SP);
+ }
+ }
+
+ setState(558);
+ match(DISTINCT);
+ }
+ break;
+ }
+ setState(561);
+ match(SP);
+ setState(562);
+ oC_ProjectionItems();
+ setState(565);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 74, _ctx)) {
+ case 1:
+ {
+ setState(563);
+ match(SP);
+ setState(564);
+ oC_Order();
+ }
+ break;
+ }
+ setState(569);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 75, _ctx)) {
+ case 1:
+ {
+ setState(567);
+ match(SP);
+ setState(568);
+ oC_Skip();
+ }
+ break;
+ }
+ setState(573);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 76, _ctx)) {
+ case 1:
+ {
+ setState(571);
+ match(SP);
+ setState(572);
+ oC_Limit();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ProjectionItemsContext extends ParserRuleContext {
+ public List oC_ProjectionItem() {
+ return getRuleContexts(OC_ProjectionItemContext.class);
+ }
+
+ public OC_ProjectionItemContext oC_ProjectionItem(int i) {
+ return getRuleContext(OC_ProjectionItemContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ProjectionItemsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ProjectionItems;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ProjectionItems(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ProjectionItemsContext oC_ProjectionItems() throws RecognitionException {
+ OC_ProjectionItemsContext _localctx = new OC_ProjectionItemsContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_oC_ProjectionItems);
+ int _la;
+ try {
+ int _alt;
+ setState(603);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__4:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(575);
+ match(T__4);
+ setState(586);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 79, _ctx);
+ while (_alt != 2
+ && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(577);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(576);
+ match(SP);
+ }
+ }
+
+ setState(579);
+ match(T__1);
+ setState(581);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(580);
+ match(SP);
+ }
+ }
+
+ setState(583);
+ oC_ProjectionItem();
+ }
+ }
+ }
+ setState(588);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 79, _ctx);
+ }
+ }
+ }
+ break;
+ case T__5:
+ case T__7:
+ case T__17:
+ case T__18:
+ case T__23:
+ case T__25:
+ case ALL:
+ case NOT:
+ case NULL:
+ case COUNT:
+ case CASE:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case EXISTS:
+ case TRUE:
+ case FALSE:
+ case HexInteger:
+ case DecimalInteger:
+ case OctalInteger:
+ case HexLetter:
+ case ExponentDecimalReal:
+ case RegularDecimalReal:
+ case StringLiteral:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(589);
+ oC_ProjectionItem();
+ setState(600);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 82, _ctx);
+ while (_alt != 2
+ && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(591);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(590);
+ match(SP);
+ }
+ }
+
+ setState(593);
+ match(T__1);
+ setState(595);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(594);
+ match(SP);
+ }
+ }
+
+ setState(597);
+ oC_ProjectionItem();
+ }
+ }
+ }
+ setState(602);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 82, _ctx);
+ }
+ }
+ }
+ 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 OC_ProjectionItemContext extends ParserRuleContext {
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode AS() {
+ return getToken(CypherParser.AS, 0);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_ProjectionItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ProjectionItem;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ProjectionItem(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ProjectionItemContext oC_ProjectionItem() throws RecognitionException {
+ OC_ProjectionItemContext _localctx = new OC_ProjectionItemContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_oC_ProjectionItem);
+ try {
+ setState(612);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 84, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(605);
+ oC_Expression();
+ setState(606);
+ match(SP);
+ setState(607);
+ match(AS);
+ setState(608);
+ match(SP);
+ setState(609);
+ oC_Variable();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(611);
+ oC_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 OC_OrderContext extends ParserRuleContext {
+ public TerminalNode ORDER() {
+ return getToken(CypherParser.ORDER, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode BY() {
+ return getToken(CypherParser.BY, 0);
+ }
+
+ public List oC_SortItem() {
+ return getRuleContexts(OC_SortItemContext.class);
+ }
+
+ public OC_SortItemContext oC_SortItem(int i) {
+ return getRuleContext(OC_SortItemContext.class, i);
+ }
+
+ public OC_OrderContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Order;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Order(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_OrderContext oC_Order() throws RecognitionException {
+ OC_OrderContext _localctx = new OC_OrderContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_oC_Order);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(614);
+ match(ORDER);
+ setState(615);
+ match(SP);
+ setState(616);
+ match(BY);
+ setState(617);
+ match(SP);
+ setState(618);
+ oC_SortItem();
+ setState(626);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la == T__1) {
+ {
+ {
+ setState(619);
+ match(T__1);
+ setState(621);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(620);
+ match(SP);
+ }
+ }
+
+ setState(623);
+ oC_SortItem();
+ }
+ }
+ setState(628);
+ _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 OC_SkipContext extends ParserRuleContext {
+ public TerminalNode L_SKIP() {
+ return getToken(CypherParser.L_SKIP, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public OC_SkipContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Skip;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Skip(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SkipContext oC_Skip() throws RecognitionException {
+ OC_SkipContext _localctx = new OC_SkipContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_oC_Skip);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(629);
+ match(L_SKIP);
+ setState(630);
+ match(SP);
+ setState(631);
+ oC_Expression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_LimitContext extends ParserRuleContext {
+ public TerminalNode LIMIT() {
+ return getToken(CypherParser.LIMIT, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public OC_LimitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Limit;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Limit(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_LimitContext oC_Limit() throws RecognitionException {
+ OC_LimitContext _localctx = new OC_LimitContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_oC_Limit);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(633);
+ match(LIMIT);
+ setState(634);
+ match(SP);
+ setState(635);
+ oC_Expression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_SortItemContext extends ParserRuleContext {
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public TerminalNode ASCENDING() {
+ return getToken(CypherParser.ASCENDING, 0);
+ }
+
+ public TerminalNode ASC() {
+ return getToken(CypherParser.ASC, 0);
+ }
+
+ public TerminalNode DESCENDING() {
+ return getToken(CypherParser.DESCENDING, 0);
+ }
+
+ public TerminalNode DESC() {
+ return getToken(CypherParser.DESC, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_SortItemContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_SortItem;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_SortItem(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SortItemContext oC_SortItem() throws RecognitionException {
+ OC_SortItemContext _localctx = new OC_SortItemContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_oC_SortItem);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(637);
+ oC_Expression();
+ setState(642);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 88, _ctx)) {
+ case 1:
+ {
+ setState(639);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(638);
+ match(SP);
+ }
+ }
+
+ setState(641);
+ _la = _input.LA(1);
+ if (!(((((_la - 68)) & ~0x3f) == 0
+ && ((1L << (_la - 68)) & 15L) != 0))) {
+ _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 OC_WhereContext extends ParserRuleContext {
+ public TerminalNode WHERE() {
+ return getToken(CypherParser.WHERE, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public OC_WhereContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Where;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Where(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_WhereContext oC_Where() throws RecognitionException {
+ OC_WhereContext _localctx = new OC_WhereContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_oC_Where);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(644);
+ match(WHERE);
+ setState(645);
+ match(SP);
+ setState(646);
+ oC_Expression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PatternContext extends ParserRuleContext {
+ public List oC_PatternPart() {
+ return getRuleContexts(OC_PatternPartContext.class);
+ }
+
+ public OC_PatternPartContext oC_PatternPart(int i) {
+ return getRuleContext(OC_PatternPartContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_PatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Pattern;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Pattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PatternContext oC_Pattern() throws RecognitionException {
+ OC_PatternContext _localctx = new OC_PatternContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_oC_Pattern);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(648);
+ oC_PatternPart();
+ setState(659);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 91, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(650);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(649);
+ match(SP);
+ }
+ }
+
+ setState(652);
+ match(T__1);
+ setState(654);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(653);
+ match(SP);
+ }
+ }
+
+ setState(656);
+ oC_PatternPart();
+ }
+ }
+ }
+ setState(661);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 91, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PatternPartContext extends ParserRuleContext {
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_AnonymousPatternPartContext oC_AnonymousPatternPart() {
+ return getRuleContext(OC_AnonymousPatternPartContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_PatternPartContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PatternPart;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PatternPart(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PatternPartContext oC_PatternPart() throws RecognitionException {
+ OC_PatternPartContext _localctx = new OC_PatternPartContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_oC_PatternPart);
+ int _la;
+ try {
+ setState(673);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case COUNT:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case HexLetter:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(662);
+ oC_Variable();
+ setState(664);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(663);
+ match(SP);
+ }
+ }
+
+ setState(666);
+ match(T__2);
+ setState(668);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(667);
+ match(SP);
+ }
+ }
+
+ setState(670);
+ oC_AnonymousPatternPart();
+ }
+ }
+ break;
+ case T__5:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(672);
+ oC_AnonymousPatternPart();
+ }
+ 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 OC_AnonymousPatternPartContext extends ParserRuleContext {
+ public OC_PatternElementContext oC_PatternElement() {
+ return getRuleContext(OC_PatternElementContext.class, 0);
+ }
+
+ public OC_AnonymousPatternPartContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_AnonymousPatternPart;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_AnonymousPatternPart(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_AnonymousPatternPartContext oC_AnonymousPatternPart()
+ throws RecognitionException {
+ OC_AnonymousPatternPartContext _localctx =
+ new OC_AnonymousPatternPartContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_oC_AnonymousPatternPart);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(675);
+ oC_PatternElement();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PatternElementContext extends ParserRuleContext {
+ public OC_NodePatternContext oC_NodePattern() {
+ return getRuleContext(OC_NodePatternContext.class, 0);
+ }
+
+ public List oC_PatternElementChain() {
+ return getRuleContexts(OC_PatternElementChainContext.class);
+ }
+
+ public OC_PatternElementChainContext oC_PatternElementChain(int i) {
+ return getRuleContext(OC_PatternElementChainContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_PatternElementContext oC_PatternElement() {
+ return getRuleContext(OC_PatternElementContext.class, 0);
+ }
+
+ public OC_PatternElementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PatternElement;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PatternElement(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PatternElementContext oC_PatternElement() throws RecognitionException {
+ OC_PatternElementContext _localctx = new OC_PatternElementContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_oC_PatternElement);
+ int _la;
+ try {
+ int _alt;
+ setState(691);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 97, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(677);
+ oC_NodePattern();
+ setState(684);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 96, _ctx);
+ while (_alt != 2
+ && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(679);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(678);
+ match(SP);
+ }
+ }
+
+ setState(681);
+ oC_PatternElementChain();
+ }
+ }
+ }
+ setState(686);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 96, _ctx);
+ }
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(687);
+ match(T__5);
+ setState(688);
+ oC_PatternElement();
+ setState(689);
+ match(T__6);
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RelationshipsPatternContext extends ParserRuleContext {
+ public OC_NodePatternContext oC_NodePattern() {
+ return getRuleContext(OC_NodePatternContext.class, 0);
+ }
+
+ public List oC_PatternElementChain() {
+ return getRuleContexts(OC_PatternElementChainContext.class);
+ }
+
+ public OC_PatternElementChainContext oC_PatternElementChain(int i) {
+ return getRuleContext(OC_PatternElementChainContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_RelationshipsPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RelationshipsPattern;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RelationshipsPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RelationshipsPatternContext oC_RelationshipsPattern()
+ throws RecognitionException {
+ OC_RelationshipsPatternContext _localctx =
+ new OC_RelationshipsPatternContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_oC_RelationshipsPattern);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(693);
+ oC_NodePattern();
+ setState(698);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(695);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(694);
+ match(SP);
+ }
+ }
+
+ setState(697);
+ oC_PatternElementChain();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(700);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 99, _ctx);
+ } while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_NodePatternContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_NodeLabelsContext oC_NodeLabels() {
+ return getRuleContext(OC_NodeLabelsContext.class, 0);
+ }
+
+ public OC_PropertiesContext oC_Properties() {
+ return getRuleContext(OC_PropertiesContext.class, 0);
+ }
+
+ public OC_NodePatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NodePattern;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_NodePattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NodePatternContext oC_NodePattern() throws RecognitionException {
+ OC_NodePatternContext _localctx = new OC_NodePatternContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_oC_NodePattern);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(702);
+ match(T__5);
+ setState(704);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(703);
+ match(SP);
+ }
+ }
+
+ setState(710);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & 2680059625921L) != 0)) {
+ {
+ setState(706);
+ oC_Variable();
+ setState(708);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(707);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(716);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__9) {
+ {
+ setState(712);
+ oC_NodeLabels();
+ setState(714);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(713);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(722);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__23 || _la == T__25) {
+ {
+ setState(718);
+ oC_Properties();
+ setState(720);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(719);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(724);
+ match(T__6);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PatternElementChainContext extends ParserRuleContext {
+ public OC_RelationshipPatternContext oC_RelationshipPattern() {
+ return getRuleContext(OC_RelationshipPatternContext.class, 0);
+ }
+
+ public OC_NodePatternContext oC_NodePattern() {
+ return getRuleContext(OC_NodePatternContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_PatternElementChainContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PatternElementChain;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PatternElementChain(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PatternElementChainContext oC_PatternElementChain()
+ throws RecognitionException {
+ OC_PatternElementChainContext _localctx =
+ new OC_PatternElementChainContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_oC_PatternElementChain);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(726);
+ oC_RelationshipPattern();
+ setState(728);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(727);
+ match(SP);
+ }
+ }
+
+ setState(730);
+ oC_NodePattern();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RelationshipPatternContext extends ParserRuleContext {
+ public OC_LeftArrowHeadContext oC_LeftArrowHead() {
+ return getRuleContext(OC_LeftArrowHeadContext.class, 0);
+ }
+
+ public List oC_Dash() {
+ return getRuleContexts(OC_DashContext.class);
+ }
+
+ public OC_DashContext oC_Dash(int i) {
+ return getRuleContext(OC_DashContext.class, i);
+ }
+
+ public OC_RightArrowHeadContext oC_RightArrowHead() {
+ return getRuleContext(OC_RightArrowHeadContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_RelationshipDetailContext oC_RelationshipDetail() {
+ return getRuleContext(OC_RelationshipDetailContext.class, 0);
+ }
+
+ public OC_RelationshipPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RelationshipPattern;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RelationshipPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RelationshipPatternContext oC_RelationshipPattern()
+ throws RecognitionException {
+ OC_RelationshipPatternContext _localctx =
+ new OC_RelationshipPatternContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_oC_RelationshipPattern);
+ int _la;
+ try {
+ setState(796);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 124, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(732);
+ oC_LeftArrowHead();
+ setState(734);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(733);
+ match(SP);
+ }
+ }
+
+ setState(736);
+ oC_Dash();
+ setState(738);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 109, _ctx)) {
+ case 1:
+ {
+ setState(737);
+ match(SP);
+ }
+ break;
+ }
+ setState(741);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__7) {
+ {
+ setState(740);
+ oC_RelationshipDetail();
+ }
+ }
+
+ setState(744);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(743);
+ match(SP);
+ }
+ }
+
+ setState(746);
+ oC_Dash();
+ setState(748);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(747);
+ match(SP);
+ }
+ }
+
+ setState(750);
+ oC_RightArrowHead();
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(752);
+ oC_LeftArrowHead();
+ setState(754);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(753);
+ match(SP);
+ }
+ }
+
+ setState(756);
+ oC_Dash();
+ setState(758);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 114, _ctx)) {
+ case 1:
+ {
+ setState(757);
+ match(SP);
+ }
+ break;
+ }
+ setState(761);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__7) {
+ {
+ setState(760);
+ oC_RelationshipDetail();
+ }
+ }
+
+ setState(764);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(763);
+ match(SP);
+ }
+ }
+
+ setState(766);
+ oC_Dash();
+ }
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ {
+ setState(768);
+ oC_Dash();
+ setState(770);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 117, _ctx)) {
+ case 1:
+ {
+ setState(769);
+ match(SP);
+ }
+ break;
+ }
+ setState(773);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__7) {
+ {
+ setState(772);
+ oC_RelationshipDetail();
+ }
+ }
+
+ setState(776);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(775);
+ match(SP);
+ }
+ }
+
+ setState(778);
+ oC_Dash();
+ setState(780);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(779);
+ match(SP);
+ }
+ }
+
+ setState(782);
+ oC_RightArrowHead();
+ }
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ {
+ setState(784);
+ oC_Dash();
+ setState(786);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 121, _ctx)) {
+ case 1:
+ {
+ setState(785);
+ match(SP);
+ }
+ break;
+ }
+ setState(789);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__7) {
+ {
+ setState(788);
+ oC_RelationshipDetail();
+ }
+ }
+
+ setState(792);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(791);
+ match(SP);
+ }
+ }
+
+ setState(794);
+ oC_Dash();
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RelationshipDetailContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_RelationshipTypesContext oC_RelationshipTypes() {
+ return getRuleContext(OC_RelationshipTypesContext.class, 0);
+ }
+
+ public OC_RangeLiteralContext oC_RangeLiteral() {
+ return getRuleContext(OC_RangeLiteralContext.class, 0);
+ }
+
+ public OC_PropertiesContext oC_Properties() {
+ return getRuleContext(OC_PropertiesContext.class, 0);
+ }
+
+ public OC_RelationshipDetailContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RelationshipDetail;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RelationshipDetail(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RelationshipDetailContext oC_RelationshipDetail() throws RecognitionException {
+ OC_RelationshipDetailContext _localctx = new OC_RelationshipDetailContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_oC_RelationshipDetail);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(798);
+ match(T__7);
+ setState(800);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(799);
+ match(SP);
+ }
+ }
+
+ setState(806);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & 2680059625921L) != 0)) {
+ {
+ setState(802);
+ oC_Variable();
+ setState(804);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(803);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(812);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__9) {
+ {
+ setState(808);
+ oC_RelationshipTypes();
+ setState(810);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(809);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(815);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__4) {
+ {
+ setState(814);
+ oC_RangeLiteral();
+ }
+ }
+
+ setState(821);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__23 || _la == T__25) {
+ {
+ setState(817);
+ oC_Properties();
+ setState(819);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(818);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(823);
+ match(T__8);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PropertiesContext extends ParserRuleContext {
+ public OC_MapLiteralContext oC_MapLiteral() {
+ return getRuleContext(OC_MapLiteralContext.class, 0);
+ }
+
+ public OC_ParameterContext oC_Parameter() {
+ return getRuleContext(OC_ParameterContext.class, 0);
+ }
+
+ public OC_PropertiesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Properties;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Properties(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PropertiesContext oC_Properties() throws RecognitionException {
+ OC_PropertiesContext _localctx = new OC_PropertiesContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_oC_Properties);
+ try {
+ setState(827);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__23:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(825);
+ oC_MapLiteral();
+ }
+ break;
+ case T__25:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(826);
+ oC_Parameter();
+ }
+ 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 OC_RelationshipTypesContext extends ParserRuleContext {
+ public List oC_RelTypeName() {
+ return getRuleContexts(OC_RelTypeNameContext.class);
+ }
+
+ public OC_RelTypeNameContext oC_RelTypeName(int i) {
+ return getRuleContext(OC_RelTypeNameContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_RelationshipTypesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RelationshipTypes;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RelationshipTypes(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RelationshipTypesContext oC_RelationshipTypes() throws RecognitionException {
+ OC_RelationshipTypesContext _localctx = new OC_RelationshipTypesContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_oC_RelationshipTypes);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(829);
+ match(T__9);
+ setState(831);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(830);
+ match(SP);
+ }
+ }
+
+ setState(833);
+ oC_RelTypeName();
+ setState(847);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 138, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(835);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(834);
+ match(SP);
+ }
+ }
+
+ setState(837);
+ match(T__10);
+ setState(839);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__9) {
+ {
+ setState(838);
+ match(T__9);
+ }
+ }
+
+ setState(842);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(841);
+ match(SP);
+ }
+ }
+
+ setState(844);
+ oC_RelTypeName();
+ }
+ }
+ }
+ setState(849);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 138, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_NodeLabelsContext extends ParserRuleContext {
+ public List oC_NodeLabel() {
+ return getRuleContexts(OC_NodeLabelContext.class);
+ }
+
+ public OC_NodeLabelContext oC_NodeLabel(int i) {
+ return getRuleContext(OC_NodeLabelContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_NodeLabelsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NodeLabels;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_NodeLabels(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NodeLabelsContext oC_NodeLabels() throws RecognitionException {
+ OC_NodeLabelsContext _localctx = new OC_NodeLabelsContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_oC_NodeLabels);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(850);
+ oC_NodeLabel();
+ setState(857);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 140, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(852);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(851);
+ match(SP);
+ }
+ }
+
+ setState(854);
+ oC_NodeLabel();
+ }
+ }
+ }
+ setState(859);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 140, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_NodeLabelContext extends ParserRuleContext {
+ public OC_LabelNameContext oC_LabelName() {
+ return getRuleContext(OC_LabelNameContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_NodeLabelContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NodeLabel;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_NodeLabel(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NodeLabelContext oC_NodeLabel() throws RecognitionException {
+ OC_NodeLabelContext _localctx = new OC_NodeLabelContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_oC_NodeLabel);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(860);
+ match(T__9);
+ setState(862);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(861);
+ match(SP);
+ }
+ }
+
+ setState(864);
+ oC_LabelName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RangeLiteralContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_IntegerLiteral() {
+ return getRuleContexts(OC_IntegerLiteralContext.class);
+ }
+
+ public OC_IntegerLiteralContext oC_IntegerLiteral(int i) {
+ return getRuleContext(OC_IntegerLiteralContext.class, i);
+ }
+
+ public OC_RangeLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RangeLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RangeLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RangeLiteralContext oC_RangeLiteral() throws RecognitionException {
+ OC_RangeLiteralContext _localctx = new OC_RangeLiteralContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_oC_RangeLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(866);
+ match(T__4);
+ setState(868);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(867);
+ match(SP);
+ }
+ }
+
+ setState(874);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((((_la - 95)) & ~0x3f) == 0 && ((1L << (_la - 95)) & 7L) != 0)) {
+ {
+ setState(870);
+ oC_IntegerLiteral();
+ setState(872);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(871);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(886);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == T__11) {
+ {
+ setState(876);
+ match(T__11);
+ setState(878);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(877);
+ match(SP);
+ }
+ }
+
+ setState(884);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((((_la - 95)) & ~0x3f) == 0 && ((1L << (_la - 95)) & 7L) != 0)) {
+ {
+ setState(880);
+ oC_IntegerLiteral();
+ setState(882);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(881);
+ match(SP);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_LabelNameContext extends ParserRuleContext {
+ public OC_SchemaNameContext oC_SchemaName() {
+ return getRuleContext(OC_SchemaNameContext.class, 0);
+ }
+
+ public OC_LabelNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_LabelName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_LabelName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_LabelNameContext oC_LabelName() throws RecognitionException {
+ OC_LabelNameContext _localctx = new OC_LabelNameContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_oC_LabelName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(888);
+ oC_SchemaName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_RelTypeNameContext extends ParserRuleContext {
+ public OC_SchemaNameContext oC_SchemaName() {
+ return getRuleContext(OC_SchemaNameContext.class, 0);
+ }
+
+ public OC_RelTypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RelTypeName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RelTypeName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RelTypeNameContext oC_RelTypeName() throws RecognitionException {
+ OC_RelTypeNameContext _localctx = new OC_RelTypeNameContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_oC_RelTypeName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(890);
+ oC_SchemaName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PropertyExpressionContext extends ParserRuleContext {
+ public OC_AtomContext oC_Atom() {
+ return getRuleContext(OC_AtomContext.class, 0);
+ }
+
+ public List oC_PropertyLookup() {
+ return getRuleContexts(OC_PropertyLookupContext.class);
+ }
+
+ public OC_PropertyLookupContext oC_PropertyLookup(int i) {
+ return getRuleContext(OC_PropertyLookupContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_PropertyExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PropertyExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PropertyExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PropertyExpressionContext oC_PropertyExpression() throws RecognitionException {
+ OC_PropertyExpressionContext _localctx = new OC_PropertyExpressionContext(_ctx, getState());
+ enterRule(_localctx, 100, RULE_oC_PropertyExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(892);
+ oC_Atom();
+ setState(897);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(894);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(893);
+ match(SP);
+ }
+ }
+
+ setState(896);
+ oC_PropertyLookup();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(899);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 150, _ctx);
+ } while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ExpressionContext extends ParserRuleContext {
+ public OC_OrExpressionContext oC_OrExpression() {
+ return getRuleContext(OC_OrExpressionContext.class, 0);
+ }
+
+ public OC_ExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Expression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Expression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ExpressionContext oC_Expression() throws RecognitionException {
+ OC_ExpressionContext _localctx = new OC_ExpressionContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_oC_Expression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(901);
+ oC_OrExpression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_OrExpressionContext extends ParserRuleContext {
+ public List oC_XorExpression() {
+ return getRuleContexts(OC_XorExpressionContext.class);
+ }
+
+ public OC_XorExpressionContext oC_XorExpression(int i) {
+ return getRuleContext(OC_XorExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List OR() {
+ return getTokens(CypherParser.OR);
+ }
+
+ public TerminalNode OR(int i) {
+ return getToken(CypherParser.OR, i);
+ }
+
+ public OC_OrExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_OrExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_OrExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_OrExpressionContext oC_OrExpression() throws RecognitionException {
+ OC_OrExpressionContext _localctx = new OC_OrExpressionContext(_ctx, getState());
+ enterRule(_localctx, 104, RULE_oC_OrExpression);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(903);
+ oC_XorExpression();
+ setState(910);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 151, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(904);
+ match(SP);
+ setState(905);
+ match(OR);
+ setState(906);
+ match(SP);
+ setState(907);
+ oC_XorExpression();
+ }
+ }
+ }
+ setState(912);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 151, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_XorExpressionContext extends ParserRuleContext {
+ public List oC_AndExpression() {
+ return getRuleContexts(OC_AndExpressionContext.class);
+ }
+
+ public OC_AndExpressionContext oC_AndExpression(int i) {
+ return getRuleContext(OC_AndExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List XOR() {
+ return getTokens(CypherParser.XOR);
+ }
+
+ public TerminalNode XOR(int i) {
+ return getToken(CypherParser.XOR, i);
+ }
+
+ public OC_XorExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_XorExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_XorExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_XorExpressionContext oC_XorExpression() throws RecognitionException {
+ OC_XorExpressionContext _localctx = new OC_XorExpressionContext(_ctx, getState());
+ enterRule(_localctx, 106, RULE_oC_XorExpression);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(913);
+ oC_AndExpression();
+ setState(920);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 152, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(914);
+ match(SP);
+ setState(915);
+ match(XOR);
+ setState(916);
+ match(SP);
+ setState(917);
+ oC_AndExpression();
+ }
+ }
+ }
+ setState(922);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 152, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_AndExpressionContext extends ParserRuleContext {
+ public List oC_NotExpression() {
+ return getRuleContexts(OC_NotExpressionContext.class);
+ }
+
+ public OC_NotExpressionContext oC_NotExpression(int i) {
+ return getRuleContext(OC_NotExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List AND() {
+ return getTokens(CypherParser.AND);
+ }
+
+ public TerminalNode AND(int i) {
+ return getToken(CypherParser.AND, i);
+ }
+
+ public OC_AndExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_AndExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_AndExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_AndExpressionContext oC_AndExpression() throws RecognitionException {
+ OC_AndExpressionContext _localctx = new OC_AndExpressionContext(_ctx, getState());
+ enterRule(_localctx, 108, RULE_oC_AndExpression);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(923);
+ oC_NotExpression();
+ setState(930);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 153, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(924);
+ match(SP);
+ setState(925);
+ match(AND);
+ setState(926);
+ match(SP);
+ setState(927);
+ oC_NotExpression();
+ }
+ }
+ }
+ setState(932);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 153, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_NotExpressionContext extends ParserRuleContext {
+ public OC_ComparisonExpressionContext oC_ComparisonExpression() {
+ return getRuleContext(OC_ComparisonExpressionContext.class, 0);
+ }
+
+ public List NOT() {
+ return getTokens(CypherParser.NOT);
+ }
+
+ public TerminalNode NOT(int i) {
+ return getToken(CypherParser.NOT, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_NotExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NotExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_NotExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NotExpressionContext oC_NotExpression() throws RecognitionException {
+ OC_NotExpressionContext _localctx = new OC_NotExpressionContext(_ctx, getState());
+ enterRule(_localctx, 110, RULE_oC_NotExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(939);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la == NOT) {
+ {
+ {
+ setState(933);
+ match(NOT);
+ setState(935);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(934);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(941);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(942);
+ oC_ComparisonExpression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ComparisonExpressionContext extends ParserRuleContext {
+ public OC_StringListNullPredicateExpressionContext oC_StringListNullPredicateExpression() {
+ return getRuleContext(OC_StringListNullPredicateExpressionContext.class, 0);
+ }
+
+ public List oC_PartialComparisonExpression() {
+ return getRuleContexts(OC_PartialComparisonExpressionContext.class);
+ }
+
+ public OC_PartialComparisonExpressionContext oC_PartialComparisonExpression(int i) {
+ return getRuleContext(OC_PartialComparisonExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ComparisonExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ComparisonExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ComparisonExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ComparisonExpressionContext oC_ComparisonExpression()
+ throws RecognitionException {
+ OC_ComparisonExpressionContext _localctx =
+ new OC_ComparisonExpressionContext(_ctx, getState());
+ enterRule(_localctx, 112, RULE_oC_ComparisonExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(944);
+ oC_StringListNullPredicateExpression();
+ setState(951);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 157, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(946);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(945);
+ match(SP);
+ }
+ }
+
+ setState(948);
+ oC_PartialComparisonExpression();
+ }
+ }
+ }
+ setState(953);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 157, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PartialComparisonExpressionContext extends ParserRuleContext {
+ public OC_StringListNullPredicateExpressionContext oC_StringListNullPredicateExpression() {
+ return getRuleContext(OC_StringListNullPredicateExpressionContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_PartialComparisonExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PartialComparisonExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_PartialComparisonExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PartialComparisonExpressionContext oC_PartialComparisonExpression()
+ throws RecognitionException {
+ OC_PartialComparisonExpressionContext _localctx =
+ new OC_PartialComparisonExpressionContext(_ctx, getState());
+ enterRule(_localctx, 114, RULE_oC_PartialComparisonExpression);
+ int _la;
+ try {
+ setState(984);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__2:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(954);
+ match(T__2);
+ setState(956);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(955);
+ match(SP);
+ }
+ }
+
+ setState(958);
+ oC_StringListNullPredicateExpression();
+ }
+ }
+ break;
+ case T__12:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(959);
+ match(T__12);
+ setState(961);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(960);
+ match(SP);
+ }
+ }
+
+ setState(963);
+ oC_StringListNullPredicateExpression();
+ }
+ }
+ break;
+ case T__13:
+ enterOuterAlt(_localctx, 3);
+ {
+ {
+ setState(964);
+ match(T__13);
+ setState(966);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(965);
+ match(SP);
+ }
+ }
+
+ setState(968);
+ oC_StringListNullPredicateExpression();
+ }
+ }
+ break;
+ case T__14:
+ enterOuterAlt(_localctx, 4);
+ {
+ {
+ setState(969);
+ match(T__14);
+ setState(971);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(970);
+ match(SP);
+ }
+ }
+
+ setState(973);
+ oC_StringListNullPredicateExpression();
+ }
+ }
+ break;
+ case T__15:
+ enterOuterAlt(_localctx, 5);
+ {
+ {
+ setState(974);
+ match(T__15);
+ setState(976);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(975);
+ match(SP);
+ }
+ }
+
+ setState(978);
+ oC_StringListNullPredicateExpression();
+ }
+ }
+ break;
+ case T__16:
+ enterOuterAlt(_localctx, 6);
+ {
+ {
+ setState(979);
+ match(T__16);
+ setState(981);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(980);
+ match(SP);
+ }
+ }
+
+ setState(983);
+ oC_StringListNullPredicateExpression();
+ }
+ }
+ 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 OC_StringListNullPredicateExpressionContext extends ParserRuleContext {
+ public OC_AddOrSubtractExpressionContext oC_AddOrSubtractExpression() {
+ return getRuleContext(OC_AddOrSubtractExpressionContext.class, 0);
+ }
+
+ public List oC_StringPredicateExpression() {
+ return getRuleContexts(OC_StringPredicateExpressionContext.class);
+ }
+
+ public OC_StringPredicateExpressionContext oC_StringPredicateExpression(int i) {
+ return getRuleContext(OC_StringPredicateExpressionContext.class, i);
+ }
+
+ public List oC_ListPredicateExpression() {
+ return getRuleContexts(OC_ListPredicateExpressionContext.class);
+ }
+
+ public OC_ListPredicateExpressionContext oC_ListPredicateExpression(int i) {
+ return getRuleContext(OC_ListPredicateExpressionContext.class, i);
+ }
+
+ public List oC_NullPredicateExpression() {
+ return getRuleContexts(OC_NullPredicateExpressionContext.class);
+ }
+
+ public OC_NullPredicateExpressionContext oC_NullPredicateExpression(int i) {
+ return getRuleContext(OC_NullPredicateExpressionContext.class, i);
+ }
+
+ public OC_StringListNullPredicateExpressionContext(
+ ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_StringListNullPredicateExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_StringListNullPredicateExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_StringListNullPredicateExpressionContext oC_StringListNullPredicateExpression()
+ throws RecognitionException {
+ OC_StringListNullPredicateExpressionContext _localctx =
+ new OC_StringListNullPredicateExpressionContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_oC_StringListNullPredicateExpression);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(986);
+ oC_AddOrSubtractExpression();
+ setState(992);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 166, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ setState(990);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 165, _ctx)) {
+ case 1:
+ {
+ setState(987);
+ oC_StringPredicateExpression();
+ }
+ break;
+ case 2:
+ {
+ setState(988);
+ oC_ListPredicateExpression();
+ }
+ break;
+ case 3:
+ {
+ setState(989);
+ oC_NullPredicateExpression();
+ }
+ break;
+ }
+ }
+ }
+ setState(994);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 166, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_StringPredicateExpressionContext extends ParserRuleContext {
+ public OC_AddOrSubtractExpressionContext oC_AddOrSubtractExpression() {
+ return getRuleContext(OC_AddOrSubtractExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode STARTS() {
+ return getToken(CypherParser.STARTS, 0);
+ }
+
+ public TerminalNode WITH() {
+ return getToken(CypherParser.WITH, 0);
+ }
+
+ public TerminalNode ENDS() {
+ return getToken(CypherParser.ENDS, 0);
+ }
+
+ public TerminalNode CONTAINS() {
+ return getToken(CypherParser.CONTAINS, 0);
+ }
+
+ public OC_StringPredicateExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_StringPredicateExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_StringPredicateExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_StringPredicateExpressionContext oC_StringPredicateExpression()
+ throws RecognitionException {
+ OC_StringPredicateExpressionContext _localctx =
+ new OC_StringPredicateExpressionContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_oC_StringPredicateExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1005);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 167, _ctx)) {
+ case 1:
+ {
+ {
+ setState(995);
+ match(SP);
+ setState(996);
+ match(STARTS);
+ setState(997);
+ match(SP);
+ setState(998);
+ match(WITH);
+ }
+ }
+ break;
+ case 2:
+ {
+ {
+ setState(999);
+ match(SP);
+ setState(1000);
+ match(ENDS);
+ setState(1001);
+ match(SP);
+ setState(1002);
+ match(WITH);
+ }
+ }
+ break;
+ case 3:
+ {
+ {
+ setState(1003);
+ match(SP);
+ setState(1004);
+ match(CONTAINS);
+ }
+ }
+ break;
+ }
+ setState(1008);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1007);
+ match(SP);
+ }
+ }
+
+ setState(1010);
+ oC_AddOrSubtractExpression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ListPredicateExpressionContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode IN() {
+ return getToken(CypherParser.IN, 0);
+ }
+
+ public OC_AddOrSubtractExpressionContext oC_AddOrSubtractExpression() {
+ return getRuleContext(OC_AddOrSubtractExpressionContext.class, 0);
+ }
+
+ public OC_ListPredicateExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ListPredicateExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ListPredicateExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ListPredicateExpressionContext oC_ListPredicateExpression()
+ throws RecognitionException {
+ OC_ListPredicateExpressionContext _localctx =
+ new OC_ListPredicateExpressionContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_oC_ListPredicateExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1012);
+ match(SP);
+ setState(1013);
+ match(IN);
+ setState(1015);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1014);
+ match(SP);
+ }
+ }
+
+ setState(1017);
+ oC_AddOrSubtractExpression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_NullPredicateExpressionContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode IS() {
+ return getToken(CypherParser.IS, 0);
+ }
+
+ public TerminalNode NULL() {
+ return getToken(CypherParser.NULL, 0);
+ }
+
+ public TerminalNode NOT() {
+ return getToken(CypherParser.NOT, 0);
+ }
+
+ public OC_NullPredicateExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NullPredicateExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_NullPredicateExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NullPredicateExpressionContext oC_NullPredicateExpression()
+ throws RecognitionException {
+ OC_NullPredicateExpressionContext _localctx =
+ new OC_NullPredicateExpressionContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_oC_NullPredicateExpression);
+ try {
+ setState(1029);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 170, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(1019);
+ match(SP);
+ setState(1020);
+ match(IS);
+ setState(1021);
+ match(SP);
+ setState(1022);
+ match(NULL);
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(1023);
+ match(SP);
+ setState(1024);
+ match(IS);
+ setState(1025);
+ match(SP);
+ setState(1026);
+ match(NOT);
+ setState(1027);
+ match(SP);
+ setState(1028);
+ match(NULL);
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_AddOrSubtractExpressionContext extends ParserRuleContext {
+ public List oC_MultiplyDivideModuloExpression() {
+ return getRuleContexts(OC_MultiplyDivideModuloExpressionContext.class);
+ }
+
+ public OC_MultiplyDivideModuloExpressionContext oC_MultiplyDivideModuloExpression(int i) {
+ return getRuleContext(OC_MultiplyDivideModuloExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_AddOrSubtractExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_AddOrSubtractExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_AddOrSubtractExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_AddOrSubtractExpressionContext oC_AddOrSubtractExpression()
+ throws RecognitionException {
+ OC_AddOrSubtractExpressionContext _localctx =
+ new OC_AddOrSubtractExpressionContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_oC_AddOrSubtractExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1031);
+ oC_MultiplyDivideModuloExpression();
+ setState(1050);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 176, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ setState(1048);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 175, _ctx)) {
+ case 1:
+ {
+ {
+ setState(1033);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1032);
+ match(SP);
+ }
+ }
+
+ setState(1035);
+ match(T__17);
+ setState(1037);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1036);
+ match(SP);
+ }
+ }
+
+ setState(1039);
+ oC_MultiplyDivideModuloExpression();
+ }
+ }
+ break;
+ case 2:
+ {
+ {
+ setState(1041);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1040);
+ match(SP);
+ }
+ }
+
+ setState(1043);
+ match(T__18);
+ setState(1045);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1044);
+ match(SP);
+ }
+ }
+
+ setState(1047);
+ oC_MultiplyDivideModuloExpression();
+ }
+ }
+ break;
+ }
+ }
+ }
+ setState(1052);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 176, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_MultiplyDivideModuloExpressionContext extends ParserRuleContext {
+ public List oC_PowerOfExpression() {
+ return getRuleContexts(OC_PowerOfExpressionContext.class);
+ }
+
+ public OC_PowerOfExpressionContext oC_PowerOfExpression(int i) {
+ return getRuleContext(OC_PowerOfExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_MultiplyDivideModuloExpressionContext(
+ ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_MultiplyDivideModuloExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_MultiplyDivideModuloExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_MultiplyDivideModuloExpressionContext oC_MultiplyDivideModuloExpression()
+ throws RecognitionException {
+ OC_MultiplyDivideModuloExpressionContext _localctx =
+ new OC_MultiplyDivideModuloExpressionContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_oC_MultiplyDivideModuloExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1053);
+ oC_PowerOfExpression();
+ setState(1080);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 184, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ setState(1078);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 183, _ctx)) {
+ case 1:
+ {
+ {
+ setState(1055);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1054);
+ match(SP);
+ }
+ }
+
+ setState(1057);
+ match(T__4);
+ setState(1059);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1058);
+ match(SP);
+ }
+ }
+
+ setState(1061);
+ oC_PowerOfExpression();
+ }
+ }
+ break;
+ case 2:
+ {
+ {
+ setState(1063);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1062);
+ match(SP);
+ }
+ }
+
+ setState(1065);
+ match(T__19);
+ setState(1067);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1066);
+ match(SP);
+ }
+ }
+
+ setState(1069);
+ oC_PowerOfExpression();
+ }
+ }
+ break;
+ case 3:
+ {
+ {
+ setState(1071);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1070);
+ match(SP);
+ }
+ }
+
+ setState(1073);
+ match(T__20);
+ setState(1075);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1074);
+ match(SP);
+ }
+ }
+
+ setState(1077);
+ oC_PowerOfExpression();
+ }
+ }
+ break;
+ }
+ }
+ }
+ setState(1082);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 184, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PowerOfExpressionContext extends ParserRuleContext {
+ public List oC_UnaryAddOrSubtractExpression() {
+ return getRuleContexts(OC_UnaryAddOrSubtractExpressionContext.class);
+ }
+
+ public OC_UnaryAddOrSubtractExpressionContext oC_UnaryAddOrSubtractExpression(int i) {
+ return getRuleContext(OC_UnaryAddOrSubtractExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_PowerOfExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PowerOfExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PowerOfExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PowerOfExpressionContext oC_PowerOfExpression() throws RecognitionException {
+ OC_PowerOfExpressionContext _localctx = new OC_PowerOfExpressionContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_oC_PowerOfExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1083);
+ oC_UnaryAddOrSubtractExpression();
+ setState(1094);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 187, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(1085);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1084);
+ match(SP);
+ }
+ }
+
+ setState(1087);
+ match(T__21);
+ setState(1089);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1088);
+ match(SP);
+ }
+ }
+
+ setState(1091);
+ oC_UnaryAddOrSubtractExpression();
+ }
+ }
+ }
+ setState(1096);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 187, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_UnaryAddOrSubtractExpressionContext extends ParserRuleContext {
+ public OC_NonArithmeticOperatorExpressionContext oC_NonArithmeticOperatorExpression() {
+ return getRuleContext(OC_NonArithmeticOperatorExpressionContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_UnaryAddOrSubtractExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_UnaryAddOrSubtractExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_UnaryAddOrSubtractExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_UnaryAddOrSubtractExpressionContext oC_UnaryAddOrSubtractExpression()
+ throws RecognitionException {
+ OC_UnaryAddOrSubtractExpressionContext _localctx =
+ new OC_UnaryAddOrSubtractExpressionContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_oC_UnaryAddOrSubtractExpression);
+ int _la;
+ try {
+ setState(1103);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__5:
+ case T__7:
+ case T__23:
+ case T__25:
+ case ALL:
+ case NULL:
+ case COUNT:
+ case CASE:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case EXISTS:
+ case TRUE:
+ case FALSE:
+ case HexInteger:
+ case DecimalInteger:
+ case OctalInteger:
+ case HexLetter:
+ case ExponentDecimalReal:
+ case RegularDecimalReal:
+ case StringLiteral:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1097);
+ oC_NonArithmeticOperatorExpression();
+ }
+ break;
+ case T__17:
+ case T__18:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(1098);
+ _la = _input.LA(1);
+ if (!(_la == T__17 || _la == T__18)) {
+ _errHandler.recoverInline(this);
+ } else {
+ if (_input.LA(1) == Token.EOF) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(1100);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1099);
+ match(SP);
+ }
+ }
+
+ setState(1102);
+ oC_NonArithmeticOperatorExpression();
+ }
+ }
+ 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 OC_NonArithmeticOperatorExpressionContext extends ParserRuleContext {
+ public OC_AtomContext oC_Atom() {
+ return getRuleContext(OC_AtomContext.class, 0);
+ }
+
+ public OC_NodeLabelsContext oC_NodeLabels() {
+ return getRuleContext(OC_NodeLabelsContext.class, 0);
+ }
+
+ public List oC_ListOperatorExpression() {
+ return getRuleContexts(OC_ListOperatorExpressionContext.class);
+ }
+
+ public OC_ListOperatorExpressionContext oC_ListOperatorExpression(int i) {
+ return getRuleContext(OC_ListOperatorExpressionContext.class, i);
+ }
+
+ public List oC_PropertyLookup() {
+ return getRuleContexts(OC_PropertyLookupContext.class);
+ }
+
+ public OC_PropertyLookupContext oC_PropertyLookup(int i) {
+ return getRuleContext(OC_PropertyLookupContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_NonArithmeticOperatorExpressionContext(
+ ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NonArithmeticOperatorExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_NonArithmeticOperatorExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NonArithmeticOperatorExpressionContext oC_NonArithmeticOperatorExpression()
+ throws RecognitionException {
+ OC_NonArithmeticOperatorExpressionContext _localctx =
+ new OC_NonArithmeticOperatorExpressionContext(_ctx, getState());
+ enterRule(_localctx, 132, RULE_oC_NonArithmeticOperatorExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1105);
+ oC_Atom();
+ setState(1116);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 193, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ setState(1114);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 192, _ctx)) {
+ case 1:
+ {
+ {
+ setState(1107);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1106);
+ match(SP);
+ }
+ }
+
+ setState(1109);
+ oC_ListOperatorExpression();
+ }
+ }
+ break;
+ case 2:
+ {
+ {
+ setState(1111);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1110);
+ match(SP);
+ }
+ }
+
+ setState(1113);
+ oC_PropertyLookup();
+ }
+ }
+ break;
+ }
+ }
+ }
+ setState(1118);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 193, _ctx);
+ }
+ setState(1123);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 195, _ctx)) {
+ case 1:
+ {
+ setState(1120);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1119);
+ match(SP);
+ }
+ }
+
+ setState(1122);
+ oC_NodeLabels();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ListOperatorExpressionContext extends ParserRuleContext {
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public OC_ListOperatorExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ListOperatorExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ListOperatorExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ListOperatorExpressionContext oC_ListOperatorExpression()
+ throws RecognitionException {
+ OC_ListOperatorExpressionContext _localctx =
+ new OC_ListOperatorExpressionContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_oC_ListOperatorExpression);
+ int _la;
+ try {
+ setState(1138);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 198, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(1125);
+ match(T__7);
+ setState(1126);
+ oC_Expression();
+ setState(1127);
+ match(T__8);
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(1129);
+ match(T__7);
+ setState(1131);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 140737573028160L) != 0)
+ || ((((_la - 76)) & ~0x3f) == 0
+ && ((1L << (_la - 76)) & 343051394343361L) != 0)) {
+ {
+ setState(1130);
+ oC_Expression();
+ }
+ }
+
+ setState(1133);
+ match(T__11);
+ setState(1135);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 140737573028160L) != 0)
+ || ((((_la - 76)) & ~0x3f) == 0
+ && ((1L << (_la - 76)) & 343051394343361L) != 0)) {
+ {
+ setState(1134);
+ oC_Expression();
+ }
+ }
+
+ setState(1137);
+ match(T__8);
+ }
+ }
+ break;
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PropertyLookupContext extends ParserRuleContext {
+ public OC_PropertyKeyNameContext oC_PropertyKeyName() {
+ return getRuleContext(OC_PropertyKeyNameContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_PropertyLookupContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PropertyLookup;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PropertyLookup(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PropertyLookupContext oC_PropertyLookup() throws RecognitionException {
+ OC_PropertyLookupContext _localctx = new OC_PropertyLookupContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_oC_PropertyLookup);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1140);
+ match(T__22);
+ setState(1142);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1141);
+ match(SP);
+ }
+ }
+
+ {
+ setState(1144);
+ oC_PropertyKeyName();
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_AtomContext extends ParserRuleContext {
+ public OC_LiteralContext oC_Literal() {
+ return getRuleContext(OC_LiteralContext.class, 0);
+ }
+
+ public OC_ParameterContext oC_Parameter() {
+ return getRuleContext(OC_ParameterContext.class, 0);
+ }
+
+ public OC_CaseExpressionContext oC_CaseExpression() {
+ return getRuleContext(OC_CaseExpressionContext.class, 0);
+ }
+
+ public TerminalNode COUNT() {
+ return getToken(CypherParser.COUNT, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ListComprehensionContext oC_ListComprehension() {
+ return getRuleContext(OC_ListComprehensionContext.class, 0);
+ }
+
+ public OC_PatternComprehensionContext oC_PatternComprehension() {
+ return getRuleContext(OC_PatternComprehensionContext.class, 0);
+ }
+
+ public OC_QuantifierContext oC_Quantifier() {
+ return getRuleContext(OC_QuantifierContext.class, 0);
+ }
+
+ public OC_PatternPredicateContext oC_PatternPredicate() {
+ return getRuleContext(OC_PatternPredicateContext.class, 0);
+ }
+
+ public OC_ParenthesizedExpressionContext oC_ParenthesizedExpression() {
+ return getRuleContext(OC_ParenthesizedExpressionContext.class, 0);
+ }
+
+ public OC_FunctionInvocationContext oC_FunctionInvocation() {
+ return getRuleContext(OC_FunctionInvocationContext.class, 0);
+ }
+
+ public OC_ExistentialSubqueryContext oC_ExistentialSubquery() {
+ return getRuleContext(OC_ExistentialSubqueryContext.class, 0);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_AtomContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Atom;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Atom(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_AtomContext oC_Atom() throws RecognitionException {
+ OC_AtomContext _localctx = new OC_AtomContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_oC_Atom);
+ int _la;
+ try {
+ setState(1170);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 203, _ctx)) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1146);
+ oC_Literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1147);
+ oC_Parameter();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1148);
+ oC_CaseExpression();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ {
+ setState(1149);
+ match(COUNT);
+ setState(1151);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1150);
+ match(SP);
+ }
+ }
+
+ setState(1153);
+ match(T__5);
+ setState(1155);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1154);
+ match(SP);
+ }
+ }
+
+ setState(1157);
+ match(T__4);
+ setState(1159);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1158);
+ match(SP);
+ }
+ }
+
+ setState(1161);
+ match(T__6);
+ }
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1162);
+ oC_ListComprehension();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1163);
+ oC_PatternComprehension();
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1164);
+ oC_Quantifier();
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1165);
+ oC_PatternPredicate();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1166);
+ oC_ParenthesizedExpression();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1167);
+ oC_FunctionInvocation();
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(1168);
+ oC_ExistentialSubquery();
+ }
+ break;
+ case 12:
+ enterOuterAlt(_localctx, 12);
+ {
+ setState(1169);
+ oC_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 OC_CaseExpressionContext extends ParserRuleContext {
+ public TerminalNode END() {
+ return getToken(CypherParser.END, 0);
+ }
+
+ public TerminalNode ELSE() {
+ return getToken(CypherParser.ELSE, 0);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode CASE() {
+ return getToken(CypherParser.CASE, 0);
+ }
+
+ public List oC_CaseAlternative() {
+ return getRuleContexts(OC_CaseAlternativeContext.class);
+ }
+
+ public OC_CaseAlternativeContext oC_CaseAlternative(int i) {
+ return getRuleContext(OC_CaseAlternativeContext.class, i);
+ }
+
+ public OC_CaseExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_CaseExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_CaseExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_CaseExpressionContext oC_CaseExpression() throws RecognitionException {
+ OC_CaseExpressionContext _localctx = new OC_CaseExpressionContext(_ctx, getState());
+ enterRule(_localctx, 140, RULE_oC_CaseExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1194);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 209, _ctx)) {
+ case 1:
+ {
+ {
+ setState(1172);
+ match(CASE);
+ setState(1177);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(1174);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1173);
+ match(SP);
+ }
+ }
+
+ setState(1176);
+ oC_CaseAlternative();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(1179);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 205, _ctx);
+ } while (_alt != 2
+ && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER);
+ }
+ }
+ break;
+ case 2:
+ {
+ {
+ setState(1181);
+ match(CASE);
+ setState(1183);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1182);
+ match(SP);
+ }
+ }
+
+ setState(1185);
+ oC_Expression();
+ setState(1190);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(1187);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1186);
+ match(SP);
+ }
+ }
+
+ setState(1189);
+ oC_CaseAlternative();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(1192);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 208, _ctx);
+ } while (_alt != 2
+ && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER);
+ }
+ }
+ break;
+ }
+ setState(1204);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 212, _ctx)) {
+ case 1:
+ {
+ setState(1197);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1196);
+ match(SP);
+ }
+ }
+
+ setState(1199);
+ match(ELSE);
+ setState(1201);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1200);
+ match(SP);
+ }
+ }
+
+ setState(1203);
+ oC_Expression();
+ }
+ break;
+ }
+ setState(1207);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1206);
+ match(SP);
+ }
+ }
+
+ setState(1209);
+ match(END);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_CaseAlternativeContext extends ParserRuleContext {
+ public TerminalNode WHEN() {
+ return getToken(CypherParser.WHEN, 0);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public TerminalNode THEN() {
+ return getToken(CypherParser.THEN, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_CaseAlternativeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_CaseAlternative;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_CaseAlternative(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_CaseAlternativeContext oC_CaseAlternative() throws RecognitionException {
+ OC_CaseAlternativeContext _localctx = new OC_CaseAlternativeContext(_ctx, getState());
+ enterRule(_localctx, 142, RULE_oC_CaseAlternative);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1211);
+ match(WHEN);
+ setState(1213);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1212);
+ match(SP);
+ }
+ }
+
+ setState(1215);
+ oC_Expression();
+ setState(1217);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1216);
+ match(SP);
+ }
+ }
+
+ setState(1219);
+ match(THEN);
+ setState(1221);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1220);
+ match(SP);
+ }
+ }
+
+ setState(1223);
+ oC_Expression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ListComprehensionContext extends ParserRuleContext {
+ public OC_FilterExpressionContext oC_FilterExpression() {
+ return getRuleContext(OC_FilterExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public OC_ListComprehensionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ListComprehension;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ListComprehension(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ListComprehensionContext oC_ListComprehension() throws RecognitionException {
+ OC_ListComprehensionContext _localctx = new OC_ListComprehensionContext(_ctx, getState());
+ enterRule(_localctx, 144, RULE_oC_ListComprehension);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1225);
+ match(T__7);
+ setState(1227);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1226);
+ match(SP);
+ }
+ }
+
+ setState(1229);
+ oC_FilterExpression();
+ setState(1238);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 220, _ctx)) {
+ case 1:
+ {
+ setState(1231);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1230);
+ match(SP);
+ }
+ }
+
+ setState(1233);
+ match(T__10);
+ setState(1235);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1234);
+ match(SP);
+ }
+ }
+
+ setState(1237);
+ oC_Expression();
+ }
+ break;
+ }
+ setState(1241);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1240);
+ match(SP);
+ }
+ }
+
+ setState(1243);
+ match(T__8);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PatternComprehensionContext extends ParserRuleContext {
+ public OC_RelationshipsPatternContext oC_RelationshipsPattern() {
+ return getRuleContext(OC_RelationshipsPatternContext.class, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public OC_WhereContext oC_Where() {
+ return getRuleContext(OC_WhereContext.class, 0);
+ }
+
+ public OC_PatternComprehensionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PatternComprehension;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PatternComprehension(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PatternComprehensionContext oC_PatternComprehension()
+ throws RecognitionException {
+ OC_PatternComprehensionContext _localctx =
+ new OC_PatternComprehensionContext(_ctx, getState());
+ enterRule(_localctx, 146, RULE_oC_PatternComprehension);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1245);
+ match(T__7);
+ setState(1247);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1246);
+ match(SP);
+ }
+ }
+
+ setState(1257);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & 2680059625921L) != 0)) {
+ {
+ setState(1249);
+ oC_Variable();
+ setState(1251);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1250);
+ match(SP);
+ }
+ }
+
+ setState(1253);
+ match(T__2);
+ setState(1255);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1254);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(1259);
+ oC_RelationshipsPattern();
+ setState(1261);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1260);
+ match(SP);
+ }
+ }
+
+ setState(1267);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == WHERE) {
+ {
+ setState(1263);
+ oC_Where();
+ setState(1265);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1264);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(1269);
+ match(T__10);
+ setState(1271);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1270);
+ match(SP);
+ }
+ }
+
+ setState(1273);
+ oC_Expression();
+ setState(1275);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1274);
+ match(SP);
+ }
+ }
+
+ setState(1277);
+ match(T__8);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_QuantifierContext extends ParserRuleContext {
+ public TerminalNode ALL() {
+ return getToken(CypherParser.ALL, 0);
+ }
+
+ public OC_FilterExpressionContext oC_FilterExpression() {
+ return getRuleContext(OC_FilterExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode ANY() {
+ return getToken(CypherParser.ANY, 0);
+ }
+
+ public TerminalNode NONE() {
+ return getToken(CypherParser.NONE, 0);
+ }
+
+ public TerminalNode SINGLE() {
+ return getToken(CypherParser.SINGLE, 0);
+ }
+
+ public OC_QuantifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Quantifier;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Quantifier(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_QuantifierContext oC_Quantifier() throws RecognitionException {
+ OC_QuantifierContext _localctx = new OC_QuantifierContext(_ctx, getState());
+ enterRule(_localctx, 148, RULE_oC_Quantifier);
+ int _la;
+ try {
+ setState(1335);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ALL:
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(1279);
+ match(ALL);
+ setState(1281);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1280);
+ match(SP);
+ }
+ }
+
+ setState(1283);
+ match(T__5);
+ setState(1285);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1284);
+ match(SP);
+ }
+ }
+
+ setState(1287);
+ oC_FilterExpression();
+ setState(1289);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1288);
+ match(SP);
+ }
+ }
+
+ setState(1291);
+ match(T__6);
+ }
+ }
+ break;
+ case ANY:
+ enterOuterAlt(_localctx, 2);
+ {
+ {
+ setState(1293);
+ match(ANY);
+ setState(1295);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1294);
+ match(SP);
+ }
+ }
+
+ setState(1297);
+ match(T__5);
+ setState(1299);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1298);
+ match(SP);
+ }
+ }
+
+ setState(1301);
+ oC_FilterExpression();
+ setState(1303);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1302);
+ match(SP);
+ }
+ }
+
+ setState(1305);
+ match(T__6);
+ }
+ }
+ break;
+ case NONE:
+ enterOuterAlt(_localctx, 3);
+ {
+ {
+ setState(1307);
+ match(NONE);
+ setState(1309);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1308);
+ match(SP);
+ }
+ }
+
+ setState(1311);
+ match(T__5);
+ setState(1313);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1312);
+ match(SP);
+ }
+ }
+
+ setState(1315);
+ oC_FilterExpression();
+ setState(1317);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1316);
+ match(SP);
+ }
+ }
+
+ setState(1319);
+ match(T__6);
+ }
+ }
+ break;
+ case SINGLE:
+ enterOuterAlt(_localctx, 4);
+ {
+ {
+ setState(1321);
+ match(SINGLE);
+ setState(1323);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1322);
+ match(SP);
+ }
+ }
+
+ setState(1325);
+ match(T__5);
+ setState(1327);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1326);
+ match(SP);
+ }
+ }
+
+ setState(1329);
+ oC_FilterExpression();
+ setState(1331);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1330);
+ match(SP);
+ }
+ }
+
+ setState(1333);
+ match(T__6);
+ }
+ }
+ 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 OC_FilterExpressionContext extends ParserRuleContext {
+ public OC_IdInCollContext oC_IdInColl() {
+ return getRuleContext(OC_IdInCollContext.class, 0);
+ }
+
+ public OC_WhereContext oC_Where() {
+ return getRuleContext(OC_WhereContext.class, 0);
+ }
+
+ public TerminalNode SP() {
+ return getToken(CypherParser.SP, 0);
+ }
+
+ public OC_FilterExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_FilterExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_FilterExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_FilterExpressionContext oC_FilterExpression() throws RecognitionException {
+ OC_FilterExpressionContext _localctx = new OC_FilterExpressionContext(_ctx, getState());
+ enterRule(_localctx, 150, RULE_oC_FilterExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1337);
+ oC_IdInColl();
+ setState(1342);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 245, _ctx)) {
+ case 1:
+ {
+ setState(1339);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1338);
+ match(SP);
+ }
+ }
+
+ setState(1341);
+ oC_Where();
+ }
+ break;
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PatternPredicateContext extends ParserRuleContext {
+ public OC_RelationshipsPatternContext oC_RelationshipsPattern() {
+ return getRuleContext(OC_RelationshipsPatternContext.class, 0);
+ }
+
+ public OC_PatternPredicateContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PatternPredicate;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PatternPredicate(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PatternPredicateContext oC_PatternPredicate() throws RecognitionException {
+ OC_PatternPredicateContext _localctx = new OC_PatternPredicateContext(_ctx, getState());
+ enterRule(_localctx, 152, RULE_oC_PatternPredicate);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1344);
+ oC_RelationshipsPattern();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ParenthesizedExpressionContext extends ParserRuleContext {
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_ParenthesizedExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ParenthesizedExpression;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ParenthesizedExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ParenthesizedExpressionContext oC_ParenthesizedExpression()
+ throws RecognitionException {
+ OC_ParenthesizedExpressionContext _localctx =
+ new OC_ParenthesizedExpressionContext(_ctx, getState());
+ enterRule(_localctx, 154, RULE_oC_ParenthesizedExpression);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1346);
+ match(T__5);
+ setState(1348);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1347);
+ match(SP);
+ }
+ }
+
+ setState(1350);
+ oC_Expression();
+ setState(1352);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1351);
+ match(SP);
+ }
+ }
+
+ setState(1354);
+ match(T__6);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_IdInCollContext extends ParserRuleContext {
+ public OC_VariableContext oC_Variable() {
+ return getRuleContext(OC_VariableContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode IN() {
+ return getToken(CypherParser.IN, 0);
+ }
+
+ public OC_ExpressionContext oC_Expression() {
+ return getRuleContext(OC_ExpressionContext.class, 0);
+ }
+
+ public OC_IdInCollContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_IdInColl;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_IdInColl(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_IdInCollContext oC_IdInColl() throws RecognitionException {
+ OC_IdInCollContext _localctx = new OC_IdInCollContext(_ctx, getState());
+ enterRule(_localctx, 156, RULE_oC_IdInColl);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1356);
+ oC_Variable();
+ setState(1357);
+ match(SP);
+ setState(1358);
+ match(IN);
+ setState(1359);
+ match(SP);
+ setState(1360);
+ oC_Expression();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_FunctionInvocationContext extends ParserRuleContext {
+ public OC_FunctionNameContext oC_FunctionName() {
+ return getRuleContext(OC_FunctionNameContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public TerminalNode DISTINCT() {
+ return getToken(CypherParser.DISTINCT, 0);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public OC_FunctionInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_FunctionInvocation;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_FunctionInvocation(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_FunctionInvocationContext oC_FunctionInvocation() throws RecognitionException {
+ OC_FunctionInvocationContext _localctx = new OC_FunctionInvocationContext(_ctx, getState());
+ enterRule(_localctx, 158, RULE_oC_FunctionInvocation);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1362);
+ oC_FunctionName();
+ setState(1364);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1363);
+ match(SP);
+ }
+ }
+
+ setState(1366);
+ match(T__5);
+ setState(1368);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1367);
+ match(SP);
+ }
+ }
+
+ setState(1374);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == DISTINCT) {
+ {
+ setState(1370);
+ match(DISTINCT);
+ setState(1372);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1371);
+ match(SP);
+ }
+ }
+ }
+ }
+
+ setState(1393);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 140737573028160L) != 0)
+ || ((((_la - 76)) & ~0x3f) == 0
+ && ((1L << (_la - 76)) & 343051394343361L) != 0)) {
+ {
+ setState(1376);
+ oC_Expression();
+ setState(1378);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1377);
+ match(SP);
+ }
+ }
+
+ setState(1390);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la == T__1) {
+ {
+ {
+ setState(1380);
+ match(T__1);
+ setState(1382);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1381);
+ match(SP);
+ }
+ }
+
+ setState(1384);
+ oC_Expression();
+ setState(1386);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1385);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(1392);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(1395);
+ match(T__6);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_FunctionNameContext extends ParserRuleContext {
+ public OC_NamespaceContext oC_Namespace() {
+ return getRuleContext(OC_NamespaceContext.class, 0);
+ }
+
+ public OC_SymbolicNameContext oC_SymbolicName() {
+ return getRuleContext(OC_SymbolicNameContext.class, 0);
+ }
+
+ public OC_FunctionNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_FunctionName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_FunctionName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_FunctionNameContext oC_FunctionName() throws RecognitionException {
+ OC_FunctionNameContext _localctx = new OC_FunctionNameContext(_ctx, getState());
+ enterRule(_localctx, 160, RULE_oC_FunctionName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1397);
+ oC_Namespace();
+ setState(1398);
+ oC_SymbolicName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ExistentialSubqueryContext extends ParserRuleContext {
+ public TerminalNode EXISTS() {
+ return getToken(CypherParser.EXISTS, 0);
+ }
+
+ public OC_RegularQueryContext oC_RegularQuery() {
+ return getRuleContext(OC_RegularQueryContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public OC_PatternContext oC_Pattern() {
+ return getRuleContext(OC_PatternContext.class, 0);
+ }
+
+ public OC_WhereContext oC_Where() {
+ return getRuleContext(OC_WhereContext.class, 0);
+ }
+
+ public OC_ExistentialSubqueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ExistentialSubquery;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ExistentialSubquery(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ExistentialSubqueryContext oC_ExistentialSubquery()
+ throws RecognitionException {
+ OC_ExistentialSubqueryContext _localctx =
+ new OC_ExistentialSubqueryContext(_ctx, getState());
+ enterRule(_localctx, 162, RULE_oC_ExistentialSubquery);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1400);
+ match(EXISTS);
+ setState(1402);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1401);
+ match(SP);
+ }
+ }
+
+ setState(1404);
+ match(T__23);
+ setState(1406);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1405);
+ match(SP);
+ }
+ }
+
+ setState(1416);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case OPTIONAL:
+ case MATCH:
+ case UNWIND:
+ case MERGE:
+ case CREATE:
+ case SET:
+ case DETACH:
+ case DELETE:
+ case REMOVE:
+ case CALL:
+ case WITH:
+ case RETURN:
+ {
+ setState(1408);
+ oC_RegularQuery();
+ }
+ break;
+ case T__5:
+ case COUNT:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case HexLetter:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ {
+ {
+ setState(1409);
+ oC_Pattern();
+ setState(1414);
+ _errHandler.sync(this);
+ switch (getInterpreter().adaptivePredict(_input, 260, _ctx)) {
+ case 1:
+ {
+ setState(1411);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1410);
+ match(SP);
+ }
+ }
+
+ setState(1413);
+ oC_Where();
+ }
+ break;
+ }
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(1419);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1418);
+ match(SP);
+ }
+ }
+
+ setState(1421);
+ match(T__24);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ExplicitProcedureInvocationContext extends ParserRuleContext {
+ public OC_ProcedureNameContext oC_ProcedureName() {
+ return getRuleContext(OC_ProcedureNameContext.class, 0);
+ }
+
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public OC_ExplicitProcedureInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ExplicitProcedureInvocation;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_ExplicitProcedureInvocation(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ExplicitProcedureInvocationContext oC_ExplicitProcedureInvocation()
+ throws RecognitionException {
+ OC_ExplicitProcedureInvocationContext _localctx =
+ new OC_ExplicitProcedureInvocationContext(_ctx, getState());
+ enterRule(_localctx, 164, RULE_oC_ExplicitProcedureInvocation);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1423);
+ oC_ProcedureName();
+ setState(1425);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1424);
+ match(SP);
+ }
+ }
+
+ setState(1427);
+ match(T__5);
+ setState(1429);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1428);
+ match(SP);
+ }
+ }
+
+ setState(1448);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 140737573028160L) != 0)
+ || ((((_la - 76)) & ~0x3f) == 0
+ && ((1L << (_la - 76)) & 343051394343361L) != 0)) {
+ {
+ setState(1431);
+ oC_Expression();
+ setState(1433);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1432);
+ match(SP);
+ }
+ }
+
+ setState(1445);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la == T__1) {
+ {
+ {
+ setState(1435);
+ match(T__1);
+ setState(1437);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1436);
+ match(SP);
+ }
+ }
+
+ setState(1439);
+ oC_Expression();
+ setState(1441);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1440);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(1447);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(1450);
+ match(T__6);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ImplicitProcedureInvocationContext extends ParserRuleContext {
+ public OC_ProcedureNameContext oC_ProcedureName() {
+ return getRuleContext(OC_ProcedureNameContext.class, 0);
+ }
+
+ public OC_ImplicitProcedureInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ImplicitProcedureInvocation;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor)
+ .visitOC_ImplicitProcedureInvocation(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ImplicitProcedureInvocationContext oC_ImplicitProcedureInvocation()
+ throws RecognitionException {
+ OC_ImplicitProcedureInvocationContext _localctx =
+ new OC_ImplicitProcedureInvocationContext(_ctx, getState());
+ enterRule(_localctx, 166, RULE_oC_ImplicitProcedureInvocation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1452);
+ oC_ProcedureName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ProcedureResultFieldContext extends ParserRuleContext {
+ public OC_SymbolicNameContext oC_SymbolicName() {
+ return getRuleContext(OC_SymbolicNameContext.class, 0);
+ }
+
+ public OC_ProcedureResultFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ProcedureResultField;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ProcedureResultField(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ProcedureResultFieldContext oC_ProcedureResultField()
+ throws RecognitionException {
+ OC_ProcedureResultFieldContext _localctx =
+ new OC_ProcedureResultFieldContext(_ctx, getState());
+ enterRule(_localctx, 168, RULE_oC_ProcedureResultField);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1454);
+ oC_SymbolicName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ProcedureNameContext extends ParserRuleContext {
+ public OC_NamespaceContext oC_Namespace() {
+ return getRuleContext(OC_NamespaceContext.class, 0);
+ }
+
+ public OC_SymbolicNameContext oC_SymbolicName() {
+ return getRuleContext(OC_SymbolicNameContext.class, 0);
+ }
+
+ public OC_ProcedureNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ProcedureName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ProcedureName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ProcedureNameContext oC_ProcedureName() throws RecognitionException {
+ OC_ProcedureNameContext _localctx = new OC_ProcedureNameContext(_ctx, getState());
+ enterRule(_localctx, 170, RULE_oC_ProcedureName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1456);
+ oC_Namespace();
+ setState(1457);
+ oC_SymbolicName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_NamespaceContext extends ParserRuleContext {
+ public List oC_SymbolicName() {
+ return getRuleContexts(OC_SymbolicNameContext.class);
+ }
+
+ public OC_SymbolicNameContext oC_SymbolicName(int i) {
+ return getRuleContext(OC_SymbolicNameContext.class, i);
+ }
+
+ public OC_NamespaceContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Namespace;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Namespace(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NamespaceContext oC_Namespace() throws RecognitionException {
+ OC_NamespaceContext _localctx = new OC_NamespaceContext(_ctx, getState());
+ enterRule(_localctx, 172, RULE_oC_Namespace);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1464);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 270, _ctx);
+ while (_alt != 2 && _alt != org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER) {
+ if (_alt == 1) {
+ {
+ {
+ setState(1459);
+ oC_SymbolicName();
+ setState(1460);
+ match(T__22);
+ }
+ }
+ }
+ setState(1466);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input, 270, _ctx);
+ }
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_VariableContext extends ParserRuleContext {
+ public OC_SymbolicNameContext oC_SymbolicName() {
+ return getRuleContext(OC_SymbolicNameContext.class, 0);
+ }
+
+ public OC_VariableContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Variable;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Variable(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_VariableContext oC_Variable() throws RecognitionException {
+ OC_VariableContext _localctx = new OC_VariableContext(_ctx, getState());
+ enterRule(_localctx, 174, RULE_oC_Variable);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1467);
+ oC_SymbolicName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_LiteralContext extends ParserRuleContext {
+ public OC_BooleanLiteralContext oC_BooleanLiteral() {
+ return getRuleContext(OC_BooleanLiteralContext.class, 0);
+ }
+
+ public TerminalNode NULL() {
+ return getToken(CypherParser.NULL, 0);
+ }
+
+ public OC_NumberLiteralContext oC_NumberLiteral() {
+ return getRuleContext(OC_NumberLiteralContext.class, 0);
+ }
+
+ public TerminalNode StringLiteral() {
+ return getToken(CypherParser.StringLiteral, 0);
+ }
+
+ public OC_ListLiteralContext oC_ListLiteral() {
+ return getRuleContext(OC_ListLiteralContext.class, 0);
+ }
+
+ public OC_MapLiteralContext oC_MapLiteral() {
+ return getRuleContext(OC_MapLiteralContext.class, 0);
+ }
+
+ public OC_LiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Literal;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Literal(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_LiteralContext oC_Literal() throws RecognitionException {
+ OC_LiteralContext _localctx = new OC_LiteralContext(_ctx, getState());
+ enterRule(_localctx, 176, RULE_oC_Literal);
+ try {
+ setState(1475);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case TRUE:
+ case FALSE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1469);
+ oC_BooleanLiteral();
+ }
+ break;
+ case NULL:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1470);
+ match(NULL);
+ }
+ break;
+ case HexInteger:
+ case DecimalInteger:
+ case OctalInteger:
+ case ExponentDecimalReal:
+ case RegularDecimalReal:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1471);
+ oC_NumberLiteral();
+ }
+ break;
+ case StringLiteral:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1472);
+ match(StringLiteral);
+ }
+ break;
+ case T__7:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1473);
+ oC_ListLiteral();
+ }
+ break;
+ case T__23:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1474);
+ oC_MapLiteral();
+ }
+ 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 OC_BooleanLiteralContext extends ParserRuleContext {
+ public TerminalNode TRUE() {
+ return getToken(CypherParser.TRUE, 0);
+ }
+
+ public TerminalNode FALSE() {
+ return getToken(CypherParser.FALSE, 0);
+ }
+
+ public OC_BooleanLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_BooleanLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_BooleanLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_BooleanLiteralContext oC_BooleanLiteral() throws RecognitionException {
+ OC_BooleanLiteralContext _localctx = new OC_BooleanLiteralContext(_ctx, getState());
+ enterRule(_localctx, 178, RULE_oC_BooleanLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1477);
+ _la = _input.LA(1);
+ if (!(_la == TRUE || _la == FALSE)) {
+ _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 OC_NumberLiteralContext extends ParserRuleContext {
+ public OC_DoubleLiteralContext oC_DoubleLiteral() {
+ return getRuleContext(OC_DoubleLiteralContext.class, 0);
+ }
+
+ public OC_IntegerLiteralContext oC_IntegerLiteral() {
+ return getRuleContext(OC_IntegerLiteralContext.class, 0);
+ }
+
+ public OC_NumberLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_NumberLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_NumberLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_NumberLiteralContext oC_NumberLiteral() throws RecognitionException {
+ OC_NumberLiteralContext _localctx = new OC_NumberLiteralContext(_ctx, getState());
+ enterRule(_localctx, 180, RULE_oC_NumberLiteral);
+ try {
+ setState(1481);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case ExponentDecimalReal:
+ case RegularDecimalReal:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1479);
+ oC_DoubleLiteral();
+ }
+ break;
+ case HexInteger:
+ case DecimalInteger:
+ case OctalInteger:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1480);
+ oC_IntegerLiteral();
+ }
+ 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 OC_IntegerLiteralContext extends ParserRuleContext {
+ public TerminalNode HexInteger() {
+ return getToken(CypherParser.HexInteger, 0);
+ }
+
+ public TerminalNode OctalInteger() {
+ return getToken(CypherParser.OctalInteger, 0);
+ }
+
+ public TerminalNode DecimalInteger() {
+ return getToken(CypherParser.DecimalInteger, 0);
+ }
+
+ public OC_IntegerLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_IntegerLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_IntegerLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_IntegerLiteralContext oC_IntegerLiteral() throws RecognitionException {
+ OC_IntegerLiteralContext _localctx = new OC_IntegerLiteralContext(_ctx, getState());
+ enterRule(_localctx, 182, RULE_oC_IntegerLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1483);
+ _la = _input.LA(1);
+ if (!(((((_la - 95)) & ~0x3f) == 0 && ((1L << (_la - 95)) & 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;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_DoubleLiteralContext extends ParserRuleContext {
+ public TerminalNode ExponentDecimalReal() {
+ return getToken(CypherParser.ExponentDecimalReal, 0);
+ }
+
+ public TerminalNode RegularDecimalReal() {
+ return getToken(CypherParser.RegularDecimalReal, 0);
+ }
+
+ public OC_DoubleLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_DoubleLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_DoubleLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_DoubleLiteralContext oC_DoubleLiteral() throws RecognitionException {
+ OC_DoubleLiteralContext _localctx = new OC_DoubleLiteralContext(_ctx, getState());
+ enterRule(_localctx, 184, RULE_oC_DoubleLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1485);
+ _la = _input.LA(1);
+ if (!(_la == ExponentDecimalReal || _la == RegularDecimalReal)) {
+ _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 OC_ListLiteralContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public OC_ListLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ListLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ListLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ListLiteralContext oC_ListLiteral() throws RecognitionException {
+ OC_ListLiteralContext _localctx = new OC_ListLiteralContext(_ctx, getState());
+ enterRule(_localctx, 186, RULE_oC_ListLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1487);
+ match(T__7);
+ setState(1489);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1488);
+ match(SP);
+ }
+ }
+
+ setState(1508);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 140737573028160L) != 0)
+ || ((((_la - 76)) & ~0x3f) == 0
+ && ((1L << (_la - 76)) & 343051394343361L) != 0)) {
+ {
+ setState(1491);
+ oC_Expression();
+ setState(1493);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1492);
+ match(SP);
+ }
+ }
+
+ setState(1505);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la == T__1) {
+ {
+ {
+ setState(1495);
+ match(T__1);
+ setState(1497);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1496);
+ match(SP);
+ }
+ }
+
+ setState(1499);
+ oC_Expression();
+ setState(1501);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1500);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(1507);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(1510);
+ match(T__8);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_MapLiteralContext extends ParserRuleContext {
+ public List SP() {
+ return getTokens(CypherParser.SP);
+ }
+
+ public TerminalNode SP(int i) {
+ return getToken(CypherParser.SP, i);
+ }
+
+ public List oC_PropertyKeyName() {
+ return getRuleContexts(OC_PropertyKeyNameContext.class);
+ }
+
+ public OC_PropertyKeyNameContext oC_PropertyKeyName(int i) {
+ return getRuleContext(OC_PropertyKeyNameContext.class, i);
+ }
+
+ public List oC_Expression() {
+ return getRuleContexts(OC_ExpressionContext.class);
+ }
+
+ public OC_ExpressionContext oC_Expression(int i) {
+ return getRuleContext(OC_ExpressionContext.class, i);
+ }
+
+ public OC_MapLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_MapLiteral;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_MapLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_MapLiteralContext oC_MapLiteral() throws RecognitionException {
+ OC_MapLiteralContext _localctx = new OC_MapLiteralContext(_ctx, getState());
+ enterRule(_localctx, 188, RULE_oC_MapLiteral);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1512);
+ match(T__23);
+ setState(1514);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1513);
+ match(SP);
+ }
+ }
+
+ setState(1549);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -1729452625654448128L) != 0)
+ || ((((_la - 64)) & ~0x3f) == 0
+ && ((1L << (_la - 64)) & 1441116715713822719L) != 0)) {
+ {
+ setState(1516);
+ oC_PropertyKeyName();
+ setState(1518);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1517);
+ match(SP);
+ }
+ }
+
+ setState(1520);
+ match(T__9);
+ setState(1522);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1521);
+ match(SP);
+ }
+ }
+
+ setState(1524);
+ oC_Expression();
+ setState(1526);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1525);
+ match(SP);
+ }
+ }
+
+ setState(1546);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la == T__1) {
+ {
+ {
+ setState(1528);
+ match(T__1);
+ setState(1530);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1529);
+ match(SP);
+ }
+ }
+
+ setState(1532);
+ oC_PropertyKeyName();
+ setState(1534);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1533);
+ match(SP);
+ }
+ }
+
+ setState(1536);
+ match(T__9);
+ setState(1538);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1537);
+ match(SP);
+ }
+ }
+
+ setState(1540);
+ oC_Expression();
+ setState(1542);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la == SP) {
+ {
+ setState(1541);
+ match(SP);
+ }
+ }
+ }
+ }
+ setState(1548);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+
+ setState(1551);
+ match(T__24);
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_PropertyKeyNameContext extends ParserRuleContext {
+ public OC_SchemaNameContext oC_SchemaName() {
+ return getRuleContext(OC_SchemaNameContext.class, 0);
+ }
+
+ public OC_PropertyKeyNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_PropertyKeyName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_PropertyKeyName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_PropertyKeyNameContext oC_PropertyKeyName() throws RecognitionException {
+ OC_PropertyKeyNameContext _localctx = new OC_PropertyKeyNameContext(_ctx, getState());
+ enterRule(_localctx, 190, RULE_oC_PropertyKeyName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1553);
+ oC_SchemaName();
+ }
+ } catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ } finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OC_ParameterContext extends ParserRuleContext {
+ public OC_SymbolicNameContext oC_SymbolicName() {
+ return getRuleContext(OC_SymbolicNameContext.class, 0);
+ }
+
+ public TerminalNode DecimalInteger() {
+ return getToken(CypherParser.DecimalInteger, 0);
+ }
+
+ public OC_ParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Parameter;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Parameter(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ParameterContext oC_Parameter() throws RecognitionException {
+ OC_ParameterContext _localctx = new OC_ParameterContext(_ctx, getState());
+ enterRule(_localctx, 192, RULE_oC_Parameter);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1555);
+ match(T__25);
+ setState(1558);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case COUNT:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case HexLetter:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ {
+ setState(1556);
+ oC_SymbolicName();
+ }
+ break;
+ case DecimalInteger:
+ {
+ setState(1557);
+ match(DecimalInteger);
+ }
+ 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 OC_SchemaNameContext extends ParserRuleContext {
+ public OC_SymbolicNameContext oC_SymbolicName() {
+ return getRuleContext(OC_SymbolicNameContext.class, 0);
+ }
+
+ public OC_ReservedWordContext oC_ReservedWord() {
+ return getRuleContext(OC_ReservedWordContext.class, 0);
+ }
+
+ public OC_SchemaNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_SchemaName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_SchemaName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SchemaNameContext oC_SchemaName() throws RecognitionException {
+ OC_SchemaNameContext _localctx = new OC_SchemaNameContext(_ctx, getState());
+ enterRule(_localctx, 194, RULE_oC_SchemaName);
+ try {
+ setState(1562);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case COUNT:
+ case ANY:
+ case NONE:
+ case SINGLE:
+ case HexLetter:
+ case FILTER:
+ case EXTRACT:
+ case UnescapedSymbolicName:
+ case EscapedSymbolicName:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1560);
+ oC_SymbolicName();
+ }
+ break;
+ case UNION:
+ case ALL:
+ case OPTIONAL:
+ case MATCH:
+ case UNWIND:
+ case AS:
+ case MERGE:
+ case ON:
+ case CREATE:
+ case SET:
+ case DETACH:
+ case DELETE:
+ case REMOVE:
+ case WITH:
+ case RETURN:
+ case DISTINCT:
+ case ORDER:
+ case BY:
+ case L_SKIP:
+ case LIMIT:
+ case ASCENDING:
+ case ASC:
+ case DESCENDING:
+ case DESC:
+ case WHERE:
+ case OR:
+ case XOR:
+ case AND:
+ case NOT:
+ case STARTS:
+ case ENDS:
+ case CONTAINS:
+ case IN:
+ case IS:
+ case NULL:
+ case CASE:
+ case ELSE:
+ case END:
+ case WHEN:
+ case THEN:
+ case EXISTS:
+ case TRUE:
+ case FALSE:
+ case CONSTRAINT:
+ case DO:
+ case FOR:
+ case REQUIRE:
+ case UNIQUE:
+ case MANDATORY:
+ case SCALAR:
+ case OF:
+ case ADD:
+ case DROP:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1561);
+ oC_ReservedWord();
+ }
+ 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 OC_ReservedWordContext extends ParserRuleContext {
+ public TerminalNode ALL() {
+ return getToken(CypherParser.ALL, 0);
+ }
+
+ public TerminalNode ASC() {
+ return getToken(CypherParser.ASC, 0);
+ }
+
+ public TerminalNode ASCENDING() {
+ return getToken(CypherParser.ASCENDING, 0);
+ }
+
+ public TerminalNode BY() {
+ return getToken(CypherParser.BY, 0);
+ }
+
+ public TerminalNode CREATE() {
+ return getToken(CypherParser.CREATE, 0);
+ }
+
+ public TerminalNode DELETE() {
+ return getToken(CypherParser.DELETE, 0);
+ }
+
+ public TerminalNode DESC() {
+ return getToken(CypherParser.DESC, 0);
+ }
+
+ public TerminalNode DESCENDING() {
+ return getToken(CypherParser.DESCENDING, 0);
+ }
+
+ public TerminalNode DETACH() {
+ return getToken(CypherParser.DETACH, 0);
+ }
+
+ public TerminalNode EXISTS() {
+ return getToken(CypherParser.EXISTS, 0);
+ }
+
+ public TerminalNode LIMIT() {
+ return getToken(CypherParser.LIMIT, 0);
+ }
+
+ public TerminalNode MATCH() {
+ return getToken(CypherParser.MATCH, 0);
+ }
+
+ public TerminalNode MERGE() {
+ return getToken(CypherParser.MERGE, 0);
+ }
+
+ public TerminalNode ON() {
+ return getToken(CypherParser.ON, 0);
+ }
+
+ public TerminalNode OPTIONAL() {
+ return getToken(CypherParser.OPTIONAL, 0);
+ }
+
+ public TerminalNode ORDER() {
+ return getToken(CypherParser.ORDER, 0);
+ }
+
+ public TerminalNode REMOVE() {
+ return getToken(CypherParser.REMOVE, 0);
+ }
+
+ public TerminalNode RETURN() {
+ return getToken(CypherParser.RETURN, 0);
+ }
+
+ public TerminalNode SET() {
+ return getToken(CypherParser.SET, 0);
+ }
+
+ public TerminalNode L_SKIP() {
+ return getToken(CypherParser.L_SKIP, 0);
+ }
+
+ public TerminalNode WHERE() {
+ return getToken(CypherParser.WHERE, 0);
+ }
+
+ public TerminalNode WITH() {
+ return getToken(CypherParser.WITH, 0);
+ }
+
+ public TerminalNode UNION() {
+ return getToken(CypherParser.UNION, 0);
+ }
+
+ public TerminalNode UNWIND() {
+ return getToken(CypherParser.UNWIND, 0);
+ }
+
+ public TerminalNode AND() {
+ return getToken(CypherParser.AND, 0);
+ }
+
+ public TerminalNode AS() {
+ return getToken(CypherParser.AS, 0);
+ }
+
+ public TerminalNode CONTAINS() {
+ return getToken(CypherParser.CONTAINS, 0);
+ }
+
+ public TerminalNode DISTINCT() {
+ return getToken(CypherParser.DISTINCT, 0);
+ }
+
+ public TerminalNode ENDS() {
+ return getToken(CypherParser.ENDS, 0);
+ }
+
+ public TerminalNode IN() {
+ return getToken(CypherParser.IN, 0);
+ }
+
+ public TerminalNode IS() {
+ return getToken(CypherParser.IS, 0);
+ }
+
+ public TerminalNode NOT() {
+ return getToken(CypherParser.NOT, 0);
+ }
+
+ public TerminalNode OR() {
+ return getToken(CypherParser.OR, 0);
+ }
+
+ public TerminalNode STARTS() {
+ return getToken(CypherParser.STARTS, 0);
+ }
+
+ public TerminalNode XOR() {
+ return getToken(CypherParser.XOR, 0);
+ }
+
+ public TerminalNode FALSE() {
+ return getToken(CypherParser.FALSE, 0);
+ }
+
+ public TerminalNode TRUE() {
+ return getToken(CypherParser.TRUE, 0);
+ }
+
+ public TerminalNode NULL() {
+ return getToken(CypherParser.NULL, 0);
+ }
+
+ public TerminalNode CONSTRAINT() {
+ return getToken(CypherParser.CONSTRAINT, 0);
+ }
+
+ public TerminalNode DO() {
+ return getToken(CypherParser.DO, 0);
+ }
+
+ public TerminalNode FOR() {
+ return getToken(CypherParser.FOR, 0);
+ }
+
+ public TerminalNode REQUIRE() {
+ return getToken(CypherParser.REQUIRE, 0);
+ }
+
+ public TerminalNode UNIQUE() {
+ return getToken(CypherParser.UNIQUE, 0);
+ }
+
+ public TerminalNode CASE() {
+ return getToken(CypherParser.CASE, 0);
+ }
+
+ public TerminalNode WHEN() {
+ return getToken(CypherParser.WHEN, 0);
+ }
+
+ public TerminalNode THEN() {
+ return getToken(CypherParser.THEN, 0);
+ }
+
+ public TerminalNode ELSE() {
+ return getToken(CypherParser.ELSE, 0);
+ }
+
+ public TerminalNode END() {
+ return getToken(CypherParser.END, 0);
+ }
+
+ public TerminalNode MANDATORY() {
+ return getToken(CypherParser.MANDATORY, 0);
+ }
+
+ public TerminalNode SCALAR() {
+ return getToken(CypherParser.SCALAR, 0);
+ }
+
+ public TerminalNode OF() {
+ return getToken(CypherParser.OF, 0);
+ }
+
+ public TerminalNode ADD() {
+ return getToken(CypherParser.ADD, 0);
+ }
+
+ public TerminalNode DROP() {
+ return getToken(CypherParser.DROP, 0);
+ }
+
+ public OC_ReservedWordContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_ReservedWord;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_ReservedWord(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_ReservedWordContext oC_ReservedWord() throws RecognitionException {
+ OC_ReservedWordContext _localctx = new OC_ReservedWordContext(_ctx, getState());
+ enterRule(_localctx, 196, RULE_oC_ReservedWord);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1564);
+ _la = _input.LA(1);
+ if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & -1729452625654448128L) != 0)
+ || ((((_la - 64)) & ~0x3f) == 0
+ && ((1L << (_la - 64)) & 35993614558953471L) != 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 OC_SymbolicNameContext extends ParserRuleContext {
+ public TerminalNode UnescapedSymbolicName() {
+ return getToken(CypherParser.UnescapedSymbolicName, 0);
+ }
+
+ public TerminalNode EscapedSymbolicName() {
+ return getToken(CypherParser.EscapedSymbolicName, 0);
+ }
+
+ public TerminalNode HexLetter() {
+ return getToken(CypherParser.HexLetter, 0);
+ }
+
+ public TerminalNode COUNT() {
+ return getToken(CypherParser.COUNT, 0);
+ }
+
+ public TerminalNode FILTER() {
+ return getToken(CypherParser.FILTER, 0);
+ }
+
+ public TerminalNode EXTRACT() {
+ return getToken(CypherParser.EXTRACT, 0);
+ }
+
+ public TerminalNode ANY() {
+ return getToken(CypherParser.ANY, 0);
+ }
+
+ public TerminalNode NONE() {
+ return getToken(CypherParser.NONE, 0);
+ }
+
+ public TerminalNode SINGLE() {
+ return getToken(CypherParser.SINGLE, 0);
+ }
+
+ public OC_SymbolicNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_SymbolicName;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_SymbolicName(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_SymbolicNameContext oC_SymbolicName() throws RecognitionException {
+ OC_SymbolicNameContext _localctx = new OC_SymbolicNameContext(_ctx, getState());
+ enterRule(_localctx, 198, RULE_oC_SymbolicName);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1566);
+ _la = _input.LA(1);
+ if (!(((((_la - 83)) & ~0x3f) == 0
+ && ((1L << (_la - 83)) & 2680059625921L) != 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 OC_LeftArrowHeadContext extends ParserRuleContext {
+ public OC_LeftArrowHeadContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_LeftArrowHead;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_LeftArrowHead(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_LeftArrowHeadContext oC_LeftArrowHead() throws RecognitionException {
+ OC_LeftArrowHeadContext _localctx = new OC_LeftArrowHeadContext(_ctx, getState());
+ enterRule(_localctx, 200, RULE_oC_LeftArrowHead);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1568);
+ _la = _input.LA(1);
+ if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 2013282304L) != 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 OC_RightArrowHeadContext extends ParserRuleContext {
+ public OC_RightArrowHeadContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_RightArrowHead;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_RightArrowHead(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_RightArrowHeadContext oC_RightArrowHead() throws RecognitionException {
+ OC_RightArrowHeadContext _localctx = new OC_RightArrowHeadContext(_ctx, getState());
+ enterRule(_localctx, 202, RULE_oC_RightArrowHead);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1570);
+ _la = _input.LA(1);
+ if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 32212287488L) != 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 OC_DashContext extends ParserRuleContext {
+ public OC_DashContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+
+ @Override
+ public int getRuleIndex() {
+ return RULE_oC_Dash;
+ }
+
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if (visitor instanceof CypherVisitor)
+ return ((CypherVisitor extends T>) visitor).visitOC_Dash(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final OC_DashContext oC_Dash() throws RecognitionException {
+ OC_DashContext _localctx = new OC_DashContext(_ctx, getState());
+ enterRule(_localctx, 204, RULE_oC_Dash);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1572);
+ _la = _input.LA(1);
+ if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & 70334384963584L) != 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 static final String _serializedATN =
+ "\u0004\u0001\u007f\u0627\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\u0001\u0000\u0003\u0000\u00d0"
+ + "\b\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u00d4\b\u0000\u0001\u0000"
+ + "\u0003\u0000\u00d7\b\u0000\u0001\u0000\u0003\u0000\u00da\b\u0000\u0001"
+ + "\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0003"
+ + "\u0002\u00e2\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003\u00e6\b\u0003"
+ + "\u0001\u0003\u0005\u0003\u00e9\b\u0003\n\u0003\f\u0003\u00ec\t\u0003\u0001"
+ + "\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0003\u0004\u00f2\b\u0004\u0001"
+ + "\u0004\u0001\u0004\u0001\u0004\u0003\u0004\u00f7\b\u0004\u0001\u0004\u0003"
+ + "\u0004\u00fa\b\u0004\u0001\u0005\u0001\u0005\u0003\u0005\u00fe\b\u0005"
+ + "\u0001\u0006\u0001\u0006\u0003\u0006\u0102\b\u0006\u0005\u0006\u0104\b"
+ + "\u0006\n\u0006\f\u0006\u0107\t\u0006\u0001\u0006\u0001\u0006\u0001\u0006"
+ + "\u0003\u0006\u010c\b\u0006\u0005\u0006\u010e\b\u0006\n\u0006\f\u0006\u0111"
+ + "\t\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0115\b\u0006\u0001\u0006"
+ + "\u0005\u0006\u0118\b\u0006\n\u0006\f\u0006\u011b\t\u0006\u0001\u0006\u0003"
+ + "\u0006\u011e\b\u0006\u0001\u0006\u0003\u0006\u0121\b\u0006\u0003\u0006"
+ + "\u0123\b\u0006\u0001\u0007\u0001\u0007\u0003\u0007\u0127\b\u0007\u0005"
+ + "\u0007\u0129\b\u0007\n\u0007\f\u0007\u012c\t\u0007\u0001\u0007\u0001\u0007"
+ + "\u0003\u0007\u0130\b\u0007\u0005\u0007\u0132\b\u0007\n\u0007\f\u0007\u0135"
+ + "\t\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u0139\b\u0007\u0004\u0007"
+ + "\u013b\b\u0007\u000b\u0007\f\u0007\u013c\u0001\u0007\u0001\u0007\u0001"
+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u0146\b\b\u0001\t\u0001\t\u0001"
+ + "\t\u0003\t\u014b\b\t\u0001\n\u0001\n\u0003\n\u014f\b\n\u0001\n\u0001\n"
+ + "\u0003\n\u0153\b\n\u0001\n\u0001\n\u0003\n\u0157\b\n\u0001\n\u0003\n\u015a"
+ + "\b\n\u0001\u000b\u0001\u000b\u0003\u000b\u015e\b\u000b\u0001\u000b\u0001"
+ + "\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f"
+ + "\u0003\f\u0168\b\f\u0001\f\u0001\f\u0001\f\u0005\f\u016d\b\f\n\f\f\f\u0170"
+ + "\t\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"
+ + "\r\u0001\r\u0003\r\u017c\b\r\u0001\u000e\u0001\u000e\u0003\u000e\u0180"
+ + "\b\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0003\u000f\u0186"
+ + "\b\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u018a\b\u000f\u0001\u000f"
+ + "\u0001\u000f\u0003\u000f\u018e\b\u000f\u0001\u000f\u0005\u000f\u0191\b"
+ + "\u000f\n\u000f\f\u000f\u0194\t\u000f\u0001\u0010\u0001\u0010\u0003\u0010"
+ + "\u0198\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u019c\b\u0010\u0001"
+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u01a2\b\u0010\u0001"
+ + "\u0010\u0001\u0010\u0003\u0010\u01a6\b\u0010\u0001\u0010\u0001\u0010\u0001"
+ + "\u0010\u0001\u0010\u0003\u0010\u01ac\b\u0010\u0001\u0010\u0001\u0010\u0003"
+ + "\u0010\u01b0\b\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003"
+ + "\u0010\u01b6\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u01ba\b\u0010"
+ + "\u0001\u0011\u0001\u0011\u0003\u0011\u01be\b\u0011\u0001\u0011\u0001\u0011"
+ + "\u0003\u0011\u01c2\b\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u01c6\b"
+ + "\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u01ca\b\u0011\u0001\u0011\u0005"
+ + "\u0011\u01cd\b\u0011\n\u0011\f\u0011\u01d0\t\u0011\u0001\u0012\u0001\u0012"
+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u01d6\b\u0012\u0001\u0012\u0001\u0012"
+ + "\u0003\u0012\u01da\b\u0012\u0001\u0012\u0005\u0012\u01dd\b\u0012\n\u0012"
+ + "\f\u0012\u01e0\t\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"
+ + "\u0003\u0013\u01e6\b\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"
+ + "\u0003\u0014\u01ec\b\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014"
+ + "\u01f1\b\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015"
+ + "\u01f7\b\u0015\u0001\u0015\u0003\u0015\u01fa\b\u0015\u0001\u0015\u0001"
+ + "\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u0200\b\u0015\u0003\u0015\u0202"
+ + "\b\u0015\u0001\u0016\u0001\u0016\u0003\u0016\u0206\b\u0016\u0001\u0016"
+ + "\u0001\u0016\u0003\u0016\u020a\b\u0016\u0001\u0016\u0005\u0016\u020d\b"
+ + "\u0016\n\u0016\f\u0016\u0210\t\u0016\u0001\u0016\u0003\u0016\u0213\b\u0016"
+ + "\u0001\u0016\u0003\u0016\u0216\b\u0016\u0001\u0017\u0001\u0017\u0001\u0017"
+ + "\u0001\u0017\u0001\u0017\u0003\u0017\u021d\b\u0017\u0001\u0017\u0001\u0017"
+ + "\u0001\u0018\u0001\u0018\u0001\u0018\u0003\u0018\u0224\b\u0018\u0001\u0018"
+ + "\u0003\u0018\u0227\b\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a"
+ + "\u0003\u001a\u022d\b\u001a\u0001\u001a\u0003\u001a\u0230\b\u001a\u0001"
+ + "\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0003\u001a\u0236\b\u001a\u0001"
+ + "\u001a\u0001\u001a\u0003\u001a\u023a\b\u001a\u0001\u001a\u0001\u001a\u0003"
+ + "\u001a\u023e\b\u001a\u0001\u001b\u0001\u001b\u0003\u001b\u0242\b\u001b"
+ + "\u0001\u001b\u0001\u001b\u0003\u001b\u0246\b\u001b\u0001\u001b\u0005\u001b"
+ + "\u0249\b\u001b\n\u001b\f\u001b\u024c\t\u001b\u0001\u001b\u0001\u001b\u0003"
+ + "\u001b\u0250\b\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u0254\b\u001b"
+ + "\u0001\u001b\u0005\u001b\u0257\b\u001b\n\u001b\f\u001b\u025a\t\u001b\u0003"
+ + "\u001b\u025c\b\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"
+ + "\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u0265\b\u001c\u0001\u001d\u0001"
+ + "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003"
+ + "\u001d\u026e\b\u001d\u0001\u001d\u0005\u001d\u0271\b\u001d\n\u001d\f\u001d"
+ + "\u0274\t\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f"
+ + "\u0001\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0003 \u0280\b \u0001"
+ + " \u0003 \u0283\b \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0003\""
+ + "\u028b\b\"\u0001\"\u0001\"\u0003\"\u028f\b\"\u0001\"\u0005\"\u0292\b\""
+ + "\n\"\f\"\u0295\t\"\u0001#\u0001#\u0003#\u0299\b#\u0001#\u0001#\u0003#"
+ + "\u029d\b#\u0001#\u0001#\u0001#\u0003#\u02a2\b#\u0001$\u0001$\u0001%\u0001"
+ + "%\u0003%\u02a8\b%\u0001%\u0005%\u02ab\b%\n%\f%\u02ae\t%\u0001%\u0001%"
+ + "\u0001%\u0001%\u0003%\u02b4\b%\u0001&\u0001&\u0003&\u02b8\b&\u0001&\u0004"
+ + "&\u02bb\b&\u000b&\f&\u02bc\u0001\'\u0001\'\u0003\'\u02c1\b\'\u0001\'\u0001"
+ + "\'\u0003\'\u02c5\b\'\u0003\'\u02c7\b\'\u0001\'\u0001\'\u0003\'\u02cb\b"
+ + "\'\u0003\'\u02cd\b\'\u0001\'\u0001\'\u0003\'\u02d1\b\'\u0003\'\u02d3\b"
+ + "\'\u0001\'\u0001\'\u0001(\u0001(\u0003(\u02d9\b(\u0001(\u0001(\u0001)"
+ + "\u0001)\u0003)\u02df\b)\u0001)\u0001)\u0003)\u02e3\b)\u0001)\u0003)\u02e6"
+ + "\b)\u0001)\u0003)\u02e9\b)\u0001)\u0001)\u0003)\u02ed\b)\u0001)\u0001"
+ + ")\u0001)\u0001)\u0003)\u02f3\b)\u0001)\u0001)\u0003)\u02f7\b)\u0001)\u0003"
+ + ")\u02fa\b)\u0001)\u0003)\u02fd\b)\u0001)\u0001)\u0001)\u0001)\u0003)\u0303"
+ + "\b)\u0001)\u0003)\u0306\b)\u0001)\u0003)\u0309\b)\u0001)\u0001)\u0003"
+ + ")\u030d\b)\u0001)\u0001)\u0001)\u0001)\u0003)\u0313\b)\u0001)\u0003)\u0316"
+ + "\b)\u0001)\u0003)\u0319\b)\u0001)\u0001)\u0003)\u031d\b)\u0001*\u0001"
+ + "*\u0003*\u0321\b*\u0001*\u0001*\u0003*\u0325\b*\u0003*\u0327\b*\u0001"
+ + "*\u0001*\u0003*\u032b\b*\u0003*\u032d\b*\u0001*\u0003*\u0330\b*\u0001"
+ + "*\u0001*\u0003*\u0334\b*\u0003*\u0336\b*\u0001*\u0001*\u0001+\u0001+\u0003"
+ + "+\u033c\b+\u0001,\u0001,\u0003,\u0340\b,\u0001,\u0001,\u0003,\u0344\b"
+ + ",\u0001,\u0001,\u0003,\u0348\b,\u0001,\u0003,\u034b\b,\u0001,\u0005,\u034e"
+ + "\b,\n,\f,\u0351\t,\u0001-\u0001-\u0003-\u0355\b-\u0001-\u0005-\u0358\b"
+ + "-\n-\f-\u035b\t-\u0001.\u0001.\u0003.\u035f\b.\u0001.\u0001.\u0001/\u0001"
+ + "/\u0003/\u0365\b/\u0001/\u0001/\u0003/\u0369\b/\u0003/\u036b\b/\u0001"
+ + "/\u0001/\u0003/\u036f\b/\u0001/\u0001/\u0003/\u0373\b/\u0003/\u0375\b"
+ + "/\u0003/\u0377\b/\u00010\u00010\u00011\u00011\u00012\u00012\u00032\u037f"
+ + "\b2\u00012\u00042\u0382\b2\u000b2\f2\u0383\u00013\u00013\u00014\u0001"
+ + "4\u00014\u00014\u00014\u00054\u038d\b4\n4\f4\u0390\t4\u00015\u00015\u0001"
+ + "5\u00015\u00015\u00055\u0397\b5\n5\f5\u039a\t5\u00016\u00016\u00016\u0001"
+ + "6\u00016\u00056\u03a1\b6\n6\f6\u03a4\t6\u00017\u00017\u00037\u03a8\b7"
+ + "\u00057\u03aa\b7\n7\f7\u03ad\t7\u00017\u00017\u00018\u00018\u00038\u03b3"
+ + "\b8\u00018\u00058\u03b6\b8\n8\f8\u03b9\t8\u00019\u00019\u00039\u03bd\b"
+ + "9\u00019\u00019\u00019\u00039\u03c2\b9\u00019\u00019\u00019\u00039\u03c7"
+ + "\b9\u00019\u00019\u00019\u00039\u03cc\b9\u00019\u00019\u00019\u00039\u03d1"
+ + "\b9\u00019\u00019\u00019\u00039\u03d6\b9\u00019\u00039\u03d9\b9\u0001"
+ + ":\u0001:\u0001:\u0001:\u0005:\u03df\b:\n:\f:\u03e2\t:\u0001;\u0001;\u0001"
+ + ";\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0003;\u03ee\b;\u0001"
+ + ";\u0003;\u03f1\b;\u0001;\u0001;\u0001<\u0001<\u0001<\u0003<\u03f8\b<\u0001"
+ + "<\u0001<\u0001=\u0001=\u0001=\u0001=\u0001=\u0001=\u0001=\u0001=\u0001"
+ + "=\u0001=\u0003=\u0406\b=\u0001>\u0001>\u0003>\u040a\b>\u0001>\u0001>\u0003"
+ + ">\u040e\b>\u0001>\u0001>\u0003>\u0412\b>\u0001>\u0001>\u0003>\u0416\b"
+ + ">\u0001>\u0005>\u0419\b>\n>\f>\u041c\t>\u0001?\u0001?\u0003?\u0420\b?"
+ + "\u0001?\u0001?\u0003?\u0424\b?\u0001?\u0001?\u0003?\u0428\b?\u0001?\u0001"
+ + "?\u0003?\u042c\b?\u0001?\u0001?\u0003?\u0430\b?\u0001?\u0001?\u0003?\u0434"
+ + "\b?\u0001?\u0005?\u0437\b?\n?\f?\u043a\t?\u0001@\u0001@\u0003@\u043e\b"
+ + "@\u0001@\u0001@\u0003@\u0442\b@\u0001@\u0005@\u0445\b@\n@\f@\u0448\t@"
+ + "\u0001A\u0001A\u0001A\u0003A\u044d\bA\u0001A\u0003A\u0450\bA\u0001B\u0001"
+ + "B\u0003B\u0454\bB\u0001B\u0001B\u0003B\u0458\bB\u0001B\u0005B\u045b\b"
+ + "B\nB\fB\u045e\tB\u0001B\u0003B\u0461\bB\u0001B\u0003B\u0464\bB\u0001C"
+ + "\u0001C\u0001C\u0001C\u0001C\u0001C\u0003C\u046c\bC\u0001C\u0001C\u0003"
+ + "C\u0470\bC\u0001C\u0003C\u0473\bC\u0001D\u0001D\u0003D\u0477\bD\u0001"
+ + "D\u0001D\u0001E\u0001E\u0001E\u0001E\u0001E\u0003E\u0480\bE\u0001E\u0001"
+ + "E\u0003E\u0484\bE\u0001E\u0001E\u0003E\u0488\bE\u0001E\u0001E\u0001E\u0001"
+ + "E\u0001E\u0001E\u0001E\u0001E\u0001E\u0003E\u0493\bE\u0001F\u0001F\u0003"
+ + "F\u0497\bF\u0001F\u0004F\u049a\bF\u000bF\fF\u049b\u0001F\u0001F\u0003"
+ + "F\u04a0\bF\u0001F\u0001F\u0003F\u04a4\bF\u0001F\u0004F\u04a7\bF\u000b"
+ + "F\fF\u04a8\u0003F\u04ab\bF\u0001F\u0003F\u04ae\bF\u0001F\u0001F\u0003"
+ + "F\u04b2\bF\u0001F\u0003F\u04b5\bF\u0001F\u0003F\u04b8\bF\u0001F\u0001"
+ + "F\u0001G\u0001G\u0003G\u04be\bG\u0001G\u0001G\u0003G\u04c2\bG\u0001G\u0001"
+ + "G\u0003G\u04c6\bG\u0001G\u0001G\u0001H\u0001H\u0003H\u04cc\bH\u0001H\u0001"
+ + "H\u0003H\u04d0\bH\u0001H\u0001H\u0003H\u04d4\bH\u0001H\u0003H\u04d7\b"
+ + "H\u0001H\u0003H\u04da\bH\u0001H\u0001H\u0001I\u0001I\u0003I\u04e0\bI\u0001"
+ + "I\u0001I\u0003I\u04e4\bI\u0001I\u0001I\u0003I\u04e8\bI\u0003I\u04ea\b"
+ + "I\u0001I\u0001I\u0003I\u04ee\bI\u0001I\u0001I\u0003I\u04f2\bI\u0003I\u04f4"
+ + "\bI\u0001I\u0001I\u0003I\u04f8\bI\u0001I\u0001I\u0003I\u04fc\bI\u0001"
+ + "I\u0001I\u0001J\u0001J\u0003J\u0502\bJ\u0001J\u0001J\u0003J\u0506\bJ\u0001"
+ + "J\u0001J\u0003J\u050a\bJ\u0001J\u0001J\u0001J\u0001J\u0003J\u0510\bJ\u0001"
+ + "J\u0001J\u0003J\u0514\bJ\u0001J\u0001J\u0003J\u0518\bJ\u0001J\u0001J\u0001"
+ + "J\u0001J\u0003J\u051e\bJ\u0001J\u0001J\u0003J\u0522\bJ\u0001J\u0001J\u0003"
+ + "J\u0526\bJ\u0001J\u0001J\u0001J\u0001J\u0003J\u052c\bJ\u0001J\u0001J\u0003"
+ + "J\u0530\bJ\u0001J\u0001J\u0003J\u0534\bJ\u0001J\u0001J\u0003J\u0538\b"
+ + "J\u0001K\u0001K\u0003K\u053c\bK\u0001K\u0003K\u053f\bK\u0001L\u0001L\u0001"
+ + "M\u0001M\u0003M\u0545\bM\u0001M\u0001M\u0003M\u0549\bM\u0001M\u0001M\u0001"
+ + "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001O\u0001O\u0003O\u0555\bO\u0001"
+ + "O\u0001O\u0003O\u0559\bO\u0001O\u0001O\u0003O\u055d\bO\u0003O\u055f\b"
+ + "O\u0001O\u0001O\u0003O\u0563\bO\u0001O\u0001O\u0003O\u0567\bO\u0001O\u0001"
+ + "O\u0003O\u056b\bO\u0005O\u056d\bO\nO\fO\u0570\tO\u0003O\u0572\bO\u0001"
+ + "O\u0001O\u0001P\u0001P\u0001P\u0001Q\u0001Q\u0003Q\u057b\bQ\u0001Q\u0001"
+ + "Q\u0003Q\u057f\bQ\u0001Q\u0001Q\u0001Q\u0003Q\u0584\bQ\u0001Q\u0003Q\u0587"
+ + "\bQ\u0003Q\u0589\bQ\u0001Q\u0003Q\u058c\bQ\u0001Q\u0001Q\u0001R\u0001"
+ + "R\u0003R\u0592\bR\u0001R\u0001R\u0003R\u0596\bR\u0001R\u0001R\u0003R\u059a"
+ + "\bR\u0001R\u0001R\u0003R\u059e\bR\u0001R\u0001R\u0003R\u05a2\bR\u0005"
+ + "R\u05a4\bR\nR\fR\u05a7\tR\u0003R\u05a9\bR\u0001R\u0001R\u0001S\u0001S"
+ + "\u0001T\u0001T\u0001U\u0001U\u0001U\u0001V\u0001V\u0001V\u0005V\u05b7"
+ + "\bV\nV\fV\u05ba\tV\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"
+ + "X\u0003X\u05c4\bX\u0001Y\u0001Y\u0001Z\u0001Z\u0003Z\u05ca\bZ\u0001[\u0001"
+ + "[\u0001\\\u0001\\\u0001]\u0001]\u0003]\u05d2\b]\u0001]\u0001]\u0003]\u05d6"
+ + "\b]\u0001]\u0001]\u0003]\u05da\b]\u0001]\u0001]\u0003]\u05de\b]\u0005"
+ + "]\u05e0\b]\n]\f]\u05e3\t]\u0003]\u05e5\b]\u0001]\u0001]\u0001^\u0001^"
+ + "\u0003^\u05eb\b^\u0001^\u0001^\u0003^\u05ef\b^\u0001^\u0001^\u0003^\u05f3"
+ + "\b^\u0001^\u0001^\u0003^\u05f7\b^\u0001^\u0001^\u0003^\u05fb\b^\u0001"
+ + "^\u0001^\u0003^\u05ff\b^\u0001^\u0001^\u0003^\u0603\b^\u0001^\u0001^\u0003"
+ + "^\u0607\b^\u0005^\u0609\b^\n^\f^\u060c\t^\u0003^\u060e\b^\u0001^\u0001"
+ + "^\u0001_\u0001_\u0001`\u0001`\u0001`\u0003`\u0617\b`\u0001a\u0001a\u0003"
+ + "a\u061b\ba\u0001b\u0001b\u0001c\u0001c\u0001d\u0001d\u0001e\u0001e\u0001"
+ + "f\u0001f\u0001f\u0000\u0000g\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010"
+ + "\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPR"
+ + "TVXZ\\^`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\u0000\n\u0001\u0000DG\u0001"
+ + "\u0000\u0012\u0013\u0001\u0000]^\u0001\u0000_a\u0001\u0000ij\u0005\u0000"
+ + ".:=RTX\\^mv\u0005\u0000SSY[bbwy||\u0002\u0000\u000e\u000e\u001b\u001e"
+ + "\u0002\u0000\u000f\u000f\u001f\"\u0002\u0000\u0013\u0013#-\u0701\u0000"
+ + "\u00cf\u0001\u0000\u0000\u0000\u0002\u00dd\u0001\u0000\u0000\u0000\u0004"
+ + "\u00e1\u0001\u0000\u0000\u0000\u0006\u00e3\u0001\u0000\u0000\u0000\b\u00f9"
+ + "\u0001\u0000\u0000\u0000\n\u00fd\u0001\u0000\u0000\u0000\f\u0122\u0001"
+ + "\u0000\u0000\u0000\u000e\u013a\u0001\u0000\u0000\u0000\u0010\u0145\u0001"
+ + "\u0000\u0000\u0000\u0012\u014a\u0001\u0000\u0000\u0000\u0014\u014e\u0001"
+ + "\u0000\u0000\u0000\u0016\u015b\u0001\u0000\u0000\u0000\u0018\u0165\u0001"
+ + "\u0000\u0000\u0000\u001a\u017b\u0001\u0000\u0000\u0000\u001c\u017d\u0001"
+ + "\u0000\u0000\u0000\u001e\u0183\u0001\u0000\u0000\u0000 \u01b9\u0001\u0000"
+ + "\u0000\u0000\"\u01bd\u0001\u0000\u0000\u0000$\u01d1\u0001\u0000\u0000"
+ + "\u0000&\u01e5\u0001\u0000\u0000\u0000(\u01e7\u0001\u0000\u0000\u0000*"
+ + "\u01f2\u0001\u0000\u0000\u0000,\u0203\u0001\u0000\u0000\u0000.\u021c\u0001"
+ + "\u0000\u0000\u00000\u0220\u0001\u0000\u0000\u00002\u0228\u0001\u0000\u0000"
+ + "\u00004\u022f\u0001\u0000\u0000\u00006\u025b\u0001\u0000\u0000\u00008"
+ + "\u0264\u0001\u0000\u0000\u0000:\u0266\u0001\u0000\u0000\u0000<\u0275\u0001"
+ + "\u0000\u0000\u0000>\u0279\u0001\u0000\u0000\u0000@\u027d\u0001\u0000\u0000"
+ + "\u0000B\u0284\u0001\u0000\u0000\u0000D\u0288\u0001\u0000\u0000\u0000F"
+ + "\u02a1\u0001\u0000\u0000\u0000H\u02a3\u0001\u0000\u0000\u0000J\u02b3\u0001"
+ + "\u0000\u0000\u0000L\u02b5\u0001\u0000\u0000\u0000N\u02be\u0001\u0000\u0000"
+ + "\u0000P\u02d6\u0001\u0000\u0000\u0000R\u031c\u0001\u0000\u0000\u0000T"
+ + "\u031e\u0001\u0000\u0000\u0000V\u033b\u0001\u0000\u0000\u0000X\u033d\u0001"
+ + "\u0000\u0000\u0000Z\u0352\u0001\u0000\u0000\u0000\\\u035c\u0001\u0000"
+ + "\u0000\u0000^\u0362\u0001\u0000\u0000\u0000`\u0378\u0001\u0000\u0000\u0000"
+ + "b\u037a\u0001\u0000\u0000\u0000d\u037c\u0001\u0000\u0000\u0000f\u0385"
+ + "\u0001\u0000\u0000\u0000h\u0387\u0001\u0000\u0000\u0000j\u0391\u0001\u0000"
+ + "\u0000\u0000l\u039b\u0001\u0000\u0000\u0000n\u03ab\u0001\u0000\u0000\u0000"
+ + "p\u03b0\u0001\u0000\u0000\u0000r\u03d8\u0001\u0000\u0000\u0000t\u03da"
+ + "\u0001\u0000\u0000\u0000v\u03ed\u0001\u0000\u0000\u0000x\u03f4\u0001\u0000"
+ + "\u0000\u0000z\u0405\u0001\u0000\u0000\u0000|\u0407\u0001\u0000\u0000\u0000"
+ + "~\u041d\u0001\u0000\u0000\u0000\u0080\u043b\u0001\u0000\u0000\u0000\u0082"
+ + "\u044f\u0001\u0000\u0000\u0000\u0084\u0451\u0001\u0000\u0000\u0000\u0086"
+ + "\u0472\u0001\u0000\u0000\u0000\u0088\u0474\u0001\u0000\u0000\u0000\u008a"
+ + "\u0492\u0001\u0000\u0000\u0000\u008c\u04aa\u0001\u0000\u0000\u0000\u008e"
+ + "\u04bb\u0001\u0000\u0000\u0000\u0090\u04c9\u0001\u0000\u0000\u0000\u0092"
+ + "\u04dd\u0001\u0000\u0000\u0000\u0094\u0537\u0001\u0000\u0000\u0000\u0096"
+ + "\u0539\u0001\u0000\u0000\u0000\u0098\u0540\u0001\u0000\u0000\u0000\u009a"
+ + "\u0542\u0001\u0000\u0000\u0000\u009c\u054c\u0001\u0000\u0000\u0000\u009e"
+ + "\u0552\u0001\u0000\u0000\u0000\u00a0\u0575\u0001\u0000\u0000\u0000\u00a2"
+ + "\u0578\u0001\u0000\u0000\u0000\u00a4\u058f\u0001\u0000\u0000\u0000\u00a6"
+ + "\u05ac\u0001\u0000\u0000\u0000\u00a8\u05ae\u0001\u0000\u0000\u0000\u00aa"
+ + "\u05b0\u0001\u0000\u0000\u0000\u00ac\u05b8\u0001\u0000\u0000\u0000\u00ae"
+ + "\u05bb\u0001\u0000\u0000\u0000\u00b0\u05c3\u0001\u0000\u0000\u0000\u00b2"
+ + "\u05c5\u0001\u0000\u0000\u0000\u00b4\u05c9\u0001\u0000\u0000\u0000\u00b6"
+ + "\u05cb\u0001\u0000\u0000\u0000\u00b8\u05cd\u0001\u0000\u0000\u0000\u00ba"
+ + "\u05cf\u0001\u0000\u0000\u0000\u00bc\u05e8\u0001\u0000\u0000\u0000\u00be"
+ + "\u0611\u0001\u0000\u0000\u0000\u00c0\u0613\u0001\u0000\u0000\u0000\u00c2"
+ + "\u061a\u0001\u0000\u0000\u0000\u00c4\u061c\u0001\u0000\u0000\u0000\u00c6"
+ + "\u061e\u0001\u0000\u0000\u0000\u00c8\u0620\u0001\u0000\u0000\u0000\u00ca"
+ + "\u0622\u0001\u0000\u0000\u0000\u00cc\u0624\u0001\u0000\u0000\u0000\u00ce"
+ + "\u00d0\u0005}\u0000\u0000\u00cf\u00ce\u0001\u0000\u0000\u0000\u00cf\u00d0"
+ + "\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001\u0000\u0000\u0000\u00d1\u00d6"
+ + "\u0003\u0002\u0001\u0000\u00d2\u00d4\u0005}\u0000\u0000\u00d3\u00d2\u0001"
+ + "\u0000\u0000\u0000\u00d3\u00d4\u0001\u0000\u0000\u0000\u00d4\u00d5\u0001"
+ + "\u0000\u0000\u0000\u00d5\u00d7\u0005\u0001\u0000\u0000\u00d6\u00d3\u0001"
+ + "\u0000\u0000\u0000\u00d6\u00d7\u0001\u0000\u0000\u0000\u00d7\u00d9\u0001"
+ + "\u0000\u0000\u0000\u00d8\u00da\u0005}\u0000\u0000\u00d9\u00d8\u0001\u0000"
+ + "\u0000\u0000\u00d9\u00da\u0001\u0000\u0000\u0000\u00da\u00db\u0001\u0000"
+ + "\u0000\u0000\u00db\u00dc\u0005\u0000\u0000\u0001\u00dc\u0001\u0001\u0000"
+ + "\u0000\u0000\u00dd\u00de\u0003\u0004\u0002\u0000\u00de\u0003\u0001\u0000"
+ + "\u0000\u0000\u00df\u00e2\u0003\u0006\u0003\u0000\u00e0\u00e2\u0003*\u0015"
+ + "\u0000\u00e1\u00df\u0001\u0000\u0000\u0000\u00e1\u00e0\u0001\u0000\u0000"
+ + "\u0000\u00e2\u0005\u0001\u0000\u0000\u0000\u00e3\u00ea\u0003\n\u0005\u0000"
+ + "\u00e4\u00e6\u0005}\u0000\u0000\u00e5\u00e4\u0001\u0000\u0000\u0000\u00e5"
+ + "\u00e6\u0001\u0000\u0000\u0000\u00e6\u00e7\u0001\u0000\u0000\u0000\u00e7"
+ + "\u00e9\u0003\b\u0004\u0000\u00e8\u00e5\u0001\u0000\u0000\u0000\u00e9\u00ec"
+ + "\u0001\u0000\u0000\u0000\u00ea\u00e8\u0001\u0000\u0000\u0000\u00ea\u00eb"
+ + "\u0001\u0000\u0000\u0000\u00eb\u0007\u0001\u0000\u0000\u0000\u00ec\u00ea"
+ + "\u0001\u0000\u0000\u0000\u00ed\u00ee\u0005.\u0000\u0000\u00ee\u00ef\u0005"
+ + "}\u0000\u0000\u00ef\u00f1\u0005/\u0000\u0000\u00f0\u00f2\u0005}\u0000"
+ + "\u0000\u00f1\u00f0\u0001\u0000\u0000\u0000\u00f1\u00f2\u0001\u0000\u0000"
+ + "\u0000\u00f2\u00f3\u0001\u0000\u0000\u0000\u00f3\u00fa\u0003\n\u0005\u0000"
+ + "\u00f4\u00f6\u0005.\u0000\u0000\u00f5\u00f7\u0005}\u0000\u0000\u00f6\u00f5"
+ + "\u0001\u0000\u0000\u0000\u00f6\u00f7\u0001\u0000\u0000\u0000\u00f7\u00f8"
+ + "\u0001\u0000\u0000\u0000\u00f8\u00fa\u0003\n\u0005\u0000\u00f9\u00ed\u0001"
+ + "\u0000\u0000\u0000\u00f9\u00f4\u0001\u0000\u0000\u0000\u00fa\t\u0001\u0000"
+ + "\u0000\u0000\u00fb\u00fe\u0003\f\u0006\u0000\u00fc\u00fe\u0003\u000e\u0007"
+ + "\u0000\u00fd\u00fb\u0001\u0000\u0000\u0000\u00fd\u00fc\u0001\u0000\u0000"
+ + "\u0000\u00fe\u000b\u0001\u0000\u0000\u0000\u00ff\u0101\u0003\u0012\t\u0000"
+ + "\u0100\u0102\u0005}\u0000\u0000\u0101\u0100\u0001\u0000\u0000\u0000\u0101"
+ + "\u0102\u0001\u0000\u0000\u0000\u0102\u0104\u0001\u0000\u0000\u0000\u0103"
+ + "\u00ff\u0001\u0000\u0000\u0000\u0104\u0107\u0001\u0000\u0000\u0000\u0105"
+ + "\u0103\u0001\u0000\u0000\u0000\u0105\u0106\u0001\u0000\u0000\u0000\u0106"
+ + "\u0108\u0001\u0000\u0000\u0000\u0107\u0105\u0001\u0000\u0000\u0000\u0108"
+ + "\u0123\u00032\u0019\u0000\u0109\u010b\u0003\u0012\t\u0000\u010a\u010c"
+ + "\u0005}\u0000\u0000\u010b\u010a\u0001\u0000\u0000\u0000\u010b\u010c\u0001"
+ + "\u0000\u0000\u0000\u010c\u010e\u0001\u0000\u0000\u0000\u010d\u0109\u0001"
+ + "\u0000\u0000\u0000\u010e\u0111\u0001\u0000\u0000\u0000\u010f\u010d\u0001"
+ + "\u0000\u0000\u0000\u010f\u0110\u0001\u0000\u0000\u0000\u0110\u0112\u0001"
+ + "\u0000\u0000\u0000\u0111\u010f\u0001\u0000\u0000\u0000\u0112\u0119\u0003"
+ + "\u0010\b\u0000\u0113\u0115\u0005}\u0000\u0000\u0114\u0113\u0001\u0000"
+ + "\u0000\u0000\u0114\u0115\u0001\u0000\u0000\u0000\u0115\u0116\u0001\u0000"
+ + "\u0000\u0000\u0116\u0118\u0003\u0010\b\u0000\u0117\u0114\u0001\u0000\u0000"
+ + "\u0000\u0118\u011b\u0001\u0000\u0000\u0000\u0119\u0117\u0001\u0000\u0000"
+ + "\u0000\u0119\u011a\u0001\u0000\u0000\u0000\u011a\u0120\u0001\u0000\u0000"
+ + "\u0000\u011b\u0119\u0001\u0000\u0000\u0000\u011c\u011e\u0005}\u0000\u0000"
+ + "\u011d\u011c\u0001\u0000\u0000\u0000\u011d\u011e\u0001\u0000\u0000\u0000"
+ + "\u011e\u011f\u0001\u0000\u0000\u0000\u011f\u0121\u00032\u0019\u0000\u0120"
+ + "\u011d\u0001\u0000\u0000\u0000\u0120\u0121\u0001\u0000\u0000\u0000\u0121"
+ + "\u0123\u0001\u0000\u0000\u0000\u0122\u0105\u0001\u0000\u0000\u0000\u0122"
+ + "\u010f\u0001\u0000\u0000\u0000\u0123\r\u0001\u0000\u0000\u0000\u0124\u0126"
+ + "\u0003\u0012\t\u0000\u0125\u0127\u0005}\u0000\u0000\u0126\u0125\u0001"
+ + "\u0000\u0000\u0000\u0126\u0127\u0001\u0000\u0000\u0000\u0127\u0129\u0001"
+ + "\u0000\u0000\u0000\u0128\u0124\u0001\u0000\u0000\u0000\u0129\u012c\u0001"
+ + "\u0000\u0000\u0000\u012a\u0128\u0001\u0000\u0000\u0000\u012a\u012b\u0001"
+ + "\u0000\u0000\u0000\u012b\u0133\u0001\u0000\u0000\u0000\u012c\u012a\u0001"
+ + "\u0000\u0000\u0000\u012d\u012f\u0003\u0010\b\u0000\u012e\u0130\u0005}"
+ + "\u0000\u0000\u012f\u012e\u0001\u0000\u0000\u0000\u012f\u0130\u0001\u0000"
+ + "\u0000\u0000\u0130\u0132\u0001\u0000\u0000\u0000\u0131\u012d\u0001\u0000"
+ + "\u0000\u0000\u0132\u0135\u0001\u0000\u0000\u0000\u0133\u0131\u0001\u0000"
+ + "\u0000\u0000\u0133\u0134\u0001\u0000\u0000\u0000\u0134\u0136\u0001\u0000"
+ + "\u0000\u0000\u0135\u0133\u0001\u0000\u0000\u0000\u0136\u0138\u00030\u0018"
+ + "\u0000\u0137\u0139\u0005}\u0000\u0000\u0138\u0137\u0001\u0000\u0000\u0000"
+ + "\u0138\u0139\u0001\u0000\u0000\u0000\u0139\u013b\u0001\u0000\u0000\u0000"
+ + "\u013a\u012a\u0001\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000\u0000"
+ + "\u013c\u013a\u0001\u0000\u0000\u0000\u013c\u013d\u0001\u0000\u0000\u0000"
+ + "\u013d\u013e\u0001\u0000\u0000\u0000\u013e\u013f\u0003\f\u0006\u0000\u013f"
+ + "\u000f\u0001\u0000\u0000\u0000\u0140\u0146\u0003\u001c\u000e\u0000\u0141"
+ + "\u0146\u0003\u0018\f\u0000\u0142\u0146\u0003\"\u0011\u0000\u0143\u0146"
+ + "\u0003\u001e\u000f\u0000\u0144\u0146\u0003$\u0012\u0000\u0145\u0140\u0001"
+ + "\u0000\u0000\u0000\u0145\u0141\u0001\u0000\u0000\u0000\u0145\u0142\u0001"
+ + "\u0000\u0000\u0000\u0145\u0143\u0001\u0000\u0000\u0000\u0145\u0144\u0001"
+ + "\u0000\u0000\u0000\u0146\u0011\u0001\u0000\u0000\u0000\u0147\u014b\u0003"
+ + "\u0014\n\u0000\u0148\u014b\u0003\u0016\u000b\u0000\u0149\u014b\u0003("
+ + "\u0014\u0000\u014a\u0147\u0001\u0000\u0000\u0000\u014a\u0148\u0001\u0000"
+ + "\u0000\u0000\u014a\u0149\u0001\u0000\u0000\u0000\u014b\u0013\u0001\u0000"
+ + "\u0000\u0000\u014c\u014d\u00050\u0000\u0000\u014d\u014f\u0005}\u0000\u0000"
+ + "\u014e\u014c\u0001\u0000\u0000\u0000\u014e\u014f\u0001\u0000\u0000\u0000"
+ + "\u014f\u0150\u0001\u0000\u0000\u0000\u0150\u0152\u00051\u0000\u0000\u0151"
+ + "\u0153\u0005}\u0000\u0000\u0152\u0151\u0001\u0000\u0000\u0000\u0152\u0153"
+ + "\u0001\u0000\u0000\u0000\u0153\u0154\u0001\u0000\u0000\u0000\u0154\u0159"
+ + "\u0003D\"\u0000\u0155\u0157\u0005}\u0000\u0000\u0156\u0155\u0001\u0000"
+ + "\u0000\u0000\u0156\u0157\u0001\u0000\u0000\u0000\u0157\u0158\u0001\u0000"
+ + "\u0000\u0000\u0158\u015a\u0003B!\u0000\u0159\u0156\u0001\u0000\u0000\u0000"
+ + "\u0159\u015a\u0001\u0000\u0000\u0000\u015a\u0015\u0001\u0000\u0000\u0000"
+ + "\u015b\u015d\u00052\u0000\u0000\u015c\u015e\u0005}\u0000\u0000\u015d\u015c"
+ + "\u0001\u0000\u0000\u0000\u015d\u015e\u0001\u0000\u0000\u0000\u015e\u015f"
+ + "\u0001\u0000\u0000\u0000\u015f\u0160\u0003f3\u0000\u0160\u0161\u0005}"
+ + "\u0000\u0000\u0161\u0162\u00053\u0000\u0000\u0162\u0163\u0005}\u0000\u0000"
+ + "\u0163\u0164\u0003\u00aeW\u0000\u0164\u0017\u0001\u0000\u0000\u0000\u0165"
+ + "\u0167\u00054\u0000\u0000\u0166\u0168\u0005}\u0000\u0000\u0167\u0166\u0001"
+ + "\u0000\u0000\u0000\u0167\u0168\u0001\u0000\u0000\u0000\u0168\u0169\u0001"
+ + "\u0000\u0000\u0000\u0169\u016e\u0003F#\u0000\u016a\u016b\u0005}\u0000"
+ + "\u0000\u016b\u016d\u0003\u001a\r\u0000\u016c\u016a\u0001\u0000\u0000\u0000"
+ + "\u016d\u0170\u0001\u0000\u0000\u0000\u016e\u016c\u0001\u0000\u0000\u0000"
+ + "\u016e\u016f\u0001\u0000\u0000\u0000\u016f\u0019\u0001\u0000\u0000\u0000"
+ + "\u0170\u016e\u0001\u0000\u0000\u0000\u0171\u0172\u00055\u0000\u0000\u0172"
+ + "\u0173\u0005}\u0000\u0000\u0173\u0174\u00051\u0000\u0000\u0174\u0175\u0005"
+ + "}\u0000\u0000\u0175\u017c\u0003\u001e\u000f\u0000\u0176\u0177\u00055\u0000"
+ + "\u0000\u0177\u0178\u0005}\u0000\u0000\u0178\u0179\u00056\u0000\u0000\u0179"
+ + "\u017a\u0005}\u0000\u0000\u017a\u017c\u0003\u001e\u000f\u0000\u017b\u0171"
+ + "\u0001\u0000\u0000\u0000\u017b\u0176\u0001\u0000\u0000\u0000\u017c\u001b"
+ + "\u0001\u0000\u0000\u0000\u017d\u017f\u00056\u0000\u0000\u017e\u0180\u0005"
+ + "}\u0000\u0000\u017f\u017e\u0001\u0000\u0000\u0000\u017f\u0180\u0001\u0000"
+ + "\u0000\u0000\u0180\u0181\u0001\u0000\u0000\u0000\u0181\u0182\u0003D\""
+ + "\u0000\u0182\u001d\u0001\u0000\u0000\u0000\u0183\u0185\u00057\u0000\u0000"
+ + "\u0184\u0186\u0005}\u0000\u0000\u0185\u0184\u0001\u0000\u0000\u0000\u0185"
+ + "\u0186\u0001\u0000\u0000\u0000\u0186\u0187\u0001\u0000\u0000\u0000\u0187"
+ + "\u0192\u0003 \u0010\u0000\u0188\u018a\u0005}\u0000\u0000\u0189\u0188\u0001"
+ + "\u0000\u0000\u0000\u0189\u018a\u0001\u0000\u0000\u0000\u018a\u018b\u0001"
+ + "\u0000\u0000\u0000\u018b\u018d\u0005\u0002\u0000\u0000\u018c\u018e\u0005"
+ + "}\u0000\u0000\u018d\u018c\u0001\u0000\u0000\u0000\u018d\u018e\u0001\u0000"
+ + "\u0000\u0000\u018e\u018f\u0001\u0000\u0000\u0000\u018f\u0191\u0003 \u0010"
+ + "\u0000\u0190\u0189\u0001\u0000\u0000\u0000\u0191\u0194\u0001\u0000\u0000"
+ + "\u0000\u0192\u0190\u0001\u0000\u0000\u0000\u0192\u0193\u0001\u0000\u0000"
+ + "\u0000\u0193\u001f\u0001\u0000\u0000\u0000\u0194\u0192\u0001\u0000\u0000"
+ + "\u0000\u0195\u0197\u0003d2\u0000\u0196\u0198\u0005}\u0000\u0000\u0197"
+ + "\u0196\u0001\u0000\u0000\u0000\u0197\u0198\u0001\u0000\u0000\u0000\u0198"
+ + "\u0199\u0001\u0000\u0000\u0000\u0199\u019b\u0005\u0003\u0000\u0000\u019a"
+ + "\u019c\u0005}\u0000\u0000\u019b\u019a\u0001\u0000\u0000\u0000\u019b\u019c"
+ + "\u0001\u0000\u0000\u0000\u019c\u019d\u0001\u0000\u0000\u0000\u019d\u019e"
+ + "\u0003f3\u0000\u019e\u01ba\u0001\u0000\u0000\u0000\u019f\u01a1\u0003\u00ae"
+ + "W\u0000\u01a0\u01a2\u0005}\u0000\u0000\u01a1\u01a0\u0001\u0000\u0000\u0000"
+ + "\u01a1\u01a2\u0001\u0000\u0000\u0000\u01a2\u01a3\u0001\u0000\u0000\u0000"
+ + "\u01a3\u01a5\u0005\u0003\u0000\u0000\u01a4\u01a6\u0005}\u0000\u0000\u01a5"
+ + "\u01a4\u0001\u0000\u0000\u0000\u01a5\u01a6\u0001\u0000\u0000\u0000\u01a6"
+ + "\u01a7\u0001\u0000\u0000\u0000\u01a7\u01a8\u0003f3\u0000\u01a8\u01ba\u0001"
+ + "\u0000\u0000\u0000\u01a9\u01ab\u0003\u00aeW\u0000\u01aa\u01ac\u0005}\u0000"
+ + "\u0000\u01ab\u01aa\u0001\u0000\u0000\u0000\u01ab\u01ac\u0001\u0000\u0000"
+ + "\u0000\u01ac\u01ad\u0001\u0000\u0000\u0000\u01ad\u01af\u0005\u0004\u0000"
+ + "\u0000\u01ae\u01b0\u0005}\u0000\u0000\u01af\u01ae\u0001\u0000\u0000\u0000"
+ + "\u01af\u01b0\u0001\u0000\u0000\u0000\u01b0\u01b1\u0001\u0000\u0000\u0000"
+ + "\u01b1\u01b2\u0003f3\u0000\u01b2\u01ba\u0001\u0000\u0000\u0000\u01b3\u01b5"
+ + "\u0003\u00aeW\u0000\u01b4\u01b6\u0005}\u0000\u0000\u01b5\u01b4\u0001\u0000"
+ + "\u0000\u0000\u01b5\u01b6\u0001\u0000\u0000\u0000\u01b6\u01b7\u0001\u0000"
+ + "\u0000\u0000\u01b7\u01b8\u0003Z-\u0000\u01b8\u01ba\u0001\u0000\u0000\u0000"
+ + "\u01b9\u0195\u0001\u0000\u0000\u0000\u01b9\u019f\u0001\u0000\u0000\u0000"
+ + "\u01b9\u01a9\u0001\u0000\u0000\u0000\u01b9\u01b3\u0001\u0000\u0000\u0000"
+ + "\u01ba!\u0001\u0000\u0000\u0000\u01bb\u01bc\u00058\u0000\u0000\u01bc\u01be"
+ + "\u0005}\u0000\u0000\u01bd\u01bb\u0001\u0000\u0000\u0000\u01bd\u01be\u0001"
+ + "\u0000\u0000\u0000\u01be\u01bf\u0001\u0000\u0000\u0000\u01bf\u01c1\u0005"
+ + "9\u0000\u0000\u01c0\u01c2\u0005}\u0000\u0000\u01c1\u01c0\u0001\u0000\u0000"
+ + "\u0000\u01c1\u01c2\u0001\u0000\u0000\u0000\u01c2\u01c3\u0001\u0000\u0000"
+ + "\u0000\u01c3\u01ce\u0003f3\u0000\u01c4\u01c6\u0005}\u0000\u0000\u01c5"
+ + "\u01c4\u0001\u0000\u0000\u0000\u01c5\u01c6\u0001\u0000\u0000\u0000\u01c6"
+ + "\u01c7\u0001\u0000\u0000\u0000\u01c7\u01c9\u0005\u0002\u0000\u0000\u01c8"
+ + "\u01ca\u0005}\u0000\u0000\u01c9\u01c8\u0001\u0000\u0000\u0000\u01c9\u01ca"
+ + "\u0001\u0000\u0000\u0000\u01ca\u01cb\u0001\u0000\u0000\u0000\u01cb\u01cd"
+ + "\u0003f3\u0000\u01cc\u01c5\u0001\u0000\u0000\u0000\u01cd\u01d0\u0001\u0000"
+ + "\u0000\u0000\u01ce\u01cc\u0001\u0000\u0000\u0000\u01ce\u01cf\u0001\u0000"
+ + "\u0000\u0000\u01cf#\u0001\u0000\u0000\u0000\u01d0\u01ce\u0001\u0000\u0000"
+ + "\u0000\u01d1\u01d2\u0005:\u0000\u0000\u01d2\u01d3\u0005}\u0000\u0000\u01d3"
+ + "\u01de\u0003&\u0013\u0000\u01d4\u01d6\u0005}\u0000\u0000\u01d5\u01d4\u0001"
+ + "\u0000\u0000\u0000\u01d5\u01d6\u0001\u0000\u0000\u0000\u01d6\u01d7\u0001"
+ + "\u0000\u0000\u0000\u01d7\u01d9\u0005\u0002\u0000\u0000\u01d8\u01da\u0005"
+ + "}\u0000\u0000\u01d9\u01d8\u0001\u0000\u0000\u0000\u01d9\u01da\u0001\u0000"
+ + "\u0000\u0000\u01da\u01db\u0001\u0000\u0000\u0000\u01db\u01dd\u0003&\u0013"
+ + "\u0000\u01dc\u01d5\u0001\u0000\u0000\u0000\u01dd\u01e0\u0001\u0000\u0000"
+ + "\u0000\u01de\u01dc\u0001\u0000\u0000\u0000\u01de\u01df\u0001\u0000\u0000"
+ + "\u0000\u01df%\u0001\u0000\u0000\u0000\u01e0\u01de\u0001\u0000\u0000\u0000"
+ + "\u01e1\u01e2\u0003\u00aeW\u0000\u01e2\u01e3\u0003Z-\u0000\u01e3\u01e6"
+ + "\u0001\u0000\u0000\u0000\u01e4\u01e6\u0003d2\u0000\u01e5\u01e1\u0001\u0000"
+ + "\u0000\u0000\u01e5\u01e4\u0001\u0000\u0000\u0000\u01e6\'\u0001\u0000\u0000"
+ + "\u0000\u01e7\u01e8\u0005;\u0000\u0000\u01e8\u01e9\u0005}\u0000\u0000\u01e9"
+ + "\u01f0\u0003\u00a4R\u0000\u01ea\u01ec\u0005}\u0000\u0000\u01eb\u01ea\u0001"
+ + "\u0000\u0000\u0000\u01eb\u01ec\u0001\u0000\u0000\u0000\u01ec\u01ed\u0001"
+ + "\u0000\u0000\u0000\u01ed\u01ee\u0005<\u0000\u0000\u01ee\u01ef\u0005}\u0000"
+ + "\u0000\u01ef\u01f1\u0003,\u0016\u0000\u01f0\u01eb\u0001\u0000\u0000\u0000"
+ + "\u01f0\u01f1\u0001\u0000\u0000\u0000\u01f1)\u0001\u0000\u0000\u0000\u01f2"
+ + "\u01f3\u0005;\u0000\u0000\u01f3\u01f6\u0005}\u0000\u0000\u01f4\u01f7\u0003"
+ + "\u00a4R\u0000\u01f5\u01f7\u0003\u00a6S\u0000\u01f6\u01f4\u0001\u0000\u0000"
+ + "\u0000\u01f6\u01f5\u0001\u0000\u0000\u0000\u01f7\u0201\u0001\u0000\u0000"
+ + "\u0000\u01f8\u01fa\u0005}\u0000\u0000\u01f9\u01f8\u0001\u0000\u0000\u0000"
+ + "\u01f9\u01fa\u0001\u0000\u0000\u0000\u01fa\u01fb\u0001\u0000\u0000\u0000"
+ + "\u01fb\u01fc\u0005<\u0000\u0000\u01fc\u01ff\u0005}\u0000\u0000\u01fd\u0200"
+ + "\u0005\u0005\u0000\u0000\u01fe\u0200\u0003,\u0016\u0000\u01ff\u01fd\u0001"
+ + "\u0000\u0000\u0000\u01ff\u01fe\u0001\u0000\u0000\u0000\u0200\u0202\u0001"
+ + "\u0000\u0000\u0000\u0201\u01f9\u0001\u0000\u0000\u0000\u0201\u0202\u0001"
+ + "\u0000\u0000\u0000\u0202+\u0001\u0000\u0000\u0000\u0203\u020e\u0003.\u0017"
+ + "\u0000\u0204\u0206\u0005}\u0000\u0000\u0205\u0204\u0001\u0000\u0000\u0000"
+ + "\u0205\u0206\u0001\u0000\u0000\u0000\u0206\u0207\u0001\u0000\u0000\u0000"
+ + "\u0207\u0209\u0005\u0002\u0000\u0000\u0208\u020a\u0005}\u0000\u0000\u0209"
+ + "\u0208\u0001\u0000\u0000\u0000\u0209\u020a\u0001\u0000\u0000\u0000\u020a"
+ + "\u020b\u0001\u0000\u0000\u0000\u020b\u020d\u0003.\u0017\u0000\u020c\u0205"
+ + "\u0001\u0000\u0000\u0000\u020d\u0210\u0001\u0000\u0000\u0000\u020e\u020c"
+ + "\u0001\u0000\u0000\u0000\u020e\u020f\u0001\u0000\u0000\u0000\u020f\u0215"
+ + "\u0001\u0000\u0000\u0000\u0210\u020e\u0001\u0000\u0000\u0000\u0211\u0213"
+ + "\u0005}\u0000\u0000\u0212\u0211\u0001\u0000\u0000\u0000\u0212\u0213\u0001"
+ + "\u0000\u0000\u0000\u0213\u0214\u0001\u0000\u0000\u0000\u0214\u0216\u0003"
+ + "B!\u0000\u0215\u0212\u0001\u0000\u0000\u0000\u0215\u0216\u0001\u0000\u0000"
+ + "\u0000\u0216-\u0001\u0000\u0000\u0000\u0217\u0218\u0003\u00a8T\u0000\u0218"
+ + "\u0219\u0005}\u0000\u0000\u0219\u021a\u00053\u0000\u0000\u021a\u021b\u0005"
+ + "}\u0000\u0000\u021b\u021d\u0001\u0000\u0000\u0000\u021c\u0217\u0001\u0000"
+ + "\u0000\u0000\u021c\u021d\u0001\u0000\u0000\u0000\u021d\u021e\u0001\u0000"
+ + "\u0000\u0000\u021e\u021f\u0003\u00aeW\u0000\u021f/\u0001\u0000\u0000\u0000"
+ + "\u0220\u0221\u0005=\u0000\u0000\u0221\u0226\u00034\u001a\u0000\u0222\u0224"
+ + "\u0005}\u0000\u0000\u0223\u0222\u0001\u0000\u0000\u0000\u0223\u0224\u0001"
+ + "\u0000\u0000\u0000\u0224\u0225\u0001\u0000\u0000\u0000\u0225\u0227\u0003"
+ + "B!\u0000\u0226\u0223\u0001\u0000\u0000\u0000\u0226\u0227\u0001\u0000\u0000"
+ + "\u0000\u02271\u0001\u0000\u0000\u0000\u0228\u0229\u0005>\u0000\u0000\u0229"
+ + "\u022a\u00034\u001a\u0000\u022a3\u0001\u0000\u0000\u0000\u022b\u022d\u0005"
+ + "}\u0000\u0000\u022c\u022b\u0001\u0000\u0000\u0000\u022c\u022d\u0001\u0000"
+ + "\u0000\u0000\u022d\u022e\u0001\u0000\u0000\u0000\u022e\u0230\u0005?\u0000"
+ + "\u0000\u022f\u022c\u0001\u0000\u0000\u0000\u022f\u0230\u0001\u0000\u0000"
+ + "\u0000\u0230\u0231\u0001\u0000\u0000\u0000\u0231\u0232\u0005}\u0000\u0000"
+ + "\u0232\u0235\u00036\u001b\u0000\u0233\u0234\u0005}\u0000\u0000\u0234\u0236"
+ + "\u0003:\u001d\u0000\u0235\u0233\u0001\u0000\u0000\u0000\u0235\u0236\u0001"
+ + "\u0000\u0000\u0000\u0236\u0239\u0001\u0000\u0000\u0000\u0237\u0238\u0005"
+ + "}\u0000\u0000\u0238\u023a\u0003<\u001e\u0000\u0239\u0237\u0001\u0000\u0000"
+ + "\u0000\u0239\u023a\u0001\u0000\u0000\u0000\u023a\u023d\u0001\u0000\u0000"
+ + "\u0000\u023b\u023c\u0005}\u0000\u0000\u023c\u023e\u0003>\u001f\u0000\u023d"
+ + "\u023b\u0001\u0000\u0000\u0000\u023d\u023e\u0001\u0000\u0000\u0000\u023e"
+ + "5\u0001\u0000\u0000\u0000\u023f\u024a\u0005\u0005\u0000\u0000\u0240\u0242"
+ + "\u0005}\u0000\u0000\u0241\u0240\u0001\u0000\u0000\u0000\u0241\u0242\u0001"
+ + "\u0000\u0000\u0000\u0242\u0243\u0001\u0000\u0000\u0000\u0243\u0245\u0005"
+ + "\u0002\u0000\u0000\u0244\u0246\u0005}\u0000\u0000\u0245\u0244\u0001\u0000"
+ + "\u0000\u0000\u0245\u0246\u0001\u0000\u0000\u0000\u0246\u0247\u0001\u0000"
+ + "\u0000\u0000\u0247\u0249\u00038\u001c\u0000\u0248\u0241\u0001\u0000\u0000"
+ + "\u0000\u0249\u024c\u0001\u0000\u0000\u0000\u024a\u0248\u0001\u0000\u0000"
+ + "\u0000\u024a\u024b\u0001\u0000\u0000\u0000\u024b\u025c\u0001\u0000\u0000"
+ + "\u0000\u024c\u024a\u0001\u0000\u0000\u0000\u024d\u0258\u00038\u001c\u0000"
+ + "\u024e\u0250\u0005}\u0000\u0000\u024f\u024e\u0001\u0000\u0000\u0000\u024f"
+ + "\u0250\u0001\u0000\u0000\u0000\u0250\u0251\u0001\u0000\u0000\u0000\u0251"
+ + "\u0253\u0005\u0002\u0000\u0000\u0252\u0254\u0005}\u0000\u0000\u0253\u0252"
+ + "\u0001\u0000\u0000\u0000\u0253\u0254\u0001\u0000\u0000\u0000\u0254\u0255"
+ + "\u0001\u0000\u0000\u0000\u0255\u0257\u00038\u001c\u0000\u0256\u024f\u0001"
+ + "\u0000\u0000\u0000\u0257\u025a\u0001\u0000\u0000\u0000\u0258\u0256\u0001"
+ + "\u0000\u0000\u0000\u0258\u0259\u0001\u0000\u0000\u0000\u0259\u025c\u0001"
+ + "\u0000\u0000\u0000\u025a\u0258\u0001\u0000\u0000\u0000\u025b\u023f\u0001"
+ + "\u0000\u0000\u0000\u025b\u024d\u0001\u0000\u0000\u0000\u025c7\u0001\u0000"
+ + "\u0000\u0000\u025d\u025e\u0003f3\u0000\u025e\u025f\u0005}\u0000\u0000"
+ + "\u025f\u0260\u00053\u0000\u0000\u0260\u0261\u0005}\u0000\u0000\u0261\u0262"
+ + "\u0003\u00aeW\u0000\u0262\u0265\u0001\u0000\u0000\u0000\u0263\u0265\u0003"
+ + "f3\u0000\u0264\u025d\u0001\u0000\u0000\u0000\u0264\u0263\u0001\u0000\u0000"
+ + "\u0000\u02659\u0001\u0000\u0000\u0000\u0266\u0267\u0005@\u0000\u0000\u0267"
+ + "\u0268\u0005}\u0000\u0000\u0268\u0269\u0005A\u0000\u0000\u0269\u026a\u0005"
+ + "}\u0000\u0000\u026a\u0272\u0003@ \u0000\u026b\u026d\u0005\u0002\u0000"
+ + "\u0000\u026c\u026e\u0005}\u0000\u0000\u026d\u026c\u0001\u0000\u0000\u0000"
+ + "\u026d\u026e\u0001\u0000\u0000\u0000\u026e\u026f\u0001\u0000\u0000\u0000"
+ + "\u026f\u0271\u0003@ \u0000\u0270\u026b\u0001\u0000\u0000\u0000\u0271\u0274"
+ + "\u0001\u0000\u0000\u0000\u0272\u0270\u0001\u0000\u0000\u0000\u0272\u0273"
+ + "\u0001\u0000\u0000\u0000\u0273;\u0001\u0000\u0000\u0000\u0274\u0272\u0001"
+ + "\u0000\u0000\u0000\u0275\u0276\u0005B\u0000\u0000\u0276\u0277\u0005}\u0000"
+ + "\u0000\u0277\u0278\u0003f3\u0000\u0278=\u0001\u0000\u0000\u0000\u0279"
+ + "\u027a\u0005C\u0000\u0000\u027a\u027b\u0005}\u0000\u0000\u027b\u027c\u0003"
+ + "f3\u0000\u027c?\u0001\u0000\u0000\u0000\u027d\u0282\u0003f3\u0000\u027e"
+ + "\u0280\u0005}\u0000\u0000\u027f\u027e\u0001\u0000\u0000\u0000\u027f\u0280"
+ + "\u0001\u0000\u0000\u0000\u0280\u0281\u0001\u0000\u0000\u0000\u0281\u0283"
+ + "\u0007\u0000\u0000\u0000\u0282\u027f\u0001\u0000\u0000\u0000\u0282\u0283"
+ + "\u0001\u0000\u0000\u0000\u0283A\u0001\u0000\u0000\u0000\u0284\u0285\u0005"
+ + "H\u0000\u0000\u0285\u0286\u0005}\u0000\u0000\u0286\u0287\u0003f3\u0000"
+ + "\u0287C\u0001\u0000\u0000\u0000\u0288\u0293\u0003F#\u0000\u0289\u028b"
+ + "\u0005}\u0000\u0000\u028a\u0289\u0001\u0000\u0000\u0000\u028a\u028b\u0001"
+ + "\u0000\u0000\u0000\u028b\u028c\u0001\u0000\u0000\u0000\u028c\u028e\u0005"
+ + "\u0002\u0000\u0000\u028d\u028f\u0005}\u0000\u0000\u028e\u028d\u0001\u0000"
+ + "\u0000\u0000\u028e\u028f\u0001\u0000\u0000\u0000\u028f\u0290\u0001\u0000"
+ + "\u0000\u0000\u0290\u0292\u0003F#\u0000\u0291\u028a\u0001\u0000\u0000\u0000"
+ + "\u0292\u0295\u0001\u0000\u0000\u0000\u0293\u0291\u0001\u0000\u0000\u0000"
+ + "\u0293\u0294\u0001\u0000\u0000\u0000\u0294E\u0001\u0000\u0000\u0000\u0295"
+ + "\u0293\u0001\u0000\u0000\u0000\u0296\u0298\u0003\u00aeW\u0000\u0297\u0299"
+ + "\u0005}\u0000\u0000\u0298\u0297\u0001\u0000\u0000\u0000\u0298\u0299\u0001"
+ + "\u0000\u0000\u0000\u0299\u029a\u0001\u0000\u0000\u0000\u029a\u029c\u0005"
+ + "\u0003\u0000\u0000\u029b\u029d\u0005}\u0000\u0000\u029c\u029b\u0001\u0000"
+ + "\u0000\u0000\u029c\u029d\u0001\u0000\u0000\u0000\u029d\u029e\u0001\u0000"
+ + "\u0000\u0000\u029e\u029f\u0003H$\u0000\u029f\u02a2\u0001\u0000\u0000\u0000"
+ + "\u02a0\u02a2\u0003H$\u0000\u02a1\u0296\u0001\u0000\u0000\u0000\u02a1\u02a0"
+ + "\u0001\u0000\u0000\u0000\u02a2G\u0001\u0000\u0000\u0000\u02a3\u02a4\u0003"
+ + "J%\u0000\u02a4I\u0001\u0000\u0000\u0000\u02a5\u02ac\u0003N\'\u0000\u02a6"
+ + "\u02a8\u0005}\u0000\u0000\u02a7\u02a6\u0001\u0000\u0000\u0000\u02a7\u02a8"
+ + "\u0001\u0000\u0000\u0000\u02a8\u02a9\u0001\u0000\u0000\u0000\u02a9\u02ab"
+ + "\u0003P(\u0000\u02aa\u02a7\u0001\u0000\u0000\u0000\u02ab\u02ae\u0001\u0000"
+ + "\u0000\u0000\u02ac\u02aa\u0001\u0000\u0000\u0000\u02ac\u02ad\u0001\u0000"
+ + "\u0000\u0000\u02ad\u02b4\u0001\u0000\u0000\u0000\u02ae\u02ac\u0001\u0000"
+ + "\u0000\u0000\u02af\u02b0\u0005\u0006\u0000\u0000\u02b0\u02b1\u0003J%\u0000"
+ + "\u02b1\u02b2\u0005\u0007\u0000\u0000\u02b2\u02b4\u0001\u0000\u0000\u0000"
+ + "\u02b3\u02a5\u0001\u0000\u0000\u0000\u02b3\u02af\u0001\u0000\u0000\u0000"
+ + "\u02b4K\u0001\u0000\u0000\u0000\u02b5\u02ba\u0003N\'\u0000\u02b6\u02b8"
+ + "\u0005}\u0000\u0000\u02b7\u02b6\u0001\u0000\u0000\u0000\u02b7\u02b8\u0001"
+ + "\u0000\u0000\u0000\u02b8\u02b9\u0001\u0000\u0000\u0000\u02b9\u02bb\u0003"
+ + "P(\u0000\u02ba\u02b7\u0001\u0000\u0000\u0000\u02bb\u02bc\u0001\u0000\u0000"
+ + "\u0000\u02bc\u02ba\u0001\u0000\u0000\u0000\u02bc\u02bd\u0001\u0000\u0000"
+ + "\u0000\u02bdM\u0001\u0000\u0000\u0000\u02be\u02c0\u0005\u0006\u0000\u0000"
+ + "\u02bf\u02c1\u0005}\u0000\u0000\u02c0\u02bf\u0001\u0000\u0000\u0000\u02c0"
+ + "\u02c1\u0001\u0000\u0000\u0000\u02c1\u02c6\u0001\u0000\u0000\u0000\u02c2"
+ + "\u02c4\u0003\u00aeW\u0000\u02c3\u02c5\u0005}\u0000\u0000\u02c4\u02c3\u0001"
+ + "\u0000\u0000\u0000\u02c4\u02c5\u0001\u0000\u0000\u0000\u02c5\u02c7\u0001"
+ + "\u0000\u0000\u0000\u02c6\u02c2\u0001\u0000\u0000\u0000\u02c6\u02c7\u0001"
+ + "\u0000\u0000\u0000\u02c7\u02cc\u0001\u0000\u0000\u0000\u02c8\u02ca\u0003"
+ + "Z-\u0000\u02c9\u02cb\u0005}\u0000\u0000\u02ca\u02c9\u0001\u0000\u0000"
+ + "\u0000\u02ca\u02cb\u0001\u0000\u0000\u0000\u02cb\u02cd\u0001\u0000\u0000"
+ + "\u0000\u02cc\u02c8\u0001\u0000\u0000\u0000\u02cc\u02cd\u0001\u0000\u0000"
+ + "\u0000\u02cd\u02d2\u0001\u0000\u0000\u0000\u02ce\u02d0\u0003V+\u0000\u02cf"
+ + "\u02d1\u0005}\u0000\u0000\u02d0\u02cf\u0001\u0000\u0000\u0000\u02d0\u02d1"
+ + "\u0001\u0000\u0000\u0000\u02d1\u02d3\u0001\u0000\u0000\u0000\u02d2\u02ce"
+ + "\u0001\u0000\u0000\u0000\u02d2\u02d3\u0001\u0000\u0000\u0000\u02d3\u02d4"
+ + "\u0001\u0000\u0000\u0000\u02d4\u02d5\u0005\u0007\u0000\u0000\u02d5O\u0001"
+ + "\u0000\u0000\u0000\u02d6\u02d8\u0003R)\u0000\u02d7\u02d9\u0005}\u0000"
+ + "\u0000\u02d8\u02d7\u0001\u0000\u0000\u0000\u02d8\u02d9\u0001\u0000\u0000"
+ + "\u0000\u02d9\u02da\u0001\u0000\u0000\u0000\u02da\u02db\u0003N\'\u0000"
+ + "\u02dbQ\u0001\u0000\u0000\u0000\u02dc\u02de\u0003\u00c8d\u0000\u02dd\u02df"
+ + "\u0005}\u0000\u0000\u02de\u02dd\u0001\u0000\u0000\u0000\u02de\u02df\u0001"
+ + "\u0000\u0000\u0000\u02df\u02e0\u0001\u0000\u0000\u0000\u02e0\u02e2\u0003"
+ + "\u00ccf\u0000\u02e1\u02e3\u0005}\u0000\u0000\u02e2\u02e1\u0001\u0000\u0000"
+ + "\u0000\u02e2\u02e3\u0001\u0000\u0000\u0000\u02e3\u02e5\u0001\u0000\u0000"
+ + "\u0000\u02e4\u02e6\u0003T*\u0000\u02e5\u02e4\u0001\u0000\u0000\u0000\u02e5"
+ + "\u02e6\u0001\u0000\u0000\u0000\u02e6\u02e8\u0001\u0000\u0000\u0000\u02e7"
+ + "\u02e9\u0005}\u0000\u0000\u02e8\u02e7\u0001\u0000\u0000\u0000\u02e8\u02e9"
+ + "\u0001\u0000\u0000\u0000\u02e9\u02ea\u0001\u0000\u0000\u0000\u02ea\u02ec"
+ + "\u0003\u00ccf\u0000\u02eb\u02ed\u0005}\u0000\u0000\u02ec\u02eb\u0001\u0000"
+ + "\u0000\u0000\u02ec\u02ed\u0001\u0000\u0000\u0000\u02ed\u02ee\u0001\u0000"
+ + "\u0000\u0000\u02ee\u02ef\u0003\u00cae\u0000\u02ef\u031d\u0001\u0000\u0000"
+ + "\u0000\u02f0\u02f2\u0003\u00c8d\u0000\u02f1\u02f3\u0005}\u0000\u0000\u02f2"
+ + "\u02f1\u0001\u0000\u0000\u0000\u02f2\u02f3\u0001\u0000\u0000\u0000\u02f3"
+ + "\u02f4\u0001\u0000\u0000\u0000\u02f4\u02f6\u0003\u00ccf\u0000\u02f5\u02f7"
+ + "\u0005}\u0000\u0000\u02f6\u02f5\u0001\u0000\u0000\u0000\u02f6\u02f7\u0001"
+ + "\u0000\u0000\u0000\u02f7\u02f9\u0001\u0000\u0000\u0000\u02f8\u02fa\u0003"
+ + "T*\u0000\u02f9\u02f8\u0001\u0000\u0000\u0000\u02f9\u02fa\u0001\u0000\u0000"
+ + "\u0000\u02fa\u02fc\u0001\u0000\u0000\u0000\u02fb\u02fd\u0005}\u0000\u0000"
+ + "\u02fc\u02fb\u0001\u0000\u0000\u0000\u02fc\u02fd\u0001\u0000\u0000\u0000"
+ + "\u02fd\u02fe\u0001\u0000\u0000\u0000\u02fe\u02ff\u0003\u00ccf\u0000\u02ff"
+ + "\u031d\u0001\u0000\u0000\u0000\u0300\u0302\u0003\u00ccf\u0000\u0301\u0303"
+ + "\u0005}\u0000\u0000\u0302\u0301\u0001\u0000\u0000\u0000\u0302\u0303\u0001"
+ + "\u0000\u0000\u0000\u0303\u0305\u0001\u0000\u0000\u0000\u0304\u0306\u0003"
+ + "T*\u0000\u0305\u0304\u0001\u0000\u0000\u0000\u0305\u0306\u0001\u0000\u0000"
+ + "\u0000\u0306\u0308\u0001\u0000\u0000\u0000\u0307\u0309\u0005}\u0000\u0000"
+ + "\u0308\u0307\u0001\u0000\u0000\u0000\u0308\u0309\u0001\u0000\u0000\u0000"
+ + "\u0309\u030a\u0001\u0000\u0000\u0000\u030a\u030c\u0003\u00ccf\u0000\u030b"
+ + "\u030d\u0005}\u0000\u0000\u030c\u030b\u0001\u0000\u0000\u0000\u030c\u030d"
+ + "\u0001\u0000\u0000\u0000\u030d\u030e\u0001\u0000\u0000\u0000\u030e\u030f"
+ + "\u0003\u00cae\u0000\u030f\u031d\u0001\u0000\u0000\u0000\u0310\u0312\u0003"
+ + "\u00ccf\u0000\u0311\u0313\u0005}\u0000\u0000\u0312\u0311\u0001\u0000\u0000"
+ + "\u0000\u0312\u0313\u0001\u0000\u0000\u0000\u0313\u0315\u0001\u0000\u0000"
+ + "\u0000\u0314\u0316\u0003T*\u0000\u0315\u0314\u0001\u0000\u0000\u0000\u0315"
+ + "\u0316\u0001\u0000\u0000\u0000\u0316\u0318\u0001\u0000\u0000\u0000\u0317"
+ + "\u0319\u0005}\u0000\u0000\u0318\u0317\u0001\u0000\u0000\u0000\u0318\u0319"
+ + "\u0001\u0000\u0000\u0000\u0319\u031a\u0001\u0000\u0000\u0000\u031a\u031b"
+ + "\u0003\u00ccf\u0000\u031b\u031d\u0001\u0000\u0000\u0000\u031c\u02dc\u0001"
+ + "\u0000\u0000\u0000\u031c\u02f0\u0001\u0000\u0000\u0000\u031c\u0300\u0001"
+ + "\u0000\u0000\u0000\u031c\u0310\u0001\u0000\u0000\u0000\u031dS\u0001\u0000"
+ + "\u0000\u0000\u031e\u0320\u0005\b\u0000\u0000\u031f\u0321\u0005}\u0000"
+ + "\u0000\u0320\u031f\u0001\u0000\u0000\u0000\u0320\u0321\u0001\u0000\u0000"
+ + "\u0000\u0321\u0326\u0001\u0000\u0000\u0000\u0322\u0324\u0003\u00aeW\u0000"
+ + "\u0323\u0325\u0005}\u0000\u0000\u0324\u0323\u0001\u0000\u0000\u0000\u0324"
+ + "\u0325\u0001\u0000\u0000\u0000\u0325\u0327\u0001\u0000\u0000\u0000\u0326"
+ + "\u0322\u0001\u0000\u0000\u0000\u0326\u0327\u0001\u0000\u0000\u0000\u0327"
+ + "\u032c\u0001\u0000\u0000\u0000\u0328\u032a\u0003X,\u0000\u0329\u032b\u0005"
+ + "}\u0000\u0000\u032a\u0329\u0001\u0000\u0000\u0000\u032a\u032b\u0001\u0000"
+ + "\u0000\u0000\u032b\u032d\u0001\u0000\u0000\u0000\u032c\u0328\u0001\u0000"
+ + "\u0000\u0000\u032c\u032d\u0001\u0000\u0000\u0000\u032d\u032f\u0001\u0000"
+ + "\u0000\u0000\u032e\u0330\u0003^/\u0000\u032f\u032e\u0001\u0000\u0000\u0000"
+ + "\u032f\u0330\u0001\u0000\u0000\u0000\u0330\u0335\u0001\u0000\u0000\u0000"
+ + "\u0331\u0333\u0003V+\u0000\u0332\u0334\u0005}\u0000\u0000\u0333\u0332"
+ + "\u0001\u0000\u0000\u0000\u0333\u0334\u0001\u0000\u0000\u0000\u0334\u0336"
+ + "\u0001\u0000\u0000\u0000\u0335\u0331\u0001\u0000\u0000\u0000\u0335\u0336"
+ + "\u0001\u0000\u0000\u0000\u0336\u0337\u0001\u0000\u0000\u0000\u0337\u0338"
+ + "\u0005\t\u0000\u0000\u0338U\u0001\u0000\u0000\u0000\u0339\u033c\u0003"
+ + "\u00bc^\u0000\u033a\u033c\u0003\u00c0`\u0000\u033b\u0339\u0001\u0000\u0000"
+ + "\u0000\u033b\u033a\u0001\u0000\u0000\u0000\u033cW\u0001\u0000\u0000\u0000"
+ + "\u033d\u033f\u0005\n\u0000\u0000\u033e\u0340\u0005}\u0000\u0000\u033f"
+ + "\u033e\u0001\u0000\u0000\u0000\u033f\u0340\u0001\u0000\u0000\u0000\u0340"
+ + "\u0341\u0001\u0000\u0000\u0000\u0341\u034f\u0003b1\u0000\u0342\u0344\u0005"
+ + "}\u0000\u0000\u0343\u0342\u0001\u0000\u0000\u0000\u0343\u0344\u0001\u0000"
+ + "\u0000\u0000\u0344\u0345\u0001\u0000\u0000\u0000\u0345\u0347\u0005\u000b"
+ + "\u0000\u0000\u0346\u0348\u0005\n\u0000\u0000\u0347\u0346\u0001\u0000\u0000"
+ + "\u0000\u0347\u0348\u0001\u0000\u0000\u0000\u0348\u034a\u0001\u0000\u0000"
+ + "\u0000\u0349\u034b\u0005}\u0000\u0000\u034a\u0349\u0001\u0000\u0000\u0000"
+ + "\u034a\u034b\u0001\u0000\u0000\u0000\u034b\u034c\u0001\u0000\u0000\u0000"
+ + "\u034c\u034e\u0003b1\u0000\u034d\u0343\u0001\u0000\u0000\u0000\u034e\u0351"
+ + "\u0001\u0000\u0000\u0000\u034f\u034d\u0001\u0000\u0000\u0000\u034f\u0350"
+ + "\u0001\u0000\u0000\u0000\u0350Y\u0001\u0000\u0000\u0000\u0351\u034f\u0001"
+ + "\u0000\u0000\u0000\u0352\u0359\u0003\\.\u0000\u0353\u0355\u0005}\u0000"
+ + "\u0000\u0354\u0353\u0001\u0000\u0000\u0000\u0354\u0355\u0001\u0000\u0000"
+ + "\u0000\u0355\u0356\u0001\u0000\u0000\u0000\u0356\u0358\u0003\\.\u0000"
+ + "\u0357\u0354\u0001\u0000\u0000\u0000\u0358\u035b\u0001\u0000\u0000\u0000"
+ + "\u0359\u0357\u0001\u0000\u0000\u0000\u0359\u035a\u0001\u0000\u0000\u0000"
+ + "\u035a[\u0001\u0000\u0000\u0000\u035b\u0359\u0001\u0000\u0000\u0000\u035c"
+ + "\u035e\u0005\n\u0000\u0000\u035d\u035f\u0005}\u0000\u0000\u035e\u035d"
+ + "\u0001\u0000\u0000\u0000\u035e\u035f\u0001\u0000\u0000\u0000\u035f\u0360"
+ + "\u0001\u0000\u0000\u0000\u0360\u0361\u0003`0\u0000\u0361]\u0001\u0000"
+ + "\u0000\u0000\u0362\u0364\u0005\u0005\u0000\u0000\u0363\u0365\u0005}\u0000"
+ + "\u0000\u0364\u0363\u0001\u0000\u0000\u0000\u0364\u0365\u0001\u0000\u0000"
+ + "\u0000\u0365\u036a\u0001\u0000\u0000\u0000\u0366\u0368\u0003\u00b6[\u0000"
+ + "\u0367\u0369\u0005}\u0000\u0000\u0368\u0367\u0001\u0000\u0000\u0000\u0368"
+ + "\u0369\u0001\u0000\u0000\u0000\u0369\u036b\u0001\u0000\u0000\u0000\u036a"
+ + "\u0366\u0001\u0000\u0000\u0000\u036a\u036b\u0001\u0000\u0000\u0000\u036b"
+ + "\u0376\u0001\u0000\u0000\u0000\u036c\u036e\u0005\f\u0000\u0000\u036d\u036f"
+ + "\u0005}\u0000\u0000\u036e\u036d\u0001\u0000\u0000\u0000\u036e\u036f\u0001"
+ + "\u0000\u0000\u0000\u036f\u0374\u0001\u0000\u0000\u0000\u0370\u0372\u0003"
+ + "\u00b6[\u0000\u0371\u0373\u0005}\u0000\u0000\u0372\u0371\u0001\u0000\u0000"
+ + "\u0000\u0372\u0373\u0001\u0000\u0000\u0000\u0373\u0375\u0001\u0000\u0000"
+ + "\u0000\u0374\u0370\u0001\u0000\u0000\u0000\u0374\u0375\u0001\u0000\u0000"
+ + "\u0000\u0375\u0377\u0001\u0000\u0000\u0000\u0376\u036c\u0001\u0000\u0000"
+ + "\u0000\u0376\u0377\u0001\u0000\u0000\u0000\u0377_\u0001\u0000\u0000\u0000"
+ + "\u0378\u0379\u0003\u00c2a\u0000\u0379a\u0001\u0000\u0000\u0000\u037a\u037b"
+ + "\u0003\u00c2a\u0000\u037bc\u0001\u0000\u0000\u0000\u037c\u0381\u0003\u008a"
+ + "E\u0000\u037d\u037f\u0005}\u0000\u0000\u037e\u037d\u0001\u0000\u0000\u0000"
+ + "\u037e\u037f\u0001\u0000\u0000\u0000\u037f\u0380\u0001\u0000\u0000\u0000"
+ + "\u0380\u0382\u0003\u0088D\u0000\u0381\u037e\u0001\u0000\u0000\u0000\u0382"
+ + "\u0383\u0001\u0000\u0000\u0000\u0383\u0381\u0001\u0000\u0000\u0000\u0383"
+ + "\u0384\u0001\u0000\u0000\u0000\u0384e\u0001\u0000\u0000\u0000\u0385\u0386"
+ + "\u0003h4\u0000\u0386g\u0001\u0000\u0000\u0000\u0387\u038e\u0003j5\u0000"
+ + "\u0388\u0389\u0005}\u0000\u0000\u0389\u038a\u0005I\u0000\u0000\u038a\u038b"
+ + "\u0005}\u0000\u0000\u038b\u038d\u0003j5\u0000\u038c\u0388\u0001\u0000"
+ + "\u0000\u0000\u038d\u0390\u0001\u0000\u0000\u0000\u038e\u038c\u0001\u0000"
+ + "\u0000\u0000\u038e\u038f\u0001\u0000\u0000\u0000\u038fi\u0001\u0000\u0000"
+ + "\u0000\u0390\u038e\u0001\u0000\u0000\u0000\u0391\u0398\u0003l6\u0000\u0392"
+ + "\u0393\u0005}\u0000\u0000\u0393\u0394\u0005J\u0000\u0000\u0394\u0395\u0005"
+ + "}\u0000\u0000\u0395\u0397\u0003l6\u0000\u0396\u0392\u0001\u0000\u0000"
+ + "\u0000\u0397\u039a\u0001\u0000\u0000\u0000\u0398\u0396\u0001\u0000\u0000"
+ + "\u0000\u0398\u0399\u0001\u0000\u0000\u0000\u0399k\u0001\u0000\u0000\u0000"
+ + "\u039a\u0398\u0001\u0000\u0000\u0000\u039b\u03a2\u0003n7\u0000\u039c\u039d"
+ + "\u0005}\u0000\u0000\u039d\u039e\u0005K\u0000\u0000\u039e\u039f\u0005}"
+ + "\u0000\u0000\u039f\u03a1\u0003n7\u0000\u03a0\u039c\u0001\u0000\u0000\u0000"
+ + "\u03a1\u03a4\u0001\u0000\u0000\u0000\u03a2\u03a0\u0001\u0000\u0000\u0000"
+ + "\u03a2\u03a3\u0001\u0000\u0000\u0000\u03a3m\u0001\u0000\u0000\u0000\u03a4"
+ + "\u03a2\u0001\u0000\u0000\u0000\u03a5\u03a7\u0005L\u0000\u0000\u03a6\u03a8"
+ + "\u0005}\u0000\u0000\u03a7\u03a6\u0001\u0000\u0000\u0000\u03a7\u03a8\u0001"
+ + "\u0000\u0000\u0000\u03a8\u03aa\u0001\u0000\u0000\u0000\u03a9\u03a5\u0001"
+ + "\u0000\u0000\u0000\u03aa\u03ad\u0001\u0000\u0000\u0000\u03ab\u03a9\u0001"
+ + "\u0000\u0000\u0000\u03ab\u03ac\u0001\u0000\u0000\u0000\u03ac\u03ae\u0001"
+ + "\u0000\u0000\u0000\u03ad\u03ab\u0001\u0000\u0000\u0000\u03ae\u03af\u0003"
+ + "p8\u0000\u03afo\u0001\u0000\u0000\u0000\u03b0\u03b7\u0003t:\u0000\u03b1"
+ + "\u03b3\u0005}\u0000\u0000\u03b2\u03b1\u0001\u0000\u0000\u0000\u03b2\u03b3"
+ + "\u0001\u0000\u0000\u0000\u03b3\u03b4\u0001\u0000\u0000\u0000\u03b4\u03b6"
+ + "\u0003r9\u0000\u03b5\u03b2\u0001\u0000\u0000\u0000\u03b6\u03b9\u0001\u0000"
+ + "\u0000\u0000\u03b7\u03b5\u0001\u0000\u0000\u0000\u03b7\u03b8\u0001\u0000"
+ + "\u0000\u0000\u03b8q\u0001\u0000\u0000\u0000\u03b9\u03b7\u0001\u0000\u0000"
+ + "\u0000\u03ba\u03bc\u0005\u0003\u0000\u0000\u03bb\u03bd\u0005}\u0000\u0000"
+ + "\u03bc\u03bb\u0001\u0000\u0000\u0000\u03bc\u03bd\u0001\u0000\u0000\u0000"
+ + "\u03bd\u03be\u0001\u0000\u0000\u0000\u03be\u03d9\u0003t:\u0000\u03bf\u03c1"
+ + "\u0005\r\u0000\u0000\u03c0\u03c2\u0005}\u0000\u0000\u03c1\u03c0\u0001"
+ + "\u0000\u0000\u0000\u03c1\u03c2\u0001\u0000\u0000\u0000\u03c2\u03c3\u0001"
+ + "\u0000\u0000\u0000\u03c3\u03d9\u0003t:\u0000\u03c4\u03c6\u0005\u000e\u0000"
+ + "\u0000\u03c5\u03c7\u0005}\u0000\u0000\u03c6\u03c5\u0001\u0000\u0000\u0000"
+ + "\u03c6\u03c7\u0001\u0000\u0000\u0000\u03c7\u03c8\u0001\u0000\u0000\u0000"
+ + "\u03c8\u03d9\u0003t:\u0000\u03c9\u03cb\u0005\u000f\u0000\u0000\u03ca\u03cc"
+ + "\u0005}\u0000\u0000\u03cb\u03ca\u0001\u0000\u0000\u0000\u03cb\u03cc\u0001"
+ + "\u0000\u0000\u0000\u03cc\u03cd\u0001\u0000\u0000\u0000\u03cd\u03d9\u0003"
+ + "t:\u0000\u03ce\u03d0\u0005\u0010\u0000\u0000\u03cf\u03d1\u0005}\u0000"
+ + "\u0000\u03d0\u03cf\u0001\u0000\u0000\u0000\u03d0\u03d1\u0001\u0000\u0000"
+ + "\u0000\u03d1\u03d2\u0001\u0000\u0000\u0000\u03d2\u03d9\u0003t:\u0000\u03d3"
+ + "\u03d5\u0005\u0011\u0000\u0000\u03d4\u03d6\u0005}\u0000\u0000\u03d5\u03d4"
+ + "\u0001\u0000\u0000\u0000\u03d5\u03d6\u0001\u0000\u0000\u0000\u03d6\u03d7"
+ + "\u0001\u0000\u0000\u0000\u03d7\u03d9\u0003t:\u0000\u03d8\u03ba\u0001\u0000"
+ + "\u0000\u0000\u03d8\u03bf\u0001\u0000\u0000\u0000\u03d8\u03c4\u0001\u0000"
+ + "\u0000\u0000\u03d8\u03c9\u0001\u0000\u0000\u0000\u03d8\u03ce\u0001\u0000"
+ + "\u0000\u0000\u03d8\u03d3\u0001\u0000\u0000\u0000\u03d9s\u0001\u0000\u0000"
+ + "\u0000\u03da\u03e0\u0003|>\u0000\u03db\u03df\u0003v;\u0000\u03dc\u03df"
+ + "\u0003x<\u0000\u03dd\u03df\u0003z=\u0000\u03de\u03db\u0001\u0000\u0000"
+ + "\u0000\u03de\u03dc\u0001\u0000\u0000\u0000\u03de\u03dd\u0001\u0000\u0000"
+ + "\u0000\u03df\u03e2\u0001\u0000\u0000\u0000\u03e0\u03de\u0001\u0000\u0000"
+ + "\u0000\u03e0\u03e1\u0001\u0000\u0000\u0000\u03e1u\u0001\u0000\u0000\u0000"
+ + "\u03e2\u03e0\u0001\u0000\u0000\u0000\u03e3\u03e4\u0005}\u0000\u0000\u03e4"
+ + "\u03e5\u0005M\u0000\u0000\u03e5\u03e6\u0005}\u0000\u0000\u03e6\u03ee\u0005"
+ + "=\u0000\u0000\u03e7\u03e8\u0005}\u0000\u0000\u03e8\u03e9\u0005N\u0000"
+ + "\u0000\u03e9\u03ea\u0005}\u0000\u0000\u03ea\u03ee\u0005=\u0000\u0000\u03eb"
+ + "\u03ec\u0005}\u0000\u0000\u03ec\u03ee\u0005O\u0000\u0000\u03ed\u03e3\u0001"
+ + "\u0000\u0000\u0000\u03ed\u03e7\u0001\u0000\u0000\u0000\u03ed\u03eb\u0001"
+ + "\u0000\u0000\u0000\u03ee\u03f0\u0001\u0000\u0000\u0000\u03ef\u03f1\u0005"
+ + "}\u0000\u0000\u03f0\u03ef\u0001\u0000\u0000\u0000\u03f0\u03f1\u0001\u0000"
+ + "\u0000\u0000\u03f1\u03f2\u0001\u0000\u0000\u0000\u03f2\u03f3\u0003|>\u0000"
+ + "\u03f3w\u0001\u0000\u0000\u0000\u03f4\u03f5\u0005}\u0000\u0000\u03f5\u03f7"
+ + "\u0005P\u0000\u0000\u03f6\u03f8\u0005}\u0000\u0000\u03f7\u03f6\u0001\u0000"
+ + "\u0000\u0000\u03f7\u03f8\u0001\u0000\u0000\u0000\u03f8\u03f9\u0001\u0000"
+ + "\u0000\u0000\u03f9\u03fa\u0003|>\u0000\u03fay\u0001\u0000\u0000\u0000"
+ + "\u03fb\u03fc\u0005}\u0000\u0000\u03fc\u03fd\u0005Q\u0000\u0000\u03fd\u03fe"
+ + "\u0005}\u0000\u0000\u03fe\u0406\u0005R\u0000\u0000\u03ff\u0400\u0005}"
+ + "\u0000\u0000\u0400\u0401\u0005Q\u0000\u0000\u0401\u0402\u0005}\u0000\u0000"
+ + "\u0402\u0403\u0005L\u0000\u0000\u0403\u0404\u0005}\u0000\u0000\u0404\u0406"
+ + "\u0005R\u0000\u0000\u0405\u03fb\u0001\u0000\u0000\u0000\u0405\u03ff\u0001"
+ + "\u0000\u0000\u0000\u0406{\u0001\u0000\u0000\u0000\u0407\u041a\u0003~?"
+ + "\u0000\u0408\u040a\u0005}\u0000\u0000\u0409\u0408\u0001\u0000\u0000\u0000"
+ + "\u0409\u040a\u0001\u0000\u0000\u0000\u040a\u040b\u0001\u0000\u0000\u0000"
+ + "\u040b\u040d\u0005\u0012\u0000\u0000\u040c\u040e\u0005}\u0000\u0000\u040d"
+ + "\u040c\u0001\u0000\u0000\u0000\u040d\u040e\u0001\u0000\u0000\u0000\u040e"
+ + "\u040f\u0001\u0000\u0000\u0000\u040f\u0419\u0003~?\u0000\u0410\u0412\u0005"
+ + "}\u0000\u0000\u0411\u0410\u0001\u0000\u0000\u0000\u0411\u0412\u0001\u0000"
+ + "\u0000\u0000\u0412\u0413\u0001\u0000\u0000\u0000\u0413\u0415\u0005\u0013"
+ + "\u0000\u0000\u0414\u0416\u0005}\u0000\u0000\u0415\u0414\u0001\u0000\u0000"
+ + "\u0000\u0415\u0416\u0001\u0000\u0000\u0000\u0416\u0417\u0001\u0000\u0000"
+ + "\u0000\u0417\u0419\u0003~?\u0000\u0418\u0409\u0001\u0000\u0000\u0000\u0418"
+ + "\u0411\u0001\u0000\u0000\u0000\u0419\u041c\u0001\u0000\u0000\u0000\u041a"
+ + "\u0418\u0001\u0000\u0000\u0000\u041a\u041b\u0001\u0000\u0000\u0000\u041b"
+ + "}\u0001\u0000\u0000\u0000\u041c\u041a\u0001\u0000\u0000\u0000\u041d\u0438"
+ + "\u0003\u0080@\u0000\u041e\u0420\u0005}\u0000\u0000\u041f\u041e\u0001\u0000"
+ + "\u0000\u0000\u041f\u0420\u0001\u0000\u0000\u0000\u0420\u0421\u0001\u0000"
+ + "\u0000\u0000\u0421\u0423\u0005\u0005\u0000\u0000\u0422\u0424\u0005}\u0000"
+ + "\u0000\u0423\u0422\u0001\u0000\u0000\u0000\u0423\u0424\u0001\u0000\u0000"
+ + "\u0000\u0424\u0425\u0001\u0000\u0000\u0000\u0425\u0437\u0003\u0080@\u0000"
+ + "\u0426\u0428\u0005}\u0000\u0000\u0427\u0426\u0001\u0000\u0000\u0000\u0427"
+ + "\u0428\u0001\u0000\u0000\u0000\u0428\u0429\u0001\u0000\u0000\u0000\u0429"
+ + "\u042b\u0005\u0014\u0000\u0000\u042a\u042c\u0005}\u0000\u0000\u042b\u042a"
+ + "\u0001\u0000\u0000\u0000\u042b\u042c\u0001\u0000\u0000\u0000\u042c\u042d"
+ + "\u0001\u0000\u0000\u0000\u042d\u0437\u0003\u0080@\u0000\u042e\u0430\u0005"
+ + "}\u0000\u0000\u042f\u042e\u0001\u0000\u0000\u0000\u042f\u0430\u0001\u0000"
+ + "\u0000\u0000\u0430\u0431\u0001\u0000\u0000\u0000\u0431\u0433\u0005\u0015"
+ + "\u0000\u0000\u0432\u0434\u0005}\u0000\u0000\u0433\u0432\u0001\u0000\u0000"
+ + "\u0000\u0433\u0434\u0001\u0000\u0000\u0000\u0434\u0435\u0001\u0000\u0000"
+ + "\u0000\u0435\u0437\u0003\u0080@\u0000\u0436\u041f\u0001\u0000\u0000\u0000"
+ + "\u0436\u0427\u0001\u0000\u0000\u0000\u0436\u042f\u0001\u0000\u0000\u0000"
+ + "\u0437\u043a\u0001\u0000\u0000\u0000\u0438\u0436\u0001\u0000\u0000\u0000"
+ + "\u0438\u0439\u0001\u0000\u0000\u0000\u0439\u007f\u0001\u0000\u0000\u0000"
+ + "\u043a\u0438\u0001\u0000\u0000\u0000\u043b\u0446\u0003\u0082A\u0000\u043c"
+ + "\u043e\u0005}\u0000\u0000\u043d\u043c\u0001\u0000\u0000\u0000\u043d\u043e"
+ + "\u0001\u0000\u0000\u0000\u043e\u043f\u0001\u0000\u0000\u0000\u043f\u0441"
+ + "\u0005\u0016\u0000\u0000\u0440\u0442\u0005}\u0000\u0000\u0441\u0440\u0001"
+ + "\u0000\u0000\u0000\u0441\u0442\u0001\u0000\u0000\u0000\u0442\u0443\u0001"
+ + "\u0000\u0000\u0000\u0443\u0445\u0003\u0082A\u0000\u0444\u043d\u0001\u0000"
+ + "\u0000\u0000\u0445\u0448\u0001\u0000\u0000\u0000\u0446\u0444\u0001\u0000"
+ + "\u0000\u0000\u0446\u0447\u0001\u0000\u0000\u0000\u0447\u0081\u0001\u0000"
+ + "\u0000\u0000\u0448\u0446\u0001\u0000\u0000\u0000\u0449\u0450\u0003\u0084"
+ + "B\u0000\u044a\u044c\u0007\u0001\u0000\u0000\u044b\u044d\u0005}\u0000\u0000"
+ + "\u044c\u044b\u0001\u0000\u0000\u0000\u044c\u044d\u0001\u0000\u0000\u0000"
+ + "\u044d\u044e\u0001\u0000\u0000\u0000\u044e\u0450\u0003\u0084B\u0000\u044f"
+ + "\u0449\u0001\u0000\u0000\u0000\u044f\u044a\u0001\u0000\u0000\u0000\u0450"
+ + "\u0083\u0001\u0000\u0000\u0000\u0451\u045c\u0003\u008aE\u0000\u0452\u0454"
+ + "\u0005}\u0000\u0000\u0453\u0452\u0001\u0000\u0000\u0000\u0453\u0454\u0001"
+ + "\u0000\u0000\u0000\u0454\u0455\u0001\u0000\u0000\u0000\u0455\u045b\u0003"
+ + "\u0086C\u0000\u0456\u0458\u0005}\u0000\u0000\u0457\u0456\u0001\u0000\u0000"
+ + "\u0000\u0457\u0458\u0001\u0000\u0000\u0000\u0458\u0459\u0001\u0000\u0000"
+ + "\u0000\u0459\u045b\u0003\u0088D\u0000\u045a\u0453\u0001\u0000\u0000\u0000"
+ + "\u045a\u0457\u0001\u0000\u0000\u0000\u045b\u045e\u0001\u0000\u0000\u0000"
+ + "\u045c\u045a\u0001\u0000\u0000\u0000\u045c\u045d\u0001\u0000\u0000\u0000"
+ + "\u045d\u0463\u0001\u0000\u0000\u0000\u045e\u045c\u0001\u0000\u0000\u0000"
+ + "\u045f\u0461\u0005}\u0000\u0000\u0460\u045f\u0001\u0000\u0000\u0000\u0460"
+ + "\u0461\u0001\u0000\u0000\u0000\u0461\u0462\u0001\u0000\u0000\u0000\u0462"
+ + "\u0464\u0003Z-\u0000\u0463\u0460\u0001\u0000\u0000\u0000\u0463\u0464\u0001"
+ + "\u0000\u0000\u0000\u0464\u0085\u0001\u0000\u0000\u0000\u0465\u0466\u0005"
+ + "\b\u0000\u0000\u0466\u0467\u0003f3\u0000\u0467\u0468\u0005\t\u0000\u0000"
+ + "\u0468\u0473\u0001\u0000\u0000\u0000\u0469\u046b\u0005\b\u0000\u0000\u046a"
+ + "\u046c\u0003f3\u0000\u046b\u046a\u0001\u0000\u0000\u0000\u046b\u046c\u0001"
+ + "\u0000\u0000\u0000\u046c\u046d\u0001\u0000\u0000\u0000\u046d\u046f\u0005"
+ + "\f\u0000\u0000\u046e\u0470\u0003f3\u0000\u046f\u046e\u0001\u0000\u0000"
+ + "\u0000\u046f\u0470\u0001\u0000\u0000\u0000\u0470\u0471\u0001\u0000\u0000"
+ + "\u0000\u0471\u0473\u0005\t\u0000\u0000\u0472\u0465\u0001\u0000\u0000\u0000"
+ + "\u0472\u0469\u0001\u0000\u0000\u0000\u0473\u0087\u0001\u0000\u0000\u0000"
+ + "\u0474\u0476\u0005\u0017\u0000\u0000\u0475\u0477\u0005}\u0000\u0000\u0476"
+ + "\u0475\u0001\u0000\u0000\u0000\u0476\u0477\u0001\u0000\u0000\u0000\u0477"
+ + "\u0478\u0001\u0000\u0000\u0000\u0478\u0479\u0003\u00be_\u0000\u0479\u0089"
+ + "\u0001\u0000\u0000\u0000\u047a\u0493\u0003\u00b0X\u0000\u047b\u0493\u0003"
+ + "\u00c0`\u0000\u047c\u0493\u0003\u008cF\u0000\u047d\u047f\u0005S\u0000"
+ + "\u0000\u047e\u0480\u0005}\u0000\u0000\u047f\u047e\u0001\u0000\u0000\u0000"
+ + "\u047f\u0480\u0001\u0000\u0000\u0000\u0480\u0481\u0001\u0000\u0000\u0000"
+ + "\u0481\u0483\u0005\u0006\u0000\u0000\u0482\u0484\u0005}\u0000\u0000\u0483"
+ + "\u0482\u0001\u0000\u0000\u0000\u0483\u0484\u0001\u0000\u0000\u0000\u0484"
+ + "\u0485\u0001\u0000\u0000\u0000\u0485\u0487\u0005\u0005\u0000\u0000\u0486"
+ + "\u0488\u0005}\u0000\u0000\u0487\u0486\u0001\u0000\u0000\u0000\u0487\u0488"
+ + "\u0001\u0000\u0000\u0000\u0488\u0489\u0001\u0000\u0000\u0000\u0489\u0493"
+ + "\u0005\u0007\u0000\u0000\u048a\u0493\u0003\u0090H\u0000\u048b\u0493\u0003"
+ + "\u0092I\u0000\u048c\u0493\u0003\u0094J\u0000\u048d\u0493\u0003\u0098L"
+ + "\u0000\u048e\u0493\u0003\u009aM\u0000\u048f\u0493\u0003\u009eO\u0000\u0490"
+ + "\u0493\u0003\u00a2Q\u0000\u0491\u0493\u0003\u00aeW\u0000\u0492\u047a\u0001"
+ + "\u0000\u0000\u0000\u0492\u047b\u0001\u0000\u0000\u0000\u0492\u047c\u0001"
+ + "\u0000\u0000\u0000\u0492\u047d\u0001\u0000\u0000\u0000\u0492\u048a\u0001"
+ + "\u0000\u0000\u0000\u0492\u048b\u0001\u0000\u0000\u0000\u0492\u048c\u0001"
+ + "\u0000\u0000\u0000\u0492\u048d\u0001\u0000\u0000\u0000\u0492\u048e\u0001"
+ + "\u0000\u0000\u0000\u0492\u048f\u0001\u0000\u0000\u0000\u0492\u0490\u0001"
+ + "\u0000\u0000\u0000\u0492\u0491\u0001\u0000\u0000\u0000\u0493\u008b\u0001"
+ + "\u0000\u0000\u0000\u0494\u0499\u0005T\u0000\u0000\u0495\u0497\u0005}\u0000"
+ + "\u0000\u0496\u0495\u0001\u0000\u0000\u0000\u0496\u0497\u0001\u0000\u0000"
+ + "\u0000\u0497\u0498\u0001\u0000\u0000\u0000\u0498\u049a\u0003\u008eG\u0000"
+ + "\u0499\u0496\u0001\u0000\u0000\u0000\u049a\u049b\u0001\u0000\u0000\u0000"
+ + "\u049b\u0499\u0001\u0000\u0000\u0000\u049b\u049c\u0001\u0000\u0000\u0000"
+ + "\u049c\u04ab\u0001\u0000\u0000\u0000\u049d\u049f\u0005T\u0000\u0000\u049e"
+ + "\u04a0\u0005}\u0000\u0000\u049f\u049e\u0001\u0000\u0000\u0000\u049f\u04a0"
+ + "\u0001\u0000\u0000\u0000\u04a0\u04a1\u0001\u0000\u0000\u0000\u04a1\u04a6"
+ + "\u0003f3\u0000\u04a2\u04a4\u0005}\u0000\u0000\u04a3\u04a2\u0001\u0000"
+ + "\u0000\u0000\u04a3\u04a4\u0001\u0000\u0000\u0000\u04a4\u04a5\u0001\u0000"
+ + "\u0000\u0000\u04a5\u04a7\u0003\u008eG\u0000\u04a6\u04a3\u0001\u0000\u0000"
+ + "\u0000\u04a7\u04a8\u0001\u0000\u0000\u0000\u04a8\u04a6\u0001\u0000\u0000"
+ + "\u0000\u04a8\u04a9\u0001\u0000\u0000\u0000\u04a9\u04ab\u0001\u0000\u0000"
+ + "\u0000\u04aa\u0494\u0001\u0000\u0000\u0000\u04aa\u049d\u0001\u0000\u0000"
+ + "\u0000\u04ab\u04b4\u0001\u0000\u0000\u0000\u04ac\u04ae\u0005}\u0000\u0000"
+ + "\u04ad\u04ac\u0001\u0000\u0000\u0000\u04ad\u04ae\u0001\u0000\u0000\u0000"
+ + "\u04ae\u04af\u0001\u0000\u0000\u0000\u04af\u04b1\u0005U\u0000\u0000\u04b0"
+ + "\u04b2\u0005}\u0000\u0000\u04b1\u04b0\u0001\u0000\u0000\u0000\u04b1\u04b2"
+ + "\u0001\u0000\u0000\u0000\u04b2\u04b3\u0001\u0000\u0000\u0000\u04b3\u04b5"
+ + "\u0003f3\u0000\u04b4\u04ad\u0001\u0000\u0000\u0000\u04b4\u04b5\u0001\u0000"
+ + "\u0000\u0000\u04b5\u04b7\u0001\u0000\u0000\u0000\u04b6\u04b8\u0005}\u0000"
+ + "\u0000\u04b7\u04b6\u0001\u0000\u0000\u0000\u04b7\u04b8\u0001\u0000\u0000"
+ + "\u0000\u04b8\u04b9\u0001\u0000\u0000\u0000\u04b9\u04ba\u0005V\u0000\u0000"
+ + "\u04ba\u008d\u0001\u0000\u0000\u0000\u04bb\u04bd\u0005W\u0000\u0000\u04bc"
+ + "\u04be\u0005}\u0000\u0000\u04bd\u04bc\u0001\u0000\u0000\u0000\u04bd\u04be"
+ + "\u0001\u0000\u0000\u0000\u04be\u04bf\u0001\u0000\u0000\u0000\u04bf\u04c1"
+ + "\u0003f3\u0000\u04c0\u04c2\u0005}\u0000\u0000\u04c1\u04c0\u0001\u0000"
+ + "\u0000\u0000\u04c1\u04c2\u0001\u0000\u0000\u0000\u04c2\u04c3\u0001\u0000"
+ + "\u0000\u0000\u04c3\u04c5\u0005X\u0000\u0000\u04c4\u04c6\u0005}\u0000\u0000"
+ + "\u04c5\u04c4\u0001\u0000\u0000\u0000\u04c5\u04c6\u0001\u0000\u0000\u0000"
+ + "\u04c6\u04c7\u0001\u0000\u0000\u0000\u04c7\u04c8\u0003f3\u0000\u04c8\u008f"
+ + "\u0001\u0000\u0000\u0000\u04c9\u04cb\u0005\b\u0000\u0000\u04ca\u04cc\u0005"
+ + "}\u0000\u0000\u04cb\u04ca\u0001\u0000\u0000\u0000\u04cb\u04cc\u0001\u0000"
+ + "\u0000\u0000\u04cc\u04cd\u0001\u0000\u0000\u0000\u04cd\u04d6\u0003\u0096"
+ + "K\u0000\u04ce\u04d0\u0005}\u0000\u0000\u04cf\u04ce\u0001\u0000\u0000\u0000"
+ + "\u04cf\u04d0\u0001\u0000\u0000\u0000\u04d0\u04d1\u0001\u0000\u0000\u0000"
+ + "\u04d1\u04d3\u0005\u000b\u0000\u0000\u04d2\u04d4\u0005}\u0000\u0000\u04d3"
+ + "\u04d2\u0001\u0000\u0000\u0000\u04d3\u04d4\u0001\u0000\u0000\u0000\u04d4"
+ + "\u04d5\u0001\u0000\u0000\u0000\u04d5\u04d7\u0003f3\u0000\u04d6\u04cf\u0001"
+ + "\u0000\u0000\u0000\u04d6\u04d7\u0001\u0000\u0000\u0000\u04d7\u04d9\u0001"
+ + "\u0000\u0000\u0000\u04d8\u04da\u0005}\u0000\u0000\u04d9\u04d8\u0001\u0000"
+ + "\u0000\u0000\u04d9\u04da\u0001\u0000\u0000\u0000\u04da\u04db\u0001\u0000"
+ + "\u0000\u0000\u04db\u04dc\u0005\t\u0000\u0000\u04dc\u0091\u0001\u0000\u0000"
+ + "\u0000\u04dd\u04df\u0005\b\u0000\u0000\u04de\u04e0\u0005}\u0000\u0000"
+ + "\u04df\u04de\u0001\u0000\u0000\u0000\u04df\u04e0\u0001\u0000\u0000\u0000"
+ + "\u04e0\u04e9\u0001\u0000\u0000\u0000\u04e1\u04e3\u0003\u00aeW\u0000\u04e2"
+ + "\u04e4\u0005}\u0000\u0000\u04e3\u04e2\u0001\u0000\u0000\u0000\u04e3\u04e4"
+ + "\u0001\u0000\u0000\u0000\u04e4\u04e5\u0001\u0000\u0000\u0000\u04e5\u04e7"
+ + "\u0005\u0003\u0000\u0000\u04e6\u04e8\u0005}\u0000\u0000\u04e7\u04e6\u0001"
+ + "\u0000\u0000\u0000\u04e7\u04e8\u0001\u0000\u0000\u0000\u04e8\u04ea\u0001"
+ + "\u0000\u0000\u0000\u04e9\u04e1\u0001\u0000\u0000\u0000\u04e9\u04ea\u0001"
+ + "\u0000\u0000\u0000\u04ea\u04eb\u0001\u0000\u0000\u0000\u04eb\u04ed\u0003"
+ + "L&\u0000\u04ec\u04ee\u0005}\u0000\u0000\u04ed\u04ec\u0001\u0000\u0000"
+ + "\u0000\u04ed\u04ee\u0001\u0000\u0000\u0000\u04ee\u04f3\u0001\u0000\u0000"
+ + "\u0000\u04ef\u04f1\u0003B!\u0000\u04f0\u04f2\u0005}\u0000\u0000\u04f1"
+ + "\u04f0\u0001\u0000\u0000\u0000\u04f1\u04f2\u0001\u0000\u0000\u0000\u04f2"
+ + "\u04f4\u0001\u0000\u0000\u0000\u04f3\u04ef\u0001\u0000\u0000\u0000\u04f3"
+ + "\u04f4\u0001\u0000\u0000\u0000\u04f4\u04f5\u0001\u0000\u0000\u0000\u04f5"
+ + "\u04f7\u0005\u000b\u0000\u0000\u04f6\u04f8\u0005}\u0000\u0000\u04f7\u04f6"
+ + "\u0001\u0000\u0000\u0000\u04f7\u04f8\u0001\u0000\u0000\u0000\u04f8\u04f9"
+ + "\u0001\u0000\u0000\u0000\u04f9\u04fb\u0003f3\u0000\u04fa\u04fc\u0005}"
+ + "\u0000\u0000\u04fb\u04fa\u0001\u0000\u0000\u0000\u04fb\u04fc\u0001\u0000"
+ + "\u0000\u0000\u04fc\u04fd\u0001\u0000\u0000\u0000\u04fd\u04fe\u0005\t\u0000"
+ + "\u0000\u04fe\u0093\u0001\u0000\u0000\u0000\u04ff\u0501\u0005/\u0000\u0000"
+ + "\u0500\u0502\u0005}\u0000\u0000\u0501\u0500\u0001\u0000\u0000\u0000\u0501"
+ + "\u0502\u0001\u0000\u0000\u0000\u0502\u0503\u0001\u0000\u0000\u0000\u0503"
+ + "\u0505\u0005\u0006\u0000\u0000\u0504\u0506\u0005}\u0000\u0000\u0505\u0504"
+ + "\u0001\u0000\u0000\u0000\u0505\u0506\u0001\u0000\u0000\u0000\u0506\u0507"
+ + "\u0001\u0000\u0000\u0000\u0507\u0509\u0003\u0096K\u0000\u0508\u050a\u0005"
+ + "}\u0000\u0000\u0509\u0508\u0001\u0000\u0000\u0000\u0509\u050a\u0001\u0000"
+ + "\u0000\u0000\u050a\u050b\u0001\u0000\u0000\u0000\u050b\u050c\u0005\u0007"
+ + "\u0000\u0000\u050c\u0538\u0001\u0000\u0000\u0000\u050d\u050f\u0005Y\u0000"
+ + "\u0000\u050e\u0510\u0005}\u0000\u0000\u050f\u050e\u0001\u0000\u0000\u0000"
+ + "\u050f\u0510\u0001\u0000\u0000\u0000\u0510\u0511\u0001\u0000\u0000\u0000"
+ + "\u0511\u0513\u0005\u0006\u0000\u0000\u0512\u0514\u0005}\u0000\u0000\u0513"
+ + "\u0512\u0001\u0000\u0000\u0000\u0513\u0514\u0001\u0000\u0000\u0000\u0514"
+ + "\u0515\u0001\u0000\u0000\u0000\u0515\u0517\u0003\u0096K\u0000\u0516\u0518"
+ + "\u0005}\u0000\u0000\u0517\u0516\u0001\u0000\u0000\u0000\u0517\u0518\u0001"
+ + "\u0000\u0000\u0000\u0518\u0519\u0001\u0000\u0000\u0000\u0519\u051a\u0005"
+ + "\u0007\u0000\u0000\u051a\u0538\u0001\u0000\u0000\u0000\u051b\u051d\u0005"
+ + "Z\u0000\u0000\u051c\u051e\u0005}\u0000\u0000\u051d\u051c\u0001\u0000\u0000"
+ + "\u0000\u051d\u051e\u0001\u0000\u0000\u0000\u051e\u051f\u0001\u0000\u0000"
+ + "\u0000\u051f\u0521\u0005\u0006\u0000\u0000\u0520\u0522\u0005}\u0000\u0000"
+ + "\u0521\u0520\u0001\u0000\u0000\u0000\u0521\u0522\u0001\u0000\u0000\u0000"
+ + "\u0522\u0523\u0001\u0000\u0000\u0000\u0523\u0525\u0003\u0096K\u0000\u0524"
+ + "\u0526\u0005}\u0000\u0000\u0525\u0524\u0001\u0000\u0000\u0000\u0525\u0526"
+ + "\u0001\u0000\u0000\u0000\u0526\u0527\u0001\u0000\u0000\u0000\u0527\u0528"
+ + "\u0005\u0007\u0000\u0000\u0528\u0538\u0001\u0000\u0000\u0000\u0529\u052b"
+ + "\u0005[\u0000\u0000\u052a\u052c\u0005}\u0000\u0000\u052b\u052a\u0001\u0000"
+ + "\u0000\u0000\u052b\u052c\u0001\u0000\u0000\u0000\u052c\u052d\u0001\u0000"
+ + "\u0000\u0000\u052d\u052f\u0005\u0006\u0000\u0000\u052e\u0530\u0005}\u0000"
+ + "\u0000\u052f\u052e\u0001\u0000\u0000\u0000\u052f\u0530\u0001\u0000\u0000"
+ + "\u0000\u0530\u0531\u0001\u0000\u0000\u0000\u0531\u0533\u0003\u0096K\u0000"
+ + "\u0532\u0534\u0005}\u0000\u0000\u0533\u0532\u0001\u0000\u0000\u0000\u0533"
+ + "\u0534\u0001\u0000\u0000\u0000\u0534\u0535\u0001\u0000\u0000\u0000\u0535"
+ + "\u0536\u0005\u0007\u0000\u0000\u0536\u0538\u0001\u0000\u0000\u0000\u0537"
+ + "\u04ff\u0001\u0000\u0000\u0000\u0537\u050d\u0001\u0000\u0000\u0000\u0537"
+ + "\u051b\u0001\u0000\u0000\u0000\u0537\u0529\u0001\u0000\u0000\u0000\u0538"
+ + "\u0095\u0001\u0000\u0000\u0000\u0539\u053e\u0003\u009cN\u0000\u053a\u053c"
+ + "\u0005}\u0000\u0000\u053b\u053a\u0001\u0000\u0000\u0000\u053b\u053c\u0001"
+ + "\u0000\u0000\u0000\u053c\u053d\u0001\u0000\u0000\u0000\u053d\u053f\u0003"
+ + "B!\u0000\u053e\u053b\u0001\u0000\u0000\u0000\u053e\u053f\u0001\u0000\u0000"
+ + "\u0000\u053f\u0097\u0001\u0000\u0000\u0000\u0540\u0541\u0003L&\u0000\u0541"
+ + "\u0099\u0001\u0000\u0000\u0000\u0542\u0544\u0005\u0006\u0000\u0000\u0543"
+ + "\u0545\u0005}\u0000\u0000\u0544\u0543\u0001\u0000\u0000\u0000\u0544\u0545"
+ + "\u0001\u0000\u0000\u0000\u0545\u0546\u0001\u0000\u0000\u0000\u0546\u0548"
+ + "\u0003f3\u0000\u0547\u0549\u0005}\u0000\u0000\u0548\u0547\u0001\u0000"
+ + "\u0000\u0000\u0548\u0549\u0001\u0000\u0000\u0000\u0549\u054a\u0001\u0000"
+ + "\u0000\u0000\u054a\u054b\u0005\u0007\u0000\u0000\u054b\u009b\u0001\u0000"
+ + "\u0000\u0000\u054c\u054d\u0003\u00aeW\u0000\u054d\u054e\u0005}\u0000\u0000"
+ + "\u054e\u054f\u0005P\u0000\u0000\u054f\u0550\u0005}\u0000\u0000\u0550\u0551"
+ + "\u0003f3\u0000\u0551\u009d\u0001\u0000\u0000\u0000\u0552\u0554\u0003\u00a0"
+ + "P\u0000\u0553\u0555\u0005}\u0000\u0000\u0554\u0553\u0001\u0000\u0000\u0000"
+ + "\u0554\u0555\u0001\u0000\u0000\u0000\u0555\u0556\u0001\u0000\u0000\u0000"
+ + "\u0556\u0558\u0005\u0006\u0000\u0000\u0557\u0559\u0005}\u0000\u0000\u0558"
+ + "\u0557\u0001\u0000\u0000\u0000\u0558\u0559\u0001\u0000\u0000\u0000\u0559"
+ + "\u055e\u0001\u0000\u0000\u0000\u055a\u055c\u0005?\u0000\u0000\u055b\u055d"
+ + "\u0005}\u0000\u0000\u055c\u055b\u0001\u0000\u0000\u0000\u055c\u055d\u0001"
+ + "\u0000\u0000\u0000\u055d\u055f\u0001\u0000\u0000\u0000\u055e\u055a\u0001"
+ + "\u0000\u0000\u0000\u055e\u055f\u0001\u0000\u0000\u0000\u055f\u0571\u0001"
+ + "\u0000\u0000\u0000\u0560\u0562\u0003f3\u0000\u0561\u0563\u0005}\u0000"
+ + "\u0000\u0562\u0561\u0001\u0000\u0000\u0000\u0562\u0563\u0001\u0000\u0000"
+ + "\u0000\u0563\u056e\u0001\u0000\u0000\u0000\u0564\u0566\u0005\u0002\u0000"
+ + "\u0000\u0565\u0567\u0005}\u0000\u0000\u0566\u0565\u0001\u0000\u0000\u0000"
+ + "\u0566\u0567\u0001\u0000\u0000\u0000\u0567\u0568\u0001\u0000\u0000\u0000"
+ + "\u0568\u056a\u0003f3\u0000\u0569\u056b\u0005}\u0000\u0000\u056a\u0569"
+ + "\u0001\u0000\u0000\u0000\u056a\u056b\u0001\u0000\u0000\u0000\u056b\u056d"
+ + "\u0001\u0000\u0000\u0000\u056c\u0564\u0001\u0000\u0000\u0000\u056d\u0570"
+ + "\u0001\u0000\u0000\u0000\u056e\u056c\u0001\u0000\u0000\u0000\u056e\u056f"
+ + "\u0001\u0000\u0000\u0000\u056f\u0572\u0001\u0000\u0000\u0000\u0570\u056e"
+ + "\u0001\u0000\u0000\u0000\u0571\u0560\u0001\u0000\u0000\u0000\u0571\u0572"
+ + "\u0001\u0000\u0000\u0000\u0572\u0573\u0001\u0000\u0000\u0000\u0573\u0574"
+ + "\u0005\u0007\u0000\u0000\u0574\u009f\u0001\u0000\u0000\u0000\u0575\u0576"
+ + "\u0003\u00acV\u0000\u0576\u0577\u0003\u00c6c\u0000\u0577\u00a1\u0001\u0000"
+ + "\u0000\u0000\u0578\u057a\u0005\\\u0000\u0000\u0579\u057b\u0005}\u0000"
+ + "\u0000\u057a\u0579\u0001\u0000\u0000\u0000\u057a\u057b\u0001\u0000\u0000"
+ + "\u0000\u057b\u057c\u0001\u0000\u0000\u0000\u057c\u057e\u0005\u0018\u0000"
+ + "\u0000\u057d\u057f\u0005}\u0000\u0000\u057e\u057d\u0001\u0000\u0000\u0000"
+ + "\u057e\u057f\u0001\u0000\u0000\u0000\u057f\u0588\u0001\u0000\u0000\u0000"
+ + "\u0580\u0589\u0003\u0006\u0003\u0000\u0581\u0586\u0003D\"\u0000\u0582"
+ + "\u0584\u0005}\u0000\u0000\u0583\u0582\u0001\u0000\u0000\u0000\u0583\u0584"
+ + "\u0001\u0000\u0000\u0000\u0584\u0585\u0001\u0000\u0000\u0000\u0585\u0587"
+ + "\u0003B!\u0000\u0586\u0583\u0001\u0000\u0000\u0000\u0586\u0587\u0001\u0000"
+ + "\u0000\u0000\u0587\u0589\u0001\u0000\u0000\u0000\u0588\u0580\u0001\u0000"
+ + "\u0000\u0000\u0588\u0581\u0001\u0000\u0000\u0000\u0589\u058b\u0001\u0000"
+ + "\u0000\u0000\u058a\u058c\u0005}\u0000\u0000\u058b\u058a\u0001\u0000\u0000"
+ + "\u0000\u058b\u058c\u0001\u0000\u0000\u0000\u058c\u058d\u0001\u0000\u0000"
+ + "\u0000\u058d\u058e\u0005\u0019\u0000\u0000\u058e\u00a3\u0001\u0000\u0000"
+ + "\u0000\u058f\u0591\u0003\u00aaU\u0000\u0590\u0592\u0005}\u0000\u0000\u0591"
+ + "\u0590\u0001\u0000\u0000\u0000\u0591\u0592\u0001\u0000\u0000\u0000\u0592"
+ + "\u0593\u0001\u0000\u0000\u0000\u0593\u0595\u0005\u0006\u0000\u0000\u0594"
+ + "\u0596\u0005}\u0000\u0000\u0595\u0594\u0001\u0000\u0000\u0000\u0595\u0596"
+ + "\u0001\u0000\u0000\u0000\u0596\u05a8\u0001\u0000\u0000\u0000\u0597\u0599"
+ + "\u0003f3\u0000\u0598\u059a\u0005}\u0000\u0000\u0599\u0598\u0001\u0000"
+ + "\u0000\u0000\u0599\u059a\u0001\u0000\u0000\u0000\u059a\u05a5\u0001\u0000"
+ + "\u0000\u0000\u059b\u059d\u0005\u0002\u0000\u0000\u059c\u059e\u0005}\u0000"
+ + "\u0000\u059d\u059c\u0001\u0000\u0000\u0000\u059d\u059e\u0001\u0000\u0000"
+ + "\u0000\u059e\u059f\u0001\u0000\u0000\u0000\u059f\u05a1\u0003f3\u0000\u05a0"
+ + "\u05a2\u0005}\u0000\u0000\u05a1\u05a0\u0001\u0000\u0000\u0000\u05a1\u05a2"
+ + "\u0001\u0000\u0000\u0000\u05a2\u05a4\u0001\u0000\u0000\u0000\u05a3\u059b"
+ + "\u0001\u0000\u0000\u0000\u05a4\u05a7\u0001\u0000\u0000\u0000\u05a5\u05a3"
+ + "\u0001\u0000\u0000\u0000\u05a5\u05a6\u0001\u0000\u0000\u0000\u05a6\u05a9"
+ + "\u0001\u0000\u0000\u0000\u05a7\u05a5\u0001\u0000\u0000\u0000\u05a8\u0597"
+ + "\u0001\u0000\u0000\u0000\u05a8\u05a9\u0001\u0000\u0000\u0000\u05a9\u05aa"
+ + "\u0001\u0000\u0000\u0000\u05aa\u05ab\u0005\u0007\u0000\u0000\u05ab\u00a5"
+ + "\u0001\u0000\u0000\u0000\u05ac\u05ad\u0003\u00aaU\u0000\u05ad\u00a7\u0001"
+ + "\u0000\u0000\u0000\u05ae\u05af\u0003\u00c6c\u0000\u05af\u00a9\u0001\u0000"
+ + "\u0000\u0000\u05b0\u05b1\u0003\u00acV\u0000\u05b1\u05b2\u0003\u00c6c\u0000"
+ + "\u05b2\u00ab\u0001\u0000\u0000\u0000\u05b3\u05b4\u0003\u00c6c\u0000\u05b4"
+ + "\u05b5\u0005\u0017\u0000\u0000\u05b5\u05b7\u0001\u0000\u0000\u0000\u05b6"
+ + "\u05b3\u0001\u0000\u0000\u0000\u05b7\u05ba\u0001\u0000\u0000\u0000\u05b8"
+ + "\u05b6\u0001\u0000\u0000\u0000\u05b8\u05b9\u0001\u0000\u0000\u0000\u05b9"
+ + "\u00ad\u0001\u0000\u0000\u0000\u05ba\u05b8\u0001\u0000\u0000\u0000\u05bb"
+ + "\u05bc\u0003\u00c6c\u0000\u05bc\u00af\u0001\u0000\u0000\u0000\u05bd\u05c4"
+ + "\u0003\u00b2Y\u0000\u05be\u05c4\u0005R\u0000\u0000\u05bf\u05c4\u0003\u00b4"
+ + "Z\u0000\u05c0\u05c4\u0005k\u0000\u0000\u05c1\u05c4\u0003\u00ba]\u0000"
+ + "\u05c2\u05c4\u0003\u00bc^\u0000\u05c3\u05bd\u0001\u0000\u0000\u0000\u05c3"
+ + "\u05be\u0001\u0000\u0000\u0000\u05c3\u05bf\u0001\u0000\u0000\u0000\u05c3"
+ + "\u05c0\u0001\u0000\u0000\u0000\u05c3\u05c1\u0001\u0000\u0000\u0000\u05c3"
+ + "\u05c2\u0001\u0000\u0000\u0000\u05c4\u00b1\u0001\u0000\u0000\u0000\u05c5"
+ + "\u05c6\u0007\u0002\u0000\u0000\u05c6\u00b3\u0001\u0000\u0000\u0000\u05c7"
+ + "\u05ca\u0003\u00b8\\\u0000\u05c8\u05ca\u0003\u00b6[\u0000\u05c9\u05c7"
+ + "\u0001\u0000\u0000\u0000\u05c9\u05c8\u0001\u0000\u0000\u0000\u05ca\u00b5"
+ + "\u0001\u0000\u0000\u0000\u05cb\u05cc\u0007\u0003\u0000\u0000\u05cc\u00b7"
+ + "\u0001\u0000\u0000\u0000\u05cd\u05ce\u0007\u0004\u0000\u0000\u05ce\u00b9"
+ + "\u0001\u0000\u0000\u0000\u05cf\u05d1\u0005\b\u0000\u0000\u05d0\u05d2\u0005"
+ + "}\u0000\u0000\u05d1\u05d0\u0001\u0000\u0000\u0000\u05d1\u05d2\u0001\u0000"
+ + "\u0000\u0000\u05d2\u05e4\u0001\u0000\u0000\u0000\u05d3\u05d5\u0003f3\u0000"
+ + "\u05d4\u05d6\u0005}\u0000\u0000\u05d5\u05d4\u0001\u0000\u0000\u0000\u05d5"
+ + "\u05d6\u0001\u0000\u0000\u0000\u05d6\u05e1\u0001\u0000\u0000\u0000\u05d7"
+ + "\u05d9\u0005\u0002\u0000\u0000\u05d8\u05da\u0005}\u0000\u0000\u05d9\u05d8"
+ + "\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da\u05db"
+ + "\u0001\u0000\u0000\u0000\u05db\u05dd\u0003f3\u0000\u05dc\u05de\u0005}"
+ + "\u0000\u0000\u05dd\u05dc\u0001\u0000\u0000\u0000\u05dd\u05de\u0001\u0000"
+ + "\u0000\u0000\u05de\u05e0\u0001\u0000\u0000\u0000\u05df\u05d7\u0001\u0000"
+ + "\u0000\u0000\u05e0\u05e3\u0001\u0000\u0000\u0000\u05e1\u05df\u0001\u0000"
+ + "\u0000\u0000\u05e1\u05e2\u0001\u0000\u0000\u0000\u05e2\u05e5\u0001\u0000"
+ + "\u0000\u0000\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e4\u05d3\u0001\u0000"
+ + "\u0000\u0000\u05e4\u05e5\u0001\u0000\u0000\u0000\u05e5\u05e6\u0001\u0000"
+ + "\u0000\u0000\u05e6\u05e7\u0005\t\u0000\u0000\u05e7\u00bb\u0001\u0000\u0000"
+ + "\u0000\u05e8\u05ea\u0005\u0018\u0000\u0000\u05e9\u05eb\u0005}\u0000\u0000"
+ + "\u05ea\u05e9\u0001\u0000\u0000\u0000\u05ea\u05eb\u0001\u0000\u0000\u0000"
+ + "\u05eb\u060d\u0001\u0000\u0000\u0000\u05ec\u05ee\u0003\u00be_\u0000\u05ed"
+ + "\u05ef\u0005}\u0000\u0000\u05ee\u05ed\u0001\u0000\u0000\u0000\u05ee\u05ef"
+ + "\u0001\u0000\u0000\u0000\u05ef\u05f0\u0001\u0000\u0000\u0000\u05f0\u05f2"
+ + "\u0005\n\u0000\u0000\u05f1\u05f3\u0005}\u0000\u0000\u05f2\u05f1\u0001"
+ + "\u0000\u0000\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f4\u0001"
+ + "\u0000\u0000\u0000\u05f4\u05f6\u0003f3\u0000\u05f5\u05f7\u0005}\u0000"
+ + "\u0000\u05f6\u05f5\u0001\u0000\u0000\u0000\u05f6\u05f7\u0001\u0000\u0000"
+ + "\u0000\u05f7\u060a\u0001\u0000\u0000\u0000\u05f8\u05fa\u0005\u0002\u0000"
+ + "\u0000\u05f9\u05fb\u0005}\u0000\u0000\u05fa\u05f9\u0001\u0000\u0000\u0000"
+ + "\u05fa\u05fb\u0001\u0000\u0000\u0000\u05fb\u05fc\u0001\u0000\u0000\u0000"
+ + "\u05fc\u05fe\u0003\u00be_\u0000\u05fd\u05ff\u0005}\u0000\u0000\u05fe\u05fd"
+ + "\u0001\u0000\u0000\u0000\u05fe\u05ff\u0001\u0000\u0000\u0000\u05ff\u0600"
+ + "\u0001\u0000\u0000\u0000\u0600\u0602\u0005\n\u0000\u0000\u0601\u0603\u0005"
+ + "}\u0000\u0000\u0602\u0601\u0001\u0000\u0000\u0000\u0602\u0603\u0001\u0000"
+ + "\u0000\u0000\u0603\u0604\u0001\u0000\u0000\u0000\u0604\u0606\u0003f3\u0000"
+ + "\u0605\u0607\u0005}\u0000\u0000\u0606\u0605\u0001\u0000\u0000\u0000\u0606"
+ + "\u0607\u0001\u0000\u0000\u0000\u0607\u0609\u0001\u0000\u0000\u0000\u0608"
+ + "\u05f8\u0001\u0000\u0000\u0000\u0609\u060c\u0001\u0000\u0000\u0000\u060a"
+ + "\u0608\u0001\u0000\u0000\u0000\u060a\u060b\u0001\u0000\u0000\u0000\u060b"
+ + "\u060e\u0001\u0000\u0000\u0000\u060c\u060a\u0001\u0000\u0000\u0000\u060d"
+ + "\u05ec\u0001\u0000\u0000\u0000\u060d\u060e\u0001\u0000\u0000\u0000\u060e"
+ + "\u060f\u0001\u0000\u0000\u0000\u060f\u0610\u0005\u0019\u0000\u0000\u0610"
+ + "\u00bd\u0001\u0000\u0000\u0000\u0611\u0612\u0003\u00c2a\u0000\u0612\u00bf"
+ + "\u0001\u0000\u0000\u0000\u0613\u0616\u0005\u001a\u0000\u0000\u0614\u0617"
+ + "\u0003\u00c6c\u0000\u0615\u0617\u0005`\u0000\u0000\u0616\u0614\u0001\u0000"
+ + "\u0000\u0000\u0616\u0615\u0001\u0000\u0000\u0000\u0617\u00c1\u0001\u0000"
+ + "\u0000\u0000\u0618\u061b\u0003\u00c6c\u0000\u0619\u061b\u0003\u00c4b\u0000"
+ + "\u061a\u0618\u0001\u0000\u0000\u0000\u061a\u0619\u0001\u0000\u0000\u0000"
+ + "\u061b\u00c3\u0001\u0000\u0000\u0000\u061c\u061d\u0007\u0005\u0000\u0000"
+ + "\u061d\u00c5\u0001\u0000\u0000\u0000\u061e\u061f\u0007\u0006\u0000\u0000"
+ + "\u061f\u00c7\u0001\u0000\u0000\u0000\u0620\u0621\u0007\u0007\u0000\u0000"
+ + "\u0621\u00c9\u0001\u0000\u0000\u0000\u0622\u0623\u0007\b\u0000\u0000\u0623"
+ + "\u00cb\u0001\u0000\u0000\u0000\u0624\u0625\u0007\t\u0000\u0000\u0625\u00cd"
+ + "\u0001\u0000\u0000\u0000\u0123\u00cf\u00d3\u00d6\u00d9\u00e1\u00e5\u00ea"
+ + "\u00f1\u00f6\u00f9\u00fd\u0101\u0105\u010b\u010f\u0114\u0119\u011d\u0120"
+ + "\u0122\u0126\u012a\u012f\u0133\u0138\u013c\u0145\u014a\u014e\u0152\u0156"
+ + "\u0159\u015d\u0167\u016e\u017b\u017f\u0185\u0189\u018d\u0192\u0197\u019b"
+ + "\u01a1\u01a5\u01ab\u01af\u01b5\u01b9\u01bd\u01c1\u01c5\u01c9\u01ce\u01d5"
+ + "\u01d9\u01de\u01e5\u01eb\u01f0\u01f6\u01f9\u01ff\u0201\u0205\u0209\u020e"
+ + "\u0212\u0215\u021c\u0223\u0226\u022c\u022f\u0235\u0239\u023d\u0241\u0245"
+ + "\u024a\u024f\u0253\u0258\u025b\u0264\u026d\u0272\u027f\u0282\u028a\u028e"
+ + "\u0293\u0298\u029c\u02a1\u02a7\u02ac\u02b3\u02b7\u02bc\u02c0\u02c4\u02c6"
+ + "\u02ca\u02cc\u02d0\u02d2\u02d8\u02de\u02e2\u02e5\u02e8\u02ec\u02f2\u02f6"
+ + "\u02f9\u02fc\u0302\u0305\u0308\u030c\u0312\u0315\u0318\u031c\u0320\u0324"
+ + "\u0326\u032a\u032c\u032f\u0333\u0335\u033b\u033f\u0343\u0347\u034a\u034f"
+ + "\u0354\u0359\u035e\u0364\u0368\u036a\u036e\u0372\u0374\u0376\u037e\u0383"
+ + "\u038e\u0398\u03a2\u03a7\u03ab\u03b2\u03b7\u03bc\u03c1\u03c6\u03cb\u03d0"
+ + "\u03d5\u03d8\u03de\u03e0\u03ed\u03f0\u03f7\u0405\u0409\u040d\u0411\u0415"
+ + "\u0418\u041a\u041f\u0423\u0427\u042b\u042f\u0433\u0436\u0438\u043d\u0441"
+ + "\u0446\u044c\u044f\u0453\u0457\u045a\u045c\u0460\u0463\u046b\u046f\u0472"
+ + "\u0476\u047f\u0483\u0487\u0492\u0496\u049b\u049f\u04a3\u04a8\u04aa\u04ad"
+ + "\u04b1\u04b4\u04b7\u04bd\u04c1\u04c5\u04cb\u04cf\u04d3\u04d6\u04d9\u04df"
+ + "\u04e3\u04e7\u04e9\u04ed\u04f1\u04f3\u04f7\u04fb\u0501\u0505\u0509\u050f"
+ + "\u0513\u0517\u051d\u0521\u0525\u052b\u052f\u0533\u0537\u053b\u053e\u0544"
+ + "\u0548\u0554\u0558\u055c\u055e\u0562\u0566\u056a\u056e\u0571\u057a\u057e"
+ + "\u0583\u0586\u0588\u058b\u0591\u0595\u0599\u059d\u05a1\u05a5\u05a8\u05b8"
+ + "\u05c3\u05c9\u05d1\u05d5\u05d9\u05dd\u05e1\u05e4\u05ea\u05ee\u05f2\u05f6"
+ + "\u05fa\u05fe\u0602\u0606\u060a\u060d\u0616\u061a";
+ 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);
+ }
+ }
+}
diff --git a/estore/src/main/java/org/estore/antlr4/CypherVisitor.java b/estore/src/main/java/org/estore/antlr4/CypherVisitor.java
new file mode 100644
index 0000000..e60f05c
--- /dev/null
+++ b/estore/src/main/java/org/estore/antlr4/CypherVisitor.java
@@ -0,0 +1,841 @@
+// Generated from Cypher.g4 by ANTLR 4.13.1
+
+package org.estore.antlr4;
+
+import org.antlr.v4.runtime.tree.ParseTreeVisitor;
+
+/**
+ * This interface defines a complete generic visitor for a parse tree produced by {@link
+ * CypherParser}.
+ *
+ * @param The return type of the visit operation. Use {@link Void} for operations with no return
+ * type.
+ */
+public interface CypherVisitor extends ParseTreeVisitor {
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Cypher}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Cypher(CypherParser.OC_CypherContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Statement}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Statement(CypherParser.OC_StatementContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Query}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Query(CypherParser.OC_QueryContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RegularQuery}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RegularQuery(CypherParser.OC_RegularQueryContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Union}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Union(CypherParser.OC_UnionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_SingleQuery}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_SingleQuery(CypherParser.OC_SingleQueryContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_SinglePartQuery}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_SinglePartQuery(CypherParser.OC_SinglePartQueryContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_MultiPartQuery}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_MultiPartQuery(CypherParser.OC_MultiPartQueryContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_UpdatingClause}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_UpdatingClause(CypherParser.OC_UpdatingClauseContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ReadingClause}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ReadingClause(CypherParser.OC_ReadingClauseContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Match}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Match(CypherParser.OC_MatchContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Unwind}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Unwind(CypherParser.OC_UnwindContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Merge}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Merge(CypherParser.OC_MergeContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_MergeAction}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_MergeAction(CypherParser.OC_MergeActionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Create}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Create(CypherParser.OC_CreateContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Set}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Set(CypherParser.OC_SetContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_SetItem}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_SetItem(CypherParser.OC_SetItemContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Delete}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Delete(CypherParser.OC_DeleteContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Remove}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Remove(CypherParser.OC_RemoveContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RemoveItem}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RemoveItem(CypherParser.OC_RemoveItemContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_InQueryCall}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_InQueryCall(CypherParser.OC_InQueryCallContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_StandaloneCall}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_StandaloneCall(CypherParser.OC_StandaloneCallContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_YieldItems}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_YieldItems(CypherParser.OC_YieldItemsContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_YieldItem}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_YieldItem(CypherParser.OC_YieldItemContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_With}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_With(CypherParser.OC_WithContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Return}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Return(CypherParser.OC_ReturnContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ProjectionBody}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ProjectionBody(CypherParser.OC_ProjectionBodyContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ProjectionItems}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ProjectionItems(CypherParser.OC_ProjectionItemsContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ProjectionItem}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ProjectionItem(CypherParser.OC_ProjectionItemContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Order}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Order(CypherParser.OC_OrderContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Skip}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Skip(CypherParser.OC_SkipContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Limit}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Limit(CypherParser.OC_LimitContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_SortItem}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_SortItem(CypherParser.OC_SortItemContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Where}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Where(CypherParser.OC_WhereContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Pattern}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Pattern(CypherParser.OC_PatternContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PatternPart}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PatternPart(CypherParser.OC_PatternPartContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_AnonymousPatternPart}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_AnonymousPatternPart(CypherParser.OC_AnonymousPatternPartContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PatternElement}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PatternElement(CypherParser.OC_PatternElementContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RelationshipsPattern}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RelationshipsPattern(CypherParser.OC_RelationshipsPatternContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NodePattern}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NodePattern(CypherParser.OC_NodePatternContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PatternElementChain}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PatternElementChain(CypherParser.OC_PatternElementChainContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RelationshipPattern}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RelationshipPattern(CypherParser.OC_RelationshipPatternContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RelationshipDetail}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RelationshipDetail(CypherParser.OC_RelationshipDetailContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Properties}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Properties(CypherParser.OC_PropertiesContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RelationshipTypes}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RelationshipTypes(CypherParser.OC_RelationshipTypesContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NodeLabels}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NodeLabels(CypherParser.OC_NodeLabelsContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NodeLabel}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NodeLabel(CypherParser.OC_NodeLabelContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RangeLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RangeLiteral(CypherParser.OC_RangeLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_LabelName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_LabelName(CypherParser.OC_LabelNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RelTypeName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RelTypeName(CypherParser.OC_RelTypeNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PropertyExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PropertyExpression(CypherParser.OC_PropertyExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Expression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Expression(CypherParser.OC_ExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_OrExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_OrExpression(CypherParser.OC_OrExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_XorExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_XorExpression(CypherParser.OC_XorExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_AndExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_AndExpression(CypherParser.OC_AndExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NotExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NotExpression(CypherParser.OC_NotExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ComparisonExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ComparisonExpression(CypherParser.OC_ComparisonExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PartialComparisonExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PartialComparisonExpression(CypherParser.OC_PartialComparisonExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_StringListNullPredicateExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_StringListNullPredicateExpression(
+ CypherParser.OC_StringListNullPredicateExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_StringPredicateExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_StringPredicateExpression(CypherParser.OC_StringPredicateExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ListPredicateExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ListPredicateExpression(CypherParser.OC_ListPredicateExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NullPredicateExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NullPredicateExpression(CypherParser.OC_NullPredicateExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_AddOrSubtractExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_AddOrSubtractExpression(CypherParser.OC_AddOrSubtractExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_MultiplyDivideModuloExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_MultiplyDivideModuloExpression(
+ CypherParser.OC_MultiplyDivideModuloExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PowerOfExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PowerOfExpression(CypherParser.OC_PowerOfExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_UnaryAddOrSubtractExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_UnaryAddOrSubtractExpression(CypherParser.OC_UnaryAddOrSubtractExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NonArithmeticOperatorExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NonArithmeticOperatorExpression(
+ CypherParser.OC_NonArithmeticOperatorExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ListOperatorExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ListOperatorExpression(CypherParser.OC_ListOperatorExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PropertyLookup}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PropertyLookup(CypherParser.OC_PropertyLookupContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Atom}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Atom(CypherParser.OC_AtomContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_CaseExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_CaseExpression(CypherParser.OC_CaseExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_CaseAlternative}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_CaseAlternative(CypherParser.OC_CaseAlternativeContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ListComprehension}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ListComprehension(CypherParser.OC_ListComprehensionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PatternComprehension}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PatternComprehension(CypherParser.OC_PatternComprehensionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Quantifier}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Quantifier(CypherParser.OC_QuantifierContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_FilterExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_FilterExpression(CypherParser.OC_FilterExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PatternPredicate}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PatternPredicate(CypherParser.OC_PatternPredicateContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ParenthesizedExpression}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ParenthesizedExpression(CypherParser.OC_ParenthesizedExpressionContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_IdInColl}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_IdInColl(CypherParser.OC_IdInCollContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_FunctionInvocation}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_FunctionInvocation(CypherParser.OC_FunctionInvocationContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_FunctionName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_FunctionName(CypherParser.OC_FunctionNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ExistentialSubquery}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ExistentialSubquery(CypherParser.OC_ExistentialSubqueryContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ExplicitProcedureInvocation}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ExplicitProcedureInvocation(CypherParser.OC_ExplicitProcedureInvocationContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ImplicitProcedureInvocation}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ImplicitProcedureInvocation(CypherParser.OC_ImplicitProcedureInvocationContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ProcedureResultField}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ProcedureResultField(CypherParser.OC_ProcedureResultFieldContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ProcedureName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ProcedureName(CypherParser.OC_ProcedureNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Namespace}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Namespace(CypherParser.OC_NamespaceContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Variable}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Variable(CypherParser.OC_VariableContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Literal}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Literal(CypherParser.OC_LiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_BooleanLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_BooleanLiteral(CypherParser.OC_BooleanLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_NumberLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_NumberLiteral(CypherParser.OC_NumberLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_IntegerLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_IntegerLiteral(CypherParser.OC_IntegerLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_DoubleLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_DoubleLiteral(CypherParser.OC_DoubleLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ListLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ListLiteral(CypherParser.OC_ListLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_MapLiteral}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_MapLiteral(CypherParser.OC_MapLiteralContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_PropertyKeyName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_PropertyKeyName(CypherParser.OC_PropertyKeyNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Parameter}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Parameter(CypherParser.OC_ParameterContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_SchemaName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_SchemaName(CypherParser.OC_SchemaNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_ReservedWord}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_ReservedWord(CypherParser.OC_ReservedWordContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_SymbolicName}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_SymbolicName(CypherParser.OC_SymbolicNameContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_LeftArrowHead}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_LeftArrowHead(CypherParser.OC_LeftArrowHeadContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_RightArrowHead}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_RightArrowHead(CypherParser.OC_RightArrowHeadContext ctx);
+
+ /**
+ * Visit a parse tree produced by {@link CypherParser#oC_Dash}.
+ *
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitOC_Dash(CypherParser.OC_DashContext ctx);
+}
diff --git a/estore/src/main/java/org/estore/compiler/CodeGenBuilder.java b/estore/src/main/java/org/estore/compiler/CodeGenBuilder.java
new file mode 100644
index 0000000..2cd9f8f
--- /dev/null
+++ b/estore/src/main/java/org/estore/compiler/CodeGenBuilder.java
@@ -0,0 +1,285 @@
+package org.estore.compiler;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.estore.Estore;
+import org.estore.antlr4.CypherParser;
+import org.estore.compiler.create.CreateLabelNode;
+import org.estore.compiler.create.CreateLabelPropNode;
+import org.estore.compiler.create.CreateLabelTwoNodeRelation;
+import org.estore.compiler.create.CreateTwoNodeRelation;
+import org.estore.compiler.delete.DeleteRelation;
+import org.estore.compiler.projection.VarProjection;
+import org.estore.compiler.scan.AllNodeScan;
+import org.estore.compiler.scan.NodeLabelPropScan;
+import org.estore.compiler.scan.NodeLabelScan;
+import org.estore.compiler.scan.NodePropScan;
+import org.estore.compiler.scan.TwoNodeRelationScan;
+import org.estore.compiler.scan.VarLengthRelationScan;
+import org.estore.planner.LogicalPlanBuilder;
+import org.estore.planner.expressions.LogicalExpr;
+import org.estore.planner.expressions.VarExpr;
+import org.estore.planner.pattern.NodePattern;
+import org.estore.planner.pattern.PatternElement;
+
+// extends LogicalPlanBuilder to reuse some visitors (e.g., visitOC_Pattern)
+public class CodeGenBuilder extends LogicalPlanBuilder {
+ private String dbname;
+
+ public CodeGenBuilder(String dbname, Estore estore) {
+ super(estore);
+ this.dbname = dbname;
+ }
+
+ @Override
+ public Object visitOC_Cypher(CypherParser.OC_CypherContext ctx) {
+ String res = "((Supplier) () -> {\n";
+ res += "Table res = null;\n";
+ res += "List expressions = null;\n";
+ res += "List variables = null;\n";
+ res += "ArrayList