diff --git a/external-crates/move/tooling/tree-sitter/.gitignore b/external-crates/move/tooling/tree-sitter/.gitignore new file mode 100644 index 0000000000000..0201e4bd9f2c3 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/.gitignore @@ -0,0 +1,5 @@ +node_modules +build +*.log +package-lock.json +target diff --git a/external-crates/move/tooling/tree-sitter/Cargo.lock b/external-crates/move/tooling/tree-sitter/Cargo.lock new file mode 100644 index 0000000000000..9038b4cef49b9 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/Cargo.lock @@ -0,0 +1,80 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "tree-sitter" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "tree-sitter-move" +version = "0.0.1" +dependencies = [ + "cc", + "tree-sitter", +] diff --git a/external-crates/move/tooling/tree-sitter/Cargo.toml b/external-crates/move/tooling/tree-sitter/Cargo.toml new file mode 100644 index 0000000000000..a8d0b90710a0e --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "tree-sitter-move" +description = "move grammar for the tree-sitter parsing library" +version = "0.0.1" +keywords = ["incremental", "parsing", "move"] +categories = ["parsing", "text-editors"] +repository = "https://github.com/tree-sitter/tree-sitter-move" +edition = "2018" +license = "MIT" + +build = "bindings/rust/build.rs" +include = [ + "bindings/rust/*", + "grammar.js", + "queries/*", + "src/*", +] + +[lib] +path = "bindings/rust/lib.rs" + +[dependencies] +tree-sitter = "~0.20.10" + +[build-dependencies] +cc = "1.0" diff --git a/external-crates/move/tooling/tree-sitter/NOTICE b/external-crates/move/tooling/tree-sitter/NOTICE new file mode 100644 index 0000000000000..e6b7d443bd56b --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/NOTICE @@ -0,0 +1,45 @@ +MIT License + +Copyright (c) 2023 Tim Zakian + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--------------------------------------------------------------------------- + +MIT License + +Copyright (c) 2020 nonsense0202 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external-crates/move/tooling/tree-sitter/README.md b/external-crates/move/tooling/tree-sitter/README.md new file mode 100644 index 0000000000000..eb6eb9d20f0d3 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/README.md @@ -0,0 +1,27 @@ +# Tree Sitter for Move + +This is a WIP implementation of tree sitter for Move. + +## Current Status + +It should be able to parse all valid Move code (although no guarantees are made at the moment on this). + +More work should probably done in terms of laying out the CST better, although it's not the worst as it stands right now. + +## Running Examples + +This requires you installing the tree-sitter CLI + +``` +cargo install tree-sitter-cli +``` + +You can then run this on all the tests with + +``` +tree-sitter parse -q -t tests/*.move +``` + +An example of what the output CST would look like would be the following (NB: this is using tree sitter to highlight the Move code as well). + +![Screenshot](./tree_sitter.png) diff --git a/external-crates/move/tooling/tree-sitter/binding.gyp b/external-crates/move/tooling/tree-sitter/binding.gyp new file mode 100644 index 0000000000000..668c35536dd44 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/binding.gyp @@ -0,0 +1,30 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_move_binding", + "dependencies": [ + " + or: 3, // || + and: 4, // && + eq: 5, // == + neq: 5, // != + lt: 5, // < + gt: 5, // > + le: 5, // <= + ge: 5, // >= + range: 6, // .. + bitor: 7, // | + xor: 8, // ^ + bitand: 9, // & + shl: 10, // << + shr: 10, // >> + add: 11, // + + sub: 11, // - + mul: 12, // * + div: 12, // / + mod: 12, // %, + unary: 13, + field: 14, + call: 15, + apply_type: 15, + as: 16, +} + +module.exports = grammar({ + name: 'move', + extras: $ => [$._whitespace, $.line_comment, $.block_comment, $.newline, $.annotation], + word: $ => $.identifier, + supertypes: $ => [$._spec_block_target], + conflicts: $ => [ + [$.annotation_expr, $.module_access], + [$._expression, $._expression_term], + [$.function_type_parameters], + [$.module_access, $._variable_identifier], + [$.module_access, $._module_identifier], + [$.modifier, $.native_struct_definition], + [$.bind_list, $.or_bind_list], + [$.comma_bind_list, $.or_bind_list], + [$.break_expression, $.block_identifier], + [$.or_bind_list], + [$.mut_bind_var, $._bind], + [$.module_access], + [$.break_expression], + [$.abort_expression], + ], + + rules: { + source_file: $ => repeat($.module_definition), + + // parse use declarations + use_declaration: $ => seq( + optional('public'), + 'use', choice($.use_fun, $.use_module, $.use_module_member, $.use_module_members), ';'), + use_fun: $ => seq( + 'fun', + $.module_access, + 'as', + field('alias', seq($.module_access, '.', $._function_identifier)) + ), + use_module: $ => seq($.module_identity, optional(seq('as', field('alias', $._module_identifier)))), + use_module_member: $ => seq($.module_identity, '::', field('use_member', $.use_member)), + use_module_members: $ => choice( + seq(field('address', choice($.num_literal, $._module_identifier)), '::', '{', sepBy1(',', field('use_member', $.use_member)), '}'), + seq($.module_identity, '::', '{', sepBy1(',', field('use_member', $.use_member)), '}'), + ), + use_member: $ => choice( + seq( + field('module', $.identifier), + '::', + '{', + sepBy1(',', field('use_member', $.use_member)), + '}' + ), + seq(field('module', $.identifier), '::', field('member', $.identifier), optional(seq('as', field('alias', $.identifier)))), + seq( + field('member', $.identifier), + optional(seq('as', field('alias', $.identifier))) + ), + ), + + // parse top-level decl modifiers + friend_declaration: $ => seq('friend', field('module', $.friend_access), ';'), + modifier: $ => choice( + seq( + 'public', + optional(seq( + '(', + choice( + 'package', + 'friend', + ), + ')', + ))), + 'entry', + 'native', + ), + ability: $ => choice( + 'copy', + 'drop', + 'store', + 'key', + ), + + module_definition: $ => { + return seq( + 'module', + field('module_identity', $.module_identity), + field('module_body', $.module_body), + ); + }, + module_body: $ => { + return seq( + choice(';', '{'), + repeat( + choice( + $.use_declaration, + $.friend_declaration, + $.constant, + $._function_item, + $._struct_item, + $._enum_item, + $.spec_block, + )), + optional('}'), + ); + }, + + // Annotations + annotation: $ => seq( + "#[", + sepBy1(",", $.annotation_item), + "]" + ), + + annotation_expr: $ => choice( + field("name", $.identifier), + seq( + field("name", $.identifier), "=", field("value", choice(field("local_const", seq('::', $.module_access)), $.module_access, $._literal_value)) + ), + ), + + annotation_list: $ => seq( + field("name", $.identifier), + "(", + sepBy1(",", choice($._literal_value, $.annotation_item, $.module_access, field("local_const", seq('::', $.module_access)))), + ")" + ), + + annotation_item: $ => choice( + field("annotation_expr", $.annotation_expr), + field("annotation_list", $.annotation_list), + ), + + // Constants + constant: $ => seq( + 'const', + field('name', alias($.identifier, $.constant_identifier)), + ':', + field('type', $._type), + '=', field('expr', $._expression), + ";" + ), + + // Common parsers for datatype fields + + datatype_fields: $ => choice( + $.positional_fields, + $.named_fields, + ), + positional_fields: $ => seq( + '(', + sepBy(',', $._type), + ')' + ), + named_fields: $ => seq( + '{', + sepBy(',', $.field_annotation), + '}' + ), + + // Enum definitions + _enum_item: $ => choice( + $.enum_definition, + ), + enum_definition: $ => seq( + optional('public'), + $._enum_signature, + field('enum_variants', $.enum_variants), + optional(field('postfix_ability_declarations', $.postfix_ability_decls)), + ), + _enum_signature: $ => seq( + 'enum', + field('name', $._enum_identifier), + optional(field('type_parameters', $.type_parameters)), + optional(field('ability_declarations', $.ability_decls)), + ), + enum_variants: $ => seq( + '{', + sepBy(',', $.variant), + '}' + ), + variant: $ => seq( + field('variant_name', $._variant_identifier), + optional(field('fields', $.datatype_fields)), + ), + + // Struct definitions + _struct_item: $ => choice( + $.native_struct_definition, + $.struct_definition, + ), + native_struct_definition: $ => seq( + optional('public'), + 'native', + $._struct_signature, + ';', + ), + struct_definition: $ => seq( + optional('public'), + $._struct_signature, + field('struct_fields', $.datatype_fields), + optional(field('postfix_ability_declarations', $.postfix_ability_decls)), + ), + field_annotation: $ => seq( + field('field', $._field_identifier), + ':', + field('type', $._type), + ), + ability_decls: $ => seq( + 'has', + sepBy(',', $.ability), + ), + postfix_ability_decls: $ => seq( + 'has', + sepBy(',', $.ability), + ';', + ), + + _struct_signature: $ => seq( + 'struct', + field('name', $._struct_identifier), + optional(field('type_parameters', $.type_parameters)), + optional(field('ability_declarations', $.ability_decls)), + ), + + // Function definitions + _function_item: $ => choice( + $.native_function_definition, + $.macro_function_definition, + $.function_definition, + ), + native_function_definition: $ => seq( + $._function_signature, + ';' + ), + macro_function_definition: $ => seq( + optional($.modifier), + 'macro', + $._macro_signature, + field('body', $.block) + ), + _macro_signature: $ => seq( + optional($.modifier), + 'fun', + field('name', $._function_identifier), + optional(field('type_parameters', $.type_parameters)), + field('parameters', $.function_parameters), + optional(field('return_type', $.ret_type)), + ), + function_definition: $ => seq( + $._function_signature, + field('body', $.block) + ), + _function_signature: $ => seq( + optional($.modifier), + optional($.modifier), + optional($.modifier), + 'fun', + field('name', $._function_identifier), + optional(field('type_parameters', $.type_parameters)), + field('parameters', $.function_parameters), + optional(field('return_type', $.ret_type)), + ), + function_parameters: $ => seq( + '(', + sepBy(',', choice($.mut_function_parameter, $.function_parameter)), + ')', + ), + + // Spec block start + spec_block: $ => seq( + 'spec', + choice( + seq(optional(field('target', $._spec_block_target)), field('body', $.spec_body)), + $._spec_function, + ) + ), + _spec_block_target: $ => choice( + $.identifier, + alias('module', $.spec_block_target_module), + $.spec_block_target_schema, + ), + spec_block_target_fun: $ => seq('fun', $._function_identifier), + spec_block_target_struct: $ => seq('struct', $._struct_identifier), + spec_block_target_schema: $ => seq( + 'schema', + field('name', $._struct_identifier), + optional(field('type_parameters', $.type_parameters)), + ), + spec_body: $ => seq( + '{', + repeat($.use_declaration), + repeat($._spec_block_memeber), + '}' + ), + _spec_block_memeber: $ => choice( + $.spec_invariant, + $._spec_function, + $.spec_condition, + $.spec_include, + $.spec_apply, + $.spec_pragma, + $.spec_variable, + $.spec_let, + ), + spec_let: $ => seq( + 'let', + optional('post'), + field('name', $.identifier), + '=', + field('def', $._expression), + ';' + ), + spec_condition: $ => choice( + $._spec_condition, + $._spec_abort_if, + $._spec_abort_with_or_modifies, + ), + _spec_condition_kind: $ => choice( + 'assert', + 'assume', + 'decreases', + 'ensures', + 'succeeds_if', + ), + _spec_condition: $ => seq( + choice( + field('kind', alias($._spec_condition_kind, $.condition_kind)), + seq( + field('kind', alias('requires', $.condition_kind)), + optional('module'), + ) + ), + optional(field('condition_properties', $.condition_properties)), + field('expr', $._expression), + ';' + ), + _spec_abort_if: $ => seq( + field('kind', alias('aborts_if', $.condition_kind)), + optional(field('condition_properties', $.condition_properties)), + field('expr', $._expression), + optional(seq('with', field('additional_exp', $._expression))), + ';' + ), + _spec_abort_with_or_modifies: $ => seq( + field('kind', alias(choice( + 'aborts_with', + 'modifies' + ), $.condition_kind)), + optional(field('condition_properties', $.condition_properties)), + sepBy1(',', field('additional_exp', $._expression)), + ';' + ), + + spec_invariant: $ => seq( + field('kind', alias('invariant', $.condition_kind)), + optional(field('modifier', alias(choice('update', 'pack', 'unpack', 'module'), $.invariant_modifier))), + optional(field('condition_properties', $.condition_properties)), + field('expr', $._expression), + ';' + ), + condition_properties: $ => seq('[', sepBy(',', $.spec_property), ']'), + spec_include: $ => seq('include', $._expression, ';'), + + spec_apply: $ => seq( + 'apply', + field('expr', $._expression), + 'to', + sepBy1(',', $.spec_apply_pattern), + optional(seq('except', sepBy1(',', $.spec_apply_pattern))), + ';' + ), + spec_apply_pattern: $ => seq( + optional(choice('public', 'internal')), + field('name_pattern', $.spec_apply_name_pattern), + optional(field('type_parameters', $.type_parameters)), + ), + spec_apply_name_pattern: $ => /[0-9a-zA-Z_*]+/, + + spec_pragma: $ => seq( + 'pragma', + sepBy(',', $.spec_property), + ';' + ), + spec_property: $ => seq($.identifier, optional(seq('=', $._literal_value))), + + spec_variable: $ => seq( + optional(choice('global', 'local')), + field('name', $.identifier), + optional(field('type_parameters', $.type_parameters)), + ':', + field('type', $._type), + ';' + ), + + _spec_function: $ => choice( + $.native_spec_function, + $.usual_spec_function, + $.uninterpreted_spec_function, + ), + + uninterpreted_spec_function: $ => seq('fun', $._spec_function_signature, ';'), + native_spec_function: $ => seq('native', 'fun', $._spec_function_signature, ';'), + usual_spec_function: $ => seq( + 'fun', + $._spec_function_signature, + field('body', $.block) + ), + _spec_function_signature: $ => seq( + field('name', $._function_identifier), + optional(field('type_parameters', $.type_parameters)), + field('parameters', $.function_parameters), + field('return_type', $.ret_type), + ), + + // Spec block end + + + // move type grammar + _type: $ => choice( + $.apply_type, + $.ref_type, + $.tuple_type, + $.function_type, + $.primitive_type, + ), + apply_type: $ => prec.left(PRECEDENCE.apply_type, seq( + $.module_access, + optional(field('type_arguments', $.type_arguments)), + )), + ref_type: $ => seq( + $._reference, + $._type + ), + tuple_type: $ => seq('(', sepBy(',', $._type), ')'), + primitive_type: $ => choice( + 'u8', + 'u16', + 'u32', + 'u64', + 'u128', + 'u256', + 'bool', + 'address', + 'signer', + 'bytearray', + ), + ret_type: $ => seq(':', $._type), + + module_access: $ => choice( + // macro variable access + seq('$', field('member', $.identifier)), + // address access + seq('@', field('member', $.identifier)), + field('member', alias($._reserved_identifier, $.identifier)), + seq( + field('member', $.identifier), + optional(field('type_arguments', $.type_arguments)), + ), + seq( + field('module', $._module_identifier), + optional(field('type_arguments', $.type_arguments)), + '::', + field('member', $.identifier) + ), + seq( + $.module_identity, + optional(field('type_arguments', $.type_arguments)), + ), + seq( + $.module_identity, + optional(field('type_arguments', $.type_arguments)), + '::', + field('member', $.identifier) + ), + seq( + $.module_identity, + '::', + field('enum_name', $.identifier), + optional(field('type_arguments', $.type_arguments)), + '::', + field('variant', $.identifier) + ), + ), + + friend_access: $ => choice( + field('local_module', $.identifier), + field('fully_qualified_module', $.module_identity), + ), + + macro_module_access: $ => seq(field("access", $.module_access), "!"), + + module_identity: $ => + seq( + field('address', choice($.num_literal, $._module_identifier)), + '::', + field('module', $._module_identifier) + ), + + type_arguments: $ => seq( + '<', + sepBy1(',', $._type), + '>' + ), + + function_type: $ => seq( + field('param_types', $.function_type_parameters), + optional( + seq( + '->', + field('return_type', $._type) + ) + ) + ), + function_type_parameters: $ => seq('|', sepBy(',', $._type), '|'), + + // `mut ` + mut_function_parameter: $ => seq( + 'mut', + $.function_parameter, + ), + + // function parameter grammar + function_parameter: $ => seq( + choice( + field('name', $._variable_identifier), + seq('$', field('name', $._variable_identifier)), + ), + ':', + field('type', $._type), + ), + + // type parameter grammar + type_parameters: $ => seq('<', sepBy1(',', $.type_parameter), '>'), + type_parameter: $ => seq( + optional('$'), + optional('phantom'), + $._type_parameter_identifier, + optional(seq(':', + sepBy1('+', $.ability) + )) + ), + + // Block + + block: $ => seq( + '{', + repeat($.use_declaration), + repeat($.block_item), + optional($._expression), + '}' + ), + block_item: $ => seq( + choice( + $._expression, + $.let_statement, + ), + ';' + ), + let_statement: $ => seq( + 'let', + field('binds', $.bind_list), + optional(seq(':', field('type', $._type))), + optional(seq('=', field('expr', $._expression))) + ), + // Block end + + + // Expression + + _expression: $ => choice( + $.call_expression, + $.macro_call_expression, + $.lambda_expression, + $.if_expression, + $.while_expression, + $.return_expression, + $.abort_expression, + $.assign_expression, + // unary expression is included in binary_op, + $._unary_expression, + $.binary_expression, + $.cast_expression, + $.quantifier_expression, + $.match_expression, + $.vector_expression, + $.loop_expression, + $.identified_expression, + ), + + identified_expression: $ => seq( + field('expression_id', $.block_identifier), + $._expression, + ), + + vector_expression: $ => seq( + choice( + "vector[", + seq( + "vector<", + sepBy1(',', $._type), + '>', + '[', + ) + ), + sepBy(",", $._expression), + "]" + ), + + quantifier_expression: $ => prec.right(seq( + choice($._forall, $._exists), + $.quantifier_bindings, + optional(seq('where', $._expression)), + ':', + $._expression + )), + quantifier_bindings: $ => sepBy1(',', $.quantifier_binding), + quantifier_binding: $ => choice( + seq($.identifier, ':', $._type), + seq($.identifier, 'in', $._expression) + ), + lambda_expression: $ => seq( + field('bindings', $.lambda_bindings), + optional(seq('->', $._type)), + field('expr', $._expression) + ), + lambda_binding: $ => choice( + $.comma_bind_list, + field('bind', $._bind), + seq(field('bind', $._bind), optional(seq(':', field('ty', $._type)))), + ), + lambda_bindings: $ => seq( + '|', + sepBy(',', $.lambda_binding), + '|' + ), + // if-else expression + if_expression: $ => prec.right( + seq( + 'if', + '(', + field('eb', $._expression), + ')', + field('et', $._expression), + optional(seq( + 'else', + field('ef', $._expression) + )), + ) + ), + + // while expression + while_expression: $ => seq( + 'while', + '(', + field('eb', $._expression), + ')', + field('body', $._expression), + ), + + // loop expression + loop_expression: $ => seq('loop', field('body', $._expression)), + + // return expression + return_expression: $ => prec.left(seq( + 'return', + optional(field('label', $.label)), + optional(field('return', $._expression)) + )), + + // abort expression + abort_expression: $ => seq('abort', optional(field('abort', $._expression))), + + match_expression: $ => seq( + 'match', + '(', + field('match_scrutiny', $._expression), + ')', + $._match_body, + ), + + _match_body: $ => seq( + '{', + sepBy(',', $.match_arm), + '}', + ), + + match_condition: $ => seq( + 'if', + '(', + field('condition', $._expression), + ')', + ), + + match_arm: $ => seq( + $.bind_list, + optional($.match_condition), + '=>', + $._expression, + ), + + call_expression: $ => prec.dynamic(1, seq( + $.name_expression, + field('args', $.arg_list), + )), + macro_call_expression: $ => seq( + field('access', $.macro_module_access), + optional(field('type_arguments', $.type_arguments)), + field('args', $.arg_list), + ), + pack_expression: $ => seq( + $.name_expression, + field('body', $.field_initialize_list), + ), + name_expression: $ => seq( + optional('::'), + field('access', $.module_access), + ), + + assign_expression: $ => prec.left(PRECEDENCE.assign, + seq( + field('lhs', $._unary_expression), + '=', + field('rhs', $._expression) + ) + ), + + binary_expression: $ => { + const table = [ + [PRECEDENCE.implies, '==>'], + [PRECEDENCE.or, '||'], + [PRECEDENCE.and, '&&'], + [PRECEDENCE.eq, '=='], + [PRECEDENCE.neq, '!='], + [PRECEDENCE.lt, '<'], + [PRECEDENCE.gt, '>'], + [PRECEDENCE.le, '<='], + [PRECEDENCE.ge, '>='], + [PRECEDENCE.range, '..'], + [PRECEDENCE.bitor, '|'], + [PRECEDENCE.xor, '^'], + [PRECEDENCE.bitand, '&'], + [PRECEDENCE.shl, '<<'], + [PRECEDENCE.shr, '>>'], + [PRECEDENCE.add, '+'], + [PRECEDENCE.sub, '-'], + [PRECEDENCE.mul, '*'], + [PRECEDENCE.div, '/'], + [PRECEDENCE.mod, '%'] + ]; + + let binary_expression = choice(...table.map( + ([precedence, operator]) => prec.left(precedence, seq( + field('lhs', $._expression), + field('operator', alias(operator, $.binary_operator)), + field('rhs', $._expression), + )) + )); + + return binary_expression; + }, + + _unary_expression: $ => prec(10, choice( + $.unary_expression, + $.borrow_expression, + $.dereference_expression, + $.move_or_copy_expression, + $._expression_term, + )), + unary_expression: $ => seq( + field('op', $.unary_op), + field('expr', $._expression) + ), + unary_op: $ => choice('!'), + + // dereference + dereference_expression: $ => prec.right(PRECEDENCE.unary, seq( + '*', + field('expr', $._expression), + )), + // borrow + borrow_expression: $ => prec(PRECEDENCE.unary, seq( + $._reference, + field('expr', $._expression), + )), + // move or copy + move_or_copy_expression: $ => prec(PRECEDENCE.unary, seq( + choice('move', 'copy'), + field('expr', $._expression), + )), + + _reference: $ => choice( + $.imm_ref, + $.mut_ref, + ), + + _expression_term: $ => choice( + $.call_expression, + $.break_expression, + $.continue_expression, + $.name_expression, + $.macro_call_expression, + $.pack_expression, + $._literal_value, + $.unit_expression, + $.expression_list, + $.annotation_expression, + $.block, + $.spec_block, + $.if_expression, + + $.dot_expression, + $.index_expression, + $.vector_expression, + $.match_expression, + ), + break_expression: $ => seq( + 'break', + optional(field('label', $.label)), + optional(field('break', $._expression)) + ), + continue_expression: $ => seq( + 'continue', + optional(field('label', $.label)), + ), + + field_initialize_list: $ => seq( + '{', + sepBy(',', $.exp_field), + '}' + ), + + arg_list: $ => seq( + '(', + sepBy(',', $._expression), + ')' + ), + + expression_list: $ => seq('(', sepBy1(',', $._expression), ')'), + unit_expression: $ => seq('(', ')'), + cast_expression: $ => prec.left(PRECEDENCE.as, seq( + field('expr', $._expression), + 'as', + field('ty', $._type), + )), + annotation_expression: $ => seq( + '(', + field('expr', $._expression), + ':', + field('ty', $._type), + ')' + ), + + + dot_expression: $ => prec.left(PRECEDENCE.field, seq( + field('expr', $._expression_term), + '.', + field('access', $._expression_term), + )), + index_expression: $ => prec.left(PRECEDENCE.call, seq( + field('expr', + $._expression_term, + ), + '[', sepBy(',', field('idx', $._expression)), ']' + )), + + // Expression end + + // Fields and Bindings + exp_field: $ => seq( + field('field', $._field_identifier), + optional(seq( + ':', + field('expr', $._expression) + )) + ), + + bind_list: $ => choice( + $._bind, + $.comma_bind_list, + $.or_bind_list, + ), + at_bind: $ => seq($._variable_identifier, '@', $.bind_list), + comma_bind_list: $ => seq('(', sepBy(',', $._bind), ')'), + or_bind_list: $ => seq(optional('('), sepBy1('|', seq(optional('('), $._bind, optional(')'))), optional(')')), + + mut_bind_var: $ => seq( + 'mut', + alias($._variable_identifier, $.bind_var), + ), + + _bind: $ => choice( + choice( + $.mut_bind_var, + alias($._variable_identifier, $.bind_var) + ), + $.bind_unpack, + $.at_bind, + $._literal_value, + ), + bind_unpack: $ => seq( + $.name_expression, + optional(field('bind_fields', $.bind_fields)), + ), + bind_fields: $ => choice( + $.bind_positional_fields, + $.bind_named_fields, + ), + _spread_operator: _$ => '..', + bind_positional_fields: $ => seq( + '(', sepBy(',', choice($.bind_field, $.mut_bind_field)), ')' + ), + bind_named_fields: $ => seq( + '{', sepBy(',', choice($.bind_field, $.mut_bind_field)), '}' + ), + + mut_bind_field: $ => seq( + 'mut', + $.bind_field, + ), + + bind_field: $ => choice(seq( + field('field', $.bind_list), // direct bind + optional(seq( + ':', + field('bind', $.bind_list) + )) + ), $._spread_operator), + // Fields and Bindings - End + + // literals + _literal_value: $ => choice( + $.address_literal, + $.bool_literal, + $.num_literal, + $.hex_string_literal, + $.byte_string_literal, + // $.vector_literal, + ), + + imm_ref: $ => '&', + mut_ref: $ => seq('&', 'mut'), + block_identifier: $ => seq($.label, ':'), + label: $ => seq('\'', $.identifier), + address_literal: $ => /@(0x[a-fA-F0-9]+|[0-9]+)/, + bool_literal: $ => choice('true', 'false'), + num_literal: $ => choice(/[0-9][0-9_]*(?:u8|u16|u32|u64|u128|u256)?/, /0x[a-fA-F0-9_]+/), + hex_string_literal: $ => /x"[0-9a-fA-F]*"/, + byte_string_literal: $ => /b"(\\.|[^\\"])*"/, + _module_identifier: $ => alias($.identifier, $.module_identifier), + _struct_identifier: $ => alias($.identifier, $.struct_identifier), + _enum_identifier: $ => alias($.identifier, $.enum_identifier), + _variant_identifier: $ => alias($.identifier, $.variant_identifier), + _function_identifier: $ => alias($.identifier, $.function_identifier), + _variable_identifier: $ => alias($.identifier, $.variable_identifier), + _field_identifier: $ => alias($.identifier, $.field_identifier), + _type_identifier: $ => alias($.identifier, $.type_identifier), + _type_parameter_identifier: $ => alias($.identifier, $.type_parameter_identifier), + identifier: $ => /(`)?[a-zA-Z_][0-9a-zA-Z_]*(`)?/, + macro_identifier: $ => /[a-zA-Z_][0-9a-zA-Z_]*!/, + _reserved_identifier: $ => choice($._forall, $._exists), + + _forall: $ => 'forall', + _exists: $ => 'exists', + line_comment: $ => token(seq( + '//', /.*/ + )), + newline: $ => token(/\n/), + _whitespace: $ => /\s/, + // http://stackoverflow.com/questions/13014947/regex-to-match-a-c-style-multiline-comment/36328890#36328890 + block_comment: $ => token(seq( + '/*', + /[^*]*\*+([^/*][^*]*\*+)*/, + '/' + )) + } +}); + +// ( 'sep')* ? +// Note that this allows an optional trailing `sep`. +function sepBy(sep, rule) { + return seq(repeat(seq(rule, sep)), optional(rule)); +} +function sepBy1(sep, rule) { + return seq(rule, repeat(seq(sep, rule)), optional(sep)); +} diff --git a/external-crates/move/tooling/tree-sitter/package.json b/external-crates/move/tooling/tree-sitter/package.json new file mode 100644 index 0000000000000..39d87df00777a --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/package.json @@ -0,0 +1,50 @@ +{ + "dependencies": { + "node-addon-api": "^7.1.0", + "node-gyp-build": "^4.8.0" + }, + "peerDependencies": { + "tree-sitter": "^0.21.0" + }, + "peerDependenciesMeta": { + "tree_sitter": { + "optional": true + } + }, + "name": "tree-sitter-move", + "version": "1.0.0", + "description": "Tree sitter parser for Move", + "main": "bindings/node", + "types": "bindings/node", + "scripts": { + "test": "test", + "install": "node-gyp-build", + "prebuildify": "prebuildify --napi --strip" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "tree-sitter-cli": "^0.20.8", + "prebuildify": "^6.0.0" + }, + "tree-sitter": [ + { + "scope": "source.move", + "injection-regex": "move", + "file-types": [ + "move" + ], + "highlights": [ + "queries/highlights.scm" + ] + } + ], + "files": [ + "grammar.js", + "binding.gyp", + "prebuilds/**", + "bindings/node/*", + "queries/*", + "src/**" + ] +} diff --git a/external-crates/move/tooling/tree-sitter/queries/highlights.scm b/external-crates/move/tooling/tree-sitter/queries/highlights.scm new file mode 100644 index 0000000000000..aa683f0b11130 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/queries/highlights.scm @@ -0,0 +1,149 @@ +;; Highlights file for Move + +;; Types +(type_parameters) @type +(type_parameter) @type +(type_parameter_identifier) @type +(apply_type) @type +(ref_type) @type.ref +(primitive_type) @type.builtin + +;; Comments +(line_comment) @comment +(block_comment) @comment + +;; Annotations +(annotation) @annotation +(annotation_item) @annotation.item + +;; Constants +(constant name: (constant_identifier) @constant.name) +(constant expr: (num_literal) @constant.value) +((identifier) @constant.name + (#match? @constant.name "^[A-Z][A-Z\\d_]+$'")) + +;; Function definitions +(function_definition name: (function_identifier) @function) +(macro_function_definition name: (function_identifier) @macro) +(native_function_definition name: (function_identifier) @function) +(usual_spec_function name: (function_identifier) @function) +(function_parameter name: (variable_identifier) @variable.parameter) + +;; Module definitions +(module_identity address: (module_identifier) @namespace.module.address) +(module_identity module: (module_identifier) @namespace.module.name) + +;; Function calls +(call_expression (name_expression access: (module_access module: (module_identifier) @namespace.module.name))) +(call_expression (name_expression access: (module_access member: (identifier) @function.call))) + + +(label (identifier) @label) + +;; Macro calls +(macro_call_expression access: (macro_module_access) @macro.call) + +;; Literals +(num_literal) @number +(bool_literal) @boolean +(hex_string_literal) @string.hex +(byte_string_literal) @string.byte +(address_literal) @number.address + +;; Binders + +;; Uses +(use_member member: (identifier) @include.member) +(use_module alias: (module_identifier) @namespace.module.name) + +(use_fun (module_access module: (module_identifier) @namespace.module.name)) +(use_fun (module_access member: (identifier) @include.member)) + +(function_identifier) @function.name + +;; Friends +; (friend_access local_module: (identifier) @namespace.module.name) + +;; Structs +(struct_definition name: (struct_identifier) @type.definition.struct) +(ability) @type.ability +(field_annotation field: (field_identifier) @field.identifier) +(field_identifier) @field.identifier + +;; Enums +(enum_definition name: (enum_identifier) @type.definition.struct) +(variant variant_name: (variant_identifier) @constructor.name) + +;; Packs +(pack_expression (name_expression access: (module_access) @constructor.name)) + +;; Unpacks +;; TODO: go into variants +(bind_unpack (name_expression) @type.name) +(module_access "$" (identifier) @macro.variable) +"$" @macro.variable + +(module_access module: (module_identifier) member: (identifier) @constructor.name) + +(abort_expression) @keyword +(mut_ref) @keyword + +;; Lambdas +; (lambda_binding bind: (bind_var (variable_identifier) @variable.parameter)) +; (lambda_bindings (bind_var (variable_identifier) @variable.parameter)) + + +;; Operators +(binary_operator) @operator +(unary_op) @operator +"=>" @operator +"@" @operator +"->" @operator + +;; Specs +(spec_block target: (identifier) @function.spec.target) +(spec_pragma) @preproc.annotation.spec +(spec_condition kind: (condition_kind) @condition.spec) +(condition_properties) @preproc.spec.condition.properties + +; (match_expression "match") @keyword + +;; Spec keywords +; "opaque" @keyword +; "aborts_if" @keyword +; "abstract" @keyword +[ + "pragma" +] @keyword + +;; Source Language Keywords +[ + "fun" + "return" + "if" + "else" + "while" + "native" + "struct" + "use" + "public" + "package" + "spec" + "module" + "abort" + "const" + "let" + "has" + "as" + "&" + "friend" + "entry" + "mut" + "macro" + "enum" + "break" + "continue" + "loop" +] @keyword + + "match" @keyword diff --git a/external-crates/move/tooling/tree-sitter/queries/locals.scm b/external-crates/move/tooling/tree-sitter/queries/locals.scm new file mode 100644 index 0000000000000..e5b2959d3fca8 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/queries/locals.scm @@ -0,0 +1,53 @@ +; Function Scope +; (function_definition +; body: (block) @scope +; parameters: (function_parameters (function_parameter name: (variable_identifier) @definition.var))) + +(function_definition body: (block) @scope) + +(function_parameter name: (variable_identifier) @definition.var) +(function_parameter name: (variable_identifier) @local.definition) + +(identifier) @local.reference + + +; Module and Struct Scope +(module_definition + (module_body) @scope) + +; (struct_definition +; (struct_def_fields) @scope) + +; Spec Block Scope +(spec_block + body: (spec_body) @scope) + +; Local Variable Declarations in Function Blocks +; (let_statement +; binds: (bind_list +; (bind_var (variable_identifier) @definition.var) +; (bind_unpack +; (bind_field (field_identifier) @definition.var)))) + +; Local Variable Declarations in Spec Blocks +; (spec_block +; (spec_variable name: (identifier) @definition.var)) + +; Parameters in Spec Functions +; (spec_function +; parameters: (function_parameters (function_parameter name: (identifier) @definition.var))) +; +; ; Type Parameters +; (type_parameters +; (type_parameter name: (identifier) @definition.type))) +; +; ; Struct Fields +; (struct_definition +; (struct_def_fields +; (field_annotation +; field: (identifier) @definition.field))) +; +; ; Function and Module Identifiers +; (function_definition name: (identifier) @definition.function) +; (module_definition name: (identifier) @definition.module) +; diff --git a/external-crates/move/tooling/tree-sitter/src/grammar.json b/external-crates/move/tooling/tree-sitter/src/grammar.json new file mode 100644 index 0000000000000..f09a57e83d61e --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/src/grammar.json @@ -0,0 +1,6967 @@ +{ + "name": "move", + "word": "identifier", + "rules": { + "source_file": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "module_definition" + } + }, + "use_declaration": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "public" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "use" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "use_fun" + }, + { + "type": "SYMBOL", + "name": "use_module" + }, + { + "type": "SYMBOL", + "name": "use_module_member" + }, + { + "type": "SYMBOL", + "name": "use_module_members" + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "use_fun": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "SYMBOL", + "name": "module_access" + }, + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_access" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "_function_identifier" + } + ] + } + } + ] + }, + "use_module": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_identity" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "SYMBOL", + "name": "_module_identifier" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "use_module_member": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_identity" + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + } + ] + }, + "use_module_members": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "address", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "num_literal" + }, + { + "type": "SYMBOL", + "name": "_module_identifier" + } + ] + } + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_identity" + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "use_member": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "module", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "use_member", + "content": { + "type": "SYMBOL", + "name": "use_member" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "module", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + "friend_declaration": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "friend" + }, + { + "type": "FIELD", + "name": "module", + "content": { + "type": "SYMBOL", + "name": "friend_access" + } + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "modifier": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "public" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "package" + }, + { + "type": "STRING", + "value": "friend" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "entry" + }, + { + "type": "STRING", + "value": "native" + } + ] + }, + "ability": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "copy" + }, + { + "type": "STRING", + "value": "drop" + }, + { + "type": "STRING", + "value": "store" + }, + { + "type": "STRING", + "value": "key" + } + ] + }, + "module_definition": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "module" + }, + { + "type": "FIELD", + "name": "module_identity", + "content": { + "type": "SYMBOL", + "name": "module_identity" + } + }, + { + "type": "FIELD", + "name": "module_body", + "content": { + "type": "SYMBOL", + "name": "module_body" + } + } + ] + }, + "module_body": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ";" + }, + { + "type": "STRING", + "value": "{" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "use_declaration" + }, + { + "type": "SYMBOL", + "name": "friend_declaration" + }, + { + "type": "SYMBOL", + "name": "constant" + }, + { + "type": "SYMBOL", + "name": "_function_item" + }, + { + "type": "SYMBOL", + "name": "_struct_item" + }, + { + "type": "SYMBOL", + "name": "_enum_item" + }, + { + "type": "SYMBOL", + "name": "spec_block" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "}" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "annotation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#[" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "annotation_item" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "annotation_item" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "annotation_expr": { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "local_const", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "SYMBOL", + "name": "module_access" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "module_access" + }, + { + "type": "SYMBOL", + "name": "_literal_value" + } + ] + } + } + ] + } + ] + }, + "annotation_list": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_literal_value" + }, + { + "type": "SYMBOL", + "name": "annotation_item" + }, + { + "type": "SYMBOL", + "name": "module_access" + }, + { + "type": "FIELD", + "name": "local_const", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "SYMBOL", + "name": "module_access" + } + ] + } + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_literal_value" + }, + { + "type": "SYMBOL", + "name": "annotation_item" + }, + { + "type": "SYMBOL", + "name": "module_access" + }, + { + "type": "FIELD", + "name": "local_const", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "SYMBOL", + "name": "module_access" + } + ] + } + } + ] + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "annotation_item": { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "annotation_expr", + "content": { + "type": "SYMBOL", + "name": "annotation_expr" + } + }, + { + "type": "FIELD", + "name": "annotation_list", + "content": { + "type": "SYMBOL", + "name": "annotation_list" + } + } + ] + }, + "constant": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "const" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "constant_identifier" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "datatype_fields": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "positional_fields" + }, + { + "type": "SYMBOL", + "name": "named_fields" + } + ] + }, + "positional_fields": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "named_fields": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "field_annotation" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "field_annotation" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_enum_item": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "enum_definition" + } + ] + }, + "enum_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "public" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_enum_signature" + }, + { + "type": "FIELD", + "name": "enum_variants", + "content": { + "type": "SYMBOL", + "name": "enum_variants" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "postfix_ability_declarations", + "content": { + "type": "SYMBOL", + "name": "postfix_ability_decls" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_enum_signature": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "enum" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_enum_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "ability_declarations", + "content": { + "type": "SYMBOL", + "name": "ability_decls" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "enum_variants": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "variant" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "variant" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "variant": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "variant_name", + "content": { + "type": "SYMBOL", + "name": "_variant_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "fields", + "content": { + "type": "SYMBOL", + "name": "datatype_fields" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_struct_item": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "native_struct_definition" + }, + { + "type": "SYMBOL", + "name": "struct_definition" + } + ] + }, + "native_struct_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "public" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "native" + }, + { + "type": "SYMBOL", + "name": "_struct_signature" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "struct_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "public" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_struct_signature" + }, + { + "type": "FIELD", + "name": "struct_fields", + "content": { + "type": "SYMBOL", + "name": "datatype_fields" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "postfix_ability_declarations", + "content": { + "type": "SYMBOL", + "name": "postfix_ability_decls" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "field_annotation": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "_field_identifier" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + "ability_decls": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "has" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "ability" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "ability" + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + "postfix_ability_decls": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "has" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "ability" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "ability" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "_struct_signature": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "struct" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_struct_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "ability_declarations", + "content": { + "type": "SYMBOL", + "name": "ability_decls" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_function_item": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "native_function_definition" + }, + { + "type": "SYMBOL", + "name": "macro_function_definition" + }, + { + "type": "SYMBOL", + "name": "function_definition" + } + ] + }, + "native_function_definition": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_function_signature" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "macro_function_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "macro" + }, + { + "type": "SYMBOL", + "name": "_macro_signature" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "_macro_signature": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "fun" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_function_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "function_parameters" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "return_type", + "content": { + "type": "SYMBOL", + "name": "ret_type" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "function_definition": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_function_signature" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "_function_signature": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "fun" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_function_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "function_parameters" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "return_type", + "content": { + "type": "SYMBOL", + "name": "ret_type" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "function_parameters": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "mut_function_parameter" + }, + { + "type": "SYMBOL", + "name": "function_parameter" + } + ] + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "mut_function_parameter" + }, + { + "type": "SYMBOL", + "name": "function_parameter" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "spec_block": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "spec" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "target", + "content": { + "type": "SYMBOL", + "name": "_spec_block_target" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "spec_body" + } + } + ] + }, + { + "type": "SYMBOL", + "name": "_spec_function" + } + ] + } + ] + }, + "_spec_block_target": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "module" + }, + "named": true, + "value": "spec_block_target_module" + }, + { + "type": "SYMBOL", + "name": "spec_block_target_schema" + } + ] + }, + "spec_block_target_fun": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "SYMBOL", + "name": "_function_identifier" + } + ] + }, + "spec_block_target_struct": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "struct" + }, + { + "type": "SYMBOL", + "name": "_struct_identifier" + } + ] + }, + "spec_block_target_schema": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "schema" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_struct_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "spec_body": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "use_declaration" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_spec_block_memeber" + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_spec_block_memeber": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "spec_invariant" + }, + { + "type": "SYMBOL", + "name": "_spec_function" + }, + { + "type": "SYMBOL", + "name": "spec_condition" + }, + { + "type": "SYMBOL", + "name": "spec_include" + }, + { + "type": "SYMBOL", + "name": "spec_apply" + }, + { + "type": "SYMBOL", + "name": "spec_pragma" + }, + { + "type": "SYMBOL", + "name": "spec_variable" + }, + { + "type": "SYMBOL", + "name": "spec_let" + } + ] + }, + "spec_let": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "let" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "post" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "def", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "spec_condition": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_spec_condition" + }, + { + "type": "SYMBOL", + "name": "_spec_abort_if" + }, + { + "type": "SYMBOL", + "name": "_spec_abort_with_or_modifies" + } + ] + }, + "_spec_condition_kind": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "assert" + }, + { + "type": "STRING", + "value": "assume" + }, + { + "type": "STRING", + "value": "decreases" + }, + { + "type": "STRING", + "value": "ensures" + }, + { + "type": "STRING", + "value": "succeeds_if" + } + ] + }, + "_spec_condition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "kind", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_spec_condition_kind" + }, + "named": true, + "value": "condition_kind" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "kind", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "requires" + }, + "named": true, + "value": "condition_kind" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "module" + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "condition_properties", + "content": { + "type": "SYMBOL", + "name": "condition_properties" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "_spec_abort_if": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "kind", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "aborts_if" + }, + "named": true, + "value": "condition_kind" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "condition_properties", + "content": { + "type": "SYMBOL", + "name": "condition_properties" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "with" + }, + { + "type": "FIELD", + "name": "additional_exp", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "_spec_abort_with_or_modifies": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "kind", + "content": { + "type": "ALIAS", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "aborts_with" + }, + { + "type": "STRING", + "value": "modifies" + } + ] + }, + "named": true, + "value": "condition_kind" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "condition_properties", + "content": { + "type": "SYMBOL", + "name": "condition_properties" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "additional_exp", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "additional_exp", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "spec_invariant": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "kind", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "invariant" + }, + "named": true, + "value": "condition_kind" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "modifier", + "content": { + "type": "ALIAS", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "update" + }, + { + "type": "STRING", + "value": "pack" + }, + { + "type": "STRING", + "value": "unpack" + }, + { + "type": "STRING", + "value": "module" + } + ] + }, + "named": true, + "value": "invariant_modifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "condition_properties", + "content": { + "type": "SYMBOL", + "name": "condition_properties" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "condition_properties": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "spec_property" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "spec_property" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "spec_include": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "include" + }, + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "spec_apply": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "apply" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": "to" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "spec_apply_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "spec_apply_pattern" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "except" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "spec_apply_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "spec_apply_pattern" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "spec_apply_pattern": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "public" + }, + { + "type": "STRING", + "value": "internal" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name_pattern", + "content": { + "type": "SYMBOL", + "name": "spec_apply_name_pattern" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "spec_apply_name_pattern": { + "type": "PATTERN", + "value": "[0-9a-zA-Z_*]+" + }, + "spec_pragma": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "pragma" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "spec_property" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "spec_property" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "spec_property": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_literal_value" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "spec_variable": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "global" + }, + { + "type": "STRING", + "value": "local" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "_spec_function": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "native_spec_function" + }, + { + "type": "SYMBOL", + "name": "usual_spec_function" + }, + { + "type": "SYMBOL", + "name": "uninterpreted_spec_function" + } + ] + }, + "uninterpreted_spec_function": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "SYMBOL", + "name": "_spec_function_signature" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "native_spec_function": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "native" + }, + { + "type": "STRING", + "value": "fun" + }, + { + "type": "SYMBOL", + "name": "_spec_function_signature" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "usual_spec_function": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "SYMBOL", + "name": "_spec_function_signature" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "_spec_function_signature": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_function_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_parameters", + "content": { + "type": "SYMBOL", + "name": "type_parameters" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "function_parameters" + } + }, + { + "type": "FIELD", + "name": "return_type", + "content": { + "type": "SYMBOL", + "name": "ret_type" + } + } + ] + }, + "_type": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "apply_type" + }, + { + "type": "SYMBOL", + "name": "ref_type" + }, + { + "type": "SYMBOL", + "name": "tuple_type" + }, + { + "type": "SYMBOL", + "name": "function_type" + }, + { + "type": "SYMBOL", + "name": "primitive_type" + } + ] + }, + "apply_type": { + "type": "PREC_LEFT", + "value": 15, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_access" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "ref_type": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_reference" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + "tuple_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "primitive_type": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "u8" + }, + { + "type": "STRING", + "value": "u16" + }, + { + "type": "STRING", + "value": "u32" + }, + { + "type": "STRING", + "value": "u64" + }, + { + "type": "STRING", + "value": "u128" + }, + { + "type": "STRING", + "value": "u256" + }, + { + "type": "STRING", + "value": "bool" + }, + { + "type": "STRING", + "value": "address" + }, + { + "type": "STRING", + "value": "signer" + }, + { + "type": "STRING", + "value": "bytearray" + } + ] + }, + "ret_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + "module_access": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "$" + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "@" + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_reserved_identifier" + }, + "named": true, + "value": "identifier" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "module", + "content": { + "type": "SYMBOL", + "name": "_module_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_identity" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_identity" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "module_identity" + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "enum_name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "variant", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + } + ] + }, + "friend_access": { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "local_module", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "fully_qualified_module", + "content": { + "type": "SYMBOL", + "name": "module_identity" + } + } + ] + }, + "macro_module_access": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "access", + "content": { + "type": "SYMBOL", + "name": "module_access" + } + }, + { + "type": "STRING", + "value": "!" + } + ] + }, + "module_identity": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "address", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "num_literal" + }, + { + "type": "SYMBOL", + "name": "_module_identifier" + } + ] + } + }, + { + "type": "STRING", + "value": "::" + }, + { + "type": "FIELD", + "name": "module", + "content": { + "type": "SYMBOL", + "name": "_module_identifier" + } + } + ] + }, + "type_arguments": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ">" + } + ] + }, + "function_type": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "param_types", + "content": { + "type": "SYMBOL", + "name": "function_type_parameters" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "->" + }, + { + "type": "FIELD", + "name": "return_type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "function_type_parameters": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "|" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "|" + } + ] + }, + "mut_function_parameter": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "mut" + }, + { + "type": "SYMBOL", + "name": "function_parameter" + } + ] + }, + "function_parameter": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_variable_identifier" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "$" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_variable_identifier" + } + } + ] + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + "type_parameters": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "type_parameter" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "type_parameter" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ">" + } + ] + }, + "type_parameter": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "$" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "phantom" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_type_parameter_identifier" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "ability" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "SYMBOL", + "name": "ability" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "block": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "use_declaration" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "block_item" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "block_item": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "SYMBOL", + "name": "let_statement" + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "let_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "let" + }, + { + "type": "FIELD", + "name": "binds", + "content": { + "type": "SYMBOL", + "name": "bind_list" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_expression": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "call_expression" + }, + { + "type": "SYMBOL", + "name": "macro_call_expression" + }, + { + "type": "SYMBOL", + "name": "lambda_expression" + }, + { + "type": "SYMBOL", + "name": "if_expression" + }, + { + "type": "SYMBOL", + "name": "while_expression" + }, + { + "type": "SYMBOL", + "name": "return_expression" + }, + { + "type": "SYMBOL", + "name": "abort_expression" + }, + { + "type": "SYMBOL", + "name": "assign_expression" + }, + { + "type": "SYMBOL", + "name": "_unary_expression" + }, + { + "type": "SYMBOL", + "name": "binary_expression" + }, + { + "type": "SYMBOL", + "name": "cast_expression" + }, + { + "type": "SYMBOL", + "name": "quantifier_expression" + }, + { + "type": "SYMBOL", + "name": "match_expression" + }, + { + "type": "SYMBOL", + "name": "vector_expression" + }, + { + "type": "SYMBOL", + "name": "loop_expression" + }, + { + "type": "SYMBOL", + "name": "identified_expression" + } + ] + }, + "identified_expression": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "expression_id", + "content": { + "type": "SYMBOL", + "name": "block_identifier" + } + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + }, + "vector_expression": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "vector[" + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "vector<" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ">" + }, + { + "type": "STRING", + "value": "[" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "quantifier_expression": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_forall" + }, + { + "type": "SYMBOL", + "name": "_exists" + } + ] + }, + { + "type": "SYMBOL", + "name": "quantifier_bindings" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "where" + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + } + }, + "quantifier_bindings": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "quantifier_binding" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "quantifier_binding" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "quantifier_binding": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + } + ] + }, + "lambda_expression": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "bindings", + "content": { + "type": "SYMBOL", + "name": "lambda_bindings" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "->" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + "lambda_binding": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "comma_bind_list" + }, + { + "type": "FIELD", + "name": "bind", + "content": { + "type": "SYMBOL", + "name": "_bind" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "bind", + "content": { + "type": "SYMBOL", + "name": "_bind" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "ty", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + "lambda_bindings": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "|" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "lambda_binding" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "lambda_binding" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "|" + } + ] + }, + "if_expression": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "eb", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "FIELD", + "name": "et", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "FIELD", + "name": "ef", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "while_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "while" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "eb", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + "loop_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "loop" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + "return_expression": { + "type": "PREC_LEFT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "return" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "label", + "content": { + "type": "SYMBOL", + "name": "label" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "return", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "abort_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "abort" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "abort", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "match_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "match" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "match_scrutiny", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "SYMBOL", + "name": "_match_body" + } + ] + }, + "_match_body": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "match_arm" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "match_arm" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "match_condition": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "match_arm": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "bind_list" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "match_condition" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "=>" + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + }, + "call_expression": { + "type": "PREC_DYNAMIC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name_expression" + }, + { + "type": "FIELD", + "name": "args", + "content": { + "type": "SYMBOL", + "name": "arg_list" + } + } + ] + } + }, + "macro_call_expression": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "access", + "content": { + "type": "SYMBOL", + "name": "macro_module_access" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type_arguments", + "content": { + "type": "SYMBOL", + "name": "type_arguments" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "args", + "content": { + "type": "SYMBOL", + "name": "arg_list" + } + } + ] + }, + "pack_expression": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name_expression" + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "field_initialize_list" + } + } + ] + }, + "name_expression": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "access", + "content": { + "type": "SYMBOL", + "name": "module_access" + } + } + ] + }, + "assign_expression": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_unary_expression" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + "binary_expression": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "==>" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "||" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "&&" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "==" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "!=" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "<" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": ">" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "<=" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": ">=" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": ".." + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "|" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 8, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "^" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 9, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "&" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "<<" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": ">>" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "+" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "-" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "*" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "/" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "lhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "ALIAS", + "content": { + "type": "STRING", + "value": "%" + }, + "named": true, + "value": "binary_operator" + } + }, + { + "type": "FIELD", + "name": "rhs", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + } + ] + }, + "_unary_expression": { + "type": "PREC", + "value": 10, + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "unary_expression" + }, + { + "type": "SYMBOL", + "name": "borrow_expression" + }, + { + "type": "SYMBOL", + "name": "dereference_expression" + }, + { + "type": "SYMBOL", + "name": "move_or_copy_expression" + }, + { + "type": "SYMBOL", + "name": "_expression_term" + } + ] + } + }, + "unary_expression": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "op", + "content": { + "type": "SYMBOL", + "name": "unary_op" + } + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + "unary_op": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "!" + } + ] + }, + "dereference_expression": { + "type": "PREC_RIGHT", + "value": 13, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + "borrow_expression": { + "type": "PREC", + "value": 13, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_reference" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + "move_or_copy_expression": { + "type": "PREC", + "value": 13, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "move" + }, + { + "type": "STRING", + "value": "copy" + } + ] + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + } + }, + "_reference": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "imm_ref" + }, + { + "type": "SYMBOL", + "name": "mut_ref" + } + ] + }, + "_expression_term": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "call_expression" + }, + { + "type": "SYMBOL", + "name": "break_expression" + }, + { + "type": "SYMBOL", + "name": "continue_expression" + }, + { + "type": "SYMBOL", + "name": "name_expression" + }, + { + "type": "SYMBOL", + "name": "macro_call_expression" + }, + { + "type": "SYMBOL", + "name": "pack_expression" + }, + { + "type": "SYMBOL", + "name": "_literal_value" + }, + { + "type": "SYMBOL", + "name": "unit_expression" + }, + { + "type": "SYMBOL", + "name": "expression_list" + }, + { + "type": "SYMBOL", + "name": "annotation_expression" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "SYMBOL", + "name": "spec_block" + }, + { + "type": "SYMBOL", + "name": "if_expression" + }, + { + "type": "SYMBOL", + "name": "dot_expression" + }, + { + "type": "SYMBOL", + "name": "index_expression" + }, + { + "type": "SYMBOL", + "name": "vector_expression" + }, + { + "type": "SYMBOL", + "name": "match_expression" + } + ] + }, + "break_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "break" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "label", + "content": { + "type": "SYMBOL", + "name": "label" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "break", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "continue_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "continue" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "label", + "content": { + "type": "SYMBOL", + "name": "label" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "field_initialize_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "exp_field" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "exp_field" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "arg_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "expression_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expression" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_expression" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "unit_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "cast_expression": { + "type": "PREC_LEFT", + "value": 16, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "ty", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + } + }, + "annotation_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "ty", + "content": { + "type": "SYMBOL", + "name": "_type" + } + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "dot_expression": { + "type": "PREC_LEFT", + "value": 14, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression_term" + } + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "FIELD", + "name": "access", + "content": { + "type": "SYMBOL", + "name": "_expression_term" + } + } + ] + } + }, + "index_expression": { + "type": "PREC_LEFT", + "value": 15, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression_term" + } + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "idx", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "idx", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "exp_field": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "_field_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "expr", + "content": { + "type": "SYMBOL", + "name": "_expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "bind_list": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_bind" + }, + { + "type": "SYMBOL", + "name": "comma_bind_list" + }, + { + "type": "SYMBOL", + "name": "or_bind_list" + } + ] + }, + "at_bind": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_variable_identifier" + }, + { + "type": "STRING", + "value": "@" + }, + { + "type": "SYMBOL", + "name": "bind_list" + } + ] + }, + "comma_bind_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_bind" + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_bind" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "or_bind_list": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_bind" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ")" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "|" + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_bind" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ")" + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "|" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ")" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "mut_bind_var": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "mut" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_variable_identifier" + }, + "named": true, + "value": "bind_var" + } + ] + }, + "_bind": { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "mut_bind_var" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_variable_identifier" + }, + "named": true, + "value": "bind_var" + } + ] + }, + { + "type": "SYMBOL", + "name": "bind_unpack" + }, + { + "type": "SYMBOL", + "name": "at_bind" + }, + { + "type": "SYMBOL", + "name": "_literal_value" + } + ] + }, + "bind_unpack": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name_expression" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "bind_fields", + "content": { + "type": "SYMBOL", + "name": "bind_fields" + } + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "bind_fields": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "bind_positional_fields" + }, + { + "type": "SYMBOL", + "name": "bind_named_fields" + } + ] + }, + "_spread_operator": { + "type": "STRING", + "value": ".." + }, + "bind_positional_fields": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "bind_field" + }, + { + "type": "SYMBOL", + "name": "mut_bind_field" + } + ] + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "bind_field" + }, + { + "type": "SYMBOL", + "name": "mut_bind_field" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "bind_named_fields": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "bind_field" + }, + { + "type": "SYMBOL", + "name": "mut_bind_field" + } + ] + }, + { + "type": "STRING", + "value": "," + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "bind_field" + }, + { + "type": "SYMBOL", + "name": "mut_bind_field" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "mut_bind_field": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "mut" + }, + { + "type": "SYMBOL", + "name": "bind_field" + } + ] + }, + "bind_field": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "bind_list" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "bind", + "content": { + "type": "SYMBOL", + "name": "bind_list" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SYMBOL", + "name": "_spread_operator" + } + ] + }, + "_literal_value": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "address_literal" + }, + { + "type": "SYMBOL", + "name": "bool_literal" + }, + { + "type": "SYMBOL", + "name": "num_literal" + }, + { + "type": "SYMBOL", + "name": "hex_string_literal" + }, + { + "type": "SYMBOL", + "name": "byte_string_literal" + } + ] + }, + "imm_ref": { + "type": "STRING", + "value": "&" + }, + "mut_ref": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "&" + }, + { + "type": "STRING", + "value": "mut" + } + ] + }, + "block_identifier": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "label" + }, + { + "type": "STRING", + "value": ":" + } + ] + }, + "label": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + }, + "address_literal": { + "type": "PATTERN", + "value": "@(0x[a-fA-F0-9]+|[0-9]+)" + }, + "bool_literal": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "true" + }, + { + "type": "STRING", + "value": "false" + } + ] + }, + "num_literal": { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[0-9][0-9_]*(?:u8|u16|u32|u64|u128|u256)?" + }, + { + "type": "PATTERN", + "value": "0x[a-fA-F0-9_]+" + } + ] + }, + "hex_string_literal": { + "type": "PATTERN", + "value": "x\"[0-9a-fA-F]*\"" + }, + "byte_string_literal": { + "type": "PATTERN", + "value": "b\"(\\\\.|[^\\\\\"])*\"" + }, + "_module_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "module_identifier" + }, + "_struct_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "struct_identifier" + }, + "_enum_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "enum_identifier" + }, + "_variant_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "variant_identifier" + }, + "_function_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "function_identifier" + }, + "_variable_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "variable_identifier" + }, + "_field_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "field_identifier" + }, + "_type_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "type_identifier" + }, + "_type_parameter_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "type_parameter_identifier" + }, + "identifier": { + "type": "PATTERN", + "value": "(`)?[a-zA-Z_][0-9a-zA-Z_]*(`)?" + }, + "macro_identifier": { + "type": "PATTERN", + "value": "[a-zA-Z_][0-9a-zA-Z_]*!" + }, + "_reserved_identifier": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_forall" + }, + { + "type": "SYMBOL", + "name": "_exists" + } + ] + }, + "_forall": { + "type": "STRING", + "value": "forall" + }, + "_exists": { + "type": "STRING", + "value": "exists" + }, + "line_comment": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "//" + }, + { + "type": "PATTERN", + "value": ".*" + } + ] + } + }, + "newline": { + "type": "TOKEN", + "content": { + "type": "PATTERN", + "value": "\\n" + } + }, + "_whitespace": { + "type": "PATTERN", + "value": "\\s" + }, + "block_comment": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "/*" + }, + { + "type": "PATTERN", + "value": "[^*]*\\*+([^/*][^*]*\\*+)*" + }, + { + "type": "STRING", + "value": "/" + } + ] + } + } + }, + "extras": [ + { + "type": "SYMBOL", + "name": "_whitespace" + }, + { + "type": "SYMBOL", + "name": "line_comment" + }, + { + "type": "SYMBOL", + "name": "block_comment" + }, + { + "type": "SYMBOL", + "name": "newline" + }, + { + "type": "SYMBOL", + "name": "annotation" + } + ], + "conflicts": [ + [ + "annotation_expr", + "module_access" + ], + [ + "_expression", + "_expression_term" + ], + [ + "function_type_parameters" + ], + [ + "module_access", + "_variable_identifier" + ], + [ + "module_access", + "_module_identifier" + ], + [ + "modifier", + "native_struct_definition" + ], + [ + "bind_list", + "or_bind_list" + ], + [ + "comma_bind_list", + "or_bind_list" + ], + [ + "break_expression", + "block_identifier" + ], + [ + "or_bind_list" + ], + [ + "mut_bind_var", + "_bind" + ], + [ + "module_access" + ], + [ + "break_expression" + ], + [ + "abort_expression" + ] + ], + "precedences": [], + "externals": [], + "inline": [], + "supertypes": [ + "_spec_block_target" + ] +} diff --git a/external-crates/move/tooling/tree-sitter/src/node-types.json b/external-crates/move/tooling/tree-sitter/src/node-types.json new file mode 100644 index 0000000000000..c33a0282950bc --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/src/node-types.json @@ -0,0 +1,9802 @@ +[ + { + "type": "_spec_block_target", + "named": true, + "subtypes": [ + { + "type": "identifier", + "named": true + }, + { + "type": "spec_block_target_module", + "named": true + }, + { + "type": "spec_block_target_schema", + "named": true + } + ] + }, + { + "type": "ability", + "named": true, + "fields": {} + }, + { + "type": "ability_decls", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "ability", + "named": true + } + ] + } + }, + { + "type": "abort_expression", + "named": true, + "fields": { + "abort": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "annotation", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "annotation_item", + "named": true + } + ] + } + }, + { + "type": "annotation_expr", + "named": true, + "fields": { + "local_const": { + "multiple": true, + "required": false, + "types": [ + { + "type": "::", + "named": false + }, + { + "type": "module_access", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "value": { + "multiple": false, + "required": false, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "module_access", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + } + } + }, + { + "type": "annotation_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "ty": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "annotation_item", + "named": true, + "fields": { + "annotation_expr": { + "multiple": false, + "required": false, + "types": [ + { + "type": "annotation_expr", + "named": true + } + ] + }, + "annotation_list": { + "multiple": false, + "required": false, + "types": [ + { + "type": "annotation_list", + "named": true + } + ] + } + } + }, + { + "type": "annotation_list", + "named": true, + "fields": { + "local_const": { + "multiple": true, + "required": false, + "types": [ + { + "type": "::", + "named": false + }, + { + "type": "module_access", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_item", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "module_access", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + } + }, + { + "type": "apply_type", + "named": true, + "fields": { + "type_arguments": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_arguments", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_access", + "named": true + } + ] + } + }, + { + "type": "arg_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "assign_expression", + "named": true, + "fields": { + "lhs": { + "multiple": false, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + } + ] + }, + "rhs": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "at_bind", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "bind_list", + "named": true + }, + { + "type": "variable_identifier", + "named": true + } + ] + } + }, + { + "type": "binary_expression", + "named": true, + "fields": { + "lhs": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "operator": { + "multiple": false, + "required": true, + "types": [ + { + "type": "binary_operator", + "named": true + } + ] + }, + "rhs": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "bind_field", + "named": true, + "fields": { + "bind": { + "multiple": false, + "required": false, + "types": [ + { + "type": "bind_list", + "named": true + } + ] + }, + "field": { + "multiple": false, + "required": false, + "types": [ + { + "type": "bind_list", + "named": true + } + ] + } + } + }, + { + "type": "bind_fields", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "bind_named_fields", + "named": true + }, + { + "type": "bind_positional_fields", + "named": true + } + ] + } + }, + { + "type": "bind_list", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "at_bind", + "named": true + }, + { + "type": "bind_unpack", + "named": true + }, + { + "type": "bind_var", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "comma_bind_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "mut_bind_var", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "or_bind_list", + "named": true + } + ] + } + }, + { + "type": "bind_named_fields", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "bind_field", + "named": true + }, + { + "type": "mut_bind_field", + "named": true + } + ] + } + }, + { + "type": "bind_positional_fields", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "bind_field", + "named": true + }, + { + "type": "mut_bind_field", + "named": true + } + ] + } + }, + { + "type": "bind_unpack", + "named": true, + "fields": { + "bind_fields": { + "multiple": false, + "required": false, + "types": [ + { + "type": "bind_fields", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name_expression", + "named": true + } + ] + } + }, + { + "type": "bind_var", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "variable_identifier", + "named": true + } + ] + } + }, + { + "type": "block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "block_item", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "use_declaration", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "block_identifier", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "label", + "named": true + } + ] + } + }, + { + "type": "block_item", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "let_statement", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "bool_literal", + "named": true, + "fields": {} + }, + { + "type": "borrow_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "imm_ref", + "named": true + }, + { + "type": "mut_ref", + "named": true + } + ] + } + }, + { + "type": "break_expression", + "named": true, + "fields": { + "break": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "label": { + "multiple": false, + "required": false, + "types": [ + { + "type": "label", + "named": true + } + ] + } + } + }, + { + "type": "call_expression", + "named": true, + "fields": { + "args": { + "multiple": false, + "required": true, + "types": [ + { + "type": "arg_list", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name_expression", + "named": true + } + ] + } + }, + { + "type": "cast_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "ty": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "comma_bind_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "at_bind", + "named": true + }, + { + "type": "bind_unpack", + "named": true + }, + { + "type": "bind_var", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "mut_bind_var", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + } + }, + { + "type": "condition_kind", + "named": true, + "fields": {} + }, + { + "type": "condition_properties", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "spec_property", + "named": true + } + ] + } + }, + { + "type": "constant", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant_identifier", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "continue_expression", + "named": true, + "fields": { + "label": { + "multiple": false, + "required": false, + "types": [ + { + "type": "label", + "named": true + } + ] + } + } + }, + { + "type": "datatype_fields", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "named_fields", + "named": true + }, + { + "type": "positional_fields", + "named": true + } + ] + } + }, + { + "type": "dereference_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "dot_expression", + "named": true, + "fields": { + "access": { + "multiple": false, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + } + ] + }, + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + } + ] + } + } + }, + { + "type": "enum_definition", + "named": true, + "fields": { + "ability_declarations": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ability_decls", + "named": true + } + ] + }, + "enum_variants": { + "multiple": false, + "required": true, + "types": [ + { + "type": "enum_variants", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "enum_identifier", + "named": true + } + ] + }, + "postfix_ability_declarations": { + "multiple": false, + "required": false, + "types": [ + { + "type": "postfix_ability_decls", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "enum_variants", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "variant", + "named": true + } + ] + } + }, + { + "type": "exp_field", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "field": { + "multiple": false, + "required": true, + "types": [ + { + "type": "field_identifier", + "named": true + } + ] + } + } + }, + { + "type": "expression_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "field_annotation", + "named": true, + "fields": { + "field": { + "multiple": false, + "required": true, + "types": [ + { + "type": "field_identifier", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "field_initialize_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "exp_field", + "named": true + } + ] + } + }, + { + "type": "friend_access", + "named": true, + "fields": { + "fully_qualified_module": { + "multiple": false, + "required": false, + "types": [ + { + "type": "module_identity", + "named": true + } + ] + }, + "local_module": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + } + }, + { + "type": "friend_declaration", + "named": true, + "fields": { + "module": { + "multiple": false, + "required": true, + "types": [ + { + "type": "friend_access", + "named": true + } + ] + } + } + }, + { + "type": "function_definition", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ret_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "modifier", + "named": true + } + ] + } + }, + { + "type": "function_parameter", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "variable_identifier", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "function_parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "function_parameter", + "named": true + }, + { + "type": "mut_function_parameter", + "named": true + } + ] + } + }, + { + "type": "function_type", + "named": true, + "fields": { + "param_types": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_type_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "function_type_parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "identified_expression", + "named": true, + "fields": { + "expression_id": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block_identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "identifier", + "named": true, + "fields": {} + }, + { + "type": "if_expression", + "named": true, + "fields": { + "eb": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "ef": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "et": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "imm_ref", + "named": true, + "fields": {} + }, + { + "type": "index_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + } + ] + }, + "idx": { + "multiple": true, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "label", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + { + "type": "lambda_binding", + "named": true, + "fields": { + "bind": { + "multiple": false, + "required": false, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "at_bind", + "named": true + }, + { + "type": "bind_unpack", + "named": true + }, + { + "type": "bind_var", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "mut_bind_var", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + }, + "ty": { + "multiple": false, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "comma_bind_list", + "named": true + } + ] + } + }, + { + "type": "lambda_bindings", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "lambda_binding", + "named": true + } + ] + } + }, + { + "type": "lambda_expression", + "named": true, + "fields": { + "bindings": { + "multiple": false, + "required": true, + "types": [ + { + "type": "lambda_bindings", + "named": true + } + ] + }, + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "let_statement", + "named": true, + "fields": { + "binds": { + "multiple": false, + "required": true, + "types": [ + { + "type": "bind_list", + "named": true + } + ] + }, + "expr": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + } + }, + { + "type": "loop_expression", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "macro_call_expression", + "named": true, + "fields": { + "access": { + "multiple": false, + "required": true, + "types": [ + { + "type": "macro_module_access", + "named": true + } + ] + }, + "args": { + "multiple": false, + "required": true, + "types": [ + { + "type": "arg_list", + "named": true + } + ] + }, + "type_arguments": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_arguments", + "named": true + } + ] + } + } + }, + { + "type": "macro_function_definition", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ret_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "modifier", + "named": true + } + ] + } + }, + { + "type": "macro_module_access", + "named": true, + "fields": { + "access": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_access", + "named": true + } + ] + } + } + }, + { + "type": "match_arm", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "bind_list", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_condition", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "match_condition", + "named": true, + "fields": { + "condition": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "match_expression", + "named": true, + "fields": { + "match_scrutiny": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "match_arm", + "named": true + } + ] + } + }, + { + "type": "modifier", + "named": true, + "fields": {} + }, + { + "type": "module_access", + "named": true, + "fields": { + "enum_name": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "member": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "module": { + "multiple": false, + "required": false, + "types": [ + { + "type": "module_identifier", + "named": true + } + ] + }, + "type_arguments": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_arguments", + "named": true + } + ] + }, + "variant": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "module_identity", + "named": true + } + ] + } + }, + { + "type": "module_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "constant", + "named": true + }, + { + "type": "enum_definition", + "named": true + }, + { + "type": "friend_declaration", + "named": true + }, + { + "type": "function_definition", + "named": true + }, + { + "type": "macro_function_definition", + "named": true + }, + { + "type": "native_function_definition", + "named": true + }, + { + "type": "native_struct_definition", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "struct_definition", + "named": true + }, + { + "type": "use_declaration", + "named": true + } + ] + } + }, + { + "type": "module_definition", + "named": true, + "fields": { + "module_body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_body", + "named": true + } + ] + }, + "module_identity": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_identity", + "named": true + } + ] + } + } + }, + { + "type": "module_identity", + "named": true, + "fields": { + "address": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_identifier", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + }, + "module": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_identifier", + "named": true + } + ] + } + } + }, + { + "type": "move_or_copy_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "mut_bind_field", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "bind_field", + "named": true + } + ] + } + }, + { + "type": "mut_bind_var", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "bind_var", + "named": true + } + ] + } + }, + { + "type": "mut_function_parameter", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameter", + "named": true + } + ] + } + }, + { + "type": "mut_ref", + "named": true, + "fields": {} + }, + { + "type": "name_expression", + "named": true, + "fields": { + "access": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_access", + "named": true + } + ] + } + } + }, + { + "type": "named_fields", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "field_annotation", + "named": true + } + ] + } + }, + { + "type": "native_function_definition", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ret_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "modifier", + "named": true + } + ] + } + }, + { + "type": "native_spec_function", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "ret_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "native_struct_definition", + "named": true, + "fields": { + "ability_declarations": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ability_decls", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "struct_identifier", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "num_literal", + "named": true, + "fields": {} + }, + { + "type": "or_bind_list", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "at_bind", + "named": true + }, + { + "type": "bind_unpack", + "named": true + }, + { + "type": "bind_var", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "mut_bind_var", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + } + }, + { + "type": "pack_expression", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "field_initialize_list", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name_expression", + "named": true + } + ] + } + }, + { + "type": "positional_fields", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "postfix_ability_decls", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "ability", + "named": true + } + ] + } + }, + { + "type": "primitive_type", + "named": true, + "fields": {} + }, + { + "type": "quantifier_binding", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "apply_type", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "quantifier_bindings", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "quantifier_binding", + "named": true + } + ] + } + }, + { + "type": "quantifier_expression", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_bindings", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "ref_type", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "imm_ref", + "named": true + }, + { + "type": "mut_ref", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "ret_type", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "return_expression", + "named": true, + "fields": { + "label": { + "multiple": false, + "required": false, + "types": [ + { + "type": "label", + "named": true + } + ] + }, + "return": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "source_file", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "module_definition", + "named": true + } + ] + } + }, + { + "type": "spec_apply", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "spec_apply_pattern", + "named": true + } + ] + } + }, + { + "type": "spec_apply_pattern", + "named": true, + "fields": { + "name_pattern": { + "multiple": false, + "required": true, + "types": [ + { + "type": "spec_apply_name_pattern", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "spec_block", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": false, + "types": [ + { + "type": "spec_body", + "named": true + } + ] + }, + "target": { + "multiple": false, + "required": false, + "types": [ + { + "type": "_spec_block_target", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "native_spec_function", + "named": true + }, + { + "type": "uninterpreted_spec_function", + "named": true + }, + { + "type": "usual_spec_function", + "named": true + } + ] + } + }, + { + "type": "spec_block_target_schema", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "struct_identifier", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "spec_body", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "native_spec_function", + "named": true + }, + { + "type": "spec_apply", + "named": true + }, + { + "type": "spec_condition", + "named": true + }, + { + "type": "spec_include", + "named": true + }, + { + "type": "spec_invariant", + "named": true + }, + { + "type": "spec_let", + "named": true + }, + { + "type": "spec_pragma", + "named": true + }, + { + "type": "spec_variable", + "named": true + }, + { + "type": "uninterpreted_spec_function", + "named": true + }, + { + "type": "use_declaration", + "named": true + }, + { + "type": "usual_spec_function", + "named": true + } + ] + } + }, + { + "type": "spec_condition", + "named": true, + "fields": { + "additional_exp": { + "multiple": true, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "condition_properties": { + "multiple": false, + "required": false, + "types": [ + { + "type": "condition_properties", + "named": true + } + ] + }, + "expr": { + "multiple": false, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "kind": { + "multiple": false, + "required": true, + "types": [ + { + "type": "condition_kind", + "named": true + } + ] + } + } + }, + { + "type": "spec_include", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "spec_invariant", + "named": true, + "fields": { + "condition_properties": { + "multiple": false, + "required": false, + "types": [ + { + "type": "condition_properties", + "named": true + } + ] + }, + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "kind": { + "multiple": false, + "required": true, + "types": [ + { + "type": "condition_kind", + "named": true + } + ] + }, + "modifier": { + "multiple": false, + "required": false, + "types": [ + { + "type": "invariant_modifier", + "named": true + } + ] + } + } + }, + { + "type": "spec_let", + "named": true, + "fields": { + "def": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + } + } + }, + { + "type": "spec_pragma", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "spec_property", + "named": true + } + ] + } + }, + { + "type": "spec_property", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "address_literal", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + } + }, + { + "type": "spec_variable", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "struct_definition", + "named": true, + "fields": { + "ability_declarations": { + "multiple": false, + "required": false, + "types": [ + { + "type": "ability_decls", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "struct_identifier", + "named": true + } + ] + }, + "postfix_ability_declarations": { + "multiple": false, + "required": false, + "types": [ + { + "type": "postfix_ability_decls", + "named": true + } + ] + }, + "struct_fields": { + "multiple": false, + "required": true, + "types": [ + { + "type": "datatype_fields", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "tuple_type", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "type_arguments", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "apply_type", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "tuple_type", + "named": true + } + ] + } + }, + { + "type": "type_parameter", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "ability", + "named": true + }, + { + "type": "type_parameter_identifier", + "named": true + } + ] + } + }, + { + "type": "type_parameters", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_parameter", + "named": true + } + ] + } + }, + { + "type": "unary_expression", + "named": true, + "fields": { + "expr": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "op": { + "multiple": false, + "required": true, + "types": [ + { + "type": "unary_op", + "named": true + } + ] + } + } + }, + { + "type": "unary_op", + "named": true, + "fields": {} + }, + { + "type": "uninterpreted_spec_function", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "ret_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "unit_expression", + "named": true, + "fields": {} + }, + { + "type": "use_declaration", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "use_fun", + "named": true + }, + { + "type": "use_module", + "named": true + }, + { + "type": "use_module_member", + "named": true + }, + { + "type": "use_module_members", + "named": true + } + ] + } + }, + { + "type": "use_fun", + "named": true, + "fields": { + "alias": { + "multiple": true, + "required": true, + "types": [ + { + "type": ".", + "named": false + }, + { + "type": "function_identifier", + "named": true + }, + { + "type": "module_access", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_access", + "named": true + } + ] + } + }, + { + "type": "use_member", + "named": true, + "fields": { + "alias": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "member": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "module": { + "multiple": false, + "required": false, + "types": [ + { + "type": "identifier", + "named": true + } + ] + }, + "use_member": { + "multiple": true, + "required": false, + "types": [ + { + "type": "use_member", + "named": true + } + ] + } + } + }, + { + "type": "use_module", + "named": true, + "fields": { + "alias": { + "multiple": false, + "required": false, + "types": [ + { + "type": "module_identifier", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_identity", + "named": true + } + ] + } + }, + { + "type": "use_module_member", + "named": true, + "fields": { + "use_member": { + "multiple": false, + "required": true, + "types": [ + { + "type": "use_member", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "module_identity", + "named": true + } + ] + } + }, + { + "type": "use_module_members", + "named": true, + "fields": { + "address": { + "multiple": false, + "required": false, + "types": [ + { + "type": "module_identifier", + "named": true + }, + { + "type": "num_literal", + "named": true + } + ] + }, + "use_member": { + "multiple": true, + "required": true, + "types": [ + { + "type": "use_member", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "module_identity", + "named": true + } + ] + } + }, + { + "type": "usual_spec_function", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_identifier", + "named": true + } + ] + }, + "parameters": { + "multiple": false, + "required": true, + "types": [ + { + "type": "function_parameters", + "named": true + } + ] + }, + "return_type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "ret_type", + "named": true + } + ] + }, + "type_parameters": { + "multiple": false, + "required": false, + "types": [ + { + "type": "type_parameters", + "named": true + } + ] + } + } + }, + { + "type": "variant", + "named": true, + "fields": { + "fields": { + "multiple": false, + "required": false, + "types": [ + { + "type": "datatype_fields", + "named": true + } + ] + }, + "variant_name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "variant_identifier", + "named": true + } + ] + } + } + }, + { + "type": "vector_expression", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "apply_type", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "function_type", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "primitive_type", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "ref_type", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "tuple_type", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + }, + { + "type": "while_expression", + "named": true, + "fields": { + "body": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + }, + "eb": { + "multiple": false, + "required": true, + "types": [ + { + "type": "abort_expression", + "named": true + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "annotation_expression", + "named": true + }, + { + "type": "assign_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "block", + "named": true + }, + { + "type": "bool_literal", + "named": true + }, + { + "type": "borrow_expression", + "named": true + }, + { + "type": "break_expression", + "named": true + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "call_expression", + "named": true + }, + { + "type": "cast_expression", + "named": true + }, + { + "type": "continue_expression", + "named": true + }, + { + "type": "dereference_expression", + "named": true + }, + { + "type": "dot_expression", + "named": true + }, + { + "type": "expression_list", + "named": true + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "identified_expression", + "named": true + }, + { + "type": "if_expression", + "named": true + }, + { + "type": "index_expression", + "named": true + }, + { + "type": "lambda_expression", + "named": true + }, + { + "type": "loop_expression", + "named": true + }, + { + "type": "macro_call_expression", + "named": true + }, + { + "type": "match_expression", + "named": true + }, + { + "type": "move_or_copy_expression", + "named": true + }, + { + "type": "name_expression", + "named": true + }, + { + "type": "num_literal", + "named": true + }, + { + "type": "pack_expression", + "named": true + }, + { + "type": "quantifier_expression", + "named": true + }, + { + "type": "return_expression", + "named": true + }, + { + "type": "spec_block", + "named": true + }, + { + "type": "unary_expression", + "named": true + }, + { + "type": "unit_expression", + "named": true + }, + { + "type": "vector_expression", + "named": true + }, + { + "type": "while_expression", + "named": true + } + ] + } + } + }, + { + "type": "!", + "named": false + }, + { + "type": "#[", + "named": false + }, + { + "type": "$", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "'", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "->", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "..", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "::", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "=>", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": "@", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "abort", + "named": false + }, + { + "type": "address", + "named": false + }, + { + "type": "address_literal", + "named": true + }, + { + "type": "apply", + "named": false + }, + { + "type": "as", + "named": false + }, + { + "type": "assert", + "named": false + }, + { + "type": "assume", + "named": false + }, + { + "type": "binary_operator", + "named": true + }, + { + "type": "block_comment", + "named": true + }, + { + "type": "bool", + "named": false + }, + { + "type": "break", + "named": false + }, + { + "type": "byte_string_literal", + "named": true + }, + { + "type": "bytearray", + "named": false + }, + { + "type": "const", + "named": false + }, + { + "type": "constant_identifier", + "named": true + }, + { + "type": "continue", + "named": false + }, + { + "type": "copy", + "named": false + }, + { + "type": "decreases", + "named": false + }, + { + "type": "drop", + "named": false + }, + { + "type": "else", + "named": false + }, + { + "type": "ensures", + "named": false + }, + { + "type": "entry", + "named": false + }, + { + "type": "enum", + "named": false + }, + { + "type": "enum_identifier", + "named": true + }, + { + "type": "except", + "named": false + }, + { + "type": "false", + "named": false + }, + { + "type": "field_identifier", + "named": true + }, + { + "type": "friend", + "named": false + }, + { + "type": "fun", + "named": false + }, + { + "type": "function_identifier", + "named": true + }, + { + "type": "global", + "named": false + }, + { + "type": "has", + "named": false + }, + { + "type": "hex_string_literal", + "named": true + }, + { + "type": "if", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "include", + "named": false + }, + { + "type": "internal", + "named": false + }, + { + "type": "invariant_modifier", + "named": true + }, + { + "type": "key", + "named": false + }, + { + "type": "let", + "named": false + }, + { + "type": "line_comment", + "named": true + }, + { + "type": "local", + "named": false + }, + { + "type": "loop", + "named": false + }, + { + "type": "macro", + "named": false + }, + { + "type": "match", + "named": false + }, + { + "type": "module", + "named": false + }, + { + "type": "module_identifier", + "named": true + }, + { + "type": "move", + "named": false + }, + { + "type": "mut", + "named": false + }, + { + "type": "native", + "named": false + }, + { + "type": "newline", + "named": true + }, + { + "type": "package", + "named": false + }, + { + "type": "phantom", + "named": false + }, + { + "type": "post", + "named": false + }, + { + "type": "pragma", + "named": false + }, + { + "type": "public", + "named": false + }, + { + "type": "return", + "named": false + }, + { + "type": "schema", + "named": false + }, + { + "type": "signer", + "named": false + }, + { + "type": "spec", + "named": false + }, + { + "type": "spec_apply_name_pattern", + "named": true + }, + { + "type": "spec_block_target_module", + "named": true + }, + { + "type": "store", + "named": false + }, + { + "type": "struct", + "named": false + }, + { + "type": "struct_identifier", + "named": true + }, + { + "type": "succeeds_if", + "named": false + }, + { + "type": "to", + "named": false + }, + { + "type": "true", + "named": false + }, + { + "type": "type_identifier", + "named": true + }, + { + "type": "type_parameter_identifier", + "named": true + }, + { + "type": "u128", + "named": false + }, + { + "type": "u16", + "named": false + }, + { + "type": "u256", + "named": false + }, + { + "type": "u32", + "named": false + }, + { + "type": "u64", + "named": false + }, + { + "type": "u8", + "named": false + }, + { + "type": "use", + "named": false + }, + { + "type": "variable_identifier", + "named": true + }, + { + "type": "variant_identifier", + "named": true + }, + { + "type": "vector<", + "named": false + }, + { + "type": "vector[", + "named": false + }, + { + "type": "where", + "named": false + }, + { + "type": "while", + "named": false + }, + { + "type": "with", + "named": false + }, + { + "type": "{", + "named": false + }, + { + "type": "|", + "named": false + }, + { + "type": "}", + "named": false + } +] \ No newline at end of file diff --git a/external-crates/move/tooling/tree-sitter/src/parser.c b/external-crates/move/tooling/tree-sitter/src/parser.c new file mode 100644 index 0000000000000..566a553ed696f --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/src/parser.c @@ -0,0 +1,78797 @@ +#include "tree_sitter/parser.h" + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +#define LANGUAGE_VERSION 14 +#define STATE_COUNT 1564 +#define LARGE_STATE_COUNT 237 +#define SYMBOL_COUNT 309 +#define ALIAS_COUNT 11 +#define TOKEN_COUNT 125 +#define EXTERNAL_TOKEN_COUNT 0 +#define FIELD_COUNT 60 +#define MAX_ALIAS_SEQUENCE_LENGTH 11 +#define PRODUCTION_ID_COUNT 164 + +enum ts_symbol_identifiers { + sym_identifier = 1, + anon_sym_public = 2, + anon_sym_use = 3, + anon_sym_SEMI = 4, + anon_sym_fun = 5, + anon_sym_as = 6, + anon_sym_DOT = 7, + anon_sym_COLON_COLON = 8, + anon_sym_LBRACE = 9, + anon_sym_COMMA = 10, + anon_sym_RBRACE = 11, + anon_sym_friend = 12, + anon_sym_LPAREN = 13, + anon_sym_package = 14, + anon_sym_RPAREN = 15, + anon_sym_entry = 16, + anon_sym_native = 17, + anon_sym_copy = 18, + anon_sym_drop = 19, + anon_sym_store = 20, + anon_sym_key = 21, + anon_sym_module = 22, + anon_sym_POUND_LBRACK = 23, + anon_sym_RBRACK = 24, + anon_sym_EQ = 25, + anon_sym_const = 26, + anon_sym_COLON = 27, + anon_sym_enum = 28, + anon_sym_has = 29, + anon_sym_struct = 30, + anon_sym_macro = 31, + anon_sym_spec = 32, + anon_sym_schema = 33, + anon_sym_let = 34, + anon_sym_post = 35, + anon_sym_assert = 36, + anon_sym_assume = 37, + anon_sym_decreases = 38, + anon_sym_ensures = 39, + anon_sym_succeeds_if = 40, + anon_sym_requires = 41, + anon_sym_aborts_if = 42, + anon_sym_with = 43, + anon_sym_aborts_with = 44, + anon_sym_modifies = 45, + anon_sym_invariant = 46, + anon_sym_update = 47, + anon_sym_pack = 48, + anon_sym_unpack = 49, + anon_sym_LBRACK = 50, + anon_sym_include = 51, + anon_sym_apply = 52, + anon_sym_to = 53, + anon_sym_except = 54, + anon_sym_internal = 55, + sym_spec_apply_name_pattern = 56, + anon_sym_pragma = 57, + anon_sym_global = 58, + anon_sym_local = 59, + anon_sym_u8 = 60, + anon_sym_u16 = 61, + anon_sym_u32 = 62, + anon_sym_u64 = 63, + anon_sym_u128 = 64, + anon_sym_u256 = 65, + anon_sym_bool = 66, + anon_sym_address = 67, + anon_sym_signer = 68, + anon_sym_bytearray = 69, + anon_sym_DOLLAR = 70, + anon_sym_AT = 71, + anon_sym_BANG = 72, + anon_sym_LT = 73, + anon_sym_GT = 74, + anon_sym_DASH_GT = 75, + anon_sym_PIPE = 76, + anon_sym_mut = 77, + anon_sym_phantom = 78, + anon_sym_PLUS = 79, + anon_sym_vector_LBRACK = 80, + anon_sym_vector_LT = 81, + anon_sym_where = 82, + anon_sym_in = 83, + anon_sym_if = 84, + anon_sym_else = 85, + anon_sym_while = 86, + anon_sym_loop = 87, + anon_sym_return = 88, + anon_sym_abort = 89, + anon_sym_match = 90, + anon_sym_EQ_GT = 91, + anon_sym_EQ_EQ_GT = 92, + anon_sym_PIPE_PIPE = 93, + anon_sym_AMP_AMP = 94, + anon_sym_EQ_EQ = 95, + anon_sym_BANG_EQ = 96, + anon_sym_LT_EQ = 97, + anon_sym_GT_EQ = 98, + anon_sym_DOT_DOT = 99, + anon_sym_CARET = 100, + anon_sym_AMP = 101, + anon_sym_LT_LT = 102, + anon_sym_GT_GT = 103, + anon_sym_DASH = 104, + anon_sym_STAR = 105, + anon_sym_SLASH = 106, + anon_sym_PERCENT = 107, + anon_sym_move = 108, + anon_sym_break = 109, + anon_sym_continue = 110, + anon_sym_SQUOTE = 111, + sym_address_literal = 112, + anon_sym_true = 113, + anon_sym_false = 114, + aux_sym_num_literal_token1 = 115, + aux_sym_num_literal_token2 = 116, + sym_hex_string_literal = 117, + sym_byte_string_literal = 118, + sym__forall = 119, + sym__exists = 120, + sym_line_comment = 121, + sym_newline = 122, + sym__whitespace = 123, + sym_block_comment = 124, + sym_source_file = 125, + sym_use_declaration = 126, + sym_use_fun = 127, + sym_use_module = 128, + sym_use_module_member = 129, + sym_use_module_members = 130, + sym_use_member = 131, + sym_friend_declaration = 132, + sym_modifier = 133, + sym_ability = 134, + sym_module_definition = 135, + sym_module_body = 136, + sym_annotation = 137, + sym_annotation_expr = 138, + sym_annotation_list = 139, + sym_annotation_item = 140, + sym_constant = 141, + sym_datatype_fields = 142, + sym_positional_fields = 143, + sym_named_fields = 144, + sym__enum_item = 145, + sym_enum_definition = 146, + sym__enum_signature = 147, + sym_enum_variants = 148, + sym_variant = 149, + sym__struct_item = 150, + sym_native_struct_definition = 151, + sym_struct_definition = 152, + sym_field_annotation = 153, + sym_ability_decls = 154, + sym_postfix_ability_decls = 155, + sym__struct_signature = 156, + sym__function_item = 157, + sym_native_function_definition = 158, + sym_macro_function_definition = 159, + sym__macro_signature = 160, + sym_function_definition = 161, + sym__function_signature = 162, + sym_function_parameters = 163, + sym_spec_block = 164, + sym__spec_block_target = 165, + sym_spec_block_target_schema = 166, + sym_spec_body = 167, + sym__spec_block_memeber = 168, + sym_spec_let = 169, + sym_spec_condition = 170, + sym__spec_condition_kind = 171, + sym__spec_condition = 172, + sym__spec_abort_if = 173, + sym__spec_abort_with_or_modifies = 174, + sym_spec_invariant = 175, + sym_condition_properties = 176, + sym_spec_include = 177, + sym_spec_apply = 178, + sym_spec_apply_pattern = 179, + sym_spec_pragma = 180, + sym_spec_property = 181, + sym_spec_variable = 182, + sym__spec_function = 183, + sym_uninterpreted_spec_function = 184, + sym_native_spec_function = 185, + sym_usual_spec_function = 186, + sym__spec_function_signature = 187, + sym__type = 188, + sym_apply_type = 189, + sym_ref_type = 190, + sym_tuple_type = 191, + sym_primitive_type = 192, + sym_ret_type = 193, + sym_module_access = 194, + sym_friend_access = 195, + sym_macro_module_access = 196, + sym_module_identity = 197, + sym_type_arguments = 198, + sym_function_type = 199, + sym_function_type_parameters = 200, + sym_mut_function_parameter = 201, + sym_function_parameter = 202, + sym_type_parameters = 203, + sym_type_parameter = 204, + sym_block = 205, + sym_block_item = 206, + sym_let_statement = 207, + sym__expression = 208, + sym_identified_expression = 209, + sym_vector_expression = 210, + sym_quantifier_expression = 211, + sym_quantifier_bindings = 212, + sym_quantifier_binding = 213, + sym_lambda_expression = 214, + sym_lambda_binding = 215, + sym_lambda_bindings = 216, + sym_if_expression = 217, + sym_while_expression = 218, + sym_loop_expression = 219, + sym_return_expression = 220, + sym_abort_expression = 221, + sym_match_expression = 222, + sym__match_body = 223, + sym_match_condition = 224, + sym_match_arm = 225, + sym_call_expression = 226, + sym_macro_call_expression = 227, + sym_pack_expression = 228, + sym_name_expression = 229, + sym_assign_expression = 230, + sym_binary_expression = 231, + sym__unary_expression = 232, + sym_unary_expression = 233, + sym_unary_op = 234, + sym_dereference_expression = 235, + sym_borrow_expression = 236, + sym_move_or_copy_expression = 237, + sym__reference = 238, + sym__expression_term = 239, + sym_break_expression = 240, + sym_continue_expression = 241, + sym_field_initialize_list = 242, + sym_arg_list = 243, + sym_expression_list = 244, + sym_unit_expression = 245, + sym_cast_expression = 246, + sym_annotation_expression = 247, + sym_dot_expression = 248, + sym_index_expression = 249, + sym_exp_field = 250, + sym_bind_list = 251, + sym_at_bind = 252, + sym_comma_bind_list = 253, + sym_or_bind_list = 254, + sym_mut_bind_var = 255, + sym__bind = 256, + sym_bind_unpack = 257, + sym_bind_fields = 258, + sym__spread_operator = 259, + sym_bind_positional_fields = 260, + sym_bind_named_fields = 261, + sym_mut_bind_field = 262, + sym_bind_field = 263, + sym__literal_value = 264, + sym_imm_ref = 265, + sym_mut_ref = 266, + sym_block_identifier = 267, + sym_label = 268, + sym_bool_literal = 269, + sym_num_literal = 270, + sym__module_identifier = 271, + sym__struct_identifier = 272, + sym__enum_identifier = 273, + sym__variant_identifier = 274, + sym__function_identifier = 275, + sym__variable_identifier = 276, + sym__field_identifier = 277, + sym__type_parameter_identifier = 278, + sym__reserved_identifier = 279, + aux_sym_source_file_repeat1 = 280, + aux_sym_use_module_members_repeat1 = 281, + aux_sym_module_body_repeat1 = 282, + aux_sym_annotation_repeat1 = 283, + aux_sym_annotation_list_repeat1 = 284, + aux_sym_positional_fields_repeat1 = 285, + aux_sym_named_fields_repeat1 = 286, + aux_sym_enum_variants_repeat1 = 287, + aux_sym_ability_decls_repeat1 = 288, + aux_sym_function_parameters_repeat1 = 289, + aux_sym_spec_body_repeat1 = 290, + aux_sym_spec_body_repeat2 = 291, + aux_sym__spec_abort_with_or_modifies_repeat1 = 292, + aux_sym_condition_properties_repeat1 = 293, + aux_sym_spec_apply_repeat1 = 294, + aux_sym_type_arguments_repeat1 = 295, + aux_sym_type_parameters_repeat1 = 296, + aux_sym_type_parameter_repeat1 = 297, + aux_sym_block_repeat1 = 298, + aux_sym_vector_expression_repeat1 = 299, + aux_sym_quantifier_bindings_repeat1 = 300, + aux_sym_lambda_bindings_repeat1 = 301, + aux_sym__match_body_repeat1 = 302, + aux_sym_field_initialize_list_repeat1 = 303, + aux_sym_expression_list_repeat1 = 304, + aux_sym_index_expression_repeat1 = 305, + aux_sym_comma_bind_list_repeat1 = 306, + aux_sym_or_bind_list_repeat1 = 307, + aux_sym_bind_positional_fields_repeat1 = 308, + alias_sym_bind_var = 309, + alias_sym_constant_identifier = 310, + alias_sym_enum_identifier = 311, + alias_sym_field_identifier = 312, + alias_sym_function_identifier = 313, + alias_sym_module_identifier = 314, + alias_sym_spec_block_target_module = 315, + alias_sym_struct_identifier = 316, + alias_sym_type_parameter_identifier = 317, + alias_sym_variable_identifier = 318, + alias_sym_variant_identifier = 319, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [sym_identifier] = "identifier", + [anon_sym_public] = "public", + [anon_sym_use] = "use", + [anon_sym_SEMI] = ";", + [anon_sym_fun] = "fun", + [anon_sym_as] = "as", + [anon_sym_DOT] = ".", + [anon_sym_COLON_COLON] = "::", + [anon_sym_LBRACE] = "{", + [anon_sym_COMMA] = ",", + [anon_sym_RBRACE] = "}", + [anon_sym_friend] = "friend", + [anon_sym_LPAREN] = "(", + [anon_sym_package] = "package", + [anon_sym_RPAREN] = ")", + [anon_sym_entry] = "entry", + [anon_sym_native] = "native", + [anon_sym_copy] = "copy", + [anon_sym_drop] = "drop", + [anon_sym_store] = "store", + [anon_sym_key] = "key", + [anon_sym_module] = "module", + [anon_sym_POUND_LBRACK] = "#[", + [anon_sym_RBRACK] = "]", + [anon_sym_EQ] = "=", + [anon_sym_const] = "const", + [anon_sym_COLON] = ":", + [anon_sym_enum] = "enum", + [anon_sym_has] = "has", + [anon_sym_struct] = "struct", + [anon_sym_macro] = "macro", + [anon_sym_spec] = "spec", + [anon_sym_schema] = "schema", + [anon_sym_let] = "let", + [anon_sym_post] = "post", + [anon_sym_assert] = "assert", + [anon_sym_assume] = "assume", + [anon_sym_decreases] = "decreases", + [anon_sym_ensures] = "ensures", + [anon_sym_succeeds_if] = "succeeds_if", + [anon_sym_requires] = "condition_kind", + [anon_sym_aborts_if] = "condition_kind", + [anon_sym_with] = "with", + [anon_sym_aborts_with] = "condition_kind", + [anon_sym_modifies] = "condition_kind", + [anon_sym_invariant] = "condition_kind", + [anon_sym_update] = "invariant_modifier", + [anon_sym_pack] = "invariant_modifier", + [anon_sym_unpack] = "invariant_modifier", + [anon_sym_LBRACK] = "[", + [anon_sym_include] = "include", + [anon_sym_apply] = "apply", + [anon_sym_to] = "to", + [anon_sym_except] = "except", + [anon_sym_internal] = "internal", + [sym_spec_apply_name_pattern] = "spec_apply_name_pattern", + [anon_sym_pragma] = "pragma", + [anon_sym_global] = "global", + [anon_sym_local] = "local", + [anon_sym_u8] = "u8", + [anon_sym_u16] = "u16", + [anon_sym_u32] = "u32", + [anon_sym_u64] = "u64", + [anon_sym_u128] = "u128", + [anon_sym_u256] = "u256", + [anon_sym_bool] = "bool", + [anon_sym_address] = "address", + [anon_sym_signer] = "signer", + [anon_sym_bytearray] = "bytearray", + [anon_sym_DOLLAR] = "$", + [anon_sym_AT] = "@", + [anon_sym_BANG] = "!", + [anon_sym_LT] = "<", + [anon_sym_GT] = ">", + [anon_sym_DASH_GT] = "->", + [anon_sym_PIPE] = "|", + [anon_sym_mut] = "mut", + [anon_sym_phantom] = "phantom", + [anon_sym_PLUS] = "+", + [anon_sym_vector_LBRACK] = "vector[", + [anon_sym_vector_LT] = "vector<", + [anon_sym_where] = "where", + [anon_sym_in] = "in", + [anon_sym_if] = "if", + [anon_sym_else] = "else", + [anon_sym_while] = "while", + [anon_sym_loop] = "loop", + [anon_sym_return] = "return", + [anon_sym_abort] = "abort", + [anon_sym_match] = "match", + [anon_sym_EQ_GT] = "=>", + [anon_sym_EQ_EQ_GT] = "binary_operator", + [anon_sym_PIPE_PIPE] = "binary_operator", + [anon_sym_AMP_AMP] = "binary_operator", + [anon_sym_EQ_EQ] = "binary_operator", + [anon_sym_BANG_EQ] = "binary_operator", + [anon_sym_LT_EQ] = "binary_operator", + [anon_sym_GT_EQ] = "binary_operator", + [anon_sym_DOT_DOT] = "..", + [anon_sym_CARET] = "binary_operator", + [anon_sym_AMP] = "&", + [anon_sym_LT_LT] = "binary_operator", + [anon_sym_GT_GT] = "binary_operator", + [anon_sym_DASH] = "binary_operator", + [anon_sym_STAR] = "*", + [anon_sym_SLASH] = "binary_operator", + [anon_sym_PERCENT] = "binary_operator", + [anon_sym_move] = "move", + [anon_sym_break] = "break", + [anon_sym_continue] = "continue", + [anon_sym_SQUOTE] = "'", + [sym_address_literal] = "address_literal", + [anon_sym_true] = "true", + [anon_sym_false] = "false", + [aux_sym_num_literal_token1] = "num_literal_token1", + [aux_sym_num_literal_token2] = "num_literal_token2", + [sym_hex_string_literal] = "hex_string_literal", + [sym_byte_string_literal] = "byte_string_literal", + [sym__forall] = "_forall", + [sym__exists] = "_exists", + [sym_line_comment] = "line_comment", + [sym_newline] = "newline", + [sym__whitespace] = "_whitespace", + [sym_block_comment] = "block_comment", + [sym_source_file] = "source_file", + [sym_use_declaration] = "use_declaration", + [sym_use_fun] = "use_fun", + [sym_use_module] = "use_module", + [sym_use_module_member] = "use_module_member", + [sym_use_module_members] = "use_module_members", + [sym_use_member] = "use_member", + [sym_friend_declaration] = "friend_declaration", + [sym_modifier] = "modifier", + [sym_ability] = "ability", + [sym_module_definition] = "module_definition", + [sym_module_body] = "module_body", + [sym_annotation] = "annotation", + [sym_annotation_expr] = "annotation_expr", + [sym_annotation_list] = "annotation_list", + [sym_annotation_item] = "annotation_item", + [sym_constant] = "constant", + [sym_datatype_fields] = "datatype_fields", + [sym_positional_fields] = "positional_fields", + [sym_named_fields] = "named_fields", + [sym__enum_item] = "_enum_item", + [sym_enum_definition] = "enum_definition", + [sym__enum_signature] = "_enum_signature", + [sym_enum_variants] = "enum_variants", + [sym_variant] = "variant", + [sym__struct_item] = "_struct_item", + [sym_native_struct_definition] = "native_struct_definition", + [sym_struct_definition] = "struct_definition", + [sym_field_annotation] = "field_annotation", + [sym_ability_decls] = "ability_decls", + [sym_postfix_ability_decls] = "postfix_ability_decls", + [sym__struct_signature] = "_struct_signature", + [sym__function_item] = "_function_item", + [sym_native_function_definition] = "native_function_definition", + [sym_macro_function_definition] = "macro_function_definition", + [sym__macro_signature] = "_macro_signature", + [sym_function_definition] = "function_definition", + [sym__function_signature] = "_function_signature", + [sym_function_parameters] = "function_parameters", + [sym_spec_block] = "spec_block", + [sym__spec_block_target] = "_spec_block_target", + [sym_spec_block_target_schema] = "spec_block_target_schema", + [sym_spec_body] = "spec_body", + [sym__spec_block_memeber] = "_spec_block_memeber", + [sym_spec_let] = "spec_let", + [sym_spec_condition] = "spec_condition", + [sym__spec_condition_kind] = "condition_kind", + [sym__spec_condition] = "_spec_condition", + [sym__spec_abort_if] = "_spec_abort_if", + [sym__spec_abort_with_or_modifies] = "_spec_abort_with_or_modifies", + [sym_spec_invariant] = "spec_invariant", + [sym_condition_properties] = "condition_properties", + [sym_spec_include] = "spec_include", + [sym_spec_apply] = "spec_apply", + [sym_spec_apply_pattern] = "spec_apply_pattern", + [sym_spec_pragma] = "spec_pragma", + [sym_spec_property] = "spec_property", + [sym_spec_variable] = "spec_variable", + [sym__spec_function] = "_spec_function", + [sym_uninterpreted_spec_function] = "uninterpreted_spec_function", + [sym_native_spec_function] = "native_spec_function", + [sym_usual_spec_function] = "usual_spec_function", + [sym__spec_function_signature] = "_spec_function_signature", + [sym__type] = "_type", + [sym_apply_type] = "apply_type", + [sym_ref_type] = "ref_type", + [sym_tuple_type] = "tuple_type", + [sym_primitive_type] = "primitive_type", + [sym_ret_type] = "ret_type", + [sym_module_access] = "module_access", + [sym_friend_access] = "friend_access", + [sym_macro_module_access] = "macro_module_access", + [sym_module_identity] = "module_identity", + [sym_type_arguments] = "type_arguments", + [sym_function_type] = "function_type", + [sym_function_type_parameters] = "function_type_parameters", + [sym_mut_function_parameter] = "mut_function_parameter", + [sym_function_parameter] = "function_parameter", + [sym_type_parameters] = "type_parameters", + [sym_type_parameter] = "type_parameter", + [sym_block] = "block", + [sym_block_item] = "block_item", + [sym_let_statement] = "let_statement", + [sym__expression] = "_expression", + [sym_identified_expression] = "identified_expression", + [sym_vector_expression] = "vector_expression", + [sym_quantifier_expression] = "quantifier_expression", + [sym_quantifier_bindings] = "quantifier_bindings", + [sym_quantifier_binding] = "quantifier_binding", + [sym_lambda_expression] = "lambda_expression", + [sym_lambda_binding] = "lambda_binding", + [sym_lambda_bindings] = "lambda_bindings", + [sym_if_expression] = "if_expression", + [sym_while_expression] = "while_expression", + [sym_loop_expression] = "loop_expression", + [sym_return_expression] = "return_expression", + [sym_abort_expression] = "abort_expression", + [sym_match_expression] = "match_expression", + [sym__match_body] = "_match_body", + [sym_match_condition] = "match_condition", + [sym_match_arm] = "match_arm", + [sym_call_expression] = "call_expression", + [sym_macro_call_expression] = "macro_call_expression", + [sym_pack_expression] = "pack_expression", + [sym_name_expression] = "name_expression", + [sym_assign_expression] = "assign_expression", + [sym_binary_expression] = "binary_expression", + [sym__unary_expression] = "_unary_expression", + [sym_unary_expression] = "unary_expression", + [sym_unary_op] = "unary_op", + [sym_dereference_expression] = "dereference_expression", + [sym_borrow_expression] = "borrow_expression", + [sym_move_or_copy_expression] = "move_or_copy_expression", + [sym__reference] = "_reference", + [sym__expression_term] = "_expression_term", + [sym_break_expression] = "break_expression", + [sym_continue_expression] = "continue_expression", + [sym_field_initialize_list] = "field_initialize_list", + [sym_arg_list] = "arg_list", + [sym_expression_list] = "expression_list", + [sym_unit_expression] = "unit_expression", + [sym_cast_expression] = "cast_expression", + [sym_annotation_expression] = "annotation_expression", + [sym_dot_expression] = "dot_expression", + [sym_index_expression] = "index_expression", + [sym_exp_field] = "exp_field", + [sym_bind_list] = "bind_list", + [sym_at_bind] = "at_bind", + [sym_comma_bind_list] = "comma_bind_list", + [sym_or_bind_list] = "or_bind_list", + [sym_mut_bind_var] = "mut_bind_var", + [sym__bind] = "_bind", + [sym_bind_unpack] = "bind_unpack", + [sym_bind_fields] = "bind_fields", + [sym__spread_operator] = "_spread_operator", + [sym_bind_positional_fields] = "bind_positional_fields", + [sym_bind_named_fields] = "bind_named_fields", + [sym_mut_bind_field] = "mut_bind_field", + [sym_bind_field] = "bind_field", + [sym__literal_value] = "_literal_value", + [sym_imm_ref] = "imm_ref", + [sym_mut_ref] = "mut_ref", + [sym_block_identifier] = "block_identifier", + [sym_label] = "label", + [sym_bool_literal] = "bool_literal", + [sym_num_literal] = "num_literal", + [sym__module_identifier] = "_module_identifier", + [sym__struct_identifier] = "_struct_identifier", + [sym__enum_identifier] = "_enum_identifier", + [sym__variant_identifier] = "_variant_identifier", + [sym__function_identifier] = "_function_identifier", + [sym__variable_identifier] = "_variable_identifier", + [sym__field_identifier] = "_field_identifier", + [sym__type_parameter_identifier] = "_type_parameter_identifier", + [sym__reserved_identifier] = "identifier", + [aux_sym_source_file_repeat1] = "source_file_repeat1", + [aux_sym_use_module_members_repeat1] = "use_module_members_repeat1", + [aux_sym_module_body_repeat1] = "module_body_repeat1", + [aux_sym_annotation_repeat1] = "annotation_repeat1", + [aux_sym_annotation_list_repeat1] = "annotation_list_repeat1", + [aux_sym_positional_fields_repeat1] = "positional_fields_repeat1", + [aux_sym_named_fields_repeat1] = "named_fields_repeat1", + [aux_sym_enum_variants_repeat1] = "enum_variants_repeat1", + [aux_sym_ability_decls_repeat1] = "ability_decls_repeat1", + [aux_sym_function_parameters_repeat1] = "function_parameters_repeat1", + [aux_sym_spec_body_repeat1] = "spec_body_repeat1", + [aux_sym_spec_body_repeat2] = "spec_body_repeat2", + [aux_sym__spec_abort_with_or_modifies_repeat1] = "_spec_abort_with_or_modifies_repeat1", + [aux_sym_condition_properties_repeat1] = "condition_properties_repeat1", + [aux_sym_spec_apply_repeat1] = "spec_apply_repeat1", + [aux_sym_type_arguments_repeat1] = "type_arguments_repeat1", + [aux_sym_type_parameters_repeat1] = "type_parameters_repeat1", + [aux_sym_type_parameter_repeat1] = "type_parameter_repeat1", + [aux_sym_block_repeat1] = "block_repeat1", + [aux_sym_vector_expression_repeat1] = "vector_expression_repeat1", + [aux_sym_quantifier_bindings_repeat1] = "quantifier_bindings_repeat1", + [aux_sym_lambda_bindings_repeat1] = "lambda_bindings_repeat1", + [aux_sym__match_body_repeat1] = "_match_body_repeat1", + [aux_sym_field_initialize_list_repeat1] = "field_initialize_list_repeat1", + [aux_sym_expression_list_repeat1] = "expression_list_repeat1", + [aux_sym_index_expression_repeat1] = "index_expression_repeat1", + [aux_sym_comma_bind_list_repeat1] = "comma_bind_list_repeat1", + [aux_sym_or_bind_list_repeat1] = "or_bind_list_repeat1", + [aux_sym_bind_positional_fields_repeat1] = "bind_positional_fields_repeat1", + [alias_sym_bind_var] = "bind_var", + [alias_sym_constant_identifier] = "constant_identifier", + [alias_sym_enum_identifier] = "enum_identifier", + [alias_sym_field_identifier] = "field_identifier", + [alias_sym_function_identifier] = "function_identifier", + [alias_sym_module_identifier] = "module_identifier", + [alias_sym_spec_block_target_module] = "spec_block_target_module", + [alias_sym_struct_identifier] = "struct_identifier", + [alias_sym_type_parameter_identifier] = "type_parameter_identifier", + [alias_sym_variable_identifier] = "variable_identifier", + [alias_sym_variant_identifier] = "variant_identifier", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_identifier] = sym_identifier, + [anon_sym_public] = anon_sym_public, + [anon_sym_use] = anon_sym_use, + [anon_sym_SEMI] = anon_sym_SEMI, + [anon_sym_fun] = anon_sym_fun, + [anon_sym_as] = anon_sym_as, + [anon_sym_DOT] = anon_sym_DOT, + [anon_sym_COLON_COLON] = anon_sym_COLON_COLON, + [anon_sym_LBRACE] = anon_sym_LBRACE, + [anon_sym_COMMA] = anon_sym_COMMA, + [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_friend] = anon_sym_friend, + [anon_sym_LPAREN] = anon_sym_LPAREN, + [anon_sym_package] = anon_sym_package, + [anon_sym_RPAREN] = anon_sym_RPAREN, + [anon_sym_entry] = anon_sym_entry, + [anon_sym_native] = anon_sym_native, + [anon_sym_copy] = anon_sym_copy, + [anon_sym_drop] = anon_sym_drop, + [anon_sym_store] = anon_sym_store, + [anon_sym_key] = anon_sym_key, + [anon_sym_module] = anon_sym_module, + [anon_sym_POUND_LBRACK] = anon_sym_POUND_LBRACK, + [anon_sym_RBRACK] = anon_sym_RBRACK, + [anon_sym_EQ] = anon_sym_EQ, + [anon_sym_const] = anon_sym_const, + [anon_sym_COLON] = anon_sym_COLON, + [anon_sym_enum] = anon_sym_enum, + [anon_sym_has] = anon_sym_has, + [anon_sym_struct] = anon_sym_struct, + [anon_sym_macro] = anon_sym_macro, + [anon_sym_spec] = anon_sym_spec, + [anon_sym_schema] = anon_sym_schema, + [anon_sym_let] = anon_sym_let, + [anon_sym_post] = anon_sym_post, + [anon_sym_assert] = anon_sym_assert, + [anon_sym_assume] = anon_sym_assume, + [anon_sym_decreases] = anon_sym_decreases, + [anon_sym_ensures] = anon_sym_ensures, + [anon_sym_succeeds_if] = anon_sym_succeeds_if, + [anon_sym_requires] = anon_sym_requires, + [anon_sym_aborts_if] = anon_sym_requires, + [anon_sym_with] = anon_sym_with, + [anon_sym_aborts_with] = anon_sym_requires, + [anon_sym_modifies] = anon_sym_requires, + [anon_sym_invariant] = anon_sym_requires, + [anon_sym_update] = anon_sym_update, + [anon_sym_pack] = anon_sym_update, + [anon_sym_unpack] = anon_sym_update, + [anon_sym_LBRACK] = anon_sym_LBRACK, + [anon_sym_include] = anon_sym_include, + [anon_sym_apply] = anon_sym_apply, + [anon_sym_to] = anon_sym_to, + [anon_sym_except] = anon_sym_except, + [anon_sym_internal] = anon_sym_internal, + [sym_spec_apply_name_pattern] = sym_spec_apply_name_pattern, + [anon_sym_pragma] = anon_sym_pragma, + [anon_sym_global] = anon_sym_global, + [anon_sym_local] = anon_sym_local, + [anon_sym_u8] = anon_sym_u8, + [anon_sym_u16] = anon_sym_u16, + [anon_sym_u32] = anon_sym_u32, + [anon_sym_u64] = anon_sym_u64, + [anon_sym_u128] = anon_sym_u128, + [anon_sym_u256] = anon_sym_u256, + [anon_sym_bool] = anon_sym_bool, + [anon_sym_address] = anon_sym_address, + [anon_sym_signer] = anon_sym_signer, + [anon_sym_bytearray] = anon_sym_bytearray, + [anon_sym_DOLLAR] = anon_sym_DOLLAR, + [anon_sym_AT] = anon_sym_AT, + [anon_sym_BANG] = anon_sym_BANG, + [anon_sym_LT] = anon_sym_LT, + [anon_sym_GT] = anon_sym_GT, + [anon_sym_DASH_GT] = anon_sym_DASH_GT, + [anon_sym_PIPE] = anon_sym_PIPE, + [anon_sym_mut] = anon_sym_mut, + [anon_sym_phantom] = anon_sym_phantom, + [anon_sym_PLUS] = anon_sym_PLUS, + [anon_sym_vector_LBRACK] = anon_sym_vector_LBRACK, + [anon_sym_vector_LT] = anon_sym_vector_LT, + [anon_sym_where] = anon_sym_where, + [anon_sym_in] = anon_sym_in, + [anon_sym_if] = anon_sym_if, + [anon_sym_else] = anon_sym_else, + [anon_sym_while] = anon_sym_while, + [anon_sym_loop] = anon_sym_loop, + [anon_sym_return] = anon_sym_return, + [anon_sym_abort] = anon_sym_abort, + [anon_sym_match] = anon_sym_match, + [anon_sym_EQ_GT] = anon_sym_EQ_GT, + [anon_sym_EQ_EQ_GT] = anon_sym_EQ_EQ_GT, + [anon_sym_PIPE_PIPE] = anon_sym_EQ_EQ_GT, + [anon_sym_AMP_AMP] = anon_sym_EQ_EQ_GT, + [anon_sym_EQ_EQ] = anon_sym_EQ_EQ_GT, + [anon_sym_BANG_EQ] = anon_sym_EQ_EQ_GT, + [anon_sym_LT_EQ] = anon_sym_EQ_EQ_GT, + [anon_sym_GT_EQ] = anon_sym_EQ_EQ_GT, + [anon_sym_DOT_DOT] = anon_sym_DOT_DOT, + [anon_sym_CARET] = anon_sym_EQ_EQ_GT, + [anon_sym_AMP] = anon_sym_AMP, + [anon_sym_LT_LT] = anon_sym_EQ_EQ_GT, + [anon_sym_GT_GT] = anon_sym_EQ_EQ_GT, + [anon_sym_DASH] = anon_sym_EQ_EQ_GT, + [anon_sym_STAR] = anon_sym_STAR, + [anon_sym_SLASH] = anon_sym_EQ_EQ_GT, + [anon_sym_PERCENT] = anon_sym_EQ_EQ_GT, + [anon_sym_move] = anon_sym_move, + [anon_sym_break] = anon_sym_break, + [anon_sym_continue] = anon_sym_continue, + [anon_sym_SQUOTE] = anon_sym_SQUOTE, + [sym_address_literal] = sym_address_literal, + [anon_sym_true] = anon_sym_true, + [anon_sym_false] = anon_sym_false, + [aux_sym_num_literal_token1] = aux_sym_num_literal_token1, + [aux_sym_num_literal_token2] = aux_sym_num_literal_token2, + [sym_hex_string_literal] = sym_hex_string_literal, + [sym_byte_string_literal] = sym_byte_string_literal, + [sym__forall] = sym__forall, + [sym__exists] = sym__exists, + [sym_line_comment] = sym_line_comment, + [sym_newline] = sym_newline, + [sym__whitespace] = sym__whitespace, + [sym_block_comment] = sym_block_comment, + [sym_source_file] = sym_source_file, + [sym_use_declaration] = sym_use_declaration, + [sym_use_fun] = sym_use_fun, + [sym_use_module] = sym_use_module, + [sym_use_module_member] = sym_use_module_member, + [sym_use_module_members] = sym_use_module_members, + [sym_use_member] = sym_use_member, + [sym_friend_declaration] = sym_friend_declaration, + [sym_modifier] = sym_modifier, + [sym_ability] = sym_ability, + [sym_module_definition] = sym_module_definition, + [sym_module_body] = sym_module_body, + [sym_annotation] = sym_annotation, + [sym_annotation_expr] = sym_annotation_expr, + [sym_annotation_list] = sym_annotation_list, + [sym_annotation_item] = sym_annotation_item, + [sym_constant] = sym_constant, + [sym_datatype_fields] = sym_datatype_fields, + [sym_positional_fields] = sym_positional_fields, + [sym_named_fields] = sym_named_fields, + [sym__enum_item] = sym__enum_item, + [sym_enum_definition] = sym_enum_definition, + [sym__enum_signature] = sym__enum_signature, + [sym_enum_variants] = sym_enum_variants, + [sym_variant] = sym_variant, + [sym__struct_item] = sym__struct_item, + [sym_native_struct_definition] = sym_native_struct_definition, + [sym_struct_definition] = sym_struct_definition, + [sym_field_annotation] = sym_field_annotation, + [sym_ability_decls] = sym_ability_decls, + [sym_postfix_ability_decls] = sym_postfix_ability_decls, + [sym__struct_signature] = sym__struct_signature, + [sym__function_item] = sym__function_item, + [sym_native_function_definition] = sym_native_function_definition, + [sym_macro_function_definition] = sym_macro_function_definition, + [sym__macro_signature] = sym__macro_signature, + [sym_function_definition] = sym_function_definition, + [sym__function_signature] = sym__function_signature, + [sym_function_parameters] = sym_function_parameters, + [sym_spec_block] = sym_spec_block, + [sym__spec_block_target] = sym__spec_block_target, + [sym_spec_block_target_schema] = sym_spec_block_target_schema, + [sym_spec_body] = sym_spec_body, + [sym__spec_block_memeber] = sym__spec_block_memeber, + [sym_spec_let] = sym_spec_let, + [sym_spec_condition] = sym_spec_condition, + [sym__spec_condition_kind] = anon_sym_requires, + [sym__spec_condition] = sym__spec_condition, + [sym__spec_abort_if] = sym__spec_abort_if, + [sym__spec_abort_with_or_modifies] = sym__spec_abort_with_or_modifies, + [sym_spec_invariant] = sym_spec_invariant, + [sym_condition_properties] = sym_condition_properties, + [sym_spec_include] = sym_spec_include, + [sym_spec_apply] = sym_spec_apply, + [sym_spec_apply_pattern] = sym_spec_apply_pattern, + [sym_spec_pragma] = sym_spec_pragma, + [sym_spec_property] = sym_spec_property, + [sym_spec_variable] = sym_spec_variable, + [sym__spec_function] = sym__spec_function, + [sym_uninterpreted_spec_function] = sym_uninterpreted_spec_function, + [sym_native_spec_function] = sym_native_spec_function, + [sym_usual_spec_function] = sym_usual_spec_function, + [sym__spec_function_signature] = sym__spec_function_signature, + [sym__type] = sym__type, + [sym_apply_type] = sym_apply_type, + [sym_ref_type] = sym_ref_type, + [sym_tuple_type] = sym_tuple_type, + [sym_primitive_type] = sym_primitive_type, + [sym_ret_type] = sym_ret_type, + [sym_module_access] = sym_module_access, + [sym_friend_access] = sym_friend_access, + [sym_macro_module_access] = sym_macro_module_access, + [sym_module_identity] = sym_module_identity, + [sym_type_arguments] = sym_type_arguments, + [sym_function_type] = sym_function_type, + [sym_function_type_parameters] = sym_function_type_parameters, + [sym_mut_function_parameter] = sym_mut_function_parameter, + [sym_function_parameter] = sym_function_parameter, + [sym_type_parameters] = sym_type_parameters, + [sym_type_parameter] = sym_type_parameter, + [sym_block] = sym_block, + [sym_block_item] = sym_block_item, + [sym_let_statement] = sym_let_statement, + [sym__expression] = sym__expression, + [sym_identified_expression] = sym_identified_expression, + [sym_vector_expression] = sym_vector_expression, + [sym_quantifier_expression] = sym_quantifier_expression, + [sym_quantifier_bindings] = sym_quantifier_bindings, + [sym_quantifier_binding] = sym_quantifier_binding, + [sym_lambda_expression] = sym_lambda_expression, + [sym_lambda_binding] = sym_lambda_binding, + [sym_lambda_bindings] = sym_lambda_bindings, + [sym_if_expression] = sym_if_expression, + [sym_while_expression] = sym_while_expression, + [sym_loop_expression] = sym_loop_expression, + [sym_return_expression] = sym_return_expression, + [sym_abort_expression] = sym_abort_expression, + [sym_match_expression] = sym_match_expression, + [sym__match_body] = sym__match_body, + [sym_match_condition] = sym_match_condition, + [sym_match_arm] = sym_match_arm, + [sym_call_expression] = sym_call_expression, + [sym_macro_call_expression] = sym_macro_call_expression, + [sym_pack_expression] = sym_pack_expression, + [sym_name_expression] = sym_name_expression, + [sym_assign_expression] = sym_assign_expression, + [sym_binary_expression] = sym_binary_expression, + [sym__unary_expression] = sym__unary_expression, + [sym_unary_expression] = sym_unary_expression, + [sym_unary_op] = sym_unary_op, + [sym_dereference_expression] = sym_dereference_expression, + [sym_borrow_expression] = sym_borrow_expression, + [sym_move_or_copy_expression] = sym_move_or_copy_expression, + [sym__reference] = sym__reference, + [sym__expression_term] = sym__expression_term, + [sym_break_expression] = sym_break_expression, + [sym_continue_expression] = sym_continue_expression, + [sym_field_initialize_list] = sym_field_initialize_list, + [sym_arg_list] = sym_arg_list, + [sym_expression_list] = sym_expression_list, + [sym_unit_expression] = sym_unit_expression, + [sym_cast_expression] = sym_cast_expression, + [sym_annotation_expression] = sym_annotation_expression, + [sym_dot_expression] = sym_dot_expression, + [sym_index_expression] = sym_index_expression, + [sym_exp_field] = sym_exp_field, + [sym_bind_list] = sym_bind_list, + [sym_at_bind] = sym_at_bind, + [sym_comma_bind_list] = sym_comma_bind_list, + [sym_or_bind_list] = sym_or_bind_list, + [sym_mut_bind_var] = sym_mut_bind_var, + [sym__bind] = sym__bind, + [sym_bind_unpack] = sym_bind_unpack, + [sym_bind_fields] = sym_bind_fields, + [sym__spread_operator] = sym__spread_operator, + [sym_bind_positional_fields] = sym_bind_positional_fields, + [sym_bind_named_fields] = sym_bind_named_fields, + [sym_mut_bind_field] = sym_mut_bind_field, + [sym_bind_field] = sym_bind_field, + [sym__literal_value] = sym__literal_value, + [sym_imm_ref] = sym_imm_ref, + [sym_mut_ref] = sym_mut_ref, + [sym_block_identifier] = sym_block_identifier, + [sym_label] = sym_label, + [sym_bool_literal] = sym_bool_literal, + [sym_num_literal] = sym_num_literal, + [sym__module_identifier] = sym__module_identifier, + [sym__struct_identifier] = sym__struct_identifier, + [sym__enum_identifier] = sym__enum_identifier, + [sym__variant_identifier] = sym__variant_identifier, + [sym__function_identifier] = sym__function_identifier, + [sym__variable_identifier] = sym__variable_identifier, + [sym__field_identifier] = sym__field_identifier, + [sym__type_parameter_identifier] = sym__type_parameter_identifier, + [sym__reserved_identifier] = sym_identifier, + [aux_sym_source_file_repeat1] = aux_sym_source_file_repeat1, + [aux_sym_use_module_members_repeat1] = aux_sym_use_module_members_repeat1, + [aux_sym_module_body_repeat1] = aux_sym_module_body_repeat1, + [aux_sym_annotation_repeat1] = aux_sym_annotation_repeat1, + [aux_sym_annotation_list_repeat1] = aux_sym_annotation_list_repeat1, + [aux_sym_positional_fields_repeat1] = aux_sym_positional_fields_repeat1, + [aux_sym_named_fields_repeat1] = aux_sym_named_fields_repeat1, + [aux_sym_enum_variants_repeat1] = aux_sym_enum_variants_repeat1, + [aux_sym_ability_decls_repeat1] = aux_sym_ability_decls_repeat1, + [aux_sym_function_parameters_repeat1] = aux_sym_function_parameters_repeat1, + [aux_sym_spec_body_repeat1] = aux_sym_spec_body_repeat1, + [aux_sym_spec_body_repeat2] = aux_sym_spec_body_repeat2, + [aux_sym__spec_abort_with_or_modifies_repeat1] = aux_sym__spec_abort_with_or_modifies_repeat1, + [aux_sym_condition_properties_repeat1] = aux_sym_condition_properties_repeat1, + [aux_sym_spec_apply_repeat1] = aux_sym_spec_apply_repeat1, + [aux_sym_type_arguments_repeat1] = aux_sym_type_arguments_repeat1, + [aux_sym_type_parameters_repeat1] = aux_sym_type_parameters_repeat1, + [aux_sym_type_parameter_repeat1] = aux_sym_type_parameter_repeat1, + [aux_sym_block_repeat1] = aux_sym_block_repeat1, + [aux_sym_vector_expression_repeat1] = aux_sym_vector_expression_repeat1, + [aux_sym_quantifier_bindings_repeat1] = aux_sym_quantifier_bindings_repeat1, + [aux_sym_lambda_bindings_repeat1] = aux_sym_lambda_bindings_repeat1, + [aux_sym__match_body_repeat1] = aux_sym__match_body_repeat1, + [aux_sym_field_initialize_list_repeat1] = aux_sym_field_initialize_list_repeat1, + [aux_sym_expression_list_repeat1] = aux_sym_expression_list_repeat1, + [aux_sym_index_expression_repeat1] = aux_sym_index_expression_repeat1, + [aux_sym_comma_bind_list_repeat1] = aux_sym_comma_bind_list_repeat1, + [aux_sym_or_bind_list_repeat1] = aux_sym_or_bind_list_repeat1, + [aux_sym_bind_positional_fields_repeat1] = aux_sym_bind_positional_fields_repeat1, + [alias_sym_bind_var] = alias_sym_bind_var, + [alias_sym_constant_identifier] = alias_sym_constant_identifier, + [alias_sym_enum_identifier] = alias_sym_enum_identifier, + [alias_sym_field_identifier] = alias_sym_field_identifier, + [alias_sym_function_identifier] = alias_sym_function_identifier, + [alias_sym_module_identifier] = alias_sym_module_identifier, + [alias_sym_spec_block_target_module] = alias_sym_spec_block_target_module, + [alias_sym_struct_identifier] = alias_sym_struct_identifier, + [alias_sym_type_parameter_identifier] = alias_sym_type_parameter_identifier, + [alias_sym_variable_identifier] = alias_sym_variable_identifier, + [alias_sym_variant_identifier] = alias_sym_variant_identifier, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [sym_identifier] = { + .visible = true, + .named = true, + }, + [anon_sym_public] = { + .visible = true, + .named = false, + }, + [anon_sym_use] = { + .visible = true, + .named = false, + }, + [anon_sym_SEMI] = { + .visible = true, + .named = false, + }, + [anon_sym_fun] = { + .visible = true, + .named = false, + }, + [anon_sym_as] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_COMMA] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_friend] = { + .visible = true, + .named = false, + }, + [anon_sym_LPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_package] = { + .visible = true, + .named = false, + }, + [anon_sym_RPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_entry] = { + .visible = true, + .named = false, + }, + [anon_sym_native] = { + .visible = true, + .named = false, + }, + [anon_sym_copy] = { + .visible = true, + .named = false, + }, + [anon_sym_drop] = { + .visible = true, + .named = false, + }, + [anon_sym_store] = { + .visible = true, + .named = false, + }, + [anon_sym_key] = { + .visible = true, + .named = false, + }, + [anon_sym_module] = { + .visible = true, + .named = false, + }, + [anon_sym_POUND_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_const] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_enum] = { + .visible = true, + .named = false, + }, + [anon_sym_has] = { + .visible = true, + .named = false, + }, + [anon_sym_struct] = { + .visible = true, + .named = false, + }, + [anon_sym_macro] = { + .visible = true, + .named = false, + }, + [anon_sym_spec] = { + .visible = true, + .named = false, + }, + [anon_sym_schema] = { + .visible = true, + .named = false, + }, + [anon_sym_let] = { + .visible = true, + .named = false, + }, + [anon_sym_post] = { + .visible = true, + .named = false, + }, + [anon_sym_assert] = { + .visible = true, + .named = false, + }, + [anon_sym_assume] = { + .visible = true, + .named = false, + }, + [anon_sym_decreases] = { + .visible = true, + .named = false, + }, + [anon_sym_ensures] = { + .visible = true, + .named = false, + }, + [anon_sym_succeeds_if] = { + .visible = true, + .named = false, + }, + [anon_sym_requires] = { + .visible = true, + .named = true, + }, + [anon_sym_aborts_if] = { + .visible = true, + .named = true, + }, + [anon_sym_with] = { + .visible = true, + .named = false, + }, + [anon_sym_aborts_with] = { + .visible = true, + .named = true, + }, + [anon_sym_modifies] = { + .visible = true, + .named = true, + }, + [anon_sym_invariant] = { + .visible = true, + .named = true, + }, + [anon_sym_update] = { + .visible = true, + .named = true, + }, + [anon_sym_pack] = { + .visible = true, + .named = true, + }, + [anon_sym_unpack] = { + .visible = true, + .named = true, + }, + [anon_sym_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_include] = { + .visible = true, + .named = false, + }, + [anon_sym_apply] = { + .visible = true, + .named = false, + }, + [anon_sym_to] = { + .visible = true, + .named = false, + }, + [anon_sym_except] = { + .visible = true, + .named = false, + }, + [anon_sym_internal] = { + .visible = true, + .named = false, + }, + [sym_spec_apply_name_pattern] = { + .visible = true, + .named = true, + }, + [anon_sym_pragma] = { + .visible = true, + .named = false, + }, + [anon_sym_global] = { + .visible = true, + .named = false, + }, + [anon_sym_local] = { + .visible = true, + .named = false, + }, + [anon_sym_u8] = { + .visible = true, + .named = false, + }, + [anon_sym_u16] = { + .visible = true, + .named = false, + }, + [anon_sym_u32] = { + .visible = true, + .named = false, + }, + [anon_sym_u64] = { + .visible = true, + .named = false, + }, + [anon_sym_u128] = { + .visible = true, + .named = false, + }, + [anon_sym_u256] = { + .visible = true, + .named = false, + }, + [anon_sym_bool] = { + .visible = true, + .named = false, + }, + [anon_sym_address] = { + .visible = true, + .named = false, + }, + [anon_sym_signer] = { + .visible = true, + .named = false, + }, + [anon_sym_bytearray] = { + .visible = true, + .named = false, + }, + [anon_sym_DOLLAR] = { + .visible = true, + .named = false, + }, + [anon_sym_AT] = { + .visible = true, + .named = false, + }, + [anon_sym_BANG] = { + .visible = true, + .named = false, + }, + [anon_sym_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_PIPE] = { + .visible = true, + .named = false, + }, + [anon_sym_mut] = { + .visible = true, + .named = false, + }, + [anon_sym_phantom] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS] = { + .visible = true, + .named = false, + }, + [anon_sym_vector_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_vector_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_where] = { + .visible = true, + .named = false, + }, + [anon_sym_in] = { + .visible = true, + .named = false, + }, + [anon_sym_if] = { + .visible = true, + .named = false, + }, + [anon_sym_else] = { + .visible = true, + .named = false, + }, + [anon_sym_while] = { + .visible = true, + .named = false, + }, + [anon_sym_loop] = { + .visible = true, + .named = false, + }, + [anon_sym_return] = { + .visible = true, + .named = false, + }, + [anon_sym_abort] = { + .visible = true, + .named = false, + }, + [anon_sym_match] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_EQ_GT] = { + .visible = true, + .named = true, + }, + [anon_sym_PIPE_PIPE] = { + .visible = true, + .named = true, + }, + [anon_sym_AMP_AMP] = { + .visible = true, + .named = true, + }, + [anon_sym_EQ_EQ] = { + .visible = true, + .named = true, + }, + [anon_sym_BANG_EQ] = { + .visible = true, + .named = true, + }, + [anon_sym_LT_EQ] = { + .visible = true, + .named = true, + }, + [anon_sym_GT_EQ] = { + .visible = true, + .named = true, + }, + [anon_sym_DOT_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_CARET] = { + .visible = true, + .named = true, + }, + [anon_sym_AMP] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_LT] = { + .visible = true, + .named = true, + }, + [anon_sym_GT_GT] = { + .visible = true, + .named = true, + }, + [anon_sym_DASH] = { + .visible = true, + .named = true, + }, + [anon_sym_STAR] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH] = { + .visible = true, + .named = true, + }, + [anon_sym_PERCENT] = { + .visible = true, + .named = true, + }, + [anon_sym_move] = { + .visible = true, + .named = false, + }, + [anon_sym_break] = { + .visible = true, + .named = false, + }, + [anon_sym_continue] = { + .visible = true, + .named = false, + }, + [anon_sym_SQUOTE] = { + .visible = true, + .named = false, + }, + [sym_address_literal] = { + .visible = true, + .named = true, + }, + [anon_sym_true] = { + .visible = true, + .named = false, + }, + [anon_sym_false] = { + .visible = true, + .named = false, + }, + [aux_sym_num_literal_token1] = { + .visible = false, + .named = false, + }, + [aux_sym_num_literal_token2] = { + .visible = false, + .named = false, + }, + [sym_hex_string_literal] = { + .visible = true, + .named = true, + }, + [sym_byte_string_literal] = { + .visible = true, + .named = true, + }, + [sym__forall] = { + .visible = false, + .named = true, + }, + [sym__exists] = { + .visible = false, + .named = true, + }, + [sym_line_comment] = { + .visible = true, + .named = true, + }, + [sym_newline] = { + .visible = true, + .named = true, + }, + [sym__whitespace] = { + .visible = false, + .named = true, + }, + [sym_block_comment] = { + .visible = true, + .named = true, + }, + [sym_source_file] = { + .visible = true, + .named = true, + }, + [sym_use_declaration] = { + .visible = true, + .named = true, + }, + [sym_use_fun] = { + .visible = true, + .named = true, + }, + [sym_use_module] = { + .visible = true, + .named = true, + }, + [sym_use_module_member] = { + .visible = true, + .named = true, + }, + [sym_use_module_members] = { + .visible = true, + .named = true, + }, + [sym_use_member] = { + .visible = true, + .named = true, + }, + [sym_friend_declaration] = { + .visible = true, + .named = true, + }, + [sym_modifier] = { + .visible = true, + .named = true, + }, + [sym_ability] = { + .visible = true, + .named = true, + }, + [sym_module_definition] = { + .visible = true, + .named = true, + }, + [sym_module_body] = { + .visible = true, + .named = true, + }, + [sym_annotation] = { + .visible = true, + .named = true, + }, + [sym_annotation_expr] = { + .visible = true, + .named = true, + }, + [sym_annotation_list] = { + .visible = true, + .named = true, + }, + [sym_annotation_item] = { + .visible = true, + .named = true, + }, + [sym_constant] = { + .visible = true, + .named = true, + }, + [sym_datatype_fields] = { + .visible = true, + .named = true, + }, + [sym_positional_fields] = { + .visible = true, + .named = true, + }, + [sym_named_fields] = { + .visible = true, + .named = true, + }, + [sym__enum_item] = { + .visible = false, + .named = true, + }, + [sym_enum_definition] = { + .visible = true, + .named = true, + }, + [sym__enum_signature] = { + .visible = false, + .named = true, + }, + [sym_enum_variants] = { + .visible = true, + .named = true, + }, + [sym_variant] = { + .visible = true, + .named = true, + }, + [sym__struct_item] = { + .visible = false, + .named = true, + }, + [sym_native_struct_definition] = { + .visible = true, + .named = true, + }, + [sym_struct_definition] = { + .visible = true, + .named = true, + }, + [sym_field_annotation] = { + .visible = true, + .named = true, + }, + [sym_ability_decls] = { + .visible = true, + .named = true, + }, + [sym_postfix_ability_decls] = { + .visible = true, + .named = true, + }, + [sym__struct_signature] = { + .visible = false, + .named = true, + }, + [sym__function_item] = { + .visible = false, + .named = true, + }, + [sym_native_function_definition] = { + .visible = true, + .named = true, + }, + [sym_macro_function_definition] = { + .visible = true, + .named = true, + }, + [sym__macro_signature] = { + .visible = false, + .named = true, + }, + [sym_function_definition] = { + .visible = true, + .named = true, + }, + [sym__function_signature] = { + .visible = false, + .named = true, + }, + [sym_function_parameters] = { + .visible = true, + .named = true, + }, + [sym_spec_block] = { + .visible = true, + .named = true, + }, + [sym__spec_block_target] = { + .visible = false, + .named = true, + .supertype = true, + }, + [sym_spec_block_target_schema] = { + .visible = true, + .named = true, + }, + [sym_spec_body] = { + .visible = true, + .named = true, + }, + [sym__spec_block_memeber] = { + .visible = false, + .named = true, + }, + [sym_spec_let] = { + .visible = true, + .named = true, + }, + [sym_spec_condition] = { + .visible = true, + .named = true, + }, + [sym__spec_condition_kind] = { + .visible = true, + .named = true, + }, + [sym__spec_condition] = { + .visible = false, + .named = true, + }, + [sym__spec_abort_if] = { + .visible = false, + .named = true, + }, + [sym__spec_abort_with_or_modifies] = { + .visible = false, + .named = true, + }, + [sym_spec_invariant] = { + .visible = true, + .named = true, + }, + [sym_condition_properties] = { + .visible = true, + .named = true, + }, + [sym_spec_include] = { + .visible = true, + .named = true, + }, + [sym_spec_apply] = { + .visible = true, + .named = true, + }, + [sym_spec_apply_pattern] = { + .visible = true, + .named = true, + }, + [sym_spec_pragma] = { + .visible = true, + .named = true, + }, + [sym_spec_property] = { + .visible = true, + .named = true, + }, + [sym_spec_variable] = { + .visible = true, + .named = true, + }, + [sym__spec_function] = { + .visible = false, + .named = true, + }, + [sym_uninterpreted_spec_function] = { + .visible = true, + .named = true, + }, + [sym_native_spec_function] = { + .visible = true, + .named = true, + }, + [sym_usual_spec_function] = { + .visible = true, + .named = true, + }, + [sym__spec_function_signature] = { + .visible = false, + .named = true, + }, + [sym__type] = { + .visible = false, + .named = true, + }, + [sym_apply_type] = { + .visible = true, + .named = true, + }, + [sym_ref_type] = { + .visible = true, + .named = true, + }, + [sym_tuple_type] = { + .visible = true, + .named = true, + }, + [sym_primitive_type] = { + .visible = true, + .named = true, + }, + [sym_ret_type] = { + .visible = true, + .named = true, + }, + [sym_module_access] = { + .visible = true, + .named = true, + }, + [sym_friend_access] = { + .visible = true, + .named = true, + }, + [sym_macro_module_access] = { + .visible = true, + .named = true, + }, + [sym_module_identity] = { + .visible = true, + .named = true, + }, + [sym_type_arguments] = { + .visible = true, + .named = true, + }, + [sym_function_type] = { + .visible = true, + .named = true, + }, + [sym_function_type_parameters] = { + .visible = true, + .named = true, + }, + [sym_mut_function_parameter] = { + .visible = true, + .named = true, + }, + [sym_function_parameter] = { + .visible = true, + .named = true, + }, + [sym_type_parameters] = { + .visible = true, + .named = true, + }, + [sym_type_parameter] = { + .visible = true, + .named = true, + }, + [sym_block] = { + .visible = true, + .named = true, + }, + [sym_block_item] = { + .visible = true, + .named = true, + }, + [sym_let_statement] = { + .visible = true, + .named = true, + }, + [sym__expression] = { + .visible = false, + .named = true, + }, + [sym_identified_expression] = { + .visible = true, + .named = true, + }, + [sym_vector_expression] = { + .visible = true, + .named = true, + }, + [sym_quantifier_expression] = { + .visible = true, + .named = true, + }, + [sym_quantifier_bindings] = { + .visible = true, + .named = true, + }, + [sym_quantifier_binding] = { + .visible = true, + .named = true, + }, + [sym_lambda_expression] = { + .visible = true, + .named = true, + }, + [sym_lambda_binding] = { + .visible = true, + .named = true, + }, + [sym_lambda_bindings] = { + .visible = true, + .named = true, + }, + [sym_if_expression] = { + .visible = true, + .named = true, + }, + [sym_while_expression] = { + .visible = true, + .named = true, + }, + [sym_loop_expression] = { + .visible = true, + .named = true, + }, + [sym_return_expression] = { + .visible = true, + .named = true, + }, + [sym_abort_expression] = { + .visible = true, + .named = true, + }, + [sym_match_expression] = { + .visible = true, + .named = true, + }, + [sym__match_body] = { + .visible = false, + .named = true, + }, + [sym_match_condition] = { + .visible = true, + .named = true, + }, + [sym_match_arm] = { + .visible = true, + .named = true, + }, + [sym_call_expression] = { + .visible = true, + .named = true, + }, + [sym_macro_call_expression] = { + .visible = true, + .named = true, + }, + [sym_pack_expression] = { + .visible = true, + .named = true, + }, + [sym_name_expression] = { + .visible = true, + .named = true, + }, + [sym_assign_expression] = { + .visible = true, + .named = true, + }, + [sym_binary_expression] = { + .visible = true, + .named = true, + }, + [sym__unary_expression] = { + .visible = false, + .named = true, + }, + [sym_unary_expression] = { + .visible = true, + .named = true, + }, + [sym_unary_op] = { + .visible = true, + .named = true, + }, + [sym_dereference_expression] = { + .visible = true, + .named = true, + }, + [sym_borrow_expression] = { + .visible = true, + .named = true, + }, + [sym_move_or_copy_expression] = { + .visible = true, + .named = true, + }, + [sym__reference] = { + .visible = false, + .named = true, + }, + [sym__expression_term] = { + .visible = false, + .named = true, + }, + [sym_break_expression] = { + .visible = true, + .named = true, + }, + [sym_continue_expression] = { + .visible = true, + .named = true, + }, + [sym_field_initialize_list] = { + .visible = true, + .named = true, + }, + [sym_arg_list] = { + .visible = true, + .named = true, + }, + [sym_expression_list] = { + .visible = true, + .named = true, + }, + [sym_unit_expression] = { + .visible = true, + .named = true, + }, + [sym_cast_expression] = { + .visible = true, + .named = true, + }, + [sym_annotation_expression] = { + .visible = true, + .named = true, + }, + [sym_dot_expression] = { + .visible = true, + .named = true, + }, + [sym_index_expression] = { + .visible = true, + .named = true, + }, + [sym_exp_field] = { + .visible = true, + .named = true, + }, + [sym_bind_list] = { + .visible = true, + .named = true, + }, + [sym_at_bind] = { + .visible = true, + .named = true, + }, + [sym_comma_bind_list] = { + .visible = true, + .named = true, + }, + [sym_or_bind_list] = { + .visible = true, + .named = true, + }, + [sym_mut_bind_var] = { + .visible = true, + .named = true, + }, + [sym__bind] = { + .visible = false, + .named = true, + }, + [sym_bind_unpack] = { + .visible = true, + .named = true, + }, + [sym_bind_fields] = { + .visible = true, + .named = true, + }, + [sym__spread_operator] = { + .visible = false, + .named = true, + }, + [sym_bind_positional_fields] = { + .visible = true, + .named = true, + }, + [sym_bind_named_fields] = { + .visible = true, + .named = true, + }, + [sym_mut_bind_field] = { + .visible = true, + .named = true, + }, + [sym_bind_field] = { + .visible = true, + .named = true, + }, + [sym__literal_value] = { + .visible = false, + .named = true, + }, + [sym_imm_ref] = { + .visible = true, + .named = true, + }, + [sym_mut_ref] = { + .visible = true, + .named = true, + }, + [sym_block_identifier] = { + .visible = true, + .named = true, + }, + [sym_label] = { + .visible = true, + .named = true, + }, + [sym_bool_literal] = { + .visible = true, + .named = true, + }, + [sym_num_literal] = { + .visible = true, + .named = true, + }, + [sym__module_identifier] = { + .visible = false, + .named = true, + }, + [sym__struct_identifier] = { + .visible = false, + .named = true, + }, + [sym__enum_identifier] = { + .visible = false, + .named = true, + }, + [sym__variant_identifier] = { + .visible = false, + .named = true, + }, + [sym__function_identifier] = { + .visible = false, + .named = true, + }, + [sym__variable_identifier] = { + .visible = false, + .named = true, + }, + [sym__field_identifier] = { + .visible = false, + .named = true, + }, + [sym__type_parameter_identifier] = { + .visible = false, + .named = true, + }, + [sym__reserved_identifier] = { + .visible = true, + .named = true, + }, + [aux_sym_source_file_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_use_module_members_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_module_body_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_annotation_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_annotation_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_positional_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_named_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_enum_variants_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_ability_decls_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_function_parameters_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_spec_body_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_spec_body_repeat2] = { + .visible = false, + .named = false, + }, + [aux_sym__spec_abort_with_or_modifies_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_condition_properties_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_spec_apply_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_type_arguments_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_type_parameters_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_type_parameter_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_block_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_vector_expression_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_quantifier_bindings_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_lambda_bindings_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__match_body_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_field_initialize_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_expression_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_index_expression_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_comma_bind_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_or_bind_list_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_bind_positional_fields_repeat1] = { + .visible = false, + .named = false, + }, + [alias_sym_bind_var] = { + .visible = true, + .named = true, + }, + [alias_sym_constant_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_enum_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_field_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_function_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_module_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_spec_block_target_module] = { + .visible = true, + .named = true, + }, + [alias_sym_struct_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_type_parameter_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_variable_identifier] = { + .visible = true, + .named = true, + }, + [alias_sym_variant_identifier] = { + .visible = true, + .named = true, + }, +}; + +enum ts_field_identifiers { + field_ability_declarations = 1, + field_abort = 2, + field_access = 3, + field_additional_exp = 4, + field_address = 5, + field_alias = 6, + field_annotation_expr = 7, + field_annotation_list = 8, + field_args = 9, + field_bind = 10, + field_bind_fields = 11, + field_bindings = 12, + field_binds = 13, + field_body = 14, + field_break = 15, + field_condition = 16, + field_condition_properties = 17, + field_def = 18, + field_eb = 19, + field_ef = 20, + field_enum_name = 21, + field_enum_variants = 22, + field_et = 23, + field_expr = 24, + field_expression_id = 25, + field_field = 26, + field_fields = 27, + field_fully_qualified_module = 28, + field_idx = 29, + field_kind = 30, + field_label = 31, + field_lhs = 32, + field_local_const = 33, + field_local_module = 34, + field_match_scrutiny = 35, + field_member = 36, + field_modifier = 37, + field_module = 38, + field_module_body = 39, + field_module_identity = 40, + field_name = 41, + field_name_pattern = 42, + field_op = 43, + field_operator = 44, + field_param_types = 45, + field_parameters = 46, + field_postfix_ability_declarations = 47, + field_return = 48, + field_return_type = 49, + field_rhs = 50, + field_struct_fields = 51, + field_target = 52, + field_ty = 53, + field_type = 54, + field_type_arguments = 55, + field_type_parameters = 56, + field_use_member = 57, + field_value = 58, + field_variant = 59, + field_variant_name = 60, +}; + +static const char * const ts_field_names[] = { + [0] = NULL, + [field_ability_declarations] = "ability_declarations", + [field_abort] = "abort", + [field_access] = "access", + [field_additional_exp] = "additional_exp", + [field_address] = "address", + [field_alias] = "alias", + [field_annotation_expr] = "annotation_expr", + [field_annotation_list] = "annotation_list", + [field_args] = "args", + [field_bind] = "bind", + [field_bind_fields] = "bind_fields", + [field_bindings] = "bindings", + [field_binds] = "binds", + [field_body] = "body", + [field_break] = "break", + [field_condition] = "condition", + [field_condition_properties] = "condition_properties", + [field_def] = "def", + [field_eb] = "eb", + [field_ef] = "ef", + [field_enum_name] = "enum_name", + [field_enum_variants] = "enum_variants", + [field_et] = "et", + [field_expr] = "expr", + [field_expression_id] = "expression_id", + [field_field] = "field", + [field_fields] = "fields", + [field_fully_qualified_module] = "fully_qualified_module", + [field_idx] = "idx", + [field_kind] = "kind", + [field_label] = "label", + [field_lhs] = "lhs", + [field_local_const] = "local_const", + [field_local_module] = "local_module", + [field_match_scrutiny] = "match_scrutiny", + [field_member] = "member", + [field_modifier] = "modifier", + [field_module] = "module", + [field_module_body] = "module_body", + [field_module_identity] = "module_identity", + [field_name] = "name", + [field_name_pattern] = "name_pattern", + [field_op] = "op", + [field_operator] = "operator", + [field_param_types] = "param_types", + [field_parameters] = "parameters", + [field_postfix_ability_declarations] = "postfix_ability_declarations", + [field_return] = "return", + [field_return_type] = "return_type", + [field_rhs] = "rhs", + [field_struct_fields] = "struct_fields", + [field_target] = "target", + [field_ty] = "ty", + [field_type] = "type", + [field_type_arguments] = "type_arguments", + [field_type_parameters] = "type_parameters", + [field_use_member] = "use_member", + [field_value] = "value", + [field_variant] = "variant", + [field_variant_name] = "variant_name", +}; + +static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { + [1] = {.index = 0, .length = 1}, + [2] = {.index = 1, .length = 1}, + [3] = {.index = 2, .length = 1}, + [5] = {.index = 3, .length = 2}, + [6] = {.index = 5, .length = 1}, + [7] = {.index = 6, .length = 2}, + [8] = {.index = 8, .length = 2}, + [9] = {.index = 10, .length = 1}, + [10] = {.index = 11, .length = 2}, + [11] = {.index = 13, .length = 1}, + [12] = {.index = 14, .length = 3}, + [14] = {.index = 17, .length = 1}, + [15] = {.index = 18, .length = 1}, + [17] = {.index = 19, .length = 1}, + [20] = {.index = 20, .length = 1}, + [21] = {.index = 21, .length = 4}, + [22] = {.index = 25, .length = 4}, + [23] = {.index = 29, .length = 4}, + [24] = {.index = 33, .length = 5}, + [25] = {.index = 38, .length = 1}, + [26] = {.index = 39, .length = 2}, + [27] = {.index = 41, .length = 2}, + [28] = {.index = 43, .length = 1}, + [29] = {.index = 44, .length = 2}, + [30] = {.index = 46, .length = 4}, + [31] = {.index = 50, .length = 4}, + [32] = {.index = 54, .length = 2}, + [33] = {.index = 56, .length = 1}, + [34] = {.index = 57, .length = 3}, + [35] = {.index = 60, .length = 2}, + [36] = {.index = 62, .length = 2}, + [37] = {.index = 64, .length = 5}, + [38] = {.index = 69, .length = 3}, + [39] = {.index = 72, .length = 4}, + [40] = {.index = 76, .length = 3}, + [41] = {.index = 79, .length = 2}, + [43] = {.index = 81, .length = 1}, + [44] = {.index = 82, .length = 5}, + [46] = {.index = 87, .length = 5}, + [47] = {.index = 92, .length = 1}, + [48] = {.index = 93, .length = 4}, + [49] = {.index = 97, .length = 2}, + [50] = {.index = 99, .length = 2}, + [51] = {.index = 101, .length = 3}, + [52] = {.index = 104, .length = 3}, + [53] = {.index = 107, .length = 5}, + [54] = {.index = 112, .length = 5}, + [55] = {.index = 117, .length = 1}, + [56] = {.index = 118, .length = 1}, + [59] = {.index = 119, .length = 3}, + [60] = {.index = 122, .length = 3}, + [61] = {.index = 125, .length = 3}, + [62] = {.index = 128, .length = 4}, + [63] = {.index = 132, .length = 2}, + [64] = {.index = 134, .length = 5}, + [65] = {.index = 139, .length = 2}, + [66] = {.index = 141, .length = 1}, + [67] = {.index = 142, .length = 1}, + [68] = {.index = 143, .length = 1}, + [70] = {.index = 144, .length = 1}, + [71] = {.index = 145, .length = 1}, + [72] = {.index = 146, .length = 1}, + [73] = {.index = 147, .length = 1}, + [74] = {.index = 148, .length = 1}, + [75] = {.index = 149, .length = 2}, + [76] = {.index = 151, .length = 2}, + [77] = {.index = 153, .length = 1}, + [78] = {.index = 154, .length = 2}, + [79] = {.index = 156, .length = 1}, + [80] = {.index = 157, .length = 2}, + [81] = {.index = 159, .length = 2}, + [82] = {.index = 161, .length = 4}, + [83] = {.index = 165, .length = 3}, + [84] = {.index = 168, .length = 2}, + [85] = {.index = 170, .length = 2}, + [86] = {.index = 172, .length = 4}, + [87] = {.index = 176, .length = 3}, + [88] = {.index = 179, .length = 3}, + [89] = {.index = 182, .length = 2}, + [90] = {.index = 184, .length = 2}, + [92] = {.index = 186, .length = 1}, + [93] = {.index = 187, .length = 2}, + [94] = {.index = 189, .length = 2}, + [95] = {.index = 191, .length = 3}, + [96] = {.index = 194, .length = 2}, + [97] = {.index = 196, .length = 3}, + [98] = {.index = 199, .length = 1}, + [99] = {.index = 200, .length = 2}, + [100] = {.index = 202, .length = 2}, + [101] = {.index = 204, .length = 1}, + [102] = {.index = 205, .length = 3}, + [103] = {.index = 208, .length = 1}, + [104] = {.index = 209, .length = 2}, + [105] = {.index = 211, .length = 2}, + [106] = {.index = 213, .length = 2}, + [107] = {.index = 215, .length = 4}, + [108] = {.index = 219, .length = 2}, + [109] = {.index = 221, .length = 3}, + [110] = {.index = 224, .length = 3}, + [111] = {.index = 227, .length = 1}, + [112] = {.index = 228, .length = 3}, + [113] = {.index = 231, .length = 2}, + [114] = {.index = 233, .length = 3}, + [115] = {.index = 236, .length = 1}, + [116] = {.index = 237, .length = 4}, + [117] = {.index = 241, .length = 3}, + [118] = {.index = 244, .length = 3}, + [119] = {.index = 247, .length = 2}, + [120] = {.index = 249, .length = 2}, + [121] = {.index = 251, .length = 2}, + [122] = {.index = 253, .length = 2}, + [123] = {.index = 255, .length = 2}, + [124] = {.index = 257, .length = 1}, + [125] = {.index = 258, .length = 2}, + [126] = {.index = 260, .length = 2}, + [127] = {.index = 262, .length = 2}, + [128] = {.index = 264, .length = 3}, + [129] = {.index = 267, .length = 1}, + [130] = {.index = 268, .length = 2}, + [131] = {.index = 270, .length = 2}, + [132] = {.index = 272, .length = 3}, + [133] = {.index = 275, .length = 2}, + [134] = {.index = 277, .length = 3}, + [135] = {.index = 280, .length = 2}, + [136] = {.index = 282, .length = 3}, + [137] = {.index = 285, .length = 3}, + [138] = {.index = 288, .length = 4}, + [139] = {.index = 292, .length = 4}, + [140] = {.index = 296, .length = 1}, + [141] = {.index = 297, .length = 2}, + [142] = {.index = 299, .length = 3}, + [143] = {.index = 302, .length = 4}, + [144] = {.index = 306, .length = 3}, + [145] = {.index = 309, .length = 3}, + [146] = {.index = 312, .length = 2}, + [147] = {.index = 314, .length = 2}, + [148] = {.index = 316, .length = 2}, + [149] = {.index = 318, .length = 1}, + [150] = {.index = 319, .length = 2}, + [151] = {.index = 321, .length = 3}, + [152] = {.index = 324, .length = 2}, + [153] = {.index = 326, .length = 3}, + [154] = {.index = 329, .length = 2}, + [155] = {.index = 331, .length = 4}, + [156] = {.index = 335, .length = 2}, + [157] = {.index = 337, .length = 3}, + [158] = {.index = 340, .length = 4}, + [159] = {.index = 344, .length = 2}, + [160] = {.index = 346, .length = 3}, + [161] = {.index = 349, .length = 3}, + [162] = {.index = 352, .length = 3}, + [163] = {.index = 355, .length = 1}, +}; + +static const TSFieldMapEntry ts_field_map_entries[] = { + [0] = + {field_name, 0}, + [1] = + {field_annotation_expr, 0}, + [2] = + {field_annotation_list, 0}, + [3] = + {field_module_body, 2}, + {field_module_identity, 1}, + [5] = + {field_member, 0}, + [6] = + {field_name, 0}, + {field_value, 2}, + [8] = + {field_address, 0}, + {field_module, 2}, + [10] = + {field_member, 1}, + [11] = + {field_member, 0}, + {field_type_arguments, 1}, + [13] = + {field_type_arguments, 1}, + [14] = + {field_local_const, 2}, + {field_local_const, 3}, + {field_name, 0}, + [17] = + {field_local_module, 0}, + [18] = + {field_fully_qualified_module, 0}, + [19] = + {field_name, 1}, + [20] = + {field_body, 1}, + [21] = + {field_ability_declarations, 0, .inherited = true}, + {field_enum_variants, 1}, + {field_name, 0, .inherited = true}, + {field_type_parameters, 0, .inherited = true}, + [25] = + {field_ability_declarations, 0, .inherited = true}, + {field_name, 0, .inherited = true}, + {field_struct_fields, 1}, + {field_type_parameters, 0, .inherited = true}, + [29] = + {field_name, 0, .inherited = true}, + {field_parameters, 0, .inherited = true}, + {field_return_type, 0, .inherited = true}, + {field_type_parameters, 0, .inherited = true}, + [33] = + {field_body, 1}, + {field_name, 0, .inherited = true}, + {field_parameters, 0, .inherited = true}, + {field_return_type, 0, .inherited = true}, + {field_type_parameters, 0, .inherited = true}, + [38] = + {field_param_types, 0}, + [39] = + {field_local_const, 3, .inherited = true}, + {field_name, 0}, + [41] = + {field_local_const, 0, .inherited = true}, + {field_local_const, 1, .inherited = true}, + [43] = + {field_member, 2}, + [44] = + {field_member, 2}, + {field_module, 0}, + [46] = + {field_ability_declarations, 1, .inherited = true}, + {field_enum_variants, 2}, + {field_name, 1, .inherited = true}, + {field_type_parameters, 1, .inherited = true}, + [50] = + {field_ability_declarations, 1, .inherited = true}, + {field_name, 1, .inherited = true}, + {field_struct_fields, 2}, + {field_type_parameters, 1, .inherited = true}, + [54] = + {field_name, 1}, + {field_parameters, 2}, + [56] = + {field_module, 1}, + [57] = + {field_ability_declarations, 1, .inherited = true}, + {field_name, 1, .inherited = true}, + {field_type_parameters, 1, .inherited = true}, + [60] = + {field_ability_declarations, 2}, + {field_name, 1}, + [62] = + {field_name, 1}, + {field_type_parameters, 2}, + [64] = + {field_body, 2}, + {field_name, 1, .inherited = true}, + {field_parameters, 1, .inherited = true}, + {field_return_type, 1, .inherited = true}, + {field_type_parameters, 1, .inherited = true}, + [69] = + {field_condition_properties, 0, .inherited = true}, + {field_expr, 0, .inherited = true}, + {field_kind, 0, .inherited = true}, + [72] = + {field_additional_exp, 0, .inherited = true}, + {field_condition_properties, 0, .inherited = true}, + {field_expr, 0, .inherited = true}, + {field_kind, 0, .inherited = true}, + [76] = + {field_additional_exp, 0, .inherited = true}, + {field_condition_properties, 0, .inherited = true}, + {field_kind, 0, .inherited = true}, + [79] = + {field_body, 2}, + {field_target, 1}, + [81] = + {field_variant_name, 0}, + [82] = + {field_ability_declarations, 0, .inherited = true}, + {field_enum_variants, 1}, + {field_name, 0, .inherited = true}, + {field_postfix_ability_declarations, 2}, + {field_type_parameters, 0, .inherited = true}, + [87] = + {field_ability_declarations, 0, .inherited = true}, + {field_name, 0, .inherited = true}, + {field_postfix_ability_declarations, 2}, + {field_struct_fields, 1}, + {field_type_parameters, 0, .inherited = true}, + [92] = + {field_access, 0}, + [93] = + {field_local_const, 2}, + {field_local_const, 3}, + {field_local_const, 4, .inherited = true}, + {field_name, 0}, + [97] = + {field_local_const, 1}, + {field_local_const, 2}, + [99] = + {field_member, 3}, + {field_type_arguments, 1}, + [101] = + {field_member, 3}, + {field_module, 0}, + {field_type_arguments, 1}, + [104] = + {field_ability_declarations, 2, .inherited = true}, + {field_name, 2, .inherited = true}, + {field_type_parameters, 2, .inherited = true}, + [107] = + {field_ability_declarations, 1, .inherited = true}, + {field_enum_variants, 2}, + {field_name, 1, .inherited = true}, + {field_postfix_ability_declarations, 3}, + {field_type_parameters, 1, .inherited = true}, + [112] = + {field_ability_declarations, 1, .inherited = true}, + {field_name, 1, .inherited = true}, + {field_postfix_ability_declarations, 3}, + {field_struct_fields, 2}, + {field_type_parameters, 1, .inherited = true}, + [117] = + {field_alias, 2}, + [118] = + {field_use_member, 2}, + [119] = + {field_name, 1}, + {field_parameters, 2}, + {field_return_type, 3}, + [122] = + {field_name, 1}, + {field_parameters, 3}, + {field_type_parameters, 2}, + [125] = + {field_ability_declarations, 3}, + {field_name, 1}, + {field_type_parameters, 2}, + [128] = + {field_name, 1, .inherited = true}, + {field_parameters, 1, .inherited = true}, + {field_return_type, 1, .inherited = true}, + {field_type_parameters, 1, .inherited = true}, + [132] = + {field_name, 2}, + {field_parameters, 3}, + [134] = + {field_body, 3}, + {field_name, 2, .inherited = true}, + {field_parameters, 2, .inherited = true}, + {field_return_type, 2, .inherited = true}, + {field_type_parameters, 2, .inherited = true}, + [139] = + {field_fields, 1}, + {field_variant_name, 0}, + [141] = + {field_access, 1}, + [142] = + {field_expr, 1}, + [143] = + {field_binds, 1}, + [144] = + {field_bind, 0}, + [145] = + {field_return, 1}, + [146] = + {field_label, 1}, + [147] = + {field_abort, 1}, + [148] = + {field_break, 1}, + [149] = + {field_access, 0}, + {field_args, 1}, + [151] = + {field_bindings, 0}, + {field_expr, 1}, + [153] = + {field_args, 1}, + [154] = + {field_expr, 1}, + {field_op, 0}, + [156] = + {field_expression_id, 0}, + [157] = + {field_param_types, 0}, + {field_return_type, 2}, + [159] = + {field_enum_name, 2}, + {field_variant, 4}, + [161] = + {field_name, 1}, + {field_parameters, 3}, + {field_return_type, 4}, + {field_type_parameters, 2}, + [165] = + {field_name, 0}, + {field_parameters, 1}, + {field_return_type, 2}, + [168] = + {field_expr, 1}, + {field_kind, 0}, + [170] = + {field_additional_exp, 1}, + {field_kind, 0}, + [172] = + {field_name, 2, .inherited = true}, + {field_parameters, 2, .inherited = true}, + {field_return_type, 2, .inherited = true}, + {field_type_parameters, 2, .inherited = true}, + [176] = + {field_name, 2}, + {field_parameters, 3}, + {field_return_type, 4}, + [179] = + {field_name, 2}, + {field_parameters, 4}, + {field_type_parameters, 3}, + [182] = + {field_name, 3}, + {field_parameters, 4}, + [184] = + {field_field, 0}, + {field_type, 2}, + [186] = + {field_bind_fields, 1}, + [187] = + {field_label, 1}, + {field_return, 2}, + [189] = + {field_break, 2}, + {field_label, 1}, + [191] = + {field_access, 0}, + {field_args, 2}, + {field_type_arguments, 1}, + [194] = + {field_expr, 0}, + {field_ty, 2}, + [196] = + {field_lhs, 0}, + {field_operator, 1}, + {field_rhs, 2}, + [199] = + {field_field, 0}, + [200] = + {field_lhs, 0}, + {field_rhs, 2}, + [202] = + {field_access, 2}, + {field_expr, 0}, + [204] = + {field_expr, 0}, + [205] = + {field_enum_name, 2}, + {field_type_arguments, 3}, + {field_variant, 5}, + [208] = + {field_use_member, 3}, + [209] = + {field_alias, 2}, + {field_member, 0}, + [211] = + {field_address, 0}, + {field_use_member, 3}, + [213] = + {field_name, 0}, + {field_type, 2}, + [215] = + {field_name, 0}, + {field_parameters, 2}, + {field_return_type, 3}, + {field_type_parameters, 1}, + [219] = + {field_expr, 2}, + {field_kind, 0}, + [221] = + {field_condition_properties, 1}, + {field_expr, 2}, + {field_kind, 0}, + [224] = + {field_additional_exp, 2}, + {field_condition_properties, 1}, + {field_kind, 0}, + [227] = + {field_additional_exp, 1}, + [228] = + {field_additional_exp, 1}, + {field_additional_exp, 2, .inherited = true}, + {field_kind, 0}, + [231] = + {field_additional_exp, 0, .inherited = true}, + {field_additional_exp, 1, .inherited = true}, + [233] = + {field_expr, 2}, + {field_kind, 0}, + {field_modifier, 1}, + [236] = + {field_name_pattern, 0}, + [237] = + {field_name, 2}, + {field_parameters, 4}, + {field_return_type, 5}, + {field_type_parameters, 3}, + [241] = + {field_name, 3}, + {field_parameters, 4}, + {field_return_type, 5}, + [244] = + {field_name, 3}, + {field_parameters, 5}, + {field_type_parameters, 4}, + [247] = + {field_name, 4}, + {field_parameters, 5}, + [249] = + {field_binds, 1}, + {field_expr, 3}, + [251] = + {field_binds, 1}, + {field_type, 3}, + [253] = + {field_bind, 0}, + {field_ty, 2}, + [255] = + {field_bindings, 0}, + {field_expr, 3}, + [257] = + {field_idx, 0}, + [258] = + {field_expr, 0}, + {field_idx, 2}, + [260] = + {field_expr, 0}, + {field_idx, 2, .inherited = true}, + [262] = + {field_idx, 0, .inherited = true}, + {field_idx, 1, .inherited = true}, + [264] = + {field_alias, 3}, + {field_alias, 4}, + {field_alias, 5}, + [267] = + {field_use_member, 1}, + [268] = + {field_use_member, 3}, + {field_use_member, 4, .inherited = true}, + [270] = + {field_use_member, 0, .inherited = true}, + {field_use_member, 1, .inherited = true}, + [272] = + {field_address, 0}, + {field_use_member, 3}, + {field_use_member, 4, .inherited = true}, + [275] = + {field_name, 1}, + {field_type, 3}, + [277] = + {field_expr, 5}, + {field_name, 1}, + {field_type, 3}, + [280] = + {field_def, 3}, + {field_name, 1}, + [282] = + {field_condition_properties, 2}, + {field_expr, 3}, + {field_kind, 0}, + [285] = + {field_additional_exp, 3}, + {field_expr, 1}, + {field_kind, 0}, + [288] = + {field_additional_exp, 2}, + {field_additional_exp, 3, .inherited = true}, + {field_condition_properties, 1}, + {field_kind, 0}, + [292] = + {field_condition_properties, 2}, + {field_expr, 3}, + {field_kind, 0}, + {field_modifier, 1}, + [296] = + {field_name_pattern, 1}, + [297] = + {field_name_pattern, 0}, + {field_type_parameters, 1}, + [299] = + {field_name, 0}, + {field_type, 3}, + {field_type_parameters, 1}, + [302] = + {field_name, 3}, + {field_parameters, 5}, + {field_return_type, 6}, + {field_type_parameters, 4}, + [306] = + {field_name, 4}, + {field_parameters, 5}, + {field_return_type, 6}, + [309] = + {field_name, 4}, + {field_parameters, 6}, + {field_type_parameters, 5}, + [312] = + {field_expr, 1}, + {field_ty, 3}, + [314] = + {field_eb, 2}, + {field_et, 4}, + [316] = + {field_body, 4}, + {field_eb, 2}, + [318] = + {field_match_scrutiny, 2}, + [319] = + {field_expr, 2}, + {field_field, 0}, + [321] = + {field_expr, 0}, + {field_idx, 2, .inherited = true}, + {field_idx, 3}, + [324] = + {field_module, 0}, + {field_use_member, 3}, + [326] = + {field_alias, 4}, + {field_member, 2}, + {field_module, 0}, + [329] = + {field_def, 4}, + {field_name, 2}, + [331] = + {field_additional_exp, 4}, + {field_condition_properties, 1}, + {field_expr, 2}, + {field_kind, 0}, + [335] = + {field_name_pattern, 1}, + {field_type_parameters, 2}, + [337] = + {field_name, 1}, + {field_type, 4}, + {field_type_parameters, 2}, + [340] = + {field_name, 4}, + {field_parameters, 6}, + {field_return_type, 7}, + {field_type_parameters, 5}, + [344] = + {field_bind, 2}, + {field_field, 0}, + [346] = + {field_binds, 1}, + {field_expr, 5}, + {field_type, 3}, + [349] = + {field_module, 0}, + {field_use_member, 3}, + {field_use_member, 4, .inherited = true}, + [352] = + {field_eb, 2}, + {field_ef, 6}, + {field_et, 4}, + [355] = + {field_condition, 2}, +}; + +static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { + [0] = {0}, + [4] = { + [0] = alias_sym_module_identifier, + }, + [13] = { + [0] = alias_sym_function_identifier, + }, + [16] = { + [0] = alias_sym_enum_identifier, + }, + [18] = { + [0] = alias_sym_struct_identifier, + }, + [19] = { + [0] = alias_sym_spec_block_target_module, + }, + [42] = { + [0] = alias_sym_variant_identifier, + }, + [45] = { + [0] = alias_sym_field_identifier, + }, + [57] = { + [0] = alias_sym_variable_identifier, + }, + [58] = { + [0] = alias_sym_type_parameter_identifier, + }, + [69] = { + [0] = alias_sym_bind_var, + }, + [91] = { + [1] = alias_sym_bind_var, + }, + [97] = { + [1] = anon_sym_EQ_EQ_GT, + }, + [114] = { + [1] = anon_sym_update, + }, + [134] = { + [1] = alias_sym_constant_identifier, + }, + [139] = { + [1] = anon_sym_update, + }, +}; + +static const uint16_t ts_non_terminal_alias_map[] = { + sym__variable_identifier, 2, + sym__variable_identifier, + alias_sym_bind_var, + 0, +}; + +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 4, + [5] = 5, + [6] = 6, + [7] = 3, + [8] = 2, + [9] = 5, + [10] = 3, + [11] = 6, + [12] = 6, + [13] = 5, + [14] = 3, + [15] = 4, + [16] = 5, + [17] = 6, + [18] = 3, + [19] = 6, + [20] = 5, + [21] = 6, + [22] = 3, + [23] = 5, + [24] = 24, + [25] = 24, + [26] = 26, + [27] = 26, + [28] = 28, + [29] = 29, + [30] = 30, + [31] = 29, + [32] = 32, + [33] = 30, + [34] = 34, + [35] = 35, + [36] = 36, + [37] = 37, + [38] = 38, + [39] = 39, + [40] = 40, + [41] = 41, + [42] = 42, + [43] = 43, + [44] = 44, + [45] = 45, + [46] = 46, + [47] = 47, + [48] = 48, + [49] = 49, + [50] = 50, + [51] = 51, + [52] = 52, + [53] = 53, + [54] = 54, + [55] = 55, + [56] = 55, + [57] = 57, + [58] = 55, + [59] = 59, + [60] = 55, + [61] = 55, + [62] = 55, + [63] = 63, + [64] = 64, + [65] = 65, + [66] = 66, + [67] = 67, + [68] = 68, + [69] = 69, + [70] = 70, + [71] = 71, + [72] = 72, + [73] = 73, + [74] = 74, + [75] = 75, + [76] = 76, + [77] = 72, + [78] = 78, + [79] = 79, + [80] = 80, + [81] = 81, + [82] = 82, + [83] = 83, + [84] = 84, + [85] = 85, + [86] = 68, + [87] = 87, + [88] = 88, + [89] = 89, + [90] = 69, + [91] = 70, + [92] = 71, + [93] = 73, + [94] = 74, + [95] = 76, + [96] = 72, + [97] = 97, + [98] = 75, + [99] = 78, + [100] = 100, + [101] = 101, + [102] = 79, + [103] = 103, + [104] = 80, + [105] = 75, + [106] = 81, + [107] = 82, + [108] = 83, + [109] = 74, + [110] = 85, + [111] = 73, + [112] = 71, + [113] = 70, + [114] = 68, + [115] = 87, + [116] = 88, + [117] = 89, + [118] = 69, + [119] = 70, + [120] = 69, + [121] = 71, + [122] = 73, + [123] = 74, + [124] = 76, + [125] = 72, + [126] = 89, + [127] = 88, + [128] = 78, + [129] = 87, + [130] = 68, + [131] = 85, + [132] = 100, + [133] = 101, + [134] = 97, + [135] = 75, + [136] = 88, + [137] = 137, + [138] = 138, + [139] = 139, + [140] = 87, + [141] = 79, + [142] = 139, + [143] = 143, + [144] = 68, + [145] = 145, + [146] = 80, + [147] = 81, + [148] = 148, + [149] = 82, + [150] = 83, + [151] = 151, + [152] = 152, + [153] = 85, + [154] = 97, + [155] = 85, + [156] = 68, + [157] = 87, + [158] = 88, + [159] = 89, + [160] = 69, + [161] = 70, + [162] = 71, + [163] = 73, + [164] = 74, + [165] = 165, + [166] = 76, + [167] = 72, + [168] = 83, + [169] = 169, + [170] = 170, + [171] = 83, + [172] = 172, + [173] = 82, + [174] = 81, + [175] = 78, + [176] = 100, + [177] = 75, + [178] = 101, + [179] = 80, + [180] = 78, + [181] = 72, + [182] = 76, + [183] = 74, + [184] = 184, + [185] = 185, + [186] = 73, + [187] = 138, + [188] = 71, + [189] = 70, + [190] = 79, + [191] = 139, + [192] = 69, + [193] = 97, + [194] = 194, + [195] = 195, + [196] = 82, + [197] = 197, + [198] = 89, + [199] = 97, + [200] = 75, + [201] = 201, + [202] = 202, + [203] = 103, + [204] = 148, + [205] = 81, + [206] = 206, + [207] = 207, + [208] = 76, + [209] = 209, + [210] = 80, + [211] = 138, + [212] = 79, + [213] = 145, + [214] = 97, + [215] = 215, + [216] = 216, + [217] = 217, + [218] = 78, + [219] = 100, + [220] = 101, + [221] = 80, + [222] = 81, + [223] = 88, + [224] = 139, + [225] = 82, + [226] = 83, + [227] = 138, + [228] = 87, + [229] = 85, + [230] = 89, + [231] = 79, + [232] = 232, + [233] = 233, + [234] = 234, + [235] = 233, + [236] = 232, + [237] = 237, + [238] = 238, + [239] = 239, + [240] = 240, + [241] = 241, + [242] = 242, + [243] = 243, + [244] = 244, + [245] = 245, + [246] = 239, + [247] = 247, + [248] = 248, + [249] = 249, + [250] = 250, + [251] = 251, + [252] = 252, + [253] = 253, + [254] = 254, + [255] = 255, + [256] = 256, + [257] = 233, + [258] = 258, + [259] = 232, + [260] = 260, + [261] = 261, + [262] = 262, + [263] = 263, + [264] = 264, + [265] = 265, + [266] = 266, + [267] = 267, + [268] = 268, + [269] = 269, + [270] = 270, + [271] = 271, + [272] = 272, + [273] = 273, + [274] = 274, + [275] = 275, + [276] = 276, + [277] = 258, + [278] = 278, + [279] = 255, + [280] = 232, + [281] = 281, + [282] = 282, + [283] = 256, + [284] = 254, + [285] = 253, + [286] = 286, + [287] = 287, + [288] = 233, + [289] = 289, + [290] = 290, + [291] = 291, + [292] = 292, + [293] = 254, + [294] = 294, + [295] = 295, + [296] = 296, + [297] = 297, + [298] = 298, + [299] = 299, + [300] = 300, + [301] = 301, + [302] = 302, + [303] = 303, + [304] = 304, + [305] = 278, + [306] = 278, + [307] = 307, + [308] = 308, + [309] = 309, + [310] = 298, + [311] = 311, + [312] = 312, + [313] = 313, + [314] = 314, + [315] = 290, + [316] = 253, + [317] = 258, + [318] = 318, + [319] = 319, + [320] = 320, + [321] = 321, + [322] = 320, + [323] = 321, + [324] = 324, + [325] = 321, + [326] = 320, + [327] = 327, + [328] = 321, + [329] = 329, + [330] = 327, + [331] = 324, + [332] = 327, + [333] = 333, + [334] = 324, + [335] = 335, + [336] = 324, + [337] = 337, + [338] = 324, + [339] = 321, + [340] = 327, + [341] = 320, + [342] = 342, + [343] = 343, + [344] = 344, + [345] = 345, + [346] = 346, + [347] = 347, + [348] = 348, + [349] = 349, + [350] = 350, + [351] = 351, + [352] = 352, + [353] = 353, + [354] = 354, + [355] = 355, + [356] = 356, + [357] = 357, + [358] = 351, + [359] = 343, + [360] = 347, + [361] = 361, + [362] = 362, + [363] = 363, + [364] = 362, + [365] = 365, + [366] = 362, + [367] = 367, + [368] = 268, + [369] = 369, + [370] = 362, + [371] = 347, + [372] = 369, + [373] = 266, + [374] = 272, + [375] = 362, + [376] = 362, + [377] = 343, + [378] = 347, + [379] = 379, + [380] = 260, + [381] = 343, + [382] = 347, + [383] = 343, + [384] = 369, + [385] = 385, + [386] = 264, + [387] = 387, + [388] = 388, + [389] = 263, + [390] = 390, + [391] = 278, + [392] = 369, + [393] = 393, + [394] = 394, + [395] = 395, + [396] = 396, + [397] = 397, + [398] = 398, + [399] = 399, + [400] = 400, + [401] = 401, + [402] = 402, + [403] = 403, + [404] = 404, + [405] = 405, + [406] = 406, + [407] = 234, + [408] = 408, + [409] = 409, + [410] = 410, + [411] = 411, + [412] = 412, + [413] = 413, + [414] = 414, + [415] = 415, + [416] = 416, + [417] = 417, + [418] = 418, + [419] = 419, + [420] = 400, + [421] = 421, + [422] = 422, + [423] = 423, + [424] = 424, + [425] = 278, + [426] = 271, + [427] = 427, + [428] = 270, + [429] = 429, + [430] = 430, + [431] = 282, + [432] = 432, + [433] = 433, + [434] = 434, + [435] = 435, + [436] = 436, + [437] = 437, + [438] = 438, + [439] = 439, + [440] = 440, + [441] = 441, + [442] = 442, + [443] = 443, + [444] = 444, + [445] = 445, + [446] = 446, + [447] = 388, + [448] = 342, + [449] = 357, + [450] = 269, + [451] = 395, + [452] = 390, + [453] = 385, + [454] = 286, + [455] = 273, + [456] = 304, + [457] = 313, + [458] = 318, + [459] = 275, + [460] = 289, + [461] = 461, + [462] = 462, + [463] = 301, + [464] = 278, + [465] = 465, + [466] = 300, + [467] = 467, + [468] = 299, + [469] = 295, + [470] = 470, + [471] = 471, + [472] = 472, + [473] = 265, + [474] = 474, + [475] = 475, + [476] = 276, + [477] = 267, + [478] = 478, + [479] = 395, + [480] = 461, + [481] = 481, + [482] = 482, + [483] = 385, + [484] = 390, + [485] = 395, + [486] = 461, + [487] = 357, + [488] = 388, + [489] = 385, + [490] = 490, + [491] = 491, + [492] = 390, + [493] = 493, + [494] = 388, + [495] = 357, + [496] = 496, + [497] = 497, + [498] = 498, + [499] = 499, + [500] = 500, + [501] = 501, + [502] = 502, + [503] = 503, + [504] = 504, + [505] = 505, + [506] = 506, + [507] = 507, + [508] = 508, + [509] = 390, + [510] = 510, + [511] = 511, + [512] = 512, + [513] = 513, + [514] = 514, + [515] = 515, + [516] = 516, + [517] = 517, + [518] = 518, + [519] = 519, + [520] = 520, + [521] = 521, + [522] = 522, + [523] = 385, + [524] = 524, + [525] = 525, + [526] = 526, + [527] = 527, + [528] = 385, + [529] = 388, + [530] = 530, + [531] = 395, + [532] = 357, + [533] = 533, + [534] = 390, + [535] = 535, + [536] = 536, + [537] = 537, + [538] = 395, + [539] = 357, + [540] = 388, + [541] = 541, + [542] = 542, + [543] = 385, + [544] = 395, + [545] = 542, + [546] = 388, + [547] = 390, + [548] = 542, + [549] = 390, + [550] = 385, + [551] = 357, + [552] = 357, + [553] = 542, + [554] = 542, + [555] = 395, + [556] = 542, + [557] = 557, + [558] = 542, + [559] = 542, + [560] = 560, + [561] = 557, + [562] = 388, + [563] = 563, + [564] = 563, + [565] = 563, + [566] = 563, + [567] = 563, + [568] = 563, + [569] = 563, + [570] = 563, + [571] = 563, + [572] = 563, + [573] = 563, + [574] = 512, + [575] = 575, + [576] = 527, + [577] = 530, + [578] = 537, + [579] = 524, + [580] = 535, + [581] = 535, + [582] = 520, + [583] = 518, + [584] = 584, + [585] = 530, + [586] = 521, + [587] = 516, + [588] = 537, + [589] = 589, + [590] = 527, + [591] = 507, + [592] = 519, + [593] = 515, + [594] = 521, + [595] = 513, + [596] = 498, + [597] = 519, + [598] = 526, + [599] = 525, + [600] = 504, + [601] = 527, + [602] = 501, + [603] = 502, + [604] = 511, + [605] = 510, + [606] = 526, + [607] = 525, + [608] = 501, + [609] = 502, + [610] = 508, + [611] = 503, + [612] = 503, + [613] = 498, + [614] = 505, + [615] = 506, + [616] = 508, + [617] = 510, + [618] = 511, + [619] = 512, + [620] = 513, + [621] = 515, + [622] = 506, + [623] = 516, + [624] = 518, + [625] = 520, + [626] = 522, + [627] = 505, + [628] = 499, + [629] = 498, + [630] = 506, + [631] = 520, + [632] = 501, + [633] = 633, + [634] = 535, + [635] = 519, + [636] = 518, + [637] = 502, + [638] = 503, + [639] = 526, + [640] = 505, + [641] = 537, + [642] = 530, + [643] = 633, + [644] = 633, + [645] = 516, + [646] = 508, + [647] = 633, + [648] = 525, + [649] = 510, + [650] = 511, + [651] = 512, + [652] = 513, + [653] = 515, + [654] = 654, + [655] = 654, + [656] = 654, + [657] = 654, + [658] = 658, + [659] = 654, + [660] = 654, + [661] = 658, + [662] = 658, + [663] = 654, + [664] = 654, + [665] = 654, + [666] = 654, + [667] = 654, + [668] = 658, + [669] = 513, + [670] = 510, + [671] = 520, + [672] = 518, + [673] = 516, + [674] = 519, + [675] = 526, + [676] = 525, + [677] = 501, + [678] = 502, + [679] = 503, + [680] = 527, + [681] = 521, + [682] = 498, + [683] = 505, + [684] = 506, + [685] = 508, + [686] = 515, + [687] = 537, + [688] = 512, + [689] = 535, + [690] = 530, + [691] = 527, + [692] = 511, + [693] = 537, + [694] = 530, + [695] = 502, + [696] = 512, + [697] = 501, + [698] = 511, + [699] = 699, + [700] = 525, + [701] = 510, + [702] = 508, + [703] = 526, + [704] = 506, + [705] = 505, + [706] = 513, + [707] = 519, + [708] = 498, + [709] = 520, + [710] = 503, + [711] = 535, + [712] = 515, + [713] = 518, + [714] = 516, + [715] = 715, + [716] = 716, + [717] = 717, + [718] = 718, + [719] = 719, + [720] = 274, + [721] = 721, + [722] = 722, + [723] = 723, + [724] = 724, + [725] = 725, + [726] = 726, + [727] = 727, + [728] = 728, + [729] = 729, + [730] = 730, + [731] = 731, + [732] = 732, + [733] = 733, + [734] = 734, + [735] = 735, + [736] = 736, + [737] = 737, + [738] = 738, + [739] = 728, + [740] = 740, + [741] = 741, + [742] = 736, + [743] = 743, + [744] = 744, + [745] = 745, + [746] = 731, + [747] = 747, + [748] = 748, + [749] = 749, + [750] = 294, + [751] = 751, + [752] = 303, + [753] = 753, + [754] = 754, + [755] = 749, + [756] = 753, + [757] = 757, + [758] = 749, + [759] = 753, + [760] = 749, + [761] = 753, + [762] = 762, + [763] = 763, + [764] = 764, + [765] = 765, + [766] = 766, + [767] = 767, + [768] = 768, + [769] = 769, + [770] = 314, + [771] = 771, + [772] = 772, + [773] = 773, + [774] = 749, + [775] = 775, + [776] = 776, + [777] = 777, + [778] = 778, + [779] = 779, + [780] = 780, + [781] = 749, + [782] = 782, + [783] = 753, + [784] = 775, + [785] = 753, + [786] = 786, + [787] = 427, + [788] = 788, + [789] = 789, + [790] = 790, + [791] = 791, + [792] = 792, + [793] = 793, + [794] = 481, + [795] = 795, + [796] = 245, + [797] = 797, + [798] = 252, + [799] = 799, + [800] = 800, + [801] = 801, + [802] = 802, + [803] = 803, + [804] = 804, + [805] = 805, + [806] = 490, + [807] = 807, + [808] = 808, + [809] = 809, + [810] = 810, + [811] = 811, + [812] = 249, + [813] = 247, + [814] = 814, + [815] = 815, + [816] = 241, + [817] = 817, + [818] = 243, + [819] = 819, + [820] = 250, + [821] = 821, + [822] = 822, + [823] = 823, + [824] = 824, + [825] = 825, + [826] = 826, + [827] = 827, + [828] = 828, + [829] = 829, + [830] = 830, + [831] = 238, + [832] = 832, + [833] = 833, + [834] = 834, + [835] = 835, + [836] = 836, + [837] = 837, + [838] = 838, + [839] = 839, + [840] = 840, + [841] = 841, + [842] = 282, + [843] = 843, + [844] = 304, + [845] = 313, + [846] = 289, + [847] = 318, + [848] = 299, + [849] = 301, + [850] = 272, + [851] = 295, + [852] = 300, + [853] = 268, + [854] = 854, + [855] = 855, + [856] = 286, + [857] = 857, + [858] = 858, + [859] = 859, + [860] = 860, + [861] = 861, + [862] = 862, + [863] = 863, + [864] = 864, + [865] = 865, + [866] = 866, + [867] = 867, + [868] = 868, + [869] = 869, + [870] = 870, + [871] = 871, + [872] = 872, + [873] = 873, + [874] = 874, + [875] = 875, + [876] = 876, + [877] = 303, + [878] = 878, + [879] = 266, + [880] = 880, + [881] = 881, + [882] = 882, + [883] = 294, + [884] = 884, + [885] = 885, + [886] = 886, + [887] = 887, + [888] = 888, + [889] = 889, + [890] = 890, + [891] = 891, + [892] = 892, + [893] = 893, + [894] = 894, + [895] = 895, + [896] = 268, + [897] = 897, + [898] = 272, + [899] = 286, + [900] = 900, + [901] = 901, + [902] = 266, + [903] = 900, + [904] = 904, + [905] = 900, + [906] = 906, + [907] = 900, + [908] = 900, + [909] = 909, + [910] = 897, + [911] = 911, + [912] = 379, + [913] = 913, + [914] = 914, + [915] = 266, + [916] = 913, + [917] = 914, + [918] = 914, + [919] = 919, + [920] = 913, + [921] = 921, + [922] = 337, + [923] = 350, + [924] = 924, + [925] = 925, + [926] = 422, + [927] = 927, + [928] = 928, + [929] = 929, + [930] = 930, + [931] = 931, + [932] = 932, + [933] = 933, + [934] = 423, + [935] = 935, + [936] = 936, + [937] = 937, + [938] = 938, + [939] = 939, + [940] = 940, + [941] = 941, + [942] = 942, + [943] = 254, + [944] = 944, + [945] = 945, + [946] = 258, + [947] = 947, + [948] = 948, + [949] = 949, + [950] = 950, + [951] = 253, + [952] = 952, + [953] = 953, + [954] = 954, + [955] = 955, + [956] = 956, + [957] = 957, + [958] = 958, + [959] = 897, + [960] = 960, + [961] = 961, + [962] = 962, + [963] = 963, + [964] = 964, + [965] = 965, + [966] = 966, + [967] = 342, + [968] = 968, + [969] = 969, + [970] = 970, + [971] = 971, + [972] = 972, + [973] = 973, + [974] = 974, + [975] = 974, + [976] = 976, + [977] = 977, + [978] = 978, + [979] = 965, + [980] = 980, + [981] = 981, + [982] = 266, + [983] = 958, + [984] = 984, + [985] = 969, + [986] = 971, + [987] = 968, + [988] = 988, + [989] = 989, + [990] = 969, + [991] = 969, + [992] = 962, + [993] = 993, + [994] = 973, + [995] = 995, + [996] = 996, + [997] = 964, + [998] = 970, + [999] = 999, + [1000] = 961, + [1001] = 1001, + [1002] = 1002, + [1003] = 963, + [1004] = 1004, + [1005] = 968, + [1006] = 266, + [1007] = 961, + [1008] = 1008, + [1009] = 962, + [1010] = 963, + [1011] = 965, + [1012] = 968, + [1013] = 1013, + [1014] = 965, + [1015] = 970, + [1016] = 961, + [1017] = 963, + [1018] = 964, + [1019] = 973, + [1020] = 974, + [1021] = 1021, + [1022] = 962, + [1023] = 958, + [1024] = 1024, + [1025] = 1025, + [1026] = 970, + [1027] = 974, + [1028] = 974, + [1029] = 973, + [1030] = 964, + [1031] = 969, + [1032] = 973, + [1033] = 1033, + [1034] = 1034, + [1035] = 963, + [1036] = 961, + [1037] = 970, + [1038] = 968, + [1039] = 1039, + [1040] = 971, + [1041] = 964, + [1042] = 969, + [1043] = 1043, + [1044] = 969, + [1045] = 965, + [1046] = 962, + [1047] = 1047, + [1048] = 961, + [1049] = 964, + [1050] = 973, + [1051] = 974, + [1052] = 969, + [1053] = 965, + [1054] = 968, + [1055] = 962, + [1056] = 970, + [1057] = 961, + [1058] = 963, + [1059] = 1059, + [1060] = 1060, + [1061] = 969, + [1062] = 1062, + [1063] = 969, + [1064] = 1064, + [1065] = 260, + [1066] = 1066, + [1067] = 962, + [1068] = 1068, + [1069] = 1069, + [1070] = 958, + [1071] = 974, + [1072] = 1072, + [1073] = 1073, + [1074] = 1074, + [1075] = 965, + [1076] = 1076, + [1077] = 1077, + [1078] = 963, + [1079] = 1079, + [1080] = 973, + [1081] = 1081, + [1082] = 968, + [1083] = 961, + [1084] = 970, + [1085] = 964, + [1086] = 970, + [1087] = 963, + [1088] = 961, + [1089] = 1089, + [1090] = 968, + [1091] = 1091, + [1092] = 970, + [1093] = 963, + [1094] = 964, + [1095] = 1095, + [1096] = 968, + [1097] = 965, + [1098] = 973, + [1099] = 1099, + [1100] = 965, + [1101] = 1101, + [1102] = 1102, + [1103] = 1103, + [1104] = 1104, + [1105] = 962, + [1106] = 974, + [1107] = 962, + [1108] = 965, + [1109] = 962, + [1110] = 1110, + [1111] = 1111, + [1112] = 1112, + [1113] = 968, + [1114] = 1114, + [1115] = 970, + [1116] = 961, + [1117] = 1117, + [1118] = 1118, + [1119] = 1119, + [1120] = 1120, + [1121] = 963, + [1122] = 1122, + [1123] = 1123, + [1124] = 974, + [1125] = 973, + [1126] = 964, + [1127] = 971, + [1128] = 1128, + [1129] = 964, + [1130] = 973, + [1131] = 974, + [1132] = 1132, + [1133] = 1133, + [1134] = 1134, + [1135] = 1135, + [1136] = 1136, + [1137] = 1137, + [1138] = 1138, + [1139] = 1139, + [1140] = 1140, + [1141] = 1141, + [1142] = 1142, + [1143] = 974, + [1144] = 973, + [1145] = 964, + [1146] = 963, + [1147] = 961, + [1148] = 1148, + [1149] = 970, + [1150] = 1150, + [1151] = 968, + [1152] = 965, + [1153] = 962, + [1154] = 958, + [1155] = 1155, + [1156] = 1156, + [1157] = 1157, + [1158] = 1158, + [1159] = 1159, + [1160] = 342, + [1161] = 1161, + [1162] = 1162, + [1163] = 1163, + [1164] = 1164, + [1165] = 1165, + [1166] = 1166, + [1167] = 1167, + [1168] = 1168, + [1169] = 1169, + [1170] = 1170, + [1171] = 1171, + [1172] = 1172, + [1173] = 1173, + [1174] = 1174, + [1175] = 1175, + [1176] = 1176, + [1177] = 1177, + [1178] = 1178, + [1179] = 1179, + [1180] = 969, + [1181] = 1181, + [1182] = 1182, + [1183] = 1183, + [1184] = 1184, + [1185] = 1185, + [1186] = 1186, + [1187] = 1187, + [1188] = 1188, + [1189] = 1189, + [1190] = 1190, + [1191] = 1191, + [1192] = 1192, + [1193] = 1193, + [1194] = 1194, + [1195] = 1195, + [1196] = 1196, + [1197] = 1197, + [1198] = 1198, + [1199] = 958, + [1200] = 1200, + [1201] = 1201, + [1202] = 1202, + [1203] = 1203, + [1204] = 1204, + [1205] = 1205, + [1206] = 1206, + [1207] = 1207, + [1208] = 958, + [1209] = 1209, + [1210] = 1210, + [1211] = 1211, + [1212] = 1212, + [1213] = 1213, + [1214] = 1214, + [1215] = 1215, + [1216] = 1201, + [1217] = 1217, + [1218] = 1218, + [1219] = 1219, + [1220] = 1220, + [1221] = 1221, + [1222] = 1222, + [1223] = 1223, + [1224] = 1224, + [1225] = 1225, + [1226] = 1217, + [1227] = 1227, + [1228] = 1228, + [1229] = 1229, + [1230] = 1230, + [1231] = 1210, + [1232] = 1232, + [1233] = 1233, + [1234] = 1234, + [1235] = 1235, + [1236] = 1236, + [1237] = 1237, + [1238] = 1238, + [1239] = 1239, + [1240] = 1240, + [1241] = 1241, + [1242] = 1242, + [1243] = 1243, + [1244] = 1244, + [1245] = 1245, + [1246] = 1217, + [1247] = 1247, + [1248] = 1248, + [1249] = 1249, + [1250] = 1250, + [1251] = 1251, + [1252] = 1252, + [1253] = 1253, + [1254] = 1254, + [1255] = 1255, + [1256] = 1210, + [1257] = 1257, + [1258] = 1213, + [1259] = 1259, + [1260] = 1260, + [1261] = 1261, + [1262] = 1262, + [1263] = 1263, + [1264] = 1241, + [1265] = 1210, + [1266] = 1266, + [1267] = 1267, + [1268] = 1268, + [1269] = 1269, + [1270] = 1270, + [1271] = 1271, + [1272] = 1272, + [1273] = 1273, + [1274] = 1274, + [1275] = 1275, + [1276] = 1276, + [1277] = 1277, + [1278] = 1278, + [1279] = 1279, + [1280] = 1280, + [1281] = 1281, + [1282] = 1282, + [1283] = 1201, + [1284] = 1284, + [1285] = 1285, + [1286] = 1286, + [1287] = 1287, + [1288] = 1288, + [1289] = 1289, + [1290] = 1290, + [1291] = 1291, + [1292] = 1232, + [1293] = 342, + [1294] = 1294, + [1295] = 1295, + [1296] = 1296, + [1297] = 1297, + [1298] = 1207, + [1299] = 1299, + [1300] = 1300, + [1301] = 1301, + [1302] = 1302, + [1303] = 1303, + [1304] = 1304, + [1305] = 1305, + [1306] = 1306, + [1307] = 1307, + [1308] = 1308, + [1309] = 1217, + [1310] = 1310, + [1311] = 1311, + [1312] = 1312, + [1313] = 1313, + [1314] = 1314, + [1315] = 1315, + [1316] = 1201, + [1317] = 1317, + [1318] = 1318, + [1319] = 1319, + [1320] = 1320, + [1321] = 1321, + [1322] = 1322, + [1323] = 1323, + [1324] = 1324, + [1325] = 1325, + [1326] = 1326, + [1327] = 1327, + [1328] = 1328, + [1329] = 1329, + [1330] = 1330, + [1331] = 1331, + [1332] = 1332, + [1333] = 1333, + [1334] = 1334, + [1335] = 1335, + [1336] = 1336, + [1337] = 1337, + [1338] = 1338, + [1339] = 1339, + [1340] = 1340, + [1341] = 1341, + [1342] = 1319, + [1343] = 1343, + [1344] = 1344, + [1345] = 1345, + [1346] = 1346, + [1347] = 1347, + [1348] = 1296, + [1349] = 1349, + [1350] = 1350, + [1351] = 1351, + [1352] = 1352, + [1353] = 1319, + [1354] = 1354, + [1355] = 1355, + [1356] = 1356, + [1357] = 1357, + [1358] = 1358, + [1359] = 1359, + [1360] = 1360, + [1361] = 1361, + [1362] = 1362, + [1363] = 1363, + [1364] = 1364, + [1365] = 1365, + [1366] = 1366, + [1367] = 1367, + [1368] = 1368, + [1369] = 1369, + [1370] = 1327, + [1371] = 1371, + [1372] = 1361, + [1373] = 1373, + [1374] = 1322, + [1375] = 1375, + [1376] = 1376, + [1377] = 1377, + [1378] = 1378, + [1379] = 1379, + [1380] = 1380, + [1381] = 1381, + [1382] = 1382, + [1383] = 1383, + [1384] = 1384, + [1385] = 1385, + [1386] = 1386, + [1387] = 1387, + [1388] = 1388, + [1389] = 1389, + [1390] = 1390, + [1391] = 1391, + [1392] = 1392, + [1393] = 1393, + [1394] = 1394, + [1395] = 1390, + [1396] = 1396, + [1397] = 1397, + [1398] = 1398, + [1399] = 1391, + [1400] = 1400, + [1401] = 1401, + [1402] = 1402, + [1403] = 1403, + [1404] = 1404, + [1405] = 1405, + [1406] = 1361, + [1407] = 1407, + [1408] = 1408, + [1409] = 1319, + [1410] = 1321, + [1411] = 1411, + [1412] = 1412, + [1413] = 1413, + [1414] = 1414, + [1415] = 1415, + [1416] = 1416, + [1417] = 1417, + [1418] = 1418, + [1419] = 1419, + [1420] = 1420, + [1421] = 1421, + [1422] = 1319, + [1423] = 1423, + [1424] = 1361, + [1425] = 1425, + [1426] = 1426, + [1427] = 1427, + [1428] = 1428, + [1429] = 958, + [1430] = 1430, + [1431] = 1431, + [1432] = 1432, + [1433] = 1319, + [1434] = 1434, + [1435] = 1435, + [1436] = 1436, + [1437] = 1437, + [1438] = 1438, + [1439] = 1439, + [1440] = 1440, + [1441] = 1441, + [1442] = 1442, + [1443] = 1443, + [1444] = 1444, + [1445] = 1445, + [1446] = 1446, + [1447] = 1446, + [1448] = 1448, + [1449] = 1449, + [1450] = 1450, + [1451] = 1441, + [1452] = 1452, + [1453] = 1453, + [1454] = 1454, + [1455] = 1455, + [1456] = 1456, + [1457] = 1450, + [1458] = 1458, + [1459] = 1459, + [1460] = 1460, + [1461] = 1461, + [1462] = 1462, + [1463] = 1463, + [1464] = 1464, + [1465] = 1465, + [1466] = 1466, + [1467] = 1467, + [1468] = 1468, + [1469] = 1469, + [1470] = 1470, + [1471] = 1444, + [1472] = 1450, + [1473] = 1456, + [1474] = 1462, + [1475] = 1475, + [1476] = 1476, + [1477] = 1477, + [1478] = 1478, + [1479] = 1479, + [1480] = 1480, + [1481] = 1481, + [1482] = 1482, + [1483] = 1483, + [1484] = 1484, + [1485] = 1470, + [1486] = 1486, + [1487] = 1487, + [1488] = 1488, + [1489] = 1489, + [1490] = 1490, + [1491] = 1491, + [1492] = 1459, + [1493] = 1493, + [1494] = 1494, + [1495] = 1495, + [1496] = 1496, + [1497] = 1497, + [1498] = 1498, + [1499] = 1499, + [1500] = 1500, + [1501] = 1470, + [1502] = 1502, + [1503] = 1503, + [1504] = 1446, + [1505] = 1480, + [1506] = 1506, + [1507] = 1445, + [1508] = 1508, + [1509] = 1462, + [1510] = 1510, + [1511] = 1511, + [1512] = 1512, + [1513] = 1513, + [1514] = 1514, + [1515] = 1515, + [1516] = 1446, + [1517] = 1456, + [1518] = 1475, + [1519] = 1458, + [1520] = 1459, + [1521] = 1521, + [1522] = 1462, + [1523] = 1464, + [1524] = 1484, + [1525] = 1500, + [1526] = 1526, + [1527] = 1527, + [1528] = 1528, + [1529] = 1458, + [1530] = 1530, + [1531] = 1531, + [1532] = 1532, + [1533] = 1464, + [1534] = 1534, + [1535] = 1475, + [1536] = 1536, + [1537] = 1537, + [1538] = 1538, + [1539] = 1539, + [1540] = 1540, + [1541] = 1541, + [1542] = 1542, + [1543] = 1515, + [1544] = 1480, + [1545] = 1446, + [1546] = 1546, + [1547] = 1510, + [1548] = 1548, + [1549] = 1549, + [1550] = 1550, + [1551] = 1551, + [1552] = 1552, + [1553] = 1553, + [1554] = 1554, + [1555] = 1555, + [1556] = 1556, + [1557] = 1557, + [1558] = 1558, + [1559] = 1441, + [1560] = 1446, + [1561] = 1561, + [1562] = 1562, + [1563] = 1563, +}; + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(45); + ADVANCE_MAP( + '\n', 153, + '!', 92, + '#', 33, + '$', 88, + '%', 121, + '&', 114, + '\'', 122, + '(', 55, + ')', 56, + '*', 119, + '+', 100, + ',', 53, + '-', 118, + '.', 50, + '/', 120, + '0', 127, + ':', 64, + ';', 48, + '<', 94, + '=', 61, + '>', 96, + '@', 90, + '[', 65, + ']', 58, + '^', 112, + '`', 41, + 'b', 133, + 'e', 150, + 'p', 149, + 'v', 141, + 'x', 134, + '{', 52, + '|', 99, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 1: + ADVANCE_MAP( + '\n', 153, + '!', 92, + '#', 33, + '$', 88, + '%', 121, + '&', 114, + '\'', 122, + '(', 55, + ')', 56, + '*', 119, + '+', 100, + ',', 53, + '-', 117, + '.', 50, + '/', 120, + '0', 127, + ':', 64, + ';', 48, + '<', 94, + '=', 60, + '>', 96, + '@', 90, + '[', 65, + ']', 58, + '^', 112, + '`', 41, + 'b', 133, + 'v', 141, + 'x', 134, + '{', 52, + '|', 99, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 2: + ADVANCE_MAP( + '\n', 153, + '!', 92, + '#', 33, + '$', 88, + '%', 121, + '&', 114, + '(', 55, + ')', 56, + '*', 119, + '+', 100, + ',', 53, + '-', 117, + '.', 50, + '/', 120, + '0', 127, + ':', 64, + ';', 48, + '<', 94, + '=', 60, + '>', 96, + '@', 90, + '[', 65, + ']', 58, + '^', 112, + '`', 41, + 'b', 133, + 'x', 134, + '{', 52, + '|', 99, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 3: + ADVANCE_MAP( + '\n', 153, + '!', 91, + '#', 33, + '$', 88, + '&', 113, + '\'', 122, + '(', 55, + ')', 56, + '*', 119, + '+', 100, + ',', 53, + '-', 31, + '/', 19, + '0', 127, + ':', 64, + ';', 48, + '<', 93, + '=', 59, + '>', 95, + '@', 90, + '`', 41, + 'b', 133, + 'p', 149, + 'v', 141, + 'x', 134, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 4: + ADVANCE_MAP( + '\n', 153, + '!', 91, + '#', 33, + '$', 88, + '&', 113, + '\'', 122, + '(', 55, + ')', 56, + '*', 119, + ',', 53, + '-', 31, + '.', 49, + '/', 19, + '0', 127, + ':', 64, + ';', 48, + '<', 93, + '=', 62, + '>', 95, + '@', 90, + '[', 65, + ']', 58, + '`', 41, + 'b', 133, + 'v', 141, + 'x', 134, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 5: + ADVANCE_MAP( + '\n', 153, + '!', 91, + '#', 33, + '$', 88, + '&', 113, + '\'', 122, + '(', 55, + ')', 56, + '*', 119, + ',', 53, + '-', 31, + '/', 19, + '0', 127, + ':', 29, + ';', 48, + '<', 93, + '=', 59, + '>', 95, + '@', 90, + '`', 41, + 'b', 133, + 'v', 141, + 'x', 134, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 6: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '$', 88, + '&', 113, + '(', 55, + ')', 56, + ',', 53, + '-', 31, + '/', 19, + '0', 127, + ':', 63, + ';', 48, + '=', 59, + '>', 95, + '@', 89, + '`', 41, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 7: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '$', 88, + '(', 55, + ')', 56, + ',', 53, + '.', 49, + '/', 19, + '0', 127, + ':', 29, + '<', 93, + '=', 32, + '@', 90, + ']', 58, + '`', 41, + 'b', 133, + 'x', 134, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 8: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '$', 88, + '(', 55, + ')', 56, + ',', 53, + '/', 19, + '0', 127, + ':', 64, + ';', 48, + '<', 93, + '=', 59, + '>', 95, + '@', 90, + '`', 41, + 'b', 133, + 'x', 134, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 9: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '(', 55, + ')', 56, + ',', 53, + '.', 49, + '/', 19, + ':', 64, + ';', 48, + '<', 93, + '=', 62, + '>', 95, + '@', 89, + ']', 58, + '`', 41, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 10: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '(', 55, + ')', 56, + ',', 53, + '.', 49, + '/', 19, + ':', 63, + ';', 48, + '<', 93, + '=', 62, + '>', 95, + ']', 58, + '`', 41, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 11: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '(', 55, + ')', 56, + ',', 53, + '/', 19, + ':', 64, + ';', 48, + '<', 93, + '=', 59, + '@', 89, + 'e', 86, + 'i', 79, + 'p', 85, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 12: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '(', 55, + ')', 56, + ',', 53, + '/', 19, + ':', 29, + '<', 93, + '=', 32, + '@', 89, + '`', 41, + '{', 52, + '|', 98, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 13: + ADVANCE_MAP( + '\n', 153, + '#', 33, + '(', 55, + ',', 53, + '/', 19, + ':', 63, + ';', 48, + '`', 41, + 'e', 150, + '{', 52, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 14: + if (lookahead == '\n') ADVANCE(153); + if (lookahead == '#') ADVANCE(33); + if (lookahead == ',') ADVANCE(53); + if (lookahead == '/') ADVANCE(19); + if (lookahead == ';') ADVANCE(48); + if (lookahead == '<') ADVANCE(93); + if (lookahead == 'e') ADVANCE(38); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + END_STATE(); + case 15: + if (lookahead == '\n') ADVANCE(153); + if (lookahead == '#') ADVANCE(33); + if (lookahead == '/') ADVANCE(19); + if (lookahead == ';') ADVANCE(48); + if (lookahead == 'i') ADVANCE(79); + if (lookahead == 'p') ADVANCE(85); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 16: + if (lookahead == '\n') ADVANCE(153); + if (lookahead == '#') ADVANCE(33); + if (lookahead == '/') ADVANCE(19); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 17: + if (lookahead == '"') ADVANCE(131); + if (lookahead == '\\') ADVANCE(42); + if (lookahead != 0) ADVANCE(17); + END_STATE(); + case 18: + if (lookahead == '"') ADVANCE(130); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(18); + END_STATE(); + case 19: + if (lookahead == '*') ADVANCE(21); + if (lookahead == '/') ADVANCE(152); + END_STATE(); + case 20: + if (lookahead == '*') ADVANCE(20); + if (lookahead == '/') ADVANCE(155); + if (lookahead != 0) ADVANCE(21); + END_STATE(); + case 21: + if (lookahead == '*') ADVANCE(20); + if (lookahead != 0) ADVANCE(21); + END_STATE(); + case 22: + if (lookahead == '1') ADVANCE(24); + if (lookahead == '2') ADVANCE(26); + if (lookahead == '3') ADVANCE(23); + if (lookahead == '6') ADVANCE(25); + if (lookahead == '8') ADVANCE(126); + END_STATE(); + case 23: + if (lookahead == '2') ADVANCE(126); + END_STATE(); + case 24: + if (lookahead == '2') ADVANCE(28); + if (lookahead == '6') ADVANCE(126); + END_STATE(); + case 25: + if (lookahead == '4') ADVANCE(126); + END_STATE(); + case 26: + if (lookahead == '5') ADVANCE(27); + END_STATE(); + case 27: + if (lookahead == '6') ADVANCE(126); + END_STATE(); + case 28: + if (lookahead == '8') ADVANCE(126); + END_STATE(); + case 29: + if (lookahead == ':') ADVANCE(51); + END_STATE(); + case 30: + if (lookahead == '=') ADVANCE(108); + END_STATE(); + case 31: + if (lookahead == '>') ADVANCE(97); + END_STATE(); + case 32: + if (lookahead == '>') ADVANCE(103); + END_STATE(); + case 33: + if (lookahead == '[') ADVANCE(57); + END_STATE(); + case 34: + if (lookahead == 'c') ADVANCE(35); + END_STATE(); + case 35: + if (lookahead == 'e') ADVANCE(36); + END_STATE(); + case 36: + if (lookahead == 'p') ADVANCE(37); + END_STATE(); + case 37: + if (lookahead == 't') ADVANCE(66); + END_STATE(); + case 38: + if (lookahead == 'x') ADVANCE(34); + END_STATE(); + case 39: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(125); + END_STATE(); + case 40: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(129); + END_STATE(); + case 41: + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 42: + if (lookahead != 0 && + lookahead != '\n') ADVANCE(17); + END_STATE(); + case 43: + if (eof) ADVANCE(45); + ADVANCE_MAP( + '\n', 153, + '!', 92, + '#', 33, + '$', 88, + '%', 121, + '&', 114, + '\'', 122, + '(', 55, + ')', 56, + '*', 119, + '+', 100, + ',', 53, + '-', 118, + '.', 50, + '/', 120, + '0', 127, + ':', 63, + ';', 48, + '<', 94, + '=', 60, + '>', 96, + '@', 89, + '[', 65, + ']', 58, + '^', 112, + '`', 41, + '{', 52, + '|', 99, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(128); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 44: + if (eof) ADVANCE(45); + ADVANCE_MAP( + '\n', 153, + '!', 30, + '#', 33, + '%', 121, + '&', 114, + '(', 55, + ')', 56, + '*', 119, + '+', 100, + ',', 53, + '-', 117, + '.', 50, + '/', 120, + ':', 63, + ';', 48, + '<', 94, + '=', 60, + '>', 96, + '[', 65, + ']', 58, + '^', 112, + '`', 41, + 'p', 149, + '|', 99, + '}', 54, + ); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ') ADVANCE(154); + if (('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 45: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 46: + ACCEPT_TOKEN(anon_sym_public); + if (lookahead == '`') ADVANCE(132); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 47: + ACCEPT_TOKEN(anon_sym_public); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 48: + ACCEPT_TOKEN(anon_sym_SEMI); + END_STATE(); + case 49: + ACCEPT_TOKEN(anon_sym_DOT); + END_STATE(); + case 50: + ACCEPT_TOKEN(anon_sym_DOT); + if (lookahead == '.') ADVANCE(111); + END_STATE(); + case 51: + ACCEPT_TOKEN(anon_sym_COLON_COLON); + END_STATE(); + case 52: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 53: + ACCEPT_TOKEN(anon_sym_COMMA); + END_STATE(); + case 54: + ACCEPT_TOKEN(anon_sym_RBRACE); + END_STATE(); + case 55: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 56: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + case 57: + ACCEPT_TOKEN(anon_sym_POUND_LBRACK); + END_STATE(); + case 58: + ACCEPT_TOKEN(anon_sym_RBRACK); + END_STATE(); + case 59: + ACCEPT_TOKEN(anon_sym_EQ); + END_STATE(); + case 60: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(107); + END_STATE(); + case 61: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(107); + if (lookahead == '>') ADVANCE(103); + END_STATE(); + case 62: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '>') ADVANCE(103); + END_STATE(); + case 63: + ACCEPT_TOKEN(anon_sym_COLON); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_COLON); + if (lookahead == ':') ADVANCE(51); + END_STATE(); + case 65: + ACCEPT_TOKEN(anon_sym_LBRACK); + END_STATE(); + case 66: + ACCEPT_TOKEN(anon_sym_except); + END_STATE(); + case 67: + ACCEPT_TOKEN(anon_sym_except); + if (lookahead == '`') ADVANCE(132); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 68: + ACCEPT_TOKEN(anon_sym_except); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 69: + ACCEPT_TOKEN(anon_sym_internal); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 70: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'a') ADVANCE(78); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 71: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'b') ADVANCE(77); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 72: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'c') ADVANCE(74); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 73: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'c') ADVANCE(47); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 74: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'e') ADVANCE(81); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 75: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'e') ADVANCE(82); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 76: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'i') ADVANCE(73); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 77: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'l') ADVANCE(76); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 78: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'l') ADVANCE(69); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 79: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'n') ADVANCE(84); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 80: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'n') ADVANCE(70); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 81: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'p') ADVANCE(83); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 82: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'r') ADVANCE(80); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 83: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 't') ADVANCE(68); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 84: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 't') ADVANCE(75); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 85: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'u') ADVANCE(71); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 86: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == 'x') ADVANCE(72); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 87: + ACCEPT_TOKEN(sym_spec_apply_name_pattern); + if (lookahead == '*' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(87); + END_STATE(); + case 88: + ACCEPT_TOKEN(anon_sym_DOLLAR); + END_STATE(); + case 89: + ACCEPT_TOKEN(anon_sym_AT); + END_STATE(); + case 90: + ACCEPT_TOKEN(anon_sym_AT); + if (lookahead == '0') ADVANCE(123); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(124); + END_STATE(); + case 91: + ACCEPT_TOKEN(anon_sym_BANG); + END_STATE(); + case 92: + ACCEPT_TOKEN(anon_sym_BANG); + if (lookahead == '=') ADVANCE(108); + END_STATE(); + case 93: + ACCEPT_TOKEN(anon_sym_LT); + END_STATE(); + case 94: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '<') ADVANCE(115); + if (lookahead == '=') ADVANCE(109); + END_STATE(); + case 95: + ACCEPT_TOKEN(anon_sym_GT); + END_STATE(); + case 96: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(110); + if (lookahead == '>') ADVANCE(116); + END_STATE(); + case 97: + ACCEPT_TOKEN(anon_sym_DASH_GT); + END_STATE(); + case 98: + ACCEPT_TOKEN(anon_sym_PIPE); + END_STATE(); + case 99: + ACCEPT_TOKEN(anon_sym_PIPE); + if (lookahead == '|') ADVANCE(105); + END_STATE(); + case 100: + ACCEPT_TOKEN(anon_sym_PLUS); + END_STATE(); + case 101: + ACCEPT_TOKEN(anon_sym_vector_LBRACK); + END_STATE(); + case 102: + ACCEPT_TOKEN(anon_sym_vector_LT); + END_STATE(); + case 103: + ACCEPT_TOKEN(anon_sym_EQ_GT); + END_STATE(); + case 104: + ACCEPT_TOKEN(anon_sym_EQ_EQ_GT); + END_STATE(); + case 105: + ACCEPT_TOKEN(anon_sym_PIPE_PIPE); + END_STATE(); + case 106: + ACCEPT_TOKEN(anon_sym_AMP_AMP); + END_STATE(); + case 107: + ACCEPT_TOKEN(anon_sym_EQ_EQ); + if (lookahead == '>') ADVANCE(104); + END_STATE(); + case 108: + ACCEPT_TOKEN(anon_sym_BANG_EQ); + END_STATE(); + case 109: + ACCEPT_TOKEN(anon_sym_LT_EQ); + END_STATE(); + case 110: + ACCEPT_TOKEN(anon_sym_GT_EQ); + END_STATE(); + case 111: + ACCEPT_TOKEN(anon_sym_DOT_DOT); + END_STATE(); + case 112: + ACCEPT_TOKEN(anon_sym_CARET); + END_STATE(); + case 113: + ACCEPT_TOKEN(anon_sym_AMP); + END_STATE(); + case 114: + ACCEPT_TOKEN(anon_sym_AMP); + if (lookahead == '&') ADVANCE(106); + END_STATE(); + case 115: + ACCEPT_TOKEN(anon_sym_LT_LT); + END_STATE(); + case 116: + ACCEPT_TOKEN(anon_sym_GT_GT); + END_STATE(); + case 117: + ACCEPT_TOKEN(anon_sym_DASH); + END_STATE(); + case 118: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '>') ADVANCE(97); + END_STATE(); + case 119: + ACCEPT_TOKEN(anon_sym_STAR); + END_STATE(); + case 120: + ACCEPT_TOKEN(anon_sym_SLASH); + if (lookahead == '*') ADVANCE(21); + if (lookahead == '/') ADVANCE(152); + END_STATE(); + case 121: + ACCEPT_TOKEN(anon_sym_PERCENT); + END_STATE(); + case 122: + ACCEPT_TOKEN(anon_sym_SQUOTE); + END_STATE(); + case 123: + ACCEPT_TOKEN(sym_address_literal); + if (lookahead == 'x') ADVANCE(39); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); + END_STATE(); + case 124: + ACCEPT_TOKEN(sym_address_literal); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(124); + END_STATE(); + case 125: + ACCEPT_TOKEN(sym_address_literal); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(125); + END_STATE(); + case 126: + ACCEPT_TOKEN(aux_sym_num_literal_token1); + END_STATE(); + case 127: + ACCEPT_TOKEN(aux_sym_num_literal_token1); + if (lookahead == 'u') ADVANCE(22); + if (lookahead == 'x') ADVANCE(40); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(128); + END_STATE(); + case 128: + ACCEPT_TOKEN(aux_sym_num_literal_token1); + if (lookahead == 'u') ADVANCE(22); + if (('0' <= lookahead && lookahead <= '9') || + lookahead == '_') ADVANCE(128); + END_STATE(); + case 129: + ACCEPT_TOKEN(aux_sym_num_literal_token2); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(129); + END_STATE(); + case 130: + ACCEPT_TOKEN(sym_hex_string_literal); + END_STATE(); + case 131: + ACCEPT_TOKEN(sym_byte_string_literal); + END_STATE(); + case 132: + ACCEPT_TOKEN(sym_identifier); + END_STATE(); + case 133: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '"') ADVANCE(17); + if (lookahead == '`') ADVANCE(132); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 134: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '"') ADVANCE(18); + if (lookahead == '`') ADVANCE(132); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 135: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '<') ADVANCE(102); + if (lookahead == '[') ADVANCE(101); + if (lookahead == '`') ADVANCE(132); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 136: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'b') ADVANCE(143); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 137: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'c') ADVANCE(147); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 138: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'c') ADVANCE(46); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 139: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'c') ADVANCE(140); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 140: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'e') ADVANCE(145); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 141: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'e') ADVANCE(137); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 142: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'i') ADVANCE(138); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 143: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'l') ADVANCE(142); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 144: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'o') ADVANCE(146); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 145: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'p') ADVANCE(148); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 146: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'r') ADVANCE(135); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 147: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 't') ADVANCE(144); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 148: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 't') ADVANCE(67); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 149: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'u') ADVANCE(136); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 150: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (lookahead == 'x') ADVANCE(139); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 151: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == '`') ADVANCE(132); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('_' <= lookahead && lookahead <= 'z')) ADVANCE(151); + END_STATE(); + case 152: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(152); + END_STATE(); + case 153: + ACCEPT_TOKEN(sym_newline); + END_STATE(); + case 154: + ACCEPT_TOKEN(sym__whitespace); + END_STATE(); + case 155: + ACCEPT_TOKEN(sym_block_comment); + END_STATE(); + default: + return false; + } +} + +static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + ADVANCE_MAP( + 'a', 1, + 'b', 2, + 'c', 3, + 'd', 4, + 'e', 5, + 'f', 6, + 'g', 7, + 'h', 8, + 'i', 9, + 'k', 10, + 'l', 11, + 'm', 12, + 'n', 13, + 'p', 14, + 'r', 15, + 's', 16, + 't', 17, + 'u', 18, + 'w', 19, + ); + END_STATE(); + case 1: + if (lookahead == 'b') ADVANCE(20); + if (lookahead == 'd') ADVANCE(21); + if (lookahead == 'p') ADVANCE(22); + if (lookahead == 's') ADVANCE(23); + END_STATE(); + case 2: + if (lookahead == 'o') ADVANCE(24); + if (lookahead == 'r') ADVANCE(25); + if (lookahead == 'y') ADVANCE(26); + END_STATE(); + case 3: + if (lookahead == 'o') ADVANCE(27); + END_STATE(); + case 4: + if (lookahead == 'e') ADVANCE(28); + if (lookahead == 'r') ADVANCE(29); + END_STATE(); + case 5: + if (lookahead == 'l') ADVANCE(30); + if (lookahead == 'n') ADVANCE(31); + if (lookahead == 'x') ADVANCE(32); + END_STATE(); + case 6: + if (lookahead == 'a') ADVANCE(33); + if (lookahead == 'o') ADVANCE(34); + if (lookahead == 'r') ADVANCE(35); + if (lookahead == 'u') ADVANCE(36); + END_STATE(); + case 7: + if (lookahead == 'l') ADVANCE(37); + END_STATE(); + case 8: + if (lookahead == 'a') ADVANCE(38); + END_STATE(); + case 9: + if (lookahead == 'f') ADVANCE(39); + if (lookahead == 'n') ADVANCE(40); + END_STATE(); + case 10: + if (lookahead == 'e') ADVANCE(41); + END_STATE(); + case 11: + if (lookahead == 'e') ADVANCE(42); + if (lookahead == 'o') ADVANCE(43); + END_STATE(); + case 12: + if (lookahead == 'a') ADVANCE(44); + if (lookahead == 'o') ADVANCE(45); + if (lookahead == 'u') ADVANCE(46); + END_STATE(); + case 13: + if (lookahead == 'a') ADVANCE(47); + END_STATE(); + case 14: + if (lookahead == 'a') ADVANCE(48); + if (lookahead == 'h') ADVANCE(49); + if (lookahead == 'o') ADVANCE(50); + if (lookahead == 'r') ADVANCE(51); + END_STATE(); + case 15: + if (lookahead == 'e') ADVANCE(52); + END_STATE(); + case 16: + if (lookahead == 'c') ADVANCE(53); + if (lookahead == 'i') ADVANCE(54); + if (lookahead == 'p') ADVANCE(55); + if (lookahead == 't') ADVANCE(56); + if (lookahead == 'u') ADVANCE(57); + END_STATE(); + case 17: + if (lookahead == 'o') ADVANCE(58); + if (lookahead == 'r') ADVANCE(59); + END_STATE(); + case 18: + ADVANCE_MAP( + '1', 60, + '2', 61, + '3', 62, + '6', 63, + '8', 64, + 'n', 65, + 'p', 66, + 's', 67, + ); + END_STATE(); + case 19: + if (lookahead == 'h') ADVANCE(68); + if (lookahead == 'i') ADVANCE(69); + END_STATE(); + case 20: + if (lookahead == 'o') ADVANCE(70); + END_STATE(); + case 21: + if (lookahead == 'd') ADVANCE(71); + END_STATE(); + case 22: + if (lookahead == 'p') ADVANCE(72); + END_STATE(); + case 23: + ACCEPT_TOKEN(anon_sym_as); + if (lookahead == 's') ADVANCE(73); + END_STATE(); + case 24: + if (lookahead == 'o') ADVANCE(74); + END_STATE(); + case 25: + if (lookahead == 'e') ADVANCE(75); + END_STATE(); + case 26: + if (lookahead == 't') ADVANCE(76); + END_STATE(); + case 27: + if (lookahead == 'n') ADVANCE(77); + if (lookahead == 'p') ADVANCE(78); + END_STATE(); + case 28: + if (lookahead == 'c') ADVANCE(79); + END_STATE(); + case 29: + if (lookahead == 'o') ADVANCE(80); + END_STATE(); + case 30: + if (lookahead == 's') ADVANCE(81); + END_STATE(); + case 31: + if (lookahead == 's') ADVANCE(82); + if (lookahead == 't') ADVANCE(83); + if (lookahead == 'u') ADVANCE(84); + END_STATE(); + case 32: + if (lookahead == 'i') ADVANCE(85); + END_STATE(); + case 33: + if (lookahead == 'l') ADVANCE(86); + END_STATE(); + case 34: + if (lookahead == 'r') ADVANCE(87); + END_STATE(); + case 35: + if (lookahead == 'i') ADVANCE(88); + END_STATE(); + case 36: + if (lookahead == 'n') ADVANCE(89); + END_STATE(); + case 37: + if (lookahead == 'o') ADVANCE(90); + END_STATE(); + case 38: + if (lookahead == 's') ADVANCE(91); + END_STATE(); + case 39: + ACCEPT_TOKEN(anon_sym_if); + END_STATE(); + case 40: + ACCEPT_TOKEN(anon_sym_in); + if (lookahead == 'c') ADVANCE(92); + if (lookahead == 'v') ADVANCE(93); + END_STATE(); + case 41: + if (lookahead == 'y') ADVANCE(94); + END_STATE(); + case 42: + if (lookahead == 't') ADVANCE(95); + END_STATE(); + case 43: + if (lookahead == 'c') ADVANCE(96); + if (lookahead == 'o') ADVANCE(97); + END_STATE(); + case 44: + if (lookahead == 'c') ADVANCE(98); + if (lookahead == 't') ADVANCE(99); + END_STATE(); + case 45: + if (lookahead == 'd') ADVANCE(100); + if (lookahead == 'v') ADVANCE(101); + END_STATE(); + case 46: + if (lookahead == 't') ADVANCE(102); + END_STATE(); + case 47: + if (lookahead == 't') ADVANCE(103); + END_STATE(); + case 48: + if (lookahead == 'c') ADVANCE(104); + END_STATE(); + case 49: + if (lookahead == 'a') ADVANCE(105); + END_STATE(); + case 50: + if (lookahead == 's') ADVANCE(106); + END_STATE(); + case 51: + if (lookahead == 'a') ADVANCE(107); + END_STATE(); + case 52: + if (lookahead == 'q') ADVANCE(108); + if (lookahead == 't') ADVANCE(109); + END_STATE(); + case 53: + if (lookahead == 'h') ADVANCE(110); + END_STATE(); + case 54: + if (lookahead == 'g') ADVANCE(111); + END_STATE(); + case 55: + if (lookahead == 'e') ADVANCE(112); + END_STATE(); + case 56: + if (lookahead == 'o') ADVANCE(113); + if (lookahead == 'r') ADVANCE(114); + END_STATE(); + case 57: + if (lookahead == 'c') ADVANCE(115); + END_STATE(); + case 58: + ACCEPT_TOKEN(anon_sym_to); + END_STATE(); + case 59: + if (lookahead == 'u') ADVANCE(116); + END_STATE(); + case 60: + if (lookahead == '2') ADVANCE(117); + if (lookahead == '6') ADVANCE(118); + END_STATE(); + case 61: + if (lookahead == '5') ADVANCE(119); + END_STATE(); + case 62: + if (lookahead == '2') ADVANCE(120); + END_STATE(); + case 63: + if (lookahead == '4') ADVANCE(121); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_u8); + END_STATE(); + case 65: + if (lookahead == 'p') ADVANCE(122); + END_STATE(); + case 66: + if (lookahead == 'd') ADVANCE(123); + END_STATE(); + case 67: + if (lookahead == 'e') ADVANCE(124); + END_STATE(); + case 68: + if (lookahead == 'e') ADVANCE(125); + if (lookahead == 'i') ADVANCE(126); + END_STATE(); + case 69: + if (lookahead == 't') ADVANCE(127); + END_STATE(); + case 70: + if (lookahead == 'r') ADVANCE(128); + END_STATE(); + case 71: + if (lookahead == 'r') ADVANCE(129); + END_STATE(); + case 72: + if (lookahead == 'l') ADVANCE(130); + END_STATE(); + case 73: + if (lookahead == 'e') ADVANCE(131); + if (lookahead == 'u') ADVANCE(132); + END_STATE(); + case 74: + if (lookahead == 'l') ADVANCE(133); + END_STATE(); + case 75: + if (lookahead == 'a') ADVANCE(134); + END_STATE(); + case 76: + if (lookahead == 'e') ADVANCE(135); + END_STATE(); + case 77: + if (lookahead == 's') ADVANCE(136); + if (lookahead == 't') ADVANCE(137); + END_STATE(); + case 78: + if (lookahead == 'y') ADVANCE(138); + END_STATE(); + case 79: + if (lookahead == 'r') ADVANCE(139); + END_STATE(); + case 80: + if (lookahead == 'p') ADVANCE(140); + END_STATE(); + case 81: + if (lookahead == 'e') ADVANCE(141); + END_STATE(); + case 82: + if (lookahead == 'u') ADVANCE(142); + END_STATE(); + case 83: + if (lookahead == 'r') ADVANCE(143); + END_STATE(); + case 84: + if (lookahead == 'm') ADVANCE(144); + END_STATE(); + case 85: + if (lookahead == 's') ADVANCE(145); + END_STATE(); + case 86: + if (lookahead == 's') ADVANCE(146); + END_STATE(); + case 87: + if (lookahead == 'a') ADVANCE(147); + END_STATE(); + case 88: + if (lookahead == 'e') ADVANCE(148); + END_STATE(); + case 89: + ACCEPT_TOKEN(anon_sym_fun); + END_STATE(); + case 90: + if (lookahead == 'b') ADVANCE(149); + END_STATE(); + case 91: + ACCEPT_TOKEN(anon_sym_has); + END_STATE(); + case 92: + if (lookahead == 'l') ADVANCE(150); + END_STATE(); + case 93: + if (lookahead == 'a') ADVANCE(151); + END_STATE(); + case 94: + ACCEPT_TOKEN(anon_sym_key); + END_STATE(); + case 95: + ACCEPT_TOKEN(anon_sym_let); + END_STATE(); + case 96: + if (lookahead == 'a') ADVANCE(152); + END_STATE(); + case 97: + if (lookahead == 'p') ADVANCE(153); + END_STATE(); + case 98: + if (lookahead == 'r') ADVANCE(154); + END_STATE(); + case 99: + if (lookahead == 'c') ADVANCE(155); + END_STATE(); + case 100: + if (lookahead == 'i') ADVANCE(156); + if (lookahead == 'u') ADVANCE(157); + END_STATE(); + case 101: + if (lookahead == 'e') ADVANCE(158); + END_STATE(); + case 102: + ACCEPT_TOKEN(anon_sym_mut); + END_STATE(); + case 103: + if (lookahead == 'i') ADVANCE(159); + END_STATE(); + case 104: + if (lookahead == 'k') ADVANCE(160); + END_STATE(); + case 105: + if (lookahead == 'n') ADVANCE(161); + END_STATE(); + case 106: + if (lookahead == 't') ADVANCE(162); + END_STATE(); + case 107: + if (lookahead == 'g') ADVANCE(163); + END_STATE(); + case 108: + if (lookahead == 'u') ADVANCE(164); + END_STATE(); + case 109: + if (lookahead == 'u') ADVANCE(165); + END_STATE(); + case 110: + if (lookahead == 'e') ADVANCE(166); + END_STATE(); + case 111: + if (lookahead == 'n') ADVANCE(167); + END_STATE(); + case 112: + if (lookahead == 'c') ADVANCE(168); + END_STATE(); + case 113: + if (lookahead == 'r') ADVANCE(169); + END_STATE(); + case 114: + if (lookahead == 'u') ADVANCE(170); + END_STATE(); + case 115: + if (lookahead == 'c') ADVANCE(171); + END_STATE(); + case 116: + if (lookahead == 'e') ADVANCE(172); + END_STATE(); + case 117: + if (lookahead == '8') ADVANCE(173); + END_STATE(); + case 118: + ACCEPT_TOKEN(anon_sym_u16); + END_STATE(); + case 119: + if (lookahead == '6') ADVANCE(174); + END_STATE(); + case 120: + ACCEPT_TOKEN(anon_sym_u32); + END_STATE(); + case 121: + ACCEPT_TOKEN(anon_sym_u64); + END_STATE(); + case 122: + if (lookahead == 'a') ADVANCE(175); + END_STATE(); + case 123: + if (lookahead == 'a') ADVANCE(176); + END_STATE(); + case 124: + ACCEPT_TOKEN(anon_sym_use); + END_STATE(); + case 125: + if (lookahead == 'r') ADVANCE(177); + END_STATE(); + case 126: + if (lookahead == 'l') ADVANCE(178); + END_STATE(); + case 127: + if (lookahead == 'h') ADVANCE(179); + END_STATE(); + case 128: + if (lookahead == 't') ADVANCE(180); + END_STATE(); + case 129: + if (lookahead == 'e') ADVANCE(181); + END_STATE(); + case 130: + if (lookahead == 'y') ADVANCE(182); + END_STATE(); + case 131: + if (lookahead == 'r') ADVANCE(183); + END_STATE(); + case 132: + if (lookahead == 'm') ADVANCE(184); + END_STATE(); + case 133: + ACCEPT_TOKEN(anon_sym_bool); + END_STATE(); + case 134: + if (lookahead == 'k') ADVANCE(185); + END_STATE(); + case 135: + if (lookahead == 'a') ADVANCE(186); + END_STATE(); + case 136: + if (lookahead == 't') ADVANCE(187); + END_STATE(); + case 137: + if (lookahead == 'i') ADVANCE(188); + END_STATE(); + case 138: + ACCEPT_TOKEN(anon_sym_copy); + END_STATE(); + case 139: + if (lookahead == 'e') ADVANCE(189); + END_STATE(); + case 140: + ACCEPT_TOKEN(anon_sym_drop); + END_STATE(); + case 141: + ACCEPT_TOKEN(anon_sym_else); + END_STATE(); + case 142: + if (lookahead == 'r') ADVANCE(190); + END_STATE(); + case 143: + if (lookahead == 'y') ADVANCE(191); + END_STATE(); + case 144: + ACCEPT_TOKEN(anon_sym_enum); + END_STATE(); + case 145: + if (lookahead == 't') ADVANCE(192); + END_STATE(); + case 146: + if (lookahead == 'e') ADVANCE(193); + END_STATE(); + case 147: + if (lookahead == 'l') ADVANCE(194); + END_STATE(); + case 148: + if (lookahead == 'n') ADVANCE(195); + END_STATE(); + case 149: + if (lookahead == 'a') ADVANCE(196); + END_STATE(); + case 150: + if (lookahead == 'u') ADVANCE(197); + END_STATE(); + case 151: + if (lookahead == 'r') ADVANCE(198); + END_STATE(); + case 152: + if (lookahead == 'l') ADVANCE(199); + END_STATE(); + case 153: + ACCEPT_TOKEN(anon_sym_loop); + END_STATE(); + case 154: + if (lookahead == 'o') ADVANCE(200); + END_STATE(); + case 155: + if (lookahead == 'h') ADVANCE(201); + END_STATE(); + case 156: + if (lookahead == 'f') ADVANCE(202); + END_STATE(); + case 157: + if (lookahead == 'l') ADVANCE(203); + END_STATE(); + case 158: + ACCEPT_TOKEN(anon_sym_move); + END_STATE(); + case 159: + if (lookahead == 'v') ADVANCE(204); + END_STATE(); + case 160: + ACCEPT_TOKEN(anon_sym_pack); + if (lookahead == 'a') ADVANCE(205); + END_STATE(); + case 161: + if (lookahead == 't') ADVANCE(206); + END_STATE(); + case 162: + ACCEPT_TOKEN(anon_sym_post); + END_STATE(); + case 163: + if (lookahead == 'm') ADVANCE(207); + END_STATE(); + case 164: + if (lookahead == 'i') ADVANCE(208); + END_STATE(); + case 165: + if (lookahead == 'r') ADVANCE(209); + END_STATE(); + case 166: + if (lookahead == 'm') ADVANCE(210); + END_STATE(); + case 167: + if (lookahead == 'e') ADVANCE(211); + END_STATE(); + case 168: + ACCEPT_TOKEN(anon_sym_spec); + END_STATE(); + case 169: + if (lookahead == 'e') ADVANCE(212); + END_STATE(); + case 170: + if (lookahead == 'c') ADVANCE(213); + END_STATE(); + case 171: + if (lookahead == 'e') ADVANCE(214); + END_STATE(); + case 172: + ACCEPT_TOKEN(anon_sym_true); + END_STATE(); + case 173: + ACCEPT_TOKEN(anon_sym_u128); + END_STATE(); + case 174: + ACCEPT_TOKEN(anon_sym_u256); + END_STATE(); + case 175: + if (lookahead == 'c') ADVANCE(215); + END_STATE(); + case 176: + if (lookahead == 't') ADVANCE(216); + END_STATE(); + case 177: + if (lookahead == 'e') ADVANCE(217); + END_STATE(); + case 178: + if (lookahead == 'e') ADVANCE(218); + END_STATE(); + case 179: + ACCEPT_TOKEN(anon_sym_with); + END_STATE(); + case 180: + ACCEPT_TOKEN(anon_sym_abort); + if (lookahead == 's') ADVANCE(219); + END_STATE(); + case 181: + if (lookahead == 's') ADVANCE(220); + END_STATE(); + case 182: + ACCEPT_TOKEN(anon_sym_apply); + END_STATE(); + case 183: + if (lookahead == 't') ADVANCE(221); + END_STATE(); + case 184: + if (lookahead == 'e') ADVANCE(222); + END_STATE(); + case 185: + ACCEPT_TOKEN(anon_sym_break); + END_STATE(); + case 186: + if (lookahead == 'r') ADVANCE(223); + END_STATE(); + case 187: + ACCEPT_TOKEN(anon_sym_const); + END_STATE(); + case 188: + if (lookahead == 'n') ADVANCE(224); + END_STATE(); + case 189: + if (lookahead == 'a') ADVANCE(225); + END_STATE(); + case 190: + if (lookahead == 'e') ADVANCE(226); + END_STATE(); + case 191: + ACCEPT_TOKEN(anon_sym_entry); + END_STATE(); + case 192: + if (lookahead == 's') ADVANCE(227); + END_STATE(); + case 193: + ACCEPT_TOKEN(anon_sym_false); + END_STATE(); + case 194: + if (lookahead == 'l') ADVANCE(228); + END_STATE(); + case 195: + if (lookahead == 'd') ADVANCE(229); + END_STATE(); + case 196: + if (lookahead == 'l') ADVANCE(230); + END_STATE(); + case 197: + if (lookahead == 'd') ADVANCE(231); + END_STATE(); + case 198: + if (lookahead == 'i') ADVANCE(232); + END_STATE(); + case 199: + ACCEPT_TOKEN(anon_sym_local); + END_STATE(); + case 200: + ACCEPT_TOKEN(anon_sym_macro); + END_STATE(); + case 201: + ACCEPT_TOKEN(anon_sym_match); + END_STATE(); + case 202: + if (lookahead == 'i') ADVANCE(233); + END_STATE(); + case 203: + if (lookahead == 'e') ADVANCE(234); + END_STATE(); + case 204: + if (lookahead == 'e') ADVANCE(235); + END_STATE(); + case 205: + if (lookahead == 'g') ADVANCE(236); + END_STATE(); + case 206: + if (lookahead == 'o') ADVANCE(237); + END_STATE(); + case 207: + if (lookahead == 'a') ADVANCE(238); + END_STATE(); + case 208: + if (lookahead == 'r') ADVANCE(239); + END_STATE(); + case 209: + if (lookahead == 'n') ADVANCE(240); + END_STATE(); + case 210: + if (lookahead == 'a') ADVANCE(241); + END_STATE(); + case 211: + if (lookahead == 'r') ADVANCE(242); + END_STATE(); + case 212: + ACCEPT_TOKEN(anon_sym_store); + END_STATE(); + case 213: + if (lookahead == 't') ADVANCE(243); + END_STATE(); + case 214: + if (lookahead == 'e') ADVANCE(244); + END_STATE(); + case 215: + if (lookahead == 'k') ADVANCE(245); + END_STATE(); + case 216: + if (lookahead == 'e') ADVANCE(246); + END_STATE(); + case 217: + ACCEPT_TOKEN(anon_sym_where); + END_STATE(); + case 218: + ACCEPT_TOKEN(anon_sym_while); + END_STATE(); + case 219: + if (lookahead == '_') ADVANCE(247); + END_STATE(); + case 220: + if (lookahead == 's') ADVANCE(248); + END_STATE(); + case 221: + ACCEPT_TOKEN(anon_sym_assert); + END_STATE(); + case 222: + ACCEPT_TOKEN(anon_sym_assume); + END_STATE(); + case 223: + if (lookahead == 'r') ADVANCE(249); + END_STATE(); + case 224: + if (lookahead == 'u') ADVANCE(250); + END_STATE(); + case 225: + if (lookahead == 's') ADVANCE(251); + END_STATE(); + case 226: + if (lookahead == 's') ADVANCE(252); + END_STATE(); + case 227: + ACCEPT_TOKEN(sym__exists); + END_STATE(); + case 228: + ACCEPT_TOKEN(sym__forall); + END_STATE(); + case 229: + ACCEPT_TOKEN(anon_sym_friend); + END_STATE(); + case 230: + ACCEPT_TOKEN(anon_sym_global); + END_STATE(); + case 231: + if (lookahead == 'e') ADVANCE(253); + END_STATE(); + case 232: + if (lookahead == 'a') ADVANCE(254); + END_STATE(); + case 233: + if (lookahead == 'e') ADVANCE(255); + END_STATE(); + case 234: + ACCEPT_TOKEN(anon_sym_module); + END_STATE(); + case 235: + ACCEPT_TOKEN(anon_sym_native); + END_STATE(); + case 236: + if (lookahead == 'e') ADVANCE(256); + END_STATE(); + case 237: + if (lookahead == 'm') ADVANCE(257); + END_STATE(); + case 238: + ACCEPT_TOKEN(anon_sym_pragma); + END_STATE(); + case 239: + if (lookahead == 'e') ADVANCE(258); + END_STATE(); + case 240: + ACCEPT_TOKEN(anon_sym_return); + END_STATE(); + case 241: + ACCEPT_TOKEN(anon_sym_schema); + END_STATE(); + case 242: + ACCEPT_TOKEN(anon_sym_signer); + END_STATE(); + case 243: + ACCEPT_TOKEN(anon_sym_struct); + END_STATE(); + case 244: + if (lookahead == 'd') ADVANCE(259); + END_STATE(); + case 245: + ACCEPT_TOKEN(anon_sym_unpack); + END_STATE(); + case 246: + ACCEPT_TOKEN(anon_sym_update); + END_STATE(); + case 247: + if (lookahead == 'i') ADVANCE(260); + if (lookahead == 'w') ADVANCE(261); + END_STATE(); + case 248: + ACCEPT_TOKEN(anon_sym_address); + END_STATE(); + case 249: + if (lookahead == 'a') ADVANCE(262); + END_STATE(); + case 250: + if (lookahead == 'e') ADVANCE(263); + END_STATE(); + case 251: + if (lookahead == 'e') ADVANCE(264); + END_STATE(); + case 252: + ACCEPT_TOKEN(anon_sym_ensures); + END_STATE(); + case 253: + ACCEPT_TOKEN(anon_sym_include); + END_STATE(); + case 254: + if (lookahead == 'n') ADVANCE(265); + END_STATE(); + case 255: + if (lookahead == 's') ADVANCE(266); + END_STATE(); + case 256: + ACCEPT_TOKEN(anon_sym_package); + END_STATE(); + case 257: + ACCEPT_TOKEN(anon_sym_phantom); + END_STATE(); + case 258: + if (lookahead == 's') ADVANCE(267); + END_STATE(); + case 259: + if (lookahead == 's') ADVANCE(268); + END_STATE(); + case 260: + if (lookahead == 'f') ADVANCE(269); + END_STATE(); + case 261: + if (lookahead == 'i') ADVANCE(270); + END_STATE(); + case 262: + if (lookahead == 'y') ADVANCE(271); + END_STATE(); + case 263: + ACCEPT_TOKEN(anon_sym_continue); + END_STATE(); + case 264: + if (lookahead == 's') ADVANCE(272); + END_STATE(); + case 265: + if (lookahead == 't') ADVANCE(273); + END_STATE(); + case 266: + ACCEPT_TOKEN(anon_sym_modifies); + END_STATE(); + case 267: + ACCEPT_TOKEN(anon_sym_requires); + END_STATE(); + case 268: + if (lookahead == '_') ADVANCE(274); + END_STATE(); + case 269: + ACCEPT_TOKEN(anon_sym_aborts_if); + END_STATE(); + case 270: + if (lookahead == 't') ADVANCE(275); + END_STATE(); + case 271: + ACCEPT_TOKEN(anon_sym_bytearray); + END_STATE(); + case 272: + ACCEPT_TOKEN(anon_sym_decreases); + END_STATE(); + case 273: + ACCEPT_TOKEN(anon_sym_invariant); + END_STATE(); + case 274: + if (lookahead == 'i') ADVANCE(276); + END_STATE(); + case 275: + if (lookahead == 'h') ADVANCE(277); + END_STATE(); + case 276: + if (lookahead == 'f') ADVANCE(278); + END_STATE(); + case 277: + ACCEPT_TOKEN(anon_sym_aborts_with); + END_STATE(); + case 278: + ACCEPT_TOKEN(anon_sym_succeeds_if); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 43}, + [2] = {.lex_state = 1}, + [3] = {.lex_state = 1}, + [4] = {.lex_state = 1}, + [5] = {.lex_state = 1}, + [6] = {.lex_state = 1}, + [7] = {.lex_state = 1}, + [8] = {.lex_state = 1}, + [9] = {.lex_state = 1}, + [10] = {.lex_state = 1}, + [11] = {.lex_state = 1}, + [12] = {.lex_state = 1}, + [13] = {.lex_state = 1}, + [14] = {.lex_state = 1}, + [15] = {.lex_state = 1}, + [16] = {.lex_state = 1}, + [17] = {.lex_state = 1}, + [18] = {.lex_state = 1}, + [19] = {.lex_state = 1}, + [20] = {.lex_state = 1}, + [21] = {.lex_state = 1}, + [22] = {.lex_state = 1}, + [23] = {.lex_state = 1}, + [24] = {.lex_state = 3}, + [25] = {.lex_state = 3}, + [26] = {.lex_state = 3}, + [27] = {.lex_state = 3}, + [28] = {.lex_state = 4}, + [29] = {.lex_state = 4}, + [30] = {.lex_state = 4}, + [31] = {.lex_state = 4}, + [32] = {.lex_state = 4}, + [33] = {.lex_state = 4}, + [34] = {.lex_state = 4}, + [35] = {.lex_state = 4}, + [36] = {.lex_state = 4}, + [37] = {.lex_state = 4}, + [38] = {.lex_state = 4}, + [39] = {.lex_state = 4}, + [40] = {.lex_state = 4}, + [41] = {.lex_state = 4}, + [42] = {.lex_state = 4}, + [43] = {.lex_state = 4}, + [44] = {.lex_state = 4}, + [45] = {.lex_state = 4}, + [46] = {.lex_state = 4}, + [47] = {.lex_state = 4}, + [48] = {.lex_state = 4}, + [49] = {.lex_state = 4}, + [50] = {.lex_state = 4}, + [51] = {.lex_state = 4}, + [52] = {.lex_state = 4}, + [53] = {.lex_state = 4}, + [54] = {.lex_state = 4}, + [55] = {.lex_state = 4}, + [56] = {.lex_state = 4}, + [57] = {.lex_state = 4}, + [58] = {.lex_state = 4}, + [59] = {.lex_state = 4}, + [60] = {.lex_state = 4}, + [61] = {.lex_state = 4}, + [62] = {.lex_state = 4}, + [63] = {.lex_state = 4}, + [64] = {.lex_state = 4}, + [65] = {.lex_state = 4}, + [66] = {.lex_state = 4}, + [67] = {.lex_state = 4}, + [68] = {.lex_state = 4}, + [69] = {.lex_state = 4}, + [70] = {.lex_state = 4}, + [71] = {.lex_state = 4}, + [72] = {.lex_state = 4}, + [73] = {.lex_state = 4}, + [74] = {.lex_state = 4}, + [75] = {.lex_state = 4}, + [76] = {.lex_state = 4}, + [77] = {.lex_state = 4}, + [78] = {.lex_state = 4}, + [79] = {.lex_state = 4}, + [80] = {.lex_state = 4}, + [81] = {.lex_state = 4}, + [82] = {.lex_state = 4}, + [83] = {.lex_state = 4}, + [84] = {.lex_state = 4}, + [85] = {.lex_state = 4}, + [86] = {.lex_state = 4}, + [87] = {.lex_state = 4}, + [88] = {.lex_state = 4}, + [89] = {.lex_state = 4}, + [90] = {.lex_state = 4}, + [91] = {.lex_state = 4}, + [92] = {.lex_state = 4}, + [93] = {.lex_state = 4}, + [94] = {.lex_state = 4}, + [95] = {.lex_state = 4}, + [96] = {.lex_state = 4}, + [97] = {.lex_state = 4}, + [98] = {.lex_state = 4}, + [99] = {.lex_state = 4}, + [100] = {.lex_state = 4}, + [101] = {.lex_state = 4}, + [102] = {.lex_state = 4}, + [103] = {.lex_state = 4}, + [104] = {.lex_state = 4}, + [105] = {.lex_state = 4}, + [106] = {.lex_state = 4}, + [107] = {.lex_state = 4}, + [108] = {.lex_state = 4}, + [109] = {.lex_state = 4}, + [110] = {.lex_state = 4}, + [111] = {.lex_state = 4}, + [112] = {.lex_state = 4}, + [113] = {.lex_state = 4}, + [114] = {.lex_state = 4}, + [115] = {.lex_state = 4}, + [116] = {.lex_state = 4}, + [117] = {.lex_state = 4}, + [118] = {.lex_state = 4}, + [119] = {.lex_state = 4}, + [120] = {.lex_state = 4}, + [121] = {.lex_state = 4}, + [122] = {.lex_state = 4}, + [123] = {.lex_state = 4}, + [124] = {.lex_state = 4}, + [125] = {.lex_state = 4}, + [126] = {.lex_state = 4}, + [127] = {.lex_state = 4}, + [128] = {.lex_state = 4}, + [129] = {.lex_state = 4}, + [130] = {.lex_state = 4}, + [131] = {.lex_state = 4}, + [132] = {.lex_state = 4}, + [133] = {.lex_state = 4}, + [134] = {.lex_state = 4}, + [135] = {.lex_state = 4}, + [136] = {.lex_state = 4}, + [137] = {.lex_state = 4}, + [138] = {.lex_state = 4}, + [139] = {.lex_state = 4}, + [140] = {.lex_state = 4}, + [141] = {.lex_state = 4}, + [142] = {.lex_state = 4}, + [143] = {.lex_state = 4}, + [144] = {.lex_state = 4}, + [145] = {.lex_state = 4}, + [146] = {.lex_state = 4}, + [147] = {.lex_state = 4}, + [148] = {.lex_state = 4}, + [149] = {.lex_state = 4}, + [150] = {.lex_state = 4}, + [151] = {.lex_state = 4}, + [152] = {.lex_state = 4}, + [153] = {.lex_state = 4}, + [154] = {.lex_state = 4}, + [155] = {.lex_state = 4}, + [156] = {.lex_state = 4}, + [157] = {.lex_state = 4}, + [158] = {.lex_state = 4}, + [159] = {.lex_state = 4}, + [160] = {.lex_state = 4}, + [161] = {.lex_state = 4}, + [162] = {.lex_state = 4}, + [163] = {.lex_state = 4}, + [164] = {.lex_state = 4}, + [165] = {.lex_state = 4}, + [166] = {.lex_state = 4}, + [167] = {.lex_state = 4}, + [168] = {.lex_state = 4}, + [169] = {.lex_state = 4}, + [170] = {.lex_state = 4}, + [171] = {.lex_state = 4}, + [172] = {.lex_state = 4}, + [173] = {.lex_state = 4}, + [174] = {.lex_state = 4}, + [175] = {.lex_state = 4}, + [176] = {.lex_state = 4}, + [177] = {.lex_state = 4}, + [178] = {.lex_state = 4}, + [179] = {.lex_state = 4}, + [180] = {.lex_state = 4}, + [181] = {.lex_state = 4}, + [182] = {.lex_state = 4}, + [183] = {.lex_state = 4}, + [184] = {.lex_state = 4}, + [185] = {.lex_state = 4}, + [186] = {.lex_state = 4}, + [187] = {.lex_state = 4}, + [188] = {.lex_state = 4}, + [189] = {.lex_state = 4}, + [190] = {.lex_state = 4}, + [191] = {.lex_state = 4}, + [192] = {.lex_state = 4}, + [193] = {.lex_state = 4}, + [194] = {.lex_state = 4}, + [195] = {.lex_state = 4}, + [196] = {.lex_state = 4}, + [197] = {.lex_state = 4}, + [198] = {.lex_state = 4}, + [199] = {.lex_state = 4}, + [200] = {.lex_state = 4}, + [201] = {.lex_state = 4}, + [202] = {.lex_state = 4}, + [203] = {.lex_state = 4}, + [204] = {.lex_state = 4}, + [205] = {.lex_state = 4}, + [206] = {.lex_state = 4}, + [207] = {.lex_state = 4}, + [208] = {.lex_state = 4}, + [209] = {.lex_state = 4}, + [210] = {.lex_state = 4}, + [211] = {.lex_state = 4}, + [212] = {.lex_state = 4}, + [213] = {.lex_state = 4}, + [214] = {.lex_state = 4}, + [215] = {.lex_state = 4}, + [216] = {.lex_state = 4}, + [217] = {.lex_state = 4}, + [218] = {.lex_state = 4}, + [219] = {.lex_state = 4}, + [220] = {.lex_state = 4}, + [221] = {.lex_state = 4}, + [222] = {.lex_state = 4}, + [223] = {.lex_state = 4}, + [224] = {.lex_state = 4}, + [225] = {.lex_state = 4}, + [226] = {.lex_state = 4}, + [227] = {.lex_state = 4}, + [228] = {.lex_state = 4}, + [229] = {.lex_state = 4}, + [230] = {.lex_state = 4}, + [231] = {.lex_state = 4}, + [232] = {.lex_state = 43}, + [233] = {.lex_state = 43}, + [234] = {.lex_state = 1}, + [235] = {.lex_state = 4}, + [236] = {.lex_state = 4}, + [237] = {.lex_state = 44}, + [238] = {.lex_state = 44}, + [239] = {.lex_state = 1}, + [240] = {.lex_state = 44}, + [241] = {.lex_state = 44}, + [242] = {.lex_state = 44}, + [243] = {.lex_state = 44}, + [244] = {.lex_state = 44}, + [245] = {.lex_state = 44}, + [246] = {.lex_state = 1}, + [247] = {.lex_state = 44}, + [248] = {.lex_state = 44}, + [249] = {.lex_state = 44}, + [250] = {.lex_state = 44}, + [251] = {.lex_state = 44}, + [252] = {.lex_state = 44}, + [253] = {.lex_state = 4}, + [254] = {.lex_state = 4}, + [255] = {.lex_state = 4}, + [256] = {.lex_state = 4}, + [257] = {.lex_state = 6}, + [258] = {.lex_state = 4}, + [259] = {.lex_state = 6}, + [260] = {.lex_state = 5}, + [261] = {.lex_state = 44}, + [262] = {.lex_state = 44}, + [263] = {.lex_state = 5}, + [264] = {.lex_state = 5}, + [265] = {.lex_state = 5}, + [266] = {.lex_state = 2}, + [267] = {.lex_state = 5}, + [268] = {.lex_state = 2}, + [269] = {.lex_state = 5}, + [270] = {.lex_state = 5}, + [271] = {.lex_state = 5}, + [272] = {.lex_state = 2}, + [273] = {.lex_state = 5}, + [274] = {.lex_state = 3}, + [275] = {.lex_state = 5}, + [276] = {.lex_state = 5}, + [277] = {.lex_state = 2}, + [278] = {.lex_state = 43}, + [279] = {.lex_state = 2}, + [280] = {.lex_state = 6}, + [281] = {.lex_state = 2}, + [282] = {.lex_state = 2}, + [283] = {.lex_state = 2}, + [284] = {.lex_state = 2}, + [285] = {.lex_state = 2}, + [286] = {.lex_state = 2}, + [287] = {.lex_state = 43}, + [288] = {.lex_state = 6}, + [289] = {.lex_state = 43}, + [290] = {.lex_state = 6}, + [291] = {.lex_state = 2}, + [292] = {.lex_state = 43}, + [293] = {.lex_state = 43}, + [294] = {.lex_state = 3}, + [295] = {.lex_state = 43}, + [296] = {.lex_state = 43}, + [297] = {.lex_state = 6}, + [298] = {.lex_state = 6}, + [299] = {.lex_state = 43}, + [300] = {.lex_state = 43}, + [301] = {.lex_state = 43}, + [302] = {.lex_state = 2}, + [303] = {.lex_state = 3}, + [304] = {.lex_state = 43}, + [305] = {.lex_state = 43}, + [306] = {.lex_state = 43}, + [307] = {.lex_state = 6}, + [308] = {.lex_state = 2}, + [309] = {.lex_state = 2}, + [310] = {.lex_state = 6}, + [311] = {.lex_state = 43}, + [312] = {.lex_state = 43}, + [313] = {.lex_state = 43}, + [314] = {.lex_state = 3}, + [315] = {.lex_state = 6}, + [316] = {.lex_state = 43}, + [317] = {.lex_state = 43}, + [318] = {.lex_state = 43}, + [319] = {.lex_state = 6}, + [320] = {.lex_state = 6}, + [321] = {.lex_state = 6}, + [322] = {.lex_state = 6}, + [323] = {.lex_state = 6}, + [324] = {.lex_state = 6}, + [325] = {.lex_state = 6}, + [326] = {.lex_state = 6}, + [327] = {.lex_state = 6}, + [328] = {.lex_state = 6}, + [329] = {.lex_state = 6}, + [330] = {.lex_state = 6}, + [331] = {.lex_state = 6}, + [332] = {.lex_state = 6}, + [333] = {.lex_state = 6}, + [334] = {.lex_state = 6}, + [335] = {.lex_state = 43}, + [336] = {.lex_state = 6}, + [337] = {.lex_state = 43}, + [338] = {.lex_state = 6}, + [339] = {.lex_state = 6}, + [340] = {.lex_state = 6}, + [341] = {.lex_state = 6}, + [342] = {.lex_state = 43}, + [343] = {.lex_state = 6}, + [344] = {.lex_state = 6}, + [345] = {.lex_state = 6}, + [346] = {.lex_state = 6}, + [347] = {.lex_state = 6}, + [348] = {.lex_state = 4}, + [349] = {.lex_state = 6}, + [350] = {.lex_state = 2}, + [351] = {.lex_state = 6}, + [352] = {.lex_state = 6}, + [353] = {.lex_state = 6}, + [354] = {.lex_state = 6}, + [355] = {.lex_state = 6}, + [356] = {.lex_state = 6}, + [357] = {.lex_state = 8}, + [358] = {.lex_state = 6}, + [359] = {.lex_state = 6}, + [360] = {.lex_state = 6}, + [361] = {.lex_state = 6}, + [362] = {.lex_state = 6}, + [363] = {.lex_state = 6}, + [364] = {.lex_state = 6}, + [365] = {.lex_state = 6}, + [366] = {.lex_state = 6}, + [367] = {.lex_state = 6}, + [368] = {.lex_state = 4}, + [369] = {.lex_state = 6}, + [370] = {.lex_state = 6}, + [371] = {.lex_state = 6}, + [372] = {.lex_state = 6}, + [373] = {.lex_state = 4}, + [374] = {.lex_state = 4}, + [375] = {.lex_state = 6}, + [376] = {.lex_state = 6}, + [377] = {.lex_state = 6}, + [378] = {.lex_state = 6}, + [379] = {.lex_state = 2}, + [380] = {.lex_state = 43}, + [381] = {.lex_state = 6}, + [382] = {.lex_state = 6}, + [383] = {.lex_state = 6}, + [384] = {.lex_state = 6}, + [385] = {.lex_state = 8}, + [386] = {.lex_state = 43}, + [387] = {.lex_state = 4}, + [388] = {.lex_state = 8}, + [389] = {.lex_state = 43}, + [390] = {.lex_state = 8}, + [391] = {.lex_state = 43}, + [392] = {.lex_state = 6}, + [393] = {.lex_state = 4}, + [394] = {.lex_state = 6}, + [395] = {.lex_state = 8}, + [396] = {.lex_state = 6}, + [397] = {.lex_state = 43}, + [398] = {.lex_state = 43}, + [399] = {.lex_state = 43}, + [400] = {.lex_state = 2}, + [401] = {.lex_state = 4}, + [402] = {.lex_state = 43}, + [403] = {.lex_state = 43}, + [404] = {.lex_state = 43}, + [405] = {.lex_state = 43}, + [406] = {.lex_state = 43}, + [407] = {.lex_state = 43}, + [408] = {.lex_state = 4}, + [409] = {.lex_state = 43}, + [410] = {.lex_state = 43}, + [411] = {.lex_state = 43}, + [412] = {.lex_state = 43}, + [413] = {.lex_state = 43}, + [414] = {.lex_state = 43}, + [415] = {.lex_state = 43}, + [416] = {.lex_state = 43}, + [417] = {.lex_state = 43}, + [418] = {.lex_state = 4}, + [419] = {.lex_state = 43}, + [420] = {.lex_state = 2}, + [421] = {.lex_state = 43}, + [422] = {.lex_state = 43}, + [423] = {.lex_state = 43}, + [424] = {.lex_state = 43}, + [425] = {.lex_state = 43}, + [426] = {.lex_state = 43}, + [427] = {.lex_state = 4}, + [428] = {.lex_state = 43}, + [429] = {.lex_state = 4}, + [430] = {.lex_state = 43}, + [431] = {.lex_state = 4}, + [432] = {.lex_state = 43}, + [433] = {.lex_state = 43}, + [434] = {.lex_state = 2}, + [435] = {.lex_state = 43}, + [436] = {.lex_state = 43}, + [437] = {.lex_state = 43}, + [438] = {.lex_state = 43}, + [439] = {.lex_state = 43}, + [440] = {.lex_state = 43}, + [441] = {.lex_state = 43}, + [442] = {.lex_state = 43}, + [443] = {.lex_state = 43}, + [444] = {.lex_state = 43}, + [445] = {.lex_state = 43}, + [446] = {.lex_state = 4}, + [447] = {.lex_state = 7}, + [448] = {.lex_state = 4}, + [449] = {.lex_state = 7}, + [450] = {.lex_state = 43}, + [451] = {.lex_state = 7}, + [452] = {.lex_state = 7}, + [453] = {.lex_state = 7}, + [454] = {.lex_state = 4}, + [455] = {.lex_state = 43}, + [456] = {.lex_state = 4}, + [457] = {.lex_state = 4}, + [458] = {.lex_state = 4}, + [459] = {.lex_state = 43}, + [460] = {.lex_state = 4}, + [461] = {.lex_state = 43}, + [462] = {.lex_state = 2}, + [463] = {.lex_state = 4}, + [464] = {.lex_state = 43}, + [465] = {.lex_state = 43}, + [466] = {.lex_state = 4}, + [467] = {.lex_state = 43}, + [468] = {.lex_state = 4}, + [469] = {.lex_state = 4}, + [470] = {.lex_state = 43}, + [471] = {.lex_state = 43}, + [472] = {.lex_state = 43}, + [473] = {.lex_state = 43}, + [474] = {.lex_state = 43}, + [475] = {.lex_state = 2}, + [476] = {.lex_state = 43}, + [477] = {.lex_state = 43}, + [478] = {.lex_state = 43}, + [479] = {.lex_state = 8}, + [480] = {.lex_state = 43}, + [481] = {.lex_state = 4}, + [482] = {.lex_state = 4}, + [483] = {.lex_state = 8}, + [484] = {.lex_state = 8}, + [485] = {.lex_state = 8}, + [486] = {.lex_state = 43}, + [487] = {.lex_state = 8}, + [488] = {.lex_state = 8}, + [489] = {.lex_state = 8}, + [490] = {.lex_state = 4}, + [491] = {.lex_state = 4}, + [492] = {.lex_state = 8}, + [493] = {.lex_state = 4}, + [494] = {.lex_state = 8}, + [495] = {.lex_state = 8}, + [496] = {.lex_state = 4}, + [497] = {.lex_state = 4}, + [498] = {.lex_state = 43}, + [499] = {.lex_state = 43}, + [500] = {.lex_state = 8}, + [501] = {.lex_state = 43}, + [502] = {.lex_state = 43}, + [503] = {.lex_state = 43}, + [504] = {.lex_state = 43}, + [505] = {.lex_state = 43}, + [506] = {.lex_state = 43}, + [507] = {.lex_state = 43}, + [508] = {.lex_state = 43}, + [509] = {.lex_state = 2}, + [510] = {.lex_state = 43}, + [511] = {.lex_state = 43}, + [512] = {.lex_state = 43}, + [513] = {.lex_state = 43}, + [514] = {.lex_state = 8}, + [515] = {.lex_state = 43}, + [516] = {.lex_state = 43}, + [517] = {.lex_state = 44}, + [518] = {.lex_state = 43}, + [519] = {.lex_state = 43}, + [520] = {.lex_state = 43}, + [521] = {.lex_state = 43}, + [522] = {.lex_state = 43}, + [523] = {.lex_state = 2}, + [524] = {.lex_state = 43}, + [525] = {.lex_state = 43}, + [526] = {.lex_state = 43}, + [527] = {.lex_state = 43}, + [528] = {.lex_state = 7}, + [529] = {.lex_state = 2}, + [530] = {.lex_state = 43}, + [531] = {.lex_state = 2}, + [532] = {.lex_state = 2}, + [533] = {.lex_state = 8}, + [534] = {.lex_state = 7}, + [535] = {.lex_state = 43}, + [536] = {.lex_state = 44}, + [537] = {.lex_state = 43}, + [538] = {.lex_state = 7}, + [539] = {.lex_state = 7}, + [540] = {.lex_state = 7}, + [541] = {.lex_state = 44}, + [542] = {.lex_state = 2}, + [543] = {.lex_state = 7}, + [544] = {.lex_state = 2}, + [545] = {.lex_state = 2}, + [546] = {.lex_state = 2}, + [547] = {.lex_state = 7}, + [548] = {.lex_state = 2}, + [549] = {.lex_state = 2}, + [550] = {.lex_state = 2}, + [551] = {.lex_state = 7}, + [552] = {.lex_state = 2}, + [553] = {.lex_state = 2}, + [554] = {.lex_state = 2}, + [555] = {.lex_state = 7}, + [556] = {.lex_state = 2}, + [557] = {.lex_state = 2}, + [558] = {.lex_state = 2}, + [559] = {.lex_state = 2}, + [560] = {.lex_state = 2}, + [561] = {.lex_state = 2}, + [562] = {.lex_state = 7}, + [563] = {.lex_state = 2}, + [564] = {.lex_state = 2}, + [565] = {.lex_state = 2}, + [566] = {.lex_state = 2}, + [567] = {.lex_state = 2}, + [568] = {.lex_state = 2}, + [569] = {.lex_state = 2}, + [570] = {.lex_state = 2}, + [571] = {.lex_state = 2}, + [572] = {.lex_state = 2}, + [573] = {.lex_state = 2}, + [574] = {.lex_state = 43}, + [575] = {.lex_state = 2}, + [576] = {.lex_state = 43}, + [577] = {.lex_state = 43}, + [578] = {.lex_state = 43}, + [579] = {.lex_state = 43}, + [580] = {.lex_state = 43}, + [581] = {.lex_state = 43}, + [582] = {.lex_state = 43}, + [583] = {.lex_state = 43}, + [584] = {.lex_state = 2}, + [585] = {.lex_state = 43}, + [586] = {.lex_state = 43}, + [587] = {.lex_state = 43}, + [588] = {.lex_state = 43}, + [589] = {.lex_state = 2}, + [590] = {.lex_state = 43}, + [591] = {.lex_state = 43}, + [592] = {.lex_state = 43}, + [593] = {.lex_state = 43}, + [594] = {.lex_state = 43}, + [595] = {.lex_state = 43}, + [596] = {.lex_state = 43}, + [597] = {.lex_state = 43}, + [598] = {.lex_state = 43}, + [599] = {.lex_state = 43}, + [600] = {.lex_state = 43}, + [601] = {.lex_state = 43}, + [602] = {.lex_state = 43}, + [603] = {.lex_state = 43}, + [604] = {.lex_state = 43}, + [605] = {.lex_state = 43}, + [606] = {.lex_state = 43}, + [607] = {.lex_state = 43}, + [608] = {.lex_state = 43}, + [609] = {.lex_state = 43}, + [610] = {.lex_state = 43}, + [611] = {.lex_state = 43}, + [612] = {.lex_state = 43}, + [613] = {.lex_state = 43}, + [614] = {.lex_state = 43}, + [615] = {.lex_state = 43}, + [616] = {.lex_state = 43}, + [617] = {.lex_state = 43}, + [618] = {.lex_state = 43}, + [619] = {.lex_state = 43}, + [620] = {.lex_state = 43}, + [621] = {.lex_state = 43}, + [622] = {.lex_state = 43}, + [623] = {.lex_state = 43}, + [624] = {.lex_state = 43}, + [625] = {.lex_state = 43}, + [626] = {.lex_state = 43}, + [627] = {.lex_state = 43}, + [628] = {.lex_state = 43}, + [629] = {.lex_state = 43}, + [630] = {.lex_state = 43}, + [631] = {.lex_state = 43}, + [632] = {.lex_state = 43}, + [633] = {.lex_state = 2}, + [634] = {.lex_state = 43}, + [635] = {.lex_state = 43}, + [636] = {.lex_state = 43}, + [637] = {.lex_state = 43}, + [638] = {.lex_state = 43}, + [639] = {.lex_state = 43}, + [640] = {.lex_state = 43}, + [641] = {.lex_state = 43}, + [642] = {.lex_state = 43}, + [643] = {.lex_state = 2}, + [644] = {.lex_state = 2}, + [645] = {.lex_state = 43}, + [646] = {.lex_state = 43}, + [647] = {.lex_state = 2}, + [648] = {.lex_state = 43}, + [649] = {.lex_state = 43}, + [650] = {.lex_state = 43}, + [651] = {.lex_state = 43}, + [652] = {.lex_state = 43}, + [653] = {.lex_state = 43}, + [654] = {.lex_state = 2}, + [655] = {.lex_state = 2}, + [656] = {.lex_state = 2}, + [657] = {.lex_state = 2}, + [658] = {.lex_state = 2}, + [659] = {.lex_state = 2}, + [660] = {.lex_state = 2}, + [661] = {.lex_state = 2}, + [662] = {.lex_state = 2}, + [663] = {.lex_state = 2}, + [664] = {.lex_state = 2}, + [665] = {.lex_state = 2}, + [666] = {.lex_state = 2}, + [667] = {.lex_state = 2}, + [668] = {.lex_state = 2}, + [669] = {.lex_state = 43}, + [670] = {.lex_state = 43}, + [671] = {.lex_state = 43}, + [672] = {.lex_state = 43}, + [673] = {.lex_state = 43}, + [674] = {.lex_state = 43}, + [675] = {.lex_state = 43}, + [676] = {.lex_state = 43}, + [677] = {.lex_state = 43}, + [678] = {.lex_state = 43}, + [679] = {.lex_state = 43}, + [680] = {.lex_state = 43}, + [681] = {.lex_state = 43}, + [682] = {.lex_state = 43}, + [683] = {.lex_state = 43}, + [684] = {.lex_state = 43}, + [685] = {.lex_state = 43}, + [686] = {.lex_state = 43}, + [687] = {.lex_state = 43}, + [688] = {.lex_state = 43}, + [689] = {.lex_state = 43}, + [690] = {.lex_state = 43}, + [691] = {.lex_state = 43}, + [692] = {.lex_state = 43}, + [693] = {.lex_state = 43}, + [694] = {.lex_state = 43}, + [695] = {.lex_state = 43}, + [696] = {.lex_state = 43}, + [697] = {.lex_state = 43}, + [698] = {.lex_state = 43}, + [699] = {.lex_state = 43}, + [700] = {.lex_state = 43}, + [701] = {.lex_state = 43}, + [702] = {.lex_state = 43}, + [703] = {.lex_state = 43}, + [704] = {.lex_state = 43}, + [705] = {.lex_state = 43}, + [706] = {.lex_state = 43}, + [707] = {.lex_state = 43}, + [708] = {.lex_state = 43}, + [709] = {.lex_state = 43}, + [710] = {.lex_state = 43}, + [711] = {.lex_state = 43}, + [712] = {.lex_state = 43}, + [713] = {.lex_state = 43}, + [714] = {.lex_state = 43}, + [715] = {.lex_state = 2}, + [716] = {.lex_state = 2}, + [717] = {.lex_state = 43}, + [718] = {.lex_state = 43}, + [719] = {.lex_state = 43}, + [720] = {.lex_state = 44}, + [721] = {.lex_state = 2}, + [722] = {.lex_state = 2}, + [723] = {.lex_state = 43}, + [724] = {.lex_state = 43}, + [725] = {.lex_state = 43}, + [726] = {.lex_state = 43}, + [727] = {.lex_state = 43}, + [728] = {.lex_state = 43}, + [729] = {.lex_state = 43}, + [730] = {.lex_state = 43}, + [731] = {.lex_state = 43}, + [732] = {.lex_state = 43}, + [733] = {.lex_state = 43}, + [734] = {.lex_state = 43}, + [735] = {.lex_state = 43}, + [736] = {.lex_state = 43}, + [737] = {.lex_state = 2}, + [738] = {.lex_state = 43}, + [739] = {.lex_state = 43}, + [740] = {.lex_state = 43}, + [741] = {.lex_state = 43}, + [742] = {.lex_state = 43}, + [743] = {.lex_state = 2}, + [744] = {.lex_state = 43}, + [745] = {.lex_state = 43}, + [746] = {.lex_state = 43}, + [747] = {.lex_state = 43}, + [748] = {.lex_state = 43}, + [749] = {.lex_state = 43}, + [750] = {.lex_state = 44}, + [751] = {.lex_state = 43}, + [752] = {.lex_state = 44}, + [753] = {.lex_state = 43}, + [754] = {.lex_state = 43}, + [755] = {.lex_state = 43}, + [756] = {.lex_state = 43}, + [757] = {.lex_state = 43}, + [758] = {.lex_state = 43}, + [759] = {.lex_state = 43}, + [760] = {.lex_state = 43}, + [761] = {.lex_state = 43}, + [762] = {.lex_state = 43}, + [763] = {.lex_state = 43}, + [764] = {.lex_state = 43}, + [765] = {.lex_state = 43}, + [766] = {.lex_state = 43}, + [767] = {.lex_state = 43}, + [768] = {.lex_state = 43}, + [769] = {.lex_state = 43}, + [770] = {.lex_state = 44}, + [771] = {.lex_state = 43}, + [772] = {.lex_state = 43}, + [773] = {.lex_state = 43}, + [774] = {.lex_state = 43}, + [775] = {.lex_state = 43}, + [776] = {.lex_state = 43}, + [777] = {.lex_state = 43}, + [778] = {.lex_state = 43}, + [779] = {.lex_state = 43}, + [780] = {.lex_state = 43}, + [781] = {.lex_state = 43}, + [782] = {.lex_state = 43}, + [783] = {.lex_state = 43}, + [784] = {.lex_state = 43}, + [785] = {.lex_state = 43}, + [786] = {.lex_state = 43}, + [787] = {.lex_state = 6}, + [788] = {.lex_state = 6}, + [789] = {.lex_state = 43}, + [790] = {.lex_state = 43}, + [791] = {.lex_state = 43}, + [792] = {.lex_state = 43}, + [793] = {.lex_state = 43}, + [794] = {.lex_state = 6}, + [795] = {.lex_state = 43}, + [796] = {.lex_state = 43}, + [797] = {.lex_state = 43}, + [798] = {.lex_state = 43}, + [799] = {.lex_state = 43}, + [800] = {.lex_state = 43}, + [801] = {.lex_state = 43}, + [802] = {.lex_state = 43}, + [803] = {.lex_state = 43}, + [804] = {.lex_state = 43}, + [805] = {.lex_state = 43}, + [806] = {.lex_state = 6}, + [807] = {.lex_state = 43}, + [808] = {.lex_state = 43}, + [809] = {.lex_state = 43}, + [810] = {.lex_state = 43}, + [811] = {.lex_state = 43}, + [812] = {.lex_state = 43}, + [813] = {.lex_state = 43}, + [814] = {.lex_state = 43}, + [815] = {.lex_state = 43}, + [816] = {.lex_state = 43}, + [817] = {.lex_state = 43}, + [818] = {.lex_state = 43}, + [819] = {.lex_state = 43}, + [820] = {.lex_state = 43}, + [821] = {.lex_state = 43}, + [822] = {.lex_state = 43}, + [823] = {.lex_state = 43}, + [824] = {.lex_state = 43}, + [825] = {.lex_state = 43}, + [826] = {.lex_state = 43}, + [827] = {.lex_state = 43}, + [828] = {.lex_state = 43}, + [829] = {.lex_state = 43}, + [830] = {.lex_state = 43}, + [831] = {.lex_state = 43}, + [832] = {.lex_state = 43}, + [833] = {.lex_state = 43}, + [834] = {.lex_state = 43}, + [835] = {.lex_state = 43}, + [836] = {.lex_state = 43}, + [837] = {.lex_state = 2}, + [838] = {.lex_state = 43}, + [839] = {.lex_state = 43}, + [840] = {.lex_state = 43}, + [841] = {.lex_state = 43}, + [842] = {.lex_state = 9}, + [843] = {.lex_state = 2}, + [844] = {.lex_state = 10}, + [845] = {.lex_state = 10}, + [846] = {.lex_state = 10}, + [847] = {.lex_state = 10}, + [848] = {.lex_state = 10}, + [849] = {.lex_state = 10}, + [850] = {.lex_state = 9}, + [851] = {.lex_state = 10}, + [852] = {.lex_state = 10}, + [853] = {.lex_state = 9}, + [854] = {.lex_state = 44}, + [855] = {.lex_state = 2}, + [856] = {.lex_state = 9}, + [857] = {.lex_state = 44}, + [858] = {.lex_state = 44}, + [859] = {.lex_state = 44}, + [860] = {.lex_state = 44}, + [861] = {.lex_state = 44}, + [862] = {.lex_state = 44}, + [863] = {.lex_state = 44}, + [864] = {.lex_state = 8}, + [865] = {.lex_state = 44}, + [866] = {.lex_state = 44}, + [867] = {.lex_state = 44}, + [868] = {.lex_state = 2}, + [869] = {.lex_state = 44}, + [870] = {.lex_state = 44}, + [871] = {.lex_state = 44}, + [872] = {.lex_state = 44}, + [873] = {.lex_state = 44}, + [874] = {.lex_state = 10}, + [875] = {.lex_state = 44}, + [876] = {.lex_state = 44}, + [877] = {.lex_state = 44}, + [878] = {.lex_state = 44}, + [879] = {.lex_state = 7}, + [880] = {.lex_state = 44}, + [881] = {.lex_state = 44}, + [882] = {.lex_state = 44}, + [883] = {.lex_state = 44}, + [884] = {.lex_state = 44}, + [885] = {.lex_state = 44}, + [886] = {.lex_state = 44}, + [887] = {.lex_state = 44}, + [888] = {.lex_state = 44}, + [889] = {.lex_state = 44}, + [890] = {.lex_state = 44}, + [891] = {.lex_state = 44}, + [892] = {.lex_state = 44}, + [893] = {.lex_state = 44}, + [894] = {.lex_state = 44}, + [895] = {.lex_state = 43}, + [896] = {.lex_state = 8}, + [897] = {.lex_state = 11}, + [898] = {.lex_state = 8}, + [899] = {.lex_state = 8}, + [900] = {.lex_state = 43}, + [901] = {.lex_state = 43}, + [902] = {.lex_state = 3}, + [903] = {.lex_state = 43}, + [904] = {.lex_state = 43}, + [905] = {.lex_state = 43}, + [906] = {.lex_state = 43}, + [907] = {.lex_state = 43}, + [908] = {.lex_state = 43}, + [909] = {.lex_state = 43}, + [910] = {.lex_state = 12}, + [911] = {.lex_state = 43}, + [912] = {.lex_state = 9}, + [913] = {.lex_state = 43}, + [914] = {.lex_state = 43}, + [915] = {.lex_state = 3}, + [916] = {.lex_state = 43}, + [917] = {.lex_state = 43}, + [918] = {.lex_state = 43}, + [919] = {.lex_state = 44}, + [920] = {.lex_state = 43}, + [921] = {.lex_state = 10}, + [922] = {.lex_state = 10}, + [923] = {.lex_state = 9}, + [924] = {.lex_state = 2}, + [925] = {.lex_state = 10}, + [926] = {.lex_state = 10}, + [927] = {.lex_state = 10}, + [928] = {.lex_state = 10}, + [929] = {.lex_state = 10}, + [930] = {.lex_state = 10}, + [931] = {.lex_state = 10}, + [932] = {.lex_state = 43}, + [933] = {.lex_state = 10}, + [934] = {.lex_state = 10}, + [935] = {.lex_state = 10}, + [936] = {.lex_state = 43}, + [937] = {.lex_state = 10}, + [938] = {.lex_state = 10}, + [939] = {.lex_state = 10}, + [940] = {.lex_state = 43}, + [941] = {.lex_state = 10}, + [942] = {.lex_state = 10}, + [943] = {.lex_state = 6}, + [944] = {.lex_state = 10}, + [945] = {.lex_state = 10}, + [946] = {.lex_state = 6}, + [947] = {.lex_state = 10}, + [948] = {.lex_state = 10}, + [949] = {.lex_state = 10}, + [950] = {.lex_state = 10}, + [951] = {.lex_state = 6}, + [952] = {.lex_state = 10}, + [953] = {.lex_state = 10}, + [954] = {.lex_state = 10}, + [955] = {.lex_state = 10}, + [956] = {.lex_state = 10}, + [957] = {.lex_state = 10}, + [958] = {.lex_state = 6}, + [959] = {.lex_state = 9}, + [960] = {.lex_state = 43}, + [961] = {.lex_state = 6}, + [962] = {.lex_state = 6}, + [963] = {.lex_state = 6}, + [964] = {.lex_state = 6}, + [965] = {.lex_state = 6}, + [966] = {.lex_state = 43}, + [967] = {.lex_state = 3}, + [968] = {.lex_state = 6}, + [969] = {.lex_state = 6}, + [970] = {.lex_state = 6}, + [971] = {.lex_state = 6}, + [972] = {.lex_state = 43}, + [973] = {.lex_state = 6}, + [974] = {.lex_state = 6}, + [975] = {.lex_state = 7}, + [976] = {.lex_state = 13}, + [977] = {.lex_state = 6}, + [978] = {.lex_state = 6}, + [979] = {.lex_state = 7}, + [980] = {.lex_state = 43}, + [981] = {.lex_state = 13}, + [982] = {.lex_state = 0}, + [983] = {.lex_state = 12}, + [984] = {.lex_state = 43}, + [985] = {.lex_state = 7}, + [986] = {.lex_state = 7}, + [987] = {.lex_state = 7}, + [988] = {.lex_state = 13}, + [989] = {.lex_state = 43}, + [990] = {.lex_state = 6}, + [991] = {.lex_state = 6}, + [992] = {.lex_state = 7}, + [993] = {.lex_state = 6}, + [994] = {.lex_state = 7}, + [995] = {.lex_state = 0}, + [996] = {.lex_state = 1}, + [997] = {.lex_state = 7}, + [998] = {.lex_state = 7}, + [999] = {.lex_state = 43}, + [1000] = {.lex_state = 7}, + [1001] = {.lex_state = 44}, + [1002] = {.lex_state = 43}, + [1003] = {.lex_state = 7}, + [1004] = {.lex_state = 6}, + [1005] = {.lex_state = 6}, + [1006] = {.lex_state = 2}, + [1007] = {.lex_state = 6}, + [1008] = {.lex_state = 11}, + [1009] = {.lex_state = 6}, + [1010] = {.lex_state = 6}, + [1011] = {.lex_state = 6}, + [1012] = {.lex_state = 6}, + [1013] = {.lex_state = 6}, + [1014] = {.lex_state = 6}, + [1015] = {.lex_state = 6}, + [1016] = {.lex_state = 6}, + [1017] = {.lex_state = 6}, + [1018] = {.lex_state = 6}, + [1019] = {.lex_state = 6}, + [1020] = {.lex_state = 6}, + [1021] = {.lex_state = 44}, + [1022] = {.lex_state = 6}, + [1023] = {.lex_state = 6}, + [1024] = {.lex_state = 6}, + [1025] = {.lex_state = 3}, + [1026] = {.lex_state = 6}, + [1027] = {.lex_state = 6}, + [1028] = {.lex_state = 6}, + [1029] = {.lex_state = 6}, + [1030] = {.lex_state = 6}, + [1031] = {.lex_state = 7}, + [1032] = {.lex_state = 6}, + [1033] = {.lex_state = 44}, + [1034] = {.lex_state = 11}, + [1035] = {.lex_state = 6}, + [1036] = {.lex_state = 6}, + [1037] = {.lex_state = 6}, + [1038] = {.lex_state = 6}, + [1039] = {.lex_state = 44}, + [1040] = {.lex_state = 6}, + [1041] = {.lex_state = 6}, + [1042] = {.lex_state = 7}, + [1043] = {.lex_state = 6}, + [1044] = {.lex_state = 6}, + [1045] = {.lex_state = 6}, + [1046] = {.lex_state = 6}, + [1047] = {.lex_state = 43}, + [1048] = {.lex_state = 6}, + [1049] = {.lex_state = 6}, + [1050] = {.lex_state = 6}, + [1051] = {.lex_state = 6}, + [1052] = {.lex_state = 6}, + [1053] = {.lex_state = 6}, + [1054] = {.lex_state = 6}, + [1055] = {.lex_state = 6}, + [1056] = {.lex_state = 6}, + [1057] = {.lex_state = 6}, + [1058] = {.lex_state = 6}, + [1059] = {.lex_state = 44}, + [1060] = {.lex_state = 43}, + [1061] = {.lex_state = 3}, + [1062] = {.lex_state = 0}, + [1063] = {.lex_state = 6}, + [1064] = {.lex_state = 43}, + [1065] = {.lex_state = 43}, + [1066] = {.lex_state = 2}, + [1067] = {.lex_state = 7}, + [1068] = {.lex_state = 43}, + [1069] = {.lex_state = 43}, + [1070] = {.lex_state = 12}, + [1071] = {.lex_state = 6}, + [1072] = {.lex_state = 44}, + [1073] = {.lex_state = 43}, + [1074] = {.lex_state = 43}, + [1075] = {.lex_state = 7}, + [1076] = {.lex_state = 43}, + [1077] = {.lex_state = 14}, + [1078] = {.lex_state = 3}, + [1079] = {.lex_state = 43}, + [1080] = {.lex_state = 6}, + [1081] = {.lex_state = 43}, + [1082] = {.lex_state = 7}, + [1083] = {.lex_state = 3}, + [1084] = {.lex_state = 3}, + [1085] = {.lex_state = 6}, + [1086] = {.lex_state = 7}, + [1087] = {.lex_state = 6}, + [1088] = {.lex_state = 7}, + [1089] = {.lex_state = 43}, + [1090] = {.lex_state = 3}, + [1091] = {.lex_state = 43}, + [1092] = {.lex_state = 6}, + [1093] = {.lex_state = 7}, + [1094] = {.lex_state = 7}, + [1095] = {.lex_state = 0}, + [1096] = {.lex_state = 6}, + [1097] = {.lex_state = 6}, + [1098] = {.lex_state = 7}, + [1099] = {.lex_state = 43}, + [1100] = {.lex_state = 3}, + [1101] = {.lex_state = 15}, + [1102] = {.lex_state = 43}, + [1103] = {.lex_state = 14}, + [1104] = {.lex_state = 43}, + [1105] = {.lex_state = 6}, + [1106] = {.lex_state = 7}, + [1107] = {.lex_state = 7}, + [1108] = {.lex_state = 7}, + [1109] = {.lex_state = 3}, + [1110] = {.lex_state = 44}, + [1111] = {.lex_state = 43}, + [1112] = {.lex_state = 15}, + [1113] = {.lex_state = 7}, + [1114] = {.lex_state = 43}, + [1115] = {.lex_state = 7}, + [1116] = {.lex_state = 7}, + [1117] = {.lex_state = 15}, + [1118] = {.lex_state = 43}, + [1119] = {.lex_state = 15}, + [1120] = {.lex_state = 43}, + [1121] = {.lex_state = 7}, + [1122] = {.lex_state = 43}, + [1123] = {.lex_state = 44}, + [1124] = {.lex_state = 3}, + [1125] = {.lex_state = 3}, + [1126] = {.lex_state = 3}, + [1127] = {.lex_state = 7}, + [1128] = {.lex_state = 43}, + [1129] = {.lex_state = 7}, + [1130] = {.lex_state = 7}, + [1131] = {.lex_state = 7}, + [1132] = {.lex_state = 43}, + [1133] = {.lex_state = 43}, + [1134] = {.lex_state = 43}, + [1135] = {.lex_state = 43}, + [1136] = {.lex_state = 43}, + [1137] = {.lex_state = 43}, + [1138] = {.lex_state = 43}, + [1139] = {.lex_state = 3}, + [1140] = {.lex_state = 15}, + [1141] = {.lex_state = 15}, + [1142] = {.lex_state = 43}, + [1143] = {.lex_state = 3}, + [1144] = {.lex_state = 3}, + [1145] = {.lex_state = 3}, + [1146] = {.lex_state = 3}, + [1147] = {.lex_state = 3}, + [1148] = {.lex_state = 43}, + [1149] = {.lex_state = 3}, + [1150] = {.lex_state = 43}, + [1151] = {.lex_state = 3}, + [1152] = {.lex_state = 3}, + [1153] = {.lex_state = 3}, + [1154] = {.lex_state = 6}, + [1155] = {.lex_state = 43}, + [1156] = {.lex_state = 14}, + [1157] = {.lex_state = 14}, + [1158] = {.lex_state = 15}, + [1159] = {.lex_state = 3}, + [1160] = {.lex_state = 43}, + [1161] = {.lex_state = 0}, + [1162] = {.lex_state = 43}, + [1163] = {.lex_state = 43}, + [1164] = {.lex_state = 43}, + [1165] = {.lex_state = 0}, + [1166] = {.lex_state = 3}, + [1167] = {.lex_state = 43}, + [1168] = {.lex_state = 14}, + [1169] = {.lex_state = 15}, + [1170] = {.lex_state = 43}, + [1171] = {.lex_state = 3}, + [1172] = {.lex_state = 43}, + [1173] = {.lex_state = 0}, + [1174] = {.lex_state = 3}, + [1175] = {.lex_state = 0}, + [1176] = {.lex_state = 43}, + [1177] = {.lex_state = 0}, + [1178] = {.lex_state = 3}, + [1179] = {.lex_state = 0}, + [1180] = {.lex_state = 3}, + [1181] = {.lex_state = 0}, + [1182] = {.lex_state = 3}, + [1183] = {.lex_state = 43}, + [1184] = {.lex_state = 0}, + [1185] = {.lex_state = 15}, + [1186] = {.lex_state = 43}, + [1187] = {.lex_state = 43}, + [1188] = {.lex_state = 43}, + [1189] = {.lex_state = 43}, + [1190] = {.lex_state = 43}, + [1191] = {.lex_state = 43}, + [1192] = {.lex_state = 43}, + [1193] = {.lex_state = 43}, + [1194] = {.lex_state = 0}, + [1195] = {.lex_state = 0}, + [1196] = {.lex_state = 0}, + [1197] = {.lex_state = 43}, + [1198] = {.lex_state = 3}, + [1199] = {.lex_state = 43}, + [1200] = {.lex_state = 6}, + [1201] = {.lex_state = 0}, + [1202] = {.lex_state = 43}, + [1203] = {.lex_state = 43}, + [1204] = {.lex_state = 3}, + [1205] = {.lex_state = 0}, + [1206] = {.lex_state = 6}, + [1207] = {.lex_state = 43}, + [1208] = {.lex_state = 43}, + [1209] = {.lex_state = 43}, + [1210] = {.lex_state = 3}, + [1211] = {.lex_state = 0}, + [1212] = {.lex_state = 0}, + [1213] = {.lex_state = 0}, + [1214] = {.lex_state = 0}, + [1215] = {.lex_state = 43}, + [1216] = {.lex_state = 0}, + [1217] = {.lex_state = 3}, + [1218] = {.lex_state = 43}, + [1219] = {.lex_state = 0}, + [1220] = {.lex_state = 0}, + [1221] = {.lex_state = 0}, + [1222] = {.lex_state = 2}, + [1223] = {.lex_state = 43}, + [1224] = {.lex_state = 0}, + [1225] = {.lex_state = 0}, + [1226] = {.lex_state = 3}, + [1227] = {.lex_state = 43}, + [1228] = {.lex_state = 0}, + [1229] = {.lex_state = 43}, + [1230] = {.lex_state = 0}, + [1231] = {.lex_state = 3}, + [1232] = {.lex_state = 43}, + [1233] = {.lex_state = 0}, + [1234] = {.lex_state = 3}, + [1235] = {.lex_state = 0}, + [1236] = {.lex_state = 0}, + [1237] = {.lex_state = 6}, + [1238] = {.lex_state = 43}, + [1239] = {.lex_state = 43}, + [1240] = {.lex_state = 0}, + [1241] = {.lex_state = 43}, + [1242] = {.lex_state = 0}, + [1243] = {.lex_state = 43}, + [1244] = {.lex_state = 14}, + [1245] = {.lex_state = 43}, + [1246] = {.lex_state = 3}, + [1247] = {.lex_state = 14}, + [1248] = {.lex_state = 0}, + [1249] = {.lex_state = 0}, + [1250] = {.lex_state = 0}, + [1251] = {.lex_state = 43}, + [1252] = {.lex_state = 0}, + [1253] = {.lex_state = 0}, + [1254] = {.lex_state = 0}, + [1255] = {.lex_state = 0}, + [1256] = {.lex_state = 3}, + [1257] = {.lex_state = 0}, + [1258] = {.lex_state = 0}, + [1259] = {.lex_state = 0}, + [1260] = {.lex_state = 0}, + [1261] = {.lex_state = 0}, + [1262] = {.lex_state = 0}, + [1263] = {.lex_state = 0}, + [1264] = {.lex_state = 43}, + [1265] = {.lex_state = 3}, + [1266] = {.lex_state = 7}, + [1267] = {.lex_state = 0}, + [1268] = {.lex_state = 43}, + [1269] = {.lex_state = 0}, + [1270] = {.lex_state = 0}, + [1271] = {.lex_state = 0}, + [1272] = {.lex_state = 0}, + [1273] = {.lex_state = 0}, + [1274] = {.lex_state = 14}, + [1275] = {.lex_state = 0}, + [1276] = {.lex_state = 3}, + [1277] = {.lex_state = 0}, + [1278] = {.lex_state = 43}, + [1279] = {.lex_state = 0}, + [1280] = {.lex_state = 0}, + [1281] = {.lex_state = 43}, + [1282] = {.lex_state = 0}, + [1283] = {.lex_state = 0}, + [1284] = {.lex_state = 3}, + [1285] = {.lex_state = 43}, + [1286] = {.lex_state = 3}, + [1287] = {.lex_state = 0}, + [1288] = {.lex_state = 0}, + [1289] = {.lex_state = 43}, + [1290] = {.lex_state = 43}, + [1291] = {.lex_state = 43}, + [1292] = {.lex_state = 43}, + [1293] = {.lex_state = 3}, + [1294] = {.lex_state = 0}, + [1295] = {.lex_state = 0}, + [1296] = {.lex_state = 6}, + [1297] = {.lex_state = 0}, + [1298] = {.lex_state = 43}, + [1299] = {.lex_state = 43}, + [1300] = {.lex_state = 0}, + [1301] = {.lex_state = 0}, + [1302] = {.lex_state = 0}, + [1303] = {.lex_state = 0}, + [1304] = {.lex_state = 0}, + [1305] = {.lex_state = 0}, + [1306] = {.lex_state = 3}, + [1307] = {.lex_state = 6}, + [1308] = {.lex_state = 43}, + [1309] = {.lex_state = 3}, + [1310] = {.lex_state = 0}, + [1311] = {.lex_state = 43}, + [1312] = {.lex_state = 43}, + [1313] = {.lex_state = 0}, + [1314] = {.lex_state = 0}, + [1315] = {.lex_state = 43}, + [1316] = {.lex_state = 0}, + [1317] = {.lex_state = 0}, + [1318] = {.lex_state = 0}, + [1319] = {.lex_state = 43}, + [1320] = {.lex_state = 0}, + [1321] = {.lex_state = 43}, + [1322] = {.lex_state = 3}, + [1323] = {.lex_state = 43}, + [1324] = {.lex_state = 0}, + [1325] = {.lex_state = 43}, + [1326] = {.lex_state = 0}, + [1327] = {.lex_state = 0}, + [1328] = {.lex_state = 0}, + [1329] = {.lex_state = 0}, + [1330] = {.lex_state = 43}, + [1331] = {.lex_state = 0}, + [1332] = {.lex_state = 3}, + [1333] = {.lex_state = 0}, + [1334] = {.lex_state = 0}, + [1335] = {.lex_state = 43}, + [1336] = {.lex_state = 43}, + [1337] = {.lex_state = 0}, + [1338] = {.lex_state = 43}, + [1339] = {.lex_state = 43}, + [1340] = {.lex_state = 43}, + [1341] = {.lex_state = 43}, + [1342] = {.lex_state = 43}, + [1343] = {.lex_state = 0}, + [1344] = {.lex_state = 0}, + [1345] = {.lex_state = 0}, + [1346] = {.lex_state = 0}, + [1347] = {.lex_state = 0}, + [1348] = {.lex_state = 43}, + [1349] = {.lex_state = 0}, + [1350] = {.lex_state = 3}, + [1351] = {.lex_state = 0}, + [1352] = {.lex_state = 0}, + [1353] = {.lex_state = 43}, + [1354] = {.lex_state = 3}, + [1355] = {.lex_state = 0}, + [1356] = {.lex_state = 0}, + [1357] = {.lex_state = 0}, + [1358] = {.lex_state = 0}, + [1359] = {.lex_state = 43}, + [1360] = {.lex_state = 0}, + [1361] = {.lex_state = 43}, + [1362] = {.lex_state = 0}, + [1363] = {.lex_state = 0}, + [1364] = {.lex_state = 0}, + [1365] = {.lex_state = 0}, + [1366] = {.lex_state = 43}, + [1367] = {.lex_state = 43}, + [1368] = {.lex_state = 0}, + [1369] = {.lex_state = 43}, + [1370] = {.lex_state = 0}, + [1371] = {.lex_state = 0}, + [1372] = {.lex_state = 43}, + [1373] = {.lex_state = 43}, + [1374] = {.lex_state = 3}, + [1375] = {.lex_state = 43}, + [1376] = {.lex_state = 0}, + [1377] = {.lex_state = 0}, + [1378] = {.lex_state = 0}, + [1379] = {.lex_state = 0}, + [1380] = {.lex_state = 43}, + [1381] = {.lex_state = 3}, + [1382] = {.lex_state = 43}, + [1383] = {.lex_state = 43}, + [1384] = {.lex_state = 43}, + [1385] = {.lex_state = 0}, + [1386] = {.lex_state = 0}, + [1387] = {.lex_state = 43}, + [1388] = {.lex_state = 43}, + [1389] = {.lex_state = 0}, + [1390] = {.lex_state = 0}, + [1391] = {.lex_state = 3}, + [1392] = {.lex_state = 0}, + [1393] = {.lex_state = 0}, + [1394] = {.lex_state = 43}, + [1395] = {.lex_state = 0}, + [1396] = {.lex_state = 43}, + [1397] = {.lex_state = 43}, + [1398] = {.lex_state = 0}, + [1399] = {.lex_state = 3}, + [1400] = {.lex_state = 43}, + [1401] = {.lex_state = 0}, + [1402] = {.lex_state = 0}, + [1403] = {.lex_state = 0}, + [1404] = {.lex_state = 0}, + [1405] = {.lex_state = 0}, + [1406] = {.lex_state = 43}, + [1407] = {.lex_state = 3}, + [1408] = {.lex_state = 0}, + [1409] = {.lex_state = 43}, + [1410] = {.lex_state = 43}, + [1411] = {.lex_state = 43}, + [1412] = {.lex_state = 0}, + [1413] = {.lex_state = 0}, + [1414] = {.lex_state = 0}, + [1415] = {.lex_state = 43}, + [1416] = {.lex_state = 43}, + [1417] = {.lex_state = 0}, + [1418] = {.lex_state = 43}, + [1419] = {.lex_state = 43}, + [1420] = {.lex_state = 0}, + [1421] = {.lex_state = 0}, + [1422] = {.lex_state = 43}, + [1423] = {.lex_state = 3}, + [1424] = {.lex_state = 43}, + [1425] = {.lex_state = 43}, + [1426] = {.lex_state = 43}, + [1427] = {.lex_state = 0}, + [1428] = {.lex_state = 0}, + [1429] = {.lex_state = 43}, + [1430] = {.lex_state = 0}, + [1431] = {.lex_state = 0}, + [1432] = {.lex_state = 0}, + [1433] = {.lex_state = 43}, + [1434] = {.lex_state = 43}, + [1435] = {.lex_state = 0}, + [1436] = {.lex_state = 0}, + [1437] = {.lex_state = 0}, + [1438] = {.lex_state = 0}, + [1439] = {.lex_state = 43}, + [1440] = {.lex_state = 43}, + [1441] = {.lex_state = 43}, + [1442] = {.lex_state = 0}, + [1443] = {.lex_state = 0}, + [1444] = {.lex_state = 43}, + [1445] = {.lex_state = 43}, + [1446] = {.lex_state = 0}, + [1447] = {.lex_state = 0}, + [1448] = {.lex_state = 0}, + [1449] = {.lex_state = 0}, + [1450] = {.lex_state = 43}, + [1451] = {.lex_state = 43}, + [1452] = {.lex_state = 0}, + [1453] = {.lex_state = 0}, + [1454] = {.lex_state = 0}, + [1455] = {.lex_state = 43}, + [1456] = {.lex_state = 0}, + [1457] = {.lex_state = 43}, + [1458] = {.lex_state = 43}, + [1459] = {.lex_state = 0}, + [1460] = {.lex_state = 0}, + [1461] = {.lex_state = 0}, + [1462] = {.lex_state = 43}, + [1463] = {.lex_state = 43}, + [1464] = {.lex_state = 43}, + [1465] = {.lex_state = 43}, + [1466] = {.lex_state = 0}, + [1467] = {.lex_state = 43}, + [1468] = {.lex_state = 0}, + [1469] = {.lex_state = 0}, + [1470] = {.lex_state = 43}, + [1471] = {.lex_state = 43}, + [1472] = {.lex_state = 43}, + [1473] = {.lex_state = 0}, + [1474] = {.lex_state = 43}, + [1475] = {.lex_state = 0}, + [1476] = {.lex_state = 0}, + [1477] = {.lex_state = 43}, + [1478] = {.lex_state = 43}, + [1479] = {.lex_state = 0}, + [1480] = {.lex_state = 0}, + [1481] = {.lex_state = 43}, + [1482] = {.lex_state = 0}, + [1483] = {.lex_state = 0}, + [1484] = {.lex_state = 0}, + [1485] = {.lex_state = 43}, + [1486] = {.lex_state = 0}, + [1487] = {.lex_state = 0}, + [1488] = {.lex_state = 0}, + [1489] = {.lex_state = 43}, + [1490] = {.lex_state = 0}, + [1491] = {.lex_state = 0}, + [1492] = {.lex_state = 0}, + [1493] = {.lex_state = 0}, + [1494] = {.lex_state = 0}, + [1495] = {.lex_state = 0}, + [1496] = {.lex_state = 0}, + [1497] = {.lex_state = 0}, + [1498] = {.lex_state = 43}, + [1499] = {.lex_state = 0}, + [1500] = {.lex_state = 0}, + [1501] = {.lex_state = 43}, + [1502] = {.lex_state = 16}, + [1503] = {.lex_state = 43}, + [1504] = {.lex_state = 0}, + [1505] = {.lex_state = 0}, + [1506] = {.lex_state = 0}, + [1507] = {.lex_state = 43}, + [1508] = {.lex_state = 0}, + [1509] = {.lex_state = 43}, + [1510] = {.lex_state = 43}, + [1511] = {.lex_state = 43}, + [1512] = {.lex_state = 0}, + [1513] = {.lex_state = 0}, + [1514] = {.lex_state = 0}, + [1515] = {.lex_state = 0}, + [1516] = {.lex_state = 0}, + [1517] = {.lex_state = 0}, + [1518] = {.lex_state = 0}, + [1519] = {.lex_state = 43}, + [1520] = {.lex_state = 0}, + [1521] = {.lex_state = 0}, + [1522] = {.lex_state = 43}, + [1523] = {.lex_state = 43}, + [1524] = {.lex_state = 0}, + [1525] = {.lex_state = 0}, + [1526] = {.lex_state = 0}, + [1527] = {.lex_state = 43}, + [1528] = {.lex_state = 0}, + [1529] = {.lex_state = 43}, + [1530] = {.lex_state = 43}, + [1531] = {.lex_state = 0}, + [1532] = {.lex_state = 0}, + [1533] = {.lex_state = 43}, + [1534] = {.lex_state = 43}, + [1535] = {.lex_state = 0}, + [1536] = {.lex_state = 0}, + [1537] = {.lex_state = 0}, + [1538] = {.lex_state = 0}, + [1539] = {.lex_state = 0}, + [1540] = {.lex_state = 0}, + [1541] = {.lex_state = 43}, + [1542] = {.lex_state = 0}, + [1543] = {.lex_state = 0}, + [1544] = {.lex_state = 0}, + [1545] = {.lex_state = 0}, + [1546] = {.lex_state = 0}, + [1547] = {.lex_state = 43}, + [1548] = {.lex_state = 0}, + [1549] = {.lex_state = 43}, + [1550] = {.lex_state = 0}, + [1551] = {.lex_state = 7}, + [1552] = {.lex_state = 43}, + [1553] = {.lex_state = 43}, + [1554] = {.lex_state = 0}, + [1555] = {.lex_state = 0}, + [1556] = {.lex_state = 7}, + [1557] = {.lex_state = 0}, + [1558] = {.lex_state = 0}, + [1559] = {.lex_state = 43}, + [1560] = {.lex_state = 0}, + [1561] = {(TSStateId)(-1)}, + [1562] = {(TSStateId)(-1)}, + [1563] = {(TSStateId)(-1)}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [sym_annotation] = STATE(0), + [ts_builtin_sym_end] = ACTIONS(1), + [sym_identifier] = ACTIONS(1), + [anon_sym_public] = ACTIONS(1), + [anon_sym_use] = ACTIONS(1), + [anon_sym_SEMI] = ACTIONS(1), + [anon_sym_fun] = ACTIONS(1), + [anon_sym_as] = ACTIONS(1), + [anon_sym_DOT] = ACTIONS(1), + [anon_sym_COLON_COLON] = ACTIONS(1), + [anon_sym_LBRACE] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_friend] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_package] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_entry] = ACTIONS(1), + [anon_sym_native] = ACTIONS(1), + [anon_sym_copy] = ACTIONS(1), + [anon_sym_drop] = ACTIONS(1), + [anon_sym_store] = ACTIONS(1), + [anon_sym_key] = ACTIONS(1), + [anon_sym_module] = ACTIONS(1), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(1), + [anon_sym_EQ] = ACTIONS(1), + [anon_sym_const] = ACTIONS(1), + [anon_sym_COLON] = ACTIONS(1), + [anon_sym_enum] = ACTIONS(1), + [anon_sym_has] = ACTIONS(1), + [anon_sym_struct] = ACTIONS(1), + [anon_sym_macro] = ACTIONS(1), + [anon_sym_spec] = ACTIONS(1), + [anon_sym_schema] = ACTIONS(1), + [anon_sym_let] = ACTIONS(1), + [anon_sym_post] = ACTIONS(1), + [anon_sym_assert] = ACTIONS(1), + [anon_sym_assume] = ACTIONS(1), + [anon_sym_decreases] = ACTIONS(1), + [anon_sym_ensures] = ACTIONS(1), + [anon_sym_succeeds_if] = ACTIONS(1), + [anon_sym_requires] = ACTIONS(1), + [anon_sym_aborts_if] = ACTIONS(1), + [anon_sym_with] = ACTIONS(1), + [anon_sym_aborts_with] = ACTIONS(1), + [anon_sym_modifies] = ACTIONS(1), + [anon_sym_invariant] = ACTIONS(1), + [anon_sym_update] = ACTIONS(1), + [anon_sym_pack] = ACTIONS(1), + [anon_sym_unpack] = ACTIONS(1), + [anon_sym_LBRACK] = ACTIONS(1), + [anon_sym_include] = ACTIONS(1), + [anon_sym_apply] = ACTIONS(1), + [anon_sym_to] = ACTIONS(1), + [anon_sym_except] = ACTIONS(1), + [anon_sym_pragma] = ACTIONS(1), + [anon_sym_global] = ACTIONS(1), + [anon_sym_local] = ACTIONS(1), + [anon_sym_u8] = ACTIONS(1), + [anon_sym_u16] = ACTIONS(1), + [anon_sym_u32] = ACTIONS(1), + [anon_sym_u64] = ACTIONS(1), + [anon_sym_u128] = ACTIONS(1), + [anon_sym_u256] = ACTIONS(1), + [anon_sym_bool] = ACTIONS(1), + [anon_sym_address] = ACTIONS(1), + [anon_sym_signer] = ACTIONS(1), + [anon_sym_bytearray] = ACTIONS(1), + [anon_sym_DOLLAR] = ACTIONS(1), + [anon_sym_AT] = ACTIONS(1), + [anon_sym_BANG] = ACTIONS(1), + [anon_sym_LT] = ACTIONS(1), + [anon_sym_GT] = ACTIONS(1), + [anon_sym_DASH_GT] = ACTIONS(1), + [anon_sym_PIPE] = ACTIONS(1), + [anon_sym_mut] = ACTIONS(1), + [anon_sym_phantom] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_vector_LBRACK] = ACTIONS(1), + [anon_sym_vector_LT] = ACTIONS(1), + [anon_sym_where] = ACTIONS(1), + [anon_sym_in] = ACTIONS(1), + [anon_sym_if] = ACTIONS(1), + [anon_sym_else] = ACTIONS(1), + [anon_sym_while] = ACTIONS(1), + [anon_sym_loop] = ACTIONS(1), + [anon_sym_return] = ACTIONS(1), + [anon_sym_abort] = ACTIONS(1), + [anon_sym_match] = ACTIONS(1), + [anon_sym_EQ_GT] = ACTIONS(1), + [anon_sym_EQ_EQ_GT] = ACTIONS(1), + [anon_sym_PIPE_PIPE] = ACTIONS(1), + [anon_sym_AMP_AMP] = ACTIONS(1), + [anon_sym_EQ_EQ] = ACTIONS(1), + [anon_sym_BANG_EQ] = ACTIONS(1), + [anon_sym_LT_EQ] = ACTIONS(1), + [anon_sym_GT_EQ] = ACTIONS(1), + [anon_sym_DOT_DOT] = ACTIONS(1), + [anon_sym_CARET] = ACTIONS(1), + [anon_sym_AMP] = ACTIONS(1), + [anon_sym_LT_LT] = ACTIONS(1), + [anon_sym_GT_GT] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [anon_sym_STAR] = ACTIONS(1), + [anon_sym_SLASH] = ACTIONS(1), + [anon_sym_PERCENT] = ACTIONS(1), + [anon_sym_move] = ACTIONS(1), + [anon_sym_break] = ACTIONS(1), + [anon_sym_continue] = ACTIONS(1), + [anon_sym_SQUOTE] = ACTIONS(1), + [sym_address_literal] = ACTIONS(1), + [anon_sym_true] = ACTIONS(1), + [anon_sym_false] = ACTIONS(1), + [aux_sym_num_literal_token1] = ACTIONS(1), + [aux_sym_num_literal_token2] = ACTIONS(1), + [sym_hex_string_literal] = ACTIONS(1), + [sym_byte_string_literal] = ACTIONS(1), + [sym__forall] = ACTIONS(1), + [sym__exists] = ACTIONS(1), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [1] = { + [sym_source_file] = STATE(1442), + [sym_module_definition] = STATE(1366), + [sym_annotation] = STATE(1), + [aux_sym_source_file_repeat1] = STATE(1183), + [ts_builtin_sym_end] = ACTIONS(9), + [anon_sym_module] = ACTIONS(11), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [2] = { + [sym_annotation] = STATE(2), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(504), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(15), + [anon_sym_as] = ACTIONS(17), + [anon_sym_DOT] = ACTIONS(17), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(15), + [anon_sym_RBRACE] = ACTIONS(15), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(15), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(15), + [anon_sym_EQ] = ACTIONS(17), + [anon_sym_COLON] = ACTIONS(27), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(17), + [anon_sym_LBRACK] = ACTIONS(15), + [anon_sym_to] = ACTIONS(17), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(17), + [anon_sym_GT] = ACTIONS(17), + [anon_sym_PIPE] = ACTIONS(37), + [anon_sym_PLUS] = ACTIONS(15), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_else] = ACTIONS(17), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(15), + [anon_sym_PIPE_PIPE] = ACTIONS(15), + [anon_sym_AMP_AMP] = ACTIONS(15), + [anon_sym_EQ_EQ] = ACTIONS(17), + [anon_sym_BANG_EQ] = ACTIONS(15), + [anon_sym_LT_EQ] = ACTIONS(15), + [anon_sym_GT_EQ] = ACTIONS(15), + [anon_sym_DOT_DOT] = ACTIONS(15), + [anon_sym_CARET] = ACTIONS(15), + [anon_sym_AMP] = ACTIONS(56), + [anon_sym_LT_LT] = ACTIONS(15), + [anon_sym_GT_GT] = ACTIONS(15), + [anon_sym_DASH] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(59), + [anon_sym_SLASH] = ACTIONS(17), + [anon_sym_PERCENT] = ACTIONS(15), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [3] = { + [sym_annotation] = STATE(3), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(516), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(78), + [anon_sym_as] = ACTIONS(80), + [anon_sym_DOT] = ACTIONS(80), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(78), + [anon_sym_RBRACE] = ACTIONS(78), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(78), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(78), + [anon_sym_EQ] = ACTIONS(80), + [anon_sym_COLON] = ACTIONS(27), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(80), + [anon_sym_LBRACK] = ACTIONS(78), + [anon_sym_to] = ACTIONS(80), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(80), + [anon_sym_GT] = ACTIONS(80), + [anon_sym_PIPE] = ACTIONS(80), + [anon_sym_PLUS] = ACTIONS(78), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_else] = ACTIONS(80), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(78), + [anon_sym_PIPE_PIPE] = ACTIONS(78), + [anon_sym_AMP_AMP] = ACTIONS(78), + [anon_sym_EQ_EQ] = ACTIONS(80), + [anon_sym_BANG_EQ] = ACTIONS(78), + [anon_sym_LT_EQ] = ACTIONS(78), + [anon_sym_GT_EQ] = ACTIONS(78), + [anon_sym_DOT_DOT] = ACTIONS(78), + [anon_sym_CARET] = ACTIONS(78), + [anon_sym_AMP] = ACTIONS(80), + [anon_sym_LT_LT] = ACTIONS(78), + [anon_sym_GT_GT] = ACTIONS(78), + [anon_sym_DASH] = ACTIONS(78), + [anon_sym_STAR] = ACTIONS(78), + [anon_sym_SLASH] = ACTIONS(80), + [anon_sym_PERCENT] = ACTIONS(78), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [4] = { + [sym_annotation] = STATE(4), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(499), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(2), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(82), + [anon_sym_as] = ACTIONS(84), + [anon_sym_DOT] = ACTIONS(84), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(82), + [anon_sym_RBRACE] = ACTIONS(82), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(82), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(82), + [anon_sym_EQ] = ACTIONS(84), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(84), + [anon_sym_LBRACK] = ACTIONS(82), + [anon_sym_to] = ACTIONS(84), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(84), + [anon_sym_GT] = ACTIONS(84), + [anon_sym_PIPE] = ACTIONS(86), + [anon_sym_PLUS] = ACTIONS(82), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_else] = ACTIONS(84), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(82), + [anon_sym_PIPE_PIPE] = ACTIONS(82), + [anon_sym_AMP_AMP] = ACTIONS(82), + [anon_sym_EQ_EQ] = ACTIONS(84), + [anon_sym_BANG_EQ] = ACTIONS(82), + [anon_sym_LT_EQ] = ACTIONS(82), + [anon_sym_GT_EQ] = ACTIONS(82), + [anon_sym_DOT_DOT] = ACTIONS(82), + [anon_sym_CARET] = ACTIONS(82), + [anon_sym_AMP] = ACTIONS(89), + [anon_sym_LT_LT] = ACTIONS(82), + [anon_sym_GT_GT] = ACTIONS(82), + [anon_sym_DASH] = ACTIONS(82), + [anon_sym_STAR] = ACTIONS(92), + [anon_sym_SLASH] = ACTIONS(84), + [anon_sym_PERCENT] = ACTIONS(82), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [5] = { + [sym_annotation] = STATE(5), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(537), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(97), + [anon_sym_as] = ACTIONS(99), + [anon_sym_DOT] = ACTIONS(99), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(97), + [anon_sym_RBRACE] = ACTIONS(97), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(97), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(97), + [anon_sym_EQ] = ACTIONS(99), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(99), + [anon_sym_LBRACK] = ACTIONS(97), + [anon_sym_to] = ACTIONS(99), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(99), + [anon_sym_GT] = ACTIONS(99), + [anon_sym_PIPE] = ACTIONS(101), + [anon_sym_PLUS] = ACTIONS(97), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_else] = ACTIONS(99), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(97), + [anon_sym_PIPE_PIPE] = ACTIONS(97), + [anon_sym_AMP_AMP] = ACTIONS(97), + [anon_sym_EQ_EQ] = ACTIONS(99), + [anon_sym_BANG_EQ] = ACTIONS(97), + [anon_sym_LT_EQ] = ACTIONS(97), + [anon_sym_GT_EQ] = ACTIONS(97), + [anon_sym_DOT_DOT] = ACTIONS(97), + [anon_sym_CARET] = ACTIONS(97), + [anon_sym_AMP] = ACTIONS(104), + [anon_sym_LT_LT] = ACTIONS(97), + [anon_sym_GT_GT] = ACTIONS(97), + [anon_sym_DASH] = ACTIONS(97), + [anon_sym_STAR] = ACTIONS(107), + [anon_sym_SLASH] = ACTIONS(99), + [anon_sym_PERCENT] = ACTIONS(97), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [6] = { + [sym_annotation] = STATE(6), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(535), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(3), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(110), + [anon_sym_as] = ACTIONS(112), + [anon_sym_DOT] = ACTIONS(112), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(110), + [anon_sym_RBRACE] = ACTIONS(110), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(110), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(110), + [anon_sym_EQ] = ACTIONS(112), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(112), + [anon_sym_LBRACK] = ACTIONS(110), + [anon_sym_to] = ACTIONS(112), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(112), + [anon_sym_GT] = ACTIONS(112), + [anon_sym_PIPE] = ACTIONS(112), + [anon_sym_PLUS] = ACTIONS(110), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_else] = ACTIONS(112), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(110), + [anon_sym_PIPE_PIPE] = ACTIONS(110), + [anon_sym_AMP_AMP] = ACTIONS(110), + [anon_sym_EQ_EQ] = ACTIONS(112), + [anon_sym_BANG_EQ] = ACTIONS(110), + [anon_sym_LT_EQ] = ACTIONS(110), + [anon_sym_GT_EQ] = ACTIONS(110), + [anon_sym_DOT_DOT] = ACTIONS(110), + [anon_sym_CARET] = ACTIONS(110), + [anon_sym_AMP] = ACTIONS(112), + [anon_sym_LT_LT] = ACTIONS(110), + [anon_sym_GT_GT] = ACTIONS(110), + [anon_sym_DASH] = ACTIONS(110), + [anon_sym_STAR] = ACTIONS(110), + [anon_sym_SLASH] = ACTIONS(112), + [anon_sym_PERCENT] = ACTIONS(110), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [7] = { + [sym_annotation] = STATE(7), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(587), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(78), + [anon_sym_as] = ACTIONS(80), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(78), + [anon_sym_RBRACE] = ACTIONS(78), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(78), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(78), + [anon_sym_EQ] = ACTIONS(80), + [anon_sym_COLON] = ACTIONS(27), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(80), + [anon_sym_to] = ACTIONS(80), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(80), + [anon_sym_GT] = ACTIONS(80), + [anon_sym_PIPE] = ACTIONS(80), + [anon_sym_PLUS] = ACTIONS(78), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(78), + [anon_sym_PIPE_PIPE] = ACTIONS(78), + [anon_sym_AMP_AMP] = ACTIONS(78), + [anon_sym_EQ_EQ] = ACTIONS(80), + [anon_sym_BANG_EQ] = ACTIONS(78), + [anon_sym_LT_EQ] = ACTIONS(78), + [anon_sym_GT_EQ] = ACTIONS(78), + [anon_sym_DOT_DOT] = ACTIONS(78), + [anon_sym_CARET] = ACTIONS(78), + [anon_sym_AMP] = ACTIONS(80), + [anon_sym_LT_LT] = ACTIONS(78), + [anon_sym_GT_GT] = ACTIONS(78), + [anon_sym_DASH] = ACTIONS(78), + [anon_sym_STAR] = ACTIONS(78), + [anon_sym_SLASH] = ACTIONS(80), + [anon_sym_PERCENT] = ACTIONS(78), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [8] = { + [sym_annotation] = STATE(8), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(600), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(17), + [anon_sym_DOT] = ACTIONS(17), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(15), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(15), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(17), + [anon_sym_COLON] = ACTIONS(128), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(15), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(17), + [anon_sym_GT] = ACTIONS(17), + [anon_sym_PIPE] = ACTIONS(37), + [anon_sym_PLUS] = ACTIONS(15), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(17), + [anon_sym_if] = ACTIONS(131), + [anon_sym_else] = ACTIONS(17), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(15), + [anon_sym_PIPE_PIPE] = ACTIONS(15), + [anon_sym_AMP_AMP] = ACTIONS(15), + [anon_sym_EQ_EQ] = ACTIONS(17), + [anon_sym_BANG_EQ] = ACTIONS(15), + [anon_sym_LT_EQ] = ACTIONS(15), + [anon_sym_GT_EQ] = ACTIONS(15), + [anon_sym_DOT_DOT] = ACTIONS(15), + [anon_sym_CARET] = ACTIONS(15), + [anon_sym_AMP] = ACTIONS(56), + [anon_sym_LT_LT] = ACTIONS(15), + [anon_sym_GT_GT] = ACTIONS(15), + [anon_sym_DASH] = ACTIONS(15), + [anon_sym_STAR] = ACTIONS(141), + [anon_sym_SLASH] = ACTIONS(17), + [anon_sym_PERCENT] = ACTIONS(15), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [9] = { + [sym_annotation] = STATE(9), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(578), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(97), + [anon_sym_as] = ACTIONS(99), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(97), + [anon_sym_RBRACE] = ACTIONS(97), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(97), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(97), + [anon_sym_EQ] = ACTIONS(99), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(99), + [anon_sym_to] = ACTIONS(99), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(99), + [anon_sym_GT] = ACTIONS(99), + [anon_sym_PIPE] = ACTIONS(101), + [anon_sym_PLUS] = ACTIONS(97), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(97), + [anon_sym_PIPE_PIPE] = ACTIONS(97), + [anon_sym_AMP_AMP] = ACTIONS(97), + [anon_sym_EQ_EQ] = ACTIONS(99), + [anon_sym_BANG_EQ] = ACTIONS(97), + [anon_sym_LT_EQ] = ACTIONS(97), + [anon_sym_GT_EQ] = ACTIONS(97), + [anon_sym_DOT_DOT] = ACTIONS(97), + [anon_sym_CARET] = ACTIONS(97), + [anon_sym_AMP] = ACTIONS(104), + [anon_sym_LT_LT] = ACTIONS(97), + [anon_sym_GT_GT] = ACTIONS(97), + [anon_sym_DASH] = ACTIONS(97), + [anon_sym_STAR] = ACTIONS(148), + [anon_sym_SLASH] = ACTIONS(99), + [anon_sym_PERCENT] = ACTIONS(97), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [10] = { + [sym_annotation] = STATE(10), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(623), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(80), + [anon_sym_DOT] = ACTIONS(80), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(78), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(78), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(80), + [anon_sym_COLON] = ACTIONS(80), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(78), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(80), + [anon_sym_GT] = ACTIONS(80), + [anon_sym_PIPE] = ACTIONS(80), + [anon_sym_PLUS] = ACTIONS(78), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(80), + [anon_sym_if] = ACTIONS(131), + [anon_sym_else] = ACTIONS(80), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(78), + [anon_sym_PIPE_PIPE] = ACTIONS(78), + [anon_sym_AMP_AMP] = ACTIONS(78), + [anon_sym_EQ_EQ] = ACTIONS(80), + [anon_sym_BANG_EQ] = ACTIONS(78), + [anon_sym_LT_EQ] = ACTIONS(78), + [anon_sym_GT_EQ] = ACTIONS(78), + [anon_sym_DOT_DOT] = ACTIONS(78), + [anon_sym_CARET] = ACTIONS(78), + [anon_sym_AMP] = ACTIONS(80), + [anon_sym_LT_LT] = ACTIONS(78), + [anon_sym_GT_GT] = ACTIONS(78), + [anon_sym_DASH] = ACTIONS(78), + [anon_sym_STAR] = ACTIONS(78), + [anon_sym_SLASH] = ACTIONS(80), + [anon_sym_PERCENT] = ACTIONS(78), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [11] = { + [sym_annotation] = STATE(11), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(581), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(7), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(110), + [anon_sym_as] = ACTIONS(112), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(110), + [anon_sym_RBRACE] = ACTIONS(110), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(110), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(110), + [anon_sym_EQ] = ACTIONS(112), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(112), + [anon_sym_to] = ACTIONS(112), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(112), + [anon_sym_GT] = ACTIONS(112), + [anon_sym_PIPE] = ACTIONS(112), + [anon_sym_PLUS] = ACTIONS(110), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(110), + [anon_sym_PIPE_PIPE] = ACTIONS(110), + [anon_sym_AMP_AMP] = ACTIONS(110), + [anon_sym_EQ_EQ] = ACTIONS(112), + [anon_sym_BANG_EQ] = ACTIONS(110), + [anon_sym_LT_EQ] = ACTIONS(110), + [anon_sym_GT_EQ] = ACTIONS(110), + [anon_sym_DOT_DOT] = ACTIONS(110), + [anon_sym_CARET] = ACTIONS(110), + [anon_sym_AMP] = ACTIONS(112), + [anon_sym_LT_LT] = ACTIONS(110), + [anon_sym_GT_GT] = ACTIONS(110), + [anon_sym_DASH] = ACTIONS(110), + [anon_sym_STAR] = ACTIONS(110), + [anon_sym_SLASH] = ACTIONS(112), + [anon_sym_PERCENT] = ACTIONS(110), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [12] = { + [sym_annotation] = STATE(12), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(580), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(10), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(112), + [anon_sym_DOT] = ACTIONS(112), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(110), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(110), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(112), + [anon_sym_COLON] = ACTIONS(112), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(110), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(112), + [anon_sym_GT] = ACTIONS(112), + [anon_sym_PIPE] = ACTIONS(112), + [anon_sym_PLUS] = ACTIONS(110), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(112), + [anon_sym_if] = ACTIONS(131), + [anon_sym_else] = ACTIONS(112), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(110), + [anon_sym_PIPE_PIPE] = ACTIONS(110), + [anon_sym_AMP_AMP] = ACTIONS(110), + [anon_sym_EQ_EQ] = ACTIONS(112), + [anon_sym_BANG_EQ] = ACTIONS(110), + [anon_sym_LT_EQ] = ACTIONS(110), + [anon_sym_GT_EQ] = ACTIONS(110), + [anon_sym_DOT_DOT] = ACTIONS(110), + [anon_sym_CARET] = ACTIONS(110), + [anon_sym_AMP] = ACTIONS(112), + [anon_sym_LT_LT] = ACTIONS(110), + [anon_sym_GT_GT] = ACTIONS(110), + [anon_sym_DASH] = ACTIONS(110), + [anon_sym_STAR] = ACTIONS(110), + [anon_sym_SLASH] = ACTIONS(112), + [anon_sym_PERCENT] = ACTIONS(110), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [13] = { + [sym_annotation] = STATE(13), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(588), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(99), + [anon_sym_DOT] = ACTIONS(99), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(97), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(97), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(99), + [anon_sym_COLON] = ACTIONS(99), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(97), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(99), + [anon_sym_GT] = ACTIONS(99), + [anon_sym_PIPE] = ACTIONS(101), + [anon_sym_PLUS] = ACTIONS(97), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(99), + [anon_sym_if] = ACTIONS(131), + [anon_sym_else] = ACTIONS(99), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(97), + [anon_sym_PIPE_PIPE] = ACTIONS(97), + [anon_sym_AMP_AMP] = ACTIONS(97), + [anon_sym_EQ_EQ] = ACTIONS(99), + [anon_sym_BANG_EQ] = ACTIONS(97), + [anon_sym_LT_EQ] = ACTIONS(97), + [anon_sym_GT_EQ] = ACTIONS(97), + [anon_sym_DOT_DOT] = ACTIONS(97), + [anon_sym_CARET] = ACTIONS(97), + [anon_sym_AMP] = ACTIONS(104), + [anon_sym_LT_LT] = ACTIONS(97), + [anon_sym_GT_GT] = ACTIONS(97), + [anon_sym_DASH] = ACTIONS(97), + [anon_sym_STAR] = ACTIONS(151), + [anon_sym_SLASH] = ACTIONS(99), + [anon_sym_PERCENT] = ACTIONS(97), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [14] = { + [sym_annotation] = STATE(14), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(645), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(78), + [anon_sym_as] = ACTIONS(80), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(78), + [anon_sym_RBRACE] = ACTIONS(78), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(78), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(78), + [anon_sym_COLON] = ACTIONS(27), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(80), + [anon_sym_to] = ACTIONS(80), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(80), + [anon_sym_GT] = ACTIONS(80), + [anon_sym_PIPE] = ACTIONS(80), + [anon_sym_PLUS] = ACTIONS(78), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(78), + [anon_sym_PIPE_PIPE] = ACTIONS(78), + [anon_sym_AMP_AMP] = ACTIONS(78), + [anon_sym_EQ_EQ] = ACTIONS(80), + [anon_sym_BANG_EQ] = ACTIONS(78), + [anon_sym_LT_EQ] = ACTIONS(78), + [anon_sym_GT_EQ] = ACTIONS(78), + [anon_sym_DOT_DOT] = ACTIONS(78), + [anon_sym_CARET] = ACTIONS(78), + [anon_sym_AMP] = ACTIONS(80), + [anon_sym_LT_LT] = ACTIONS(78), + [anon_sym_GT_GT] = ACTIONS(78), + [anon_sym_DASH] = ACTIONS(78), + [anon_sym_STAR] = ACTIONS(78), + [anon_sym_SLASH] = ACTIONS(80), + [anon_sym_PERCENT] = ACTIONS(78), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [15] = { + [sym_annotation] = STATE(15), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(628), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(8), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(84), + [anon_sym_DOT] = ACTIONS(84), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(82), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(82), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(84), + [anon_sym_COLON] = ACTIONS(84), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(82), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(84), + [anon_sym_GT] = ACTIONS(84), + [anon_sym_PIPE] = ACTIONS(86), + [anon_sym_PLUS] = ACTIONS(82), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(84), + [anon_sym_if] = ACTIONS(131), + [anon_sym_else] = ACTIONS(84), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(82), + [anon_sym_PIPE_PIPE] = ACTIONS(82), + [anon_sym_AMP_AMP] = ACTIONS(82), + [anon_sym_EQ_EQ] = ACTIONS(84), + [anon_sym_BANG_EQ] = ACTIONS(82), + [anon_sym_LT_EQ] = ACTIONS(82), + [anon_sym_GT_EQ] = ACTIONS(82), + [anon_sym_DOT_DOT] = ACTIONS(82), + [anon_sym_CARET] = ACTIONS(82), + [anon_sym_AMP] = ACTIONS(89), + [anon_sym_LT_LT] = ACTIONS(82), + [anon_sym_GT_GT] = ACTIONS(82), + [anon_sym_DASH] = ACTIONS(82), + [anon_sym_STAR] = ACTIONS(164), + [anon_sym_SLASH] = ACTIONS(84), + [anon_sym_PERCENT] = ACTIONS(82), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [16] = { + [sym_annotation] = STATE(16), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(641), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(97), + [anon_sym_as] = ACTIONS(99), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(97), + [anon_sym_RBRACE] = ACTIONS(97), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(97), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(97), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(99), + [anon_sym_to] = ACTIONS(99), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(99), + [anon_sym_GT] = ACTIONS(99), + [anon_sym_PIPE] = ACTIONS(101), + [anon_sym_PLUS] = ACTIONS(97), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(97), + [anon_sym_PIPE_PIPE] = ACTIONS(97), + [anon_sym_AMP_AMP] = ACTIONS(97), + [anon_sym_EQ_EQ] = ACTIONS(99), + [anon_sym_BANG_EQ] = ACTIONS(97), + [anon_sym_LT_EQ] = ACTIONS(97), + [anon_sym_GT_EQ] = ACTIONS(97), + [anon_sym_DOT_DOT] = ACTIONS(97), + [anon_sym_CARET] = ACTIONS(97), + [anon_sym_AMP] = ACTIONS(104), + [anon_sym_LT_LT] = ACTIONS(97), + [anon_sym_GT_GT] = ACTIONS(97), + [anon_sym_DASH] = ACTIONS(97), + [anon_sym_STAR] = ACTIONS(148), + [anon_sym_SLASH] = ACTIONS(99), + [anon_sym_PERCENT] = ACTIONS(97), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [17] = { + [sym_annotation] = STATE(17), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(634), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(14), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(110), + [anon_sym_as] = ACTIONS(112), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(110), + [anon_sym_RBRACE] = ACTIONS(110), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(110), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(110), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_with] = ACTIONS(112), + [anon_sym_to] = ACTIONS(112), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(112), + [anon_sym_GT] = ACTIONS(112), + [anon_sym_PIPE] = ACTIONS(112), + [anon_sym_PLUS] = ACTIONS(110), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(110), + [anon_sym_PIPE_PIPE] = ACTIONS(110), + [anon_sym_AMP_AMP] = ACTIONS(110), + [anon_sym_EQ_EQ] = ACTIONS(112), + [anon_sym_BANG_EQ] = ACTIONS(110), + [anon_sym_LT_EQ] = ACTIONS(110), + [anon_sym_GT_EQ] = ACTIONS(110), + [anon_sym_DOT_DOT] = ACTIONS(110), + [anon_sym_CARET] = ACTIONS(110), + [anon_sym_AMP] = ACTIONS(112), + [anon_sym_LT_LT] = ACTIONS(110), + [anon_sym_GT_GT] = ACTIONS(110), + [anon_sym_DASH] = ACTIONS(110), + [anon_sym_STAR] = ACTIONS(110), + [anon_sym_SLASH] = ACTIONS(112), + [anon_sym_PERCENT] = ACTIONS(110), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [18] = { + [sym_annotation] = STATE(18), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(673), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(80), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(78), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(78), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(80), + [anon_sym_COLON] = ACTIONS(80), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(80), + [anon_sym_GT] = ACTIONS(80), + [anon_sym_PIPE] = ACTIONS(80), + [anon_sym_PLUS] = ACTIONS(78), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(80), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(78), + [anon_sym_PIPE_PIPE] = ACTIONS(78), + [anon_sym_AMP_AMP] = ACTIONS(78), + [anon_sym_EQ_EQ] = ACTIONS(80), + [anon_sym_BANG_EQ] = ACTIONS(78), + [anon_sym_LT_EQ] = ACTIONS(78), + [anon_sym_GT_EQ] = ACTIONS(78), + [anon_sym_DOT_DOT] = ACTIONS(78), + [anon_sym_CARET] = ACTIONS(78), + [anon_sym_AMP] = ACTIONS(80), + [anon_sym_LT_LT] = ACTIONS(78), + [anon_sym_GT_GT] = ACTIONS(78), + [anon_sym_DASH] = ACTIONS(78), + [anon_sym_STAR] = ACTIONS(78), + [anon_sym_SLASH] = ACTIONS(80), + [anon_sym_PERCENT] = ACTIONS(78), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [19] = { + [sym_annotation] = STATE(19), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(689), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(18), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(112), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(110), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(110), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(112), + [anon_sym_COLON] = ACTIONS(112), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(112), + [anon_sym_GT] = ACTIONS(112), + [anon_sym_PIPE] = ACTIONS(112), + [anon_sym_PLUS] = ACTIONS(110), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(112), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(110), + [anon_sym_PIPE_PIPE] = ACTIONS(110), + [anon_sym_AMP_AMP] = ACTIONS(110), + [anon_sym_EQ_EQ] = ACTIONS(112), + [anon_sym_BANG_EQ] = ACTIONS(110), + [anon_sym_LT_EQ] = ACTIONS(110), + [anon_sym_GT_EQ] = ACTIONS(110), + [anon_sym_DOT_DOT] = ACTIONS(110), + [anon_sym_CARET] = ACTIONS(110), + [anon_sym_AMP] = ACTIONS(112), + [anon_sym_LT_LT] = ACTIONS(110), + [anon_sym_GT_GT] = ACTIONS(110), + [anon_sym_DASH] = ACTIONS(110), + [anon_sym_STAR] = ACTIONS(110), + [anon_sym_SLASH] = ACTIONS(112), + [anon_sym_PERCENT] = ACTIONS(110), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [20] = { + [sym_annotation] = STATE(20), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(687), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(99), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(97), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(97), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_EQ] = ACTIONS(99), + [anon_sym_COLON] = ACTIONS(99), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(99), + [anon_sym_GT] = ACTIONS(99), + [anon_sym_PIPE] = ACTIONS(101), + [anon_sym_PLUS] = ACTIONS(97), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(99), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(97), + [anon_sym_PIPE_PIPE] = ACTIONS(97), + [anon_sym_AMP_AMP] = ACTIONS(97), + [anon_sym_EQ_EQ] = ACTIONS(99), + [anon_sym_BANG_EQ] = ACTIONS(97), + [anon_sym_LT_EQ] = ACTIONS(97), + [anon_sym_GT_EQ] = ACTIONS(97), + [anon_sym_DOT_DOT] = ACTIONS(97), + [anon_sym_CARET] = ACTIONS(97), + [anon_sym_AMP] = ACTIONS(104), + [anon_sym_LT_LT] = ACTIONS(97), + [anon_sym_GT_GT] = ACTIONS(97), + [anon_sym_DASH] = ACTIONS(97), + [anon_sym_STAR] = ACTIONS(179), + [anon_sym_SLASH] = ACTIONS(99), + [anon_sym_PERCENT] = ACTIONS(97), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [21] = { + [sym_annotation] = STATE(21), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(711), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(22), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(112), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(110), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(110), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_COLON] = ACTIONS(112), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(112), + [anon_sym_GT] = ACTIONS(112), + [anon_sym_PIPE] = ACTIONS(112), + [anon_sym_PLUS] = ACTIONS(110), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(112), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(110), + [anon_sym_PIPE_PIPE] = ACTIONS(110), + [anon_sym_AMP_AMP] = ACTIONS(110), + [anon_sym_EQ_EQ] = ACTIONS(112), + [anon_sym_BANG_EQ] = ACTIONS(110), + [anon_sym_LT_EQ] = ACTIONS(110), + [anon_sym_GT_EQ] = ACTIONS(110), + [anon_sym_DOT_DOT] = ACTIONS(110), + [anon_sym_CARET] = ACTIONS(110), + [anon_sym_AMP] = ACTIONS(112), + [anon_sym_LT_LT] = ACTIONS(110), + [anon_sym_GT_GT] = ACTIONS(110), + [anon_sym_DASH] = ACTIONS(110), + [anon_sym_STAR] = ACTIONS(110), + [anon_sym_SLASH] = ACTIONS(112), + [anon_sym_PERCENT] = ACTIONS(110), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(95), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [22] = { + [sym_annotation] = STATE(22), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(714), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(80), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(78), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(78), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_COLON] = ACTIONS(80), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(80), + [anon_sym_GT] = ACTIONS(80), + [anon_sym_PIPE] = ACTIONS(80), + [anon_sym_PLUS] = ACTIONS(78), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(80), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(78), + [anon_sym_PIPE_PIPE] = ACTIONS(78), + [anon_sym_AMP_AMP] = ACTIONS(78), + [anon_sym_EQ_EQ] = ACTIONS(80), + [anon_sym_BANG_EQ] = ACTIONS(78), + [anon_sym_LT_EQ] = ACTIONS(78), + [anon_sym_GT_EQ] = ACTIONS(78), + [anon_sym_DOT_DOT] = ACTIONS(78), + [anon_sym_CARET] = ACTIONS(78), + [anon_sym_AMP] = ACTIONS(80), + [anon_sym_LT_LT] = ACTIONS(78), + [anon_sym_GT_GT] = ACTIONS(78), + [anon_sym_DASH] = ACTIONS(78), + [anon_sym_STAR] = ACTIONS(78), + [anon_sym_SLASH] = ACTIONS(80), + [anon_sym_PERCENT] = ACTIONS(78), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [23] = { + [sym_annotation] = STATE(23), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(693), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_as] = ACTIONS(99), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_COMMA] = ACTIONS(97), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(97), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_COLON] = ACTIONS(99), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(35), + [anon_sym_LT] = ACTIONS(99), + [anon_sym_GT] = ACTIONS(99), + [anon_sym_PIPE] = ACTIONS(101), + [anon_sym_PLUS] = ACTIONS(97), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_where] = ACTIONS(99), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_EQ_EQ_GT] = ACTIONS(97), + [anon_sym_PIPE_PIPE] = ACTIONS(97), + [anon_sym_AMP_AMP] = ACTIONS(97), + [anon_sym_EQ_EQ] = ACTIONS(99), + [anon_sym_BANG_EQ] = ACTIONS(97), + [anon_sym_LT_EQ] = ACTIONS(97), + [anon_sym_GT_EQ] = ACTIONS(97), + [anon_sym_DOT_DOT] = ACTIONS(97), + [anon_sym_CARET] = ACTIONS(97), + [anon_sym_AMP] = ACTIONS(104), + [anon_sym_LT_LT] = ACTIONS(97), + [anon_sym_GT_GT] = ACTIONS(97), + [anon_sym_DASH] = ACTIONS(97), + [anon_sym_STAR] = ACTIONS(179), + [anon_sym_SLASH] = ACTIONS(99), + [anon_sym_PERCENT] = ACTIONS(97), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [24] = { + [sym_use_declaration] = STATE(314), + [sym_annotation] = STATE(24), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(736), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_spec_body_repeat1] = STATE(26), + [aux_sym_block_repeat1] = STATE(29), + [sym_identifier] = ACTIONS(13), + [anon_sym_public] = ACTIONS(192), + [anon_sym_use] = ACTIONS(194), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(196), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [25] = { + [sym_use_declaration] = STATE(314), + [sym_annotation] = STATE(25), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(742), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_spec_body_repeat1] = STATE(27), + [aux_sym_block_repeat1] = STATE(31), + [sym_identifier] = ACTIONS(13), + [anon_sym_public] = ACTIONS(192), + [anon_sym_use] = ACTIONS(194), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(208), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [26] = { + [sym_use_declaration] = STATE(314), + [sym_annotation] = STATE(26), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(728), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_spec_body_repeat1] = STATE(274), + [aux_sym_block_repeat1] = STATE(33), + [sym_identifier] = ACTIONS(13), + [anon_sym_public] = ACTIONS(192), + [anon_sym_use] = ACTIONS(194), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(210), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [27] = { + [sym_use_declaration] = STATE(314), + [sym_annotation] = STATE(27), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(739), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_spec_body_repeat1] = STATE(274), + [aux_sym_block_repeat1] = STATE(30), + [sym_identifier] = ACTIONS(13), + [anon_sym_public] = ACTIONS(192), + [anon_sym_use] = ACTIONS(194), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(212), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [28] = { + [sym_annotation] = STATE(28), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(172), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(766), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_module] = ACTIONS(214), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_update] = ACTIONS(214), + [anon_sym_pack] = ACTIONS(214), + [anon_sym_unpack] = ACTIONS(214), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [29] = { + [sym_annotation] = STATE(29), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(728), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_block_repeat1] = STATE(32), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(210), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [30] = { + [sym_annotation] = STATE(30), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(746), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_block_repeat1] = STATE(32), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(218), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [31] = { + [sym_annotation] = STATE(31), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(739), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_block_repeat1] = STATE(32), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(212), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [32] = { + [sym_annotation] = STATE(32), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(754), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_block_repeat1] = STATE(32), + [sym_identifier] = ACTIONS(220), + [anon_sym_COLON_COLON] = ACTIONS(223), + [anon_sym_LBRACE] = ACTIONS(226), + [anon_sym_RBRACE] = ACTIONS(229), + [anon_sym_LPAREN] = ACTIONS(231), + [anon_sym_copy] = ACTIONS(234), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(237), + [anon_sym_let] = ACTIONS(240), + [anon_sym_DOLLAR] = ACTIONS(243), + [anon_sym_AT] = ACTIONS(246), + [anon_sym_BANG] = ACTIONS(249), + [anon_sym_PIPE] = ACTIONS(252), + [anon_sym_vector_LBRACK] = ACTIONS(255), + [anon_sym_vector_LT] = ACTIONS(258), + [anon_sym_if] = ACTIONS(261), + [anon_sym_while] = ACTIONS(264), + [anon_sym_loop] = ACTIONS(267), + [anon_sym_return] = ACTIONS(270), + [anon_sym_abort] = ACTIONS(273), + [anon_sym_match] = ACTIONS(276), + [anon_sym_AMP] = ACTIONS(279), + [anon_sym_STAR] = ACTIONS(282), + [anon_sym_move] = ACTIONS(234), + [anon_sym_break] = ACTIONS(285), + [anon_sym_continue] = ACTIONS(288), + [anon_sym_SQUOTE] = ACTIONS(291), + [sym_address_literal] = ACTIONS(294), + [anon_sym_true] = ACTIONS(297), + [anon_sym_false] = ACTIONS(297), + [aux_sym_num_literal_token1] = ACTIONS(300), + [aux_sym_num_literal_token2] = ACTIONS(303), + [sym_hex_string_literal] = ACTIONS(294), + [sym_byte_string_literal] = ACTIONS(294), + [sym__forall] = ACTIONS(306), + [sym__exists] = ACTIONS(306), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [33] = { + [sym_annotation] = STATE(33), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym_block_item] = STATE(387), + [sym_let_statement] = STATE(1548), + [sym__expression] = STATE(731), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_block_repeat1] = STATE(32), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_RBRACE] = ACTIONS(309), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_let] = ACTIONS(198), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [34] = { + [sym_annotation] = STATE(34), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(197), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(748), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_module] = ACTIONS(311), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [35] = { + [sym_annotation] = STATE(35), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(779), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(35), + [sym_identifier] = ACTIONS(313), + [anon_sym_COLON_COLON] = ACTIONS(316), + [anon_sym_LBRACE] = ACTIONS(319), + [anon_sym_LPAREN] = ACTIONS(322), + [anon_sym_RPAREN] = ACTIONS(325), + [anon_sym_copy] = ACTIONS(327), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(325), + [anon_sym_spec] = ACTIONS(330), + [anon_sym_DOLLAR] = ACTIONS(333), + [anon_sym_AT] = ACTIONS(336), + [anon_sym_BANG] = ACTIONS(339), + [anon_sym_PIPE] = ACTIONS(342), + [anon_sym_vector_LBRACK] = ACTIONS(345), + [anon_sym_vector_LT] = ACTIONS(348), + [anon_sym_if] = ACTIONS(351), + [anon_sym_while] = ACTIONS(354), + [anon_sym_loop] = ACTIONS(357), + [anon_sym_return] = ACTIONS(360), + [anon_sym_abort] = ACTIONS(363), + [anon_sym_match] = ACTIONS(366), + [anon_sym_AMP] = ACTIONS(369), + [anon_sym_STAR] = ACTIONS(372), + [anon_sym_move] = ACTIONS(327), + [anon_sym_break] = ACTIONS(375), + [anon_sym_continue] = ACTIONS(378), + [anon_sym_SQUOTE] = ACTIONS(381), + [sym_address_literal] = ACTIONS(384), + [anon_sym_true] = ACTIONS(387), + [anon_sym_false] = ACTIONS(387), + [aux_sym_num_literal_token1] = ACTIONS(390), + [aux_sym_num_literal_token2] = ACTIONS(393), + [sym_hex_string_literal] = ACTIONS(384), + [sym_byte_string_literal] = ACTIONS(384), + [sym__forall] = ACTIONS(396), + [sym__exists] = ACTIONS(396), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [36] = { + [sym_annotation] = STATE(36), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(725), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(35), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(399), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [37] = { + [sym_annotation] = STATE(37), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(741), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(53), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(401), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [38] = { + [sym_annotation] = STATE(38), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(740), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(36), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(403), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [39] = { + [sym_annotation] = STATE(39), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(197), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(748), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [40] = { + [sym_annotation] = STATE(40), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(723), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(35), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(405), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [41] = { + [sym_annotation] = STATE(41), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(733), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(40), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(407), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [42] = { + [sym_annotation] = STATE(42), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(733), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(35), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(407), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [43] = { + [sym_annotation] = STATE(43), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(744), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(35), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(409), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [44] = { + [sym_annotation] = STATE(44), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(194), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(719), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [45] = { + [sym_annotation] = STATE(45), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(195), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(738), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [46] = { + [sym_annotation] = STATE(46), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(744), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(42), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(409), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [47] = { + [sym_annotation] = STATE(47), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(772), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_index_expression_repeat1] = STATE(47), + [sym_identifier] = ACTIONS(411), + [anon_sym_COLON_COLON] = ACTIONS(414), + [anon_sym_LBRACE] = ACTIONS(417), + [anon_sym_LPAREN] = ACTIONS(420), + [anon_sym_copy] = ACTIONS(423), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(426), + [anon_sym_spec] = ACTIONS(428), + [anon_sym_DOLLAR] = ACTIONS(431), + [anon_sym_AT] = ACTIONS(434), + [anon_sym_BANG] = ACTIONS(437), + [anon_sym_PIPE] = ACTIONS(440), + [anon_sym_vector_LBRACK] = ACTIONS(443), + [anon_sym_vector_LT] = ACTIONS(446), + [anon_sym_if] = ACTIONS(449), + [anon_sym_while] = ACTIONS(452), + [anon_sym_loop] = ACTIONS(455), + [anon_sym_return] = ACTIONS(458), + [anon_sym_abort] = ACTIONS(461), + [anon_sym_match] = ACTIONS(464), + [anon_sym_AMP] = ACTIONS(467), + [anon_sym_STAR] = ACTIONS(470), + [anon_sym_move] = ACTIONS(423), + [anon_sym_break] = ACTIONS(473), + [anon_sym_continue] = ACTIONS(476), + [anon_sym_SQUOTE] = ACTIONS(479), + [sym_address_literal] = ACTIONS(482), + [anon_sym_true] = ACTIONS(485), + [anon_sym_false] = ACTIONS(485), + [aux_sym_num_literal_token1] = ACTIONS(488), + [aux_sym_num_literal_token2] = ACTIONS(491), + [sym_hex_string_literal] = ACTIONS(482), + [sym_byte_string_literal] = ACTIONS(482), + [sym__forall] = ACTIONS(494), + [sym__exists] = ACTIONS(494), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [48] = { + [sym_annotation] = STATE(48), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(727), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(43), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(497), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [49] = { + [sym_annotation] = STATE(49), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(151), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(762), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [50] = { + [sym_annotation] = STATE(50), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(734), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_index_expression_repeat1] = STATE(47), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(499), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [51] = { + [sym_annotation] = STATE(51), + [sym_spec_block] = STATE(472), + [sym_condition_properties] = STATE(165), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(768), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_LBRACK] = ACTIONS(216), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [52] = { + [sym_annotation] = STATE(52), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(735), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_index_expression_repeat1] = STATE(50), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(501), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [53] = { + [sym_annotation] = STATE(53), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(732), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [aux_sym_vector_expression_repeat1] = STATE(35), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(503), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [54] = { + [sym_annotation] = STATE(54), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(747), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(505), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [55] = { + [sym_annotation] = STATE(55), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(709), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_DASH_GT] = ACTIONS(507), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [56] = { + [sym_annotation] = STATE(56), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(625), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_DASH_GT] = ACTIONS(511), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [57] = { + [sym_annotation] = STATE(57), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(747), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(515), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [58] = { + [sym_annotation] = STATE(58), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(582), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_DASH_GT] = ACTIONS(517), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [59] = { + [sym_annotation] = STATE(59), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(699), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(519), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [60] = { + [sym_annotation] = STATE(60), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(520), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_DASH_GT] = ACTIONS(521), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [61] = { + [sym_annotation] = STATE(61), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(671), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_DASH_GT] = ACTIONS(525), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [62] = { + [sym_annotation] = STATE(62), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(631), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_DASH_GT] = ACTIONS(527), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [63] = { + [sym_annotation] = STATE(63), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(747), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(529), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [64] = { + [sym_annotation] = STATE(64), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(726), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(531), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [65] = { + [sym_annotation] = STATE(65), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(747), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_SEMI] = ACTIONS(533), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [66] = { + [sym_annotation] = STATE(66), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(726), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_RPAREN] = ACTIONS(535), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [67] = { + [sym_annotation] = STATE(67), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(726), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [68] = { + [sym_annotation] = STATE(68), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(415), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [69] = { + [sym_annotation] = STATE(69), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(684), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [70] = { + [sym_annotation] = STATE(70), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(685), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [71] = { + [sym_annotation] = STATE(71), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(670), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [72] = { + [sym_annotation] = STATE(72), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(653), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [73] = { + [sym_annotation] = STATE(73), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(692), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [74] = { + [sym_annotation] = STATE(74), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(688), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [75] = { + [sym_annotation] = STATE(75), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(753), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [76] = { + [sym_annotation] = STATE(76), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(669), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [77] = { + [sym_annotation] = STATE(77), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(686), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [78] = { + [sym_annotation] = STATE(78), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(672), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [79] = { + [sym_annotation] = STATE(79), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(577), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [80] = { + [sym_annotation] = STATE(80), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(519), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [81] = { + [sym_annotation] = STATE(81), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(526), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [82] = { + [sym_annotation] = STATE(82), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(525), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [83] = { + [sym_annotation] = STATE(83), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(501), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [84] = { + [sym_annotation] = STATE(84), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(786), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [85] = { + [sym_annotation] = STATE(85), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(502), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [86] = { + [sym_annotation] = STATE(86), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(415), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [87] = { + [sym_annotation] = STATE(87), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(503), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [88] = { + [sym_annotation] = STATE(88), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(498), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [89] = { + [sym_annotation] = STATE(89), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(505), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [90] = { + [sym_annotation] = STATE(90), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(506), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [91] = { + [sym_annotation] = STATE(91), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(508), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [92] = { + [sym_annotation] = STATE(92), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(510), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [93] = { + [sym_annotation] = STATE(93), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(511), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [94] = { + [sym_annotation] = STATE(94), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(512), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [95] = { + [sym_annotation] = STATE(95), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(513), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [96] = { + [sym_annotation] = STATE(96), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(515), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [97] = { + [sym_annotation] = STATE(97), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(755), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [98] = { + [sym_annotation] = STATE(98), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(785), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [99] = { + [sym_annotation] = STATE(99), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(518), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [100] = { + [sym_annotation] = STATE(100), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(436), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [101] = { + [sym_annotation] = STATE(101), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(586), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [102] = { + [sym_annotation] = STATE(102), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(690), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [103] = { + [sym_annotation] = STATE(103), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(784), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [104] = { + [sym_annotation] = STATE(104), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(592), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [105] = { + [sym_annotation] = STATE(105), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(756), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [106] = { + [sym_annotation] = STATE(106), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(598), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [107] = { + [sym_annotation] = STATE(107), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(599), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [108] = { + [sym_annotation] = STATE(108), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(602), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [109] = { + [sym_annotation] = STATE(109), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(651), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [110] = { + [sym_annotation] = STATE(110), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(603), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [111] = { + [sym_annotation] = STATE(111), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(650), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [112] = { + [sym_annotation] = STATE(112), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(649), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [113] = { + [sym_annotation] = STATE(113), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(646), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [114] = { + [sym_annotation] = STATE(114), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(415), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [115] = { + [sym_annotation] = STATE(115), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(611), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [116] = { + [sym_annotation] = STATE(116), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(596), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [117] = { + [sym_annotation] = STATE(117), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(627), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [118] = { + [sym_annotation] = STATE(118), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(622), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [119] = { + [sym_annotation] = STATE(119), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(610), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [120] = { + [sym_annotation] = STATE(120), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(630), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [121] = { + [sym_annotation] = STATE(121), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(605), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [122] = { + [sym_annotation] = STATE(122), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(604), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [123] = { + [sym_annotation] = STATE(123), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(574), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [124] = { + [sym_annotation] = STATE(124), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(595), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [125] = { + [sym_annotation] = STATE(125), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(593), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [126] = { + [sym_annotation] = STATE(126), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(640), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [127] = { + [sym_annotation] = STATE(127), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(629), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [128] = { + [sym_annotation] = STATE(128), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(583), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [129] = { + [sym_annotation] = STATE(129), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(638), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [130] = { + [sym_annotation] = STATE(130), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(415), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [131] = { + [sym_annotation] = STATE(131), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(637), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [132] = { + [sym_annotation] = STATE(132), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(436), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [133] = { + [sym_annotation] = STATE(133), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(521), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [134] = { + [sym_annotation] = STATE(134), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(758), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [135] = { + [sym_annotation] = STATE(135), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(759), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [136] = { + [sym_annotation] = STATE(136), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(682), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [137] = { + [sym_annotation] = STATE(137), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(782), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [138] = { + [sym_annotation] = STATE(138), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(403), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [139] = { + [sym_annotation] = STATE(139), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(437), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [140] = { + [sym_annotation] = STATE(140), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(679), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [141] = { + [sym_annotation] = STATE(141), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(530), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [142] = { + [sym_annotation] = STATE(142), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(437), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [143] = { + [sym_annotation] = STATE(143), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(780), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [144] = { + [sym_annotation] = STATE(144), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(415), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [145] = { + [sym_annotation] = STATE(145), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(591), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [146] = { + [sym_annotation] = STATE(146), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(707), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [147] = { + [sym_annotation] = STATE(147), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(703), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [148] = { + [sym_annotation] = STATE(148), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(626), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [149] = { + [sym_annotation] = STATE(149), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(700), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [150] = { + [sym_annotation] = STATE(150), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(697), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [151] = { + [sym_annotation] = STATE(151), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(778), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [152] = { + [sym_annotation] = STATE(152), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(771), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [153] = { + [sym_annotation] = STATE(153), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(678), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [154] = { + [sym_annotation] = STATE(154), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(760), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [155] = { + [sym_annotation] = STATE(155), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(695), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [156] = { + [sym_annotation] = STATE(156), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(415), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [157] = { + [sym_annotation] = STATE(157), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(710), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [158] = { + [sym_annotation] = STATE(158), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(708), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [159] = { + [sym_annotation] = STATE(159), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(705), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [160] = { + [sym_annotation] = STATE(160), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(704), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [161] = { + [sym_annotation] = STATE(161), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(702), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [162] = { + [sym_annotation] = STATE(162), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(701), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [163] = { + [sym_annotation] = STATE(163), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(698), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [164] = { + [sym_annotation] = STATE(164), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(696), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [165] = { + [sym_annotation] = STATE(165), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(757), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [166] = { + [sym_annotation] = STATE(166), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(706), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [167] = { + [sym_annotation] = STATE(167), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(712), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [168] = { + [sym_annotation] = STATE(168), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(677), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [169] = { + [sym_annotation] = STATE(169), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(764), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [170] = { + [sym_annotation] = STATE(170), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(718), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [171] = { + [sym_annotation] = STATE(171), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(632), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [172] = { + [sym_annotation] = STATE(172), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(769), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [173] = { + [sym_annotation] = STATE(173), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(676), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [174] = { + [sym_annotation] = STATE(174), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(675), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [175] = { + [sym_annotation] = STATE(175), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(713), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [176] = { + [sym_annotation] = STATE(176), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(436), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [177] = { + [sym_annotation] = STATE(177), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(761), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [178] = { + [sym_annotation] = STATE(178), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(681), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [179] = { + [sym_annotation] = STATE(179), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(674), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [180] = { + [sym_annotation] = STATE(180), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(624), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [181] = { + [sym_annotation] = STATE(181), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(621), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [182] = { + [sym_annotation] = STATE(182), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(620), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [183] = { + [sym_annotation] = STATE(183), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(619), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [184] = { + [sym_annotation] = STATE(184), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(767), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [185] = { + [sym_annotation] = STATE(185), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(776), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [186] = { + [sym_annotation] = STATE(186), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(618), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [187] = { + [sym_annotation] = STATE(187), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(403), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [188] = { + [sym_annotation] = STATE(188), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(617), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [189] = { + [sym_annotation] = STATE(189), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(616), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [190] = { + [sym_annotation] = STATE(190), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(585), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [191] = { + [sym_annotation] = STATE(191), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(437), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [192] = { + [sym_annotation] = STATE(192), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(615), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [193] = { + [sym_annotation] = STATE(193), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(781), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [194] = { + [sym_annotation] = STATE(194), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(717), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [195] = { + [sym_annotation] = STATE(195), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(745), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [196] = { + [sym_annotation] = STATE(196), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(648), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [197] = { + [sym_annotation] = STATE(197), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(763), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [198] = { + [sym_annotation] = STATE(198), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(614), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [199] = { + [sym_annotation] = STATE(199), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(774), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [200] = { + [sym_annotation] = STATE(200), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(783), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [201] = { + [sym_annotation] = STATE(201), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(773), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [202] = { + [sym_annotation] = STATE(202), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(777), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [203] = { + [sym_annotation] = STATE(203), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(775), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [204] = { + [sym_annotation] = STATE(204), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(522), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [205] = { + [sym_annotation] = STATE(205), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(639), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [206] = { + [sym_annotation] = STATE(206), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(724), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [207] = { + [sym_annotation] = STATE(207), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(747), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [208] = { + [sym_annotation] = STATE(208), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(652), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [209] = { + [sym_annotation] = STATE(209), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(765), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [210] = { + [sym_annotation] = STATE(210), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(635), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [211] = { + [sym_annotation] = STATE(211), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(403), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [212] = { + [sym_annotation] = STATE(212), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(694), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [213] = { + [sym_annotation] = STATE(213), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(507), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(60), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(527), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(133), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(132), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(99), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(25), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(46), + [anon_sym_loop] = ACTIONS(48), + [anon_sym_return] = ACTIONS(50), + [anon_sym_abort] = ACTIONS(52), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(523), + [anon_sym_move] = ACTIONS(25), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(76), + [sym__exists] = ACTIONS(76), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [214] = { + [sym_annotation] = STATE(214), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(749), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(55), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(680), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(175), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(182), + [anon_sym_loop] = ACTIONS(184), + [anon_sym_return] = ACTIONS(186), + [anon_sym_abort] = ACTIONS(188), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(190), + [sym__exists] = ACTIONS(190), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [215] = { + [sym_annotation] = STATE(215), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(729), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [216] = { + [sym_annotation] = STATE(216), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(751), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [217] = { + [sym_annotation] = STATE(217), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(730), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [218] = { + [sym_annotation] = STATE(218), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(636), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [219] = { + [sym_annotation] = STATE(219), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(436), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [220] = { + [sym_annotation] = STATE(220), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(594), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [221] = { + [sym_annotation] = STATE(221), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(597), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [222] = { + [sym_annotation] = STATE(222), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(606), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [223] = { + [sym_annotation] = STATE(223), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(613), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [224] = { + [sym_annotation] = STATE(224), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(437), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [225] = { + [sym_annotation] = STATE(225), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(607), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [226] = { + [sym_annotation] = STATE(226), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(608), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [227] = { + [sym_annotation] = STATE(227), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(403), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(58), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(590), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(128), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(116), + [anon_sym_loop] = ACTIONS(118), + [anon_sym_return] = ACTIONS(120), + [anon_sym_abort] = ACTIONS(122), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(124), + [sym__exists] = ACTIONS(124), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [228] = { + [sym_annotation] = STATE(228), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(612), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [229] = { + [sym_annotation] = STATE(229), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(609), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(461), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(56), + [sym_if_expression] = STATE(461), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(461), + [sym_call_expression] = STATE(461), + [sym_macro_call_expression] = STATE(461), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(576), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(101), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(100), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(180), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(126), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(133), + [anon_sym_loop] = ACTIONS(135), + [anon_sym_return] = ACTIONS(137), + [anon_sym_abort] = ACTIONS(139), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(513), + [anon_sym_move] = ACTIONS(126), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(146), + [sym__exists] = ACTIONS(146), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [230] = { + [sym_annotation] = STATE(230), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(683), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(486), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(61), + [sym_if_expression] = STATE(486), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(486), + [sym_call_expression] = STATE(486), + [sym_macro_call_expression] = STATE(486), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(691), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(178), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(176), + [sym__expression_term] = STATE(579), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(78), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(167), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(131), + [anon_sym_while] = ACTIONS(169), + [anon_sym_loop] = ACTIONS(171), + [anon_sym_return] = ACTIONS(173), + [anon_sym_abort] = ACTIONS(175), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(509), + [anon_sym_move] = ACTIONS(167), + [anon_sym_break] = ACTIONS(144), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(177), + [sym__exists] = ACTIONS(177), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [231] = { + [sym_annotation] = STATE(231), + [sym_spec_block] = STATE(472), + [sym_module_access] = STATE(312), + [sym_macro_module_access] = STATE(1161), + [sym_module_identity] = STATE(272), + [sym_block] = STATE(472), + [sym__expression] = STATE(642), + [sym_identified_expression] = STATE(478), + [sym_vector_expression] = STATE(480), + [sym_quantifier_expression] = STATE(478), + [sym_lambda_expression] = STATE(478), + [sym_lambda_bindings] = STATE(62), + [sym_if_expression] = STATE(480), + [sym_while_expression] = STATE(478), + [sym_loop_expression] = STATE(478), + [sym_return_expression] = STATE(478), + [sym_abort_expression] = STATE(478), + [sym_match_expression] = STATE(480), + [sym_call_expression] = STATE(480), + [sym_macro_call_expression] = STATE(480), + [sym_pack_expression] = STATE(472), + [sym_name_expression] = STATE(287), + [sym_assign_expression] = STATE(478), + [sym_binary_expression] = STATE(478), + [sym__unary_expression] = STATE(601), + [sym_unary_expression] = STATE(474), + [sym_unary_op] = STATE(220), + [sym_dereference_expression] = STATE(474), + [sym_borrow_expression] = STATE(474), + [sym_move_or_copy_expression] = STATE(474), + [sym__reference] = STATE(219), + [sym__expression_term] = STATE(524), + [sym_break_expression] = STATE(472), + [sym_continue_expression] = STATE(472), + [sym_expression_list] = STATE(472), + [sym_unit_expression] = STATE(472), + [sym_cast_expression] = STATE(478), + [sym_annotation_expression] = STATE(472), + [sym_dot_expression] = STATE(472), + [sym_index_expression] = STATE(472), + [sym__literal_value] = STATE(472), + [sym_imm_ref] = STATE(481), + [sym_mut_ref] = STATE(481), + [sym_block_identifier] = STATE(218), + [sym_label] = STATE(1549), + [sym_bool_literal] = STATE(423), + [sym_num_literal] = STATE(379), + [sym__module_identifier] = STATE(1216), + [sym__reserved_identifier] = STATE(299), + [sym_identifier] = ACTIONS(13), + [anon_sym_COLON_COLON] = ACTIONS(19), + [anon_sym_LBRACE] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_copy] = ACTIONS(114), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(29), + [anon_sym_DOLLAR] = ACTIONS(31), + [anon_sym_AT] = ACTIONS(33), + [anon_sym_BANG] = ACTIONS(200), + [anon_sym_PIPE] = ACTIONS(202), + [anon_sym_vector_LBRACK] = ACTIONS(40), + [anon_sym_vector_LT] = ACTIONS(42), + [anon_sym_if] = ACTIONS(44), + [anon_sym_while] = ACTIONS(154), + [anon_sym_loop] = ACTIONS(156), + [anon_sym_return] = ACTIONS(158), + [anon_sym_abort] = ACTIONS(160), + [anon_sym_match] = ACTIONS(54), + [anon_sym_AMP] = ACTIONS(204), + [anon_sym_STAR] = ACTIONS(206), + [anon_sym_move] = ACTIONS(114), + [anon_sym_break] = ACTIONS(62), + [anon_sym_continue] = ACTIONS(64), + [anon_sym_SQUOTE] = ACTIONS(66), + [sym_address_literal] = ACTIONS(68), + [anon_sym_true] = ACTIONS(70), + [anon_sym_false] = ACTIONS(70), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym_hex_string_literal] = ACTIONS(68), + [sym_byte_string_literal] = ACTIONS(68), + [sym__forall] = ACTIONS(162), + [sym__exists] = ACTIONS(162), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [232] = { + [sym_annotation] = STATE(232), + [sym__type] = STATE(1322), + [sym_apply_type] = STATE(271), + [sym_ref_type] = STATE(271), + [sym_tuple_type] = STATE(271), + [sym_primitive_type] = STATE(271), + [sym_module_access] = STATE(260), + [sym_module_identity] = STATE(898), + [sym_function_type] = STATE(271), + [sym_function_type_parameters] = STATE(1293), + [sym__reference] = STATE(347), + [sym_imm_ref] = STATE(794), + [sym_mut_ref] = STATE(794), + [sym_num_literal] = STATE(1484), + [sym__module_identifier] = STATE(1283), + [sym__reserved_identifier] = STATE(848), + [aux_sym_positional_fields_repeat1] = STATE(331), + [sym_identifier] = ACTIONS(537), + [anon_sym_SEMI] = ACTIONS(539), + [anon_sym_as] = ACTIONS(541), + [anon_sym_DOT] = ACTIONS(541), + [anon_sym_COMMA] = ACTIONS(539), + [anon_sym_RBRACE] = ACTIONS(539), + [anon_sym_LPAREN] = ACTIONS(543), + [anon_sym_RPAREN] = ACTIONS(539), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(539), + [anon_sym_EQ] = ACTIONS(541), + [anon_sym_COLON] = ACTIONS(539), + [anon_sym_with] = ACTIONS(541), + [anon_sym_LBRACK] = ACTIONS(539), + [anon_sym_to] = ACTIONS(541), + [anon_sym_u8] = ACTIONS(545), + [anon_sym_u16] = ACTIONS(545), + [anon_sym_u32] = ACTIONS(545), + [anon_sym_u64] = ACTIONS(545), + [anon_sym_u128] = ACTIONS(545), + [anon_sym_u256] = ACTIONS(545), + [anon_sym_bool] = ACTIONS(545), + [anon_sym_address] = ACTIONS(545), + [anon_sym_signer] = ACTIONS(545), + [anon_sym_bytearray] = ACTIONS(545), + [anon_sym_DOLLAR] = ACTIONS(547), + [anon_sym_AT] = ACTIONS(547), + [anon_sym_LT] = ACTIONS(541), + [anon_sym_GT] = ACTIONS(541), + [anon_sym_DASH_GT] = ACTIONS(539), + [anon_sym_PIPE] = ACTIONS(549), + [anon_sym_PLUS] = ACTIONS(539), + [anon_sym_where] = ACTIONS(541), + [anon_sym_else] = ACTIONS(541), + [anon_sym_EQ_EQ_GT] = ACTIONS(539), + [anon_sym_PIPE_PIPE] = ACTIONS(539), + [anon_sym_AMP_AMP] = ACTIONS(539), + [anon_sym_EQ_EQ] = ACTIONS(541), + [anon_sym_BANG_EQ] = ACTIONS(539), + [anon_sym_LT_EQ] = ACTIONS(539), + [anon_sym_GT_EQ] = ACTIONS(539), + [anon_sym_DOT_DOT] = ACTIONS(539), + [anon_sym_CARET] = ACTIONS(539), + [anon_sym_AMP] = ACTIONS(552), + [anon_sym_LT_LT] = ACTIONS(539), + [anon_sym_GT_GT] = ACTIONS(539), + [anon_sym_DASH] = ACTIONS(541), + [anon_sym_STAR] = ACTIONS(539), + [anon_sym_SLASH] = ACTIONS(541), + [anon_sym_PERCENT] = ACTIONS(539), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym__forall] = ACTIONS(555), + [sym__exists] = ACTIONS(555), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [233] = { + [sym_annotation] = STATE(233), + [sym__type] = STATE(1322), + [sym_apply_type] = STATE(271), + [sym_ref_type] = STATE(271), + [sym_tuple_type] = STATE(271), + [sym_primitive_type] = STATE(271), + [sym_module_access] = STATE(260), + [sym_module_identity] = STATE(898), + [sym_function_type] = STATE(271), + [sym_function_type_parameters] = STATE(1293), + [sym__reference] = STATE(347), + [sym_imm_ref] = STATE(794), + [sym_mut_ref] = STATE(794), + [sym_num_literal] = STATE(1484), + [sym__module_identifier] = STATE(1283), + [sym__reserved_identifier] = STATE(848), + [aux_sym_positional_fields_repeat1] = STATE(331), + [sym_identifier] = ACTIONS(537), + [anon_sym_SEMI] = ACTIONS(557), + [anon_sym_as] = ACTIONS(559), + [anon_sym_DOT] = ACTIONS(559), + [anon_sym_COMMA] = ACTIONS(557), + [anon_sym_RBRACE] = ACTIONS(557), + [anon_sym_LPAREN] = ACTIONS(543), + [anon_sym_RPAREN] = ACTIONS(557), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(557), + [anon_sym_EQ] = ACTIONS(559), + [anon_sym_COLON] = ACTIONS(557), + [anon_sym_with] = ACTIONS(559), + [anon_sym_LBRACK] = ACTIONS(557), + [anon_sym_to] = ACTIONS(559), + [anon_sym_u8] = ACTIONS(545), + [anon_sym_u16] = ACTIONS(545), + [anon_sym_u32] = ACTIONS(545), + [anon_sym_u64] = ACTIONS(545), + [anon_sym_u128] = ACTIONS(545), + [anon_sym_u256] = ACTIONS(545), + [anon_sym_bool] = ACTIONS(545), + [anon_sym_address] = ACTIONS(545), + [anon_sym_signer] = ACTIONS(545), + [anon_sym_bytearray] = ACTIONS(545), + [anon_sym_DOLLAR] = ACTIONS(547), + [anon_sym_AT] = ACTIONS(547), + [anon_sym_LT] = ACTIONS(559), + [anon_sym_GT] = ACTIONS(559), + [anon_sym_DASH_GT] = ACTIONS(557), + [anon_sym_PIPE] = ACTIONS(561), + [anon_sym_PLUS] = ACTIONS(557), + [anon_sym_where] = ACTIONS(559), + [anon_sym_else] = ACTIONS(559), + [anon_sym_EQ_EQ_GT] = ACTIONS(557), + [anon_sym_PIPE_PIPE] = ACTIONS(557), + [anon_sym_AMP_AMP] = ACTIONS(557), + [anon_sym_EQ_EQ] = ACTIONS(559), + [anon_sym_BANG_EQ] = ACTIONS(557), + [anon_sym_LT_EQ] = ACTIONS(557), + [anon_sym_GT_EQ] = ACTIONS(557), + [anon_sym_DOT_DOT] = ACTIONS(557), + [anon_sym_CARET] = ACTIONS(557), + [anon_sym_AMP] = ACTIONS(564), + [anon_sym_LT_LT] = ACTIONS(557), + [anon_sym_GT_GT] = ACTIONS(557), + [anon_sym_DASH] = ACTIONS(559), + [anon_sym_STAR] = ACTIONS(557), + [anon_sym_SLASH] = ACTIONS(559), + [anon_sym_PERCENT] = ACTIONS(557), + [aux_sym_num_literal_token1] = ACTIONS(72), + [aux_sym_num_literal_token2] = ACTIONS(74), + [sym__forall] = ACTIONS(555), + [sym__exists] = ACTIONS(555), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [234] = { + [sym_annotation] = STATE(234), + [sym_identifier] = ACTIONS(567), + [anon_sym_SEMI] = ACTIONS(569), + [anon_sym_as] = ACTIONS(567), + [anon_sym_DOT] = ACTIONS(567), + [anon_sym_COLON_COLON] = ACTIONS(569), + [anon_sym_LBRACE] = ACTIONS(569), + [anon_sym_COMMA] = ACTIONS(569), + [anon_sym_RBRACE] = ACTIONS(569), + [anon_sym_LPAREN] = ACTIONS(569), + [anon_sym_RPAREN] = ACTIONS(569), + [anon_sym_copy] = ACTIONS(567), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_RBRACK] = ACTIONS(569), + [anon_sym_EQ] = ACTIONS(567), + [anon_sym_COLON] = ACTIONS(567), + [anon_sym_spec] = ACTIONS(567), + [anon_sym_with] = ACTIONS(567), + [anon_sym_LBRACK] = ACTIONS(569), + [anon_sym_to] = ACTIONS(567), + [anon_sym_DOLLAR] = ACTIONS(569), + [anon_sym_AT] = ACTIONS(567), + [anon_sym_BANG] = ACTIONS(567), + [anon_sym_LT] = ACTIONS(567), + [anon_sym_GT] = ACTIONS(567), + [anon_sym_PIPE] = ACTIONS(567), + [anon_sym_PLUS] = ACTIONS(569), + [anon_sym_vector_LBRACK] = ACTIONS(569), + [anon_sym_vector_LT] = ACTIONS(569), + [anon_sym_where] = ACTIONS(567), + [anon_sym_if] = ACTIONS(567), + [anon_sym_else] = ACTIONS(567), + [anon_sym_while] = ACTIONS(567), + [anon_sym_loop] = ACTIONS(567), + [anon_sym_return] = ACTIONS(567), + [anon_sym_abort] = ACTIONS(567), + [anon_sym_match] = ACTIONS(567), + [anon_sym_EQ_EQ_GT] = ACTIONS(569), + [anon_sym_PIPE_PIPE] = ACTIONS(569), + [anon_sym_AMP_AMP] = ACTIONS(569), + [anon_sym_EQ_EQ] = ACTIONS(567), + [anon_sym_BANG_EQ] = ACTIONS(569), + [anon_sym_LT_EQ] = ACTIONS(569), + [anon_sym_GT_EQ] = ACTIONS(569), + [anon_sym_DOT_DOT] = ACTIONS(569), + [anon_sym_CARET] = ACTIONS(569), + [anon_sym_AMP] = ACTIONS(567), + [anon_sym_LT_LT] = ACTIONS(569), + [anon_sym_GT_GT] = ACTIONS(569), + [anon_sym_DASH] = ACTIONS(569), + [anon_sym_STAR] = ACTIONS(569), + [anon_sym_SLASH] = ACTIONS(567), + [anon_sym_PERCENT] = ACTIONS(569), + [anon_sym_move] = ACTIONS(567), + [anon_sym_break] = ACTIONS(567), + [anon_sym_continue] = ACTIONS(567), + [anon_sym_SQUOTE] = ACTIONS(569), + [sym_address_literal] = ACTIONS(569), + [anon_sym_true] = ACTIONS(567), + [anon_sym_false] = ACTIONS(567), + [aux_sym_num_literal_token1] = ACTIONS(567), + [aux_sym_num_literal_token2] = ACTIONS(569), + [sym_hex_string_literal] = ACTIONS(569), + [sym_byte_string_literal] = ACTIONS(569), + [sym__forall] = ACTIONS(567), + [sym__exists] = ACTIONS(567), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [235] = { + [sym_annotation] = STATE(235), + [sym__type] = STATE(1322), + [sym_apply_type] = STATE(271), + [sym_ref_type] = STATE(271), + [sym_tuple_type] = STATE(271), + [sym_primitive_type] = STATE(271), + [sym_module_access] = STATE(260), + [sym_module_identity] = STATE(898), + [sym_function_type] = STATE(271), + [sym_function_type_parameters] = STATE(1293), + [sym__reference] = STATE(347), + [sym_imm_ref] = STATE(794), + [sym_mut_ref] = STATE(794), + [sym_num_literal] = STATE(1484), + [sym__module_identifier] = STATE(1283), + [sym__reserved_identifier] = STATE(848), + [aux_sym_positional_fields_repeat1] = STATE(331), + [sym_identifier] = ACTIONS(571), + [anon_sym_COLON_COLON] = ACTIONS(557), + [anon_sym_LBRACE] = ACTIONS(557), + [anon_sym_LPAREN] = ACTIONS(574), + [anon_sym_copy] = ACTIONS(559), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(559), + [anon_sym_u8] = ACTIONS(545), + [anon_sym_u16] = ACTIONS(545), + [anon_sym_u32] = ACTIONS(545), + [anon_sym_u64] = ACTIONS(545), + [anon_sym_u128] = ACTIONS(545), + [anon_sym_u256] = ACTIONS(545), + [anon_sym_bool] = ACTIONS(545), + [anon_sym_address] = ACTIONS(545), + [anon_sym_signer] = ACTIONS(545), + [anon_sym_bytearray] = ACTIONS(545), + [anon_sym_DOLLAR] = ACTIONS(577), + [anon_sym_AT] = ACTIONS(580), + [anon_sym_BANG] = ACTIONS(557), + [anon_sym_DASH_GT] = ACTIONS(557), + [anon_sym_PIPE] = ACTIONS(583), + [anon_sym_vector_LBRACK] = ACTIONS(557), + [anon_sym_vector_LT] = ACTIONS(557), + [anon_sym_if] = ACTIONS(559), + [anon_sym_while] = ACTIONS(559), + [anon_sym_loop] = ACTIONS(559), + [anon_sym_return] = ACTIONS(559), + [anon_sym_abort] = ACTIONS(559), + [anon_sym_match] = ACTIONS(559), + [anon_sym_AMP] = ACTIONS(586), + [anon_sym_STAR] = ACTIONS(557), + [anon_sym_move] = ACTIONS(559), + [anon_sym_break] = ACTIONS(559), + [anon_sym_continue] = ACTIONS(559), + [anon_sym_SQUOTE] = ACTIONS(557), + [sym_address_literal] = ACTIONS(557), + [anon_sym_true] = ACTIONS(559), + [anon_sym_false] = ACTIONS(559), + [aux_sym_num_literal_token1] = ACTIONS(589), + [aux_sym_num_literal_token2] = ACTIONS(592), + [sym_hex_string_literal] = ACTIONS(557), + [sym_byte_string_literal] = ACTIONS(557), + [sym__forall] = ACTIONS(595), + [sym__exists] = ACTIONS(595), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, + [236] = { + [sym_annotation] = STATE(236), + [sym__type] = STATE(1322), + [sym_apply_type] = STATE(271), + [sym_ref_type] = STATE(271), + [sym_tuple_type] = STATE(271), + [sym_primitive_type] = STATE(271), + [sym_module_access] = STATE(260), + [sym_module_identity] = STATE(898), + [sym_function_type] = STATE(271), + [sym_function_type_parameters] = STATE(1293), + [sym__reference] = STATE(347), + [sym_imm_ref] = STATE(794), + [sym_mut_ref] = STATE(794), + [sym_num_literal] = STATE(1484), + [sym__module_identifier] = STATE(1283), + [sym__reserved_identifier] = STATE(848), + [aux_sym_positional_fields_repeat1] = STATE(331), + [sym_identifier] = ACTIONS(598), + [anon_sym_COLON_COLON] = ACTIONS(539), + [anon_sym_LBRACE] = ACTIONS(539), + [anon_sym_LPAREN] = ACTIONS(601), + [anon_sym_copy] = ACTIONS(541), + [anon_sym_POUND_LBRACK] = ACTIONS(3), + [anon_sym_spec] = ACTIONS(541), + [anon_sym_u8] = ACTIONS(545), + [anon_sym_u16] = ACTIONS(545), + [anon_sym_u32] = ACTIONS(545), + [anon_sym_u64] = ACTIONS(545), + [anon_sym_u128] = ACTIONS(545), + [anon_sym_u256] = ACTIONS(545), + [anon_sym_bool] = ACTIONS(545), + [anon_sym_address] = ACTIONS(545), + [anon_sym_signer] = ACTIONS(545), + [anon_sym_bytearray] = ACTIONS(545), + [anon_sym_DOLLAR] = ACTIONS(604), + [anon_sym_AT] = ACTIONS(607), + [anon_sym_BANG] = ACTIONS(539), + [anon_sym_DASH_GT] = ACTIONS(539), + [anon_sym_PIPE] = ACTIONS(610), + [anon_sym_vector_LBRACK] = ACTIONS(539), + [anon_sym_vector_LT] = ACTIONS(539), + [anon_sym_if] = ACTIONS(541), + [anon_sym_while] = ACTIONS(541), + [anon_sym_loop] = ACTIONS(541), + [anon_sym_return] = ACTIONS(541), + [anon_sym_abort] = ACTIONS(541), + [anon_sym_match] = ACTIONS(541), + [anon_sym_AMP] = ACTIONS(613), + [anon_sym_STAR] = ACTIONS(539), + [anon_sym_move] = ACTIONS(541), + [anon_sym_break] = ACTIONS(541), + [anon_sym_continue] = ACTIONS(541), + [anon_sym_SQUOTE] = ACTIONS(539), + [sym_address_literal] = ACTIONS(539), + [anon_sym_true] = ACTIONS(541), + [anon_sym_false] = ACTIONS(541), + [aux_sym_num_literal_token1] = ACTIONS(616), + [aux_sym_num_literal_token2] = ACTIONS(619), + [sym_hex_string_literal] = ACTIONS(539), + [sym_byte_string_literal] = ACTIONS(539), + [sym__forall] = ACTIONS(622), + [sym__exists] = ACTIONS(622), + [sym_line_comment] = ACTIONS(5), + [sym_newline] = ACTIONS(5), + [sym__whitespace] = ACTIONS(7), + [sym_block_comment] = ACTIONS(5), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(237), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(627), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(625), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [66] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(238), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(631), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(629), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [132] = 32, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(13), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_COLON_COLON, + ACTIONS(21), 1, + anon_sym_LBRACE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_spec, + ACTIONS(31), 1, + anon_sym_DOLLAR, + ACTIONS(33), 1, + anon_sym_AT, + ACTIONS(40), 1, + anon_sym_vector_LBRACK, + ACTIONS(42), 1, + anon_sym_vector_LT, + ACTIONS(54), 1, + anon_sym_match, + ACTIONS(64), 1, + anon_sym_continue, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(131), 1, + anon_sym_if, + ACTIONS(144), 1, + anon_sym_break, + STATE(239), 1, + sym_annotation, + STATE(272), 1, + sym_module_identity, + STATE(287), 1, + sym_name_expression, + STATE(299), 1, + sym__reserved_identifier, + STATE(312), 1, + sym_module_access, + STATE(379), 1, + sym_num_literal, + STATE(411), 1, + sym__expression_term, + STATE(423), 1, + sym_bool_literal, + STATE(1161), 1, + sym_macro_module_access, + STATE(1216), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(633), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(472), 16, + sym_spec_block, + sym_block, + sym_vector_expression, + sym_if_expression, + sym_match_expression, + sym_call_expression, + sym_macro_call_expression, + sym_pack_expression, + sym_break_expression, + sym_continue_expression, + sym_expression_list, + sym_unit_expression, + sym_annotation_expression, + sym_dot_expression, + sym_index_expression, + sym__literal_value, + [250] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(240), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(637), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(635), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [316] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(241), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(641), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(639), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [382] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(242), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(645), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(643), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [448] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(243), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(649), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(647), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [514] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(244), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(653), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(651), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [580] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(245), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(657), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(655), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [646] = 32, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(13), 1, + sym_identifier, + ACTIONS(19), 1, + anon_sym_COLON_COLON, + ACTIONS(21), 1, + anon_sym_LBRACE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(29), 1, + anon_sym_spec, + ACTIONS(31), 1, + anon_sym_DOLLAR, + ACTIONS(33), 1, + anon_sym_AT, + ACTIONS(40), 1, + anon_sym_vector_LBRACK, + ACTIONS(42), 1, + anon_sym_vector_LT, + ACTIONS(44), 1, + anon_sym_if, + ACTIONS(54), 1, + anon_sym_match, + ACTIONS(62), 1, + anon_sym_break, + ACTIONS(64), 1, + anon_sym_continue, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + STATE(246), 1, + sym_annotation, + STATE(272), 1, + sym_module_identity, + STATE(287), 1, + sym_name_expression, + STATE(299), 1, + sym__reserved_identifier, + STATE(312), 1, + sym_module_access, + STATE(379), 1, + sym_num_literal, + STATE(411), 1, + sym__expression_term, + STATE(423), 1, + sym_bool_literal, + STATE(1161), 1, + sym_macro_module_access, + STATE(1216), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(633), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(472), 16, + sym_spec_block, + sym_block, + sym_vector_expression, + sym_if_expression, + sym_match_expression, + sym_call_expression, + sym_macro_call_expression, + sym_pack_expression, + sym_break_expression, + sym_continue_expression, + sym_expression_list, + sym_unit_expression, + sym_annotation_expression, + sym_dot_expression, + sym_index_expression, + sym__literal_value, + [764] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(247), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(661), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(659), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [830] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(248), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(665), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(663), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [896] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(249), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(669), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(667), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [962] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(250), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(673), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(671), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [1028] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(251), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(677), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(675), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [1094] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(252), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(681), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(679), 39, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_SEMI, + anon_sym_fun, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_RPAREN, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_RBRACK, + anon_sym_const, + anon_sym_COLON, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [1160] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(253), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(683), 22, + anon_sym_as, + anon_sym_copy, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_spec, + anon_sym_AT, + anon_sym_where, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(685), 24, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_EQ_GT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [1225] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(254), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(687), 22, + anon_sym_as, + anon_sym_copy, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_spec, + anon_sym_AT, + anon_sym_where, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(689), 24, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_EQ_GT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [1290] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(255), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(691), 22, + anon_sym_as, + anon_sym_copy, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_spec, + anon_sym_AT, + anon_sym_where, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(693), 24, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_EQ_GT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [1355] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(256), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(695), 22, + anon_sym_as, + anon_sym_copy, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_spec, + anon_sym_AT, + anon_sym_where, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(697), 24, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_EQ_GT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [1420] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(559), 1, + anon_sym_where, + ACTIONS(699), 1, + anon_sym_PIPE, + ACTIONS(701), 1, + anon_sym_AMP, + STATE(257), 1, + sym_annotation, + STATE(260), 1, + sym_module_access, + STATE(331), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(557), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_GT, + anon_sym_DASH_GT, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [1525] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(258), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(703), 22, + anon_sym_as, + anon_sym_copy, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_spec, + anon_sym_AT, + anon_sym_where, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(705), 24, + anon_sym_SEMI, + anon_sym_DOT, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_EQ_GT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [1590] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(541), 1, + anon_sym_where, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(699), 1, + anon_sym_PIPE, + ACTIONS(701), 1, + anon_sym_AMP, + STATE(259), 1, + sym_annotation, + STATE(260), 1, + sym_module_access, + STATE(331), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(539), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_GT, + anon_sym_DASH_GT, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [1695] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + STATE(260), 1, + sym_annotation, + STATE(273), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(707), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(709), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [1759] = 30, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(713), 1, + sym_identifier, + ACTIONS(715), 1, + anon_sym_public, + ACTIONS(717), 1, + anon_sym_use, + ACTIONS(719), 1, + anon_sym_fun, + ACTIONS(721), 1, + anon_sym_RBRACE, + ACTIONS(723), 1, + anon_sym_native, + ACTIONS(725), 1, + anon_sym_let, + ACTIONS(729), 1, + anon_sym_requires, + ACTIONS(731), 1, + anon_sym_aborts_if, + ACTIONS(735), 1, + anon_sym_invariant, + ACTIONS(737), 1, + anon_sym_include, + ACTIONS(739), 1, + anon_sym_apply, + ACTIONS(741), 1, + anon_sym_pragma, + STATE(39), 1, + sym__spec_condition_kind, + STATE(261), 1, + sym_annotation, + STATE(262), 1, + aux_sym_spec_body_repeat1, + STATE(311), 1, + aux_sym_spec_body_repeat2, + STATE(770), 1, + sym_use_declaration, + STATE(789), 1, + sym__spec_abort_with_or_modifies, + STATE(824), 1, + sym__spec_block_memeber, + STATE(826), 1, + sym__spec_condition, + STATE(827), 1, + sym__spec_abort_if, + ACTIONS(733), 2, + anon_sym_aborts_with, + anon_sym_modifies, + ACTIONS(743), 2, + anon_sym_global, + anon_sym_local, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(796), 3, + sym_uninterpreted_spec_function, + sym_native_spec_function, + sym_usual_spec_function, + ACTIONS(727), 5, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + STATE(825), 8, + sym_spec_let, + sym_spec_condition, + sym_spec_invariant, + sym_spec_include, + sym_spec_apply, + sym_spec_pragma, + sym_spec_variable, + sym__spec_function, + [1867] = 30, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(713), 1, + sym_identifier, + ACTIONS(715), 1, + anon_sym_public, + ACTIONS(717), 1, + anon_sym_use, + ACTIONS(719), 1, + anon_sym_fun, + ACTIONS(723), 1, + anon_sym_native, + ACTIONS(725), 1, + anon_sym_let, + ACTIONS(729), 1, + anon_sym_requires, + ACTIONS(731), 1, + anon_sym_aborts_if, + ACTIONS(735), 1, + anon_sym_invariant, + ACTIONS(737), 1, + anon_sym_include, + ACTIONS(739), 1, + anon_sym_apply, + ACTIONS(741), 1, + anon_sym_pragma, + ACTIONS(745), 1, + anon_sym_RBRACE, + STATE(39), 1, + sym__spec_condition_kind, + STATE(262), 1, + sym_annotation, + STATE(296), 1, + aux_sym_spec_body_repeat2, + STATE(720), 1, + aux_sym_spec_body_repeat1, + STATE(770), 1, + sym_use_declaration, + STATE(789), 1, + sym__spec_abort_with_or_modifies, + STATE(824), 1, + sym__spec_block_memeber, + STATE(826), 1, + sym__spec_condition, + STATE(827), 1, + sym__spec_abort_if, + ACTIONS(733), 2, + anon_sym_aborts_with, + anon_sym_modifies, + ACTIONS(743), 2, + anon_sym_global, + anon_sym_local, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(796), 3, + sym_uninterpreted_spec_function, + sym_native_spec_function, + sym_usual_spec_function, + ACTIONS(727), 5, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + STATE(825), 8, + sym_spec_let, + sym_spec_condition, + sym_spec_invariant, + sym_spec_include, + sym_spec_apply, + sym_spec_pragma, + sym_spec_variable, + sym__spec_function, + [1975] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(263), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(747), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(749), 22, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_DASH_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2034] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(264), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(559), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(557), 22, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_DASH_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2093] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(265), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(751), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(753), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2151] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(759), 1, + anon_sym_LT, + STATE(266), 1, + sym_annotation, + STATE(301), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(757), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(755), 27, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [2215] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(267), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(763), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(765), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2273] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(771), 1, + anon_sym_COLON_COLON, + ACTIONS(773), 1, + anon_sym_LT, + STATE(268), 1, + sym_annotation, + STATE(1535), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(769), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(767), 27, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [2337] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(269), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(776), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(778), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2395] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(270), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(780), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(782), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2453] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(271), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(784), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(786), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2511] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(792), 1, + anon_sym_COLON_COLON, + ACTIONS(794), 1, + anon_sym_LT, + STATE(272), 1, + sym_annotation, + STATE(282), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(790), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(788), 27, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [2575] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(273), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(797), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(799), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2633] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(803), 1, + anon_sym_public, + ACTIONS(806), 1, + anon_sym_use, + STATE(314), 1, + sym_use_declaration, + STATE(274), 2, + sym_annotation, + aux_sym_spec_body_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(809), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(801), 19, + anon_sym_copy, + anon_sym_spec, + anon_sym_let, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [2697] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(275), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(811), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(813), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2755] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(276), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(815), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(817), 21, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [2813] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(277), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(703), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(705), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [2870] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + STATE(278), 1, + sym_annotation, + STATE(1162), 1, + sym_quantifier_binding, + STATE(1422), 1, + sym_quantifier_bindings, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 13, + anon_sym_as, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_with, + anon_sym_to, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_else, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 22, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [2933] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(279), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(691), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(693), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [2990] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(610), 1, + anon_sym_PIPE, + ACTIONS(701), 1, + anon_sym_AMP, + STATE(260), 1, + sym_module_access, + STATE(280), 1, + sym_annotation, + STATE(331), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(539), 2, + anon_sym_COMMA, + anon_sym_DASH_GT, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [3085] = 31, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(825), 1, + sym_identifier, + ACTIONS(828), 1, + anon_sym_COLON_COLON, + ACTIONS(833), 1, + anon_sym_LPAREN, + ACTIONS(836), 1, + anon_sym_DOLLAR, + ACTIONS(839), 1, + anon_sym_AT, + ACTIONS(842), 1, + anon_sym_mut, + ACTIONS(845), 1, + anon_sym_DOT_DOT, + ACTIONS(854), 1, + aux_sym_num_literal_token1, + ACTIONS(857), 1, + aux_sym_num_literal_token2, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1046), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1241), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(831), 2, + anon_sym_RBRACE, + anon_sym_RPAREN, + ACTIONS(851), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(860), 2, + sym__forall, + sym__exists, + STATE(281), 2, + sym_annotation, + aux_sym_bind_positional_fields_repeat1, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + STATE(1540), 2, + sym_mut_bind_field, + sym_bind_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(848), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [3192] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(867), 1, + anon_sym_COLON_COLON, + STATE(282), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(865), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(863), 27, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3251] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(283), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(695), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(697), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3308] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(284), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(687), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(689), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3365] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(285), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(683), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(685), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3422] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + STATE(286), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(872), 10, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(869), 27, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3481] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(879), 1, + anon_sym_LBRACE, + ACTIONS(881), 1, + anon_sym_LPAREN, + STATE(287), 1, + sym_annotation, + STATE(432), 1, + sym_field_initialize_list, + STATE(433), 1, + sym_arg_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(877), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(875), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3546] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(583), 1, + anon_sym_PIPE, + ACTIONS(701), 1, + anon_sym_AMP, + STATE(260), 1, + sym_module_access, + STATE(288), 1, + sym_annotation, + STATE(331), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(557), 2, + anon_sym_COMMA, + anon_sym_DASH_GT, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [3641] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(289), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(885), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(883), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [3697] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(887), 1, + anon_sym_RPAREN, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(290), 1, + sym_annotation, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1390), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [3791] = 32, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(895), 1, + anon_sym_RBRACE, + ACTIONS(897), 1, + anon_sym_LPAREN, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(901), 1, + anon_sym_mut, + ACTIONS(903), 1, + anon_sym_DOT_DOT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + STATE(291), 1, + sym_annotation, + STATE(309), 1, + aux_sym_bind_positional_fields_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1046), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1241), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + STATE(1376), 2, + sym_mut_bind_field, + sym_bind_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [3899] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(913), 1, + sym_identifier, + ACTIONS(916), 1, + anon_sym_fun, + ACTIONS(919), 1, + anon_sym_RBRACE, + ACTIONS(921), 1, + anon_sym_native, + ACTIONS(924), 1, + anon_sym_let, + ACTIONS(930), 1, + anon_sym_requires, + ACTIONS(933), 1, + anon_sym_aborts_if, + ACTIONS(939), 1, + anon_sym_invariant, + ACTIONS(942), 1, + anon_sym_include, + ACTIONS(945), 1, + anon_sym_apply, + ACTIONS(948), 1, + anon_sym_pragma, + STATE(39), 1, + sym__spec_condition_kind, + STATE(789), 1, + sym__spec_abort_with_or_modifies, + STATE(824), 1, + sym__spec_block_memeber, + STATE(826), 1, + sym__spec_condition, + STATE(827), 1, + sym__spec_abort_if, + ACTIONS(936), 2, + anon_sym_aborts_with, + anon_sym_modifies, + ACTIONS(951), 2, + anon_sym_global, + anon_sym_local, + STATE(292), 2, + sym_annotation, + aux_sym_spec_body_repeat2, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(796), 3, + sym_uninterpreted_spec_function, + sym_native_spec_function, + sym_usual_spec_function, + ACTIONS(927), 5, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + STATE(825), 8, + sym_spec_let, + sym_spec_condition, + sym_spec_invariant, + sym_spec_include, + sym_spec_apply, + sym_spec_pragma, + sym_spec_variable, + sym__spec_function, + [3993] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(293), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(687), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(689), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4049] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(294), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(956), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(954), 21, + anon_sym_public, + anon_sym_use, + anon_sym_copy, + anon_sym_spec, + anon_sym_let, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [4105] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(295), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4161] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(713), 1, + sym_identifier, + ACTIONS(719), 1, + anon_sym_fun, + ACTIONS(723), 1, + anon_sym_native, + ACTIONS(725), 1, + anon_sym_let, + ACTIONS(729), 1, + anon_sym_requires, + ACTIONS(731), 1, + anon_sym_aborts_if, + ACTIONS(735), 1, + anon_sym_invariant, + ACTIONS(737), 1, + anon_sym_include, + ACTIONS(739), 1, + anon_sym_apply, + ACTIONS(741), 1, + anon_sym_pragma, + ACTIONS(958), 1, + anon_sym_RBRACE, + STATE(39), 1, + sym__spec_condition_kind, + STATE(292), 1, + aux_sym_spec_body_repeat2, + STATE(296), 1, + sym_annotation, + STATE(789), 1, + sym__spec_abort_with_or_modifies, + STATE(824), 1, + sym__spec_block_memeber, + STATE(826), 1, + sym__spec_condition, + STATE(827), 1, + sym__spec_abort_if, + ACTIONS(733), 2, + anon_sym_aborts_with, + anon_sym_modifies, + ACTIONS(743), 2, + anon_sym_global, + anon_sym_local, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(796), 3, + sym_uninterpreted_spec_function, + sym_native_spec_function, + sym_usual_spec_function, + ACTIONS(727), 5, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + STATE(825), 8, + sym_spec_let, + sym_spec_condition, + sym_spec_invariant, + sym_spec_include, + sym_spec_apply, + sym_spec_pragma, + sym_spec_variable, + sym__spec_function, + [4257] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(960), 1, + sym_identifier, + ACTIONS(963), 1, + anon_sym_LPAREN, + ACTIONS(966), 1, + anon_sym_RPAREN, + ACTIONS(974), 1, + anon_sym_PIPE, + ACTIONS(977), 1, + anon_sym_AMP, + ACTIONS(980), 1, + aux_sym_num_literal_token1, + ACTIONS(983), 1, + aux_sym_num_literal_token2, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1508), 1, + sym__type, + ACTIONS(971), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(986), 2, + sym__forall, + sym__exists, + STATE(297), 2, + sym_annotation, + aux_sym_positional_fields_repeat1, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(968), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [4349] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(989), 1, + anon_sym_RPAREN, + STATE(260), 1, + sym_module_access, + STATE(298), 1, + sym_annotation, + STATE(315), 1, + aux_sym_positional_fields_repeat1, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1327), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [4443] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(299), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(757), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(755), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4499] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(300), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(993), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(991), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4555] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(301), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(997), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(995), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4611] = 32, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(903), 1, + anon_sym_DOT_DOT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(999), 1, + anon_sym_LPAREN, + ACTIONS(1001), 1, + anon_sym_RPAREN, + ACTIONS(1003), 1, + anon_sym_mut, + STATE(302), 1, + sym_annotation, + STATE(308), 1, + aux_sym_bind_positional_fields_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1105), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1264), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + STATE(1378), 2, + sym_mut_bind_field, + sym_bind_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [4719] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(303), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1007), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1005), 21, + anon_sym_public, + anon_sym_use, + anon_sym_copy, + anon_sym_spec, + anon_sym_let, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [4775] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(304), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1011), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1009), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4831] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + STATE(305), 1, + sym_annotation, + STATE(1162), 1, + sym_quantifier_binding, + STATE(1342), 1, + sym_quantifier_bindings, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 12, + anon_sym_as, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_with, + anon_sym_to, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 22, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4893] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + STATE(306), 1, + sym_annotation, + STATE(1162), 1, + sym_quantifier_binding, + STATE(1409), 1, + sym_quantifier_bindings, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 12, + anon_sym_as, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_with, + anon_sym_to, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 22, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [4955] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1013), 1, + anon_sym_RPAREN, + STATE(260), 1, + sym_module_access, + STATE(307), 1, + sym_annotation, + STATE(319), 1, + aux_sym_positional_fields_repeat1, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1343), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [5049] = 32, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(903), 1, + anon_sym_DOT_DOT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(999), 1, + anon_sym_LPAREN, + ACTIONS(1003), 1, + anon_sym_mut, + ACTIONS(1015), 1, + anon_sym_RPAREN, + STATE(281), 1, + aux_sym_bind_positional_fields_repeat1, + STATE(308), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1105), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1264), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + STATE(1398), 2, + sym_mut_bind_field, + sym_bind_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [5157] = 32, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(897), 1, + anon_sym_LPAREN, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(901), 1, + anon_sym_mut, + ACTIONS(903), 1, + anon_sym_DOT_DOT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1017), 1, + anon_sym_RBRACE, + STATE(281), 1, + aux_sym_bind_positional_fields_repeat1, + STATE(309), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1046), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1241), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + STATE(1401), 2, + sym_mut_bind_field, + sym_bind_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [5265] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1019), 1, + anon_sym_RPAREN, + STATE(260), 1, + sym_module_access, + STATE(290), 1, + aux_sym_positional_fields_repeat1, + STATE(310), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1370), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [5359] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(713), 1, + sym_identifier, + ACTIONS(719), 1, + anon_sym_fun, + ACTIONS(723), 1, + anon_sym_native, + ACTIONS(725), 1, + anon_sym_let, + ACTIONS(729), 1, + anon_sym_requires, + ACTIONS(731), 1, + anon_sym_aborts_if, + ACTIONS(735), 1, + anon_sym_invariant, + ACTIONS(737), 1, + anon_sym_include, + ACTIONS(739), 1, + anon_sym_apply, + ACTIONS(741), 1, + anon_sym_pragma, + ACTIONS(745), 1, + anon_sym_RBRACE, + STATE(39), 1, + sym__spec_condition_kind, + STATE(292), 1, + aux_sym_spec_body_repeat2, + STATE(311), 1, + sym_annotation, + STATE(789), 1, + sym__spec_abort_with_or_modifies, + STATE(824), 1, + sym__spec_block_memeber, + STATE(826), 1, + sym__spec_condition, + STATE(827), 1, + sym__spec_abort_if, + ACTIONS(733), 2, + anon_sym_aborts_with, + anon_sym_modifies, + ACTIONS(743), 2, + anon_sym_global, + anon_sym_local, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(796), 3, + sym_uninterpreted_spec_function, + sym_native_spec_function, + sym_usual_spec_function, + ACTIONS(727), 5, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + STATE(825), 8, + sym_spec_let, + sym_spec_condition, + sym_spec_invariant, + sym_spec_include, + sym_spec_apply, + sym_spec_pragma, + sym_spec_variable, + sym__spec_function, + [5455] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1025), 1, + anon_sym_BANG, + STATE(312), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1023), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1021), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [5513] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(313), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1029), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1027), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [5569] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(314), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1033), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1031), 21, + anon_sym_public, + anon_sym_use, + anon_sym_copy, + anon_sym_spec, + anon_sym_let, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [5625] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1035), 1, + anon_sym_RPAREN, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(315), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1395), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [5719] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(316), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(683), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(685), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [5775] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(317), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(703), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(705), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [5831] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(318), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1039), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1037), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [5887] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1041), 1, + anon_sym_RPAREN, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(319), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1379), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [5981] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1043), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(320), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6072] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1045), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(321), 1, + sym_annotation, + STATE(338), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1374), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6163] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1047), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(322), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6254] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1049), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(323), 1, + sym_annotation, + STATE(336), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1374), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6345] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1051), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(324), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1399), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6436] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1053), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(325), 1, + sym_annotation, + STATE(334), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6527] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1055), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(326), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6618] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1057), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(327), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6709] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(699), 1, + anon_sym_PIPE, + ACTIONS(701), 1, + anon_sym_AMP, + STATE(260), 1, + sym_module_access, + STATE(328), 1, + sym_annotation, + STATE(331), 1, + aux_sym_positional_fields_repeat1, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6800] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1059), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(329), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6891] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1061), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(330), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [6982] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1063), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(331), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1399), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7073] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1065), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(332), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7164] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1067), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(333), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7255] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1069), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(334), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1399), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7346] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(66), 1, + anon_sym_SQUOTE, + STATE(335), 1, + sym_annotation, + STATE(406), 1, + sym_label, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1073), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1071), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [7405] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1075), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(336), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1391), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7496] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(337), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1079), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1077), 28, + anon_sym_SEMI, + anon_sym_as, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [7551] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1051), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(297), 1, + aux_sym_positional_fields_repeat1, + STATE(338), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1391), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7642] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1045), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(324), 1, + aux_sym_positional_fields_repeat1, + STATE(339), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1322), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7733] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1081), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(340), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7824] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + ACTIONS(1083), 1, + anon_sym_GT, + STATE(260), 1, + sym_module_access, + STATE(341), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [7915] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1089), 1, + anon_sym_DASH_GT, + STATE(342), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1087), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_DASH, + anon_sym_SLASH, + ACTIONS(1085), 25, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_STAR, + anon_sym_PERCENT, + [7971] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1091), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(267), 1, + sym__type, + STATE(343), 1, + sym_annotation, + STATE(347), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8059] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(344), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1407), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8147] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1093), 1, + sym_identifier, + ACTIONS(1095), 1, + anon_sym_LPAREN, + ACTIONS(1099), 1, + anon_sym_PIPE, + STATE(345), 1, + sym_annotation, + STATE(371), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1065), 1, + sym_module_access, + STATE(1160), 1, + sym_function_type_parameters, + STATE(1203), 1, + sym__type, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(426), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(1097), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8235] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(346), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1436), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8323] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1091), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(275), 1, + sym__type, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(347), 2, + sym_annotation, + sym__reference, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8409] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(348), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(325), 17, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1101), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [8463] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(349), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1512), 1, + sym__type, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8551] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(350), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1105), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1103), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COLON_COLON, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [8605] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1091), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(347), 1, + sym__reference, + STATE(351), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1283), 1, + sym__module_identifier, + STATE(1293), 1, + sym_function_type_parameters, + STATE(1381), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8693] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(352), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1380), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8781] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(353), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1526), 1, + sym__type, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8869] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(354), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1528), 1, + sym__type, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [8957] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(355), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1498), 1, + sym__type, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9045] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(356), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1486), 1, + sym__type, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9133] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(1114), 1, + anon_sym_COLON, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(357), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + ACTIONS(1107), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_PIPE, + [9231] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(358), 1, + sym_annotation, + STATE(360), 1, + sym__reference, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1381), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9319] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1093), 1, + sym_identifier, + ACTIONS(1095), 1, + anon_sym_LPAREN, + ACTIONS(1099), 1, + anon_sym_PIPE, + STATE(359), 1, + sym_annotation, + STATE(371), 1, + sym__reference, + STATE(477), 1, + sym__type, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1065), 1, + sym_module_access, + STATE(1160), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(426), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(1097), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9407] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(275), 1, + sym__type, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(360), 2, + sym_annotation, + sym__reference, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9493] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(361), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1329), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9581] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(225), 1, + sym__type, + STATE(260), 1, + sym_module_access, + STATE(362), 1, + sym_annotation, + STATE(374), 1, + sym_module_identity, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9669] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(363), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1466), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9757] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(173), 1, + sym__type, + STATE(260), 1, + sym_module_access, + STATE(364), 1, + sym_annotation, + STATE(374), 1, + sym_module_identity, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9845] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(365), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1371), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [9933] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(82), 1, + sym__type, + STATE(260), 1, + sym_module_access, + STATE(366), 1, + sym_annotation, + STATE(374), 1, + sym_module_identity, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10021] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(367), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1432), 1, + sym__type, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10109] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1126), 1, + anon_sym_COLON_COLON, + ACTIONS(1129), 1, + anon_sym_LT, + STATE(368), 1, + sym_annotation, + STATE(1475), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(767), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(769), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [10169] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(369), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1210), 1, + sym__type, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10257] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(107), 1, + sym__type, + STATE(260), 1, + sym_module_access, + STATE(370), 1, + sym_annotation, + STATE(374), 1, + sym_module_identity, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10345] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1093), 1, + sym_identifier, + ACTIONS(1095), 1, + anon_sym_LPAREN, + ACTIONS(1099), 1, + anon_sym_PIPE, + STATE(459), 1, + sym__type, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(1065), 1, + sym_module_access, + STATE(1160), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(371), 2, + sym_annotation, + sym__reference, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(426), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(1097), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10431] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(372), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1265), 1, + sym__type, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10519] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1132), 1, + anon_sym_COLON_COLON, + ACTIONS(1135), 1, + anon_sym_LT, + STATE(373), 1, + sym_annotation, + STATE(463), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(757), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [10579] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1139), 1, + anon_sym_COLON_COLON, + ACTIONS(1142), 1, + anon_sym_LT, + STATE(374), 1, + sym_annotation, + STATE(431), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(788), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(790), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [10639] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(149), 1, + sym__type, + STATE(260), 1, + sym_module_access, + STATE(374), 1, + sym_module_identity, + STATE(375), 1, + sym_annotation, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10727] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(196), 1, + sym__type, + STATE(260), 1, + sym_module_access, + STATE(374), 1, + sym_module_identity, + STATE(376), 1, + sym_annotation, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10815] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(267), 1, + sym__type, + STATE(374), 1, + sym_module_identity, + STATE(377), 1, + sym_annotation, + STATE(378), 1, + sym__reference, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10903] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1118), 1, + sym_identifier, + ACTIONS(1122), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(275), 1, + sym__type, + STATE(374), 1, + sym_module_identity, + STATE(448), 1, + sym_function_type_parameters, + STATE(468), 1, + sym__reserved_identifier, + STATE(1201), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(1120), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(1124), 2, + sym__forall, + sym__exists, + STATE(378), 2, + sym_annotation, + sym__reference, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [10989] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1149), 1, + anon_sym_COLON_COLON, + STATE(379), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1147), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1145), 25, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [11045] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(380), 1, + sym_annotation, + STATE(455), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(707), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(709), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [11101] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(267), 1, + sym__type, + STATE(360), 1, + sym__reference, + STATE(381), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [11189] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(13), 1, + sym_identifier, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1095), 1, + anon_sym_LPAREN, + ACTIONS(1151), 1, + anon_sym_PIPE, + STATE(272), 1, + sym_module_identity, + STATE(299), 1, + sym__reserved_identifier, + STATE(342), 1, + sym_function_type_parameters, + STATE(380), 1, + sym_module_access, + STATE(459), 1, + sym__type, + STATE(1216), 1, + sym__module_identifier, + STATE(1524), 1, + sym_num_literal, + ACTIONS(31), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(633), 2, + sym__forall, + sym__exists, + STATE(382), 2, + sym_annotation, + sym__reference, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(426), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(1097), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [11275] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(13), 1, + sym_identifier, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1095), 1, + anon_sym_LPAREN, + ACTIONS(1151), 1, + anon_sym_PIPE, + STATE(272), 1, + sym_module_identity, + STATE(299), 1, + sym__reserved_identifier, + STATE(342), 1, + sym_function_type_parameters, + STATE(380), 1, + sym_module_access, + STATE(382), 1, + sym__reference, + STATE(383), 1, + sym_annotation, + STATE(477), 1, + sym__type, + STATE(1216), 1, + sym__module_identifier, + STATE(1524), 1, + sym_num_literal, + ACTIONS(31), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(633), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(426), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(1097), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [11363] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(384), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1231), 1, + sym__type, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [11451] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1155), 1, + anon_sym_RPAREN, + ACTIONS(1158), 1, + anon_sym_COLON, + STATE(385), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + ACTIONS(1153), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_PIPE, + [11549] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(386), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(559), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_DASH, + anon_sym_SLASH, + ACTIONS(557), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_DASH_GT, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_STAR, + anon_sym_PERCENT, + [11603] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(387), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1162), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1160), 19, + anon_sym_copy, + anon_sym_spec, + anon_sym_let, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [11657] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(1169), 1, + anon_sym_COLON, + STATE(388), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + ACTIONS(1164), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_PIPE, + [11755] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(389), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(747), 9, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_DASH, + anon_sym_SLASH, + ACTIONS(749), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_DASH_GT, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_STAR, + anon_sym_PERCENT, + [11809] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(1176), 1, + anon_sym_COLON, + STATE(390), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + ACTIONS(1171), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_PIPE, + [11907] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + STATE(391), 1, + sym_annotation, + STATE(1162), 1, + sym_quantifier_binding, + STATE(1319), 1, + sym_quantifier_bindings, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 12, + anon_sym_as, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 20, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [11967] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(392), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1256), 1, + sym__type, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [12055] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(393), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1180), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1178), 19, + anon_sym_copy, + anon_sym_spec, + anon_sym_let, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [12109] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(13), 1, + sym_identifier, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(1095), 1, + anon_sym_LPAREN, + ACTIONS(1151), 1, + anon_sym_PIPE, + STATE(272), 1, + sym_module_identity, + STATE(299), 1, + sym__reserved_identifier, + STATE(342), 1, + sym_function_type_parameters, + STATE(380), 1, + sym_module_access, + STATE(382), 1, + sym__reference, + STATE(394), 1, + sym_annotation, + STATE(416), 1, + sym__type, + STATE(1216), 1, + sym__module_identifier, + STATE(1524), 1, + sym_num_literal, + ACTIONS(31), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(633), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(426), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(1097), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [12197] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(1187), 1, + anon_sym_COLON, + STATE(395), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + ACTIONS(1182), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_PIPE, + [12295] = 23, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(537), 1, + sym_identifier, + ACTIONS(543), 1, + anon_sym_LPAREN, + ACTIONS(701), 1, + anon_sym_AMP, + ACTIONS(889), 1, + anon_sym_PIPE, + STATE(260), 1, + sym_module_access, + STATE(360), 1, + sym__reference, + STATE(396), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(898), 1, + sym_module_identity, + STATE(967), 1, + sym_function_type_parameters, + STATE(1198), 1, + sym__type, + STATE(1283), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(794), 2, + sym_imm_ref, + sym_mut_ref, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(271), 5, + sym_apply_type, + sym_ref_type, + sym_tuple_type, + sym_primitive_type, + sym_function_type, + ACTIONS(545), 10, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + [12383] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(397), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1191), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1189), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12436] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(398), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1195), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1193), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12489] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(399), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1199), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1197), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12542] = 30, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(897), 1, + anon_sym_LPAREN, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(903), 1, + anon_sym_DOT_DOT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(400), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1024), 1, + sym__variable_identifier, + STATE(1046), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1241), 1, + sym_bind_list, + STATE(1287), 1, + sym_bind_field, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [12643] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(401), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1203), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_DASH_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1201), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [12696] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(402), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1207), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1205), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12749] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + STATE(403), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1213), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1209), 25, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12804] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(404), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1217), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1215), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12857] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(405), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1221), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1219), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12910] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(406), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1225), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1223), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [12963] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(407), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(567), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(569), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13016] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(408), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1229), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_RBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1227), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [13069] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(409), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1233), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1231), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13122] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(410), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1237), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1235), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13175] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1243), 1, + anon_sym_LBRACK, + STATE(411), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1241), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1239), 25, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13230] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(412), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1247), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1245), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13283] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(413), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1251), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1249), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13336] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(414), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1255), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1253), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13389] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + STATE(415), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1257), 25, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13444] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(416), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1263), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1261), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13497] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(417), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1267), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1265), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13550] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(418), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1271), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_DASH_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1269), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [13603] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(419), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1275), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1273), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13656] = 30, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(903), 1, + anon_sym_DOT_DOT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(999), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(420), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1024), 1, + sym__variable_identifier, + STATE(1105), 1, + sym__bind, + STATE(1240), 1, + sym__spread_operator, + STATE(1264), 1, + sym_bind_list, + STATE(1287), 1, + sym_bind_field, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [13757] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(421), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1279), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1277), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13810] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(422), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1283), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1281), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13863] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(423), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1147), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1145), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13916] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(424), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1287), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1285), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [13969] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + STATE(425), 1, + sym_annotation, + STATE(1162), 1, + sym_quantifier_binding, + STATE(1433), 1, + sym_quantifier_bindings, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 11, + anon_sym_as, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 20, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14028] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(426), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(784), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(786), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14081] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1293), 1, + anon_sym_mut, + STATE(427), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1291), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1289), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [14136] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(428), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(780), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(782), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14189] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(429), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1297), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_DASH_GT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1295), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [14242] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(430), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1301), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1299), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14295] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1303), 1, + anon_sym_COLON_COLON, + STATE(431), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(863), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(865), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [14350] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(432), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1308), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1306), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14403] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(433), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1312), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1310), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14456] = 30, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1318), 1, + anon_sym_RBRACE, + ACTIONS(1320), 1, + anon_sym_LPAREN, + STATE(434), 1, + sym_annotation, + STATE(475), 1, + aux_sym__match_body_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1107), 1, + sym__bind, + STATE(1266), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + STATE(1333), 1, + sym_match_arm, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [14557] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(435), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1324), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1322), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14610] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + STATE(436), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1328), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1326), 25, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14665] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + STATE(437), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1332), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1330), 25, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14720] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(438), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1336), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1334), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14773] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(439), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1340), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1338), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14826] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(440), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1344), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1342), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14879] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(441), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1348), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1346), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14932] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(442), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1352), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1350), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [14985] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(443), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1356), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1354), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [15038] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(444), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1360), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1358), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [15091] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(445), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1364), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1362), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [15144] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(446), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1368), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1366), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [15197] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(1169), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + STATE(447), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1164), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + anon_sym_EQ_GT, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [15294] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1372), 1, + anon_sym_DASH_GT, + STATE(448), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1085), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1087), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [15349] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(1114), 1, + anon_sym_if, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + STATE(449), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1107), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + anon_sym_EQ_GT, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [15446] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(450), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(776), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(778), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [15499] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(1187), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + STATE(451), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1182), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + anon_sym_EQ_GT, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [15596] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(1176), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + STATE(452), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1171), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + anon_sym_EQ_GT, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [15693] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1155), 1, + anon_sym_RPAREN, + ACTIONS(1158), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + STATE(453), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1153), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + anon_sym_EQ_GT, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [15790] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(454), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(869), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(872), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [15843] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(455), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(797), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(799), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [15896] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(456), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1009), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1011), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [15949] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(457), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1027), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1029), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16002] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(458), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1037), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1039), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16055] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(459), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(811), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(813), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16108] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(460), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(883), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(885), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16161] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(461), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1377), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1374), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16214] = 29, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1380), 1, + sym_identifier, + ACTIONS(1383), 1, + anon_sym_COLON_COLON, + ACTIONS(1386), 1, + anon_sym_RBRACE, + ACTIONS(1388), 1, + anon_sym_LPAREN, + ACTIONS(1391), 1, + anon_sym_DOLLAR, + ACTIONS(1394), 1, + anon_sym_AT, + ACTIONS(1397), 1, + anon_sym_mut, + ACTIONS(1406), 1, + aux_sym_num_literal_token1, + ACTIONS(1409), 1, + aux_sym_num_literal_token2, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1107), 1, + sym__bind, + STATE(1266), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + STATE(1555), 1, + sym_match_arm, + ACTIONS(1403), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1412), 2, + sym__forall, + sym__exists, + STATE(462), 2, + sym_annotation, + aux_sym__match_body_repeat1, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1400), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [16313] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(463), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(995), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(997), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16366] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + STATE(464), 1, + sym_annotation, + STATE(1162), 1, + sym_quantifier_binding, + STATE(1353), 1, + sym_quantifier_bindings, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(823), 11, + anon_sym_as, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_BANG, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(821), 20, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16425] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(465), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1417), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1415), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16478] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(466), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(991), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(993), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16531] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(467), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1421), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1419), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16584] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(468), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(757), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16637] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(469), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(821), 16, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_LT, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(823), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [16690] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(470), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1425), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1423), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16743] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(471), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1429), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1427), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16796] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(472), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(877), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(875), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16849] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(473), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(751), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(753), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16902] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(474), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1433), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1431), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [16955] = 30, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1320), 1, + anon_sym_LPAREN, + ACTIONS(1435), 1, + anon_sym_RBRACE, + STATE(462), 1, + aux_sym__match_body_repeat1, + STATE(475), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1107), 1, + sym__bind, + STATE(1266), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + STATE(1328), 1, + sym_match_arm, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [17056] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(476), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(815), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(817), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [17109] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(477), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(763), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(765), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [17162] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(478), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 8, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 26, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [17215] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1187), 1, + anon_sym_COLON, + ACTIONS(1441), 1, + anon_sym_RPAREN, + STATE(479), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1182), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [17311] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(875), 1, + anon_sym_LBRACK, + STATE(480), 1, + sym_annotation, + ACTIONS(877), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1377), 6, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1374), 24, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [17367] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(481), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1445), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1443), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [17419] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(482), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1449), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1447), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [17471] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1155), 1, + anon_sym_RPAREN, + ACTIONS(1158), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(483), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1153), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [17567] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(1176), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(484), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1171), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [17663] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(1187), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(485), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1182), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [17759] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(875), 1, + anon_sym_LBRACK, + ACTIONS(877), 1, + anon_sym_DOT, + STATE(486), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1377), 7, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1374), 24, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [17815] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(1114), 1, + anon_sym_COLON, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(487), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1107), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [17911] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(1169), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(488), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [18007] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1158), 1, + anon_sym_COLON, + ACTIONS(1453), 1, + anon_sym_RPAREN, + STATE(489), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1153), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [18103] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(490), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1457), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1455), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [18155] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(491), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1461), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1459), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [18207] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1176), 1, + anon_sym_COLON, + ACTIONS(1463), 1, + anon_sym_RPAREN, + STATE(492), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1171), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [18303] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(493), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1467), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1465), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [18355] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1169), 1, + anon_sym_COLON, + ACTIONS(1469), 1, + anon_sym_RPAREN, + STATE(494), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1164), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [18451] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1114), 1, + anon_sym_COLON, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1471), 1, + anon_sym_RPAREN, + STATE(495), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1107), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_PIPE, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [18547] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(496), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1475), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1473), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [18599] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(497), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1479), 15, + anon_sym_COLON_COLON, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_vector_LBRACK, + anon_sym_vector_LT, + anon_sym_AMP, + anon_sym_STAR, + anon_sym_SQUOTE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(1477), 18, + anon_sym_copy, + anon_sym_spec, + anon_sym_AT, + anon_sym_if, + anon_sym_while, + anon_sym_loop, + anon_sym_return, + anon_sym_abort, + anon_sym_match, + anon_sym_move, + anon_sym_break, + anon_sym_continue, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [18651] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + STATE(498), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 7, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 17, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [18712] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(499), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1491), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1489), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [18791] = 29, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1511), 1, + anon_sym_LPAREN, + ACTIONS(1513), 1, + anon_sym_PIPE, + STATE(500), 1, + sym_annotation, + STATE(533), 1, + aux_sym_lambda_bindings_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1154), 1, + sym__variable_identifier, + STATE(1296), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + STATE(1354), 1, + sym_lambda_binding, + STATE(1423), 1, + sym_comma_bind_list, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [18888] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(501), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1517), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1515), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [18967] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(502), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1521), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1519), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [19046] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + STATE(503), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 7, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 19, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + [19105] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(504), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1525), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1523), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [19184] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(505), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 17, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [19247] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(506), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 16, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [19314] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(507), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1529), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1527), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [19393] = 17, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(508), 1, + sym_annotation, + ACTIONS(1259), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 12, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + [19466] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1176), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + ACTIONS(1463), 1, + anon_sym_RPAREN, + STATE(509), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1171), 2, + anon_sym_SEMI, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [19561] = 18, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(510), 1, + sym_annotation, + ACTIONS(1259), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 11, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + [19636] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(511), 1, + sym_annotation, + ACTIONS(1259), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 10, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + [19713] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + STATE(512), 1, + sym_annotation, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 7, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 21, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + [19770] = 13, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(513), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 16, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [19835] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1531), 1, + sym_identifier, + ACTIONS(1534), 1, + anon_sym_COLON_COLON, + ACTIONS(1537), 1, + anon_sym_LPAREN, + ACTIONS(1540), 1, + anon_sym_DOLLAR, + ACTIONS(1543), 1, + anon_sym_AT, + ACTIONS(1546), 1, + anon_sym_PIPE, + ACTIONS(1548), 1, + anon_sym_mut, + ACTIONS(1557), 1, + aux_sym_num_literal_token1, + ACTIONS(1560), 1, + aux_sym_num_literal_token2, + STATE(423), 1, + sym_bool_literal, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(1199), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + STATE(1348), 1, + sym__bind, + STATE(1423), 1, + sym_comma_bind_list, + STATE(1495), 1, + sym_lambda_binding, + ACTIONS(1554), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1563), 2, + sym__forall, + sym__exists, + STATE(514), 2, + sym_annotation, + aux_sym_lambda_bindings_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1551), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [19930] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(515), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 15, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [19999] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(516), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1568), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1566), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20078] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1572), 1, + anon_sym_public, + ACTIONS(1575), 1, + anon_sym_use, + ACTIONS(1578), 1, + anon_sym_fun, + ACTIONS(1581), 1, + anon_sym_friend, + ACTIONS(1584), 1, + anon_sym_entry, + ACTIONS(1587), 1, + anon_sym_native, + ACTIONS(1590), 1, + anon_sym_const, + ACTIONS(1593), 1, + anon_sym_enum, + ACTIONS(1596), 1, + anon_sym_struct, + ACTIONS(1599), 1, + anon_sym_macro, + ACTIONS(1602), 1, + anon_sym_spec, + STATE(891), 1, + sym_enum_definition, + STATE(1033), 1, + sym_modifier, + STATE(1095), 1, + sym__struct_signature, + STATE(1263), 1, + sym__function_signature, + STATE(1362), 1, + sym__enum_signature, + STATE(517), 2, + sym_annotation, + aux_sym_module_body_repeat1, + STATE(882), 2, + sym_native_struct_definition, + sym_struct_definition, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1570), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + anon_sym_module, + STATE(876), 3, + sym_native_function_definition, + sym_macro_function_definition, + sym_function_definition, + STATE(880), 7, + sym_use_declaration, + sym_friend_declaration, + sym_constant, + sym__enum_item, + sym__struct_item, + sym__function_item, + sym_spec_block, + [20165] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(518), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1607), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1605), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20244] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(519), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1611), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1609), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20323] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(520), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1615), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1613), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20402] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(521), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1619), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1617), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20481] = 21, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + ACTIONS(1625), 1, + anon_sym_else, + STATE(522), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1623), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1621), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + [20562] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1158), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + ACTIONS(1453), 1, + anon_sym_RPAREN, + STATE(523), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1153), 2, + anon_sym_SEMI, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [20657] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1243), 1, + anon_sym_LBRACK, + ACTIONS(1627), 1, + anon_sym_DOT, + STATE(524), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1433), 7, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1431), 23, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [20712] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(525), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1631), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1629), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20791] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(526), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1635), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1633), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [20870] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1637), 1, + anon_sym_EQ, + STATE(527), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 7, + anon_sym_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 24, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_PLUS, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [20923] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1155), 1, + anon_sym_RPAREN, + ACTIONS(1158), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(528), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1153), 2, + anon_sym_PIPE, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21018] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1169), 1, + anon_sym_COLON, + ACTIONS(1451), 1, + anon_sym_LPAREN, + ACTIONS(1469), 1, + anon_sym_RPAREN, + STATE(529), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1164), 2, + anon_sym_SEMI, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21113] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(530), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1643), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1641), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [21192] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1187), 1, + anon_sym_COLON, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(531), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1182), 2, + anon_sym_SEMI, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21287] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1114), 1, + anon_sym_COLON, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1451), 1, + anon_sym_LPAREN, + ACTIONS(1471), 1, + anon_sym_RPAREN, + STATE(532), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1107), 2, + anon_sym_SEMI, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21382] = 29, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1511), 1, + anon_sym_LPAREN, + ACTIONS(1645), 1, + anon_sym_PIPE, + STATE(514), 1, + aux_sym_lambda_bindings_repeat1, + STATE(533), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1154), 1, + sym__variable_identifier, + STATE(1296), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + STATE(1350), 1, + sym_lambda_binding, + STATE(1423), 1, + sym_comma_bind_list, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21479] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(1176), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(534), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1171), 2, + anon_sym_PIPE, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21574] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(535), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1649), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1647), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [21653] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1653), 1, + anon_sym_public, + ACTIONS(1655), 1, + anon_sym_use, + ACTIONS(1657), 1, + anon_sym_fun, + ACTIONS(1659), 1, + anon_sym_RBRACE, + ACTIONS(1661), 1, + anon_sym_friend, + ACTIONS(1663), 1, + anon_sym_entry, + ACTIONS(1665), 1, + anon_sym_native, + ACTIONS(1667), 1, + anon_sym_const, + ACTIONS(1669), 1, + anon_sym_enum, + ACTIONS(1671), 1, + anon_sym_struct, + ACTIONS(1673), 1, + anon_sym_macro, + ACTIONS(1675), 1, + anon_sym_spec, + STATE(536), 1, + sym_annotation, + STATE(541), 1, + aux_sym_module_body_repeat1, + STATE(891), 1, + sym_enum_definition, + STATE(1033), 1, + sym_modifier, + STATE(1095), 1, + sym__struct_signature, + STATE(1263), 1, + sym__function_signature, + STATE(1362), 1, + sym__enum_signature, + ACTIONS(1651), 2, + ts_builtin_sym_end, + anon_sym_module, + STATE(882), 2, + sym_native_struct_definition, + sym_struct_definition, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(876), 3, + sym_native_function_definition, + sym_macro_function_definition, + sym_function_definition, + STATE(880), 7, + sym_use_declaration, + sym_friend_declaration, + sym_constant, + sym__enum_item, + sym__struct_item, + sym__function_item, + sym_spec_block, + [21744] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1487), 1, + anon_sym_SLASH, + ACTIONS(1495), 1, + anon_sym_PIPE, + ACTIONS(1497), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1499), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1501), 1, + anon_sym_AMP_AMP, + ACTIONS(1505), 1, + anon_sym_DOT_DOT, + ACTIONS(1507), 1, + anon_sym_CARET, + ACTIONS(1509), 1, + anon_sym_AMP, + STATE(537), 1, + sym_annotation, + ACTIONS(1481), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1483), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1485), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1679), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1493), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1503), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1677), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_LBRACK, + anon_sym_to, + anon_sym_else, + [21823] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(1187), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(538), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1182), 2, + anon_sym_PIPE, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [21918] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(1114), 1, + anon_sym_if, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(539), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1107), 2, + anon_sym_PIPE, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22013] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(1169), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(540), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1164), 2, + anon_sym_PIPE, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22108] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1653), 1, + anon_sym_public, + ACTIONS(1655), 1, + anon_sym_use, + ACTIONS(1657), 1, + anon_sym_fun, + ACTIONS(1661), 1, + anon_sym_friend, + ACTIONS(1663), 1, + anon_sym_entry, + ACTIONS(1665), 1, + anon_sym_native, + ACTIONS(1667), 1, + anon_sym_const, + ACTIONS(1669), 1, + anon_sym_enum, + ACTIONS(1671), 1, + anon_sym_struct, + ACTIONS(1673), 1, + anon_sym_macro, + ACTIONS(1675), 1, + anon_sym_spec, + ACTIONS(1683), 1, + anon_sym_RBRACE, + STATE(517), 1, + aux_sym_module_body_repeat1, + STATE(541), 1, + sym_annotation, + STATE(891), 1, + sym_enum_definition, + STATE(1033), 1, + sym_modifier, + STATE(1095), 1, + sym__struct_signature, + STATE(1263), 1, + sym__function_signature, + STATE(1362), 1, + sym__enum_signature, + ACTIONS(1681), 2, + ts_builtin_sym_end, + anon_sym_module, + STATE(882), 2, + sym_native_struct_definition, + sym_struct_definition, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(876), 3, + sym_native_function_definition, + sym_macro_function_definition, + sym_function_definition, + STATE(880), 7, + sym_use_declaration, + sym_friend_declaration, + sym_constant, + sym__enum_item, + sym__struct_item, + sym__function_item, + sym_spec_block, + [22199] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1685), 1, + anon_sym_LPAREN, + STATE(542), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(1009), 1, + sym__bind, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22291] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1153), 1, + anon_sym_EQ_GT, + ACTIONS(1158), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1453), 1, + anon_sym_RPAREN, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(543), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22385] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + ACTIONS(1441), 1, + anon_sym_RPAREN, + STATE(544), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22477] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1687), 1, + anon_sym_LPAREN, + STATE(545), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(962), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22569] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + ACTIONS(1469), 1, + anon_sym_RPAREN, + STATE(546), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22661] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1171), 1, + anon_sym_EQ_GT, + ACTIONS(1176), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1463), 1, + anon_sym_RPAREN, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(547), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22755] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1689), 1, + anon_sym_LPAREN, + STATE(548), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1153), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22847] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + ACTIONS(1463), 1, + anon_sym_RPAREN, + STATE(549), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1171), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [22939] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + ACTIONS(1453), 1, + anon_sym_RPAREN, + STATE(550), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1153), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23031] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1107), 1, + anon_sym_EQ_GT, + ACTIONS(1114), 1, + anon_sym_if, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(551), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23125] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + ACTIONS(1471), 1, + anon_sym_RPAREN, + STATE(552), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23217] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1691), 1, + anon_sym_LPAREN, + STATE(553), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(992), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23309] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1693), 1, + anon_sym_LPAREN, + STATE(554), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(1067), 1, + sym__bind, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23401] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1182), 1, + anon_sym_EQ_GT, + ACTIONS(1187), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(555), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23495] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(897), 1, + anon_sym_LPAREN, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(556), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1046), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23587] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1689), 1, + anon_sym_LPAREN, + STATE(557), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1153), 1, + sym__bind, + STATE(1259), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23679] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1695), 1, + anon_sym_LPAREN, + STATE(558), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1109), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23771] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1697), 1, + anon_sym_LPAREN, + STATE(559), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(927), 1, + sym_bind_list, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1055), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23863] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1699), 1, + anon_sym_LPAREN, + STATE(560), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1022), 1, + sym__bind, + STATE(1023), 1, + sym__variable_identifier, + STATE(1245), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [23955] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1695), 1, + anon_sym_LPAREN, + STATE(561), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1109), 1, + sym__bind, + STATE(1259), 1, + sym_bind_list, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + STATE(952), 2, + sym_comma_bind_list, + sym_or_bind_list, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24047] = 28, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1164), 1, + anon_sym_EQ_GT, + ACTIONS(1169), 1, + anon_sym_if, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(562), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24141] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1701), 1, + anon_sym_LPAREN, + ACTIONS(1703), 1, + anon_sym_RPAREN, + STATE(563), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1063), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24232] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1705), 1, + anon_sym_LPAREN, + STATE(564), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1031), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24323] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1707), 1, + anon_sym_LPAREN, + STATE(565), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(969), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24414] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1709), 1, + anon_sym_LPAREN, + STATE(566), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1052), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24505] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1711), 1, + anon_sym_LPAREN, + STATE(567), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(991), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24596] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1713), 1, + anon_sym_LPAREN, + STATE(568), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(985), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24687] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1715), 1, + anon_sym_LPAREN, + STATE(569), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1042), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24778] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1717), 1, + anon_sym_LPAREN, + STATE(570), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1180), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24869] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1719), 1, + anon_sym_LPAREN, + STATE(571), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1061), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [24960] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1721), 1, + anon_sym_LPAREN, + STATE(572), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(990), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [25051] = 27, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1723), 1, + anon_sym_LPAREN, + STATE(573), 1, + sym_annotation, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1044), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [25142] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + STATE(574), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 19, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + [25196] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1729), 1, + anon_sym_COLON_COLON, + ACTIONS(1731), 1, + anon_sym_RPAREN, + STATE(423), 1, + sym_bool_literal, + STATE(575), 1, + sym_annotation, + STATE(584), 1, + aux_sym_comma_bind_list_repeat1, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(1208), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + STATE(1318), 1, + sym__bind, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [25284] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1733), 1, + anon_sym_EQ, + STATE(576), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 7, + anon_sym_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 21, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [25334] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(577), 1, + sym_annotation, + ACTIONS(1643), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1641), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [25410] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1679), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(578), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1677), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [25486] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1243), 1, + anon_sym_LBRACK, + ACTIONS(1783), 1, + anon_sym_DOT, + STATE(579), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1433), 7, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1431), 20, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [25538] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(580), 1, + sym_annotation, + ACTIONS(1649), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1647), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [25614] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1649), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(581), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1647), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [25690] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1615), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(582), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1613), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [25766] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1607), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(583), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1605), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [25842] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1785), 1, + sym_identifier, + ACTIONS(1788), 1, + anon_sym_COLON_COLON, + ACTIONS(1791), 1, + anon_sym_RPAREN, + ACTIONS(1793), 1, + anon_sym_DOLLAR, + ACTIONS(1796), 1, + anon_sym_AT, + ACTIONS(1799), 1, + anon_sym_mut, + ACTIONS(1808), 1, + aux_sym_num_literal_token1, + ACTIONS(1811), 1, + aux_sym_num_literal_token2, + STATE(423), 1, + sym_bool_literal, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(1316), 1, + sym__module_identifier, + STATE(1429), 1, + sym__variable_identifier, + STATE(1479), 1, + sym__bind, + ACTIONS(1805), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(1814), 2, + sym__forall, + sym__exists, + STATE(584), 2, + sym_annotation, + aux_sym_comma_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1802), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [25928] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1643), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(585), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1641), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [26004] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(586), 1, + sym_annotation, + ACTIONS(1619), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1617), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [26080] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1568), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(587), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1566), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [26156] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(588), 1, + sym_annotation, + ACTIONS(1679), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1677), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [26232] = 26, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1703), 1, + anon_sym_RPAREN, + ACTIONS(1729), 1, + anon_sym_COLON_COLON, + STATE(423), 1, + sym_bool_literal, + STATE(575), 1, + aux_sym_comma_bind_list_repeat1, + STATE(589), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(1208), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + STATE(1352), 1, + sym__bind, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [26320] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1817), 1, + anon_sym_EQ, + STATE(590), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 6, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 22, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [26370] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(591), 1, + sym_annotation, + ACTIONS(1529), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1527), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [26446] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1611), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(592), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1609), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [26522] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(593), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 13, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [26588] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1619), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(594), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1617), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [26664] = 13, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(595), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 14, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [26726] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + STATE(596), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 15, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [26784] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(597), 1, + sym_annotation, + ACTIONS(1611), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1609), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [26860] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1635), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(598), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1633), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [26936] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1631), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(599), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1629), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [27012] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(600), 1, + sym_annotation, + ACTIONS(1525), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1523), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [27088] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1819), 1, + anon_sym_EQ, + STATE(601), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 6, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 22, + anon_sym_SEMI, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [27138] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1517), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(602), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1515), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [27214] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1521), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1767), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(603), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1519), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [27290] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1259), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1769), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(604), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + [27364] = 18, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1259), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1771), 1, + anon_sym_AMP_AMP, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(605), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + [27436] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(606), 1, + sym_annotation, + ACTIONS(1635), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1633), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [27512] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(607), 1, + sym_annotation, + ACTIONS(1631), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1629), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [27588] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(608), 1, + sym_annotation, + ACTIONS(1517), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1515), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [27664] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(609), 1, + sym_annotation, + ACTIONS(1521), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1519), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [27740] = 17, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1259), 1, + anon_sym_EQ, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1775), 1, + anon_sym_DOT_DOT, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(610), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1761), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1773), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 10, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + [27810] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + STATE(611), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 17, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + [27866] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(612), 1, + sym_annotation, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 7, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 16, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + [27922] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(613), 1, + sym_annotation, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 7, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 14, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [27980] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(614), 1, + sym_annotation, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 14, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [28040] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(615), 1, + sym_annotation, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 13, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [28104] = 17, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(616), 1, + sym_annotation, + ACTIONS(1259), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 9, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + [28174] = 18, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(617), 1, + sym_annotation, + ACTIONS(1259), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 8, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + [28246] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(618), 1, + sym_annotation, + ACTIONS(1259), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 7, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + [28320] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(619), 1, + sym_annotation, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 7, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 18, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_PLUS, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + [28374] = 13, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(620), 1, + sym_annotation, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 13, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [28436] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(621), 1, + sym_annotation, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_DOT, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 12, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [28502] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1763), 1, + anon_sym_PIPE, + ACTIONS(1777), 1, + anon_sym_CARET, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(622), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 14, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [28566] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(623), 1, + sym_annotation, + ACTIONS(1568), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1566), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [28642] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(624), 1, + sym_annotation, + ACTIONS(1607), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1605), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [28718] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(625), 1, + sym_annotation, + ACTIONS(1615), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1613), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [28794] = 21, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + ACTIONS(1821), 1, + anon_sym_else, + STATE(626), 1, + sym_annotation, + ACTIONS(1623), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1621), 5, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + [28872] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1727), 1, + anon_sym_SLASH, + ACTIONS(1779), 1, + anon_sym_AMP, + STATE(627), 1, + sym_annotation, + ACTIONS(1725), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1765), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1781), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 15, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [28932] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1737), 1, + anon_sym_PIPE, + ACTIONS(1741), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1743), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1745), 1, + anon_sym_AMP_AMP, + ACTIONS(1749), 1, + anon_sym_DOT_DOT, + ACTIONS(1751), 1, + anon_sym_CARET, + ACTIONS(1753), 1, + anon_sym_AMP, + ACTIONS(1759), 1, + anon_sym_SLASH, + STATE(628), 1, + sym_annotation, + ACTIONS(1491), 2, + anon_sym_DOT, + anon_sym_EQ, + ACTIONS(1739), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1755), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1757), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1735), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1747), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1489), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_LBRACK, + anon_sym_where, + anon_sym_else, + [29008] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + STATE(629), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 15, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [29065] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + STATE(630), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 14, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [29128] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(631), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1613), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29201] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(632), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1515), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29274] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1370), 1, + anon_sym_LPAREN, + STATE(633), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [29359] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(634), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1647), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29432] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(635), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1609), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29505] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(636), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1605), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29578] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(637), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1519), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29651] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + STATE(638), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 17, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + [29706] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(639), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1633), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29779] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1835), 1, + anon_sym_AMP, + STATE(640), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 15, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [29838] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(641), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1677), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29911] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(642), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1641), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [29984] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1109), 1, + anon_sym_LPAREN, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(643), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [30069] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1451), 1, + anon_sym_LPAREN, + STATE(644), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [30154] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(645), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1566), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [30227] = 16, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(646), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 10, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + [30294] = 25, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + ACTIONS(1639), 1, + anon_sym_LPAREN, + STATE(647), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(928), 1, + sym__bind, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [30379] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(648), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1629), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + [30452] = 17, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(649), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 9, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + [30521] = 18, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(650), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + [30592] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + STATE(651), 1, + sym_annotation, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 19, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_PLUS, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + [30645] = 13, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + STATE(652), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 14, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [30706] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(653), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 13, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_with, + anon_sym_to, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [30771] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(654), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(998), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [30853] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(655), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1037), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [30935] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(656), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1084), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31017] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(657), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1086), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31099] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(658), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(953), 1, + sym__bind, + STATE(958), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31181] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(659), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1023), 1, + sym__variable_identifier, + STATE(1026), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31263] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(660), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1015), 1, + sym__bind, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31345] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(661), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(953), 1, + sym__bind, + STATE(1023), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31427] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(662), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(953), 1, + sym__bind, + STATE(1070), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31509] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(663), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(1070), 1, + sym__variable_identifier, + STATE(1115), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31591] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(664), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1092), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31673] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(665), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(983), 1, + sym__variable_identifier, + STATE(1149), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31755] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(666), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(1056), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31837] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(891), 1, + sym_identifier, + ACTIONS(893), 1, + anon_sym_COLON_COLON, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + STATE(667), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(958), 1, + sym__variable_identifier, + STATE(970), 1, + sym__bind, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [31919] = 24, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(909), 1, + aux_sym_num_literal_token1, + ACTIONS(911), 1, + aux_sym_num_literal_token2, + ACTIONS(1116), 1, + anon_sym_mut, + ACTIONS(1314), 1, + sym_identifier, + ACTIONS(1316), 1, + anon_sym_COLON_COLON, + STATE(668), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(874), 1, + sym_name_expression, + STATE(912), 1, + sym_num_literal, + STATE(921), 1, + sym_module_access, + STATE(934), 1, + sym_bool_literal, + STATE(953), 1, + sym__bind, + STATE(983), 1, + sym__variable_identifier, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(907), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(905), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(948), 4, + sym_at_bind, + sym_mut_bind_var, + sym_bind_unpack, + sym__literal_value, + [32001] = 13, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + STATE(669), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 11, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [32060] = 18, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1259), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + STATE(670), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + [32129] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1615), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(671), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1613), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32202] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1607), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(672), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1605), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32275] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1568), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(673), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1566), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32348] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1611), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(674), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1609), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32421] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1635), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(675), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1633), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32494] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1631), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(676), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1629), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32567] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1517), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(677), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1515), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32640] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1521), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(678), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1519), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32713] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1859), 1, + anon_sym_SLASH, + STATE(679), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 14, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + [32766] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1875), 1, + anon_sym_EQ, + STATE(680), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 6, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 19, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PLUS, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [32813] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1619), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(681), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1617), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [32886] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1859), 1, + anon_sym_SLASH, + STATE(682), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 12, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [32941] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + STATE(683), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 12, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [32998] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + STATE(684), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 11, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [33059] = 17, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1259), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + STATE(685), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 7, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + [33126] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + STATE(686), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 10, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [33189] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1679), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(687), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1677), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33262] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1859), 1, + anon_sym_SLASH, + STATE(688), 1, + sym_annotation, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 6, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 16, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PLUS, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + [33313] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1649), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(689), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1647), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33386] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1643), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1871), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(690), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1641), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33459] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1877), 1, + anon_sym_EQ, + STATE(691), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1439), 6, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + anon_sym_SLASH, + ACTIONS(1437), 19, + anon_sym_as, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PLUS, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PERCENT, + [33506] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1259), 1, + anon_sym_EQ, + ACTIONS(1851), 1, + anon_sym_CARET, + ACTIONS(1853), 1, + anon_sym_AMP, + ACTIONS(1859), 1, + anon_sym_SLASH, + ACTIONS(1863), 1, + anon_sym_PIPE, + ACTIONS(1865), 1, + anon_sym_AMP_AMP, + ACTIONS(1869), 1, + anon_sym_DOT_DOT, + ACTIONS(1873), 1, + anon_sym_PIPE_PIPE, + STATE(692), 1, + sym_annotation, + ACTIONS(1849), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1855), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1857), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1861), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1867), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 5, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + [33577] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(693), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1677), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33647] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(694), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1641), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33717] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(695), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1519), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33787] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(696), 1, + sym_annotation, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 16, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PLUS, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + anon_sym_DASH, + [33837] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(697), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1515), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [33907] = 18, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(698), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 5, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + [33975] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(1905), 1, + anon_sym_COMMA, + ACTIONS(1907), 1, + anon_sym_RPAREN, + ACTIONS(1909), 1, + anon_sym_COLON, + STATE(699), 1, + sym_annotation, + STATE(1254), 1, + aux_sym_expression_list_repeat1, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [34051] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(700), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1629), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [34121] = 17, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(701), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 6, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + [34187] = 16, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(702), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1257), 7, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + [34251] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(703), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1633), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [34321] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(704), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 11, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [34381] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(705), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 12, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [34437] = 13, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(706), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 4, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + ACTIONS(1257), 11, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + [34495] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(707), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1609), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [34565] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(708), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 12, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + [34619] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(709), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1613), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [34689] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(710), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 5, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_EQ_EQ, + anon_sym_AMP, + ACTIONS(1257), 14, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_DOT_DOT, + anon_sym_CARET, + anon_sym_LT_LT, + anon_sym_GT_GT, + [34741] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(711), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1647), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [34811] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(712), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1259), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1257), 10, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + anon_sym_EQ_EQ_GT, + anon_sym_PIPE_PIPE, + anon_sym_AMP_AMP, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [34873] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(713), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1605), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [34943] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(714), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1566), 4, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_where, + [35013] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1911), 1, + sym_identifier, + ACTIONS(1913), 1, + anon_sym_COLON_COLON, + ACTIONS(1915), 1, + anon_sym_RPAREN, + STATE(423), 1, + sym_bool_literal, + STATE(715), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(1428), 3, + sym_annotation_item, + sym_module_access, + sym__literal_value, + [35088] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1911), 1, + sym_identifier, + ACTIONS(1913), 1, + anon_sym_COLON_COLON, + ACTIONS(1917), 1, + anon_sym_RPAREN, + STATE(423), 1, + sym_bool_literal, + STATE(716), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(1428), 3, + sym_annotation_item, + sym_module_access, + sym__literal_value, + [35163] = 21, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1919), 1, + anon_sym_SEMI, + ACTIONS(1921), 1, + anon_sym_COMMA, + STATE(717), 1, + sym_annotation, + STATE(1279), 1, + aux_sym__spec_abort_with_or_modifies_repeat1, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35236] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + STATE(718), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1923), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_where, + [35305] = 21, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1925), 1, + anon_sym_SEMI, + ACTIONS(1927), 1, + anon_sym_COMMA, + STATE(719), 1, + sym_annotation, + STATE(1205), 1, + aux_sym__spec_abort_with_or_modifies_repeat1, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35378] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(809), 1, + anon_sym_RBRACE, + ACTIONS(1929), 1, + anon_sym_public, + ACTIONS(1932), 1, + anon_sym_use, + STATE(770), 1, + sym_use_declaration, + STATE(720), 2, + sym_annotation, + aux_sym_spec_body_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(801), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [35427] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1911), 1, + sym_identifier, + ACTIONS(1913), 1, + anon_sym_COLON_COLON, + ACTIONS(1935), 1, + anon_sym_RPAREN, + STATE(423), 1, + sym_bool_literal, + STATE(721), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(1428), 3, + sym_annotation_item, + sym_module_access, + sym__literal_value, + [35502] = 22, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1911), 1, + sym_identifier, + ACTIONS(1913), 1, + anon_sym_COLON_COLON, + ACTIONS(1937), 1, + anon_sym_RPAREN, + STATE(423), 1, + sym_bool_literal, + STATE(722), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(1428), 3, + sym_annotation_item, + sym_module_access, + sym__literal_value, + [35577] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + ACTIONS(1941), 1, + anon_sym_RBRACK, + STATE(723), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35647] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(724), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1943), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35715] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + ACTIONS(1945), 1, + anon_sym_RPAREN, + STATE(725), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35785] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(726), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1947), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35853] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(409), 1, + anon_sym_RBRACK, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + STATE(727), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35923] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(309), 1, + anon_sym_RBRACE, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + STATE(728), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [35993] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(729), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1951), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36061] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(730), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1953), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36129] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + ACTIONS(1955), 1, + anon_sym_RBRACE, + STATE(731), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36199] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + ACTIONS(1957), 1, + anon_sym_RBRACK, + STATE(732), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36269] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(405), 1, + anon_sym_RBRACK, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + STATE(733), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36339] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1959), 1, + anon_sym_COMMA, + ACTIONS(1961), 1, + anon_sym_RBRACK, + STATE(734), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36409] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1959), 1, + anon_sym_COMMA, + ACTIONS(1963), 1, + anon_sym_RBRACK, + STATE(735), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36479] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(210), 1, + anon_sym_RBRACE, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + STATE(736), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36549] = 21, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1911), 1, + sym_identifier, + ACTIONS(1965), 1, + anon_sym_COLON_COLON, + STATE(423), 1, + sym_bool_literal, + STATE(737), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(1295), 3, + sym_annotation_item, + sym_module_access, + sym__literal_value, + [36621] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1967), 1, + anon_sym_SEMI, + ACTIONS(1969), 1, + anon_sym_with, + STATE(738), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36691] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(218), 1, + anon_sym_RBRACE, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + STATE(739), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36761] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(399), 1, + anon_sym_RPAREN, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + STATE(740), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36831] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(503), 1, + anon_sym_RBRACK, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + STATE(741), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36901] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(212), 1, + anon_sym_RBRACE, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + STATE(742), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [36971] = 21, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(1911), 1, + sym_identifier, + ACTIONS(1913), 1, + anon_sym_COLON_COLON, + STATE(423), 1, + sym_bool_literal, + STATE(743), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + STATE(1428), 3, + sym_annotation_item, + sym_module_access, + sym__literal_value, + [37043] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(407), 1, + anon_sym_RBRACK, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + STATE(744), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37113] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1971), 1, + anon_sym_SEMI, + ACTIONS(1973), 1, + anon_sym_with, + STATE(745), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37183] = 20, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + ACTIONS(1975), 1, + anon_sym_RBRACE, + STATE(746), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37253] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + STATE(747), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(1977), 2, + anon_sym_SEMI, + anon_sym_COMMA, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37321] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1979), 1, + anon_sym_SEMI, + STATE(748), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37388] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(1981), 1, + anon_sym_COLON, + STATE(749), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37455] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(956), 1, + anon_sym_RBRACE, + STATE(750), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(954), 21, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [37496] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1983), 1, + anon_sym_RPAREN, + STATE(751), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37563] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1007), 1, + anon_sym_RBRACE, + STATE(752), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1005), 21, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [37604] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1985), 1, + anon_sym_RPAREN, + STATE(753), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37671] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1949), 1, + anon_sym_SEMI, + STATE(754), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37738] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(1987), 1, + anon_sym_COLON, + STATE(755), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37805] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1989), 1, + anon_sym_RPAREN, + STATE(756), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37872] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1991), 1, + anon_sym_SEMI, + STATE(757), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [37939] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(1993), 1, + anon_sym_COLON, + STATE(758), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38006] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1995), 1, + anon_sym_RPAREN, + STATE(759), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38073] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(1997), 1, + anon_sym_COLON, + STATE(760), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38140] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1999), 1, + anon_sym_RPAREN, + STATE(761), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38207] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2001), 1, + anon_sym_SEMI, + STATE(762), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38274] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2003), 1, + anon_sym_SEMI, + STATE(763), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38341] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2005), 1, + anon_sym_SEMI, + STATE(764), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38408] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2007), 1, + anon_sym_SEMI, + STATE(765), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38475] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2009), 1, + anon_sym_SEMI, + STATE(766), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38542] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2011), 1, + anon_sym_SEMI, + STATE(767), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38609] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2013), 1, + anon_sym_SEMI, + STATE(768), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38676] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2015), 1, + anon_sym_SEMI, + STATE(769), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38743] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1033), 1, + anon_sym_RBRACE, + STATE(770), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1031), 21, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [38784] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2017), 1, + anon_sym_SEMI, + STATE(771), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38851] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1959), 1, + anon_sym_COMMA, + STATE(772), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38918] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2019), 1, + anon_sym_SEMI, + STATE(773), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [38985] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(2021), 1, + anon_sym_COLON, + STATE(774), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39052] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2023), 1, + anon_sym_RPAREN, + STATE(775), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39119] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2025), 1, + anon_sym_to, + STATE(776), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39186] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2027), 1, + anon_sym_SEMI, + STATE(777), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39253] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2029), 1, + anon_sym_SEMI, + STATE(778), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39320] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(1939), 1, + anon_sym_COMMA, + STATE(779), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39387] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2031), 1, + anon_sym_SEMI, + STATE(780), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39454] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1881), 1, + anon_sym_PIPE, + ACTIONS(1885), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1887), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1889), 1, + anon_sym_AMP_AMP, + ACTIONS(1893), 1, + anon_sym_DOT_DOT, + ACTIONS(1895), 1, + anon_sym_CARET, + ACTIONS(1897), 1, + anon_sym_AMP, + ACTIONS(1903), 1, + anon_sym_SLASH, + ACTIONS(2033), 1, + anon_sym_COLON, + STATE(781), 1, + sym_annotation, + ACTIONS(1883), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1899), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1901), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1879), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1891), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39521] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2035), 1, + anon_sym_SEMI, + STATE(782), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39588] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2037), 1, + anon_sym_RPAREN, + STATE(783), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39655] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2039), 1, + anon_sym_RPAREN, + STATE(784), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39722] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2041), 1, + anon_sym_RPAREN, + STATE(785), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39789] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1211), 1, + anon_sym_as, + ACTIONS(1829), 1, + anon_sym_SLASH, + ACTIONS(1831), 1, + anon_sym_PIPE, + ACTIONS(1833), 1, + anon_sym_CARET, + ACTIONS(1835), 1, + anon_sym_AMP, + ACTIONS(1839), 1, + anon_sym_EQ_EQ_GT, + ACTIONS(1841), 1, + anon_sym_PIPE_PIPE, + ACTIONS(1843), 1, + anon_sym_AMP_AMP, + ACTIONS(1847), 1, + anon_sym_DOT_DOT, + ACTIONS(2043), 1, + anon_sym_RPAREN, + STATE(786), 1, + sym_annotation, + ACTIONS(1823), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1825), 2, + anon_sym_LT_LT, + anon_sym_GT_GT, + ACTIONS(1827), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1837), 3, + anon_sym_LT, + anon_sym_GT, + anon_sym_EQ_EQ, + ACTIONS(1845), 3, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [39856] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2045), 1, + anon_sym_mut, + STATE(787), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1291), 6, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_AMP, + aux_sym_num_literal_token2, + ACTIONS(1289), 14, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [39898] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(788), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(966), 7, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_DOLLAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_AMP, + aux_sym_num_literal_token2, + ACTIONS(2047), 14, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [39938] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2051), 1, + anon_sym_RBRACE, + STATE(789), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2049), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [39977] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2055), 1, + anon_sym_RBRACE, + STATE(790), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2053), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40016] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2059), 1, + anon_sym_RBRACE, + STATE(791), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2057), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40055] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2063), 1, + anon_sym_RBRACE, + STATE(792), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2061), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40094] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2067), 1, + anon_sym_RBRACE, + STATE(793), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2065), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40133] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(794), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1445), 6, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_AMP, + aux_sym_num_literal_token2, + ACTIONS(1443), 14, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [40172] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2071), 1, + anon_sym_RBRACE, + STATE(795), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2069), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40211] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(655), 1, + anon_sym_RBRACE, + STATE(796), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(657), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40250] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2075), 1, + anon_sym_RBRACE, + STATE(797), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2073), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40289] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(679), 1, + anon_sym_RBRACE, + STATE(798), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(681), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40328] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2079), 1, + anon_sym_RBRACE, + STATE(799), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2077), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40367] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2083), 1, + anon_sym_RBRACE, + STATE(800), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2081), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40406] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2087), 1, + anon_sym_RBRACE, + STATE(801), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2085), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40445] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2091), 1, + anon_sym_RBRACE, + STATE(802), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2089), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40484] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2095), 1, + anon_sym_RBRACE, + STATE(803), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2093), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40523] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2099), 1, + anon_sym_RBRACE, + STATE(804), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2097), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40562] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2103), 1, + anon_sym_RBRACE, + STATE(805), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2101), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40601] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(806), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1457), 6, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_AT, + anon_sym_PIPE, + anon_sym_AMP, + aux_sym_num_literal_token2, + ACTIONS(1455), 14, + anon_sym_u8, + anon_sym_u16, + anon_sym_u32, + anon_sym_u64, + anon_sym_u128, + anon_sym_u256, + anon_sym_bool, + anon_sym_address, + anon_sym_signer, + anon_sym_bytearray, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [40640] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2107), 1, + anon_sym_RBRACE, + STATE(807), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2105), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40679] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2111), 1, + anon_sym_RBRACE, + STATE(808), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2109), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40718] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2115), 1, + anon_sym_RBRACE, + STATE(809), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2113), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40757] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2119), 1, + anon_sym_RBRACE, + STATE(810), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2117), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40796] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2123), 1, + anon_sym_RBRACE, + STATE(811), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2121), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40835] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(667), 1, + anon_sym_RBRACE, + STATE(812), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(669), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40874] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(659), 1, + anon_sym_RBRACE, + STATE(813), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(661), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40913] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2127), 1, + anon_sym_RBRACE, + STATE(814), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2125), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40952] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2131), 1, + anon_sym_RBRACE, + STATE(815), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2129), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [40991] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(639), 1, + anon_sym_RBRACE, + STATE(816), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(641), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41030] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2135), 1, + anon_sym_RBRACE, + STATE(817), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2133), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41069] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(647), 1, + anon_sym_RBRACE, + STATE(818), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(649), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41108] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2139), 1, + anon_sym_RBRACE, + STATE(819), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2137), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41147] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(671), 1, + anon_sym_RBRACE, + STATE(820), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(673), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41186] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2143), 1, + anon_sym_RBRACE, + STATE(821), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2141), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41225] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2147), 1, + anon_sym_RBRACE, + STATE(822), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2145), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41264] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2151), 1, + anon_sym_RBRACE, + STATE(823), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2149), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41303] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2155), 1, + anon_sym_RBRACE, + STATE(824), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2153), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41342] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2159), 1, + anon_sym_RBRACE, + STATE(825), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2157), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41381] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2163), 1, + anon_sym_RBRACE, + STATE(826), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2161), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41420] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2167), 1, + anon_sym_RBRACE, + STATE(827), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2165), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41459] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2171), 1, + anon_sym_RBRACE, + STATE(828), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2169), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41498] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2175), 1, + anon_sym_RBRACE, + STATE(829), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2173), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41537] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2179), 1, + anon_sym_RBRACE, + STATE(830), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2177), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41576] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(629), 1, + anon_sym_RBRACE, + STATE(831), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(631), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41615] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2183), 1, + anon_sym_RBRACE, + STATE(832), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2181), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41654] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2187), 1, + anon_sym_RBRACE, + STATE(833), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2185), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41693] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2191), 1, + anon_sym_RBRACE, + STATE(834), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2189), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41732] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2195), 1, + anon_sym_RBRACE, + STATE(835), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2193), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41771] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2199), 1, + anon_sym_RBRACE, + STATE(836), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2197), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41810] = 19, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(547), 1, + anon_sym_DOLLAR, + ACTIONS(899), 1, + anon_sym_AT, + ACTIONS(2201), 1, + sym_identifier, + ACTIONS(2203), 1, + anon_sym_COLON_COLON, + STATE(423), 1, + sym_bool_literal, + STATE(837), 1, + sym_annotation, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(912), 1, + sym_num_literal, + STATE(1316), 1, + sym__module_identifier, + ACTIONS(70), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(555), 2, + sym__forall, + sym__exists, + STATE(1304), 2, + sym_module_access, + sym__literal_value, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + [41875] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2207), 1, + anon_sym_RBRACE, + STATE(838), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2205), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41914] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2211), 1, + anon_sym_RBRACE, + STATE(839), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2209), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41953] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2215), 1, + anon_sym_RBRACE, + STATE(840), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2213), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [41992] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2219), 1, + anon_sym_RBRACE, + STATE(841), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2217), 19, + anon_sym_fun, + anon_sym_native, + anon_sym_let, + anon_sym_assert, + anon_sym_assume, + anon_sym_decreases, + anon_sym_ensures, + anon_sym_succeeds_if, + anon_sym_requires, + anon_sym_aborts_if, + anon_sym_aborts_with, + anon_sym_modifies, + anon_sym_invariant, + anon_sym_include, + anon_sym_apply, + anon_sym_pragma, + anon_sym_global, + anon_sym_local, + sym_identifier, + [42031] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2221), 1, + anon_sym_COLON_COLON, + STATE(842), 1, + sym_annotation, + ACTIONS(865), 2, + anon_sym_EQ, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(863), 15, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42070] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(843), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2223), 8, + anon_sym_AT, + anon_sym_mut, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + ACTIONS(831), 10, + anon_sym_COLON_COLON, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_DOLLAR, + anon_sym_DOT_DOT, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + [42107] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1011), 1, + anon_sym_EQ, + STATE(844), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1009), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42143] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1029), 1, + anon_sym_EQ, + STATE(845), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1027), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42179] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(885), 1, + anon_sym_EQ, + STATE(846), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(883), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42215] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1039), 1, + anon_sym_EQ, + STATE(847), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1037), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42251] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(757), 1, + anon_sym_EQ, + STATE(848), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42287] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(997), 1, + anon_sym_EQ, + STATE(849), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(995), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42323] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(2225), 1, + anon_sym_COLON_COLON, + STATE(842), 1, + sym_type_arguments, + STATE(850), 1, + sym_annotation, + ACTIONS(790), 2, + anon_sym_EQ, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(788), 12, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [42365] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(823), 1, + anon_sym_EQ, + STATE(851), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(821), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42401] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(993), 1, + anon_sym_EQ, + STATE(852), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(991), 16, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + anon_sym_if, + anon_sym_EQ_GT, + [42437] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(2227), 1, + anon_sym_COLON_COLON, + STATE(853), 1, + sym_annotation, + STATE(1518), 1, + sym_type_arguments, + ACTIONS(769), 2, + anon_sym_EQ, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(767), 12, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [42479] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(854), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2229), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42512] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(855), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1386), 8, + anon_sym_COLON_COLON, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_DOLLAR, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(2231), 8, + anon_sym_AT, + anon_sym_mut, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [42547] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(856), 1, + sym_annotation, + ACTIONS(697), 2, + anon_sym_COLON_COLON, + anon_sym_LT, + ACTIONS(872), 2, + anon_sym_EQ, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(869), 12, + anon_sym_SEMI, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [42584] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(857), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2233), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42617] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2237), 1, + anon_sym_has, + STATE(858), 1, + sym_annotation, + STATE(888), 1, + sym_postfix_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2235), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42654] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2237), 1, + anon_sym_has, + STATE(859), 1, + sym_annotation, + STATE(892), 1, + sym_postfix_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2239), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42691] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(860), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2241), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42724] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(861), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2243), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42757] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(862), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2245), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42790] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(863), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2247), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42823] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(864), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1546), 8, + anon_sym_COLON_COLON, + anon_sym_LPAREN, + anon_sym_DOLLAR, + anon_sym_PIPE, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(2249), 8, + anon_sym_AT, + anon_sym_mut, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [42858] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2237), 1, + anon_sym_has, + STATE(865), 1, + sym_annotation, + STATE(884), 1, + sym_postfix_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2251), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42895] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(866), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2253), 16, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42928] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2237), 1, + anon_sym_has, + STATE(867), 1, + sym_annotation, + STATE(894), 1, + sym_postfix_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2255), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [42965] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(868), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1791), 7, + anon_sym_COLON_COLON, + anon_sym_RPAREN, + anon_sym_DOLLAR, + sym_address_literal, + aux_sym_num_literal_token2, + sym_hex_string_literal, + sym_byte_string_literal, + ACTIONS(2257), 8, + anon_sym_AT, + anon_sym_mut, + anon_sym_true, + anon_sym_false, + aux_sym_num_literal_token1, + sym_identifier, + sym__forall, + sym__exists, + [42999] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(869), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2259), 15, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43031] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(870), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2261), 15, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43063] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(871), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2263), 15, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_has, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43095] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(872), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2265), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43126] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(873), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2267), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43157] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2271), 1, + anon_sym_LBRACE, + ACTIONS(2273), 1, + anon_sym_LPAREN, + ACTIONS(2275), 1, + anon_sym_EQ, + STATE(874), 1, + sym_annotation, + STATE(930), 1, + sym_bind_fields, + STATE(931), 2, + sym_bind_positional_fields, + sym_bind_named_fields, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2269), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [43198] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(875), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2277), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43229] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(876), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2279), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43260] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(877), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1007), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43291] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(878), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2281), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43322] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(2283), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(879), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 11, + anon_sym_as, + anon_sym_DOT, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [43359] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(880), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2286), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43390] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(881), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2288), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43421] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(882), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2290), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43452] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(883), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(956), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43483] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(884), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2292), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43514] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(885), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2294), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43545] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(886), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2296), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43576] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(887), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2298), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43607] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(888), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2300), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43638] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(889), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2302), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43669] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(890), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2304), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43700] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(891), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2306), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43731] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(892), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2308), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43762] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(893), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2310), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43793] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(894), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2312), 14, + ts_builtin_sym_end, + anon_sym_public, + anon_sym_use, + anon_sym_fun, + anon_sym_RBRACE, + anon_sym_friend, + anon_sym_entry, + anon_sym_native, + anon_sym_module, + anon_sym_const, + anon_sym_enum, + anon_sym_struct, + anon_sym_macro, + anon_sym_spec, + [43824] = 15, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2314), 1, + sym_identifier, + ACTIONS(2316), 1, + anon_sym_fun, + ACTIONS(2318), 1, + anon_sym_LBRACE, + ACTIONS(2320), 1, + anon_sym_native, + ACTIONS(2322), 1, + anon_sym_module, + ACTIONS(2324), 1, + anon_sym_schema, + STATE(244), 1, + sym__spec_function, + STATE(248), 1, + sym_spec_body, + STATE(895), 1, + sym_annotation, + STATE(1438), 1, + sym__spec_block_target, + STATE(1461), 1, + sym_spec_block_target_schema, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(245), 3, + sym_uninterpreted_spec_function, + sym_native_spec_function, + sym_usual_spec_function, + [43874] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(769), 1, + anon_sym_COLON, + ACTIONS(1129), 1, + anon_sym_LT, + ACTIONS(2227), 1, + anon_sym_COLON_COLON, + STATE(896), 1, + sym_annotation, + STATE(1518), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(767), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + [43912] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(2329), 1, + anon_sym_COLON, + ACTIONS(2332), 1, + anon_sym_AT, + ACTIONS(2334), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(897), 1, + sym_annotation, + ACTIONS(755), 2, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2326), 6, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_PIPE, + [43954] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(790), 1, + anon_sym_COLON, + ACTIONS(1142), 1, + anon_sym_LT, + ACTIONS(2337), 1, + anon_sym_COLON_COLON, + STATE(842), 1, + sym_type_arguments, + STATE(898), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(788), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + [43992] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(872), 1, + anon_sym_COLON, + STATE(899), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(869), 10, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_PIPE, + anon_sym_where, + [44025] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(900), 1, + sym_annotation, + STATE(922), 1, + sym_module_access, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44072] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(901), 1, + sym_annotation, + STATE(1316), 1, + sym__module_identifier, + STATE(1320), 1, + sym_module_access, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44119] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(757), 1, + anon_sym_COLON, + ACTIONS(2334), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(902), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 8, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_PIPE, + [44156] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2339), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(903), 1, + sym_annotation, + STATE(922), 1, + sym_module_access, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44203] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(904), 1, + sym_annotation, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + STATE(1489), 1, + sym_module_access, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44250] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(13), 1, + sym_identifier, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + STATE(272), 1, + sym_module_identity, + STATE(299), 1, + sym__reserved_identifier, + STATE(337), 1, + sym_module_access, + STATE(905), 1, + sym_annotation, + STATE(1216), 1, + sym__module_identifier, + STATE(1524), 1, + sym_num_literal, + ACTIONS(31), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(633), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44297] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(906), 1, + sym_annotation, + STATE(1249), 1, + sym_module_access, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44344] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2341), 1, + sym_identifier, + STATE(337), 1, + sym_module_access, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(907), 1, + sym_annotation, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44391] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(337), 1, + sym_module_access, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(908), 1, + sym_annotation, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44438] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(909), 1, + sym_annotation, + STATE(1261), 1, + sym_module_access, + STATE(1316), 1, + sym__module_identifier, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44485] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(2283), 1, + anon_sym_LT, + ACTIONS(2332), 1, + anon_sym_AT, + STATE(849), 1, + sym_type_arguments, + STATE(910), 1, + sym_annotation, + ACTIONS(755), 2, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2326), 6, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [44524] = 14, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2201), 1, + sym_identifier, + STATE(848), 1, + sym__reserved_identifier, + STATE(850), 1, + sym_module_identity, + STATE(911), 1, + sym_annotation, + STATE(1316), 1, + sym__module_identifier, + STATE(1468), 1, + sym_module_access, + STATE(1484), 1, + sym_num_literal, + ACTIONS(547), 2, + anon_sym_DOLLAR, + anon_sym_AT, + ACTIONS(555), 2, + sym__forall, + sym__exists, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [44571] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2343), 1, + anon_sym_COLON_COLON, + STATE(912), 1, + sym_annotation, + ACTIONS(1147), 2, + anon_sym_EQ, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1145), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [44603] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2345), 1, + sym_identifier, + ACTIONS(2347), 1, + anon_sym_fun, + STATE(913), 1, + sym_annotation, + STATE(1222), 1, + sym_module_identity, + STATE(1490), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(1517), 4, + sym_use_fun, + sym_use_module, + sym_use_module_member, + sym_use_module_members, + [44643] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2345), 1, + sym_identifier, + ACTIONS(2347), 1, + anon_sym_fun, + STATE(914), 1, + sym_annotation, + STATE(1222), 1, + sym_module_identity, + STATE(1490), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(1520), 4, + sym_use_fun, + sym_use_module, + sym_use_module_member, + sym_use_module_members, + [44683] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(1135), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(915), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 8, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_GT, + anon_sym_PIPE, + [44717] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2345), 1, + sym_identifier, + ACTIONS(2347), 1, + anon_sym_fun, + STATE(916), 1, + sym_annotation, + STATE(1222), 1, + sym_module_identity, + STATE(1490), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(1456), 4, + sym_use_fun, + sym_use_module, + sym_use_module_member, + sym_use_module_members, + [44757] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2345), 1, + sym_identifier, + ACTIONS(2347), 1, + anon_sym_fun, + STATE(917), 1, + sym_annotation, + STATE(1222), 1, + sym_module_identity, + STATE(1490), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(1459), 4, + sym_use_fun, + sym_use_module, + sym_use_module_member, + sym_use_module_members, + [44797] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2345), 1, + sym_identifier, + ACTIONS(2347), 1, + anon_sym_fun, + STATE(918), 1, + sym_annotation, + STATE(1222), 1, + sym_module_identity, + STATE(1490), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(1492), 4, + sym_use_fun, + sym_use_module, + sym_use_module_member, + sym_use_module_members, + [44837] = 12, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1669), 1, + anon_sym_enum, + ACTIONS(1671), 1, + anon_sym_struct, + ACTIONS(2351), 1, + anon_sym_use, + ACTIONS(2353), 1, + anon_sym_LPAREN, + ACTIONS(2355), 1, + anon_sym_native, + STATE(919), 1, + sym_annotation, + STATE(1062), 1, + sym__struct_signature, + STATE(1386), 1, + sym__enum_signature, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2349), 4, + anon_sym_public, + anon_sym_fun, + anon_sym_entry, + anon_sym_macro, + [44879] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2345), 1, + sym_identifier, + ACTIONS(2347), 1, + anon_sym_fun, + STATE(920), 1, + sym_annotation, + STATE(1222), 1, + sym_module_identity, + STATE(1490), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + STATE(1473), 4, + sym_use_fun, + sym_use_module, + sym_use_module_member, + sym_use_module_members, + [44919] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1023), 1, + anon_sym_EQ, + STATE(921), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1021), 10, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [44949] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1079), 1, + anon_sym_EQ, + STATE(922), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1077), 10, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [44979] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(923), 1, + sym_annotation, + ACTIONS(1105), 2, + anon_sym_EQ, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1103), 8, + anon_sym_SEMI, + anon_sym_COLON_COLON, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45008] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + STATE(924), 1, + sym_annotation, + STATE(1273), 1, + sym__literal_value, + ACTIONS(2358), 2, + anon_sym_true, + anon_sym_false, + STATE(423), 2, + sym_bool_literal, + sym_num_literal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(68), 3, + sym_address_literal, + sym_hex_string_literal, + sym_byte_string_literal, + [45045] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2362), 1, + anon_sym_EQ, + STATE(925), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2360), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45073] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1283), 1, + anon_sym_EQ, + STATE(926), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1281), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45101] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2366), 1, + anon_sym_EQ, + STATE(927), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2364), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45129] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2370), 1, + anon_sym_RPAREN, + ACTIONS(2373), 1, + anon_sym_EQ, + STATE(928), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2368), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45159] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2377), 1, + anon_sym_EQ, + STATE(929), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2375), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45187] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2381), 1, + anon_sym_EQ, + STATE(930), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2379), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45215] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2385), 1, + anon_sym_EQ, + STATE(931), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2383), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45243] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(932), 1, + sym_annotation, + STATE(940), 1, + aux_sym_ability_decls_repeat1, + STATE(1165), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2387), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [45275] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2391), 1, + anon_sym_EQ, + STATE(933), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2332), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45303] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1147), 1, + anon_sym_EQ, + STATE(934), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1145), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45331] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1114), 1, + anon_sym_EQ, + STATE(935), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45359] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1539), 1, + sym_ability, + STATE(936), 2, + sym_annotation, + aux_sym_ability_decls_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2393), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(2395), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [45389] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2400), 1, + anon_sym_EQ, + STATE(937), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2398), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45417] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1187), 1, + anon_sym_EQ, + STATE(938), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45445] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2404), 1, + anon_sym_EQ, + STATE(939), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2402), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45473] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(936), 1, + aux_sym_ability_decls_repeat1, + STATE(940), 1, + sym_annotation, + STATE(1181), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2406), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [45505] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2410), 1, + anon_sym_EQ, + STATE(941), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2408), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45533] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2414), 1, + anon_sym_EQ, + STATE(942), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2412), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45561] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(943), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(689), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_PIPE, + [45587] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2418), 1, + anon_sym_EQ, + STATE(944), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2416), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45615] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2422), 1, + anon_sym_EQ, + STATE(945), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2420), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45643] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(946), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(705), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_PIPE, + [45669] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2426), 1, + anon_sym_EQ, + STATE(947), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2424), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45697] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2430), 1, + anon_sym_EQ, + STATE(948), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2428), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45725] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2434), 1, + anon_sym_EQ, + STATE(949), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2432), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45753] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2438), 1, + anon_sym_EQ, + STATE(950), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2436), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45781] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(951), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(685), 9, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_PIPE, + [45807] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2442), 1, + anon_sym_EQ, + STATE(952), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2440), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45835] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2446), 1, + anon_sym_RPAREN, + ACTIONS(2449), 1, + anon_sym_EQ, + STATE(953), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2444), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45865] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1176), 1, + anon_sym_EQ, + STATE(954), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1171), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45893] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2449), 1, + anon_sym_EQ, + STATE(955), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2444), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45921] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1158), 1, + anon_sym_EQ, + STATE(956), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1153), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45949] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2453), 1, + anon_sym_EQ, + STATE(957), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2451), 8, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [45977] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2457), 1, + anon_sym_AT, + STATE(958), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2455), 7, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_PIPE, + [46004] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(2326), 1, + anon_sym_COMMA, + ACTIONS(2329), 1, + anon_sym_COLON, + ACTIONS(2332), 1, + anon_sym_AT, + ACTIONS(2459), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(959), 1, + sym_annotation, + ACTIONS(755), 2, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [46041] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2462), 1, + sym_identifier, + ACTIONS(2464), 1, + anon_sym_RPAREN, + ACTIONS(2466), 1, + anon_sym_DOLLAR, + ACTIONS(2468), 1, + anon_sym_mut, + STATE(960), 1, + sym_annotation, + STATE(972), 1, + aux_sym_function_parameters_repeat1, + STATE(1465), 1, + sym__variable_identifier, + STATE(1404), 2, + sym_mut_function_parameter, + sym_function_parameter, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [46078] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(2477), 1, + anon_sym_PIPE, + STATE(961), 1, + sym_annotation, + STATE(973), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2470), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46109] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2484), 1, + anon_sym_RPAREN, + ACTIONS(2488), 1, + anon_sym_PIPE, + STATE(962), 1, + sym_annotation, + STATE(968), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2481), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46140] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(2492), 1, + anon_sym_PIPE, + STATE(963), 1, + sym_annotation, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46171] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2495), 1, + anon_sym_PIPE, + STATE(964), 1, + sym_annotation, + STATE(974), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46202] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2498), 1, + anon_sym_PIPE, + STATE(963), 1, + aux_sym_or_bind_list_repeat1, + STATE(965), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46233] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2501), 1, + sym_identifier, + ACTIONS(2504), 1, + anon_sym_RPAREN, + ACTIONS(2506), 1, + anon_sym_DOLLAR, + ACTIONS(2509), 1, + anon_sym_mut, + STATE(1465), 1, + sym__variable_identifier, + STATE(966), 2, + sym_annotation, + aux_sym_function_parameters_repeat1, + STATE(1558), 2, + sym_mut_function_parameter, + sym_function_parameter, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [46268] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2512), 1, + anon_sym_DASH_GT, + STATE(967), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1085), 7, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_GT, + [46295] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2498), 1, + anon_sym_PIPE, + STATE(968), 1, + sym_annotation, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46326] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2498), 1, + anon_sym_PIPE, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2517), 1, + anon_sym_RPAREN, + STATE(963), 1, + aux_sym_or_bind_list_repeat1, + STATE(969), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 4, + anon_sym_SEMI, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46359] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2492), 1, + anon_sym_PIPE, + ACTIONS(2520), 1, + anon_sym_RPAREN, + STATE(970), 1, + sym_annotation, + STATE(973), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46390] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2523), 1, + anon_sym_PIPE, + STATE(971), 2, + sym_annotation, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2368), 6, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + [46417] = 11, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2462), 1, + sym_identifier, + ACTIONS(2466), 1, + anon_sym_DOLLAR, + ACTIONS(2468), 1, + anon_sym_mut, + ACTIONS(2526), 1, + anon_sym_RPAREN, + STATE(966), 1, + aux_sym_function_parameters_repeat1, + STATE(972), 1, + sym_annotation, + STATE(1465), 1, + sym__variable_identifier, + STATE(1437), 2, + sym_mut_function_parameter, + sym_function_parameter, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [46454] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2495), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(973), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46485] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(2528), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(974), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1171), 5, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_COLON, + [46516] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(2531), 1, + anon_sym_PIPE, + STATE(975), 1, + sym_annotation, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1171), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [46546] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(976), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2534), 7, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_has, + anon_sym_except, + [46570] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(977), 1, + sym_annotation, + STATE(1306), 1, + sym_ability, + ACTIONS(2536), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [46598] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(978), 1, + sym_annotation, + STATE(1306), 1, + sym_ability, + ACTIONS(2538), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [46626] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2540), 1, + anon_sym_PIPE, + STATE(979), 1, + sym_annotation, + STATE(1003), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [46656] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(980), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2393), 7, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [46680] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(981), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2543), 7, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_has, + anon_sym_except, + [46704] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(757), 1, + anon_sym_COLON, + ACTIONS(2459), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(982), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(755), 3, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + [46736] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2545), 1, + anon_sym_AT, + STATE(983), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2455), 6, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [46762] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2549), 1, + anon_sym_has, + ACTIONS(2551), 1, + anon_sym_LT, + STATE(984), 1, + sym_annotation, + STATE(1079), 1, + sym_type_parameters, + STATE(1317), 1, + sym_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2547), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + [46794] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2540), 1, + anon_sym_PIPE, + ACTIONS(2553), 1, + anon_sym_RPAREN, + STATE(985), 1, + sym_annotation, + STATE(1003), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [46826] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2556), 1, + anon_sym_PIPE, + STATE(986), 2, + sym_annotation, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2368), 5, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_EQ_GT, + [46852] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2540), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(987), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [46882] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(988), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2559), 7, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_COLON, + anon_sym_has, + anon_sym_except, + [46906] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2561), 1, + anon_sym_SEMI, + STATE(936), 1, + aux_sym_ability_decls_repeat1, + STATE(989), 1, + sym_annotation, + STATE(1337), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [46936] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(2565), 1, + anon_sym_RPAREN, + ACTIONS(2567), 1, + anon_sym_PIPE, + STATE(990), 1, + sym_annotation, + STATE(1010), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [46968] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(2569), 1, + anon_sym_RPAREN, + ACTIONS(2572), 1, + anon_sym_PIPE, + STATE(991), 1, + sym_annotation, + STATE(1017), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47000] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2575), 1, + anon_sym_RPAREN, + ACTIONS(2579), 1, + anon_sym_PIPE, + STATE(987), 1, + aux_sym_or_bind_list_repeat1, + STATE(992), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2481), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [47030] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(993), 1, + sym_annotation, + STATE(1306), 1, + sym_ability, + ACTIONS(2583), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [47058] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2585), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(994), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [47088] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2588), 1, + anon_sym_LBRACE, + ACTIONS(2592), 1, + anon_sym_LPAREN, + STATE(995), 1, + sym_annotation, + STATE(1408), 1, + sym_datatype_fields, + ACTIONS(2590), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + STATE(857), 2, + sym_positional_fields, + sym_named_fields, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47120] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(2283), 1, + anon_sym_LT, + ACTIONS(2597), 1, + anon_sym_LPAREN, + ACTIONS(2599), 1, + anon_sym_EQ, + STATE(849), 1, + sym_type_arguments, + STATE(996), 1, + sym_annotation, + ACTIONS(2594), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47154] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2585), 1, + anon_sym_PIPE, + STATE(975), 1, + aux_sym_or_bind_list_repeat1, + STATE(997), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [47184] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2601), 1, + anon_sym_RPAREN, + ACTIONS(2604), 1, + anon_sym_PIPE, + STATE(994), 1, + aux_sym_or_bind_list_repeat1, + STATE(998), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [47214] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2607), 1, + anon_sym_SEMI, + STATE(989), 1, + aux_sym_ability_decls_repeat1, + STATE(999), 1, + sym_annotation, + STATE(1430), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [47244] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(2609), 1, + anon_sym_PIPE, + STATE(994), 1, + aux_sym_or_bind_list_repeat1, + STATE(1000), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2470), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [47274] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1671), 1, + anon_sym_struct, + STATE(1001), 1, + sym_annotation, + STATE(1483), 1, + sym__struct_signature, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2349), 5, + anon_sym_public, + anon_sym_fun, + anon_sym_entry, + anon_sym_native, + anon_sym_macro, + [47302] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2613), 1, + sym_identifier, + STATE(1002), 1, + sym_annotation, + STATE(1487), 1, + sym_module_identity, + STATE(1488), 1, + sym_friend_access, + STATE(1484), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47336] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(2604), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1003), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 4, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_if, + anon_sym_EQ_GT, + [47366] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1004), 1, + sym_annotation, + STATE(1306), 1, + sym_ability, + ACTIONS(2615), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [47394] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2572), 1, + anon_sym_PIPE, + STATE(1005), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47423] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(757), 1, + anon_sym_COLON, + ACTIONS(2617), 1, + anon_sym_LT, + STATE(849), 1, + sym_type_arguments, + STATE(1006), 1, + sym_annotation, + ACTIONS(755), 2, + anon_sym_COMMA, + anon_sym_where, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47454] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2621), 1, + anon_sym_PIPE, + STATE(1007), 1, + sym_annotation, + STATE(1032), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2470), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47483] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2625), 1, + anon_sym_SEMI, + ACTIONS(2627), 1, + anon_sym_except, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + STATE(1008), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47514] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2631), 1, + anon_sym_RPAREN, + ACTIONS(2635), 1, + anon_sym_PIPE, + STATE(1005), 1, + aux_sym_or_bind_list_repeat1, + STATE(1009), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2481), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47543] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2621), 1, + anon_sym_PIPE, + STATE(1010), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47572] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2572), 1, + anon_sym_PIPE, + STATE(1011), 1, + sym_annotation, + STATE(1017), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47601] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2567), 1, + anon_sym_PIPE, + STATE(1012), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47630] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2639), 1, + sym_identifier, + ACTIONS(2641), 1, + anon_sym_DOLLAR, + ACTIONS(2643), 1, + anon_sym_GT, + ACTIONS(2645), 1, + anon_sym_phantom, + STATE(1013), 1, + sym_annotation, + STATE(1206), 1, + sym__type_parameter_identifier, + STATE(1332), 1, + sym_type_parameter, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47663] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2567), 1, + anon_sym_PIPE, + STATE(1010), 1, + aux_sym_or_bind_list_repeat1, + STATE(1014), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47692] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2647), 1, + anon_sym_RPAREN, + ACTIONS(2650), 1, + anon_sym_PIPE, + STATE(1015), 1, + sym_annotation, + STATE(1019), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47721] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(2653), 1, + anon_sym_PIPE, + STATE(1016), 1, + sym_annotation, + STATE(1019), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2470), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47750] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(2650), 1, + anon_sym_PIPE, + STATE(1017), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47779] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2657), 1, + anon_sym_PIPE, + STATE(1018), 1, + sym_annotation, + STATE(1020), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47808] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2657), 1, + anon_sym_PIPE, + STATE(1019), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47837] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(2660), 1, + anon_sym_PIPE, + STATE(1020), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1171), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47866] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2663), 1, + anon_sym_public, + ACTIONS(2665), 1, + anon_sym_fun, + STATE(1021), 1, + sym_annotation, + STATE(1405), 1, + sym__macro_signature, + STATE(1477), 1, + sym_modifier, + ACTIONS(1663), 2, + anon_sym_entry, + anon_sym_native, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [47897] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2667), 1, + anon_sym_RPAREN, + ACTIONS(2669), 1, + anon_sym_PIPE, + STATE(1012), 1, + aux_sym_or_bind_list_repeat1, + STATE(1022), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2481), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [47926] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2671), 1, + anon_sym_AT, + STATE(1023), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2455), 5, + anon_sym_SEMI, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + anon_sym_PIPE, + [47951] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2457), 1, + anon_sym_AT, + STATE(1024), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2673), 5, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + anon_sym_COLON, + anon_sym_PIPE, + [47976] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1025), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2676), 6, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_GT, + anon_sym_PLUS, + [47999] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2621), 1, + anon_sym_PIPE, + ACTIONS(2678), 1, + anon_sym_RPAREN, + STATE(1026), 1, + sym_annotation, + STATE(1032), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [48028] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1463), 1, + anon_sym_RPAREN, + ACTIONS(2680), 1, + anon_sym_PIPE, + STATE(1027), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1171), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [48057] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1463), 1, + anon_sym_RPAREN, + ACTIONS(2682), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1028), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1171), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48086] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2684), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1029), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48115] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2684), 1, + anon_sym_PIPE, + STATE(1028), 1, + aux_sym_or_bind_list_repeat1, + STATE(1030), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48144] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(2686), 1, + anon_sym_RPAREN, + ACTIONS(2688), 1, + anon_sym_PIPE, + STATE(1031), 1, + sym_annotation, + STATE(1121), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48175] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2690), 1, + anon_sym_PIPE, + STATE(1032), 1, + sym_annotation, + STATE(1040), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [48204] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2663), 1, + anon_sym_public, + ACTIONS(2692), 1, + anon_sym_fun, + ACTIONS(2694), 1, + anon_sym_macro, + STATE(1033), 1, + sym_annotation, + STATE(1123), 1, + sym_modifier, + ACTIONS(1663), 2, + anon_sym_entry, + anon_sym_native, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48235] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + ACTIONS(2696), 1, + anon_sym_SEMI, + ACTIONS(2698), 1, + anon_sym_except, + STATE(1034), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48266] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2700), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1035), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48295] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2700), 1, + anon_sym_PIPE, + STATE(1029), 1, + aux_sym_or_bind_list_repeat1, + STATE(1036), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2470), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48324] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2700), 1, + anon_sym_PIPE, + ACTIONS(2702), 1, + anon_sym_RPAREN, + STATE(1029), 1, + aux_sym_or_bind_list_repeat1, + STATE(1037), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1107), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48353] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2704), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1038), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48382] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2663), 1, + anon_sym_public, + ACTIONS(2665), 1, + anon_sym_fun, + STATE(1039), 1, + sym_annotation, + STATE(1360), 1, + sym__macro_signature, + STATE(1477), 1, + sym_modifier, + ACTIONS(1663), 2, + anon_sym_entry, + anon_sym_native, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48413] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2706), 1, + anon_sym_PIPE, + STATE(1040), 2, + sym_annotation, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2368), 4, + anon_sym_SEMI, + anon_sym_RPAREN, + anon_sym_EQ, + anon_sym_COLON, + [48438] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2690), 1, + anon_sym_PIPE, + STATE(1027), 1, + aux_sym_or_bind_list_repeat1, + STATE(1041), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1182), 3, + anon_sym_SEMI, + anon_sym_EQ, + anon_sym_COLON, + [48467] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(2709), 1, + anon_sym_RPAREN, + ACTIONS(2712), 1, + anon_sym_PIPE, + STATE(1042), 1, + sym_annotation, + STATE(1093), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48498] = 10, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2639), 1, + sym_identifier, + ACTIONS(2641), 1, + anon_sym_DOLLAR, + ACTIONS(2645), 1, + anon_sym_phantom, + ACTIONS(2715), 1, + anon_sym_GT, + STATE(1043), 1, + sym_annotation, + STATE(1206), 1, + sym__type_parameter_identifier, + STATE(1332), 1, + sym_type_parameter, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48531] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2704), 1, + anon_sym_PIPE, + ACTIONS(2717), 1, + anon_sym_RPAREN, + STATE(1035), 1, + aux_sym_or_bind_list_repeat1, + STATE(1044), 1, + sym_annotation, + ACTIONS(1164), 2, + anon_sym_RBRACE, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48562] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2704), 1, + anon_sym_PIPE, + STATE(1035), 1, + aux_sym_or_bind_list_repeat1, + STATE(1045), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1164), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48591] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2719), 1, + anon_sym_RPAREN, + ACTIONS(2721), 1, + anon_sym_PIPE, + STATE(1038), 1, + aux_sym_or_bind_list_repeat1, + STATE(1046), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2481), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [48620] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(72), 1, + aux_sym_num_literal_token1, + ACTIONS(74), 1, + aux_sym_num_literal_token2, + ACTIONS(2723), 1, + sym_identifier, + STATE(1047), 1, + sym_annotation, + STATE(1211), 1, + sym_module_identity, + STATE(1484), 2, + sym_num_literal, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48651] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(2725), 1, + anon_sym_PIPE, + STATE(1048), 1, + sym_annotation, + STATE(1080), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(2470), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48679] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2727), 1, + anon_sym_PIPE, + STATE(1049), 1, + sym_annotation, + STATE(1051), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48707] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2727), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1050), 1, + sym_annotation, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48735] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1463), 1, + anon_sym_RPAREN, + ACTIONS(2730), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1051), 1, + sym_annotation, + ACTIONS(1171), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48763] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1164), 1, + anon_sym_COLON, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2733), 1, + anon_sym_RPAREN, + ACTIONS(2735), 1, + anon_sym_PIPE, + STATE(1052), 1, + sym_annotation, + STATE(1058), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48793] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2735), 1, + anon_sym_PIPE, + STATE(1053), 1, + sym_annotation, + STATE(1058), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48821] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2735), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1054), 1, + sym_annotation, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48849] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2738), 1, + anon_sym_RPAREN, + ACTIONS(2740), 1, + anon_sym_PIPE, + STATE(1054), 1, + aux_sym_or_bind_list_repeat1, + STATE(1055), 1, + sym_annotation, + ACTIONS(2481), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48877] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2744), 1, + anon_sym_RPAREN, + ACTIONS(2746), 1, + anon_sym_PIPE, + STATE(1050), 1, + aux_sym_or_bind_list_repeat1, + STATE(1056), 1, + sym_annotation, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48905] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2749), 1, + anon_sym_PIPE, + STATE(1050), 1, + aux_sym_or_bind_list_repeat1, + STATE(1057), 1, + sym_annotation, + ACTIONS(2470), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48933] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2746), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1058), 1, + sym_annotation, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [48961] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1059), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2753), 5, + anon_sym_public, + anon_sym_fun, + anon_sym_entry, + anon_sym_native, + anon_sym_macro, + [48983] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2755), 1, + sym_identifier, + ACTIONS(2757), 1, + anon_sym_RBRACE, + STATE(995), 1, + sym__variant_identifier, + STATE(1060), 1, + sym_annotation, + STATE(1074), 1, + aux_sym_enum_variants_repeat1, + STATE(1355), 1, + sym_variant, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49013] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1164), 1, + anon_sym_RBRACE, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2759), 1, + anon_sym_RPAREN, + ACTIONS(2761), 1, + anon_sym_PIPE, + STATE(1061), 1, + sym_annotation, + STATE(1078), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49043] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2588), 1, + anon_sym_LBRACE, + ACTIONS(2592), 1, + anon_sym_LPAREN, + STATE(865), 1, + sym_datatype_fields, + STATE(1062), 1, + sym_annotation, + STATE(857), 2, + sym_positional_fields, + sym_named_fields, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49071] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1164), 1, + anon_sym_COLON, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2763), 1, + anon_sym_RPAREN, + ACTIONS(2766), 1, + anon_sym_PIPE, + STATE(1063), 1, + sym_annotation, + STATE(1087), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49101] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2768), 1, + sym_identifier, + ACTIONS(2770), 1, + anon_sym_RBRACE, + STATE(1064), 1, + sym_annotation, + STATE(1104), 1, + aux_sym_named_fields_repeat1, + STATE(1403), 1, + sym_field_annotation, + STATE(1534), 1, + sym__field_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49131] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2772), 1, + anon_sym_LT, + STATE(455), 1, + sym_type_arguments, + STATE(1065), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(709), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_where, + [49157] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2776), 1, + anon_sym_as, + ACTIONS(2778), 1, + anon_sym_COLON_COLON, + STATE(1066), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2774), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [49183] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2780), 1, + anon_sym_RPAREN, + ACTIONS(2784), 1, + anon_sym_PIPE, + STATE(1067), 1, + sym_annotation, + STATE(1082), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(2481), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49211] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2549), 1, + anon_sym_has, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2788), 1, + anon_sym_LBRACE, + STATE(1068), 1, + sym_annotation, + STATE(1312), 1, + sym_type_parameters, + STATE(1497), 1, + sym_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49241] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1069), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2790), 5, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_has, + anon_sym_LT, + [49263] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2792), 1, + anon_sym_AT, + STATE(1070), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2455), 4, + anon_sym_RPAREN, + anon_sym_PIPE, + anon_sym_if, + anon_sym_EQ_GT, + [49287] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(2794), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1071), 1, + sym_annotation, + ACTIONS(1171), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49315] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2353), 1, + anon_sym_LPAREN, + STATE(1072), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2349), 4, + anon_sym_public, + anon_sym_fun, + anon_sym_entry, + anon_sym_native, + [49339] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2796), 1, + sym_identifier, + STATE(1531), 1, + sym_spec_property, + ACTIONS(2799), 2, + anon_sym_SEMI, + anon_sym_RBRACK, + STATE(1073), 2, + sym_annotation, + aux_sym_condition_properties_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49365] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2801), 1, + sym_identifier, + ACTIONS(2804), 1, + anon_sym_RBRACE, + STATE(995), 1, + sym__variant_identifier, + STATE(1513), 1, + sym_variant, + STATE(1074), 2, + sym_annotation, + aux_sym_enum_variants_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49393] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2712), 1, + anon_sym_PIPE, + STATE(1075), 1, + sym_annotation, + STATE(1093), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49421] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2806), 1, + sym_identifier, + ACTIONS(2809), 1, + anon_sym_RBRACE, + STATE(1299), 1, + sym__field_identifier, + STATE(1496), 1, + sym_exp_field, + STATE(1076), 2, + sym_annotation, + aux_sym_field_initialize_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49449] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + STATE(1077), 1, + sym_annotation, + STATE(1244), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2811), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_except, + [49475] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2813), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1078), 1, + sym_annotation, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49503] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2549), 1, + anon_sym_has, + STATE(1079), 1, + sym_annotation, + STATE(1280), 1, + sym_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2815), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + [49529] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2817), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1080), 1, + sym_annotation, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49557] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2768), 1, + sym_identifier, + ACTIONS(2819), 1, + anon_sym_RBRACE, + STATE(1081), 1, + sym_annotation, + STATE(1114), 1, + aux_sym_field_initialize_list_repeat1, + STATE(1299), 1, + sym__field_identifier, + STATE(1334), 1, + sym_exp_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49587] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2712), 1, + anon_sym_PIPE, + STATE(1082), 1, + sym_annotation, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49615] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2813), 1, + anon_sym_PIPE, + STATE(1083), 1, + sym_annotation, + STATE(1125), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(2470), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49643] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2813), 1, + anon_sym_PIPE, + ACTIONS(2821), 1, + anon_sym_RPAREN, + STATE(1084), 1, + sym_annotation, + STATE(1125), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49671] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2817), 1, + anon_sym_PIPE, + STATE(1071), 1, + aux_sym_or_bind_list_repeat1, + STATE(1085), 1, + sym_annotation, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49699] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2823), 1, + anon_sym_RPAREN, + ACTIONS(2826), 1, + anon_sym_PIPE, + STATE(1086), 1, + sym_annotation, + STATE(1098), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1107), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49727] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(2725), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1087), 1, + sym_annotation, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49755] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(2829), 1, + anon_sym_PIPE, + STATE(1088), 1, + sym_annotation, + STATE(1098), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(2470), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49783] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1089), 1, + sym_annotation, + STATE(1182), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [49807] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2761), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1090), 1, + sym_annotation, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49835] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2639), 1, + sym_identifier, + ACTIONS(2641), 1, + anon_sym_DOLLAR, + ACTIONS(2645), 1, + anon_sym_phantom, + STATE(1091), 1, + sym_annotation, + STATE(1204), 1, + sym_type_parameter, + STATE(1206), 1, + sym__type_parameter_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49865] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2725), 1, + anon_sym_PIPE, + ACTIONS(2833), 1, + anon_sym_RPAREN, + STATE(1080), 1, + aux_sym_or_bind_list_repeat1, + STATE(1092), 1, + sym_annotation, + ACTIONS(1107), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49893] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(2826), 1, + anon_sym_PIPE, + STATE(1093), 1, + sym_annotation, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1107), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49921] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2836), 1, + anon_sym_PIPE, + STATE(1094), 1, + sym_annotation, + STATE(1106), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1182), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49949] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2588), 1, + anon_sym_LBRACE, + ACTIONS(2592), 1, + anon_sym_LPAREN, + STATE(858), 1, + sym_datatype_fields, + STATE(1095), 1, + sym_annotation, + STATE(857), 2, + sym_positional_fields, + sym_named_fields, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [49977] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2766), 1, + anon_sym_PIPE, + STATE(971), 1, + aux_sym_or_bind_list_repeat1, + STATE(1096), 1, + sym_annotation, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50005] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2766), 1, + anon_sym_PIPE, + STATE(1087), 1, + aux_sym_or_bind_list_repeat1, + STATE(1097), 1, + sym_annotation, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50033] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2836), 1, + anon_sym_PIPE, + STATE(1098), 1, + sym_annotation, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1182), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50061] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1099), 1, + sym_annotation, + STATE(1306), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [50085] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2761), 1, + anon_sym_PIPE, + STATE(1078), 1, + aux_sym_or_bind_list_repeat1, + STATE(1100), 1, + sym_annotation, + ACTIONS(1164), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50113] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + ACTIONS(2839), 1, + anon_sym_SEMI, + STATE(1101), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50141] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2841), 1, + sym_identifier, + ACTIONS(2843), 1, + anon_sym_RBRACK, + STATE(1102), 1, + sym_annotation, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1324), 1, + sym_annotation_item, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50171] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + STATE(1103), 1, + sym_annotation, + STATE(1274), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2845), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_except, + [50197] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2847), 1, + sym_identifier, + ACTIONS(2850), 1, + anon_sym_RBRACE, + STATE(1506), 1, + sym_field_annotation, + STATE(1534), 1, + sym__field_identifier, + STATE(1104), 2, + sym_annotation, + aux_sym_named_fields_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50225] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2852), 1, + anon_sym_RPAREN, + ACTIONS(2856), 1, + anon_sym_PIPE, + STATE(1096), 1, + aux_sym_or_bind_list_repeat1, + STATE(1105), 1, + sym_annotation, + ACTIONS(2481), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50253] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(2858), 1, + anon_sym_PIPE, + STATE(1106), 1, + sym_annotation, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1171), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50281] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2861), 1, + anon_sym_RPAREN, + ACTIONS(2863), 1, + anon_sym_PIPE, + STATE(1107), 1, + sym_annotation, + STATE(1113), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(2481), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50309] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2688), 1, + anon_sym_PIPE, + STATE(1108), 1, + sym_annotation, + STATE(1121), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50337] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2865), 1, + anon_sym_RPAREN, + ACTIONS(2867), 1, + anon_sym_PIPE, + STATE(1090), 1, + aux_sym_or_bind_list_repeat1, + STATE(1109), 1, + sym_annotation, + ACTIONS(2481), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50365] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1110), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2349), 5, + anon_sym_public, + anon_sym_fun, + anon_sym_entry, + anon_sym_native, + anon_sym_macro, + [50387] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2768), 1, + sym_identifier, + ACTIONS(2869), 1, + anon_sym_RBRACE, + STATE(1064), 1, + aux_sym_named_fields_repeat1, + STATE(1111), 1, + sym_annotation, + STATE(1357), 1, + sym_field_annotation, + STATE(1534), 1, + sym__field_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50417] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + ACTIONS(2871), 1, + anon_sym_SEMI, + STATE(1112), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50445] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1469), 1, + anon_sym_RPAREN, + ACTIONS(2688), 1, + anon_sym_PIPE, + STATE(1113), 1, + sym_annotation, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1164), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50473] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2768), 1, + sym_identifier, + ACTIONS(2873), 1, + anon_sym_RBRACE, + STATE(1076), 1, + aux_sym_field_initialize_list_repeat1, + STATE(1114), 1, + sym_annotation, + STATE(1299), 1, + sym__field_identifier, + STATE(1331), 1, + sym_exp_field, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50503] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2875), 1, + anon_sym_RPAREN, + ACTIONS(2877), 1, + anon_sym_PIPE, + STATE(1115), 1, + sym_annotation, + STATE(1130), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1107), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50531] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2877), 1, + anon_sym_PIPE, + STATE(1116), 1, + sym_annotation, + STATE(1130), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(2470), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50559] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + ACTIONS(2879), 1, + anon_sym_SEMI, + STATE(1117), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50587] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2841), 1, + sym_identifier, + ACTIONS(2881), 1, + anon_sym_RBRACK, + STATE(1118), 1, + sym_annotation, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1324), 1, + sym_annotation_item, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50617] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + ACTIONS(2883), 1, + anon_sym_SEMI, + STATE(1119), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50645] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2639), 1, + sym_identifier, + ACTIONS(2641), 1, + anon_sym_DOLLAR, + ACTIONS(2645), 1, + anon_sym_phantom, + STATE(1120), 1, + sym_annotation, + STATE(1206), 1, + sym__type_parameter_identifier, + STATE(1332), 1, + sym_type_parameter, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50675] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1471), 1, + anon_sym_RPAREN, + ACTIONS(2877), 1, + anon_sym_PIPE, + STATE(1121), 1, + sym_annotation, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1107), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50703] = 9, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2755), 1, + sym_identifier, + ACTIONS(2885), 1, + anon_sym_RBRACE, + STATE(995), 1, + sym__variant_identifier, + STATE(1060), 1, + aux_sym_enum_variants_repeat1, + STATE(1122), 1, + sym_annotation, + STATE(1358), 1, + sym_variant, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50733] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2663), 1, + anon_sym_public, + ACTIONS(2887), 1, + anon_sym_fun, + STATE(1123), 1, + sym_annotation, + STATE(1527), 1, + sym_modifier, + ACTIONS(1663), 2, + anon_sym_entry, + anon_sym_native, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50761] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1463), 1, + anon_sym_RPAREN, + ACTIONS(2889), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1124), 1, + sym_annotation, + ACTIONS(1171), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50789] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2891), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1125), 1, + sym_annotation, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50817] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2891), 1, + anon_sym_PIPE, + STATE(1124), 1, + aux_sym_or_bind_list_repeat1, + STATE(1126), 1, + sym_annotation, + ACTIONS(1182), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50845] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2893), 1, + anon_sym_PIPE, + STATE(1127), 2, + sym_annotation, + aux_sym_or_bind_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2368), 3, + anon_sym_RPAREN, + anon_sym_if, + anon_sym_EQ_GT, + [50869] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1128), 1, + sym_annotation, + STATE(1171), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [50893] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2896), 1, + anon_sym_PIPE, + STATE(1129), 1, + sym_annotation, + STATE(1131), 1, + aux_sym_or_bind_list_repeat1, + ACTIONS(1182), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50921] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1441), 1, + anon_sym_RPAREN, + ACTIONS(2896), 1, + anon_sym_PIPE, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + STATE(1130), 1, + sym_annotation, + ACTIONS(1182), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50949] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1463), 1, + anon_sym_RPAREN, + ACTIONS(2898), 1, + anon_sym_PIPE, + STATE(1127), 1, + aux_sym_or_bind_list_repeat1, + STATE(1131), 1, + sym_annotation, + ACTIONS(1171), 2, + anon_sym_if, + anon_sym_EQ_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [50977] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1132), 1, + sym_annotation, + STATE(1139), 1, + sym_ability, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2389), 4, + anon_sym_copy, + anon_sym_drop, + anon_sym_store, + anon_sym_key, + [51001] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1133), 1, + sym_annotation, + STATE(1356), 1, + sym_ret_type, + ACTIONS(2900), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51026] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1134), 1, + sym_annotation, + STATE(1363), 1, + sym_ret_type, + ACTIONS(2904), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51051] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2906), 1, + sym_identifier, + ACTIONS(2908), 1, + anon_sym_RBRACK, + STATE(1135), 1, + sym_annotation, + STATE(1192), 1, + aux_sym_condition_properties_repeat1, + STATE(1413), 1, + sym_spec_property, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51078] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2912), 1, + anon_sym_as, + STATE(1136), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2910), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [51101] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2914), 1, + anon_sym_COMMA, + STATE(1137), 1, + sym_annotation, + STATE(1188), 1, + aux_sym_quantifier_bindings_repeat1, + ACTIONS(2916), 2, + anon_sym_COLON, + anon_sym_where, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51126] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1138), 1, + sym_annotation, + STATE(1393), 1, + sym_ret_type, + ACTIONS(2918), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51151] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2922), 1, + anon_sym_PLUS, + STATE(1139), 1, + sym_annotation, + STATE(1166), 1, + aux_sym_type_parameter_repeat1, + ACTIONS(2920), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51176] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + STATE(1140), 1, + sym_annotation, + STATE(1247), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51201] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + STATE(1141), 1, + sym_annotation, + STATE(1303), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51226] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + ACTIONS(2916), 1, + anon_sym_COLON, + ACTIONS(2924), 1, + anon_sym_where, + STATE(1142), 1, + sym_annotation, + STATE(1202), 1, + sym_quantifier_binding, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51253] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1171), 1, + anon_sym_COMMA, + ACTIONS(1173), 1, + anon_sym_RPAREN, + ACTIONS(2926), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1143), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51280] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1182), 1, + anon_sym_COMMA, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2928), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1144), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51307] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1182), 1, + anon_sym_COMMA, + ACTIONS(1184), 1, + anon_sym_RPAREN, + ACTIONS(2928), 1, + anon_sym_PIPE, + STATE(1143), 1, + aux_sym_or_bind_list_repeat1, + STATE(1145), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51334] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1107), 1, + anon_sym_COMMA, + ACTIONS(1111), 1, + anon_sym_RPAREN, + ACTIONS(2930), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1146), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51361] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2470), 1, + anon_sym_COMMA, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(2930), 1, + anon_sym_PIPE, + STATE(1144), 1, + aux_sym_or_bind_list_repeat1, + STATE(1147), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51388] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2466), 1, + anon_sym_DOLLAR, + ACTIONS(2932), 1, + sym_identifier, + STATE(1148), 1, + sym_annotation, + STATE(1427), 1, + sym_function_parameter, + STATE(1465), 1, + sym__variable_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51415] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1107), 1, + anon_sym_COMMA, + ACTIONS(2930), 1, + anon_sym_PIPE, + ACTIONS(2934), 1, + anon_sym_RPAREN, + STATE(1144), 1, + aux_sym_or_bind_list_repeat1, + STATE(1149), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51442] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2939), 1, + anon_sym_EQ, + STATE(1150), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2937), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACK, + [51465] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1164), 1, + anon_sym_COMMA, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2941), 1, + anon_sym_PIPE, + STATE(986), 1, + aux_sym_or_bind_list_repeat1, + STATE(1151), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51492] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1164), 1, + anon_sym_COMMA, + ACTIONS(1166), 1, + anon_sym_RPAREN, + ACTIONS(2941), 1, + anon_sym_PIPE, + STATE(1146), 1, + aux_sym_or_bind_list_repeat1, + STATE(1152), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51519] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2481), 1, + anon_sym_COMMA, + ACTIONS(2943), 1, + anon_sym_RPAREN, + ACTIONS(2947), 1, + anon_sym_PIPE, + STATE(1151), 1, + aux_sym_or_bind_list_repeat1, + STATE(1153), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51546] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2949), 1, + anon_sym_AT, + STATE(1154), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2455), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_PIPE, + [51569] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2906), 1, + sym_identifier, + ACTIONS(2951), 1, + anon_sym_SEMI, + STATE(1073), 1, + aux_sym_condition_properties_repeat1, + STATE(1155), 1, + sym_annotation, + STATE(1402), 1, + sym_spec_property, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51596] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2953), 1, + anon_sym_SEMI, + ACTIONS(2955), 1, + anon_sym_COMMA, + ACTIONS(2957), 1, + anon_sym_except, + STATE(1156), 1, + sym_annotation, + STATE(1157), 1, + aux_sym_spec_apply_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51623] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2696), 1, + anon_sym_SEMI, + ACTIONS(2959), 1, + anon_sym_COMMA, + ACTIONS(2961), 1, + anon_sym_except, + STATE(1157), 1, + sym_annotation, + STATE(1168), 1, + aux_sym_spec_apply_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51650] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + STATE(1158), 1, + sym_annotation, + STATE(1248), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51675] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2963), 1, + anon_sym_PLUS, + STATE(1159), 1, + sym_annotation, + STATE(1174), 1, + aux_sym_type_parameter_repeat1, + ACTIONS(2538), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51700] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2965), 1, + anon_sym_DASH_GT, + STATE(1160), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1085), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_where, + [51723] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(881), 1, + anon_sym_LPAREN, + STATE(414), 1, + sym_arg_list, + STATE(1161), 1, + sym_annotation, + STATE(1345), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51750] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2967), 1, + anon_sym_COMMA, + STATE(1137), 1, + aux_sym_quantifier_bindings_repeat1, + STATE(1162), 1, + sym_annotation, + ACTIONS(2969), 2, + anon_sym_COLON, + anon_sym_where, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51775] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1163), 1, + sym_annotation, + STATE(1417), 1, + sym_ret_type, + ACTIONS(2971), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51800] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1164), 1, + sym_annotation, + STATE(1414), 1, + sym_ret_type, + ACTIONS(2973), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51825] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2975), 1, + anon_sym_COMMA, + STATE(1165), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2406), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + [51848] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2977), 1, + anon_sym_PLUS, + STATE(1166), 1, + sym_annotation, + STATE(1174), 1, + aux_sym_type_parameter_repeat1, + ACTIONS(2583), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51873] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1167), 1, + sym_annotation, + STATE(1392), 1, + sym_ret_type, + ACTIONS(2979), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51898] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2983), 1, + anon_sym_COMMA, + ACTIONS(2981), 2, + anon_sym_SEMI, + anon_sym_except, + STATE(1168), 2, + sym_annotation, + aux_sym_spec_apply_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51921] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + STATE(1169), 1, + sym_annotation, + STATE(1272), 1, + sym_spec_apply_pattern, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51946] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2841), 1, + sym_identifier, + STATE(1170), 1, + sym_annotation, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + STATE(1324), 1, + sym_annotation_item, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51973] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2977), 1, + anon_sym_PLUS, + STATE(1171), 1, + sym_annotation, + STATE(1178), 1, + aux_sym_type_parameter_repeat1, + ACTIONS(2583), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [51998] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1172), 1, + sym_annotation, + ACTIONS(2504), 2, + anon_sym_RPAREN, + anon_sym_DOLLAR, + ACTIONS(2986), 2, + anon_sym_mut, + sym_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52021] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1173), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2988), 4, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_LPAREN, + [52042] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2992), 1, + anon_sym_PLUS, + ACTIONS(2990), 2, + anon_sym_COMMA, + anon_sym_GT, + STATE(1174), 2, + sym_annotation, + aux_sym_type_parameter_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52065] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1164), 1, + sym_function_parameters, + STATE(1175), 1, + sym_annotation, + STATE(1365), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52092] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1176), 1, + sym_annotation, + STATE(1364), 1, + sym_ret_type, + ACTIONS(2997), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52117] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1167), 1, + sym_function_parameters, + STATE(1177), 1, + sym_annotation, + STATE(1368), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52144] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2999), 1, + anon_sym_PLUS, + STATE(1174), 1, + aux_sym_type_parameter_repeat1, + STATE(1178), 1, + sym_annotation, + ACTIONS(2536), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52169] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1179), 1, + sym_annotation, + STATE(1281), 1, + sym_function_parameters, + STATE(1349), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52196] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2514), 1, + anon_sym_COMMA, + ACTIONS(2941), 1, + anon_sym_PIPE, + ACTIONS(3001), 1, + anon_sym_RPAREN, + STATE(1146), 1, + aux_sym_or_bind_list_repeat1, + STATE(1180), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52223] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2975), 1, + anon_sym_COMMA, + STATE(1181), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3004), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + [52246] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2999), 1, + anon_sym_PLUS, + STATE(1159), 1, + aux_sym_type_parameter_repeat1, + STATE(1182), 1, + sym_annotation, + ACTIONS(2536), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52271] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(11), 1, + anon_sym_module, + ACTIONS(3006), 1, + ts_builtin_sym_end, + STATE(1183), 1, + sym_annotation, + STATE(1190), 1, + aux_sym_source_file_repeat1, + STATE(1366), 1, + sym_module_definition, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52298] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1184), 1, + sym_annotation, + STATE(1325), 1, + sym_function_parameters, + STATE(1326), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52325] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2629), 1, + sym_spec_apply_name_pattern, + STATE(1156), 1, + sym_spec_apply_pattern, + STATE(1185), 1, + sym_annotation, + ACTIONS(2623), 2, + anon_sym_public, + anon_sym_internal, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52350] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1186), 1, + sym_annotation, + STATE(1431), 1, + sym_ret_type, + ACTIONS(3008), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52375] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2906), 1, + sym_identifier, + ACTIONS(3010), 1, + anon_sym_SEMI, + STATE(1155), 1, + aux_sym_condition_properties_repeat1, + STATE(1187), 1, + sym_annotation, + STATE(1346), 1, + sym_spec_property, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52402] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3012), 1, + anon_sym_COMMA, + ACTIONS(3015), 2, + anon_sym_COLON, + anon_sym_where, + STATE(1188), 2, + sym_annotation, + aux_sym_quantifier_bindings_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52425] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(819), 1, + sym_identifier, + ACTIONS(3017), 1, + anon_sym_COLON, + ACTIONS(3019), 1, + anon_sym_where, + STATE(1189), 1, + sym_annotation, + STATE(1202), 1, + sym_quantifier_binding, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52452] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3021), 1, + ts_builtin_sym_end, + ACTIONS(3023), 1, + anon_sym_module, + STATE(1366), 1, + sym_module_definition, + STATE(1190), 2, + sym_annotation, + aux_sym_source_file_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52477] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2597), 1, + anon_sym_LPAREN, + ACTIONS(2599), 1, + anon_sym_EQ, + STATE(1191), 1, + sym_annotation, + ACTIONS(3026), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52502] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2906), 1, + sym_identifier, + ACTIONS(3028), 1, + anon_sym_RBRACK, + STATE(1073), 1, + aux_sym_condition_properties_repeat1, + STATE(1192), 1, + sym_annotation, + STATE(1351), 1, + sym_spec_property, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52529] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2841), 1, + sym_identifier, + STATE(1193), 1, + sym_annotation, + STATE(1212), 1, + sym_annotation_item, + STATE(1214), 1, + sym_annotation_list, + STATE(1221), 1, + sym_annotation_expr, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52556] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1194), 1, + sym_annotation, + STATE(1239), 1, + sym_function_parameters, + STATE(1421), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52583] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1176), 1, + sym_function_parameters, + STATE(1195), 1, + sym_annotation, + STATE(1377), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52610] = 8, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1138), 1, + sym_function_parameters, + STATE(1196), 1, + sym_annotation, + STATE(1385), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52637] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3032), 1, + anon_sym_RBRACE, + STATE(1197), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52661] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3034), 1, + anon_sym_COMMA, + ACTIONS(3036), 1, + anon_sym_GT, + STATE(1198), 1, + sym_annotation, + STATE(1286), 1, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52685] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3038), 1, + anon_sym_AT, + STATE(1199), 1, + sym_annotation, + ACTIONS(2455), 2, + anon_sym_COMMA, + anon_sym_COLON, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52707] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1200), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3040), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_GT, + [52727] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(3042), 1, + anon_sym_COLON_COLON, + STATE(1201), 1, + sym_annotation, + STATE(1480), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52751] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1202), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3015), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_where, + [52771] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1203), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(1923), 3, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_where, + [52791] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3044), 1, + anon_sym_COMMA, + ACTIONS(3046), 1, + anon_sym_GT, + STATE(1204), 1, + sym_annotation, + STATE(1234), 1, + aux_sym_type_parameters_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52815] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3048), 1, + anon_sym_SEMI, + ACTIONS(3050), 1, + anon_sym_COMMA, + STATE(1205), 1, + sym_annotation, + STATE(1277), 1, + aux_sym__spec_abort_with_or_modifies_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52839] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3054), 1, + anon_sym_COLON, + STATE(1206), 1, + sym_annotation, + ACTIONS(3052), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52861] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1184), 1, + sym__function_identifier, + STATE(1207), 1, + sym_annotation, + STATE(1213), 1, + sym__spec_function_signature, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52885] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3058), 1, + anon_sym_AT, + STATE(1208), 1, + sym_annotation, + ACTIONS(2455), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52907] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1209), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2799), 3, + anon_sym_SEMI, + anon_sym_RBRACK, + sym_identifier, + [52927] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3060), 1, + anon_sym_COMMA, + ACTIONS(3062), 1, + anon_sym_GT, + STATE(1210), 1, + sym_annotation, + STATE(1217), 1, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52951] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1211), 1, + sym_annotation, + STATE(1416), 1, + sym_module_body, + ACTIONS(3064), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52973] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3066), 1, + anon_sym_COMMA, + ACTIONS(3068), 1, + anon_sym_RBRACK, + STATE(1212), 1, + sym_annotation, + STATE(1230), 1, + aux_sym_annotation_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [52997] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(21), 1, + anon_sym_LBRACE, + ACTIONS(3070), 1, + anon_sym_SEMI, + STATE(238), 1, + sym_block, + STATE(1213), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53021] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1214), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3072), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [53041] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1215), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3074), 3, + anon_sym_LBRACE, + anon_sym_has, + anon_sym_LT, + [53061] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(3076), 1, + anon_sym_COLON_COLON, + STATE(1216), 1, + sym_annotation, + STATE(1544), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53085] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1081), 1, + anon_sym_GT, + ACTIONS(3078), 1, + anon_sym_COMMA, + STATE(1217), 1, + sym_annotation, + STATE(1284), 1, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53109] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3080), 1, + anon_sym_RBRACE, + STATE(1218), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53133] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1219), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3082), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [53153] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1220), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3084), 3, + anon_sym_SEMI, + anon_sym_LPAREN, + anon_sym_LT, + [53173] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1221), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3086), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [53193] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3088), 1, + anon_sym_SEMI, + ACTIONS(3090), 1, + anon_sym_as, + ACTIONS(3092), 1, + anon_sym_COLON_COLON, + STATE(1222), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53217] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(3094), 1, + anon_sym_COLON, + STATE(1223), 1, + sym_annotation, + STATE(1530), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53241] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3096), 1, + anon_sym_COMMA, + ACTIONS(3098), 1, + anon_sym_RBRACE, + STATE(1224), 1, + sym_annotation, + STATE(1235), 1, + aux_sym_use_module_members_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53265] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1225), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3100), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [53285] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1065), 1, + anon_sym_GT, + ACTIONS(3102), 1, + anon_sym_COMMA, + STATE(1226), 1, + sym_annotation, + STATE(1284), 1, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53309] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + ACTIONS(3104), 1, + anon_sym_LBRACE, + STATE(1227), 1, + sym_annotation, + STATE(1538), 1, + sym_ret_type, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53333] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1228), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3106), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [53353] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2639), 1, + sym_identifier, + ACTIONS(3108), 1, + anon_sym_phantom, + STATE(1229), 1, + sym_annotation, + STATE(1237), 1, + sym__type_parameter_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53377] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2843), 1, + anon_sym_RBRACK, + ACTIONS(3110), 1, + anon_sym_COMMA, + STATE(1230), 1, + sym_annotation, + STATE(1302), 1, + aux_sym_annotation_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53401] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3112), 1, + anon_sym_COMMA, + ACTIONS(3114), 1, + anon_sym_GT, + STATE(1226), 1, + aux_sym_type_arguments_repeat1, + STATE(1231), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53425] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1184), 1, + sym__function_identifier, + STATE(1232), 1, + sym_annotation, + STATE(1525), 1, + sym__spec_function_signature, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53449] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(3116), 1, + anon_sym_LBRACE, + STATE(1233), 1, + sym_annotation, + STATE(1521), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53473] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2715), 1, + anon_sym_GT, + ACTIONS(3118), 1, + anon_sym_COMMA, + STATE(1234), 1, + sym_annotation, + STATE(1276), 1, + aux_sym_type_parameters_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53497] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3120), 1, + anon_sym_COMMA, + ACTIONS(3123), 1, + anon_sym_RBRACE, + STATE(1235), 2, + sym_annotation, + aux_sym_use_module_members_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53519] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3125), 1, + anon_sym_COMMA, + ACTIONS(3127), 1, + anon_sym_RBRACE, + STATE(1224), 1, + aux_sym_use_module_members_repeat1, + STATE(1236), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53543] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3131), 1, + anon_sym_COLON, + STATE(1237), 1, + sym_annotation, + ACTIONS(3129), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53565] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3133), 1, + anon_sym_RBRACE, + STATE(1238), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53589] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + ACTIONS(3135), 1, + anon_sym_LBRACE, + STATE(1239), 1, + sym_annotation, + STATE(1536), 1, + sym_ret_type, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53613] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1240), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3137), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + [53633] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3141), 1, + anon_sym_COLON, + STATE(1241), 1, + sym_annotation, + ACTIONS(3139), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53655] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1242), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3143), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + [53675] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1243), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3145), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COLON, + [53695] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1244), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3147), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_except, + [53715] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3149), 1, + anon_sym_SEMI, + ACTIONS(3151), 1, + anon_sym_EQ, + ACTIONS(3153), 1, + anon_sym_COLON, + STATE(1245), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53739] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1061), 1, + anon_sym_GT, + ACTIONS(3155), 1, + anon_sym_COMMA, + STATE(1246), 1, + sym_annotation, + STATE(1284), 1, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53763] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1247), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2981), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_except, + [53783] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2625), 1, + anon_sym_SEMI, + ACTIONS(3157), 1, + anon_sym_COMMA, + STATE(1248), 1, + sym_annotation, + STATE(1275), 1, + aux_sym_spec_apply_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53807] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1249), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3159), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [53827] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1250), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3161), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [53847] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1251), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3163), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_COLON, + [53867] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3165), 1, + anon_sym_COMMA, + ACTIONS(3167), 1, + anon_sym_RPAREN, + STATE(1252), 1, + sym_annotation, + STATE(1269), 1, + aux_sym_annotation_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53891] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1947), 1, + anon_sym_RPAREN, + ACTIONS(3169), 1, + anon_sym_COMMA, + STATE(1253), 2, + sym_annotation, + aux_sym_expression_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53913] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(535), 1, + anon_sym_RPAREN, + ACTIONS(3172), 1, + anon_sym_COMMA, + STATE(1253), 1, + aux_sym_expression_list_repeat1, + STATE(1254), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53937] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3174), 1, + anon_sym_COMMA, + ACTIONS(3176), 1, + anon_sym_RPAREN, + STATE(1255), 1, + sym_annotation, + STATE(1269), 1, + aux_sym_annotation_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53961] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3178), 1, + anon_sym_COMMA, + ACTIONS(3180), 1, + anon_sym_GT, + STATE(1256), 1, + sym_annotation, + STATE(1309), 1, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [53985] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1257), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3182), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [54005] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3184), 1, + anon_sym_SEMI, + ACTIONS(3186), 1, + anon_sym_LBRACE, + STATE(831), 1, + sym_block, + STATE(1258), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54029] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1259), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3188), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + [54049] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1260), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3190), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [54069] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3192), 1, + anon_sym_COMMA, + ACTIONS(3194), 1, + anon_sym_RPAREN, + STATE(1252), 1, + aux_sym_annotation_list_repeat1, + STATE(1261), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54093] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1262), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3196), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [54113] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(21), 1, + anon_sym_LBRACE, + ACTIONS(3198), 1, + anon_sym_SEMI, + STATE(885), 1, + sym_block, + STATE(1263), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54137] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3200), 1, + anon_sym_COLON, + STATE(1264), 1, + sym_annotation, + ACTIONS(3139), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54159] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3202), 1, + anon_sym_COMMA, + ACTIONS(3204), 1, + anon_sym_GT, + STATE(1246), 1, + aux_sym_type_arguments_repeat1, + STATE(1265), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54183] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3206), 1, + anon_sym_if, + ACTIONS(3208), 1, + anon_sym_EQ_GT, + STATE(1266), 1, + sym_annotation, + STATE(1551), 1, + sym_match_condition, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54207] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1267), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3210), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [54227] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3212), 1, + anon_sym_RBRACE, + STATE(1268), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54251] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3214), 1, + anon_sym_COMMA, + ACTIONS(3217), 1, + anon_sym_RPAREN, + STATE(1269), 2, + sym_annotation, + aux_sym_annotation_list_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54273] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1270), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3219), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [54293] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3221), 1, + anon_sym_COMMA, + ACTIONS(3223), 1, + anon_sym_RBRACE, + STATE(1271), 1, + sym_annotation, + STATE(1310), 1, + aux_sym_use_module_members_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54317] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2839), 1, + anon_sym_SEMI, + ACTIONS(3225), 1, + anon_sym_COMMA, + STATE(1272), 1, + sym_annotation, + STATE(1301), 1, + aux_sym_spec_apply_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54341] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1273), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3227), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACK, + [54361] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1274), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3229), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_except, + [54381] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2839), 1, + anon_sym_SEMI, + ACTIONS(3225), 1, + anon_sym_COMMA, + STATE(1168), 1, + aux_sym_spec_apply_repeat1, + STATE(1275), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54405] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3231), 1, + anon_sym_COMMA, + ACTIONS(3234), 1, + anon_sym_GT, + STATE(1276), 2, + sym_annotation, + aux_sym_type_parameters_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54427] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3236), 1, + anon_sym_SEMI, + ACTIONS(3238), 1, + anon_sym_COMMA, + STATE(1277), 2, + sym_annotation, + aux_sym__spec_abort_with_or_modifies_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54449] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2551), 1, + anon_sym_LT, + ACTIONS(3241), 1, + anon_sym_COLON, + STATE(1278), 1, + sym_annotation, + STATE(1503), 1, + sym_type_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54473] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3243), 1, + anon_sym_SEMI, + ACTIONS(3245), 1, + anon_sym_COMMA, + STATE(1277), 1, + aux_sym__spec_abort_with_or_modifies_repeat1, + STATE(1279), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54497] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1280), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3247), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + [54517] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + ACTIONS(3249), 1, + anon_sym_LBRACE, + STATE(1281), 1, + sym_annotation, + STATE(1460), 1, + sym_ret_type, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54541] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3251), 1, + anon_sym_COMMA, + ACTIONS(3253), 1, + anon_sym_RBRACE, + STATE(1282), 1, + sym_annotation, + STATE(1314), 1, + aux_sym_use_module_members_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54565] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(3255), 1, + anon_sym_COLON_COLON, + STATE(1283), 1, + sym_annotation, + STATE(1505), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54589] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3257), 1, + anon_sym_COMMA, + ACTIONS(3260), 1, + anon_sym_GT, + STATE(1284), 2, + sym_annotation, + aux_sym_type_arguments_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54611] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + ACTIONS(3262), 1, + anon_sym_LBRACE, + STATE(1285), 1, + sym_annotation, + STATE(1453), 1, + sym_ret_type, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54635] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1067), 1, + anon_sym_GT, + ACTIONS(3264), 1, + anon_sym_COMMA, + STATE(1284), 1, + aux_sym_type_arguments_repeat1, + STATE(1286), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54659] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1287), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3266), 3, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_RPAREN, + [54679] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1288), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3268), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [54699] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1289), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3270), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COLON, + [54719] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3272), 1, + anon_sym_LBRACE, + STATE(1290), 1, + sym_annotation, + STATE(1493), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54743] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2723), 1, + sym_identifier, + ACTIONS(3274), 1, + anon_sym_LBRACE, + STATE(255), 1, + sym__module_identifier, + STATE(1291), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54767] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1184), 1, + sym__function_identifier, + STATE(1292), 1, + sym_annotation, + STATE(1500), 1, + sym__spec_function_signature, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54791] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3276), 1, + anon_sym_DASH_GT, + STATE(1293), 1, + sym_annotation, + ACTIONS(1085), 2, + anon_sym_COMMA, + anon_sym_PIPE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54813] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1294), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3278), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [54833] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3280), 1, + anon_sym_COMMA, + ACTIONS(3282), 1, + anon_sym_RPAREN, + STATE(1255), 1, + aux_sym_annotation_list_repeat1, + STATE(1295), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54857] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3286), 1, + anon_sym_COLON, + STATE(1296), 1, + sym_annotation, + ACTIONS(3284), 2, + anon_sym_COMMA, + anon_sym_PIPE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54879] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1297), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3288), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [54899] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1184), 1, + sym__function_identifier, + STATE(1258), 1, + sym__spec_function_signature, + STATE(1298), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54923] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3292), 1, + anon_sym_COLON, + STATE(1299), 1, + sym_annotation, + ACTIONS(3290), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54945] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1300), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3294), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [54965] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2871), 1, + anon_sym_SEMI, + ACTIONS(3296), 1, + anon_sym_COMMA, + STATE(1168), 1, + aux_sym_spec_apply_repeat1, + STATE(1301), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [54989] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3298), 1, + anon_sym_COMMA, + ACTIONS(3301), 1, + anon_sym_RBRACK, + STATE(1302), 2, + sym_annotation, + aux_sym_annotation_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55011] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2871), 1, + anon_sym_SEMI, + ACTIONS(3296), 1, + anon_sym_COMMA, + STATE(1303), 1, + sym_annotation, + STATE(1305), 1, + aux_sym_spec_apply_repeat1, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55035] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1304), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3303), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [55055] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2879), 1, + anon_sym_SEMI, + ACTIONS(3305), 1, + anon_sym_COMMA, + STATE(1168), 1, + aux_sym_spec_apply_repeat1, + STATE(1305), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55079] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1306), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(2990), 3, + anon_sym_COMMA, + anon_sym_GT, + anon_sym_PLUS, + [55099] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3307), 1, + anon_sym_COLON, + STATE(1307), 1, + sym_annotation, + ACTIONS(2920), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55121] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1308), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3309), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COLON, + [55141] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1057), 1, + anon_sym_GT, + ACTIONS(3311), 1, + anon_sym_COMMA, + STATE(1284), 1, + aux_sym_type_arguments_repeat1, + STATE(1309), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55165] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3313), 1, + anon_sym_COMMA, + ACTIONS(3315), 1, + anon_sym_RBRACE, + STATE(1235), 1, + aux_sym_use_module_members_repeat1, + STATE(1310), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55189] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3317), 1, + anon_sym_RBRACE, + STATE(1311), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55213] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2549), 1, + anon_sym_has, + ACTIONS(3319), 1, + anon_sym_LBRACE, + STATE(1312), 1, + sym_annotation, + STATE(1532), 1, + sym_ability_decls, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55237] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1313), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3321), 3, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RBRACE, + [55257] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3323), 1, + anon_sym_COMMA, + ACTIONS(3325), 1, + anon_sym_RBRACE, + STATE(1235), 1, + aux_sym_use_module_members_repeat1, + STATE(1314), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55281] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + ACTIONS(3327), 1, + anon_sym_RBRACE, + STATE(1315), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55305] = 7, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(711), 1, + anon_sym_LT, + ACTIONS(3329), 1, + anon_sym_COLON_COLON, + STATE(1316), 1, + sym_annotation, + STATE(1505), 1, + sym_type_arguments, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55329] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1317), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + ACTIONS(3331), 3, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_LPAREN, + [55349] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2563), 1, + anon_sym_COMMA, + ACTIONS(3333), 1, + anon_sym_RPAREN, + STATE(1318), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55370] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3335), 1, + anon_sym_COLON, + ACTIONS(3337), 1, + anon_sym_where, + STATE(1319), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55391] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1320), 1, + sym_annotation, + ACTIONS(3339), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55410] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3341), 1, + sym_identifier, + STATE(279), 1, + sym__module_identifier, + STATE(1321), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55431] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3345), 1, + anon_sym_PIPE, + STATE(1322), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55452] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1323), 1, + sym_annotation, + STATE(1454), 1, + sym__function_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55473] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1324), 1, + sym_annotation, + ACTIONS(3301), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55492] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1325), 1, + sym_annotation, + STATE(1420), 1, + sym_ret_type, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55513] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1326), 1, + sym_annotation, + STATE(1419), 1, + sym_function_parameters, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55534] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1035), 1, + anon_sym_RPAREN, + ACTIONS(3343), 1, + anon_sym_COMMA, + STATE(1327), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55555] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3347), 1, + anon_sym_COMMA, + ACTIONS(3349), 1, + anon_sym_RBRACE, + STATE(1328), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55576] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1329), 1, + sym_annotation, + ACTIONS(3351), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55595] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + STATE(1236), 1, + sym_use_member, + STATE(1330), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55616] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3353), 1, + anon_sym_COMMA, + ACTIONS(3355), 1, + anon_sym_RBRACE, + STATE(1331), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55637] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1332), 1, + sym_annotation, + ACTIONS(3234), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55656] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1435), 1, + anon_sym_RBRACE, + ACTIONS(3347), 1, + anon_sym_COMMA, + STATE(1333), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55677] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2873), 1, + anon_sym_RBRACE, + ACTIONS(3353), 1, + anon_sym_COMMA, + STATE(1334), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55698] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1196), 1, + sym__function_identifier, + STATE(1335), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55719] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1336), 1, + sym_annotation, + ACTIONS(1681), 2, + ts_builtin_sym_end, + anon_sym_module, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55738] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2975), 1, + anon_sym_COMMA, + ACTIONS(3357), 1, + anon_sym_SEMI, + STATE(1337), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55759] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + STATE(1282), 1, + sym_use_member, + STATE(1338), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55780] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3359), 1, + sym_identifier, + STATE(1068), 1, + sym__enum_identifier, + STATE(1339), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55801] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3361), 1, + sym_identifier, + STATE(984), 1, + sym__struct_identifier, + STATE(1340), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55822] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3363), 1, + anon_sym_COLON, + ACTIONS(3365), 1, + anon_sym_in, + STATE(1341), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55843] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3367), 1, + anon_sym_COLON, + ACTIONS(3369), 1, + anon_sym_where, + STATE(1342), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55864] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1041), 1, + anon_sym_RPAREN, + ACTIONS(3343), 1, + anon_sym_COMMA, + STATE(1343), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55885] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1344), 1, + sym_annotation, + ACTIONS(3371), 2, + anon_sym_LPAREN, + anon_sym_LT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55904] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(881), 1, + anon_sym_LPAREN, + STATE(417), 1, + sym_arg_list, + STATE(1345), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55925] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2951), 1, + anon_sym_SEMI, + ACTIONS(3373), 1, + anon_sym_COMMA, + STATE(1346), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55946] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1347), 1, + sym_annotation, + ACTIONS(3375), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55965] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3284), 1, + anon_sym_COMMA, + ACTIONS(3377), 1, + anon_sym_COLON, + STATE(1348), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [55986] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1227), 1, + sym_function_parameters, + STATE(1349), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56007] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3379), 1, + anon_sym_COMMA, + ACTIONS(3381), 1, + anon_sym_PIPE, + STATE(1350), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56028] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3373), 1, + anon_sym_COMMA, + ACTIONS(3383), 1, + anon_sym_RBRACK, + STATE(1351), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56049] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1731), 1, + anon_sym_RPAREN, + ACTIONS(2563), 1, + anon_sym_COMMA, + STATE(1352), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56070] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3385), 1, + anon_sym_COLON, + ACTIONS(3387), 1, + anon_sym_where, + STATE(1353), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56091] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1645), 1, + anon_sym_PIPE, + ACTIONS(3379), 1, + anon_sym_COMMA, + STATE(1354), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56112] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3389), 1, + anon_sym_COMMA, + ACTIONS(3391), 1, + anon_sym_RBRACE, + STATE(1355), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56133] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1356), 1, + sym_annotation, + ACTIONS(3393), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56152] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2770), 1, + anon_sym_RBRACE, + ACTIONS(3395), 1, + anon_sym_COMMA, + STATE(1357), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56173] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2757), 1, + anon_sym_RBRACE, + ACTIONS(3389), 1, + anon_sym_COMMA, + STATE(1358), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56194] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1195), 1, + sym__function_identifier, + STATE(1359), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56215] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(21), 1, + anon_sym_LBRACE, + STATE(873), 1, + sym_block, + STATE(1360), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56236] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3397), 1, + sym_identifier, + STATE(255), 1, + sym__module_identifier, + STATE(1361), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56257] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3399), 1, + anon_sym_LBRACE, + STATE(859), 1, + sym_enum_variants, + STATE(1362), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56278] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1363), 1, + sym_annotation, + ACTIONS(3401), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56297] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1364), 1, + sym_annotation, + ACTIONS(3403), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56316] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1133), 1, + sym_function_parameters, + STATE(1365), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56337] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1366), 1, + sym_annotation, + ACTIONS(3405), 2, + ts_builtin_sym_end, + anon_sym_module, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56356] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2932), 1, + sym_identifier, + STATE(929), 1, + sym__variable_identifier, + STATE(1367), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56377] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1134), 1, + sym_function_parameters, + STATE(1368), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56398] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3407), 1, + sym_identifier, + ACTIONS(3409), 1, + anon_sym_post, + STATE(1369), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56419] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(887), 1, + anon_sym_RPAREN, + ACTIONS(3343), 1, + anon_sym_COMMA, + STATE(1370), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56440] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1371), 1, + sym_annotation, + ACTIONS(3411), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56459] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3413), 1, + sym_identifier, + STATE(255), 1, + sym__module_identifier, + STATE(1372), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56480] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + STATE(1373), 1, + sym_annotation, + STATE(1435), 1, + sym_use_member, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56501] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3415), 1, + anon_sym_PIPE, + STATE(1374), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56522] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1194), 1, + sym__function_identifier, + STATE(1375), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56543] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1017), 1, + anon_sym_RBRACE, + ACTIONS(3417), 1, + anon_sym_COMMA, + STATE(1376), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56564] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1163), 1, + sym_function_parameters, + STATE(1377), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56585] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1015), 1, + anon_sym_RPAREN, + ACTIONS(3417), 1, + anon_sym_COMMA, + STATE(1378), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56606] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3419), 1, + anon_sym_RPAREN, + STATE(1379), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56627] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3421), 1, + anon_sym_SEMI, + ACTIONS(3423), 1, + anon_sym_EQ, + STATE(1380), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56648] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1381), 1, + sym_annotation, + ACTIONS(3425), 2, + anon_sym_COMMA, + anon_sym_PIPE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56667] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1382), 1, + sym_annotation, + ACTIONS(3427), 2, + anon_sym_friend, + anon_sym_package, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56686] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3429), 1, + sym_identifier, + STATE(1202), 1, + sym_quantifier_binding, + STATE(1383), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56707] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1671), 1, + anon_sym_struct, + STATE(1384), 1, + sym_annotation, + STATE(1482), 1, + sym__struct_signature, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56728] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1186), 1, + sym_function_parameters, + STATE(1385), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56749] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3399), 1, + anon_sym_LBRACE, + STATE(867), 1, + sym_enum_variants, + STATE(1386), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56770] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2723), 1, + sym_identifier, + STATE(1387), 1, + sym_annotation, + STATE(1542), 1, + sym__module_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56791] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3030), 1, + sym_identifier, + STATE(1271), 1, + sym_use_member, + STATE(1388), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56812] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(697), 1, + anon_sym_COLON_COLON, + ACTIONS(3431), 1, + anon_sym_SEMI, + STATE(1389), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56833] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3433), 1, + anon_sym_RPAREN, + STATE(1390), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56854] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3435), 1, + anon_sym_PIPE, + STATE(1391), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56875] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1392), 1, + sym_annotation, + ACTIONS(3437), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56894] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1393), 1, + sym_annotation, + ACTIONS(3439), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56913] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1175), 1, + sym__function_identifier, + STATE(1394), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56934] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3441), 1, + anon_sym_RPAREN, + STATE(1395), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56955] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2932), 1, + sym_identifier, + STATE(1396), 1, + sym_annotation, + STATE(1455), 1, + sym__variable_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56976] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1397), 1, + sym_annotation, + ACTIONS(2804), 2, + anon_sym_RBRACE, + sym_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [56995] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3417), 1, + anon_sym_COMMA, + ACTIONS(3443), 1, + anon_sym_RPAREN, + STATE(1398), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57016] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + ACTIONS(3445), 1, + anon_sym_PIPE, + STATE(1399), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57037] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1179), 1, + sym__function_identifier, + STATE(1400), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57058] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3417), 1, + anon_sym_COMMA, + ACTIONS(3447), 1, + anon_sym_RBRACE, + STATE(1401), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57079] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3373), 1, + anon_sym_COMMA, + ACTIONS(3449), 1, + anon_sym_SEMI, + STATE(1402), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57100] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3395), 1, + anon_sym_COMMA, + ACTIONS(3451), 1, + anon_sym_RBRACE, + STATE(1403), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57121] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2526), 1, + anon_sym_RPAREN, + ACTIONS(3453), 1, + anon_sym_COMMA, + STATE(1404), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57142] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(21), 1, + anon_sym_LBRACE, + STATE(872), 1, + sym_block, + STATE(1405), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57163] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3455), 1, + sym_identifier, + STATE(255), 1, + sym__module_identifier, + STATE(1406), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57184] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1407), 1, + sym_annotation, + ACTIONS(3260), 2, + anon_sym_COMMA, + anon_sym_GT, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57203] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1408), 1, + sym_annotation, + ACTIONS(3457), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57222] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3459), 1, + anon_sym_COLON, + ACTIONS(3461), 1, + anon_sym_where, + STATE(1409), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57243] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2723), 1, + sym_identifier, + STATE(255), 1, + sym__module_identifier, + STATE(1410), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57264] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1411), 1, + sym_annotation, + ACTIONS(2850), 2, + anon_sym_RBRACE, + sym_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57283] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3463), 1, + anon_sym_LBRACE, + STATE(435), 1, + sym__match_body, + STATE(1412), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57304] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3028), 1, + anon_sym_RBRACK, + ACTIONS(3373), 1, + anon_sym_COMMA, + STATE(1413), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57325] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1414), 1, + sym_annotation, + ACTIONS(3465), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57344] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3361), 1, + sym_identifier, + STATE(1233), 1, + sym__struct_identifier, + STATE(1415), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57365] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1416), 1, + sym_annotation, + ACTIONS(3467), 2, + ts_builtin_sym_end, + anon_sym_module, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57384] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1417), 1, + sym_annotation, + ACTIONS(3469), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57403] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1418), 1, + sym_annotation, + ACTIONS(2809), 2, + anon_sym_RBRACE, + sym_identifier, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57422] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2902), 1, + anon_sym_COLON, + STATE(1347), 1, + sym_ret_type, + STATE(1419), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57443] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1420), 1, + sym_annotation, + ACTIONS(3471), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57462] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2995), 1, + anon_sym_LPAREN, + STATE(1285), 1, + sym_function_parameters, + STATE(1421), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57483] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3473), 1, + anon_sym_COLON, + ACTIONS(3475), 1, + anon_sym_where, + STATE(1422), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57504] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1423), 1, + sym_annotation, + ACTIONS(3477), 2, + anon_sym_COMMA, + anon_sym_PIPE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57523] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3479), 1, + sym_identifier, + STATE(279), 1, + sym__module_identifier, + STATE(1424), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57544] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3481), 1, + sym_identifier, + ACTIONS(3483), 1, + anon_sym_LBRACE, + STATE(1425), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57565] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3485), 1, + sym_identifier, + STATE(1237), 1, + sym__type_parameter_identifier, + STATE(1426), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57586] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1427), 1, + sym_annotation, + ACTIONS(3487), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57605] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1428), 1, + sym_annotation, + ACTIONS(3489), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57624] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2455), 1, + anon_sym_COMMA, + ACTIONS(3491), 1, + anon_sym_AT, + STATE(1429), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57645] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2561), 1, + anon_sym_SEMI, + ACTIONS(2975), 1, + anon_sym_COMMA, + STATE(1430), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57666] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1431), 1, + sym_annotation, + ACTIONS(3493), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57685] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1432), 1, + sym_annotation, + ACTIONS(3495), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57704] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3497), 1, + anon_sym_COLON, + ACTIONS(3499), 1, + anon_sym_where, + STATE(1433), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57725] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1434), 1, + sym_annotation, + ACTIONS(3501), 2, + ts_builtin_sym_end, + anon_sym_module, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57744] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1435), 1, + sym_annotation, + ACTIONS(3503), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57763] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + STATE(1436), 1, + sym_annotation, + ACTIONS(3505), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57782] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3453), 1, + anon_sym_COMMA, + ACTIONS(3507), 1, + anon_sym_RPAREN, + STATE(1437), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57803] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2318), 1, + anon_sym_LBRACE, + STATE(242), 1, + sym_spec_body, + STATE(1438), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57824] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3056), 1, + sym_identifier, + STATE(1177), 1, + sym__function_identifier, + STATE(1439), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57845] = 6, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3485), 1, + sym_identifier, + STATE(1307), 1, + sym__type_parameter_identifier, + STATE(1440), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57866] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3509), 1, + sym_identifier, + STATE(1441), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57884] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3511), 1, + ts_builtin_sym_end, + STATE(1442), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57902] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3513), 1, + anon_sym_SEMI, + STATE(1443), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57920] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3515), 1, + anon_sym_fun, + STATE(1444), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57938] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3517), 1, + anon_sym_use, + STATE(1445), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57956] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3519), 1, + anon_sym_LPAREN, + STATE(1446), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57974] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3521), 1, + anon_sym_LPAREN, + STATE(1447), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [57992] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3523), 1, + anon_sym_SEMI, + STATE(1448), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58010] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3525), 1, + anon_sym_SEMI, + STATE(1449), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58028] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3527), 1, + sym_identifier, + STATE(1450), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58046] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3529), 1, + sym_identifier, + STATE(1451), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58064] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3531), 1, + anon_sym_SEMI, + STATE(1452), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58082] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3533), 1, + anon_sym_LBRACE, + STATE(1453), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58100] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3535), 1, + anon_sym_SEMI, + STATE(1454), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58118] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3537), 1, + anon_sym_COLON, + STATE(1455), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58136] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3539), 1, + anon_sym_SEMI, + STATE(1456), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58154] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3541), 1, + sym_identifier, + STATE(1457), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58172] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3543), 1, + sym_identifier, + STATE(1458), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58190] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3545), 1, + anon_sym_SEMI, + STATE(1459), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58208] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3547), 1, + anon_sym_LBRACE, + STATE(1460), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58226] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3549), 1, + anon_sym_LBRACE, + STATE(1461), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58244] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3551), 1, + sym_identifier, + STATE(1462), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58262] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3553), 1, + sym_identifier, + STATE(1463), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58280] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3555), 1, + sym_identifier, + STATE(1464), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58298] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3557), 1, + anon_sym_COLON, + STATE(1465), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58316] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3559), 1, + anon_sym_SEMI, + STATE(1466), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58334] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3561), 1, + anon_sym_EQ, + STATE(1467), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58352] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3563), 1, + anon_sym_DOT, + STATE(1468), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58370] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3565), 1, + anon_sym_LBRACE, + STATE(1469), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58388] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3567), 1, + sym_identifier, + STATE(1470), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58406] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3569), 1, + anon_sym_fun, + STATE(1471), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58424] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3571), 1, + sym_identifier, + STATE(1472), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58442] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3573), 1, + anon_sym_SEMI, + STATE(1473), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58460] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3575), 1, + sym_identifier, + STATE(1474), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58478] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3577), 1, + anon_sym_COLON_COLON, + STATE(1475), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58496] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3579), 1, + anon_sym_RPAREN, + STATE(1476), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58514] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3581), 1, + anon_sym_fun, + STATE(1477), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58532] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3583), 1, + sym_identifier, + STATE(1478), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58550] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2563), 1, + anon_sym_COMMA, + STATE(1479), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58568] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3585), 1, + anon_sym_COLON_COLON, + STATE(1480), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58586] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3587), 1, + anon_sym_COLON, + STATE(1481), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58604] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3589), 1, + anon_sym_SEMI, + STATE(1482), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58622] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3591), 1, + anon_sym_SEMI, + STATE(1483), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58640] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2343), 1, + anon_sym_COLON_COLON, + STATE(1484), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58658] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3593), 1, + sym_identifier, + STATE(1485), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58676] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3595), 1, + anon_sym_SEMI, + STATE(1486), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58694] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3597), 1, + anon_sym_SEMI, + STATE(1487), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58712] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3599), 1, + anon_sym_SEMI, + STATE(1488), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58730] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3601), 1, + anon_sym_as, + STATE(1489), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58748] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3603), 1, + anon_sym_COLON_COLON, + STATE(1490), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58766] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3605), 1, + anon_sym_LBRACK, + STATE(1491), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58784] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3607), 1, + anon_sym_SEMI, + STATE(1492), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58802] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3609), 1, + anon_sym_SEMI, + STATE(1493), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58820] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3611), 1, + anon_sym_LBRACK, + STATE(1494), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58838] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3379), 1, + anon_sym_COMMA, + STATE(1495), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58856] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3353), 1, + anon_sym_COMMA, + STATE(1496), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58874] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3613), 1, + anon_sym_LBRACE, + STATE(1497), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58892] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3615), 1, + anon_sym_EQ, + STATE(1498), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58910] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3617), 1, + anon_sym_SEMI, + STATE(1499), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58928] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3619), 1, + anon_sym_SEMI, + STATE(1500), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58946] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3621), 1, + sym_identifier, + STATE(1501), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58964] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3623), 1, + sym_spec_apply_name_pattern, + STATE(1502), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [58982] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3625), 1, + anon_sym_COLON, + STATE(1503), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59000] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3627), 1, + anon_sym_LPAREN, + STATE(1504), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59018] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3629), 1, + anon_sym_COLON_COLON, + STATE(1505), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59036] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3395), 1, + anon_sym_COMMA, + STATE(1506), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59054] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3631), 1, + anon_sym_use, + STATE(1507), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59072] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3343), 1, + anon_sym_COMMA, + STATE(1508), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59090] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3633), 1, + sym_identifier, + STATE(1509), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59108] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3635), 1, + sym_identifier, + STATE(1510), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59126] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3637), 1, + sym_identifier, + STATE(1511), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59144] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3639), 1, + anon_sym_RPAREN, + STATE(1512), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59162] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3389), 1, + anon_sym_COMMA, + STATE(1513), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59180] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3641), 1, + anon_sym_SEMI, + STATE(1514), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59198] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3643), 1, + anon_sym_LPAREN, + STATE(1515), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59216] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3645), 1, + anon_sym_LPAREN, + STATE(1516), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59234] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3647), 1, + anon_sym_SEMI, + STATE(1517), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59252] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3649), 1, + anon_sym_COLON_COLON, + STATE(1518), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59270] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3651), 1, + sym_identifier, + STATE(1519), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59288] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3653), 1, + anon_sym_SEMI, + STATE(1520), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59306] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3655), 1, + anon_sym_LBRACE, + STATE(1521), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59324] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3657), 1, + sym_identifier, + STATE(1522), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59342] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3659), 1, + sym_identifier, + STATE(1523), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59360] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1149), 1, + anon_sym_COLON_COLON, + STATE(1524), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59378] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3661), 1, + anon_sym_SEMI, + STATE(1525), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59396] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3663), 1, + anon_sym_SEMI, + STATE(1526), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59414] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3665), 1, + anon_sym_fun, + STATE(1527), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59432] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3667), 1, + anon_sym_SEMI, + STATE(1528), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59450] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3669), 1, + sym_identifier, + STATE(1529), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59468] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3671), 1, + anon_sym_COLON, + STATE(1530), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59486] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3373), 1, + anon_sym_COMMA, + STATE(1531), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59504] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3673), 1, + anon_sym_LBRACE, + STATE(1532), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59522] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3675), 1, + sym_identifier, + STATE(1533), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59540] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3677), 1, + anon_sym_COLON, + STATE(1534), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59558] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3679), 1, + anon_sym_COLON_COLON, + STATE(1535), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59576] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3681), 1, + anon_sym_LBRACE, + STATE(1536), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59594] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3683), 1, + anon_sym_LBRACK, + STATE(1537), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59612] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3685), 1, + anon_sym_LBRACE, + STATE(1538), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59630] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(2975), 1, + anon_sym_COMMA, + STATE(1539), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59648] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3417), 1, + anon_sym_COMMA, + STATE(1540), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59666] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3687), 1, + sym_identifier, + STATE(1541), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59684] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3689), 1, + anon_sym_SEMI, + STATE(1542), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59702] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3691), 1, + anon_sym_LPAREN, + STATE(1543), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59720] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3693), 1, + anon_sym_COLON_COLON, + STATE(1544), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59738] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3695), 1, + anon_sym_LPAREN, + STATE(1545), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59756] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3697), 1, + anon_sym_LPAREN, + STATE(1546), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59774] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3699), 1, + sym_identifier, + STATE(1547), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59792] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(1949), 1, + anon_sym_SEMI, + STATE(1548), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59810] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3701), 1, + anon_sym_COLON, + STATE(1549), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59828] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3703), 1, + anon_sym_LPAREN, + STATE(1550), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59846] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3705), 1, + anon_sym_EQ_GT, + STATE(1551), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59864] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3707), 1, + anon_sym_EQ, + STATE(1552), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59882] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3709), 1, + sym_identifier, + STATE(1553), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59900] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3711), 1, + anon_sym_SEMI, + STATE(1554), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59918] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3347), 1, + anon_sym_COMMA, + STATE(1555), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59936] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3713), 1, + anon_sym_EQ_GT, + STATE(1556), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59954] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3715), 1, + anon_sym_SEMI, + STATE(1557), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59972] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3453), 1, + anon_sym_COMMA, + STATE(1558), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [59990] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3717), 1, + sym_identifier, + STATE(1559), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [60008] = 5, + ACTIONS(3), 1, + anon_sym_POUND_LBRACK, + ACTIONS(7), 1, + sym__whitespace, + ACTIONS(3719), 1, + anon_sym_LPAREN, + STATE(1560), 1, + sym_annotation, + ACTIONS(5), 3, + sym_line_comment, + sym_newline, + sym_block_comment, + [60026] = 1, + ACTIONS(3721), 1, + ts_builtin_sym_end, + [60030] = 1, + ACTIONS(3723), 1, + ts_builtin_sym_end, + [60034] = 1, + ACTIONS(3725), 1, + ts_builtin_sym_end, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(237)] = 0, + [SMALL_STATE(238)] = 66, + [SMALL_STATE(239)] = 132, + [SMALL_STATE(240)] = 250, + [SMALL_STATE(241)] = 316, + [SMALL_STATE(242)] = 382, + [SMALL_STATE(243)] = 448, + [SMALL_STATE(244)] = 514, + [SMALL_STATE(245)] = 580, + [SMALL_STATE(246)] = 646, + [SMALL_STATE(247)] = 764, + [SMALL_STATE(248)] = 830, + [SMALL_STATE(249)] = 896, + [SMALL_STATE(250)] = 962, + [SMALL_STATE(251)] = 1028, + [SMALL_STATE(252)] = 1094, + [SMALL_STATE(253)] = 1160, + [SMALL_STATE(254)] = 1225, + [SMALL_STATE(255)] = 1290, + [SMALL_STATE(256)] = 1355, + [SMALL_STATE(257)] = 1420, + [SMALL_STATE(258)] = 1525, + [SMALL_STATE(259)] = 1590, + [SMALL_STATE(260)] = 1695, + [SMALL_STATE(261)] = 1759, + [SMALL_STATE(262)] = 1867, + [SMALL_STATE(263)] = 1975, + [SMALL_STATE(264)] = 2034, + [SMALL_STATE(265)] = 2093, + [SMALL_STATE(266)] = 2151, + [SMALL_STATE(267)] = 2215, + [SMALL_STATE(268)] = 2273, + [SMALL_STATE(269)] = 2337, + [SMALL_STATE(270)] = 2395, + [SMALL_STATE(271)] = 2453, + [SMALL_STATE(272)] = 2511, + [SMALL_STATE(273)] = 2575, + [SMALL_STATE(274)] = 2633, + [SMALL_STATE(275)] = 2697, + [SMALL_STATE(276)] = 2755, + [SMALL_STATE(277)] = 2813, + [SMALL_STATE(278)] = 2870, + [SMALL_STATE(279)] = 2933, + [SMALL_STATE(280)] = 2990, + [SMALL_STATE(281)] = 3085, + [SMALL_STATE(282)] = 3192, + [SMALL_STATE(283)] = 3251, + [SMALL_STATE(284)] = 3308, + [SMALL_STATE(285)] = 3365, + [SMALL_STATE(286)] = 3422, + [SMALL_STATE(287)] = 3481, + [SMALL_STATE(288)] = 3546, + [SMALL_STATE(289)] = 3641, + [SMALL_STATE(290)] = 3697, + [SMALL_STATE(291)] = 3791, + [SMALL_STATE(292)] = 3899, + [SMALL_STATE(293)] = 3993, + [SMALL_STATE(294)] = 4049, + [SMALL_STATE(295)] = 4105, + [SMALL_STATE(296)] = 4161, + [SMALL_STATE(297)] = 4257, + [SMALL_STATE(298)] = 4349, + [SMALL_STATE(299)] = 4443, + [SMALL_STATE(300)] = 4499, + [SMALL_STATE(301)] = 4555, + [SMALL_STATE(302)] = 4611, + [SMALL_STATE(303)] = 4719, + [SMALL_STATE(304)] = 4775, + [SMALL_STATE(305)] = 4831, + [SMALL_STATE(306)] = 4893, + [SMALL_STATE(307)] = 4955, + [SMALL_STATE(308)] = 5049, + [SMALL_STATE(309)] = 5157, + [SMALL_STATE(310)] = 5265, + [SMALL_STATE(311)] = 5359, + [SMALL_STATE(312)] = 5455, + [SMALL_STATE(313)] = 5513, + [SMALL_STATE(314)] = 5569, + [SMALL_STATE(315)] = 5625, + [SMALL_STATE(316)] = 5719, + [SMALL_STATE(317)] = 5775, + [SMALL_STATE(318)] = 5831, + [SMALL_STATE(319)] = 5887, + [SMALL_STATE(320)] = 5981, + [SMALL_STATE(321)] = 6072, + [SMALL_STATE(322)] = 6163, + [SMALL_STATE(323)] = 6254, + [SMALL_STATE(324)] = 6345, + [SMALL_STATE(325)] = 6436, + [SMALL_STATE(326)] = 6527, + [SMALL_STATE(327)] = 6618, + [SMALL_STATE(328)] = 6709, + [SMALL_STATE(329)] = 6800, + [SMALL_STATE(330)] = 6891, + [SMALL_STATE(331)] = 6982, + [SMALL_STATE(332)] = 7073, + [SMALL_STATE(333)] = 7164, + [SMALL_STATE(334)] = 7255, + [SMALL_STATE(335)] = 7346, + [SMALL_STATE(336)] = 7405, + [SMALL_STATE(337)] = 7496, + [SMALL_STATE(338)] = 7551, + [SMALL_STATE(339)] = 7642, + [SMALL_STATE(340)] = 7733, + [SMALL_STATE(341)] = 7824, + [SMALL_STATE(342)] = 7915, + [SMALL_STATE(343)] = 7971, + [SMALL_STATE(344)] = 8059, + [SMALL_STATE(345)] = 8147, + [SMALL_STATE(346)] = 8235, + [SMALL_STATE(347)] = 8323, + [SMALL_STATE(348)] = 8409, + [SMALL_STATE(349)] = 8463, + [SMALL_STATE(350)] = 8551, + [SMALL_STATE(351)] = 8605, + [SMALL_STATE(352)] = 8693, + [SMALL_STATE(353)] = 8781, + [SMALL_STATE(354)] = 8869, + [SMALL_STATE(355)] = 8957, + [SMALL_STATE(356)] = 9045, + [SMALL_STATE(357)] = 9133, + [SMALL_STATE(358)] = 9231, + [SMALL_STATE(359)] = 9319, + [SMALL_STATE(360)] = 9407, + [SMALL_STATE(361)] = 9493, + [SMALL_STATE(362)] = 9581, + [SMALL_STATE(363)] = 9669, + [SMALL_STATE(364)] = 9757, + [SMALL_STATE(365)] = 9845, + [SMALL_STATE(366)] = 9933, + [SMALL_STATE(367)] = 10021, + [SMALL_STATE(368)] = 10109, + [SMALL_STATE(369)] = 10169, + [SMALL_STATE(370)] = 10257, + [SMALL_STATE(371)] = 10345, + [SMALL_STATE(372)] = 10431, + [SMALL_STATE(373)] = 10519, + [SMALL_STATE(374)] = 10579, + [SMALL_STATE(375)] = 10639, + [SMALL_STATE(376)] = 10727, + [SMALL_STATE(377)] = 10815, + [SMALL_STATE(378)] = 10903, + [SMALL_STATE(379)] = 10989, + [SMALL_STATE(380)] = 11045, + [SMALL_STATE(381)] = 11101, + [SMALL_STATE(382)] = 11189, + [SMALL_STATE(383)] = 11275, + [SMALL_STATE(384)] = 11363, + [SMALL_STATE(385)] = 11451, + [SMALL_STATE(386)] = 11549, + [SMALL_STATE(387)] = 11603, + [SMALL_STATE(388)] = 11657, + [SMALL_STATE(389)] = 11755, + [SMALL_STATE(390)] = 11809, + [SMALL_STATE(391)] = 11907, + [SMALL_STATE(392)] = 11967, + [SMALL_STATE(393)] = 12055, + [SMALL_STATE(394)] = 12109, + [SMALL_STATE(395)] = 12197, + [SMALL_STATE(396)] = 12295, + [SMALL_STATE(397)] = 12383, + [SMALL_STATE(398)] = 12436, + [SMALL_STATE(399)] = 12489, + [SMALL_STATE(400)] = 12542, + [SMALL_STATE(401)] = 12643, + [SMALL_STATE(402)] = 12696, + [SMALL_STATE(403)] = 12749, + [SMALL_STATE(404)] = 12804, + [SMALL_STATE(405)] = 12857, + [SMALL_STATE(406)] = 12910, + [SMALL_STATE(407)] = 12963, + [SMALL_STATE(408)] = 13016, + [SMALL_STATE(409)] = 13069, + [SMALL_STATE(410)] = 13122, + [SMALL_STATE(411)] = 13175, + [SMALL_STATE(412)] = 13230, + [SMALL_STATE(413)] = 13283, + [SMALL_STATE(414)] = 13336, + [SMALL_STATE(415)] = 13389, + [SMALL_STATE(416)] = 13444, + [SMALL_STATE(417)] = 13497, + [SMALL_STATE(418)] = 13550, + [SMALL_STATE(419)] = 13603, + [SMALL_STATE(420)] = 13656, + [SMALL_STATE(421)] = 13757, + [SMALL_STATE(422)] = 13810, + [SMALL_STATE(423)] = 13863, + [SMALL_STATE(424)] = 13916, + [SMALL_STATE(425)] = 13969, + [SMALL_STATE(426)] = 14028, + [SMALL_STATE(427)] = 14081, + [SMALL_STATE(428)] = 14136, + [SMALL_STATE(429)] = 14189, + [SMALL_STATE(430)] = 14242, + [SMALL_STATE(431)] = 14295, + [SMALL_STATE(432)] = 14350, + [SMALL_STATE(433)] = 14403, + [SMALL_STATE(434)] = 14456, + [SMALL_STATE(435)] = 14557, + [SMALL_STATE(436)] = 14610, + [SMALL_STATE(437)] = 14665, + [SMALL_STATE(438)] = 14720, + [SMALL_STATE(439)] = 14773, + [SMALL_STATE(440)] = 14826, + [SMALL_STATE(441)] = 14879, + [SMALL_STATE(442)] = 14932, + [SMALL_STATE(443)] = 14985, + [SMALL_STATE(444)] = 15038, + [SMALL_STATE(445)] = 15091, + [SMALL_STATE(446)] = 15144, + [SMALL_STATE(447)] = 15197, + [SMALL_STATE(448)] = 15294, + [SMALL_STATE(449)] = 15349, + [SMALL_STATE(450)] = 15446, + [SMALL_STATE(451)] = 15499, + [SMALL_STATE(452)] = 15596, + [SMALL_STATE(453)] = 15693, + [SMALL_STATE(454)] = 15790, + [SMALL_STATE(455)] = 15843, + [SMALL_STATE(456)] = 15896, + [SMALL_STATE(457)] = 15949, + [SMALL_STATE(458)] = 16002, + [SMALL_STATE(459)] = 16055, + [SMALL_STATE(460)] = 16108, + [SMALL_STATE(461)] = 16161, + [SMALL_STATE(462)] = 16214, + [SMALL_STATE(463)] = 16313, + [SMALL_STATE(464)] = 16366, + [SMALL_STATE(465)] = 16425, + [SMALL_STATE(466)] = 16478, + [SMALL_STATE(467)] = 16531, + [SMALL_STATE(468)] = 16584, + [SMALL_STATE(469)] = 16637, + [SMALL_STATE(470)] = 16690, + [SMALL_STATE(471)] = 16743, + [SMALL_STATE(472)] = 16796, + [SMALL_STATE(473)] = 16849, + [SMALL_STATE(474)] = 16902, + [SMALL_STATE(475)] = 16955, + [SMALL_STATE(476)] = 17056, + [SMALL_STATE(477)] = 17109, + [SMALL_STATE(478)] = 17162, + [SMALL_STATE(479)] = 17215, + [SMALL_STATE(480)] = 17311, + [SMALL_STATE(481)] = 17367, + [SMALL_STATE(482)] = 17419, + [SMALL_STATE(483)] = 17471, + [SMALL_STATE(484)] = 17567, + [SMALL_STATE(485)] = 17663, + [SMALL_STATE(486)] = 17759, + [SMALL_STATE(487)] = 17815, + [SMALL_STATE(488)] = 17911, + [SMALL_STATE(489)] = 18007, + [SMALL_STATE(490)] = 18103, + [SMALL_STATE(491)] = 18155, + [SMALL_STATE(492)] = 18207, + [SMALL_STATE(493)] = 18303, + [SMALL_STATE(494)] = 18355, + [SMALL_STATE(495)] = 18451, + [SMALL_STATE(496)] = 18547, + [SMALL_STATE(497)] = 18599, + [SMALL_STATE(498)] = 18651, + [SMALL_STATE(499)] = 18712, + [SMALL_STATE(500)] = 18791, + [SMALL_STATE(501)] = 18888, + [SMALL_STATE(502)] = 18967, + [SMALL_STATE(503)] = 19046, + [SMALL_STATE(504)] = 19105, + [SMALL_STATE(505)] = 19184, + [SMALL_STATE(506)] = 19247, + [SMALL_STATE(507)] = 19314, + [SMALL_STATE(508)] = 19393, + [SMALL_STATE(509)] = 19466, + [SMALL_STATE(510)] = 19561, + [SMALL_STATE(511)] = 19636, + [SMALL_STATE(512)] = 19713, + [SMALL_STATE(513)] = 19770, + [SMALL_STATE(514)] = 19835, + [SMALL_STATE(515)] = 19930, + [SMALL_STATE(516)] = 19999, + [SMALL_STATE(517)] = 20078, + [SMALL_STATE(518)] = 20165, + [SMALL_STATE(519)] = 20244, + [SMALL_STATE(520)] = 20323, + [SMALL_STATE(521)] = 20402, + [SMALL_STATE(522)] = 20481, + [SMALL_STATE(523)] = 20562, + [SMALL_STATE(524)] = 20657, + [SMALL_STATE(525)] = 20712, + [SMALL_STATE(526)] = 20791, + [SMALL_STATE(527)] = 20870, + [SMALL_STATE(528)] = 20923, + [SMALL_STATE(529)] = 21018, + [SMALL_STATE(530)] = 21113, + [SMALL_STATE(531)] = 21192, + [SMALL_STATE(532)] = 21287, + [SMALL_STATE(533)] = 21382, + [SMALL_STATE(534)] = 21479, + [SMALL_STATE(535)] = 21574, + [SMALL_STATE(536)] = 21653, + [SMALL_STATE(537)] = 21744, + [SMALL_STATE(538)] = 21823, + [SMALL_STATE(539)] = 21918, + [SMALL_STATE(540)] = 22013, + [SMALL_STATE(541)] = 22108, + [SMALL_STATE(542)] = 22199, + [SMALL_STATE(543)] = 22291, + [SMALL_STATE(544)] = 22385, + [SMALL_STATE(545)] = 22477, + [SMALL_STATE(546)] = 22569, + [SMALL_STATE(547)] = 22661, + [SMALL_STATE(548)] = 22755, + [SMALL_STATE(549)] = 22847, + [SMALL_STATE(550)] = 22939, + [SMALL_STATE(551)] = 23031, + [SMALL_STATE(552)] = 23125, + [SMALL_STATE(553)] = 23217, + [SMALL_STATE(554)] = 23309, + [SMALL_STATE(555)] = 23401, + [SMALL_STATE(556)] = 23495, + [SMALL_STATE(557)] = 23587, + [SMALL_STATE(558)] = 23679, + [SMALL_STATE(559)] = 23771, + [SMALL_STATE(560)] = 23863, + [SMALL_STATE(561)] = 23955, + [SMALL_STATE(562)] = 24047, + [SMALL_STATE(563)] = 24141, + [SMALL_STATE(564)] = 24232, + [SMALL_STATE(565)] = 24323, + [SMALL_STATE(566)] = 24414, + [SMALL_STATE(567)] = 24505, + [SMALL_STATE(568)] = 24596, + [SMALL_STATE(569)] = 24687, + [SMALL_STATE(570)] = 24778, + [SMALL_STATE(571)] = 24869, + [SMALL_STATE(572)] = 24960, + [SMALL_STATE(573)] = 25051, + [SMALL_STATE(574)] = 25142, + [SMALL_STATE(575)] = 25196, + [SMALL_STATE(576)] = 25284, + [SMALL_STATE(577)] = 25334, + [SMALL_STATE(578)] = 25410, + [SMALL_STATE(579)] = 25486, + [SMALL_STATE(580)] = 25538, + [SMALL_STATE(581)] = 25614, + [SMALL_STATE(582)] = 25690, + [SMALL_STATE(583)] = 25766, + [SMALL_STATE(584)] = 25842, + [SMALL_STATE(585)] = 25928, + [SMALL_STATE(586)] = 26004, + [SMALL_STATE(587)] = 26080, + [SMALL_STATE(588)] = 26156, + [SMALL_STATE(589)] = 26232, + [SMALL_STATE(590)] = 26320, + [SMALL_STATE(591)] = 26370, + [SMALL_STATE(592)] = 26446, + [SMALL_STATE(593)] = 26522, + [SMALL_STATE(594)] = 26588, + [SMALL_STATE(595)] = 26664, + [SMALL_STATE(596)] = 26726, + [SMALL_STATE(597)] = 26784, + [SMALL_STATE(598)] = 26860, + [SMALL_STATE(599)] = 26936, + [SMALL_STATE(600)] = 27012, + [SMALL_STATE(601)] = 27088, + [SMALL_STATE(602)] = 27138, + [SMALL_STATE(603)] = 27214, + [SMALL_STATE(604)] = 27290, + [SMALL_STATE(605)] = 27364, + [SMALL_STATE(606)] = 27436, + [SMALL_STATE(607)] = 27512, + [SMALL_STATE(608)] = 27588, + [SMALL_STATE(609)] = 27664, + [SMALL_STATE(610)] = 27740, + [SMALL_STATE(611)] = 27810, + [SMALL_STATE(612)] = 27866, + [SMALL_STATE(613)] = 27922, + [SMALL_STATE(614)] = 27980, + [SMALL_STATE(615)] = 28040, + [SMALL_STATE(616)] = 28104, + [SMALL_STATE(617)] = 28174, + [SMALL_STATE(618)] = 28246, + [SMALL_STATE(619)] = 28320, + [SMALL_STATE(620)] = 28374, + [SMALL_STATE(621)] = 28436, + [SMALL_STATE(622)] = 28502, + [SMALL_STATE(623)] = 28566, + [SMALL_STATE(624)] = 28642, + [SMALL_STATE(625)] = 28718, + [SMALL_STATE(626)] = 28794, + [SMALL_STATE(627)] = 28872, + [SMALL_STATE(628)] = 28932, + [SMALL_STATE(629)] = 29008, + [SMALL_STATE(630)] = 29065, + [SMALL_STATE(631)] = 29128, + [SMALL_STATE(632)] = 29201, + [SMALL_STATE(633)] = 29274, + [SMALL_STATE(634)] = 29359, + [SMALL_STATE(635)] = 29432, + [SMALL_STATE(636)] = 29505, + [SMALL_STATE(637)] = 29578, + [SMALL_STATE(638)] = 29651, + [SMALL_STATE(639)] = 29706, + [SMALL_STATE(640)] = 29779, + [SMALL_STATE(641)] = 29838, + [SMALL_STATE(642)] = 29911, + [SMALL_STATE(643)] = 29984, + [SMALL_STATE(644)] = 30069, + [SMALL_STATE(645)] = 30154, + [SMALL_STATE(646)] = 30227, + [SMALL_STATE(647)] = 30294, + [SMALL_STATE(648)] = 30379, + [SMALL_STATE(649)] = 30452, + [SMALL_STATE(650)] = 30521, + [SMALL_STATE(651)] = 30592, + [SMALL_STATE(652)] = 30645, + [SMALL_STATE(653)] = 30706, + [SMALL_STATE(654)] = 30771, + [SMALL_STATE(655)] = 30853, + [SMALL_STATE(656)] = 30935, + [SMALL_STATE(657)] = 31017, + [SMALL_STATE(658)] = 31099, + [SMALL_STATE(659)] = 31181, + [SMALL_STATE(660)] = 31263, + [SMALL_STATE(661)] = 31345, + [SMALL_STATE(662)] = 31427, + [SMALL_STATE(663)] = 31509, + [SMALL_STATE(664)] = 31591, + [SMALL_STATE(665)] = 31673, + [SMALL_STATE(666)] = 31755, + [SMALL_STATE(667)] = 31837, + [SMALL_STATE(668)] = 31919, + [SMALL_STATE(669)] = 32001, + [SMALL_STATE(670)] = 32060, + [SMALL_STATE(671)] = 32129, + [SMALL_STATE(672)] = 32202, + [SMALL_STATE(673)] = 32275, + [SMALL_STATE(674)] = 32348, + [SMALL_STATE(675)] = 32421, + [SMALL_STATE(676)] = 32494, + [SMALL_STATE(677)] = 32567, + [SMALL_STATE(678)] = 32640, + [SMALL_STATE(679)] = 32713, + [SMALL_STATE(680)] = 32766, + [SMALL_STATE(681)] = 32813, + [SMALL_STATE(682)] = 32886, + [SMALL_STATE(683)] = 32941, + [SMALL_STATE(684)] = 32998, + [SMALL_STATE(685)] = 33059, + [SMALL_STATE(686)] = 33126, + [SMALL_STATE(687)] = 33189, + [SMALL_STATE(688)] = 33262, + [SMALL_STATE(689)] = 33313, + [SMALL_STATE(690)] = 33386, + [SMALL_STATE(691)] = 33459, + [SMALL_STATE(692)] = 33506, + [SMALL_STATE(693)] = 33577, + [SMALL_STATE(694)] = 33647, + [SMALL_STATE(695)] = 33717, + [SMALL_STATE(696)] = 33787, + [SMALL_STATE(697)] = 33837, + [SMALL_STATE(698)] = 33907, + [SMALL_STATE(699)] = 33975, + [SMALL_STATE(700)] = 34051, + [SMALL_STATE(701)] = 34121, + [SMALL_STATE(702)] = 34187, + [SMALL_STATE(703)] = 34251, + [SMALL_STATE(704)] = 34321, + [SMALL_STATE(705)] = 34381, + [SMALL_STATE(706)] = 34437, + [SMALL_STATE(707)] = 34495, + [SMALL_STATE(708)] = 34565, + [SMALL_STATE(709)] = 34619, + [SMALL_STATE(710)] = 34689, + [SMALL_STATE(711)] = 34741, + [SMALL_STATE(712)] = 34811, + [SMALL_STATE(713)] = 34873, + [SMALL_STATE(714)] = 34943, + [SMALL_STATE(715)] = 35013, + [SMALL_STATE(716)] = 35088, + [SMALL_STATE(717)] = 35163, + [SMALL_STATE(718)] = 35236, + [SMALL_STATE(719)] = 35305, + [SMALL_STATE(720)] = 35378, + [SMALL_STATE(721)] = 35427, + [SMALL_STATE(722)] = 35502, + [SMALL_STATE(723)] = 35577, + [SMALL_STATE(724)] = 35647, + [SMALL_STATE(725)] = 35715, + [SMALL_STATE(726)] = 35785, + [SMALL_STATE(727)] = 35853, + [SMALL_STATE(728)] = 35923, + [SMALL_STATE(729)] = 35993, + [SMALL_STATE(730)] = 36061, + [SMALL_STATE(731)] = 36129, + [SMALL_STATE(732)] = 36199, + [SMALL_STATE(733)] = 36269, + [SMALL_STATE(734)] = 36339, + [SMALL_STATE(735)] = 36409, + [SMALL_STATE(736)] = 36479, + [SMALL_STATE(737)] = 36549, + [SMALL_STATE(738)] = 36621, + [SMALL_STATE(739)] = 36691, + [SMALL_STATE(740)] = 36761, + [SMALL_STATE(741)] = 36831, + [SMALL_STATE(742)] = 36901, + [SMALL_STATE(743)] = 36971, + [SMALL_STATE(744)] = 37043, + [SMALL_STATE(745)] = 37113, + [SMALL_STATE(746)] = 37183, + [SMALL_STATE(747)] = 37253, + [SMALL_STATE(748)] = 37321, + [SMALL_STATE(749)] = 37388, + [SMALL_STATE(750)] = 37455, + [SMALL_STATE(751)] = 37496, + [SMALL_STATE(752)] = 37563, + [SMALL_STATE(753)] = 37604, + [SMALL_STATE(754)] = 37671, + [SMALL_STATE(755)] = 37738, + [SMALL_STATE(756)] = 37805, + [SMALL_STATE(757)] = 37872, + [SMALL_STATE(758)] = 37939, + [SMALL_STATE(759)] = 38006, + [SMALL_STATE(760)] = 38073, + [SMALL_STATE(761)] = 38140, + [SMALL_STATE(762)] = 38207, + [SMALL_STATE(763)] = 38274, + [SMALL_STATE(764)] = 38341, + [SMALL_STATE(765)] = 38408, + [SMALL_STATE(766)] = 38475, + [SMALL_STATE(767)] = 38542, + [SMALL_STATE(768)] = 38609, + [SMALL_STATE(769)] = 38676, + [SMALL_STATE(770)] = 38743, + [SMALL_STATE(771)] = 38784, + [SMALL_STATE(772)] = 38851, + [SMALL_STATE(773)] = 38918, + [SMALL_STATE(774)] = 38985, + [SMALL_STATE(775)] = 39052, + [SMALL_STATE(776)] = 39119, + [SMALL_STATE(777)] = 39186, + [SMALL_STATE(778)] = 39253, + [SMALL_STATE(779)] = 39320, + [SMALL_STATE(780)] = 39387, + [SMALL_STATE(781)] = 39454, + [SMALL_STATE(782)] = 39521, + [SMALL_STATE(783)] = 39588, + [SMALL_STATE(784)] = 39655, + [SMALL_STATE(785)] = 39722, + [SMALL_STATE(786)] = 39789, + [SMALL_STATE(787)] = 39856, + [SMALL_STATE(788)] = 39898, + [SMALL_STATE(789)] = 39938, + [SMALL_STATE(790)] = 39977, + [SMALL_STATE(791)] = 40016, + [SMALL_STATE(792)] = 40055, + [SMALL_STATE(793)] = 40094, + [SMALL_STATE(794)] = 40133, + [SMALL_STATE(795)] = 40172, + [SMALL_STATE(796)] = 40211, + [SMALL_STATE(797)] = 40250, + [SMALL_STATE(798)] = 40289, + [SMALL_STATE(799)] = 40328, + [SMALL_STATE(800)] = 40367, + [SMALL_STATE(801)] = 40406, + [SMALL_STATE(802)] = 40445, + [SMALL_STATE(803)] = 40484, + [SMALL_STATE(804)] = 40523, + [SMALL_STATE(805)] = 40562, + [SMALL_STATE(806)] = 40601, + [SMALL_STATE(807)] = 40640, + [SMALL_STATE(808)] = 40679, + [SMALL_STATE(809)] = 40718, + [SMALL_STATE(810)] = 40757, + [SMALL_STATE(811)] = 40796, + [SMALL_STATE(812)] = 40835, + [SMALL_STATE(813)] = 40874, + [SMALL_STATE(814)] = 40913, + [SMALL_STATE(815)] = 40952, + [SMALL_STATE(816)] = 40991, + [SMALL_STATE(817)] = 41030, + [SMALL_STATE(818)] = 41069, + [SMALL_STATE(819)] = 41108, + [SMALL_STATE(820)] = 41147, + [SMALL_STATE(821)] = 41186, + [SMALL_STATE(822)] = 41225, + [SMALL_STATE(823)] = 41264, + [SMALL_STATE(824)] = 41303, + [SMALL_STATE(825)] = 41342, + [SMALL_STATE(826)] = 41381, + [SMALL_STATE(827)] = 41420, + [SMALL_STATE(828)] = 41459, + [SMALL_STATE(829)] = 41498, + [SMALL_STATE(830)] = 41537, + [SMALL_STATE(831)] = 41576, + [SMALL_STATE(832)] = 41615, + [SMALL_STATE(833)] = 41654, + [SMALL_STATE(834)] = 41693, + [SMALL_STATE(835)] = 41732, + [SMALL_STATE(836)] = 41771, + [SMALL_STATE(837)] = 41810, + [SMALL_STATE(838)] = 41875, + [SMALL_STATE(839)] = 41914, + [SMALL_STATE(840)] = 41953, + [SMALL_STATE(841)] = 41992, + [SMALL_STATE(842)] = 42031, + [SMALL_STATE(843)] = 42070, + [SMALL_STATE(844)] = 42107, + [SMALL_STATE(845)] = 42143, + [SMALL_STATE(846)] = 42179, + [SMALL_STATE(847)] = 42215, + [SMALL_STATE(848)] = 42251, + [SMALL_STATE(849)] = 42287, + [SMALL_STATE(850)] = 42323, + [SMALL_STATE(851)] = 42365, + [SMALL_STATE(852)] = 42401, + [SMALL_STATE(853)] = 42437, + [SMALL_STATE(854)] = 42479, + [SMALL_STATE(855)] = 42512, + [SMALL_STATE(856)] = 42547, + [SMALL_STATE(857)] = 42584, + [SMALL_STATE(858)] = 42617, + [SMALL_STATE(859)] = 42654, + [SMALL_STATE(860)] = 42691, + [SMALL_STATE(861)] = 42724, + [SMALL_STATE(862)] = 42757, + [SMALL_STATE(863)] = 42790, + [SMALL_STATE(864)] = 42823, + [SMALL_STATE(865)] = 42858, + [SMALL_STATE(866)] = 42895, + [SMALL_STATE(867)] = 42928, + [SMALL_STATE(868)] = 42965, + [SMALL_STATE(869)] = 42999, + [SMALL_STATE(870)] = 43031, + [SMALL_STATE(871)] = 43063, + [SMALL_STATE(872)] = 43095, + [SMALL_STATE(873)] = 43126, + [SMALL_STATE(874)] = 43157, + [SMALL_STATE(875)] = 43198, + [SMALL_STATE(876)] = 43229, + [SMALL_STATE(877)] = 43260, + [SMALL_STATE(878)] = 43291, + [SMALL_STATE(879)] = 43322, + [SMALL_STATE(880)] = 43359, + [SMALL_STATE(881)] = 43390, + [SMALL_STATE(882)] = 43421, + [SMALL_STATE(883)] = 43452, + [SMALL_STATE(884)] = 43483, + [SMALL_STATE(885)] = 43514, + [SMALL_STATE(886)] = 43545, + [SMALL_STATE(887)] = 43576, + [SMALL_STATE(888)] = 43607, + [SMALL_STATE(889)] = 43638, + [SMALL_STATE(890)] = 43669, + [SMALL_STATE(891)] = 43700, + [SMALL_STATE(892)] = 43731, + [SMALL_STATE(893)] = 43762, + [SMALL_STATE(894)] = 43793, + [SMALL_STATE(895)] = 43824, + [SMALL_STATE(896)] = 43874, + [SMALL_STATE(897)] = 43912, + [SMALL_STATE(898)] = 43954, + [SMALL_STATE(899)] = 43992, + [SMALL_STATE(900)] = 44025, + [SMALL_STATE(901)] = 44072, + [SMALL_STATE(902)] = 44119, + [SMALL_STATE(903)] = 44156, + [SMALL_STATE(904)] = 44203, + [SMALL_STATE(905)] = 44250, + [SMALL_STATE(906)] = 44297, + [SMALL_STATE(907)] = 44344, + [SMALL_STATE(908)] = 44391, + [SMALL_STATE(909)] = 44438, + [SMALL_STATE(910)] = 44485, + [SMALL_STATE(911)] = 44524, + [SMALL_STATE(912)] = 44571, + [SMALL_STATE(913)] = 44603, + [SMALL_STATE(914)] = 44643, + [SMALL_STATE(915)] = 44683, + [SMALL_STATE(916)] = 44717, + [SMALL_STATE(917)] = 44757, + [SMALL_STATE(918)] = 44797, + [SMALL_STATE(919)] = 44837, + [SMALL_STATE(920)] = 44879, + [SMALL_STATE(921)] = 44919, + [SMALL_STATE(922)] = 44949, + [SMALL_STATE(923)] = 44979, + [SMALL_STATE(924)] = 45008, + [SMALL_STATE(925)] = 45045, + [SMALL_STATE(926)] = 45073, + [SMALL_STATE(927)] = 45101, + [SMALL_STATE(928)] = 45129, + [SMALL_STATE(929)] = 45159, + [SMALL_STATE(930)] = 45187, + [SMALL_STATE(931)] = 45215, + [SMALL_STATE(932)] = 45243, + [SMALL_STATE(933)] = 45275, + [SMALL_STATE(934)] = 45303, + [SMALL_STATE(935)] = 45331, + [SMALL_STATE(936)] = 45359, + [SMALL_STATE(937)] = 45389, + [SMALL_STATE(938)] = 45417, + [SMALL_STATE(939)] = 45445, + [SMALL_STATE(940)] = 45473, + [SMALL_STATE(941)] = 45505, + [SMALL_STATE(942)] = 45533, + [SMALL_STATE(943)] = 45561, + [SMALL_STATE(944)] = 45587, + [SMALL_STATE(945)] = 45615, + [SMALL_STATE(946)] = 45643, + [SMALL_STATE(947)] = 45669, + [SMALL_STATE(948)] = 45697, + [SMALL_STATE(949)] = 45725, + [SMALL_STATE(950)] = 45753, + [SMALL_STATE(951)] = 45781, + [SMALL_STATE(952)] = 45807, + [SMALL_STATE(953)] = 45835, + [SMALL_STATE(954)] = 45865, + [SMALL_STATE(955)] = 45893, + [SMALL_STATE(956)] = 45921, + [SMALL_STATE(957)] = 45949, + [SMALL_STATE(958)] = 45977, + [SMALL_STATE(959)] = 46004, + [SMALL_STATE(960)] = 46041, + [SMALL_STATE(961)] = 46078, + [SMALL_STATE(962)] = 46109, + [SMALL_STATE(963)] = 46140, + [SMALL_STATE(964)] = 46171, + [SMALL_STATE(965)] = 46202, + [SMALL_STATE(966)] = 46233, + [SMALL_STATE(967)] = 46268, + [SMALL_STATE(968)] = 46295, + [SMALL_STATE(969)] = 46326, + [SMALL_STATE(970)] = 46359, + [SMALL_STATE(971)] = 46390, + [SMALL_STATE(972)] = 46417, + [SMALL_STATE(973)] = 46454, + [SMALL_STATE(974)] = 46485, + [SMALL_STATE(975)] = 46516, + [SMALL_STATE(976)] = 46546, + [SMALL_STATE(977)] = 46570, + [SMALL_STATE(978)] = 46598, + [SMALL_STATE(979)] = 46626, + [SMALL_STATE(980)] = 46656, + [SMALL_STATE(981)] = 46680, + [SMALL_STATE(982)] = 46704, + [SMALL_STATE(983)] = 46736, + [SMALL_STATE(984)] = 46762, + [SMALL_STATE(985)] = 46794, + [SMALL_STATE(986)] = 46826, + [SMALL_STATE(987)] = 46852, + [SMALL_STATE(988)] = 46882, + [SMALL_STATE(989)] = 46906, + [SMALL_STATE(990)] = 46936, + [SMALL_STATE(991)] = 46968, + [SMALL_STATE(992)] = 47000, + [SMALL_STATE(993)] = 47030, + [SMALL_STATE(994)] = 47058, + [SMALL_STATE(995)] = 47088, + [SMALL_STATE(996)] = 47120, + [SMALL_STATE(997)] = 47154, + [SMALL_STATE(998)] = 47184, + [SMALL_STATE(999)] = 47214, + [SMALL_STATE(1000)] = 47244, + [SMALL_STATE(1001)] = 47274, + [SMALL_STATE(1002)] = 47302, + [SMALL_STATE(1003)] = 47336, + [SMALL_STATE(1004)] = 47366, + [SMALL_STATE(1005)] = 47394, + [SMALL_STATE(1006)] = 47423, + [SMALL_STATE(1007)] = 47454, + [SMALL_STATE(1008)] = 47483, + [SMALL_STATE(1009)] = 47514, + [SMALL_STATE(1010)] = 47543, + [SMALL_STATE(1011)] = 47572, + [SMALL_STATE(1012)] = 47601, + [SMALL_STATE(1013)] = 47630, + [SMALL_STATE(1014)] = 47663, + [SMALL_STATE(1015)] = 47692, + [SMALL_STATE(1016)] = 47721, + [SMALL_STATE(1017)] = 47750, + [SMALL_STATE(1018)] = 47779, + [SMALL_STATE(1019)] = 47808, + [SMALL_STATE(1020)] = 47837, + [SMALL_STATE(1021)] = 47866, + [SMALL_STATE(1022)] = 47897, + [SMALL_STATE(1023)] = 47926, + [SMALL_STATE(1024)] = 47951, + [SMALL_STATE(1025)] = 47976, + [SMALL_STATE(1026)] = 47999, + [SMALL_STATE(1027)] = 48028, + [SMALL_STATE(1028)] = 48057, + [SMALL_STATE(1029)] = 48086, + [SMALL_STATE(1030)] = 48115, + [SMALL_STATE(1031)] = 48144, + [SMALL_STATE(1032)] = 48175, + [SMALL_STATE(1033)] = 48204, + [SMALL_STATE(1034)] = 48235, + [SMALL_STATE(1035)] = 48266, + [SMALL_STATE(1036)] = 48295, + [SMALL_STATE(1037)] = 48324, + [SMALL_STATE(1038)] = 48353, + [SMALL_STATE(1039)] = 48382, + [SMALL_STATE(1040)] = 48413, + [SMALL_STATE(1041)] = 48438, + [SMALL_STATE(1042)] = 48467, + [SMALL_STATE(1043)] = 48498, + [SMALL_STATE(1044)] = 48531, + [SMALL_STATE(1045)] = 48562, + [SMALL_STATE(1046)] = 48591, + [SMALL_STATE(1047)] = 48620, + [SMALL_STATE(1048)] = 48651, + [SMALL_STATE(1049)] = 48679, + [SMALL_STATE(1050)] = 48707, + [SMALL_STATE(1051)] = 48735, + [SMALL_STATE(1052)] = 48763, + [SMALL_STATE(1053)] = 48793, + [SMALL_STATE(1054)] = 48821, + [SMALL_STATE(1055)] = 48849, + [SMALL_STATE(1056)] = 48877, + [SMALL_STATE(1057)] = 48905, + [SMALL_STATE(1058)] = 48933, + [SMALL_STATE(1059)] = 48961, + [SMALL_STATE(1060)] = 48983, + [SMALL_STATE(1061)] = 49013, + [SMALL_STATE(1062)] = 49043, + [SMALL_STATE(1063)] = 49071, + [SMALL_STATE(1064)] = 49101, + [SMALL_STATE(1065)] = 49131, + [SMALL_STATE(1066)] = 49157, + [SMALL_STATE(1067)] = 49183, + [SMALL_STATE(1068)] = 49211, + [SMALL_STATE(1069)] = 49241, + [SMALL_STATE(1070)] = 49263, + [SMALL_STATE(1071)] = 49287, + [SMALL_STATE(1072)] = 49315, + [SMALL_STATE(1073)] = 49339, + [SMALL_STATE(1074)] = 49365, + [SMALL_STATE(1075)] = 49393, + [SMALL_STATE(1076)] = 49421, + [SMALL_STATE(1077)] = 49449, + [SMALL_STATE(1078)] = 49475, + [SMALL_STATE(1079)] = 49503, + [SMALL_STATE(1080)] = 49529, + [SMALL_STATE(1081)] = 49557, + [SMALL_STATE(1082)] = 49587, + [SMALL_STATE(1083)] = 49615, + [SMALL_STATE(1084)] = 49643, + [SMALL_STATE(1085)] = 49671, + [SMALL_STATE(1086)] = 49699, + [SMALL_STATE(1087)] = 49727, + [SMALL_STATE(1088)] = 49755, + [SMALL_STATE(1089)] = 49783, + [SMALL_STATE(1090)] = 49807, + [SMALL_STATE(1091)] = 49835, + [SMALL_STATE(1092)] = 49865, + [SMALL_STATE(1093)] = 49893, + [SMALL_STATE(1094)] = 49921, + [SMALL_STATE(1095)] = 49949, + [SMALL_STATE(1096)] = 49977, + [SMALL_STATE(1097)] = 50005, + [SMALL_STATE(1098)] = 50033, + [SMALL_STATE(1099)] = 50061, + [SMALL_STATE(1100)] = 50085, + [SMALL_STATE(1101)] = 50113, + [SMALL_STATE(1102)] = 50141, + [SMALL_STATE(1103)] = 50171, + [SMALL_STATE(1104)] = 50197, + [SMALL_STATE(1105)] = 50225, + [SMALL_STATE(1106)] = 50253, + [SMALL_STATE(1107)] = 50281, + [SMALL_STATE(1108)] = 50309, + [SMALL_STATE(1109)] = 50337, + [SMALL_STATE(1110)] = 50365, + [SMALL_STATE(1111)] = 50387, + [SMALL_STATE(1112)] = 50417, + [SMALL_STATE(1113)] = 50445, + [SMALL_STATE(1114)] = 50473, + [SMALL_STATE(1115)] = 50503, + [SMALL_STATE(1116)] = 50531, + [SMALL_STATE(1117)] = 50559, + [SMALL_STATE(1118)] = 50587, + [SMALL_STATE(1119)] = 50617, + [SMALL_STATE(1120)] = 50645, + [SMALL_STATE(1121)] = 50675, + [SMALL_STATE(1122)] = 50703, + [SMALL_STATE(1123)] = 50733, + [SMALL_STATE(1124)] = 50761, + [SMALL_STATE(1125)] = 50789, + [SMALL_STATE(1126)] = 50817, + [SMALL_STATE(1127)] = 50845, + [SMALL_STATE(1128)] = 50869, + [SMALL_STATE(1129)] = 50893, + [SMALL_STATE(1130)] = 50921, + [SMALL_STATE(1131)] = 50949, + [SMALL_STATE(1132)] = 50977, + [SMALL_STATE(1133)] = 51001, + [SMALL_STATE(1134)] = 51026, + [SMALL_STATE(1135)] = 51051, + [SMALL_STATE(1136)] = 51078, + [SMALL_STATE(1137)] = 51101, + [SMALL_STATE(1138)] = 51126, + [SMALL_STATE(1139)] = 51151, + [SMALL_STATE(1140)] = 51176, + [SMALL_STATE(1141)] = 51201, + [SMALL_STATE(1142)] = 51226, + [SMALL_STATE(1143)] = 51253, + [SMALL_STATE(1144)] = 51280, + [SMALL_STATE(1145)] = 51307, + [SMALL_STATE(1146)] = 51334, + [SMALL_STATE(1147)] = 51361, + [SMALL_STATE(1148)] = 51388, + [SMALL_STATE(1149)] = 51415, + [SMALL_STATE(1150)] = 51442, + [SMALL_STATE(1151)] = 51465, + [SMALL_STATE(1152)] = 51492, + [SMALL_STATE(1153)] = 51519, + [SMALL_STATE(1154)] = 51546, + [SMALL_STATE(1155)] = 51569, + [SMALL_STATE(1156)] = 51596, + [SMALL_STATE(1157)] = 51623, + [SMALL_STATE(1158)] = 51650, + [SMALL_STATE(1159)] = 51675, + [SMALL_STATE(1160)] = 51700, + [SMALL_STATE(1161)] = 51723, + [SMALL_STATE(1162)] = 51750, + [SMALL_STATE(1163)] = 51775, + [SMALL_STATE(1164)] = 51800, + [SMALL_STATE(1165)] = 51825, + [SMALL_STATE(1166)] = 51848, + [SMALL_STATE(1167)] = 51873, + [SMALL_STATE(1168)] = 51898, + [SMALL_STATE(1169)] = 51921, + [SMALL_STATE(1170)] = 51946, + [SMALL_STATE(1171)] = 51973, + [SMALL_STATE(1172)] = 51998, + [SMALL_STATE(1173)] = 52021, + [SMALL_STATE(1174)] = 52042, + [SMALL_STATE(1175)] = 52065, + [SMALL_STATE(1176)] = 52092, + [SMALL_STATE(1177)] = 52117, + [SMALL_STATE(1178)] = 52144, + [SMALL_STATE(1179)] = 52169, + [SMALL_STATE(1180)] = 52196, + [SMALL_STATE(1181)] = 52223, + [SMALL_STATE(1182)] = 52246, + [SMALL_STATE(1183)] = 52271, + [SMALL_STATE(1184)] = 52298, + [SMALL_STATE(1185)] = 52325, + [SMALL_STATE(1186)] = 52350, + [SMALL_STATE(1187)] = 52375, + [SMALL_STATE(1188)] = 52402, + [SMALL_STATE(1189)] = 52425, + [SMALL_STATE(1190)] = 52452, + [SMALL_STATE(1191)] = 52477, + [SMALL_STATE(1192)] = 52502, + [SMALL_STATE(1193)] = 52529, + [SMALL_STATE(1194)] = 52556, + [SMALL_STATE(1195)] = 52583, + [SMALL_STATE(1196)] = 52610, + [SMALL_STATE(1197)] = 52637, + [SMALL_STATE(1198)] = 52661, + [SMALL_STATE(1199)] = 52685, + [SMALL_STATE(1200)] = 52707, + [SMALL_STATE(1201)] = 52727, + [SMALL_STATE(1202)] = 52751, + [SMALL_STATE(1203)] = 52771, + [SMALL_STATE(1204)] = 52791, + [SMALL_STATE(1205)] = 52815, + [SMALL_STATE(1206)] = 52839, + [SMALL_STATE(1207)] = 52861, + [SMALL_STATE(1208)] = 52885, + [SMALL_STATE(1209)] = 52907, + [SMALL_STATE(1210)] = 52927, + [SMALL_STATE(1211)] = 52951, + [SMALL_STATE(1212)] = 52973, + [SMALL_STATE(1213)] = 52997, + [SMALL_STATE(1214)] = 53021, + [SMALL_STATE(1215)] = 53041, + [SMALL_STATE(1216)] = 53061, + [SMALL_STATE(1217)] = 53085, + [SMALL_STATE(1218)] = 53109, + [SMALL_STATE(1219)] = 53133, + [SMALL_STATE(1220)] = 53153, + [SMALL_STATE(1221)] = 53173, + [SMALL_STATE(1222)] = 53193, + [SMALL_STATE(1223)] = 53217, + [SMALL_STATE(1224)] = 53241, + [SMALL_STATE(1225)] = 53265, + [SMALL_STATE(1226)] = 53285, + [SMALL_STATE(1227)] = 53309, + [SMALL_STATE(1228)] = 53333, + [SMALL_STATE(1229)] = 53353, + [SMALL_STATE(1230)] = 53377, + [SMALL_STATE(1231)] = 53401, + [SMALL_STATE(1232)] = 53425, + [SMALL_STATE(1233)] = 53449, + [SMALL_STATE(1234)] = 53473, + [SMALL_STATE(1235)] = 53497, + [SMALL_STATE(1236)] = 53519, + [SMALL_STATE(1237)] = 53543, + [SMALL_STATE(1238)] = 53565, + [SMALL_STATE(1239)] = 53589, + [SMALL_STATE(1240)] = 53613, + [SMALL_STATE(1241)] = 53633, + [SMALL_STATE(1242)] = 53655, + [SMALL_STATE(1243)] = 53675, + [SMALL_STATE(1244)] = 53695, + [SMALL_STATE(1245)] = 53715, + [SMALL_STATE(1246)] = 53739, + [SMALL_STATE(1247)] = 53763, + [SMALL_STATE(1248)] = 53783, + [SMALL_STATE(1249)] = 53807, + [SMALL_STATE(1250)] = 53827, + [SMALL_STATE(1251)] = 53847, + [SMALL_STATE(1252)] = 53867, + [SMALL_STATE(1253)] = 53891, + [SMALL_STATE(1254)] = 53913, + [SMALL_STATE(1255)] = 53937, + [SMALL_STATE(1256)] = 53961, + [SMALL_STATE(1257)] = 53985, + [SMALL_STATE(1258)] = 54005, + [SMALL_STATE(1259)] = 54029, + [SMALL_STATE(1260)] = 54049, + [SMALL_STATE(1261)] = 54069, + [SMALL_STATE(1262)] = 54093, + [SMALL_STATE(1263)] = 54113, + [SMALL_STATE(1264)] = 54137, + [SMALL_STATE(1265)] = 54159, + [SMALL_STATE(1266)] = 54183, + [SMALL_STATE(1267)] = 54207, + [SMALL_STATE(1268)] = 54227, + [SMALL_STATE(1269)] = 54251, + [SMALL_STATE(1270)] = 54273, + [SMALL_STATE(1271)] = 54293, + [SMALL_STATE(1272)] = 54317, + [SMALL_STATE(1273)] = 54341, + [SMALL_STATE(1274)] = 54361, + [SMALL_STATE(1275)] = 54381, + [SMALL_STATE(1276)] = 54405, + [SMALL_STATE(1277)] = 54427, + [SMALL_STATE(1278)] = 54449, + [SMALL_STATE(1279)] = 54473, + [SMALL_STATE(1280)] = 54497, + [SMALL_STATE(1281)] = 54517, + [SMALL_STATE(1282)] = 54541, + [SMALL_STATE(1283)] = 54565, + [SMALL_STATE(1284)] = 54589, + [SMALL_STATE(1285)] = 54611, + [SMALL_STATE(1286)] = 54635, + [SMALL_STATE(1287)] = 54659, + [SMALL_STATE(1288)] = 54679, + [SMALL_STATE(1289)] = 54699, + [SMALL_STATE(1290)] = 54719, + [SMALL_STATE(1291)] = 54743, + [SMALL_STATE(1292)] = 54767, + [SMALL_STATE(1293)] = 54791, + [SMALL_STATE(1294)] = 54813, + [SMALL_STATE(1295)] = 54833, + [SMALL_STATE(1296)] = 54857, + [SMALL_STATE(1297)] = 54879, + [SMALL_STATE(1298)] = 54899, + [SMALL_STATE(1299)] = 54923, + [SMALL_STATE(1300)] = 54945, + [SMALL_STATE(1301)] = 54965, + [SMALL_STATE(1302)] = 54989, + [SMALL_STATE(1303)] = 55011, + [SMALL_STATE(1304)] = 55035, + [SMALL_STATE(1305)] = 55055, + [SMALL_STATE(1306)] = 55079, + [SMALL_STATE(1307)] = 55099, + [SMALL_STATE(1308)] = 55121, + [SMALL_STATE(1309)] = 55141, + [SMALL_STATE(1310)] = 55165, + [SMALL_STATE(1311)] = 55189, + [SMALL_STATE(1312)] = 55213, + [SMALL_STATE(1313)] = 55237, + [SMALL_STATE(1314)] = 55257, + [SMALL_STATE(1315)] = 55281, + [SMALL_STATE(1316)] = 55305, + [SMALL_STATE(1317)] = 55329, + [SMALL_STATE(1318)] = 55349, + [SMALL_STATE(1319)] = 55370, + [SMALL_STATE(1320)] = 55391, + [SMALL_STATE(1321)] = 55410, + [SMALL_STATE(1322)] = 55431, + [SMALL_STATE(1323)] = 55452, + [SMALL_STATE(1324)] = 55473, + [SMALL_STATE(1325)] = 55492, + [SMALL_STATE(1326)] = 55513, + [SMALL_STATE(1327)] = 55534, + [SMALL_STATE(1328)] = 55555, + [SMALL_STATE(1329)] = 55576, + [SMALL_STATE(1330)] = 55595, + [SMALL_STATE(1331)] = 55616, + [SMALL_STATE(1332)] = 55637, + [SMALL_STATE(1333)] = 55656, + [SMALL_STATE(1334)] = 55677, + [SMALL_STATE(1335)] = 55698, + [SMALL_STATE(1336)] = 55719, + [SMALL_STATE(1337)] = 55738, + [SMALL_STATE(1338)] = 55759, + [SMALL_STATE(1339)] = 55780, + [SMALL_STATE(1340)] = 55801, + [SMALL_STATE(1341)] = 55822, + [SMALL_STATE(1342)] = 55843, + [SMALL_STATE(1343)] = 55864, + [SMALL_STATE(1344)] = 55885, + [SMALL_STATE(1345)] = 55904, + [SMALL_STATE(1346)] = 55925, + [SMALL_STATE(1347)] = 55946, + [SMALL_STATE(1348)] = 55965, + [SMALL_STATE(1349)] = 55986, + [SMALL_STATE(1350)] = 56007, + [SMALL_STATE(1351)] = 56028, + [SMALL_STATE(1352)] = 56049, + [SMALL_STATE(1353)] = 56070, + [SMALL_STATE(1354)] = 56091, + [SMALL_STATE(1355)] = 56112, + [SMALL_STATE(1356)] = 56133, + [SMALL_STATE(1357)] = 56152, + [SMALL_STATE(1358)] = 56173, + [SMALL_STATE(1359)] = 56194, + [SMALL_STATE(1360)] = 56215, + [SMALL_STATE(1361)] = 56236, + [SMALL_STATE(1362)] = 56257, + [SMALL_STATE(1363)] = 56278, + [SMALL_STATE(1364)] = 56297, + [SMALL_STATE(1365)] = 56316, + [SMALL_STATE(1366)] = 56337, + [SMALL_STATE(1367)] = 56356, + [SMALL_STATE(1368)] = 56377, + [SMALL_STATE(1369)] = 56398, + [SMALL_STATE(1370)] = 56419, + [SMALL_STATE(1371)] = 56440, + [SMALL_STATE(1372)] = 56459, + [SMALL_STATE(1373)] = 56480, + [SMALL_STATE(1374)] = 56501, + [SMALL_STATE(1375)] = 56522, + [SMALL_STATE(1376)] = 56543, + [SMALL_STATE(1377)] = 56564, + [SMALL_STATE(1378)] = 56585, + [SMALL_STATE(1379)] = 56606, + [SMALL_STATE(1380)] = 56627, + [SMALL_STATE(1381)] = 56648, + [SMALL_STATE(1382)] = 56667, + [SMALL_STATE(1383)] = 56686, + [SMALL_STATE(1384)] = 56707, + [SMALL_STATE(1385)] = 56728, + [SMALL_STATE(1386)] = 56749, + [SMALL_STATE(1387)] = 56770, + [SMALL_STATE(1388)] = 56791, + [SMALL_STATE(1389)] = 56812, + [SMALL_STATE(1390)] = 56833, + [SMALL_STATE(1391)] = 56854, + [SMALL_STATE(1392)] = 56875, + [SMALL_STATE(1393)] = 56894, + [SMALL_STATE(1394)] = 56913, + [SMALL_STATE(1395)] = 56934, + [SMALL_STATE(1396)] = 56955, + [SMALL_STATE(1397)] = 56976, + [SMALL_STATE(1398)] = 56995, + [SMALL_STATE(1399)] = 57016, + [SMALL_STATE(1400)] = 57037, + [SMALL_STATE(1401)] = 57058, + [SMALL_STATE(1402)] = 57079, + [SMALL_STATE(1403)] = 57100, + [SMALL_STATE(1404)] = 57121, + [SMALL_STATE(1405)] = 57142, + [SMALL_STATE(1406)] = 57163, + [SMALL_STATE(1407)] = 57184, + [SMALL_STATE(1408)] = 57203, + [SMALL_STATE(1409)] = 57222, + [SMALL_STATE(1410)] = 57243, + [SMALL_STATE(1411)] = 57264, + [SMALL_STATE(1412)] = 57283, + [SMALL_STATE(1413)] = 57304, + [SMALL_STATE(1414)] = 57325, + [SMALL_STATE(1415)] = 57344, + [SMALL_STATE(1416)] = 57365, + [SMALL_STATE(1417)] = 57384, + [SMALL_STATE(1418)] = 57403, + [SMALL_STATE(1419)] = 57422, + [SMALL_STATE(1420)] = 57443, + [SMALL_STATE(1421)] = 57462, + [SMALL_STATE(1422)] = 57483, + [SMALL_STATE(1423)] = 57504, + [SMALL_STATE(1424)] = 57523, + [SMALL_STATE(1425)] = 57544, + [SMALL_STATE(1426)] = 57565, + [SMALL_STATE(1427)] = 57586, + [SMALL_STATE(1428)] = 57605, + [SMALL_STATE(1429)] = 57624, + [SMALL_STATE(1430)] = 57645, + [SMALL_STATE(1431)] = 57666, + [SMALL_STATE(1432)] = 57685, + [SMALL_STATE(1433)] = 57704, + [SMALL_STATE(1434)] = 57725, + [SMALL_STATE(1435)] = 57744, + [SMALL_STATE(1436)] = 57763, + [SMALL_STATE(1437)] = 57782, + [SMALL_STATE(1438)] = 57803, + [SMALL_STATE(1439)] = 57824, + [SMALL_STATE(1440)] = 57845, + [SMALL_STATE(1441)] = 57866, + [SMALL_STATE(1442)] = 57884, + [SMALL_STATE(1443)] = 57902, + [SMALL_STATE(1444)] = 57920, + [SMALL_STATE(1445)] = 57938, + [SMALL_STATE(1446)] = 57956, + [SMALL_STATE(1447)] = 57974, + [SMALL_STATE(1448)] = 57992, + [SMALL_STATE(1449)] = 58010, + [SMALL_STATE(1450)] = 58028, + [SMALL_STATE(1451)] = 58046, + [SMALL_STATE(1452)] = 58064, + [SMALL_STATE(1453)] = 58082, + [SMALL_STATE(1454)] = 58100, + [SMALL_STATE(1455)] = 58118, + [SMALL_STATE(1456)] = 58136, + [SMALL_STATE(1457)] = 58154, + [SMALL_STATE(1458)] = 58172, + [SMALL_STATE(1459)] = 58190, + [SMALL_STATE(1460)] = 58208, + [SMALL_STATE(1461)] = 58226, + [SMALL_STATE(1462)] = 58244, + [SMALL_STATE(1463)] = 58262, + [SMALL_STATE(1464)] = 58280, + [SMALL_STATE(1465)] = 58298, + [SMALL_STATE(1466)] = 58316, + [SMALL_STATE(1467)] = 58334, + [SMALL_STATE(1468)] = 58352, + [SMALL_STATE(1469)] = 58370, + [SMALL_STATE(1470)] = 58388, + [SMALL_STATE(1471)] = 58406, + [SMALL_STATE(1472)] = 58424, + [SMALL_STATE(1473)] = 58442, + [SMALL_STATE(1474)] = 58460, + [SMALL_STATE(1475)] = 58478, + [SMALL_STATE(1476)] = 58496, + [SMALL_STATE(1477)] = 58514, + [SMALL_STATE(1478)] = 58532, + [SMALL_STATE(1479)] = 58550, + [SMALL_STATE(1480)] = 58568, + [SMALL_STATE(1481)] = 58586, + [SMALL_STATE(1482)] = 58604, + [SMALL_STATE(1483)] = 58622, + [SMALL_STATE(1484)] = 58640, + [SMALL_STATE(1485)] = 58658, + [SMALL_STATE(1486)] = 58676, + [SMALL_STATE(1487)] = 58694, + [SMALL_STATE(1488)] = 58712, + [SMALL_STATE(1489)] = 58730, + [SMALL_STATE(1490)] = 58748, + [SMALL_STATE(1491)] = 58766, + [SMALL_STATE(1492)] = 58784, + [SMALL_STATE(1493)] = 58802, + [SMALL_STATE(1494)] = 58820, + [SMALL_STATE(1495)] = 58838, + [SMALL_STATE(1496)] = 58856, + [SMALL_STATE(1497)] = 58874, + [SMALL_STATE(1498)] = 58892, + [SMALL_STATE(1499)] = 58910, + [SMALL_STATE(1500)] = 58928, + [SMALL_STATE(1501)] = 58946, + [SMALL_STATE(1502)] = 58964, + [SMALL_STATE(1503)] = 58982, + [SMALL_STATE(1504)] = 59000, + [SMALL_STATE(1505)] = 59018, + [SMALL_STATE(1506)] = 59036, + [SMALL_STATE(1507)] = 59054, + [SMALL_STATE(1508)] = 59072, + [SMALL_STATE(1509)] = 59090, + [SMALL_STATE(1510)] = 59108, + [SMALL_STATE(1511)] = 59126, + [SMALL_STATE(1512)] = 59144, + [SMALL_STATE(1513)] = 59162, + [SMALL_STATE(1514)] = 59180, + [SMALL_STATE(1515)] = 59198, + [SMALL_STATE(1516)] = 59216, + [SMALL_STATE(1517)] = 59234, + [SMALL_STATE(1518)] = 59252, + [SMALL_STATE(1519)] = 59270, + [SMALL_STATE(1520)] = 59288, + [SMALL_STATE(1521)] = 59306, + [SMALL_STATE(1522)] = 59324, + [SMALL_STATE(1523)] = 59342, + [SMALL_STATE(1524)] = 59360, + [SMALL_STATE(1525)] = 59378, + [SMALL_STATE(1526)] = 59396, + [SMALL_STATE(1527)] = 59414, + [SMALL_STATE(1528)] = 59432, + [SMALL_STATE(1529)] = 59450, + [SMALL_STATE(1530)] = 59468, + [SMALL_STATE(1531)] = 59486, + [SMALL_STATE(1532)] = 59504, + [SMALL_STATE(1533)] = 59522, + [SMALL_STATE(1534)] = 59540, + [SMALL_STATE(1535)] = 59558, + [SMALL_STATE(1536)] = 59576, + [SMALL_STATE(1537)] = 59594, + [SMALL_STATE(1538)] = 59612, + [SMALL_STATE(1539)] = 59630, + [SMALL_STATE(1540)] = 59648, + [SMALL_STATE(1541)] = 59666, + [SMALL_STATE(1542)] = 59684, + [SMALL_STATE(1543)] = 59702, + [SMALL_STATE(1544)] = 59720, + [SMALL_STATE(1545)] = 59738, + [SMALL_STATE(1546)] = 59756, + [SMALL_STATE(1547)] = 59774, + [SMALL_STATE(1548)] = 59792, + [SMALL_STATE(1549)] = 59810, + [SMALL_STATE(1550)] = 59828, + [SMALL_STATE(1551)] = 59846, + [SMALL_STATE(1552)] = 59864, + [SMALL_STATE(1553)] = 59882, + [SMALL_STATE(1554)] = 59900, + [SMALL_STATE(1555)] = 59918, + [SMALL_STATE(1556)] = 59936, + [SMALL_STATE(1557)] = 59954, + [SMALL_STATE(1558)] = 59972, + [SMALL_STATE(1559)] = 59990, + [SMALL_STATE(1560)] = 60008, + [SMALL_STATE(1561)] = 60026, + [SMALL_STATE(1562)] = 60030, + [SMALL_STATE(1563)] = 60034, +}; + +static const TSParseActionEntry ts_parse_actions[] = { + [0] = {.entry = {.count = 0, .reusable = false}}, + [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), + [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1193), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [9] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0, 0, 0), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1047), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(266), + [15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_expression, 2, 0, 72), + [17] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_expression, 2, 0, 72), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(191), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(482), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(895), + [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1523), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1523), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(496), + [37] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_break_expression, 2, 0, 72), SHIFT(500), + [40] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [42] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), + [44] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1543), + [46] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1504), + [48] = {.entry = {.count = 1, .reusable = false}}, SHIFT(141), + [50] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), + [52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5), + [54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1546), + [56] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_break_expression, 2, 0, 72), SHIFT(427), + [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_break_expression, 2, 0, 72), SHIFT(187), + [62] = {.entry = {.count = 1, .reusable = false}}, SHIFT(4), + [64] = {.entry = {.count = 1, .reusable = false}}, SHIFT(335), + [66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1547), + [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), + [70] = {.entry = {.count = 1, .reusable = false}}, SHIFT(422), + [72] = {.entry = {.count = 1, .reusable = false}}, SHIFT(350), + [74] = {.entry = {.count = 1, .reusable = true}}, SHIFT(350), + [76] = {.entry = {.count = 1, .reusable = false}}, SHIFT(278), + [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_expression, 2, 0, 72), + [80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_expression, 2, 0, 72), + [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_expression, 1, 0, 0), + [84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_expression, 1, 0, 0), + [86] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_break_expression, 1, 0, 0), SHIFT(500), + [89] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_break_expression, 1, 0, 0), SHIFT(427), + [92] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_break_expression, 1, 0, 0), SHIFT(187), + [95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1510), + [97] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_abort_expression, 1, 0, 0), + [99] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_abort_expression, 1, 0, 0), + [101] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_abort_expression, 1, 0, 0), SHIFT(500), + [104] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_abort_expression, 1, 0, 0), SHIFT(427), + [107] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_abort_expression, 1, 0, 0), SHIFT(187), + [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_expression, 1, 0, 0), + [112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_expression, 1, 0, 0), + [114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(224), + [116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1560), + [118] = {.entry = {.count = 1, .reusable = false}}, SHIFT(190), + [120] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [122] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [124] = {.entry = {.count = 1, .reusable = false}}, SHIFT(306), + [126] = {.entry = {.count = 1, .reusable = false}}, SHIFT(142), + [128] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_break_expression, 2, 0, 72), SHIFT(482), + [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1515), + [133] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1446), + [135] = {.entry = {.count = 1, .reusable = false}}, SHIFT(79), + [137] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [139] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), + [141] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_break_expression, 2, 0, 72), SHIFT(138), + [144] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [146] = {.entry = {.count = 1, .reusable = false}}, SHIFT(391), + [148] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_abort_expression, 1, 0, 0), SHIFT(227), + [151] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_abort_expression, 1, 0, 0), SHIFT(138), + [154] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1545), + [156] = {.entry = {.count = 1, .reusable = false}}, SHIFT(231), + [158] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17), + [160] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [162] = {.entry = {.count = 1, .reusable = false}}, SHIFT(305), + [164] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_break_expression, 1, 0, 0), SHIFT(138), + [167] = {.entry = {.count = 1, .reusable = false}}, SHIFT(139), + [169] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1447), + [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(102), + [173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [175] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), + [177] = {.entry = {.count = 1, .reusable = false}}, SHIFT(425), + [179] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_abort_expression, 1, 0, 0), SHIFT(211), + [182] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1516), + [184] = {.entry = {.count = 1, .reusable = false}}, SHIFT(212), + [186] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), + [188] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), + [190] = {.entry = {.count = 1, .reusable = false}}, SHIFT(464), + [192] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1445), + [194] = {.entry = {.count = 1, .reusable = false}}, SHIFT(917), + [196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), + [198] = {.entry = {.count = 1, .reusable = false}}, SHIFT(560), + [200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(496), + [202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(500), + [204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), + [206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(812), + [210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(798), + [214] = {.entry = {.count = 1, .reusable = false}}, SHIFT(51), + [216] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1135), + [218] = {.entry = {.count = 1, .reusable = true}}, SHIFT(818), + [220] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(266), + [223] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(905), + [226] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(24), + [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), + [231] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(59), + [234] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(224), + [237] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(895), + [240] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(560), + [243] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1523), + [246] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1523), + [249] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(496), + [252] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(500), + [255] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(37), + [258] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(396), + [261] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1543), + [264] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1545), + [267] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(231), + [270] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(17), + [273] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(16), + [276] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1546), + [279] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(427), + [282] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(227), + [285] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(4), + [288] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(335), + [291] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(1547), + [294] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(423), + [297] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(422), + [300] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [303] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [306] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 2, 0, 0), SHIFT_REPEAT(305), + [309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), + [311] = {.entry = {.count = 1, .reusable = false}}, SHIFT(49), + [313] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(266), + [316] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(905), + [319] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(24), + [322] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(59), + [325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), + [327] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(224), + [330] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(895), + [333] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(1523), + [336] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(1523), + [339] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(496), + [342] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(500), + [345] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(37), + [348] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(396), + [351] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(1543), + [354] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(1545), + [357] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(231), + [360] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(17), + [363] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(16), + [366] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(1546), + [369] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(427), + [372] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(227), + [375] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(4), + [378] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(335), + [381] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(1547), + [384] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(423), + [387] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(422), + [390] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [393] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [396] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(305), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(419), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(445), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(467), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(470), + [411] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(266), + [414] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(905), + [417] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(24), + [420] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(59), + [423] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(224), + [426] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), + [428] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(895), + [431] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(1523), + [434] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(1523), + [437] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(496), + [440] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(500), + [443] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(37), + [446] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(396), + [449] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(1543), + [452] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(1545), + [455] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(231), + [458] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(17), + [461] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(16), + [464] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(1546), + [467] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(427), + [470] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(227), + [473] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(4), + [476] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(335), + [479] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(1547), + [482] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(423), + [485] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(422), + [488] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(350), + [491] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(350), + [494] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 127), SHIFT_REPEAT(305), + [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), + [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(398), + [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(424), + [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(809), + [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), + [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(362), + [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(808), + [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), + [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(442), + [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), + [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(421), + [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(801), + [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399), + [537] = {.entry = {.count = 1, .reusable = false}}, SHIFT(915), + [539] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_type_parameters, 2, 0, 0), + [541] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), + [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [545] = {.entry = {.count = 1, .reusable = false}}, SHIFT(270), + [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1533), + [549] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(280), + [552] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(787), + [555] = {.entry = {.count = 1, .reusable = false}}, SHIFT(851), + [557] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_type_parameters, 3, 0, 0), + [559] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), + [561] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(280), + [564] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(787), + [567] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_label, 2, 0, 0), + [569] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 2, 0, 0), + [571] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(915), + [574] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(298), + [577] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(1533), + [580] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(1533), + [583] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(280), + [586] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(787), + [589] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(350), + [592] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(350), + [595] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 3, 0, 0), SHIFT(851), + [598] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(915), + [601] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(298), + [604] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(1533), + [607] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(1533), + [610] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(280), + [613] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(787), + [616] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(350), + [619] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(350), + [622] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_function_type_parameters, 2, 0, 0), SHIFT(851), + [625] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_body, 3, 0, 0), + [627] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_body, 3, 0, 0), + [629] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_usual_spec_function, 3, 0, 37), + [631] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_usual_spec_function, 3, 0, 37), + [633] = {.entry = {.count = 1, .reusable = false}}, SHIFT(295), + [635] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_body, 2, 0, 0), + [637] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_body, 2, 0, 0), + [639] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_uninterpreted_spec_function, 3, 0, 62), + [641] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_uninterpreted_spec_function, 3, 0, 62), + [643] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_block, 3, 0, 41), + [645] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_block, 3, 0, 41), + [647] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, 0, 0), + [649] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 4, 0, 0), + [651] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_block, 2, 0, 0), + [653] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_block, 2, 0, 0), + [655] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_function, 1, 0, 0), + [657] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_function, 1, 0, 0), + [659] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_native_spec_function, 4, 0, 86), + [661] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_native_spec_function, 4, 0, 86), + [663] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_block, 2, 0, 20), + [665] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_block, 2, 0, 20), + [667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), + [669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2, 0, 0), + [671] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 0), + [673] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 5, 0, 0), + [675] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_body, 4, 0, 0), + [677] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_body, 4, 0, 0), + [679] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, 0, 0), + [681] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 3, 0, 0), + [683] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_arguments, 3, 0, 0), + [685] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 3, 0, 0), + [687] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_arguments, 5, 0, 0), + [689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 5, 0, 0), + [691] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_identity, 3, 0, 8), + [693] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_identity, 3, 0, 8), + [695] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__module_identifier, 1, 0, 4), + [697] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__module_identifier, 1, 0, 4), + [699] = {.entry = {.count = 1, .reusable = true}}, SHIFT(280), + [701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(787), + [703] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_arguments, 4, 0, 0), + [705] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_arguments, 4, 0, 0), + [707] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_apply_type, 1, 0, 0), + [709] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_apply_type, 1, 0, 0), + [711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(392), + [713] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1223), + [715] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1507), + [717] = {.entry = {.count = 1, .reusable = false}}, SHIFT(914), + [719] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1298), + [721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), + [723] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1444), + [725] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1369), + [727] = {.entry = {.count = 1, .reusable = false}}, SHIFT(446), + [729] = {.entry = {.count = 1, .reusable = false}}, SHIFT(34), + [731] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), + [733] = {.entry = {.count = 1, .reusable = false}}, SHIFT(44), + [735] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28), + [737] = {.entry = {.count = 1, .reusable = false}}, SHIFT(184), + [739] = {.entry = {.count = 1, .reusable = false}}, SHIFT(185), + [741] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1187), + [743] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1511), + [745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [747] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_type_parameters, 4, 0, 0), + [749] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_type_parameters, 4, 0, 0), + [751] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 4, 0, 0), + [753] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 4, 0, 0), + [755] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 6), + [757] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 1, 0, 6), + [759] = {.entry = {.count = 3, .reusable = false}}, REDUCE(sym_module_access, 1, 0, 6), REDUCE(sym__module_identifier, 1, 0, 4), SHIFT(384), + [763] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_type, 3, 0, 80), + [765] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_type, 3, 0, 80), + [767] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 3, 0, 28), + [769] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 3, 0, 28), + [771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1441), + [773] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_module_access, 3, 0, 28), SHIFT(392), + [776] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 2, 0, 0), + [778] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 2, 0, 0), + [780] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_primitive_type, 1, 0, 0), + [782] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_type, 1, 0, 0), + [784] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__type, 1, 0, 0), + [786] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type, 1, 0, 0), + [788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 0), + [790] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 1, 0, 0), + [792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1462), + [794] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_module_access, 1, 0, 0), SHIFT(372), + [797] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_apply_type, 2, 0, 11), + [799] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_apply_type, 2, 0, 11), + [801] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat1, 2, 0, 0), + [803] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1445), + [806] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat1, 2, 0, 0), SHIFT_REPEAT(917), + [809] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_spec_body_repeat1, 2, 0, 0), + [811] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_ref_type, 2, 0, 0), + [813] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ref_type, 2, 0, 0), + [815] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple_type, 3, 0, 0), + [817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_type, 3, 0, 0), + [819] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1341), + [821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__reserved_identifier, 1, 0, 0), + [823] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__reserved_identifier, 1, 0, 0), + [825] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(897), + [828] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(903), + [831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), + [833] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(573), + [836] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [839] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [842] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(400), + [845] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(1242), + [848] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(934), + [851] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(926), + [854] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(923), + [857] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(923), + [860] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(851), + [863] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 2, 0, 11), + [865] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 2, 0, 11), + [867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1519), + [869] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__module_identifier, 1, 0, 4), REDUCE(sym_module_access, 3, 0, 29), + [872] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym__module_identifier, 1, 0, 4), REDUCE(sym_module_access, 3, 0, 29), + [875] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_term, 1, 0, 0), + [877] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression_term, 1, 0, 0), + [879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1081), + [881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [883] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 4, 0, 50), + [885] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 4, 0, 50), + [887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(476), + [889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), + [891] = {.entry = {.count = 1, .reusable = false}}, SHIFT(897), + [893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), + [895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), + [897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(573), + [899] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1533), + [901] = {.entry = {.count = 1, .reusable = false}}, SHIFT(400), + [903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1242), + [905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(934), + [907] = {.entry = {.count = 1, .reusable = false}}, SHIFT(926), + [909] = {.entry = {.count = 1, .reusable = false}}, SHIFT(923), + [911] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [913] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(1223), + [916] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(1298), + [919] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), + [921] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(1444), + [924] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(1369), + [927] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(446), + [930] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(34), + [933] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(45), + [936] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(44), + [939] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(28), + [942] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(184), + [945] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(185), + [948] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(1187), + [951] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 2, 0, 0), SHIFT_REPEAT(1511), + [954] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_use_declaration, 3, 0, 0), + [956] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_declaration, 3, 0, 0), + [958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), + [960] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(915), + [963] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(298), + [966] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), + [968] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(270), + [971] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [974] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(339), + [977] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(787), + [980] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [983] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [986] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(851), + [989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [991] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 2, 0, 9), + [993] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 2, 0, 9), + [995] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 2, 0, 10), + [997] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 2, 0, 10), + [999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(563), + [1001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(937), + [1003] = {.entry = {.count = 1, .reusable = false}}, SHIFT(420), + [1005] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_use_declaration, 4, 0, 0), + [1007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_declaration, 4, 0, 0), + [1009] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 6, 0, 102), + [1011] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 6, 0, 102), + [1013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(866), + [1015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(949), + [1017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(944), + [1019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(450), + [1021] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_name_expression, 1, 0, 47), + [1023] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_name_expression, 1, 0, 47), + [1025] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1344), + [1027] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 5, 0, 81), + [1029] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 5, 0, 81), + [1031] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat1, 1, 0, 0), + [1033] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_spec_body_repeat1, 1, 0, 0), + [1035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [1037] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_access, 4, 0, 51), + [1039] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_module_access, 4, 0, 51), + [1041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(862), + [1043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [1045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [1047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [1049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), + [1051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [1053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [1055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), + [1057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [1059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1491), + [1061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), + [1063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [1065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), + [1067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1494), + [1069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), + [1071] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_expression, 1, 0, 0), + [1073] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_expression, 1, 0, 0), + [1075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [1077] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_name_expression, 2, 0, 66), + [1079] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_name_expression, 2, 0, 66), + [1081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(946), + [1083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [1085] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_type, 1, 0, 25), + [1087] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_type, 1, 0, 25), + [1089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [1091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [1093] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1006), + [1095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [1097] = {.entry = {.count = 1, .reusable = false}}, SHIFT(428), + [1099] = {.entry = {.count = 1, .reusable = true}}, SHIFT(321), + [1101] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_vector_expression_repeat1, 2, 0, 0), + [1103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_num_literal, 1, 0, 0), + [1105] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_num_literal, 1, 0, 0), + [1107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), + [1109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(658), + [1111] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(938), + [1114] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_or_bind_list, 3, 0, 0), + [1116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1367), + [1118] = {.entry = {.count = 1, .reusable = false}}, SHIFT(373), + [1120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1464), + [1122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), + [1124] = {.entry = {.count = 1, .reusable = false}}, SHIFT(469), + [1126] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 3, 0, 28), SHIFT(1451), + [1129] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 3, 0, 28), SHIFT(392), + [1132] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 6), REDUCE(sym__module_identifier, 1, 0, 4), + [1135] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 6), REDUCE(sym__module_identifier, 1, 0, 4), SHIFT(392), + [1139] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 0), SHIFT(1474), + [1142] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 0), SHIFT(392), + [1145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_value, 1, 0, 0), + [1147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__literal_value, 1, 0, 0), + [1149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1321), + [1151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), + [1153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_or_bind_list, 6, 0, 0), + [1155] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 6, 0, 0), SHIFT(941), + [1158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_or_bind_list, 6, 0, 0), + [1160] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_block_repeat1, 1, 0, 0), + [1162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 1, 0, 0), + [1164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), + [1166] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(935), + [1169] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_or_bind_list, 2, 0, 0), + [1171] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), + [1173] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), SHIFT(956), + [1176] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_or_bind_list, 5, 0, 0), + [1178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_item, 2, 0, 0), + [1180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_item, 2, 0, 0), + [1182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), + [1184] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), SHIFT(954), + [1187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_or_bind_list, 4, 0, 0), + [1189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_expression, 5, 0, 146), + [1191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_annotation_expression, 5, 0, 146), + [1193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression, 3, 0, 101), + [1195] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expression, 3, 0, 101), + [1197] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 4, 0, 0), + [1199] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 4, 0, 0), + [1201] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_bindings, 4, 0, 0), + [1203] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_bindings, 4, 0, 0), + [1205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 4, 0, 0), + [1207] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 4, 0, 0), + [1209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dereference_expression, 2, 0, 67), + [1211] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), + [1213] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dereference_expression, 2, 0, 67), + [1215] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 3, 0, 0), + [1217] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 3, 0, 0), + [1219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field_initialize_list, 3, 0, 0), + [1221] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_field_initialize_list, 3, 0, 0), + [1223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_continue_expression, 2, 0, 72), + [1225] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_continue_expression, 2, 0, 72), + [1227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 124), + [1229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_index_expression_repeat1, 2, 0, 124), + [1231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression, 4, 0, 125), + [1233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expression, 4, 0, 125), + [1235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression, 4, 0, 126), + [1237] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expression, 4, 0, 126), + [1239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dot_expression, 3, 0, 100), + [1241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_dot_expression, 3, 0, 100), + [1243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [1245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 2, 0, 0), + [1247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 2, 0, 0), + [1249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field_initialize_list, 2, 0, 0), + [1251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_field_initialize_list, 2, 0, 0), + [1253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_macro_call_expression, 2, 0, 75), + [1255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_macro_call_expression, 2, 0, 75), + [1257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, 0, 97), + [1259] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, 0, 97), + [1261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cast_expression, 3, 0, 96), + [1263] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cast_expression, 3, 0, 96), + [1265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_macro_call_expression, 3, 0, 95), + [1267] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_macro_call_expression, 3, 0, 95), + [1269] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_bindings, 2, 0, 0), + [1271] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_bindings, 2, 0, 0), + [1273] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 2, 0, 0), + [1275] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 2, 0, 0), + [1277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 5, 0, 0), + [1279] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 5, 0, 0), + [1281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_literal, 1, 0, 0), + [1283] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_literal, 1, 0, 0), + [1285] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 3, 0, 0), + [1287] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 3, 0, 0), + [1289] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_imm_ref, 1, 0, 0), + [1291] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_imm_ref, 1, 0, 0), + [1293] = {.entry = {.count = 1, .reusable = false}}, SHIFT(490), + [1295] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_bindings, 3, 0, 0), + [1297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_bindings, 3, 0, 0), + [1299] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 5, 0, 0), + [1301] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 5, 0, 0), + [1303] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 2, 0, 11), SHIFT(1458), + [1306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pack_expression, 2, 0, 20), + [1308] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pack_expression, 2, 0, 20), + [1310] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expression, 2, 1, 77), + [1312] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_call_expression, 2, 1, 77), + [1314] = {.entry = {.count = 1, .reusable = false}}, SHIFT(910), + [1316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), + [1318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(471), + [1320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(564), + [1322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_expression, 5, 0, 149), + [1324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_match_expression, 5, 0, 149), + [1326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_borrow_expression, 2, 0, 67), + [1328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_borrow_expression, 2, 0, 67), + [1330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_move_or_copy_expression, 2, 0, 67), + [1332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_move_or_copy_expression, 2, 0, 67), + [1334] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 9, 0, 0), + [1336] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 9, 0, 0), + [1338] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 4, 0, 0), + [1340] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 4, 0, 0), + [1342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field_initialize_list, 4, 0, 0), + [1344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_field_initialize_list, 4, 0, 0), + [1346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_body, 4, 0, 0), + [1348] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__match_body, 4, 0, 0), + [1350] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unit_expression, 2, 0, 0), + [1352] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unit_expression, 2, 0, 0), + [1354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression_list, 3, 0, 0), + [1356] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression_list, 3, 0, 0), + [1358] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index_expression, 5, 0, 151), + [1360] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index_expression, 5, 0, 151), + [1362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 8, 0, 0), + [1364] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 8, 0, 0), + [1366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_condition_kind, 1, 0, 0), + [1368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_condition_kind, 1, 0, 0), + [1370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(668), + [1372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [1374] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__expression, 1, 0, 0), REDUCE(sym__expression_term, 1, 0, 0), + [1377] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym__expression, 1, 0, 0), REDUCE(sym__expression_term, 1, 0, 0), + [1380] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(910), + [1383] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(900), + [1386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), + [1388] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(564), + [1391] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [1394] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [1397] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1367), + [1400] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(934), + [1403] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(926), + [1406] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(923), + [1409] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(923), + [1412] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), SHIFT_REPEAT(851), + [1415] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_body, 3, 0, 0), + [1417] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__match_body, 3, 0, 0), + [1419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 7, 0, 0), + [1421] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 7, 0, 0), + [1423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_vector_expression, 6, 0, 0), + [1425] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_vector_expression, 6, 0, 0), + [1427] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__match_body, 2, 0, 0), + [1429] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__match_body, 2, 0, 0), + [1431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__unary_expression, 1, 0, 0), + [1433] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__unary_expression, 1, 0, 0), + [1435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465), + [1437] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 1, 0, 0), + [1439] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression, 1, 0, 0), + [1441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(954), + [1443] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__reference, 1, 0, 0), + [1445] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__reference, 1, 0, 0), + [1447] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block_identifier, 2, 0, 0), + [1449] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block_identifier, 2, 0, 0), + [1451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(661), + [1453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(941), + [1455] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_mut_ref, 2, 0, 0), + [1457] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mut_ref, 2, 0, 0), + [1459] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_condition_properties, 2, 0, 0), + [1461] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_condition_properties, 2, 0, 0), + [1463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), + [1465] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_condition_properties, 3, 0, 0), + [1467] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_condition_properties, 3, 0, 0), + [1469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), + [1471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(938), + [1473] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_op, 1, 0, 0), + [1475] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_op, 1, 0, 0), + [1477] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_condition_properties, 4, 0, 0), + [1479] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_condition_properties, 4, 0, 0), + [1481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [1483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [1485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [1487] = {.entry = {.count = 1, .reusable = false}}, SHIFT(86), + [1489] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_expression, 2, 0, 74), + [1491] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_expression, 2, 0, 74), + [1493] = {.entry = {.count = 1, .reusable = false}}, SHIFT(96), + [1495] = {.entry = {.count = 1, .reusable = false}}, SHIFT(95), + [1497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [1499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [1501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [1503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [1505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [1507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [1509] = {.entry = {.count = 1, .reusable = false}}, SHIFT(88), + [1511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(589), + [1513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), + [1515] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quantifier_expression, 4, 0, 0), + [1517] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quantifier_expression, 4, 0, 0), + [1519] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_expression, 3, 0, 99), + [1521] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_expression, 3, 0, 99), + [1523] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_expression, 3, 0, 94), + [1525] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_break_expression, 3, 0, 94), + [1527] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_expression, 7, 0, 162), + [1529] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_expression, 7, 0, 162), + [1531] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(959), + [1534] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(907), + [1537] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(589), + [1540] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [1543] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [1546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), + [1548] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(1367), + [1551] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(423), + [1554] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(422), + [1557] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [1560] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [1563] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(851), + [1566] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_expression, 3, 0, 93), + [1568] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_expression, 3, 0, 93), + [1570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), + [1572] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(919), + [1575] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(918), + [1578] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1335), + [1581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1002), + [1584] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1110), + [1587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1001), + [1590] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1541), + [1593] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1339), + [1596] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1340), + [1599] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1021), + [1602] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 2, 0, 0), SHIFT_REPEAT(895), + [1605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_identified_expression, 2, 0, 79), + [1607] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_identified_expression, 2, 0, 79), + [1609] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quantifier_expression, 6, 0, 0), + [1611] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quantifier_expression, 6, 0, 0), + [1613] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 2, 0, 76), + [1615] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 2, 0, 76), + [1617] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, 0, 78), + [1619] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_expression, 2, 0, 78), + [1621] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_expression, 5, 0, 147), + [1623] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_expression, 5, 0, 147), + [1625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [1627] = {.entry = {.count = 1, .reusable = false}}, SHIFT(246), + [1629] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_expression, 4, 0, 123), + [1631] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_lambda_expression, 4, 0, 123), + [1633] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_expression, 5, 0, 148), + [1635] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_expression, 5, 0, 148), + [1637] = {.entry = {.count = 1, .reusable = false}}, SHIFT(85), + [1639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(662), + [1641] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_loop_expression, 2, 0, 20), + [1643] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_loop_expression, 2, 0, 20), + [1645] = {.entry = {.count = 1, .reusable = true}}, SHIFT(429), + [1647] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_return_expression, 2, 0, 71), + [1649] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_return_expression, 2, 0, 71), + [1651] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_body, 1, 0, 0), + [1653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), + [1655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(918), + [1657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1335), + [1659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1336), + [1661] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1002), + [1663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), + [1665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1001), + [1667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1541), + [1669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339), + [1671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1340), + [1673] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1021), + [1675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(895), + [1677] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_abort_expression, 2, 0, 73), + [1679] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_abort_expression, 2, 0, 73), + [1681] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_body, 2, 0, 0), + [1683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1434), + [1685] = {.entry = {.count = 1, .reusable = true}}, SHIFT(567), + [1687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(565), + [1689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(570), + [1691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(568), + [1693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(569), + [1695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(571), + [1697] = {.entry = {.count = 1, .reusable = true}}, SHIFT(566), + [1699] = {.entry = {.count = 1, .reusable = true}}, SHIFT(572), + [1701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(664), + [1703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(957), + [1705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(663), + [1707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(667), + [1709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(666), + [1711] = {.entry = {.count = 1, .reusable = true}}, SHIFT(660), + [1713] = {.entry = {.count = 1, .reusable = true}}, SHIFT(654), + [1715] = {.entry = {.count = 1, .reusable = true}}, SHIFT(657), + [1717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(665), + [1719] = {.entry = {.count = 1, .reusable = true}}, SHIFT(656), + [1721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(659), + [1723] = {.entry = {.count = 1, .reusable = true}}, SHIFT(655), + [1725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [1727] = {.entry = {.count = 1, .reusable = false}}, SHIFT(114), + [1729] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), + [1731] = {.entry = {.count = 1, .reusable = true}}, SHIFT(945), + [1733] = {.entry = {.count = 1, .reusable = false}}, SHIFT(229), + [1735] = {.entry = {.count = 1, .reusable = false}}, SHIFT(181), + [1737] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), + [1739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), + [1741] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [1743] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [1745] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [1747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [1749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(192), + [1751] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [1753] = {.entry = {.count = 1, .reusable = false}}, SHIFT(223), + [1755] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [1757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [1759] = {.entry = {.count = 1, .reusable = false}}, SHIFT(68), + [1761] = {.entry = {.count = 1, .reusable = false}}, SHIFT(125), + [1763] = {.entry = {.count = 1, .reusable = false}}, SHIFT(124), + [1765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [1767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [1769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [1771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [1773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [1775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [1777] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [1779] = {.entry = {.count = 1, .reusable = false}}, SHIFT(116), + [1781] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [1783] = {.entry = {.count = 1, .reusable = false}}, SHIFT(239), + [1785] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(910), + [1788] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(908), + [1791] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), + [1793] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [1796] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(1533), + [1799] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(1367), + [1802] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(423), + [1805] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(422), + [1808] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [1811] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(350), + [1814] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(851), + [1817] = {.entry = {.count = 1, .reusable = false}}, SHIFT(110), + [1819] = {.entry = {.count = 1, .reusable = false}}, SHIFT(131), + [1821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145), + [1823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [1825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [1827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [1829] = {.entry = {.count = 1, .reusable = false}}, SHIFT(130), + [1831] = {.entry = {.count = 1, .reusable = false}}, SHIFT(208), + [1833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [1835] = {.entry = {.count = 1, .reusable = false}}, SHIFT(127), + [1837] = {.entry = {.count = 1, .reusable = false}}, SHIFT(72), + [1839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [1841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [1843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [1845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [1847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [1849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [1851] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), + [1853] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [1855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), + [1857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), + [1859] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144), + [1861] = {.entry = {.count = 1, .reusable = false}}, SHIFT(77), + [1863] = {.entry = {.count = 1, .reusable = false}}, SHIFT(76), + [1865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [1867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [1869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [1871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [1873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [1875] = {.entry = {.count = 1, .reusable = false}}, SHIFT(155), + [1877] = {.entry = {.count = 1, .reusable = false}}, SHIFT(153), + [1879] = {.entry = {.count = 1, .reusable = false}}, SHIFT(167), + [1881] = {.entry = {.count = 1, .reusable = false}}, SHIFT(166), + [1883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), + [1885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [1887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [1889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [1891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [1893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [1895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [1897] = {.entry = {.count = 1, .reusable = false}}, SHIFT(158), + [1899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [1901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [1903] = {.entry = {.count = 1, .reusable = false}}, SHIFT(156), + [1905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [1907] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [1909] = {.entry = {.count = 1, .reusable = true}}, SHIFT(349), + [1911] = {.entry = {.count = 1, .reusable = false}}, SHIFT(996), + [1913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), + [1915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1288), + [1917] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1294), + [1919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(823), + [1921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [1923] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quantifier_binding, 3, 0, 0), + [1925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(830), + [1927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [1929] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat1, 2, 0, 0), SHIFT_REPEAT(1507), + [1932] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat1, 2, 0, 0), SHIFT_REPEAT(914), + [1935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1228), + [1937] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1260), + [1939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [1941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), + [1943] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exp_field, 3, 0, 150), + [1945] = {.entry = {.count = 1, .reusable = true}}, SHIFT(439), + [1947] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 0), + [1949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), + [1951] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_arm, 3, 0, 0), + [1953] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_arm, 4, 0, 0), + [1955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(250), + [1957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), + [1959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), + [1961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(444), + [1963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(409), + [1965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), + [1967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(821), + [1969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [1971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(790), + [1973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [1975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), + [1977] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__spec_abort_with_or_modifies_repeat1, 2, 0, 111), + [1979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(819), + [1981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [1983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1556), + [1985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [1987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), + [1989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), + [1993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), + [1995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [1997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [1999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [2001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(811), + [2003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(815), + [2005] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_let_statement, 4, 0, 120), + [2007] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_let_statement, 6, 0, 160), + [2009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(804), + [2011] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), + [2013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(797), + [2015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(795), + [2017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810), + [2019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(832), + [2021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), + [2023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(148), + [2025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1185), + [2027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(833), + [2029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(814), + [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(817), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), + [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [2043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1412), + [2045] = {.entry = {.count = 1, .reusable = false}}, SHIFT(806), + [2047] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_positional_fields_repeat1, 2, 0, 0), + [2049] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_condition, 1, 0, 40), + [2051] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_condition, 1, 0, 40), + [2053] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_if, 4, 0, 109), + [2055] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_if, 4, 0, 109), + [2057] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_variable, 5, 0, 142), + [2059] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_variable, 5, 0, 142), + [2061] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 5, 0, 67), + [2063] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 5, 0, 67), + [2065] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_invariant, 5, 0, 139), + [2067] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_invariant, 5, 0, 139), + [2069] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_invariant, 4, 0, 109), + [2071] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_invariant, 4, 0, 109), + [2073] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_invariant, 4, 0, 114), + [2075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_invariant, 4, 0, 114), + [2077] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 7, 0, 67), + [2079] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 7, 0, 67), + [2081] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 4, 0, 112), + [2083] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 4, 0, 112), + [2085] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 5, 0, 112), + [2087] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 5, 0, 112), + [2089] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 11, 0, 67), + [2091] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 11, 0, 67), + [2093] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 10, 0, 67), + [2095] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 10, 0, 67), + [2097] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_invariant, 3, 0, 84), + [2099] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_invariant, 3, 0, 84), + [2101] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 5, 0, 138), + [2103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 5, 0, 138), + [2105] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 9, 0, 67), + [2107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 9, 0, 67), + [2109] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 4, 0, 85), + [2111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 4, 0, 85), + [2113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 5, 0, 110), + [2115] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 5, 0, 110), + [2117] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_if, 5, 0, 137), + [2119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_if, 5, 0, 137), + [2121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_condition, 4, 0, 108), + [2123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_condition, 4, 0, 108), + [2125] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_condition, 5, 0, 136), + [2127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_condition, 5, 0, 136), + [2129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_condition, 4, 0, 109), + [2131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_condition, 4, 0, 109), + [2133] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_let, 5, 0, 135), + [2135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_let, 5, 0, 135), + [2137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_condition, 3, 0, 84), + [2139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_condition, 3, 0, 84), + [2141] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_if, 3, 0, 84), + [2143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_if, 3, 0, 84), + [2145] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_variable, 4, 0, 106), + [2147] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_variable, 4, 0, 106), + [2149] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 4, 0, 110), + [2151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 4, 0, 110), + [2153] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_spec_body_repeat2, 1, 0, 0), + [2155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_spec_body_repeat2, 1, 0, 0), + [2157] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_block_memeber, 1, 0, 0), + [2159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_block_memeber, 1, 0, 0), + [2161] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_condition, 1, 0, 38), + [2163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_condition, 1, 0, 38), + [2165] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_condition, 1, 0, 39), + [2167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_condition, 1, 0, 39), + [2169] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_pragma, 2, 0, 0), + [2171] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_pragma, 2, 0, 0), + [2173] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_variable, 5, 0, 133), + [2175] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_variable, 5, 0, 133), + [2177] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 3, 0, 85), + [2179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 3, 0, 85), + [2181] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_let, 6, 0, 154), + [2183] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_let, 6, 0, 154), + [2185] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_if, 6, 0, 155), + [2187] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_if, 6, 0, 155), + [2189] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__spec_abort_with_or_modifies, 6, 0, 138), + [2191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_abort_with_or_modifies, 6, 0, 138), + [2193] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 6, 0, 67), + [2195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 6, 0, 67), + [2197] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_apply, 8, 0, 67), + [2199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply, 8, 0, 67), + [2201] = {.entry = {.count = 1, .reusable = false}}, SHIFT(879), + [2203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), + [2205] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_pragma, 3, 0, 0), + [2207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_pragma, 3, 0, 0), + [2209] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_pragma, 4, 0, 0), + [2211] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_pragma, 4, 0, 0), + [2213] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_variable, 6, 0, 157), + [2215] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_variable, 6, 0, 157), + [2217] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_spec_include, 3, 0, 0), + [2219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_include, 3, 0, 0), + [2221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1529), + [2223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_bind_positional_fields_repeat1, 2, 0, 0), + [2225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1509), + [2227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1559), + [2229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_fields, 4, 0, 0), + [2231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__match_body_repeat1, 2, 0, 0), + [2233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_datatype_fields, 1, 0, 0), + [2235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 2, 0, 22), + [2237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(999), + [2239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_definition, 2, 0, 21), + [2241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_fields, 3, 0, 0), + [2243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_fields, 4, 0, 0), + [2245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_fields, 3, 0, 0), + [2247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_named_fields, 2, 0, 0), + [2249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_lambda_bindings_repeat1, 2, 0, 0), + [2251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 3, 0, 31), + [2253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_fields, 2, 0, 0), + [2255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_definition, 3, 0, 30), + [2257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_comma_bind_list_repeat1, 2, 0, 0), + [2259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_variants, 2, 0, 0), + [2261] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_variants, 4, 0, 0), + [2263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_variants, 3, 0, 0), + [2265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_macro_function_definition, 3, 0, 37), + [2267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_macro_function_definition, 4, 0, 64), + [2269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_unpack, 1, 0, 0), + [2271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [2273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [2275] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_unpack, 1, 0, 0), + [2277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_postfix_ability_decls, 4, 0, 0), + [2279] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_item, 1, 0, 0), + [2281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_postfix_ability_decls, 2, 0, 0), + [2283] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__module_identifier, 1, 0, 4), SHIFT(392), + [2286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_module_body_repeat1, 1, 0, 0), + [2288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_native_function_definition, 2, 0, 23), + [2290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__struct_item, 1, 0, 0), + [2292] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 4, 0, 54), + [2294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_definition, 2, 0, 24), + [2296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_friend_declaration, 3, 0, 33), + [2298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_native_struct_definition, 3, 0, 34), + [2300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_struct_definition, 3, 0, 46), + [2302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant, 7, 0, 134), + [2304] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_native_struct_definition, 4, 0, 52), + [2306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__enum_item, 1, 0, 0), + [2308] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_definition, 3, 0, 44), + [2310] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_postfix_ability_decls, 3, 0, 0), + [2312] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enum_definition, 4, 0, 53), + [2314] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1461), + [2316] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1207), + [2318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [2320] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1471), + [2322] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1469), + [2324] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1415), + [2326] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 6), REDUCE(sym__variable_identifier, 1, 0, 57), + [2329] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_module_access, 1, 0, 6), REDUCE(sym__variable_identifier, 1, 0, 57), + [2332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variable_identifier, 1, 0, 57), + [2334] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__module_identifier, 1, 0, 4), SHIFT(369), + [2337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1522), + [2339] = {.entry = {.count = 1, .reusable = false}}, SHIFT(902), + [2341] = {.entry = {.count = 1, .reusable = false}}, SHIFT(982), + [2343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1410), + [2345] = {.entry = {.count = 1, .reusable = false}}, SHIFT(256), + [2347] = {.entry = {.count = 1, .reusable = false}}, SHIFT(904), + [2349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_modifier, 1, 0, 0), + [2351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(920), + [2353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1382), + [2355] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_modifier, 1, 0, 0), SHIFT(1384), + [2358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(422), + [2360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_named_fields, 2, 0, 0), + [2362] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_named_fields, 2, 0, 0), + [2364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_at_bind, 3, 0, 0), + [2366] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_at_bind, 3, 0, 0), + [2368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), + [2370] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(955), + [2373] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), + [2375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mut_bind_var, 2, 0, 91), + [2377] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_mut_bind_var, 2, 0, 91), + [2379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_unpack, 2, 0, 92), + [2381] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_unpack, 2, 0, 92), + [2383] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_fields, 1, 0, 0), + [2385] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_fields, 1, 0, 0), + [2387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ability_decls, 1, 0, 0), + [2389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1025), + [2391] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__variable_identifier, 1, 0, 57), + [2393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_ability_decls_repeat1, 2, 0, 0), + [2395] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_ability_decls_repeat1, 2, 0, 0), SHIFT_REPEAT(1025), + [2398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_positional_fields, 2, 0, 0), + [2400] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_positional_fields, 2, 0, 0), + [2402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comma_bind_list, 4, 0, 0), + [2404] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comma_bind_list, 4, 0, 0), + [2406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ability_decls, 2, 0, 0), + [2408] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_or_bind_list, 7, 0, 0), + [2410] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_or_bind_list, 7, 0, 0), + [2412] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_named_fields, 4, 0, 0), + [2414] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_named_fields, 4, 0, 0), + [2416] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_named_fields, 3, 0, 0), + [2418] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_named_fields, 3, 0, 0), + [2420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), + [2422] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comma_bind_list, 3, 0, 0), + [2424] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 4, 0, 0), + [2426] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_or_bind_list_repeat1, 4, 0, 0), + [2428] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bind, 1, 0, 0), + [2430] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bind, 1, 0, 0), + [2432] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_positional_fields, 3, 0, 0), + [2434] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_positional_fields, 3, 0, 0), + [2436] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_positional_fields, 4, 0, 0), + [2438] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_positional_fields, 4, 0, 0), + [2440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), + [2442] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bind_list, 1, 0, 0), + [2444] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 3, 0, 0), + [2446] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 3, 0, 0), SHIFT_REPEAT(947), + [2449] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_or_bind_list_repeat1, 3, 0, 0), + [2451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comma_bind_list, 2, 0, 0), + [2453] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comma_bind_list, 2, 0, 0), + [2455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bind, 1, 0, 69), + [2457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(545), + [2459] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__module_identifier, 1, 0, 4), SHIFT(384), + [2462] = {.entry = {.count = 1, .reusable = false}}, SHIFT(933), + [2464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1289), + [2466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1396), + [2468] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1148), + [2470] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), + [2473] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(938), + [2477] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(395), + [2481] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), + [2484] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(965), + [2488] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(388), + [2492] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(395), + [2495] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), SHIFT(390), + [2498] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(357), + [2501] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_function_parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(933), + [2504] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_function_parameters_repeat1, 2, 0, 0), + [2506] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_function_parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1396), + [2509] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_function_parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1148), + [2512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), + [2514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(868), + [2517] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(961), + [2520] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(964), + [2523] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(643), + [2526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1243), + [2528] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), SHIFT(385), + [2531] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), SHIFT(453), + [2534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 3, 0, 0), + [2536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 5, 0, 0), + [2538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 6, 0, 0), + [2540] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(449), + [2543] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 5, 0, 0), + [2545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(553), + [2547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__struct_signature, 2, 0, 17), + [2549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(932), + [2551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1091), + [2553] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(1000), + [2556] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(633), + [2559] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameters, 4, 0, 0), + [2561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(893), + [2563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(868), + [2565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1007), + [2567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(532), + [2569] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(1016), + [2572] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(487), + [2575] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(979), + [2579] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(447), + [2583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 4, 0, 0), + [2585] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), SHIFT(452), + [2588] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), + [2590] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant, 1, 0, 43), + [2592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [2594] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_annotation_expr, 1, 0, 1), REDUCE(sym_module_access, 1, 0, 6), + [2597] = {.entry = {.count = 1, .reusable = true}}, SHIFT(737), + [2599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(837), + [2601] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(997), + [2604] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(451), + [2607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(878), + [2609] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(451), + [2613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1389), + [2615] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 7, 0, 0), + [2617] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_module_access, 1, 0, 6), REDUCE(sym__module_identifier, 1, 0, 4), SHIFT(384), + [2621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(531), + [2623] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1502), + [2625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(799), + [2627] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1141), + [2629] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1103), + [2631] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(1011), + [2635] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(488), + [2639] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1200), + [2641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1229), + [2643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(981), + [2645] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1426), + [2647] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(1018), + [2650] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(485), + [2653] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(485), + [2657] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), SHIFT(484), + [2660] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), SHIFT(483), + [2663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1072), + [2665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1400), + [2667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1014), + [2669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(529), + [2671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(542), + [2673] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__bind, 1, 0, 69), REDUCE(sym_mut_bind_var, 2, 0, 91), + [2676] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ability, 1, 0, 0), + [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1041), + [2680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(523), + [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(489), + [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(492), + [2686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1116), + [2688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(551), + [2690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(509), + [2692] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), + [2694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1039), + [2696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(835), + [2698] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1169), + [2700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(479), + [2702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1030), + [2704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495), + [2706] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(644), + [2709] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(1088), + [2712] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(539), + [2715] = {.entry = {.count = 1, .reusable = true}}, SHIFT(988), + [2717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1036), + [2719] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1045), + [2721] = {.entry = {.count = 1, .reusable = true}}, SHIFT(494), + [2723] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), + [2725] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), + [2727] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), SHIFT(492), + [2730] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), SHIFT(489), + [2733] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1057), + [2735] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(495), + [2738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1053), + [2740] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(494), + [2744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1049), + [2746] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(479), + [2749] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(479), + [2753] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_modifier, 4, 0, 0), + [2755] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1173), + [2757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(871), + [2759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1083), + [2761] = {.entry = {.count = 1, .reusable = true}}, SHIFT(552), + [2763] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(1048), + [2766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), + [2768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1251), + [2770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(860), + [2772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), + [2774] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 1, 0, 6), + [2776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1463), + [2778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), + [2780] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(1075), + [2784] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(540), + [2788] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__enum_signature, 2, 0, 17), + [2790] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__struct_identifier, 1, 0, 18), + [2792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(554), + [2794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), + [2796] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_condition_properties_repeat1, 2, 0, 0), SHIFT_REPEAT(1150), + [2799] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_condition_properties_repeat1, 2, 0, 0), + [2801] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_enum_variants_repeat1, 2, 0, 0), SHIFT_REPEAT(1173), + [2804] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_enum_variants_repeat1, 2, 0, 0), + [2806] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_field_initialize_list_repeat1, 2, 0, 0), SHIFT_REPEAT(1251), + [2809] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_field_initialize_list_repeat1, 2, 0, 0), + [2811] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply_pattern, 2, 0, 140), + [2813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(544), + [2815] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__struct_signature, 3, 0, 36), + [2817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), + [2819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), + [2821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1126), + [2823] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(1094), + [2826] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(538), + [2829] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_comma_bind_list, 3, 0, 0), REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(538), + [2833] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(1085), + [2836] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 4, 0, 0), SHIFT(534), + [2839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(836), + [2841] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1191), + [2843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1563), + [2845] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply_pattern, 1, 0, 115), + [2847] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_named_fields_repeat1, 2, 0, 0), SHIFT_REPEAT(1251), + [2850] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_named_fields_repeat1, 2, 0, 0), + [2852] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(1097), + [2856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [2858] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 5, 0, 0), SHIFT(528), + [2861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1108), + [2863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(562), + [2865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1100), + [2867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(546), + [2869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(863), + [2871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(807), + [2873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(405), + [2875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1129), + [2877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(555), + [2879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(803), + [2881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1561), + [2883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(802), + [2885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), + [2887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1359), + [2889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(550), + [2891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(549), + [2893] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_or_bind_list_repeat1, 2, 0, 0), SHIFT_REPEAT(647), + [2896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(547), + [2898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(543), + [2900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 7, 0, 145), + [2902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), + [2904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 5, 0, 88), + [2906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1150), + [2908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(491), + [2910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 3, 0, 29), + [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1478), + [2914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1189), + [2916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quantifier_bindings, 2, 0, 0), + [2918] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 3, 0, 32), + [2920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 3, 0, 0), + [2922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(993), + [2924] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quantifier_bindings, 2, 0, 0), + [2926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453), + [2928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452), + [2930] = {.entry = {.count = 1, .reusable = true}}, SHIFT(451), + [2932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(933), + [2934] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 3, 0, 0), SHIFT(1145), + [2937] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_property, 1, 0, 0), + [2939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(924), + [2941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(449), + [2943] = {.entry = {.count = 3, .reusable = true}}, REDUCE(sym_bind_list, 1, 0, 0), REDUCE(sym_or_bind_list, 1, 0, 0), SHIFT(1152), + [2947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(447), + [2949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(559), + [2951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), + [2953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), + [2955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1034), + [2957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1158), + [2959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1008), + [2961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1169), + [2963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1004), + [2965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), + [2967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1142), + [2969] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quantifier_bindings, 1, 0, 0), + [2971] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 6, 0, 118), + [2973] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 6, 0, 119), + [2975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(980), + [2977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(977), + [2979] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 4, 0, 63), + [2981] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_spec_apply_repeat1, 2, 0, 0), + [2983] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_spec_apply_repeat1, 2, 0, 0), SHIFT_REPEAT(1140), + [2986] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_function_parameters_repeat1, 2, 0, 0), + [2988] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__variant_identifier, 1, 0, 42), + [2990] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameter_repeat1, 2, 0, 0), + [2992] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameter_repeat1, 2, 0, 0), SHIFT_REPEAT(1099), + [2995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(960), + [2997] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 5, 0, 89), + [2999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(978), + [3001] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_or_bind_list, 2, 0, 0), SHIFT(1147), + [3004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ability_decls, 3, 0, 0), + [3006] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), + [3008] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 4, 0, 60), + [3010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(828), + [3012] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quantifier_bindings_repeat1, 2, 0, 0), SHIFT_REPEAT(1383), + [3015] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quantifier_bindings_repeat1, 2, 0, 0), + [3017] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quantifier_bindings, 3, 0, 0), + [3019] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quantifier_bindings, 3, 0, 0), + [3021] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), + [3023] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 0), SHIFT_REPEAT(1047), + [3026] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_expr, 1, 0, 1), + [3028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(493), + [3030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1066), + [3032] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1499), + [3034] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), + [3036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1537), + [3038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(556), + [3040] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_parameter_identifier, 1, 0, 58), + [3042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1406), + [3044] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1043), + [3046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(976), + [3048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(800), + [3050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [3052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 1, 0, 0), + [3054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), + [3056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1220), + [3058] = {.entry = {.count = 1, .reusable = true}}, SHIFT(548), + [3060] = {.entry = {.count = 1, .reusable = true}}, SHIFT(340), + [3062] = {.entry = {.count = 1, .reusable = true}}, SHIFT(951), + [3064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(536), + [3066] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1102), + [3068] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1562), + [3070] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), + [3072] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_item, 1, 0, 3), + [3074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__enum_identifier, 1, 0, 16), + [3076] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1424), + [3078] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [3080] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1267), + [3082] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 5, 0, 152), + [3084] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_identifier, 1, 0, 13), + [3086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_item, 1, 0, 2), + [3088] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module, 1, 0, 0), + [3090] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1387), + [3092] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1290), + [3094] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [3096] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1268), + [3098] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1270), + [3100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 5, 0, 153), + [3102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(322), + [3104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 4, 0, 60), + [3106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 6, 0, 26), + [3108] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1440), + [3110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1118), + [3112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), + [3114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(316), + [3116] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_block_target_schema, 2, 0, 17), + [3118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1013), + [3120] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_use_module_members_repeat1, 2, 0, 131), SHIFT_REPEAT(1373), + [3123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_use_module_members_repeat1, 2, 0, 131), + [3125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1218), + [3127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1219), + [3129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_parameter, 2, 0, 0), + [3131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1128), + [3133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1514), + [3135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 4, 0, 63), + [3137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_field, 1, 0, 0), + [3139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_field, 1, 0, 98), + [3141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(561), + [3143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spread_operator, 1, 0, 0), + [3145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_parameters, 3, 0, 0), + [3147] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply_pattern, 3, 0, 156), + [3149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_let_statement, 2, 0, 68), + [3151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [3153] = {.entry = {.count = 1, .reusable = true}}, SHIFT(352), + [3155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), + [3157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1101), + [3159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_expr, 4, 0, 12), + [3161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 5, 0, 12), + [3163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__field_identifier, 1, 0, 45), + [3165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(715), + [3167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1300), + [3169] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_expression_list_repeat1, 2, 0, 0), SHIFT_REPEAT(67), + [3172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [3174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(721), + [3176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1262), + [3178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(327), + [3180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), + [3182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 4, 0, 1), + [3184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(816), + [3186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [3188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bind_field, 3, 0, 159), + [3190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 5, 0, 1), + [3192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(716), + [3194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1250), + [3196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 5, 0, 26), + [3198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), + [3200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(557), + [3202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(330), + [3204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), + [3206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1550), + [3208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), + [3210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 6, 0, 152), + [3212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1297), + [3214] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_annotation_list_repeat1, 2, 0, 27), SHIFT_REPEAT(743), + [3217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_annotation_list_repeat1, 2, 0, 27), + [3219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 6, 0, 161), + [3221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1311), + [3223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1554), + [3225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1112), + [3227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_property, 3, 0, 0), + [3229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_apply_pattern, 2, 0, 141), + [3231] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 0), SHIFT_REPEAT(1120), + [3234] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_parameters_repeat1, 2, 0, 0), + [3236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__spec_abort_with_or_modifies_repeat1, 2, 0, 113), + [3238] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__spec_abort_with_or_modifies_repeat1, 2, 0, 113), SHIFT_REPEAT(207), + [3241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(354), + [3243] = {.entry = {.count = 1, .reusable = true}}, SHIFT(805), + [3245] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [3247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__struct_signature, 4, 0, 61), + [3249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 3, 0, 32), + [3251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1315), + [3253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1557), + [3255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1361), + [3257] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_type_arguments_repeat1, 2, 0, 0), SHIFT_REPEAT(344), + [3260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_type_arguments_repeat1, 2, 0, 0), + [3262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 5, 0, 88), + [3264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(329), + [3266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mut_bind_field, 2, 0, 0), + [3268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 7, 0, 48), + [3270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_parameters, 2, 0, 0), + [3272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1338), + [3274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1388), + [3276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), + [3278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 6, 0, 12), + [3280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(722), + [3282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1257), + [3284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_binding, 1, 0, 70), + [3286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [3288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 7, 0, 161), + [3290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_exp_field, 1, 0, 98), + [3292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [3294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_list, 6, 0, 48), + [3296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1117), + [3298] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_annotation_repeat1, 2, 0, 0), SHIFT_REPEAT(1170), + [3301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_annotation_repeat1, 2, 0, 0), + [3303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation_expr, 3, 0, 7), + [3305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), + [3307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1089), + [3309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_parameters, 4, 0, 0), + [3311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), + [3313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1238), + [3315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1448), + [3317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1443), + [3319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__enum_signature, 3, 0, 36), + [3321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_member, 3, 0, 104), + [3323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1197), + [3325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1449), + [3327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1452), + [3329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1372), + [3331] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__struct_signature, 3, 0, 35), + [3333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(939), + [3335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [3337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), + [3339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_annotation_list_repeat1, 3, 0, 49), + [3341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), + [3343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(788), + [3345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), + [3347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(855), + [3349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(441), + [3351] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_parameter, 3, 0, 106), + [3353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1418), + [3355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), + [3357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875), + [3359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1215), + [3361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1069), + [3363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(345), + [3365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), + [3367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), + [3369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), + [3371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_macro_module_access, 2, 0, 47), + [3373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1209), + [3375] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_function_signature, 4, 0, 107), + [3377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), + [3379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(864), + [3381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(401), + [3383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(497), + [3385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), + [3387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [3389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1397), + [3391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(870), + [3393] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 8, 0, 158), + [3395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1411), + [3397] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899), + [3399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1122), + [3401] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 6, 0, 116), + [3403] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 6, 0, 117), + [3405] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 1, 0, 0), + [3407] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1552), + [3409] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1553), + [3411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field_annotation, 3, 0, 90), + [3413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(856), + [3415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [3417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(843), + [3419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(861), + [3421] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_let_statement, 4, 0, 121), + [3423] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [3425] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_binding, 3, 0, 122), + [3427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1476), + [3429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341), + [3431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_friend_access, 1, 0, 14), + [3433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(473), + [3435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), + [3437] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 5, 0, 87), + [3439] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 4, 0, 59), + [3441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265), + [3443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), + [3445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), + [3447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(942), + [3449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(839), + [3451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854), + [3453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1172), + [3455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(454), + [3457] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant, 2, 0, 65), + [3459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [3461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [3463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [3465] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 7, 0, 144), + [3467] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_definition, 3, 0, 5), + [3469] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 7, 0, 143), + [3471] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_function_signature, 3, 0, 83), + [3473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [3475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [3477] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lambda_binding, 1, 0, 0), + [3479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [3481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1136), + [3483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1330), + [3485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1200), + [3487] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_mut_function_parameter, 2, 0, 0), + [3489] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_annotation_list_repeat1, 2, 0, 0), + [3491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(558), + [3493] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__function_signature, 5, 0, 82), + [3495] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ret_type, 2, 0, 0), + [3497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), + [3499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [3501] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_module_body, 3, 0, 0), + [3503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_use_module_members_repeat1, 2, 0, 129), + [3505] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_parameter, 4, 0, 133), + [3507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1308), + [3509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), + [3511] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [3513] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 6, 0, 105), + [3515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1292), + [3517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(916), + [3519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [3521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [3523] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 6, 0, 132), + [3525] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 6, 0, 130), + [3527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(318), + [3529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), + [3531] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 6, 0, 103), + [3533] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 6, 0, 116), + [3535] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_fun, 6, 0, 128), + [3537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [3539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), + [3541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(458), + [3543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(460), + [3545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), + [3547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 4, 0, 59), + [3549] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_block_target, 1, 0, 0), + [3551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(268), + [3553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1313), + [3555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(466), + [3557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), + [3559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(840), + [3561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [3563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1323), + [3565] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__spec_block_target, 1, 0, 19), + [3567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(844), + [3569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1232), + [3571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(847), + [3573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(877), + [3575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [3577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1501), + [3579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1059), + [3581] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1375), + [3583] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1225), + [3585] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1457), + [3587] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), + [3589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), + [3591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), + [3593] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304), + [3595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(822), + [3597] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_friend_access, 1, 0, 15), + [3599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(886), + [3601] = {.entry = {.count = 1, .reusable = true}}, SHIFT(911), + [3603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1291), + [3605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [3607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), + [3609] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_member, 3, 0, 56), + [3611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [3613] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__enum_signature, 3, 0, 35), + [3615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), + [3617] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 7, 0, 130), + [3619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), + [3621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), + [3623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1077), + [3625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), + [3627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [3629] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1472), + [3631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(913), + [3633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), + [3635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [3637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1278), + [3639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(397), + [3641] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 7, 0, 132), + [3643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [3645] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [3647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(752), + [3649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1470), + [3651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [3653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(750), + [3655] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_spec_block_target_schema, 3, 0, 36), + [3657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [3659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), + [3661] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), + [3663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(791), + [3665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1394), + [3667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(829), + [3669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), + [3671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), + [3673] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__enum_signature, 4, 0, 61), + [3675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(852), + [3677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [3679] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1485), + [3681] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 5, 0, 87), + [3683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [3685] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__macro_signature, 5, 0, 82), + [3687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1481), + [3689] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module, 3, 0, 55), + [3691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [3693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1450), + [3695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [3697] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [3699] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407), + [3701] = {.entry = {.count = 1, .reusable = true}}, SHIFT(482), + [3703] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [3705] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [3707] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143), + [3709] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1467), + [3711] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 5, 0, 105), + [3713] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_match_condition, 4, 0, 163), + [3715] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_use_module_members, 5, 0, 103), + [3717] = {.entry = {.count = 1, .reusable = true}}, SHIFT(845), + [3719] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), + [3721] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 5, 0, 0), + [3723] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 3, 0, 0), + [3725] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_annotation, 4, 0, 0), +}; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef TREE_SITTER_HIDE_SYMBOLS +#define TS_PUBLIC +#elif defined(_WIN32) +#define TS_PUBLIC __declspec(dllexport) +#else +#define TS_PUBLIC __attribute__((visibility("default"))) +#endif + +TS_PUBLIC const TSLanguage *tree_sitter_move(void) { + static const TSLanguage language = { + .version = LANGUAGE_VERSION, + .symbol_count = SYMBOL_COUNT, + .alias_count = ALIAS_COUNT, + .token_count = TOKEN_COUNT, + .external_token_count = EXTERNAL_TOKEN_COUNT, + .state_count = STATE_COUNT, + .large_state_count = LARGE_STATE_COUNT, + .production_id_count = PRODUCTION_ID_COUNT, + .field_count = FIELD_COUNT, + .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, + .parse_table = &ts_parse_table[0][0], + .small_parse_table = ts_small_parse_table, + .small_parse_table_map = ts_small_parse_table_map, + .parse_actions = ts_parse_actions, + .symbol_names = ts_symbol_names, + .field_names = ts_field_names, + .field_map_slices = ts_field_map_slices, + .field_map_entries = ts_field_map_entries, + .symbol_metadata = ts_symbol_metadata, + .public_symbol_map = ts_symbol_map, + .alias_map = ts_non_terminal_alias_map, + .alias_sequences = &ts_alias_sequences[0][0], + .lex_modes = ts_lex_modes, + .lex_fn = ts_lex, + .keyword_lex_fn = ts_lex_keywords, + .keyword_capture_token = sym_identifier, + .primary_state_ids = ts_primary_state_ids, + }; + return &language; +} +#ifdef __cplusplus +} +#endif diff --git a/external-crates/move/tooling/tree-sitter/src/tree_sitter/alloc.h b/external-crates/move/tooling/tree-sitter/src/tree_sitter/alloc.h new file mode 100644 index 0000000000000..1f4466d75c40b --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/src/tree_sitter/alloc.h @@ -0,0 +1,54 @@ +#ifndef TREE_SITTER_ALLOC_H_ +#define TREE_SITTER_ALLOC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +// Allow clients to override allocation functions +#ifdef TREE_SITTER_REUSE_ALLOCATOR + +extern void *(*ts_current_malloc)(size_t); +extern void *(*ts_current_calloc)(size_t, size_t); +extern void *(*ts_current_realloc)(void *, size_t); +extern void (*ts_current_free)(void *); + +#ifndef ts_malloc +#define ts_malloc ts_current_malloc +#endif +#ifndef ts_calloc +#define ts_calloc ts_current_calloc +#endif +#ifndef ts_realloc +#define ts_realloc ts_current_realloc +#endif +#ifndef ts_free +#define ts_free ts_current_free +#endif + +#else + +#ifndef ts_malloc +#define ts_malloc malloc +#endif +#ifndef ts_calloc +#define ts_calloc calloc +#endif +#ifndef ts_realloc +#define ts_realloc realloc +#endif +#ifndef ts_free +#define ts_free free +#endif + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_ALLOC_H_ diff --git a/external-crates/move/tooling/tree-sitter/src/tree_sitter/array.h b/external-crates/move/tooling/tree-sitter/src/tree_sitter/array.h new file mode 100644 index 0000000000000..15a3b233bbb87 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/src/tree_sitter/array.h @@ -0,0 +1,290 @@ +#ifndef TREE_SITTER_ARRAY_H_ +#define TREE_SITTER_ARRAY_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "./alloc.h" + +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#pragma warning(disable : 4101) +#elif defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-variable" +#endif + +#define Array(T) \ + struct { \ + T *contents; \ + uint32_t size; \ + uint32_t capacity; \ + } + +/// Initialize an array. +#define array_init(self) \ + ((self)->size = 0, (self)->capacity = 0, (self)->contents = NULL) + +/// Create an empty array. +#define array_new() \ + { NULL, 0, 0 } + +/// Get a pointer to the element at a given `index` in the array. +#define array_get(self, _index) \ + (assert((uint32_t)(_index) < (self)->size), &(self)->contents[_index]) + +/// Get a pointer to the first element in the array. +#define array_front(self) array_get(self, 0) + +/// Get a pointer to the last element in the array. +#define array_back(self) array_get(self, (self)->size - 1) + +/// Clear the array, setting its size to zero. Note that this does not free any +/// memory allocated for the array's contents. +#define array_clear(self) ((self)->size = 0) + +/// Reserve `new_capacity` elements of space in the array. If `new_capacity` is +/// less than the array's current capacity, this function has no effect. +#define array_reserve(self, new_capacity) \ + _array__reserve((Array *)(self), array_elem_size(self), new_capacity) + +/// Free any memory allocated for this array. Note that this does not free any +/// memory allocated for the array's contents. +#define array_delete(self) _array__delete((Array *)(self)) + +/// Push a new `element` onto the end of the array. +#define array_push(self, element) \ + (_array__grow((Array *)(self), 1, array_elem_size(self)), \ + (self)->contents[(self)->size++] = (element)) + +/// Increase the array's size by `count` elements. +/// New elements are zero-initialized. +#define array_grow_by(self, count) \ + do { \ + if ((count) == 0) break; \ + _array__grow((Array *)(self), count, array_elem_size(self)); \ + memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \ + (self)->size += (count); \ + } while (0) + +/// Append all elements from one array to the end of another. +#define array_push_all(self, other) \ + array_extend((self), (other)->size, (other)->contents) + +/// Append `count` elements to the end of the array, reading their values from the +/// `contents` pointer. +#define array_extend(self, count, contents) \ + _array__splice( \ + (Array *)(self), array_elem_size(self), (self)->size, \ + 0, count, contents \ + ) + +/// Remove `old_count` elements from the array starting at the given `index`. At +/// the same index, insert `new_count` new elements, reading their values from the +/// `new_contents` pointer. +#define array_splice(self, _index, old_count, new_count, new_contents) \ + _array__splice( \ + (Array *)(self), array_elem_size(self), _index, \ + old_count, new_count, new_contents \ + ) + +/// Insert one `element` into the array at the given `index`. +#define array_insert(self, _index, element) \ + _array__splice((Array *)(self), array_elem_size(self), _index, 0, 1, &(element)) + +/// Remove one element from the array at the given `index`. +#define array_erase(self, _index) \ + _array__erase((Array *)(self), array_elem_size(self), _index) + +/// Pop the last element off the array, returning the element by value. +#define array_pop(self) ((self)->contents[--(self)->size]) + +/// Assign the contents of one array to another, reallocating if necessary. +#define array_assign(self, other) \ + _array__assign((Array *)(self), (const Array *)(other), array_elem_size(self)) + +/// Swap one array with another +#define array_swap(self, other) \ + _array__swap((Array *)(self), (Array *)(other)) + +/// Get the size of the array contents +#define array_elem_size(self) (sizeof *(self)->contents) + +/// Search a sorted array for a given `needle` value, using the given `compare` +/// callback to determine the order. +/// +/// If an existing element is found to be equal to `needle`, then the `index` +/// out-parameter is set to the existing value's index, and the `exists` +/// out-parameter is set to true. Otherwise, `index` is set to an index where +/// `needle` should be inserted in order to preserve the sorting, and `exists` +/// is set to false. +#define array_search_sorted_with(self, compare, needle, _index, _exists) \ + _array__search_sorted(self, 0, compare, , needle, _index, _exists) + +/// Search a sorted array for a given `needle` value, using integer comparisons +/// of a given struct field (specified with a leading dot) to determine the order. +/// +/// See also `array_search_sorted_with`. +#define array_search_sorted_by(self, field, needle, _index, _exists) \ + _array__search_sorted(self, 0, _compare_int, field, needle, _index, _exists) + +/// Insert a given `value` into a sorted array, using the given `compare` +/// callback to determine the order. +#define array_insert_sorted_with(self, compare, value) \ + do { \ + unsigned _index, _exists; \ + array_search_sorted_with(self, compare, &(value), &_index, &_exists); \ + if (!_exists) array_insert(self, _index, value); \ + } while (0) + +/// Insert a given `value` into a sorted array, using integer comparisons of +/// a given struct field (specified with a leading dot) to determine the order. +/// +/// See also `array_search_sorted_by`. +#define array_insert_sorted_by(self, field, value) \ + do { \ + unsigned _index, _exists; \ + array_search_sorted_by(self, field, (value) field, &_index, &_exists); \ + if (!_exists) array_insert(self, _index, value); \ + } while (0) + +// Private + +typedef Array(void) Array; + +/// This is not what you're looking for, see `array_delete`. +static inline void _array__delete(Array *self) { + if (self->contents) { + ts_free(self->contents); + self->contents = NULL; + self->size = 0; + self->capacity = 0; + } +} + +/// This is not what you're looking for, see `array_erase`. +static inline void _array__erase(Array *self, size_t element_size, + uint32_t index) { + assert(index < self->size); + char *contents = (char *)self->contents; + memmove(contents + index * element_size, contents + (index + 1) * element_size, + (self->size - index - 1) * element_size); + self->size--; +} + +/// This is not what you're looking for, see `array_reserve`. +static inline void _array__reserve(Array *self, size_t element_size, uint32_t new_capacity) { + if (new_capacity > self->capacity) { + if (self->contents) { + self->contents = ts_realloc(self->contents, new_capacity * element_size); + } else { + self->contents = ts_malloc(new_capacity * element_size); + } + self->capacity = new_capacity; + } +} + +/// This is not what you're looking for, see `array_assign`. +static inline void _array__assign(Array *self, const Array *other, size_t element_size) { + _array__reserve(self, element_size, other->size); + self->size = other->size; + memcpy(self->contents, other->contents, self->size * element_size); +} + +/// This is not what you're looking for, see `array_swap`. +static inline void _array__swap(Array *self, Array *other) { + Array swap = *other; + *other = *self; + *self = swap; +} + +/// This is not what you're looking for, see `array_push` or `array_grow_by`. +static inline void _array__grow(Array *self, uint32_t count, size_t element_size) { + uint32_t new_size = self->size + count; + if (new_size > self->capacity) { + uint32_t new_capacity = self->capacity * 2; + if (new_capacity < 8) new_capacity = 8; + if (new_capacity < new_size) new_capacity = new_size; + _array__reserve(self, element_size, new_capacity); + } +} + +/// This is not what you're looking for, see `array_splice`. +static inline void _array__splice(Array *self, size_t element_size, + uint32_t index, uint32_t old_count, + uint32_t new_count, const void *elements) { + uint32_t new_size = self->size + new_count - old_count; + uint32_t old_end = index + old_count; + uint32_t new_end = index + new_count; + assert(old_end <= self->size); + + _array__reserve(self, element_size, new_size); + + char *contents = (char *)self->contents; + if (self->size > old_end) { + memmove( + contents + new_end * element_size, + contents + old_end * element_size, + (self->size - old_end) * element_size + ); + } + if (new_count > 0) { + if (elements) { + memcpy( + (contents + index * element_size), + elements, + new_count * element_size + ); + } else { + memset( + (contents + index * element_size), + 0, + new_count * element_size + ); + } + } + self->size += new_count - old_count; +} + +/// A binary search routine, based on Rust's `std::slice::binary_search_by`. +/// This is not what you're looking for, see `array_search_sorted_with` or `array_search_sorted_by`. +#define _array__search_sorted(self, start, compare, suffix, needle, _index, _exists) \ + do { \ + *(_index) = start; \ + *(_exists) = false; \ + uint32_t size = (self)->size - *(_index); \ + if (size == 0) break; \ + int comparison; \ + while (size > 1) { \ + uint32_t half_size = size / 2; \ + uint32_t mid_index = *(_index) + half_size; \ + comparison = compare(&((self)->contents[mid_index] suffix), (needle)); \ + if (comparison <= 0) *(_index) = mid_index; \ + size -= half_size; \ + } \ + comparison = compare(&((self)->contents[*(_index)] suffix), (needle)); \ + if (comparison == 0) *(_exists) = true; \ + else if (comparison < 0) *(_index) += 1; \ + } while (0) + +/// Helper macro for the `_sorted_by` routines below. This takes the left (existing) +/// parameter by reference in order to work with the generic sorting function above. +#define _compare_int(a, b) ((int)*(a) - (int)(b)) + +#ifdef _MSC_VER +#pragma warning(default : 4101) +#elif defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_ARRAY_H_ diff --git a/external-crates/move/tooling/tree-sitter/src/tree_sitter/parser.h b/external-crates/move/tooling/tree-sitter/src/tree_sitter/parser.h new file mode 100644 index 0000000000000..17f0e94bfcf4d --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/src/tree_sitter/parser.h @@ -0,0 +1,265 @@ +#ifndef TREE_SITTER_PARSER_H_ +#define TREE_SITTER_PARSER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define ts_builtin_sym_error ((TSSymbol)-1) +#define ts_builtin_sym_end 0 +#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 + +#ifndef TREE_SITTER_API_H_ +typedef uint16_t TSStateId; +typedef uint16_t TSSymbol; +typedef uint16_t TSFieldId; +typedef struct TSLanguage TSLanguage; +#endif + +typedef struct { + TSFieldId field_id; + uint8_t child_index; + bool inherited; +} TSFieldMapEntry; + +typedef struct { + uint16_t index; + uint16_t length; +} TSFieldMapSlice; + +typedef struct { + bool visible; + bool named; + bool supertype; +} TSSymbolMetadata; + +typedef struct TSLexer TSLexer; + +struct TSLexer { + int32_t lookahead; + TSSymbol result_symbol; + void (*advance)(TSLexer *, bool); + void (*mark_end)(TSLexer *); + uint32_t (*get_column)(TSLexer *); + bool (*is_at_included_range_start)(const TSLexer *); + bool (*eof)(const TSLexer *); +}; + +typedef enum { + TSParseActionTypeShift, + TSParseActionTypeReduce, + TSParseActionTypeAccept, + TSParseActionTypeRecover, +} TSParseActionType; + +typedef union { + struct { + uint8_t type; + TSStateId state; + bool extra; + bool repetition; + } shift; + struct { + uint8_t type; + uint8_t child_count; + TSSymbol symbol; + int16_t dynamic_precedence; + uint16_t production_id; + } reduce; + uint8_t type; +} TSParseAction; + +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; +} TSLexMode; + +typedef union { + TSParseAction action; + struct { + uint8_t count; + bool reusable; + } entry; +} TSParseActionEntry; + +typedef struct { + int32_t start; + int32_t end; +} TSCharacterRange; + +struct TSLanguage { + uint32_t version; + uint32_t symbol_count; + uint32_t alias_count; + uint32_t token_count; + uint32_t external_token_count; + uint32_t state_count; + uint32_t large_state_count; + uint32_t production_id_count; + uint32_t field_count; + uint16_t max_alias_sequence_length; + const uint16_t *parse_table; + const uint16_t *small_parse_table; + const uint32_t *small_parse_table_map; + const TSParseActionEntry *parse_actions; + const char * const *symbol_names; + const char * const *field_names; + const TSFieldMapSlice *field_map_slices; + const TSFieldMapEntry *field_map_entries; + const TSSymbolMetadata *symbol_metadata; + const TSSymbol *public_symbol_map; + const uint16_t *alias_map; + const TSSymbol *alias_sequences; + const TSLexMode *lex_modes; + bool (*lex_fn)(TSLexer *, TSStateId); + bool (*keyword_lex_fn)(TSLexer *, TSStateId); + TSSymbol keyword_capture_token; + struct { + const bool *states; + const TSSymbol *symbol_map; + void *(*create)(void); + void (*destroy)(void *); + bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist); + unsigned (*serialize)(void *, char *); + void (*deserialize)(void *, const char *, unsigned); + } external_scanner; + const TSStateId *primary_state_ids; +}; + +static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) { + uint32_t index = 0; + uint32_t size = len - index; + while (size > 1) { + uint32_t half_size = size / 2; + uint32_t mid_index = index + half_size; + TSCharacterRange *range = &ranges[mid_index]; + if (lookahead >= range->start && lookahead <= range->end) { + return true; + } else if (lookahead > range->end) { + index = mid_index; + } + size -= half_size; + } + TSCharacterRange *range = &ranges[index]; + return (lookahead >= range->start && lookahead <= range->end); +} + +/* + * Lexer Macros + */ + +#ifdef _MSC_VER +#define UNUSED __pragma(warning(suppress : 4101)) +#else +#define UNUSED __attribute__((unused)) +#endif + +#define START_LEXER() \ + bool result = false; \ + bool skip = false; \ + UNUSED \ + bool eof = false; \ + int32_t lookahead; \ + goto start; \ + next_state: \ + lexer->advance(lexer, skip); \ + start: \ + skip = false; \ + lookahead = lexer->lookahead; + +#define ADVANCE(state_value) \ + { \ + state = state_value; \ + goto next_state; \ + } + +#define ADVANCE_MAP(...) \ + { \ + static const uint16_t map[] = { __VA_ARGS__ }; \ + for (uint32_t i = 0; i < sizeof(map) / sizeof(map[0]); i += 2) { \ + if (map[i] == lookahead) { \ + state = map[i + 1]; \ + goto next_state; \ + } \ + } \ + } + +#define SKIP(state_value) \ + { \ + skip = true; \ + state = state_value; \ + goto next_state; \ + } + +#define ACCEPT_TOKEN(symbol_value) \ + result = true; \ + lexer->result_symbol = symbol_value; \ + lexer->mark_end(lexer); + +#define END_STATE() return result; + +/* + * Parse Table Macros + */ + +#define SMALL_STATE(id) ((id) - LARGE_STATE_COUNT) + +#define STATE(id) id + +#define ACTIONS(id) id + +#define SHIFT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = (state_value) \ + } \ + }} + +#define SHIFT_REPEAT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = (state_value), \ + .repetition = true \ + } \ + }} + +#define SHIFT_EXTRA() \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .extra = true \ + } \ + }} + +#define REDUCE(symbol_name, children, precedence, prod_id) \ + {{ \ + .reduce = { \ + .type = TSParseActionTypeReduce, \ + .symbol = symbol_name, \ + .child_count = children, \ + .dynamic_precedence = precedence, \ + .production_id = prod_id \ + }, \ + }} + +#define RECOVER() \ + {{ \ + .type = TSParseActionTypeRecover \ + }} + +#define ACCEPT_INPUT() \ + {{ \ + .type = TSParseActionTypeAccept \ + }} + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_PARSER_H_ diff --git a/external-crates/move/tooling/tree-sitter/tests/address.move b/external-crates/move/tooling/tree-sitter/tests/address.move new file mode 100644 index 0000000000000..43b6e69173a97 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/address.move @@ -0,0 +1,79 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::address { + use sui::hex; + use std::ascii; + use std::bcs; + use std::string; + + /// The length of an address, in bytes + const LENGTH: u64 = 32; + + // The largest integer that can be represented with 32 bytes: 2^(8*32) - 1 + const MAX: u256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935; + + #[allow(unused_const)] + /// Error from `from_bytes` when it is supplied too many or too few bytes. + const EAddressParseError: u64 = 0; + + /// Convert `a` into a u256 by interpreting `a` as the bytes of a big-endian integer + /// (e.g., `to_u256(0x1) == 1`) + public native fun to_u256(a: address): u256; + + spec to_u256 { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + /// Convert `n` into an address by encoding it as a big-endian integer (e.g., `from_u256(1) = @0x1`) + /// Aborts if `n` > `MAX_ADDRESS` + public native fun from_u256(n: u256): address; + + spec from_u256 { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + /// Convert `bytes` into an address. + /// Aborts with `EAddressParseError` if the length of `bytes` is not 32 + public native fun from_bytes(bytes: vector): address; + + spec from_bytes { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + /// Convert `a` into BCS-encoded bytes. + public fun to_bytes(a: address): vector { + bcs::to_bytes(&a) + } + + /// Convert `a` to a hex-encoded ASCII string + public fun to_ascii_string(a: address): ascii::String { + ascii::string(hex::encode(to_bytes(a))) + } + + /// Convert `a` to a hex-encoded ASCII string + public fun to_string(a: address): string::String { + string::from_ascii(to_ascii_string(a)) + } + + /// Length of a Sui address in bytes + public fun length(): u64 { + LENGTH + } + + /// Largest possible address + public fun max(): u256 { + MAX + } + + spec module { pragma verify = false; } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/address_literals.move b/external-crates/move/tooling/tree-sitter/tests/address_literals.move new file mode 100644 index 0000000000000..4b72f80ba0670 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/address_literals.move @@ -0,0 +1,10 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::m { + public fun t2(condition: bool) { + if (condition) @0 else @0; + if (condition) @0x0 else @0; + if (condition) @ident else @0; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/annotations.move b/external-crates/move/tooling/tree-sitter/tests/annotations.move new file mode 100644 index 0000000000000..3044dc326a718 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/annotations.move @@ -0,0 +1,12 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +#[allow(unused_const, unused_variable)] + +#[allow(unused_const, unused_variable)] +#[test, expected_failure(abort_code = ::staking::staking_tests::ENotImplemented)] +#[test, expected_failure(abort_code = other_module::ENotFound)] +#[expected_failure(arithmetic_error, location = pkg_addr::other_module)] + +// #[allow(unused_const, unused_variable)] +module c::k {} diff --git a/external-crates/move/tooling/tree-sitter/tests/as_expressions.move b/external-crates/move/tooling/tree-sitter/tests/as_expressions.move new file mode 100644 index 0000000000000..f4744912d0c14 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/as_expressions.move @@ -0,0 +1,74 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module foo::bar { + fun f(): u64 { + 1 as u64; + 1 + 2 as u64; + (1 + 2) as u64; + 1 + (2 as u64); + v[1 as u64]; + 1 as u64 + 2; + (1 as u64) + 2; + } + + fun simple(cond: bool, x: u32) { + (if (cond) x else { x }) as u32; + (if (cond) x else { x } as u32); + (loop { break 0 }) as u32; + (loop { break 0 } as u32); + ('l: { 0 }) as u32; + ('l: { 0 } as u32); + (return) as u32; + (return as u32); + loop { + (break) as u32; + (break as u32); + (continue) as u32; + (continue as u32); + }; + (0 as u32) as u32; + (0 as u32 as u32); + } + + public fun f_imm(s: &S): &u64 { &s.f } + + fun ops(x: u8, y: u8) { + (x + y as u32); + (x - y as u32); + (x * y as u32); + (x / y as u32); + (x % y as u32); + (x & y as u32); + (x | y as u32); + (x ^ y as u32); + (x << y as u32); + (x >> y as u32); + + (x + y) as u32; + (x - y) as u32; + (x * y) as u32; + (x / y) as u32; + (x % y) as u32; + (x & y) as u32; + (x | y) as u32; + (x ^ y) as u32; + (x << y) as u32; + (x >> y) as u32; + } + + + public struct S has copy, drop { f: u64 } + + fun dotted(cond: bool, mut s: S) { + (1 + s.f) as u32; + (1 + s.f as u32); + (1 + S { f: 0 }.f) as u32; + (1 + S { f: 0 }.f as u32); + (*if (cond) { &0 } else { &mut 0 }) as u32; + // this case still does not work + // (*if (cond) { &0 } else { &mut 0 } as u32); + (*if (cond) { &s } else {&mut s}.f_imm()) as u32; + (*if (cond) { &s } else {&mut s}.f_imm() as u32); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/ascii.move b/external-crates/move/tooling/tree-sitter/tests/ascii.move new file mode 100644 index 0000000000000..29566285ef2c4 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/ascii.move @@ -0,0 +1,151 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// The `ASCII` module defines basic string and char newtypes in Move that verify +/// that characters are valid ASCII, and that strings consist of only valid ASCII characters. +module std::ascii { + use std::vector; + use std::option::{Self, Option}; + + /// An invalid ASCII character was encountered when creating an ASCII string. + const EINVALID_ASCII_CHARACTER: u64 = 0x10000; + + /// The `String` struct holds a vector of bytes that all represent + /// valid ASCII characters. Note that these ASCII characters may not all + /// be printable. To determine if a `String` contains only "printable" + /// characters you should use the `all_characters_printable` predicate + /// defined in this module. + struct String has copy, drop, store { + bytes: vector, + } + spec String { + invariant forall i in 0..len(bytes): is_valid_char(bytes[i]); + } + + /// An ASCII character. + struct Char has copy, drop, store { + byte: u8, + } + spec Char { + invariant is_valid_char(byte); + } + + /// Convert a `byte` into a `Char` that is checked to make sure it is valid ASCII. + public fun char(byte: u8): Char { + assert!(is_valid_char(byte), EINVALID_ASCII_CHARACTER); + Char { byte } + } + spec char { + aborts_if !is_valid_char(byte) with EINVALID_ASCII_CHARACTER; + } + + /// Convert a vector of bytes `bytes` into an `String`. Aborts if + /// `bytes` contains non-ASCII characters. + public fun string(bytes: vector): String { + let x = try_string(bytes); + assert!( + option::is_some(&x), + EINVALID_ASCII_CHARACTER + ); + option::destroy_some(x) + } + spec string { + aborts_if exists i in 0..len(bytes): !is_valid_char(bytes[i]) with EINVALID_ASCII_CHARACTER; + } + + /// Convert a vector of bytes `bytes` into an `String`. Returns + /// `Some()` if the `bytes` contains all valid ASCII + /// characters. Otherwise returns `None`. + public fun try_string(bytes: vector): Option { + let len = vector::length(&bytes); + let i = 0; + while ({ + spec { + invariant i <= len; + invariant forall j in 0..i: is_valid_char(bytes[j]); + }; + i < len + }) { + let possible_byte = *vector::borrow(&bytes, i); + if (!is_valid_char(possible_byte)) return option::none(); + i = i + 1; + }; + spec { + assert i == len; + assert forall j in 0..len: is_valid_char(bytes[j]); + }; + option::some(String { bytes }) + } + + /// Returns `true` if all characters in `string` are printable characters + /// Returns `false` otherwise. Not all `String`s are printable strings. + public fun all_characters_printable(string: &String): bool { + let len = vector::length(&string.bytes); + let i = 0; + while ({ + spec { + invariant i <= len; + invariant forall j in 0..i: is_printable_char(string.bytes[j]); + }; + i < len + }) { + let byte = *vector::borrow(&string.bytes, i); + if (!is_printable_char(byte)) return false; + i = i + 1; + }; + spec { + assert i == len; + assert forall j in 0..len: is_printable_char(string.bytes[j]); + }; + true + } + spec all_characters_printable { + ensures result ==> (forall j in 0..len(string.bytes): is_printable_char(string.bytes[j])); + } + + public fun push_char(string: &mut String, char: Char) { + vector::push_back(&mut string.bytes, char.byte); + } + spec push_char { + ensures len(string.bytes) == len(old(string.bytes)) + 1; + } + + public fun pop_char(string: &mut String): Char { + Char { byte: vector::pop_back(&mut string.bytes) } + } + spec pop_char { + ensures len(string.bytes) == len(old(string.bytes)) - 1; + } + + public fun length(string: &String): u64 { + vector::length(as_bytes(string)) + } + + /// Get the inner bytes of the `string` as a reference + public fun as_bytes(string: &String): &vector { + &string.bytes + } + + /// Unpack the `string` to get its backing bytes + public fun into_bytes(string: String): vector { + let String { bytes } = string; + bytes + } + + /// Unpack the `char` into its underlying byte. + public fun byte(char: Char): u8 { + let Char { byte } = char; + byte + } + + /// Returns `true` if `b` is a valid ASCII character. Returns `false` otherwise. + public fun is_valid_char(b: u8): bool { + b <= 0x7F + } + + /// Returns `true` if `byte` is an printable ASCII character. Returns `false` otherwise. + public fun is_printable_char(byte: u8): bool { + byte >= 0x20 && // Disallow metacharacters + byte <= 0x7E // Don't allow DEL metacharacter + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/authenticator_state.move b/external-crates/move/tooling/tree-sitter/tests/authenticator_state.move new file mode 100644 index 0000000000000..8f19b0ccfefa8 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/authenticator_state.move @@ -0,0 +1,406 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[allow(unused_use)] +// Module for storing authenticator state, which is currently just the set of valid JWKs used by +// zklogin. +// +// This module is not currently accessible from user contracts, and is used only to record the JWK +// state to the chain for auditability + restore from snapshot purposes. +module sui::authenticator_state { + // friend bar; + // friend sui::coin; + + use std::string; + use std::option::{Self, Option}; + use std::vector; + use sui::dynamic_field; + use std::string::{String, utf8}; + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + use sui::math; + + /// Sender is not @0x0 the system address. + const ENotSystemAddress: u64 = 0; + const EWrongInnerVersion: u64 = 1; + const EJwksNotSorted: u64 = 2; + + const CurrentVersion: u64 = 1; + + /// Singleton shared object which stores the global authenticator state. + /// The actual state is stored in a dynamic field of type AuthenticatorStateInner to support + /// future versions of the authenticator state. + struct AuthenticatorState has key { + id: UID, + version: u64, + } + + struct AuthenticatorStateInner has store { + version: u64, + + /// List of currently active JWKs. + active_jwks: vector, + } + + #[allow(unused_field)] + /// Must match the JWK struct in fastcrypto-zkp + struct JWK has store, drop, copy { + kty: String, + e: String, + n: String, + alg: String, + } + + #[allow(unused_field)] + /// Must match the JwkId struct in fastcrypto-zkp + struct JwkId has store, drop, copy { + iss: String, + kid: String, + } + + #[allow(unused_field)] + struct ActiveJwk has store, drop, copy { + jwk_id: JwkId, + jwk: JWK, + epoch: u64, + } + + #[test_only] + public fun create_active_jwk(iss: String, kid: String, kty: String, epoch: u64): ActiveJwk { + ActiveJwk { + jwk_id: JwkId { + iss: iss, + kid: kid, + }, + jwk: JWK { + kty: kty, + e: utf8(b"AQAB"), + n: utf8(b"test"), + alg: utf8(b"RS256"), + }, + epoch, + } + } + + fun active_jwk_equal(a: &ActiveJwk, b: &ActiveJwk): bool { + // note: epoch is ignored + jwk_equal(&a.jwk, &b.jwk) && jwk_id_equal(&a.jwk_id, &b.jwk_id) + } + + fun jwk_equal(a: &JWK, b: &JWK): bool { + (&a.kty == &b.kty) && + (&a.e == &b.e) && + (&a.n == &b.n) && + (&a.alg == &b.alg) + } + + fun jwk_id_equal(a: &JwkId, b: &JwkId): bool { + (&a.iss == &b.iss) && (&a.kid == &b.kid) + } + + // Compare the underlying byte arrays lexicographically. Since the strings may be utf8 this + // ordering is not necessarily the same as the string ordering, but we just need some + // canonical that is cheap to compute. + fun string_bytes_lt(a: &String, b: &String): bool { + let a_bytes = string::bytes(a); + let b_bytes = string::bytes(b); + + let X { l, t } = b; + + if (vector::length(a_bytes) < vector::length(b_bytes)) { + true + } else if (vector::length(a_bytes) > vector::length(b_bytes)) { + false + } else { + let i = 0; + while (i < vector::length(a_bytes)) { + let a_byte = *vector::borrow(a_bytes, i); + let b_byte = *vector::borrow(b_bytes, i); + if (a_byte < b_byte) { + return true + } else if (a_byte > b_byte) { + return false + }; + i = i + 1; + }; + // all bytes are equal + false + } + } + + fun jwk_lt(a: &ActiveJwk, b: &ActiveJwk): bool { + // note: epoch is ignored + if (&a.jwk_id.iss != &b.jwk_id.iss) { + return string_bytes_lt(&a.jwk_id.iss, &b.jwk_id.iss) + }; + if (&a.jwk_id.kid != &b.jwk_id.kid) { + return string_bytes_lt(&a.jwk_id.kid, &b.jwk_id.kid) + }; + if (&a.jwk.kty != &b.jwk.kty) { + return string_bytes_lt(&a.jwk.kty, &b.jwk.kty) + }; + if (&a.jwk.e != &b.jwk.e) { + return string_bytes_lt(&a.jwk.e, &b.jwk.e) + }; + if (&a.jwk.n != &b.jwk.n) { + return string_bytes_lt(&a.jwk.n, &b.jwk.n) + }; + string_bytes_lt(&a.jwk.alg, &b.jwk.alg) + } + + #[allow(unused_function)] + /// Create and share the AuthenticatorState object. This function is call exactly once, when + /// the authenticator state object is first created. + /// Can only be called by genesis or change_epoch transactions. + fun create(ctx: &TxContext) { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + let version = CurrentVersion; + + let inner = AuthenticatorStateInner { + version, + active_jwks: vector[], + }; + + let self = AuthenticatorState { + id: object::authenticator_state(), + version, + }; + + dynamic_field::add(&mut self.id, version, inner); + transfer::share_object(self); + } + + fun load_inner_mut( + self: &mut AuthenticatorState, + ): &mut AuthenticatorStateInner { + let version = self.version; + + // replace this with a lazy update function when we add a new version of the inner object. + assert!(version == CurrentVersion, EWrongInnerVersion); + + let inner: &mut AuthenticatorStateInner = dynamic_field::borrow_mut(&mut self.id, self.version); + + assert!(inner.version == version, EWrongInnerVersion); + inner + } + + fun load_inner( + self: &AuthenticatorState, + ): &AuthenticatorStateInner { + let version = self.version; + + // replace this with a lazy update function when we add a new version of the inner object. + assert!(version == CurrentVersion, EWrongInnerVersion); + + let inner: &AuthenticatorStateInner = dynamic_field::borrow(&self.id, self.version); + + assert!(inner.version == version, EWrongInnerVersion); + inner + } + + fun check_sorted(new_active_jwks: &vector) { + let i = 0; + while (i < vector::length(new_active_jwks) - 1) { + let a = vector::borrow(new_active_jwks, i); + let b = vector::borrow(new_active_jwks, i + 1); + assert!(jwk_lt(a, b), EJwksNotSorted); + i = i + 1; + }; + } + + #[allow(unused_function)] + /// Record a new set of active_jwks. Called when executing the AuthenticatorStateUpdate system + /// transaction. The new input vector must be sorted and must not contain duplicates. + /// If a new JWK is already present, but with a previous epoch, then the epoch is updated to + /// indicate that the JWK has been validated in the current epoch and should not be expired. + fun update_authenticator_state( + self: &mut AuthenticatorState, + new_active_jwks: vector, + ctx: &TxContext, + ) { + // Validator will make a special system call with sender set as 0x0. + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + check_sorted(&new_active_jwks); + let new_active_jwks = deduplicate(new_active_jwks); + + let inner = load_inner_mut(self); + + let res = vector[]; + let i = 0; + let j = 0; + let active_jwks_len = vector::length(&inner.active_jwks); + let new_active_jwks_len = vector::length(&new_active_jwks); + + while (i < active_jwks_len && j < new_active_jwks_len) { + let old_jwk = vector::borrow(&inner.active_jwks, i); + let new_jwk = vector::borrow(&new_active_jwks, j); + + // when they are equal, push only one, but use the max epoch of the two + if (active_jwk_equal(old_jwk, new_jwk)) { + let jwk = *old_jwk; + jwk.epoch = math::max(old_jwk.epoch, new_jwk.epoch); + vector::push_back(&mut res, jwk); + i = i + 1; + j = j + 1; + } else if (jwk_id_equal(&old_jwk.jwk_id, &new_jwk.jwk_id)) { + // if only jwk_id is equal, then the key has changed. Providers should not send + // JWKs like this, but if they do, we must ignore the new JWK to avoid having a + // liveness / forking issues + vector::push_back(&mut res, *old_jwk); + i = i + 1; + j = j + 1; + } else if (jwk_lt(old_jwk, new_jwk)) { + vector::push_back(&mut res, *old_jwk); + i = i + 1; + } else { + vector::push_back(&mut res, *new_jwk); + j = j + 1; + } + }; + + while (i < active_jwks_len) { + vector::push_back(&mut res, *vector::borrow(&inner.active_jwks, i)); + i = i + 1; + }; + while (j < new_active_jwks_len) { + vector::push_back(&mut res, *vector::borrow(&new_active_jwks, j)); + j = j + 1; + }; + + inner.active_jwks = res; + } + + fun deduplicate(jwks: vector): vector { + let res = vector[]; + let i = 0; + let prev: Option = option::none(); + while (i < vector::length(&jwks)) { + let jwk = vector::borrow(&jwks, i); + if (option::is_none(&prev)) { + option::fill(&mut prev, jwk.jwk_id); + } else if (jwk_id_equal(option::borrow(&prev), &jwk.jwk_id)) { + // skip duplicate jwks in input + i = i + 1; + continue + } else { + *option::borrow_mut(&mut prev) = jwk.jwk_id; + }; + vector::push_back(&mut res, *jwk); + i = i + 1; + }; + res + } + + #[allow(unused_function)] + // Called directly by rust when constructing the ChangeEpoch transaction. + fun expire_jwks( + self: &mut AuthenticatorState, + // any jwk below this epoch is not retained + min_epoch: u64, + ctx: &TxContext) { + // This will only be called by sui_system::advance_epoch + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + let inner = load_inner_mut(self); + + let len = vector::length(&inner.active_jwks); + + // first we count how many jwks from each issuer are above the min_epoch + // and store the counts in a vector that parallels the (sorted) active_jwks vector + let issuer_max_epochs = vector[]; + let i = 0; + let prev_issuer: Option = option::none(); + + while (i < len) { + let cur = vector::borrow(&inner.active_jwks, i); + let cur_iss = &cur.jwk_id.iss; + if (option::is_none(&prev_issuer)) { + option::fill(&mut prev_issuer, *cur_iss); + vector::push_back(&mut issuer_max_epochs, cur.epoch); + } else { + if (cur_iss == option::borrow(&prev_issuer)) { + let back = vector::length(&issuer_max_epochs) - 1; + let prev_max_epoch = vector::borrow_mut(&mut issuer_max_epochs, back); + *prev_max_epoch = math::max(*prev_max_epoch, cur.epoch); + } else { + *option::borrow_mut(&mut prev_issuer) = *cur_iss; + vector::push_back(&mut issuer_max_epochs, cur.epoch); + } + }; + i = i + 1; + }; + + // Now, filter out any JWKs that are below the min_epoch, unless that issuer has no + // JWKs >= the min_epoch, in which case we keep all of them. + let new_active_jwks: vector = vector[]; + let prev_issuer: Option = option::none(); + let i = 0; + let j = 0; + while (i < len) { + let jwk = vector::borrow(&inner.active_jwks, i); + let cur_iss = &jwk.jwk_id.iss; + + if (option::is_none(&prev_issuer)) { + option::fill(&mut prev_issuer, *cur_iss); + } else if (cur_iss != option::borrow(&prev_issuer)) { + *option::borrow_mut(&mut prev_issuer) = *cur_iss; + j = j + 1; + }; + + let mut max_epoch_for_iss = vector::borrow(&issuer_max_epochs, j); + + // TODO: if the iss for this jwk has *no* jwks that meet the minimum epoch, + // then expire nothing. + if (*max_epoch_for_iss < min_epoch || jwk.epoch >= min_epoch) { + vector::push_back(&mut new_active_jwks, *jwk); + }; + i = i + 1; + }; + inner.active_jwks = new_active_jwks; + } + + #[allow(unused_function)] + /// Get the current active_jwks. Called when the node starts up in order to load the current + /// JWK state from the chain. + fun get_active_jwks( + self: &AuthenticatorState, + ctx: &TxContext, + ): vector { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + load_inner(self).active_jwks + } + + #[test_only] + public fun create_for_testing(ctx: &TxContext) { + create(ctx); + } + + #[test_only] + public fun update_authenticator_state_for_testing( + self: &mut AuthenticatorState, + new_active_jwks: vector, + ctx: &TxContext, + ) { + update_authenticator_state(self, new_active_jwks, ctx); + } + + #[test_only] + public fun expire_jwks_for_testing( + self: &mut AuthenticatorState, + min_epoch: u64, + ctx: &TxContext, + ) { + expire_jwks(self, min_epoch, ctx); + } + + #[test_only] + public fun get_active_jwks_for_testing( + self: &AuthenticatorState, + ctx: &TxContext, + ): vector { + get_active_jwks(self, ctx) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/bag.move b/external-crates/move/tooling/tree-sitter/tests/bag.move new file mode 100644 index 0000000000000..57db2636f4194 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/bag.move @@ -0,0 +1,112 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// A bag is a heterogeneous map-like collection. The collection is similar to `sui::table` in that +/// its keys and values are not stored within the `Bag` value, but instead are stored using Sui's +/// object system. The `Bag` struct acts only as a handle into the object system to retrieve those +/// keys and values. +/// Note that this means that `Bag` values with exactly the same key-value mapping will not be +/// equal, with `==`, at runtime. For example +/// ``` +/// let bag1 = bag::new(); +/// let bag2 = bag::new(); +/// bag::add(&mut bag1, 0, false); +/// bag::add(&mut bag1, 1, true); +/// bag::add(&mut bag2, 0, false); +/// bag::add(&mut bag2, 1, true); +/// // bag1 does not equal bag2, despite having the same entries +/// assert!(&bag1 != &bag2, 0); +/// ``` +/// At it's core, `sui::bag` is a wrapper around `UID` that allows for access to +/// `sui::dynamic_field` while preventing accidentally stranding field values. A `UID` can be +/// deleted, even if it has dynamic fields associated with it, but a bag, on the other hand, must be +/// empty to be destroyed. +module sui::bag { + use sui::object::{Self, UID}; + use sui::dynamic_field as field; + use sui::tx_context::TxContext; + + // Attempted to destroy a non-empty bag + const EBagNotEmpty: u64 = 0; + + struct Bag has key, store { + /// the ID of this bag + id: UID, + /// the number of key-value pairs in the bag + size: u64, + } + + /// Creates a new, empty bag + public fun new(ctx: &mut TxContext): Bag { + Bag { + id: object::new(ctx), + size: 0, + } + } + + /// Adds a key-value pair to the bag `bag: &mut Bag` + /// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the bag already has an entry with + /// that key `k: K`. + public fun add(bag: &mut Bag, k: K, v: V) { + field::add(&mut bag.id, k, v); + bag.size = bag.size + 1; + } + + /// Immutable borrows the value associated with the key in the bag `bag: &Bag`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the bag does not have an entry with + /// that key `k: K`. + /// Aborts with `sui::dynamic_field::EFieldTypeMismatch` if the bag has an entry for the key, but + /// the value does not have the specified type. + public fun borrow(bag: &Bag, k: K): &V { + field::borrow(&bag.id, k) + } + + /// Mutably borrows the value associated with the key in the bag `bag: &mut Bag`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the bag does not have an entry with + /// that key `k: K`. + /// Aborts with `sui::dynamic_field::EFieldTypeMismatch` if the bag has an entry for the key, but + /// the value does not have the specified type. + public fun borrow_mut(bag: &mut Bag, k: K): &mut V { + field::borrow_mut(&mut bag.id, k) + } + + /// Mutably borrows the key-value pair in the bag `bag: &mut Bag` and returns the value. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the bag does not have an entry with + /// that key `k: K`. + /// Aborts with `sui::dynamic_field::EFieldTypeMismatch` if the bag has an entry for the key, but + /// the value does not have the specified type. + public fun remove(bag: &mut Bag, k: K): V { + let v = field::remove(&mut bag.id, k); + bag.size = bag.size - 1; + v + } + + /// Returns true iff there is an value associated with the key `k: K` in the bag `bag: &Bag` + public fun contains(bag: &Bag, k: K): bool { + field::exists_(&bag.id, k) + } + + /// Returns true iff there is an value associated with the key `k: K` in the bag `bag: &Bag` + /// with an assigned value of type `V` + public fun contains_with_type(bag: &Bag, k: K): bool { + field::exists_with_type(&bag.id, k) + } + + /// Returns the size of the bag, the number of key-value pairs + public fun length(bag: &Bag): u64 { + bag.size + } + + /// Returns true iff the bag is empty (if `length` returns `0`) + public fun is_empty(bag: &Bag): bool { + bag.size == 0 + } + + /// Destroys an empty bag + /// Aborts with `EBagNotEmpty` if the bag still contains values + public fun destroy_empty(bag: Bag) { + let Bag { id, size } = bag; + assert!(size == 0, EBagNotEmpty); + object::delete(id) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/balance.move b/external-crates/move/tooling/tree-sitter/tests/balance.move new file mode 100644 index 0000000000000..163e89dee34c1 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/balance.move @@ -0,0 +1,194 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// A storable handler for Balances in general. Is used in the `Coin` +/// module to allow balance operations and can be used to implement +/// custom coins with `Supply` and `Balance`s. +module sui::balance { + use sui::tx_context::{Self, TxContext}; + + friend sui::sui; + + /// For when trying to destroy a non-zero balance. + const ENonZero: u64 = 0; + + /// For when an overflow is happening on Supply operations. + const EOverflow: u64 = 1; + + /// For when trying to withdraw more than there is. + const ENotEnough: u64 = 2; + + /// Sender is not @0x0 the system address. + const ENotSystemAddress: u64 = 3; + + /// A Supply of T. Used for minting and burning. + /// Wrapped into a `TreasuryCap` in the `Coin` module. + struct Supply has store { + value: u64 + } + + /// Storable balance - an inner struct of a Coin type. + /// Can be used to store coins which don't need the key ability. + struct Balance has store { + value: u64 + } + + /// Get the amount stored in a `Balance`. + public fun value(self: &Balance): u64 { + self.value + } + + /// Get the `Supply` value. + public fun supply_value(supply: &Supply): u64 { + supply.value + } + + /// Create a new supply for type T. + public fun create_supply(_: T): Supply { + Supply { value: 0 } + } + + /// Increase supply by `value` and create a new `Balance` with this value. + public fun increase_supply(self: &mut Supply, value: u64): Balance { + assert!(value < (18446744073709551615u64 - self.value), EOverflow); + self.value = self.value + value; + Balance { value } + } + + /// Burn a Balance and decrease Supply. + public fun decrease_supply(self: &mut Supply, balance: Balance): u64 { + let Balance { value } = balance; + assert!(self.value >= value, EOverflow); + self.value = self.value - value; + value + } + + /// Create a zero `Balance` for type `T`. + public fun zero(): Balance { + Balance { value: 0 } + } + + spec zero { + aborts_if false; + ensures result.value == 0; + } + + /// Join two balances together. + public fun join(self: &mut Balance, balance: Balance): u64 { + let Balance { value } = balance; + self.value = self.value + value; + self.value + } + + spec join { + ensures self.value == old(self.value) + balance.value; + ensures result == self.value; + } + + /// Split a `Balance` and take a sub balance from it. + public fun split(self: &mut Balance, value: u64): Balance { + assert!(self.value >= value, ENotEnough); + self.value = self.value - value; + Balance { value } + } + + spec split { + aborts_if self.value < value with ENotEnough; + ensures self.value == old(self.value) - value; + ensures result.value == value; + } + + /// Withdraw all balance. After this the remaining balance must be 0. + public fun withdraw_all(self: &mut Balance): Balance { + let value = self.value; + split(self, value) + } + + spec withdraw_all { + ensures self.value == 0; + } + + /// Destroy a zero `Balance`. + public fun destroy_zero(balance: Balance) { + assert!(balance.value == 0, ENonZero); + let Balance { value: _ } = balance; + } + + spec destroy_zero { + aborts_if balance.value != 0 with ENonZero; + } + + #[allow(unused_function)] + /// CAUTION: this function creates a `Balance` without increasing the supply. + /// It should only be called by the epoch change system txn to create staking rewards, + /// and nowhere else. + fun create_staking_rewards(value: u64, ctx: &TxContext): Balance { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + Balance { value } + } + + #[allow(unused_function)] + /// CAUTION: this function destroys a `Balance` without decreasing the supply. + /// It should only be called by the epoch change system txn to destroy storage rebates, + /// and nowhere else. + fun destroy_storage_rebates(self: Balance, ctx: &TxContext) { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + let Balance { value: _ } = self; + } + + /// Destroy a `Supply` preventing any further minting and burning. + public(friend) fun destroy_supply(self: Supply): u64 { + let Supply { value } = self; + value + } + + #[test_only] + /// Create a `Balance` of any coin for testing purposes. + public fun create_for_testing(value: u64): Balance { + Balance { value } + } + + #[test_only] + /// Destroy a `Balance` of any coin for testing purposes. + public fun destroy_for_testing(self: Balance): u64 { + let Balance { value } = self; + value + } + + #[test_only] + /// Create a `Supply` of any coin for testing purposes. + public fun create_supply_for_testing(): Supply { + Supply { value: 0 } + } +} + +#[test_only] +module sui::balance_tests { + use sui::balance; + use sui::sui::SUI; + use sui::test_utils; + + #[test] + fun test_balance() { + let balance = balance::zero(); + let another = balance::create_for_testing(1000); + + balance::join(&mut balance, another); + + assert!(balance::value(&balance) == 1000, 0); + + let balance1 = balance::split(&mut balance, 333); + let balance2 = balance::split(&mut balance, 333); + let balance3 = balance::split(&mut balance, 334); + + balance::destroy_zero(balance); + + assert!(balance::value(&balance1) == 333, 1); + assert!(balance::value(&balance2) == 333, 2); + assert!(balance::value(&balance3) == 334, 3); + + test_utils::destroy(balance1); + test_utils::destroy(balance2); + test_utils::destroy(balance3); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/bcs.move b/external-crates/move/tooling/tree-sitter/tests/bcs.move new file mode 100644 index 0000000000000..695e7012bfea7 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/bcs.move @@ -0,0 +1,453 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// This module implements BCS (de)serialization in Move. +/// Full specification can be found here: https://github.com/diem/bcs +/// +/// Short summary (for Move-supported types): +/// +/// - address - sequence of X bytes +/// - bool - byte with 0 or 1 +/// - u8 - a single u8 byte +/// - u64 / u128 - LE bytes +/// - vector - ULEB128 length + LEN elements +/// - option - first byte bool: None (0) or Some (1), then value +/// +/// Usage example: +/// ``` +/// /// This function reads u8 and u64 value from the input +/// /// and returns the rest of the bytes. +/// fun deserialize(bytes: vector): (u8, u64, vector) { +/// use sui::bcs::{Self, BCS}; +/// +/// let prepared: BCS = bcs::new(bytes); +/// let (u8_value, u64_value) = ( +/// bcs::peel_u8(&mut prepared), +/// bcs::peel_u64(&mut prepared) +/// ); +/// +/// // unpack bcs struct +/// let leftovers = bcs::into_remainder_bytes(prepared); +/// +/// (u8_value, u64_value, leftovers) +/// } +/// ``` +module sui::bcs { + use std::option::{Self, Option}; + use std::vector as v; + use sui::address; + use std::bcs; + + /// For when bytes length is less than required for deserialization. + const EOutOfRange: u64 = 0; + + /// For when the boolean value different than `0` or `1`. + const ENotBool: u64 = 1; + + /// For when ULEB byte is out of range (or not found). + const ELenOutOfRange: u64 = 2; + + /// A helper struct that saves resources on operations. For better + /// vector performance, it stores reversed bytes of the BCS and + /// enables use of `vector::pop_back`. + struct BCS has store, copy, drop { + bytes: vector + } + + /// Get BCS serialized bytes for any value. + /// Re-exports stdlib `bcs::to_bytes`. + public fun to_bytes(value: &T): vector { + bcs::to_bytes(value) + } + + /// Creates a new instance of BCS wrapper that holds inversed + /// bytes for better performance. + public fun new(bytes: vector): BCS { + v::reverse(&mut bytes); + BCS { bytes } + } + + /// Unpack the `BCS` struct returning the leftover bytes. + /// Useful for passing the data further after partial deserialization. + public fun into_remainder_bytes(bcs: BCS): vector { + let BCS { bytes } = bcs; + v::reverse(&mut bytes); + bytes + } + + /// Read address from the bcs-serialized bytes. + public fun peel_address(bcs: &mut BCS): address { + assert!(v::length(&bcs.bytes) >= address::length(), EOutOfRange); + let (addr_bytes, i) = (v::empty(), 0); + while (i < address::length()) { + v::push_back(&mut addr_bytes, v::pop_back(&mut bcs.bytes)); + i = i + 1; + }; + address::from_bytes(addr_bytes) + } + + /// Read a `bool` value from bcs-serialized bytes. + public fun peel_bool(bcs: &mut BCS): bool { + let value = peel_u8(bcs); + if (value == 0) { + false + } else if (value == 1) { + true + } else { + abort ENotBool + } + } + + /// Read `u8` value from bcs-serialized bytes. + public fun peel_u8(bcs: &mut BCS): u8 { + assert!(v::length(&bcs.bytes) >= 1, EOutOfRange); + v::pop_back(&mut bcs.bytes) + } + + /// Read `u64` value from bcs-serialized bytes. + public fun peel_u64(bcs: &mut BCS): u64 { + assert!(v::length(&bcs.bytes) >= 8, EOutOfRange); + + let (value, i) = (0u64, 0u8); + while (i < 64) { + let byte = (v::pop_back(&mut bcs.bytes) as u64); + value = value + (byte << i); + i = i + 8; + }; + + value + } + + /// Read `u128` value from bcs-serialized bytes. + public fun peel_u128(bcs: &mut BCS): u128 { + assert!(v::length(&bcs.bytes) >= 16, EOutOfRange); + + let (value, i) = (0u128, 0u8); + while (i < 128) { + let byte = (v::pop_back(&mut bcs.bytes) as u128); + value = value + (byte << i); + i = i + 8; + }; + + value + } + + // === Vector === + + /// Read ULEB bytes expecting a vector length. Result should + /// then be used to perform `peel_*` operation LEN times. + /// + /// In BCS `vector` length is implemented with ULEB128; + /// See more here: https://en.wikipedia.org/wiki/LEB128 + public fun peel_vec_length(bcs: &mut BCS): u64 { + let (total, shift, len) = (0u64, 0, 0); + while (true) { + assert!(len <= 4, ELenOutOfRange); + let byte = (v::pop_back(&mut bcs.bytes) as u64); + len = len + 1; + total = total | ((byte & 0x7f) << shift); + if ((byte & 0x80) == 0) { + break + }; + shift = shift + 7; + }; + total + } + + /// Peel a vector of `address` from serialized bytes. + public fun peel_vec_address(bcs: &mut BCS): vector
{ + let (len, i, res) = (peel_vec_length(bcs), 0, vector[]); + while (i < len) { + v::push_back(&mut res, peel_address(bcs)); + i = i + 1; + }; + res + } + + /// Peel a vector of `address` from serialized bytes. + public fun peel_vec_bool(bcs: &mut BCS): vector { + let (len, i, res) = (peel_vec_length(bcs), 0, vector[]); + while (i < len) { + v::push_back(&mut res, peel_bool(bcs)); + i = i + 1; + }; + res + } + + /// Peel a vector of `u8` (eg string) from serialized bytes. + public fun peel_vec_u8(bcs: &mut BCS): vector { + let (len, i, res) = (peel_vec_length(bcs), 0, vector[]); + while (i < len) { + v::push_back(&mut res, peel_u8(bcs)); + i = i + 1; + }; + res + } + + /// Peel a `vector>` (eg vec of string) from serialized bytes. + public fun peel_vec_vec_u8(bcs: &mut BCS): vector> { + let (len, i, res) = (peel_vec_length(bcs), 0, vector[]); + while (i < len) { + v::push_back(&mut res, peel_vec_u8(bcs)); + i = i + 1; + }; + res + } + + /// Peel a vector of `u64` from serialized bytes. + public fun peel_vec_u64(bcs: &mut BCS): vector { + let (len, i, res) = (peel_vec_length(bcs), 0, vector[]); + while (i < len) { + v::push_back(&mut res, peel_u64(bcs)); + i = i + 1; + }; + res + } + + /// Peel a vector of `u128` from serialized bytes. + public fun peel_vec_u128(bcs: &mut BCS): vector { + let (len, i, res) = (peel_vec_length(bcs), 0, vector[]); + while (i < len) { + v::push_back(&mut res, peel_u128(bcs)); + i = i + 1; + }; + res + } + + // === Option === + + /// Peel `Option
` from serialized bytes. + public fun peel_option_address(bcs: &mut BCS): Option
{ + if (peel_bool(bcs)) { + option::some(peel_address(bcs)) + } else { + option::none() + } + } + + /// Peel `Option` from serialized bytes. + public fun peel_option_bool(bcs: &mut BCS): Option { + if (peel_bool(bcs)) { + option::some(peel_bool(bcs)) + } else { + option::none() + } + } + + /// Peel `Option` from serialized bytes. + public fun peel_option_u8(bcs: &mut BCS): Option { + if (peel_bool(bcs)) { + option::some(peel_u8(bcs)) + } else { + option::none() + } + } + + /// Peel `Option` from serialized bytes. + public fun peel_option_u64(bcs: &mut BCS): Option { + if (peel_bool(bcs)) { + option::some(peel_u64(bcs)) + } else { + option::none() + } + } + + /// Peel `Option` from serialized bytes. + public fun peel_option_u128(bcs: &mut BCS): Option { + if (peel_bool(bcs)) { + option::some(peel_u128(bcs)) + } else { + option::none() + } + } + + // TODO: re-enable once bit-wise operators in peel_vec_length are supported in the prover + spec module { pragma verify = false; } + + // === Tests === + + #[test_only] + struct Info has drop { a: bool, b: u8, c: u64, d: u128, k: vector, s: address } + + #[test] + #[expected_failure(abort_code = ELenOutOfRange)] + fun test_uleb_len_fail() { + let value = vector[0xff, 0xff, 0xff, 0xff, 0xff]; + let bytes = new(to_bytes(&value)); + let _fail = peel_vec_length(&mut bytes); + abort 2 // TODO: make this test fail + } + + #[test] + #[expected_failure(abort_code = ENotBool)] + fun test_bool_fail() { + let bytes = new(to_bytes(&10u8)); + let _fail = peel_bool(&mut bytes); + } + + #[test] + fun test_option() { + { + let value = option::some(true); + let bytes = new(to_bytes(&value)); + assert!(value == peel_option_bool(&mut bytes), 0); + }; + + { + let value = option::some(10u8); + let bytes = new(to_bytes(&value)); + assert!(value == peel_option_u8(&mut bytes), 0); + }; + + { + let value = option::some(10000u64); + let bytes = new(to_bytes(&value)); + assert!(value == peel_option_u64(&mut bytes), 0); + }; + + { + let value = option::some(10000999999u128); + let bytes = new(to_bytes(&value)); + assert!(value == peel_option_u128(&mut bytes), 0); + }; + + { + let value = option::some(@0xC0FFEE); + let bytes = new(to_bytes(&value)); + assert!(value == peel_option_address(&mut bytes), 0); + }; + + { + let value: Option = option::none(); + let bytes = new(to_bytes(&value)); + assert!(value == peel_option_bool(&mut bytes), 0); + }; + } + + #[test] + fun test_bcs() { + { + let value = @0xC0FFEE; + let bytes = new(to_bytes(&value)); + assert!(value == peel_address(&mut bytes), 0); + }; + + { // boolean: true + let value = true; + let bytes = new(to_bytes(&value)); + assert!(value == peel_bool(&mut bytes), 0); + }; + + { // boolean: false + let value = false; + let bytes = new(to_bytes(&value)); + assert!(value == peel_bool(&mut bytes), 0); + }; + + { // u8 + let value = 100u8; + let bytes = new(to_bytes(&value)); + assert!(value == peel_u8(&mut bytes), 0); + }; + + { // u64 (4 bytes) + let value = 1000100u64; + let bytes = new(to_bytes(&value)); + assert!(value == peel_u64(&mut bytes), 0); + }; + + { // u64 (8 bytes) + let value = 100000000000000u64; + let bytes = new(to_bytes(&value)); + assert!(value == peel_u64(&mut bytes), 0); + }; + + { // u128 (16 bytes) + let value = 100000000000000000000000000u128; + let bytes = new(to_bytes(&value)); + assert!(value == peel_u128(&mut bytes), 0); + }; + + { // vector length + let value = vector[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; + let bytes = new(to_bytes(&value)); + assert!(v::length(&value) == peel_vec_length(&mut bytes), 0); + }; + + { // vector length (more data) + let value = vector[ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + ]; + + let bytes = new(to_bytes(&value)); + assert!(v::length(&value) == peel_vec_length(&mut bytes), 0); + }; + + { // full deserialization test (ordering) + let info = Info { a: true, b: 100, c: 9999, d: 112333, k: vector[true, false, true, false], s: @0xAAAAAAAAAAA }; + let bytes = new(to_bytes(&info)); + + assert!(info.a == peel_bool(&mut bytes), 0); + assert!(info.b == peel_u8(&mut bytes), 0); + assert!(info.c == peel_u64(&mut bytes), 0); + assert!(info.d == peel_u128(&mut bytes), 0); + + let len = peel_vec_length(&mut bytes); + + assert!(v::length(&info.k) == len, 0); + + let i = 0; + while (i < v::length(&info.k)) { + assert!(*v::borrow(&info.k, i) == peel_bool(&mut bytes), 0); + i = i + 1; + }; + + assert!(info.s == peel_address(&mut bytes), 0); + }; + + { // read vector of bytes directly + let value = vector[ + vector[1,2,3,4,5], + vector[1,2,3,4,5], + vector[1,2,3,4,5] + ]; + let bytes = new(to_bytes(&value)); + assert!(value == peel_vec_vec_u8(&mut bytes), 0); + }; + + { // read vector of bytes directly + let value = vector[1,2,3,4,5]; + let bytes = new(to_bytes(&value)); + assert!(value == peel_vec_u8(&mut bytes), 0); + }; + + { // read vector of bytes directly + let value = vector[1,2,3,4,5]; + let bytes = new(to_bytes(&value)); + assert!(value == peel_vec_u64(&mut bytes), 0); + }; + + { // read vector of bytes directly + let value = vector[1,2,3,4,5]; + let bytes = new(to_bytes(&value)); + assert!(value == peel_vec_u128(&mut bytes), 0); + }; + + { // read vector of bytes directly + let value = vector[true, false, true, false]; + let bytes = new(to_bytes(&value)); + assert!(value == peel_vec_bool(&mut bytes), 0); + }; + + { // read vector of address directly + let value = vector[@0x0, @0x1, @0x2, @0x3]; + let bytes = new(to_bytes(&value)); + assert!(value == peel_vec_address(&mut bytes), 0); + }; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/bin_expressions.move b/external-crates/move/tooling/tree-sitter/tests/bin_expressions.move new file mode 100644 index 0000000000000..25a50c36ca857 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/bin_expressions.move @@ -0,0 +1,8 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::b { + fun f() { + a < *b && !c || (*&d == true); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/bit_vector.move b/external-crates/move/tooling/tree-sitter/tests/bit_vector.move new file mode 100644 index 0000000000000..a3ee1c4451f60 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/bit_vector.move @@ -0,0 +1,164 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module std::bit_vector { + use std::vector; + + /// The provided index is out of bounds + const EINDEX: u64 = 0x20000; + /// An invalid length of bitvector was given + const ELENGTH: u64 = 0x20001; + + const WORD_SIZE: u64 = 1; + /// The maximum allowed bitvector size + const MAX_SIZE: u64 = 1024; + + struct BitVector has copy, drop, store { + length: u64, + bit_field: vector, + } + + public fun new(length: u64): BitVector { + assert!(length > 0, ELENGTH); + assert!(length < MAX_SIZE, ELENGTH); + let counter = 0; + let bit_field = vector::empty(); + while ({spec { + invariant counter <= length; + invariant len(bit_field) == counter; + }; + (counter < length)}) { + vector::push_back(&mut bit_field, false); + counter = counter + 1; + }; + spec { + assert counter == length; + assert len(bit_field) == length; + }; + + BitVector { + length, + bit_field, + } + } + spec new { + include NewAbortsIf; + ensures result.length == length; + ensures len(result.bit_field) == length; + } + spec schema NewAbortsIf { + length: u64; + aborts_if length <= 0 with ELENGTH; + aborts_if length >= MAX_SIZE with ELENGTH; + } + + /// Set the bit at `bit_index` in the `bitvector` regardless of its previous state. + public fun set(bitvector: &mut BitVector, bit_index: u64) { + assert!(bit_index < vector::length(&bitvector.bit_field), EINDEX); + let x = vector::borrow_mut(&mut bitvector.bit_field, bit_index); + *x = true; + } + spec set { + include SetAbortsIf; + ensures bitvector.bit_field[bit_index]; + } + spec schema SetAbortsIf { + bitvector: BitVector; + bit_index: u64; + aborts_if bit_index >= length(bitvector) with EINDEX; + } + + /// Unset the bit at `bit_index` in the `bitvector` regardless of its previous state. + public fun unset(bitvector: &mut BitVector, bit_index: u64) { + assert!(bit_index < vector::length(&bitvector.bit_field), EINDEX); + let x = vector::borrow_mut(&mut bitvector.bit_field, bit_index); + *x = false; + } + spec set { + include UnsetAbortsIf; + ensures bitvector.bit_field[bit_index]; + } + spec schema UnsetAbortsIf { + bitvector: BitVector; + bit_index: u64; + aborts_if bit_index >= length(bitvector) with EINDEX; + } + + /// Shift the `bitvector` left by `amount`. If `amount` is greater than the + /// bitvector's length the bitvector will be zeroed out. + public fun shift_left(bitvector: &mut BitVector, amount: u64) { + if (amount >= bitvector.length) { + let len = vector::length(&bitvector.bit_field); + let i = 0; + while (i < len) { + let elem = vector::borrow_mut(&mut bitvector.bit_field, i); + *elem = false; + i = i + 1; + }; + } else { + let i = amount; + + while (i < bitvector.length) { + if (is_index_set(bitvector, i)) set(bitvector, i - amount) + else unset(bitvector, i - amount); + i = i + 1; + }; + + i = bitvector.length - amount; + + while (i < bitvector.length) { + unset(bitvector, i); + i = i + 1; + }; + } + } + + /// Return the value of the bit at `bit_index` in the `bitvector`. `true` + /// represents "1" and `false` represents a 0 + public fun is_index_set(bitvector: &BitVector, bit_index: u64): bool { + assert!(bit_index < vector::length(&bitvector.bit_field), EINDEX); + *vector::borrow(&bitvector.bit_field, bit_index) + } + spec is_index_set { + include IsIndexSetAbortsIf; + ensures result == bitvector.bit_field[bit_index]; + } + spec schema IsIndexSetAbortsIf { + bitvector: BitVector; + bit_index: u64; + aborts_if bit_index >= length(bitvector) with EINDEX; + } + spec fun spec_is_index_set(bitvector: BitVector, bit_index: u64): bool { + if (bit_index >= length(bitvector)) { + false + } else { + bitvector.bit_field[bit_index] + } + } + + /// Return the length (number of usable bits) of this bitvector + public fun length(bitvector: &BitVector): u64 { + vector::length(&bitvector.bit_field) + } + + /// Returns the length of the longest sequence of set bits starting at (and + /// including) `start_index` in the `bitvector`. If there is no such + /// sequence, then `0` is returned. + public fun longest_set_sequence_starting_at(bitvector: &BitVector, start_index: u64): u64 { + assert!(start_index < bitvector.length, EINDEX); + let index = start_index; + + // Find the greatest index in the vector such that all indices less than it are set. + while (index < bitvector.length) { + if (!is_index_set(bitvector, index)) break; + index = index + 1; + }; + + index - start_index + } + + #[test_only] + public fun word_size(): u64 { + WORD_SIZE + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/borrow.move b/external-crates/move/tooling/tree-sitter/tests/borrow.move new file mode 100644 index 0000000000000..b074e4ba8a18f --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/borrow.move @@ -0,0 +1,121 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// A simple library that enables hot-potato-locked borrow mechanics. +/// +/// With Programmable transactions, it is possible to borrow a value within +/// a transaction, use it and put back in the end. Hot-potato `Borrow` makes +/// sure the object is returned and was not swapped for another one. +module sui::borrow { + use sui::object::{Self, ID}; + use std::option::{Self, Option}; + use sui::tx_context::{Self, TxContext}; + + /// The `Borrow` does not match the `Referent`. + const EWrongBorrow: u64 = 0; + /// An attempt to swap the `Referent.value` with another object of the same type. + const EWrongValue: u64 = 1; + + /// An object wrapping a `T` and providing the borrow API. + struct Referent has store { + id: address, + value: Option + } + + /// A hot potato making sure the object is put back once borrowed. + struct Borrow { ref: address, obj: ID } + + /// Create a new `Referent` struct + public fun new(value: T, ctx: &mut TxContext): Referent { + Referent { + id: tx_context::fresh_object_address(ctx), + value: option::some(value) + } + } + + /// Borrow the `T` from the `Referent` receiving the `T` and a `Borrow` + /// hot potato. + public fun borrow(self: &mut Referent): (T, Borrow) { + let value = option::extract(&mut self.value); + let id = object::id(&value); + + (value, Borrow { + ref: self.id, + obj: id + }) + } + + /// Put an object and the `Borrow` hot potato back. + public fun put_back(self: &mut Referent, value: T, borrow: Borrow) { + let Borrow { ref, obj } = borrow; + + assert!(object::id(&value) == obj, EWrongValue); + assert!(self.id == ref, EWrongBorrow); + option::fill(&mut self.value, value); + } + + /// Unpack the `Referent` struct and return the value. + public fun destroy(self: Referent): T { + let Referent { id: _, value } = self; + option::destroy_some(value) + } + + #[test_only] + struct Test has key, store { + id: object::UID + } + + #[test] + fun test_borrow() { + let ctx = &mut sui::tx_context::dummy(); + let ref = new(Test { id: object::new(ctx) }, ctx); + + let (value, borrow) = borrow(&mut ref); + put_back(&mut ref, value, borrow); + + let Test { id } = destroy(ref); + object::delete(id); + } + + #[test] + #[expected_failure(abort_code = EWrongValue)] + /// The `value` is swapped with another instance of the type `T`. + fun test_object_swap() { + let ctx = &mut sui::tx_context::dummy(); + let ref_1 = new(Test { id: object::new(ctx) }, ctx); + let ref_2 = new(Test { id: object::new(ctx) }, ctx); + + let (v_1, b_1) = borrow(&mut ref_1); + let (v_2, b_2) = borrow(&mut ref_2); + + put_back(&mut ref_1, v_2, b_1); + put_back(&mut ref_2, v_1, b_2); + + let Test { id } = destroy(ref_1); + object::delete(id); + + let Test { id } = destroy(ref_2); + object::delete(id); + } + + #[test] + #[expected_failure(abort_code = EWrongBorrow)] + /// The both `borrow` and `value` are swapped with another `Referent`. + fun test_borrow_fail() { + let ctx = &mut sui::tx_context::dummy(); + let ref_1 = new(Test { id: object::new(ctx) }, ctx); + let ref_2 = new(Test { id: object::new(ctx) }, ctx); + + let (v_1, b_1) = borrow(&mut ref_1); + let (v_2, b_2) = borrow(&mut ref_2); + + put_back(&mut ref_1, v_2, b_2); + put_back(&mut ref_2, v_1, b_1); + + let Test { id } = destroy(ref_1); + object::delete(id); + + let Test { id } = destroy(ref_2); + object::delete(id); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/call_bin_parsing.move b/external-crates/move/tooling/tree-sitter/tests/call_bin_parsing.move new file mode 100644 index 0000000000000..1b7d5345036fb --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/call_bin_parsing.move @@ -0,0 +1,18 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x1::a; +fun g() { + let x = withdraw_coin(state, lp_coin_amount, min_amounts[0], total_supply, ctx); + (withdraw_coin(state, lp_coin_amount, min_amounts[0], total_supply, ctx), + withdraw_coin(state, lp_coin_amount, min_amounts[1], total_supply, ctx), + withdraw_coin( + state, + lp_coin_amount, + min_amounts[1], + total_supply, + withdraw_coin(state, lp_coin_amount, min_amounts[0], total_supply, ctx), + (withdraw_coin(state, lp_coin_amount, min_amounts[0], total_supply, ctx)), + ), + ); +} diff --git a/external-crates/move/tooling/tree-sitter/tests/clock.move b/external-crates/move/tooling/tree-sitter/tests/clock.move new file mode 100644 index 0000000000000..dd0333709d4df --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/clock.move @@ -0,0 +1,96 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// APIs for accessing time from move calls, via the `Clock`: a unique +/// shared object that is created at 0x6 during genesis. +module sui::clock { + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + + /// Sender is not @0x0 the system address. + const ENotSystemAddress: u64 = 0; + + /// Singleton shared object that exposes time to Move calls. This + /// object is found at address 0x6, and can only be read (accessed + /// via an immutable reference) by entry functions. + /// + /// Entry Functions that attempt to accept `Clock` by mutable + /// reference or value will fail to verify, and honest validators + /// will not sign or execute transactions that use `Clock` as an + /// input parameter, unless it is passed by immutable reference. + struct Clock has key { + id: UID, + /// The clock's timestamp, which is set automatically by a + /// system transaction every time consensus commits a + /// schedule, or by `sui::clock::increment_for_testing` during + /// testing. + timestamp_ms: u64, + } + + /// The `clock`'s current timestamp as a running total of + /// milliseconds since an arbitrary point in the past. + public fun timestamp_ms(clock: &Clock): u64 { + clock.timestamp_ms + } + + #[allow(unused_function)] + /// Create and share the singleton Clock -- this function is + /// called exactly once, during genesis. + fun create(ctx: &TxContext) { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + transfer::share_object(Clock { + id: object::clock(), + // Initialised to zero, but set to a real timestamp by a + // system transaction before it can be witnessed by a move + // call. + timestamp_ms: 0, + }) + } + + #[allow(unused_function)] + fun consensus_commit_prologue( + clock: &mut Clock, + timestamp_ms: u64, + ctx: &TxContext, + ) { + // Validator will make a special system call with sender set as 0x0. + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + clock.timestamp_ms = timestamp_ms + } + + #[test_only] + /// Expose the functionality of `create()` (usually only done during + /// genesis) for tests that want to create a Clock. + public fun create_for_testing(ctx: &mut sui::tx_context::TxContext): Clock { + Clock { + id: object::new(ctx), + timestamp_ms: 0, + } + } + + #[test_only] + /// For transactional tests (if a Clock is used as a shared object). + public fun share_for_testing(clock: Clock) { + transfer::share_object(clock) + } + + #[test_only] + public fun increment_for_testing(clock: &mut Clock, tick: u64) { + clock.timestamp_ms = clock.timestamp_ms + tick; + } + + #[test_only] + public fun set_for_testing(clock: &mut Clock, timestamp_ms: u64) { + assert!(timestamp_ms >= clock.timestamp_ms, 0); + clock.timestamp_ms = timestamp_ms; + } + + #[test_only] + public fun destroy_for_testing(clock: Clock) { + let Clock { id, timestamp_ms: _ } = clock; + object::delete(id); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/coin.move b/external-crates/move/tooling/tree-sitter/tests/coin.move new file mode 100644 index 0000000000000..ac1eb593bf905 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/coin.move @@ -0,0 +1,426 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Defines the `Coin` type - platform wide representation of fungible +/// tokens and coins. `Coin` can be described as a secure wrapper around +/// `Balance` type. +module sui::coin { + use std::string; + use std::ascii; + use std::option::{Self, Option}; + use sui::balance::{Self, Balance, Supply}; + use sui::tx_context::TxContext; + use sui::object::{Self, UID}; + use sui::transfer; + use sui::url::{Self, Url}; + use std::vector; + + /// A type passed to create_supply is not a one-time witness. + const EBadWitness: u64 = 0; + /// Invalid arguments are passed to a function. + const EInvalidArg: u64 = 1; + /// Trying to split a coin more times than its balance allows. + const ENotEnough: u64 = 2; + + /// A coin of type `T` worth `value`. Transferable and storable + struct Coin has key, store { + id: UID, + balance: Balance + } + + /// Each Coin type T created through `create_currency` function will have a + /// unique instance of CoinMetadata that stores the metadata for this coin type. + struct CoinMetadata has key, store { + id: UID, + /// Number of decimal places the coin uses. + /// A coin with `value ` N and `decimals` D should be shown as N / 10^D + /// E.g., a coin with `value` 7002 and decimals 3 should be displayed as 7.002 + /// This is metadata for display usage only. + decimals: u8, + /// Name for the token + name: string::String, + /// Symbol for the token + symbol: ascii::String, + /// Description of the token + description: string::String, + /// URL for the token logo + icon_url: Option + } + + /// Capability allowing the bearer to mint and burn + /// coins of type `T`. Transferable + struct TreasuryCap has key, store { + id: UID, + total_supply: Supply + } + + // === Supply <-> TreasuryCap morphing and accessors === + + /// Return the total number of `T`'s in circulation. + public fun total_supply(cap: &TreasuryCap): u64 { + balance::supply_value(&cap.total_supply) + } + + /// Unwrap `TreasuryCap` getting the `Supply`. + /// + /// Operation is irreversible. Supply cannot be converted into a `TreasuryCap` due + /// to different security guarantees (TreasuryCap can be created only once for a type) + public fun treasury_into_supply(treasury: TreasuryCap): Supply { + let TreasuryCap { id, total_supply } = treasury; + object::delete(id); + total_supply + } + + /// Get immutable reference to the treasury's `Supply`. + public fun supply_immut(treasury: &TreasuryCap): &Supply { + &treasury.total_supply + } + + /// Get mutable reference to the treasury's `Supply`. + public fun supply_mut(treasury: &mut TreasuryCap): &mut Supply { + &mut treasury.total_supply + } + + // === Balance <-> Coin accessors and type morphing === + + /// Public getter for the coin's value + public fun value(self: &Coin): u64 { + balance::value(&self.balance) + } + + /// Get immutable reference to the balance of a coin. + public fun balance(coin: &Coin): &Balance { + &coin.balance + } + + /// Get a mutable reference to the balance of a coin. + public fun balance_mut(coin: &mut Coin): &mut Balance { + &mut coin.balance + } + + /// Wrap a balance into a Coin to make it transferable. + public fun from_balance(balance: Balance, ctx: &mut TxContext): Coin { + Coin { id: object::new(ctx), balance } + } + + /// Destruct a Coin wrapper and keep the balance. + public fun into_balance(coin: Coin): Balance { + let Coin { id, balance } = coin; + object::delete(id); + balance + } + + /// Take a `Coin` worth of `value` from `Balance`. + /// Aborts if `value > balance.value` + public fun take( + balance: &mut Balance, value: u64, ctx: &mut TxContext, + ): Coin { + Coin { + id: object::new(ctx), + balance: balance::split(balance, value) + } + } + + spec take { + let before_val = balance.value; + let post after_val = balance.value; + ensures after_val == before_val - value; + + aborts_if value > before_val; + aborts_if ctx.ids_created + 1 > MAX_U64; + } + + /// Put a `Coin` to the `Balance`. + public fun put(balance: &mut Balance, coin: Coin) { + balance::join(balance, into_balance(coin)); + } + + spec put { + let before_val = balance.value; + let post after_val = balance.value; + ensures after_val == before_val + coin.balance.value; + + aborts_if before_val + coin.balance.value > MAX_U64; + } + + // === Base Coin functionality === + + /// Consume the coin `c` and add its value to `self`. + /// Aborts if `c.value + self.value > U64_MAX` + public entry fun join(self: &mut Coin, c: Coin) { + let Coin { id, balance } = c; + object::delete(id); + balance::join(&mut self.balance, balance); + } + + spec join { + let before_val = self.balance.value; + let post after_val = self.balance.value; + ensures after_val == before_val + c.balance.value; + + aborts_if before_val + c.balance.value > MAX_U64; + } + + /// Split coin `self` to two coins, one with balance `split_amount`, + /// and the remaining balance is left is `self`. + public fun split( + self: &mut Coin, split_amount: u64, ctx: &mut TxContext + ): Coin { + take(&mut self.balance, split_amount, ctx) + } + + spec split { + let before_val = self.balance.value; + let post after_val = self.balance.value; + ensures after_val == before_val - split_amount; + + aborts_if split_amount > before_val; + aborts_if ctx.ids_created + 1 > MAX_U64; + } + + /// Split coin `self` into `n - 1` coins with equal balances. The remainder is left in + /// `self`. Return newly created coins. + public fun divide_into_n( + self: &mut Coin, n: u64, ctx: &mut TxContext + ): vector> { + assert!(n > 0, EInvalidArg); + assert!(n <= value(self), ENotEnough); + + let vec = vector::empty>(); + let i = 0; + let split_amount = value(self) / n; + while ({ + spec { + invariant i <= n-1; + invariant self.balance.value == old(self).balance.value - (i * split_amount); + invariant ctx.ids_created == old(ctx).ids_created + i; + }; + i < n - 1 + }) { + vector::push_back(&mut vec, split(self, split_amount, ctx)); + i = i + 1; + }; + vec + } + + spec divide_into_n { + let before_val = self.balance.value; + let post after_val = self.balance.value; + let split_amount = before_val / n; + ensures after_val == before_val - ((n - 1) * split_amount); + + aborts_if n == 0; + aborts_if self.balance.value < n; + aborts_if ctx.ids_created + n - 1 > MAX_U64; + } + + /// Make any Coin with a zero value. Useful for placeholding + /// bids/payments or preemptively making empty balances. + public fun zero(ctx: &mut TxContext): Coin { + Coin { id: object::new(ctx), balance: balance::zero() } + } + + /// Destroy a coin with value zero + public fun destroy_zero(c: Coin) { + let Coin { id, balance } = c; + object::delete(id); + balance::destroy_zero(balance) + } + + // === Registering new coin types and managing the coin supply === + + /// Create a new currency type `T` as and return the `TreasuryCap` for + /// `T` to the caller. Can only be called with a `one-time-witness` + /// type, ensuring that there's only one `TreasuryCap` per `T`. + public fun create_currency( + witness: T, + decimals: u8, + symbol: vector, + name: vector, + description: vector, + icon_url: Option, + ctx: &mut TxContext + ): (TreasuryCap, CoinMetadata) { + // Make sure there's only one instance of the type T + assert!(sui::types::is_one_time_witness(&witness), EBadWitness); + + ( + TreasuryCap { + id: object::new(ctx), + total_supply: balance::create_supply(witness) + }, + CoinMetadata { + id: object::new(ctx), + decimals, + name: string::utf8(name), + symbol: ascii::string(symbol), + description: string::utf8(description), + icon_url + } + ) + } + + /// Create a coin worth `value`. and increase the total supply + /// in `cap` accordingly. + public fun mint( + cap: &mut TreasuryCap, value: u64, ctx: &mut TxContext, + ): Coin { + Coin { + id: object::new(ctx), + balance: balance::increase_supply(&mut cap.total_supply, value) + } + } + + spec schema MintBalance { + cap: TreasuryCap; + value: u64; + + let before_supply = cap.total_supply.value; + let post after_supply = cap.total_supply.value; + ensures after_supply == before_supply + value; + + aborts_if before_supply + value >= MAX_U64; + } + + spec mint { + include MintBalance; + aborts_if ctx.ids_created + 1 > MAX_U64; + } + + /// Mint some amount of T as a `Balance` and increase the total + /// supply in `cap` accordingly. + /// Aborts if `value` + `cap.total_supply` >= U64_MAX + public fun mint_balance( + cap: &mut TreasuryCap, value: u64 + ): Balance { + balance::increase_supply(&mut cap.total_supply, value) + } + + spec mint_balance { + include MintBalance; + } + + /// Destroy the coin `c` and decrease the total supply in `cap` + /// accordingly. + public entry fun burn(cap: &mut TreasuryCap, c: Coin): u64 { + let Coin { id, balance } = c; + object::delete(id); + balance::decrease_supply(&mut cap.total_supply, balance) + } + + spec schema Burn { + cap: TreasuryCap; + c: Coin; + + let before_supply = cap.total_supply.value; + let post after_supply = cap.total_supply.value; + ensures after_supply == before_supply - c.balance.value; + + aborts_if before_supply < c.balance.value; + } + + spec burn { + include Burn; + } + + // === Entrypoints === + + /// Mint `amount` of `Coin` and send it to `recipient`. Invokes `mint()`. + public entry fun mint_and_transfer( + c: &mut TreasuryCap, amount: u64, recipient: address, ctx: &mut TxContext + ) { + transfer::public_transfer(mint(c, amount, ctx), recipient) + } + + // === Update coin metadata === + + /// Update name of the coin in `CoinMetadata` + public entry fun update_name( + _treasury: &TreasuryCap, metadata: &mut CoinMetadata, name: string::String + ) { + metadata.name = name; + } + + /// Update the symbol of the coin in `CoinMetadata` + public entry fun update_symbol( + _treasury: &TreasuryCap, metadata: &mut CoinMetadata, symbol: ascii::String + ) { + metadata.symbol = symbol; + } + + /// Update the description of the coin in `CoinMetadata` + public entry fun update_description( + _treasury: &TreasuryCap, metadata: &mut CoinMetadata, description: string::String + ) { + metadata.description = description; + } + + /// Update the url of the coin in `CoinMetadata` + public entry fun update_icon_url( + _treasury: &TreasuryCap, metadata: &mut CoinMetadata, url: ascii::String + ) { + metadata.icon_url = option::some(url::new_unsafe(url)); + } + + // === Get coin metadata fields for on-chain consumption === + + public fun get_decimals(metadata: &CoinMetadata): u8 { + metadata.decimals + } + + public fun get_name(metadata: &CoinMetadata): string::String { + metadata.name + } + + public fun get_symbol(metadata: &CoinMetadata): ascii::String { + metadata.symbol + } + + public fun get_description(metadata: &CoinMetadata): string::String { + metadata.description + } + + public fun get_icon_url(metadata: &CoinMetadata): Option { + metadata.icon_url + } + + // === Test-only code === + + #[test_only] + /// Mint coins of any type for (obviously!) testing purposes only + public fun mint_for_testing(value: u64, ctx: &mut TxContext): Coin { + Coin { id: object::new(ctx), balance: balance::create_for_testing(value) } + } + + #[test_only] + /// Burn coins of any type for testing purposes only + public fun burn_for_testing(coin: Coin): u64 { + let Coin { id, balance } = coin; + object::delete(id); + balance::destroy_for_testing(balance) + } + + #[test_only] + /// Create a `TreasuryCap` for any `Coin` for testing purposes. + public fun create_treasury_cap_for_testing( + ctx: &mut TxContext + ): TreasuryCap { + TreasuryCap { + id: object::new(ctx), + total_supply: balance::create_supply_for_testing() + } + } + + // === Deprecated code === + + // oops, wanted treasury: &TreasuryCap + public fun supply(treasury: &mut TreasuryCap): &Supply { + &treasury.total_supply + } + + // deprecated as we have CoinMetadata now + #[allow(unused_field)] + struct CurrencyCreated has copy, drop { + decimals: u8 + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/damir1.move b/external-crates/move/tooling/tree-sitter/tests/damir1.move new file mode 100644 index 0000000000000..cebb905205e11 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/damir1.move @@ -0,0 +1,8 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x0::o { + public fun test() { + to_vec_set(vector[1,5,3,4]) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/damir2.move b/external-crates/move/tooling/tree-sitter/tests/damir2.move new file mode 100644 index 0000000000000..5cdd0358b701e --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/damir2.move @@ -0,0 +1,8 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::y { + fun a() { + a(a); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/damir3.move b/external-crates/move/tooling/tree-sitter/tests/damir3.move new file mode 100644 index 0000000000000..d69231bf923df --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/damir3.move @@ -0,0 +1,14 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module kek::kek { + public struct Kek { + a: u8, + b: u64, + } + + public fun destroy(k1: Kek, k2: Kek) { + let Kek { a: _, .. } = k1; + let Kek { .. } = k2; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/damir4.move b/external-crates/move/tooling/tree-sitter/tests/damir4.move new file mode 100644 index 0000000000000..3ea407a5e9670 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/damir4.move @@ -0,0 +1,23 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module beep::boop { + fun index_expression() { + // incorrectly parsed as `(copy data)[i]` + // (dot_expression [3, 8] - [3, 37] + // expr: (name_expression [3, 8] - [3, 14] + // access: (module_access [3, 8] - [3, 14] + // member: (identifier [3, 8] - [3, 14]))) + // access: (index_expression [3, 15] - [3, 37] !!!! Should be `move_or_copy_expression` + // expr: (call_expression [3, 15] - [3, 34] + // access: (module_access [3, 15] - [3, 24] + // member: (identifier [3, 15] - [3, 24])) + // args: (arg_list [3, 24] - [3, 34] + // (move_or_copy_expression [3, 25] - [3, 34] + // expr: (variable_identifier [3, 30] - [3, 34])))) + // idx: (name_expression [3, 35] - [3, 36] + // access: (module_access [3, 35] - [3, 36] + // member: (identifier [3, 35] - [3, 36]))))) + result.push_back(copy data[i]); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/damir5.move b/external-crates/move/tooling/tree-sitter/tests/damir5.move new file mode 100644 index 0000000000000..22359f900e76e --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/damir5.move @@ -0,0 +1,15 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module beep::boop { + fun f(x: MyEnum): u8 { + match (x) { + MyEnum::Variant(1, true) => 1, + MyEnum::Variant(_, _) => 1, + MyEnum::OtherVariant(_, 3) => 2, + // Now exhaustive since this will match all values of MyEnum::OtherVariant + MyEnum::OtherVariant(..) => 2, + + } + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/debug.move b/external-crates/move/tooling/tree-sitter/tests/debug.move new file mode 100644 index 0000000000000..dc9d236a8d07d --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/debug.move @@ -0,0 +1,9 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Module providing debug functionality. +module std::debug { + native public fun print(x: &T); + + native public fun print_stack_trace(); +} diff --git a/external-crates/move/tooling/tree-sitter/tests/display.move b/external-crates/move/tooling/tree-sitter/tests/display.move new file mode 100644 index 0000000000000..b697e4ba23f84 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/display.move @@ -0,0 +1,233 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Defines a Display struct which defines the way an Object +/// should be displayed. The intention is to keep data as independent +/// from its display as possible, protecting the development process +/// and keeping it separate from the ecosystem agreements. +/// +/// Each of the fields of the Display object should allow for pattern +/// substitution and filling-in the pieces using the data from the object T. +/// +/// More entry functions might be added in the future depending on the use cases. +module sui::display { + use sui::package::{from_package, Publisher}; + use sui::tx_context::{sender, TxContext}; + use sui::vec_map::{Self, VecMap}; + use sui::object::{Self, ID, UID}; + use sui::transfer; + use sui::event; + use std::vector; + use std::string::String; + + /// For when T does not belong to the package `Publisher`. + const ENotOwner: u64 = 0; + + /// For when vectors passed into one of the multiple insert functions + /// don't match in their lengths. + const EVecLengthMismatch: u64 = 1; + + /// The Display object. Defines the way a T instance should be + /// displayed. Display object can only be created and modified with + /// a PublisherCap, making sure that the rules are set by the owner + /// of the type. + /// + /// Each of the display properties should support patterns outside + /// of the system, making it simpler to customize Display based + /// on the property values of an Object. + /// ``` + /// // Example of a display object + /// Display<0x...::capy::Capy> { + /// fields: + /// + /// + /// + /// + /// } + /// ``` + /// + /// Uses only String type due to external-facing nature of the object, + /// the property names have a priority over their types. + struct Display has key, store { + id: UID, + /// Contains fields for display. Currently supported + /// fields are: name, link, image and description. + fields: VecMap, + /// Version that can only be updated manually by the Publisher. + version: u16 + } + + /// Event: emitted when a new Display object has been created for type T. + /// Type signature of the event corresponds to the type while id serves for + /// the discovery. + /// + /// Since Sui RPC supports querying events by type, finding a Display for the T + /// would be as simple as looking for the first event with `Display`. + struct DisplayCreated has copy, drop { + id: ID + } + + /// Version of Display got updated - + struct VersionUpdated has copy, drop { + id: ID, + version: u16, + fields: VecMap, + } + + // === Initializer Methods === + + /// Create an empty Display object. It can either be shared empty or filled + /// with data right away via cheaper `set_owned` method. + public fun new(pub: &Publisher, ctx: &mut TxContext): Display { + assert!(is_authorized(pub), ENotOwner); + create_internal(ctx) + } + + /// Create a new Display object with a set of fields. + public fun new_with_fields( + pub: &Publisher, fields: vector, values: vector, ctx: &mut TxContext + ): Display { + let len = vector::length(&fields); + assert!(len == vector::length(&values), EVecLengthMismatch); + + let i = 0; + let display = new(pub, ctx); + while (i < len) { + add_internal(&mut display, *vector::borrow(&fields, i), *vector::borrow(&values, i)); + i = i + 1; + }; + + display + } + + // === Entry functions: Create === + + #[lint_allow(self_transfer)] + /// Create a new empty Display object and keep it. + entry public fun create_and_keep(pub: &Publisher, ctx: &mut TxContext) { + transfer::public_transfer(new(pub, ctx), sender(ctx)) + } + + /// Manually bump the version and emit an event with the updated version's contents. + entry public fun update_version( + display: &mut Display + ) { + display.version = display.version + 1; + event::emit(VersionUpdated { + version: display.version, + fields: *&display.fields, + id: object::uid_to_inner(&display.id), + }) + } + + // === Entry functions: Add/Modify fields === + + /// Sets a custom `name` field with the `value`. + entry public fun add(self: &mut Display, name: String, value: String) { + add_internal(self, name, value) + } + + /// Sets multiple `fields` with `values`. + entry public fun add_multiple( + self: &mut Display, fields: vector, values: vector + ) { + let len = vector::length(&fields); + assert!(len == vector::length(&values), EVecLengthMismatch); + + let i = 0; + while (i < len) { + add_internal(self, *vector::borrow(&fields, i), *vector::borrow(&values, i)); + i = i + 1; + }; + } + + /// Change the value of the field. + /// TODO (long run): version changes; + entry public fun edit(self: &mut Display, name: String, value: String) { + let (_, _) = vec_map::remove(&mut self.fields, &name); + add_internal(self, name, value) + } + + /// Remove the key from the Display. + entry public fun remove(self: &mut Display, name: String) { + vec_map::remove(&mut self.fields, &name); + } + + // === Access fields === + + /// Authorization check; can be performed externally to implement protection rules for Display. + public fun is_authorized(pub: &Publisher): bool { + from_package(pub) + } + + /// Read the `version` field. + public fun version(d: &Display): u16 { + d.version + } + + /// Read the `fields` field. + public fun fields(d: &Display): &VecMap { + &d.fields + } + + // === Private functions === + + /// Internal function to create a new `Display`. + fun create_internal(ctx: &mut TxContext): Display { + let uid = object::new(ctx); + + event::emit(DisplayCreated { + id: object::uid_to_inner(&uid) + }); + + Display { + id: uid, + fields: vec_map::empty(), + version: 0, + } + } + + /// Private method for inserting fields without security checks. + fun add_internal(display: &mut Display, name: String, value: String) { + vec_map::insert(&mut display.fields, name, value) + } +} + +#[test_only] +module sui::display_tests { + use sui::object::UID; + use sui::test_scenario as test; + use sui::transfer; + use std::string::{utf8, String}; + use sui::package; + use sui::display; + + #[allow(unused_field)] + /// An example object. + /// Purely for visibility. + struct Capy has key { + id: UID, + name: String + } + + /// Test witness type to create a Publisher object. + struct CAPY has drop {} + + #[test] + fun capy_init() { + let test = test::begin(@0x2); + let pub = package::test_claim(CAPY {}, test::ctx(&mut test)); + + // create a new display object + let display = display::new(&pub, test::ctx(&mut test)); + + display::add(&mut display, utf8(b"name"), utf8(b"Capy {name}")); + display::add(&mut display, utf8(b"link"), utf8(b"https://capy.art/capy/{id}")); + display::add(&mut display, utf8(b"image"), utf8(b"https://api.capy.art/capy/{id}/svg")); + display::add(&mut display, utf8(b"description"), utf8(b"A Lovely Capy")); + + package::burn_publisher(pub); + transfer::public_transfer(display, @0x2); + test::end(test); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/dotted_vector_literal_access.move b/external-crates/move/tooling/tree-sitter/tests/dotted_vector_literal_access.move new file mode 100644 index 0000000000000..1245b8dfc85ea --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/dotted_vector_literal_access.move @@ -0,0 +1,8 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x1::m { + fun f() { + let i = vector[i].to_string(); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/dynamic_field.move b/external-crates/move/tooling/tree-sitter/tests/dynamic_field.move new file mode 100644 index 0000000000000..b8c5366ba10e2 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/dynamic_field.move @@ -0,0 +1,269 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[allow(unused_const)] +/// In addition to the fields declared in its type definition, a Sui object can have dynamic fields +/// that can be added after the object has been constructed. Unlike ordinary field names +/// (which are always statically declared identifiers) a dynamic field name can be any value with +/// the `copy`, `drop`, and `store` abilities, e.g. an integer, a boolean, or a string. +/// This gives Sui programmers the flexibility to extend objects on-the-fly, and it also serves as a +/// building block for core collection types +module sui::dynamic_field { + use std::option::{Self, Option}; + use sui::object::{Self, ID, UID}; + use sui::prover; + + friend sui::dynamic_object_field; + + /// The object already has a dynamic field with this name (with the value and type specified) + const EFieldAlreadyExists: u64 = 0; + /// Cannot load dynamic field. + /// The object does not have a dynamic field with this name (with the value and type specified) + const EFieldDoesNotExist: u64 = 1; + /// The object has a field with that name, but the value type does not match + const EFieldTypeMismatch: u64 = 2; + /// Failed to serialize the field's name + const EBCSSerializationFailure: u64 = 3; + /// The object added as a dynamic field was previously a shared object + const ESharedObjectOperationNotSupported: u64 = 4; + + /// Internal object used for storing the field and value + struct Field has key { + /// Determined by the hash of the object ID, the field name value and it's type, + /// i.e. hash(parent.id || name || Name) + id: UID, + /// The value for the name of this field + name: Name, + /// The value bound to this field + value: Value, + } + + /// Adds a dynamic field to the object `object: &mut UID` at field specified by `name: Name`. + /// Aborts with `EFieldAlreadyExists` if the object already has that field with that name. + public fun add( + // we use &mut UID in several spots for access control + object: &mut UID, + name: Name, + value: Value, + ) { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + assert!(!has_child_object(object_addr, hash), EFieldAlreadyExists); + let field = Field { + id: object::new_uid_from_hash(hash), + name, + value, + }; + add_child_object(object_addr, field) + } + + spec add { + pragma opaque; + aborts_if [abstract] prover::uid_has_field(object, name); + modifies [abstract] global>(object::uid_to_address(object)); + ensures [abstract] object == old(object); + ensures [abstract] exists>(object::uid_to_address(object)); + ensures [abstract] (!old(exists>(object::uid_to_address(object)))) + ==> global>(object::uid_to_address(object)).names == vec(name); + ensures [abstract] old(exists>(object::uid_to_address(object))) + ==> global>(object::uid_to_address(object)).names == old(concat( + global>(object::uid_to_address(object)).names, + vec(name) + )); + } + + /// Immutably borrows the `object`s dynamic field with the name specified by `name: Name`. + /// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. + /// Aborts with `EFieldTypeMismatch` if the field exists, but the value does not have the specified + /// type. + public fun borrow( + object: &UID, + name: Name, + ): &Value { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + let field = borrow_child_object>(object, hash); + &field.value + } + + spec borrow { + pragma opaque; + aborts_if [abstract] !prover::uid_has_field(object, name); + } + + /// Mutably borrows the `object`s dynamic field with the name specified by `name: Name`. + /// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. + /// Aborts with `EFieldTypeMismatch` if the field exists, but the value does not have the specified + /// type. + public fun borrow_mut( + object: &mut UID, + name: Name, + ): &mut Value { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + let field = borrow_child_object_mut>(object, hash); + &mut field.value + } + + spec borrow_mut { + pragma opaque; + aborts_if [abstract] !prover::uid_has_field(object, name); + } + + /// Removes the `object`s dynamic field with the name specified by `name: Name` and returns the + /// bound value. + /// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. + /// Aborts with `EFieldTypeMismatch` if the field exists, but the value does not have the specified + /// type. + public fun remove( + object: &mut UID, + name: Name, + ): Value { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + let Field { id, name: _, value } = remove_child_object>(object_addr, hash); + object::delete(id); + value + } + + spec remove { + pragma opaque; + aborts_if [abstract] !prover::uid_has_field(object, name); + modifies [abstract] global>(object::uid_to_address(object)); + ensures [abstract] object.id == old(object.id); + ensures [abstract] old(prover::uid_num_fields(object)) == 1 + ==> !exists>(object::uid_to_address(object)); + ensures [abstract] old(prover::uid_num_fields(object)) > 1 + ==> global>(object::uid_to_address(object)).names == + old(prover::vec_remove(global>(object::uid_to_address(object)).names, + index_of(global>(object::uid_to_address(object)).names, name))); + // this is needed to ensure that there was only one field with a given name + ensures [abstract] !prover::uid_has_field(object, name); + } + + + /// Returns true if and only if the `object` has a dynamic field with the name specified by + /// `name: Name` but without specifying the `Value` type + public fun exists_( + object: &UID, + name: Name, + ): bool { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + has_child_object(object_addr, hash) + } + + /// Removes the dynamic field if it exists. Returns the `some(Value)` if it exists or none otherwise. + public fun remove_if_exists( + object: &mut UID, + name: Name + ): Option { + if (exists_(object, name)) { + option::some(remove(object, name)) + } else { + option::none() + } + } + + /// Returns true if and only if the `object` has a dynamic field with the name specified by + /// `name: Name` with an assigned value of type `Value`. + public fun exists_with_type( + object: &UID, + name: Name, + ): bool { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + has_child_object_with_ty>(object_addr, hash) + } + + public(friend) fun field_info( + object: &UID, + name: Name, + ): (&UID, address) { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + let Field { id, name: _, value } = borrow_child_object>(object, hash); + (id, object::id_to_address(value)) + } + + public(friend) fun field_info_mut( + object: &mut UID, + name: Name, + ): (&mut UID, address) { + let object_addr = object::uid_to_address(object); + let hash = hash_type_and_key(object_addr, name); + let Field { id, name: _, value } = borrow_child_object_mut>(object, hash); + (id, object::id_to_address(value)) + } + + /// May abort with `EBCSSerializationFailure`. + public(friend) native fun hash_type_and_key(parent: address, k: K): address; + + spec hash_type_and_key { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + public(friend) native fun add_child_object(parent: address, child: Child); + + spec add_child_object { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + /// throws `EFieldDoesNotExist` if a child does not exist with that ID + /// or throws `EFieldTypeMismatch` if the type does not match, + /// and may also abort with `EBCSSerializationFailure` + /// we need two versions to return a reference or a mutable reference + public(friend) native fun borrow_child_object(object: &UID, id: address): &Child; + + spec borrow_child_object { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + public(friend) native fun borrow_child_object_mut(object: &mut UID, id: address): &mut Child; + + spec borrow_child_object_mut { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + /// throws `EFieldDoesNotExist` if a child does not exist with that ID + /// or throws `EFieldTypeMismatch` if the type does not match, + /// and may also abort with `EBCSSerializationFailure`. + public(friend) native fun remove_child_object(parent: address, id: address): Child; + + spec remove_child_object { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + public(friend) native fun has_child_object(parent: address, id: address): bool; + + spec has_child_object { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + public(friend) native fun has_child_object_with_ty(parent: address, id: address): bool; + + spec has_child_object_with_ty { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/dynamic_object_field.move b/external-crates/move/tooling/tree-sitter/tests/dynamic_object_field.move new file mode 100644 index 0000000000000..38a0a5f7e83d2 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/dynamic_object_field.move @@ -0,0 +1,115 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Similar to `sui::dynamic_field`, this module allows for the access of dynamic fields. But +/// unlike, `sui::dynamic_field` the values bound to these dynamic fields _must_ be objects +/// themselves. This allows for the objects to still exist within in storage, which may be important +/// for external tools. The difference is otherwise not observable from within Move. +module sui::dynamic_object_field { + use std::option::{Self, Option}; + use sui::object::{Self, UID, ID}; + use sui::dynamic_field::{ + Self as field, + add_child_object, + borrow_child_object, + borrow_child_object_mut, + remove_child_object, + }; + + // Internal object used for storing the field and the name associated with the value + // The separate type is necessary to prevent key collision with direct usage of dynamic_field + struct Wrapper has copy, drop, store { + name: Name, + } + + /// Adds a dynamic object field to the object `object: &mut UID` at field specified by `name: Name`. + /// Aborts with `EFieldAlreadyExists` if the object already has that field with that name. + public fun add( + // we use &mut UID in several spots for access control + object: &mut UID, + name: Name, + value: Value, + ) { + let key = Wrapper { name }; + let id = object::id(&value); + field::add(object, key, id); + let (field, _) = field::field_info>(object, key); + add_child_object(object::uid_to_address(field), value); + } + + /// Immutably borrows the `object`s dynamic object field with the name specified by `name: Name`. + /// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. + /// Aborts with `EFieldTypeMismatch` if the field exists, but the value object does not have the + /// specified type. + public fun borrow( + object: &UID, + name: Name, + ): &Value { + let key = Wrapper { name }; + let (field, value_id) = field::field_info>(object, key); + borrow_child_object(field, value_id) + } + + /// Mutably borrows the `object`s dynamic object field with the name specified by `name: Name`. + /// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. + /// Aborts with `EFieldTypeMismatch` if the field exists, but the value object does not have the + /// specified type. + public fun borrow_mut( + object: &mut UID, + name: Name, + ): &mut Value { + let key = Wrapper { name }; + let (field, value_id) = field::field_info_mut>(object, key); + borrow_child_object_mut(field, value_id) + } + + /// Removes the `object`s dynamic object field with the name specified by `name: Name` and returns + /// the bound object. + /// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. + /// Aborts with `EFieldTypeMismatch` if the field exists, but the value object does not have the + /// specified type. + public fun remove( + object: &mut UID, + name: Name, + ): Value { + let key = Wrapper { name }; + let (field, value_id) = field::field_info>(object, key); + let value = remove_child_object(object::uid_to_address(field), value_id); + field::remove, ID>(object, key); + value + } + + /// Returns true if and only if the `object` has a dynamic object field with the name specified by + /// `name: Name`. + public fun exists_( + object: &UID, + name: Name, + ): bool { + let key = Wrapper { name }; + field::exists_with_type, ID>(object, key) + } + + /// Returns true if and only if the `object` has a dynamic field with the name specified by + /// `name: Name` with an assigned value of type `Value`. + public fun exists_with_type( + object: &UID, + name: Name, + ): bool { + let key = Wrapper { name }; + if (!field::exists_with_type, ID>(object, key)) return false; + let (field, value_id) = field::field_info>(object, key); + field::has_child_object_with_ty(object::uid_to_address(field), value_id) + } + + /// Returns the ID of the object associated with the dynamic object field + /// Returns none otherwise + public fun id( + object: &UID, + name: Name, + ): Option { + let key = Wrapper { name }; + if (!field::exists_with_type, ID>(object, key)) return option::none(); + let (_field, value_id) = field::field_info>(object, key); + option::some(object::id_from_address(value_id)) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/entry_funs.move b/external-crates/move/tooling/tree-sitter/tests/entry_funs.move new file mode 100644 index 0000000000000..68f43b2634edb --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/entry_funs.move @@ -0,0 +1,13 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x8675309::M; + +public entry fun f0() {} +entry public fun f1() {} +entry fun f2() {} +native entry fun f3(); +entry native fun f4(); +entry native public fun f5(); +native entry public fun f6(); +native public entry fun f7(); diff --git a/external-crates/move/tooling/tree-sitter/tests/event.move b/external-crates/move/tooling/tree-sitter/tests/event.move new file mode 100644 index 0000000000000..f6478eee618d4 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/event.move @@ -0,0 +1,38 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Events module. Defines the `sui::event::emit` function which +/// creates and sends a custom MoveEvent as a part of the effects +/// certificate of the transaction. +/// +/// Every MoveEvent has the following properties: +/// - sender +/// - type signature (`T`) +/// - event data (the value of `T`) +/// - timestamp (local to a node) +/// - transaction digest +/// +/// Example: +/// ``` +/// module my::marketplace { +/// use sui::event; +/// /* ... */ +/// struct ItemPurchased has copy, drop { +/// item_id: ID, buyer: address +/// } +/// entry fun buy(/* .... */) { +/// /* ... */ +/// event::emit(ItemPurchased { item_id: ..., buyer: .... }) +/// } +/// } +/// ``` +module sui::event { + /// Emit a custom Move event, sending the data offchain. + /// + /// Used for creating custom indexes and tracking onchain + /// activity in a way that suits a specific application the most. + /// + /// The type `T` is the main way to index the event, and can contain + /// phantom parameters, eg `emit(MyEvent)`. + public native fun emit(event: T); +} diff --git a/external-crates/move/tooling/tree-sitter/tests/fixed_point32.move b/external-crates/move/tooling/tree-sitter/tests/fixed_point32.move new file mode 100644 index 0000000000000..c64d818027366 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/fixed_point32.move @@ -0,0 +1,167 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Defines a fixed-point numeric type with a 32-bit integer part and +/// a 32-bit fractional part. + +module std::fixed_point32 { + + /// Define a fixed-point numeric type with 32 fractional bits. + /// This is just a u64 integer but it is wrapped in a struct to + /// make a unique type. This is a binary representation, so decimal + /// values may not be exactly representable, but it provides more + /// than 9 decimal digits of precision both before and after the + /// decimal point (18 digits total). For comparison, double precision + /// floating-point has less than 16 decimal digits of precision, so + /// be careful about using floating-point to convert these values to + /// decimal. + struct FixedPoint32 has copy, drop, store { value: u64 } + + ///> TODO: This is a basic constant and should be provided somewhere centrally in the framework. + const MAX_U64: u128 = 18446744073709551615; + + /// The denominator provided was zero + const EDENOMINATOR: u64 = 0x10001; + /// The quotient value would be too large to be held in a `u64` + const EDIVISION: u64 = 0x20002; + /// The multiplied value would be too large to be held in a `u64` + const EMULTIPLICATION: u64 = 0x20003; + /// A division by zero was encountered + const EDIVISION_BY_ZERO: u64 = 0x10004; + /// The computed ratio when converting to a `FixedPoint32` would be unrepresentable + const ERATIO_OUT_OF_RANGE: u64 = 0x20005; + + /// Multiply a u64 integer by a fixed-point number, truncating any + /// fractional part of the product. This will abort if the product + /// overflows. + public fun multiply_u64(val: u64, multiplier: FixedPoint32): u64 { + // The product of two 64 bit values has 128 bits, so perform the + // multiplication with u128 types and keep the full 128 bit product + // to avoid losing accuracy. + let unscaled_product = (val as u128) * (multiplier.value as u128); + // The unscaled product has 32 fractional bits (from the multiplier) + // so rescale it by shifting away the low bits. + let product = unscaled_product >> 32; + // Check whether the value is too large. + assert!(product <= MAX_U64, EMULTIPLICATION); + (product as u64) + } + spec multiply_u64 { + pragma opaque; + include MultiplyAbortsIf; + ensures result == spec_multiply_u64(val, multiplier); + } + spec schema MultiplyAbortsIf { + val: num; + multiplier: FixedPoint32; + aborts_if spec_multiply_u64(val, multiplier) > MAX_U64 with EMULTIPLICATION; + } + spec fun spec_multiply_u64(val: num, multiplier: FixedPoint32): num { + (val * multiplier.value) >> 32 + } + + /// Divide a u64 integer by a fixed-point number, truncating any + /// fractional part of the quotient. This will abort if the divisor + /// is zero or if the quotient overflows. + public fun divide_u64(val: u64, divisor: FixedPoint32): u64 { + // Check for division by zero. + assert!(divisor.value != 0, EDIVISION_BY_ZERO); + // First convert to 128 bits and then shift left to + // add 32 fractional zero bits to the dividend. + let scaled_value = (val as u128) << 32; + let quotient = scaled_value / (divisor.value as u128); + // Check whether the value is too large. + assert!(quotient <= MAX_U64, EDIVISION); + // the value may be too large, which will cause the cast to fail + // with an arithmetic error. + (quotient as u64) + } + spec divide_u64 { + pragma opaque; + include DivideAbortsIf; + ensures result == spec_divide_u64(val, divisor); + } + spec schema DivideAbortsIf { + val: num; + divisor: FixedPoint32; + aborts_if divisor.value == 0 with EDIVISION_BY_ZERO; + aborts_if spec_divide_u64(val, divisor) > MAX_U64 with EDIVISION; + } + spec fun spec_divide_u64(val: num, divisor: FixedPoint32): num { + (val << 32) / divisor.value + } + + /// Create a fixed-point value from a rational number specified by its + /// numerator and denominator. Calling this function should be preferred + /// for using `Self::create_from_raw_value` which is also available. + /// This will abort if the denominator is zero. It will also + /// abort if the numerator is nonzero and the ratio is not in the range + /// 2^-32 .. 2^32-1. When specifying decimal fractions, be careful about + /// rounding errors: if you round to display N digits after the decimal + /// point, you can use a denominator of 10^N to avoid numbers where the + /// very small imprecision in the binary representation could change the + /// rounding, e.g., 0.0125 will round down to 0.012 instead of up to 0.013. + public fun create_from_rational(numerator: u64, denominator: u64): FixedPoint32 { + // If the denominator is zero, this will abort. + // Scale the numerator to have 64 fractional bits and the denominator + // to have 32 fractional bits, so that the quotient will have 32 + // fractional bits. + let scaled_numerator = (numerator as u128) << 64; + let scaled_denominator = (denominator as u128) << 32; + assert!(scaled_denominator != 0, EDENOMINATOR); + let quotient = scaled_numerator / scaled_denominator; + assert!(quotient != 0 || numerator == 0, ERATIO_OUT_OF_RANGE); + // Return the quotient as a fixed-point number. We first need to check whether the cast + // can succeed. + assert!(quotient <= MAX_U64, ERATIO_OUT_OF_RANGE); + FixedPoint32 { value: (quotient as u64) } + } + spec create_from_rational { + pragma opaque; + include CreateFromRationalAbortsIf; + ensures result == spec_create_from_rational(numerator, denominator); + } + spec schema CreateFromRationalAbortsIf { + numerator: u64; + denominator: u64; + let scaled_numerator = numerator << 64; + let scaled_denominator = denominator << 32; + let quotient = scaled_numerator / scaled_denominator; + aborts_if scaled_denominator == 0 with EDENOMINATOR; + aborts_if quotient == 0 && scaled_numerator != 0 with ERATIO_OUT_OF_RANGE; + aborts_if quotient > MAX_U64 with ERATIO_OUT_OF_RANGE; + } + spec fun spec_create_from_rational(numerator: num, denominator: num): FixedPoint32 { + FixedPoint32{value: (numerator << 64) / (denominator << 32)} + } + + /// Create a fixedpoint value from a raw value. + public fun create_from_raw_value(value: u64): FixedPoint32 { + FixedPoint32 { value } + } + spec create_from_raw_value { + pragma opaque; + aborts_if false; + ensures result.value == value; + } + + /// Accessor for the raw u64 value. Other less common operations, such as + /// adding or subtracting FixedPoint32 values, can be done using the raw + /// values directly. + public fun get_raw_value(num: FixedPoint32): u64 { + num.value + } + + /// Returns true if the ratio is zero. + public fun is_zero(num: FixedPoint32): bool { + num.value == 0 + } + + // **************** SPECIFICATIONS **************** + + spec module {} // switch documentation context to module level + + spec module { + pragma aborts_if_is_strict; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/global_address.move b/external-crates/move/tooling/tree-sitter/tests/global_address.move new file mode 100644 index 0000000000000..daad8ed0dfef6 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/global_address.move @@ -0,0 +1,13 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module Completion::test; + +public enum SomeEnum has drop { + SomeVariant, +} + +public fun test() { + ::Completion::test::SomeEnum::SomeVariant; + ::Completion::test::test(); +} diff --git a/external-crates/move/tooling/tree-sitter/tests/hash.move b/external-crates/move/tooling/tree-sitter/tests/hash.move new file mode 100644 index 0000000000000..ed84f18a9a7fc --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/hash.move @@ -0,0 +1,11 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Module which defines SHA hashes for byte vectors. +/// +/// The functions in this module are natively declared both in the Move runtime +/// as in the Move prover's prelude. +module std::hash { + native public fun sha2_256(data: vector): vector; + native public fun sha3_256(data: vector): vector; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/hex.move b/external-crates/move/tooling/tree-sitter/tests/hex.move new file mode 100644 index 0000000000000..5b42fa3753e82 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/hex.move @@ -0,0 +1,111 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// HEX (Base16) encoding utility. +module sui::hex { + use std::vector; + + const EInvalidHexLength: u64 = 0; + const ENotValidHexCharacter: u64 = 1; + + /// Vector of Base16 values from `00` to `FF` + const HEX: vector> = vector[ + b"00",b"01",b"02",b"03",b"04",b"05",b"06",b"07",b"08",b"09",b"0a",b"0b",b"0c",b"0d",b"0e",b"0f",b"10",b"11",b"12",b"13",b"14",b"15",b"16",b"17",b"18",b"19",b"1a",b"1b",b"1c",b"1d",b"1e",b"1f",b"20",b"21",b"22",b"23",b"24",b"25",b"26",b"27",b"28",b"29",b"2a",b"2b",b"2c",b"2d",b"2e",b"2f",b"30",b"31",b"32",b"33",b"34",b"35",b"36",b"37",b"38",b"39",b"3a",b"3b",b"3c",b"3d",b"3e",b"3f",b"40",b"41",b"42",b"43",b"44",b"45",b"46",b"47",b"48",b"49",b"4a",b"4b",b"4c",b"4d",b"4e",b"4f",b"50",b"51",b"52",b"53",b"54",b"55",b"56",b"57",b"58",b"59",b"5a",b"5b",b"5c",b"5d",b"5e",b"5f",b"60",b"61",b"62",b"63",b"64",b"65",b"66",b"67",b"68",b"69",b"6a",b"6b",b"6c",b"6d",b"6e",b"6f",b"70",b"71",b"72",b"73",b"74",b"75",b"76",b"77",b"78",b"79",b"7a",b"7b",b"7c",b"7d",b"7e",b"7f",b"80",b"81",b"82",b"83",b"84",b"85",b"86",b"87",b"88",b"89",b"8a",b"8b",b"8c",b"8d",b"8e",b"8f",b"90",b"91",b"92",b"93",b"94",b"95",b"96",b"97",b"98",b"99",b"9a",b"9b",b"9c",b"9d",b"9e",b"9f",b"a0",b"a1",b"a2",b"a3",b"a4",b"a5",b"a6",b"a7",b"a8",b"a9",b"aa",b"ab",b"ac",b"ad",b"ae",b"af",b"b0",b"b1",b"b2",b"b3",b"b4",b"b5",b"b6",b"b7",b"b8",b"b9",b"ba",b"bb",b"bc",b"bd",b"be",b"bf",b"c0",b"c1",b"c2",b"c3",b"c4",b"c5",b"c6",b"c7",b"c8",b"c9",b"ca",b"cb",b"cc",b"cd",b"ce",b"cf",b"d0",b"d1",b"d2",b"d3",b"d4",b"d5",b"d6",b"d7",b"d8",b"d9",b"da",b"db",b"dc",b"dd",b"de",b"df",b"e0",b"e1",b"e2",b"e3",b"e4",b"e5",b"e6",b"e7",b"e8",b"e9",b"ea",b"eb",b"ec",b"ed",b"ee",b"ef",b"f0",b"f1",b"f2",b"f3",b"f4",b"f5",b"f6",b"f7",b"f8",b"f9",b"fa",b"fb",b"fc",b"fd",b"fe",b"ff" + ]; + + /// Encode `bytes` in lowercase hex + public fun encode(bytes: vector): vector { + let (i, r, l) = (0, vector[], vector::length(&bytes)); + while (i < l) { + vector::append( + &mut r, + *vector::borrow(&HEX, (*vector::borrow(&bytes, i) as u64)) + ); + i = i + 1; + }; + r + } + + /// Decode hex into `bytes` + /// Takes a hex string (no 0x prefix) (e.g. b"0f3a") + /// Returns vector of `bytes` that represents the hex string (e.g. x"0f3a") + /// Hex string can be case insensitive (e.g. b"0F3A" and b"0f3a" both return x"0f3a") + /// Aborts if the hex string does not have an even number of characters (as each hex character is 2 characters long) + /// Aborts if the hex string contains non-valid hex characters (valid characters are 0 - 9, a - f, A - F) + public fun decode(hex: vector): vector { + let (i, r, l) = (0, vector[], vector::length(&hex)); + assert!(l % 2 == 0, EInvalidHexLength); + while (i < l) { + let decimal = (decode_byte(*vector::borrow(&hex, i)) * 16) + + decode_byte(*vector::borrow(&hex, i + 1)); + vector::push_back(&mut r, decimal); + i = i + 2; + }; + r + } + + fun decode_byte(hex: u8): u8 { + if (/* 0 .. 9 */ 48 <= hex && hex < 58) { + hex - 48 + } else if (/* A .. F */ 65 <= hex && hex < 71) { + 10 + hex - 65 + } else if (/* a .. f */ 97 <= hex && hex < 103) { + 10 + hex - 97 + } else { + abort ENotValidHexCharacter + } + } + + spec module { pragma verify = false; } + + #[test] + fun test_hex_encode_string_literal() { + assert!(b"30" == encode(b"0"), 0); + assert!(b"61" == encode(b"a"), 0); + assert!(b"666666" == encode(b"fff"), 0); + } + + #[test] + fun test_hex_encode_hex_literal() { + assert!(b"ff" == encode(x"ff"), 0); + assert!(b"fe" == encode(x"fe"), 0); + assert!(b"00" == encode(x"00"), 0); + } + + #[test] + fun test_hex_decode_string_literal() { + assert!(x"ff" == decode(b"ff"), 0); + assert!(x"fe" == decode(b"fe"), 0); + assert!(x"00" == decode(b"00"), 0); + } + + #[test] + fun test_hex_decode_string_literal__lowercase_and_uppercase() { + assert!(x"ff" == decode(b"Ff"), 0); + assert!(x"ff" == decode(b"fF"), 0); + assert!(x"ff" == decode(b"FF"), 0); + } + + #[test] + fun test_hex_decode_string_literal__long_hex() { + assert!(x"036d2416252ae1db8aedad59e14b007bee6ab94a3e77a3549a81137871604456f3" == decode(b"036d2416252ae1Db8aedAd59e14b007bee6aB94a3e77a3549a81137871604456f3"), 0); + } + + #[test] + #[expected_failure(abort_code = EInvalidHexLength)] + fun test_hex_decode__invalid_length() { + decode(b"0"); + } + + #[test] + #[expected_failure(abort_code = ENotValidHexCharacter)] + fun test_hex_decode__hex_literal() { + decode(x"ffff"); + } + + #[test] + #[expected_failure(abort_code = ENotValidHexCharacter)] + fun test_hex_decode__invalid_string_literal() { + decode(b"0g"); + } +} \ No newline at end of file diff --git a/external-crates/move/tooling/tree-sitter/tests/labels1.move b/external-crates/move/tooling/tree-sitter/tests/labels1.move new file mode 100644 index 0000000000000..c38475b0546aa --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/labels1.move @@ -0,0 +1,29 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::M { + fun foo() {} + fun bar(): u64 { 0 } + + fun t(): u64 { 'r: { + // loop + 1 + 'a: loop { foo() } + 2; + 1 + 'a: loop foo(); + 1 + loop 'a: { foo() } + 2; + 'a: loop { foo() } + 1; + + // return + return 'r 1 + 2; + return 'r { 1 + 2 }; + return 'r { 1 } && false; + false && return 'r { 1 }; + + // abort + abort 1 + 2; + abort 'a: { 1 + 2 }; + abort 'a: { 1 } && false; + false && abort 'a: { 1 }; + + 0 + } } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/labels2.move b/external-crates/move/tooling/tree-sitter/tests/labels2.move new file mode 100644 index 0000000000000..40df6b20957e6 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/labels2.move @@ -0,0 +1,23 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::m { + // cases that need parens + fun t(cond: bool): u64 { + loop { break ('a: { 1 }) }; + loop { break ('a: loop { break 0 }) }; + if (cond) return ('a: { 1 }); + 0 + } + fun t2(cond: bool) { + if (cond) return ('a: while (cond) {}); + } + + // misleading cases but valid + fun t3(cond: bool) { + 'a: loop { break 'a { 1 } }; + 'a: loop { break 'a loop { break 0 } }; + 'a: { return 'a { 1 } }; + 'a: { return 'a while (cond) {} }; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/labels3.move b/external-crates/move/tooling/tree-sitter/tests/labels3.move new file mode 100644 index 0000000000000..b76301192afd2 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/labels3.move @@ -0,0 +1,19 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::M { + + fun foo(_: &u64) {} + + #[allow(dead_code)] + fun t(cond: bool) { 'a: { + 1 + if (cond) 0 else 'a: { 1 } + 2; + 1 + 'a: loop {} + 2; + 1 + return 'a + 0; + + foo(&if (cond) 0 else 1); + foo(&'a: loop {}); + foo(&return 'a); + foo(&abort 0); + } } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/labels4.move b/external-crates/move/tooling/tree-sitter/tests/labels4.move new file mode 100644 index 0000000000000..c38475b0546aa --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/labels4.move @@ -0,0 +1,29 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::M { + fun foo() {} + fun bar(): u64 { 0 } + + fun t(): u64 { 'r: { + // loop + 1 + 'a: loop { foo() } + 2; + 1 + 'a: loop foo(); + 1 + loop 'a: { foo() } + 2; + 'a: loop { foo() } + 1; + + // return + return 'r 1 + 2; + return 'r { 1 + 2 }; + return 'r { 1 } && false; + false && return 'r { 1 }; + + // abort + abort 1 + 2; + abort 'a: { 1 + 2 }; + abort 'a: { 1 } && false; + false && abort 'a: { 1 }; + + 0 + } } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/lambda_lvalue.move b/external-crates/move/tooling/tree-sitter/tests/lambda_lvalue.move new file mode 100644 index 0000000000000..1420c4fd8c5f4 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/lambda_lvalue.move @@ -0,0 +1,33 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::m; + +public struct Point(u64, u64) has copy, drop, store; +public struct FPoint { x: u64, y: u64 } has copy, drop, store; + +macro fun foo( + $x: &u64, + $p: Point, + $s: &mut FPoint, + $f: |u64, (&u64, Point, &mut FPoint)| +) { + $f(0, ($x, $p, $s)) +} + +fun t() { + let p = Point(1, 2); + foo!( + &0, + p, + &mut FPoint { x: 3, y: 4 }, + |_, (_x, Point(mut xp, mut yp), FPoint { x, y })| { + assert!(xp == 1, 0); + assert!(yp == 2, 0); + xp = *x; + yp = *y; + *x = yp; + *y = xp; + } + ) +} diff --git a/external-crates/move/tooling/tree-sitter/tests/lambda_type_annotation.move b/external-crates/move/tooling/tree-sitter/tests/lambda_type_annotation.move new file mode 100644 index 0000000000000..6e7e87d2c160c --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/lambda_type_annotation.move @@ -0,0 +1,24 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::b; + +fun lambda_tys_complex() { + a::b::macro_call!( + |b1: &mut a::c::C, + b2: &mut LocalTy, + b3: u128| say::hello() + ) +} + +fun lambda_tys_simple() { + core::create_ticket!( + |pool: u64, delta_l: u128| say::hello() + ) +} + +fun lambda_no_tys() { + core::create_ticket!( + |pool, delta_l| say::hello() + ) +} diff --git a/external-crates/move/tooling/tree-sitter/tests/linked_table.move b/external-crates/move/tooling/tree-sitter/tests/linked_table.move new file mode 100644 index 0000000000000..9880f774adfdc --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/linked_table.move @@ -0,0 +1,200 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Similar to `sui::table` but the values are linked together, allowing for ordered insertion and +/// removal +module sui::linked_table { + use std::option::{Self, Option}; + use sui::object::{Self, UID}; + use sui::dynamic_field as field; + use sui::tx_context::TxContext; + + // Attempted to destroy a non-empty table + const ETableNotEmpty: u64 = 0; + // Attempted to remove the front or back of an empty table + const ETableIsEmpty: u64 = 1; + + struct LinkedTable has key, store { + /// the ID of this table + id: UID, + /// the number of key-value pairs in the table + size: u64, + /// the front of the table, i.e. the key of the first entry + head: Option, + /// the back of the table, i.e. the key of the last entry + tail: Option, + } + + struct Node has store { + /// the previous key + prev: Option, + /// the next key + next: Option, + /// the value being stored + value: V + } + + /// Creates a new, empty table + public fun new(ctx: &mut TxContext): LinkedTable { + LinkedTable { + id: object::new(ctx), + size: 0, + head: option::none(), + tail: option::none(), + } + } + + /// Returns the key for the first element in the table, or None if the table is empty + public fun front(table: &LinkedTable): &Option { + &table.head + } + + /// Returns the key for the last element in the table, or None if the table is empty + public fun back(table: &LinkedTable): &Option { + &table.tail + } + + /// Inserts a key-value pair at the front of the table, i.e. the newly inserted pair will be + /// the first element in the table + /// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the table already has an entry with + /// that key `k: K`. + public fun push_front( + table: &mut LinkedTable, + k: K, + value: V, + ) { + let old_head = option::swap_or_fill(&mut table.head, k); + if (option::is_none(&table.tail)) option::fill(&mut table.tail, k); + let prev = option::none(); + let next = if (option::is_some(&old_head)) { + let old_head_k = option::destroy_some(old_head); + field::borrow_mut>(&mut table.id, old_head_k).prev = option::some(k); + option::some(old_head_k) + } else { + option::none() + }; + field::add(&mut table.id, k, Node { prev, next, value }); + table.size = table.size + 1; + } + + /// Inserts a key-value pair at the back of the table, i.e. the newly inserted pair will be + /// the last element in the table + /// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the table already has an entry with + /// that key `k: K`. + public fun push_back( + table: &mut LinkedTable, + k: K, + value: V, + ) { + if (option::is_none(&table.head)) option::fill(&mut table.head, k); + let old_tail = option::swap_or_fill(&mut table.tail, k); + let prev = if (option::is_some(&old_tail)) { + let old_tail_k = option::destroy_some(old_tail); + field::borrow_mut>(&mut table.id, old_tail_k).next = option::some(k); + option::some(old_tail_k) + } else { + option::none() + }; + let next = option::none(); + field::add(&mut table.id, k, Node { prev, next, value }); + table.size = table.size + 1; + } + + /// Immutable borrows the value associated with the key in the table `table: &LinkedTable`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun borrow(table: &LinkedTable, k: K): &V { + &field::borrow>(&table.id, k).value + } + + /// Mutably borrows the value associated with the key in the table `table: &mut LinkedTable`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun borrow_mut( + table: &mut LinkedTable, + k: K, + ): &mut V { + &mut field::borrow_mut>(&mut table.id, k).value + } + + /// Borrows the key for the previous entry of the specified key `k: K` in the table + /// `table: &LinkedTable`. Returns None if the entry does not have a predecessor. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K` + public fun prev(table: &LinkedTable, k: K): &Option { + &field::borrow>(&table.id, k).prev + } + + /// Borrows the key for the next entry of the specified key `k: K` in the table + /// `table: &LinkedTable`. Returns None if the entry does not have a predecessor. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K` + public fun next(table: &LinkedTable, k: K): &Option { + &field::borrow>(&table.id, k).next + } + + /// Removes the key-value pair in the table `table: &mut LinkedTable` and returns the value. + /// This splices the element out of the ordering. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. Note: this is also what happens when the table is empty. + public fun remove(table: &mut LinkedTable, k: K): V { + let Node { prev, next, value } = field::remove(&mut table.id, k); + table.size = table.size - 1; + if (option::is_some(&prev)) { + field::borrow_mut>(&mut table.id, *option::borrow(&prev)).next = next + }; + if (option::is_some(&next)) { + field::borrow_mut>(&mut table.id, *option::borrow(&next)).prev = prev + }; + if (option::borrow(&table.head) == &k) table.head = next; + if (option::borrow(&table.tail) == &k) table.tail = prev; + value + } + + /// Removes the front of the table `table: &mut LinkedTable` and returns the value. + /// Aborts with `ETableIsEmpty` if the table is empty + public fun pop_front(table: &mut LinkedTable): (K, V) { + assert!(option::is_some(&table.head), ETableIsEmpty); + let head = *option::borrow(&table.head); + (head, remove(table, head)) + } + + /// Removes the back of the table `table: &mut LinkedTable` and returns the value. + /// Aborts with `ETableIsEmpty` if the table is empty + public fun pop_back(table: &mut LinkedTable): (K, V) { + assert!(option::is_some(&table.tail), ETableIsEmpty); + let tail = *option::borrow(&table.tail); + (tail, remove(table, tail)) + } + + /// Returns true iff there is a value associated with the key `k: K` in table + /// `table: &LinkedTable` + public fun contains(table: &LinkedTable, k: K): bool { + field::exists_with_type>(&table.id, k) + } + + /// Returns the size of the table, the number of key-value pairs + public fun length(table: &LinkedTable): u64 { + table.size + } + + /// Returns true iff the table is empty (if `length` returns `0`) + public fun is_empty(table: &LinkedTable): bool { + table.size == 0 + } + + /// Destroys an empty table + /// Aborts with `ETableNotEmpty` if the table still contains values + public fun destroy_empty(table: LinkedTable) { + let LinkedTable { id, size, head: _, tail: _ } = table; + assert!(size == 0, ETableNotEmpty); + object::delete(id) + } + + /// Drop a possibly non-empty table. + /// Usable only if the value type `V` has the `drop` ability + public fun drop(table: LinkedTable) { + let LinkedTable { id, size: _, head: _, tail: _ } = table; + object::delete(id) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/literal_address_module_and_pos_structs.move b/external-crates/move/tooling/tree-sitter/tests/literal_address_module_and_pos_structs.move new file mode 100644 index 0000000000000..2e56a60b18fad --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/literal_address_module_and_pos_structs.move @@ -0,0 +1,7 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::test { + struct Positional() + struct Positional2() has copy; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/match_at_binders1.move b/external-crates/move/tooling/tree-sitter/tests/match_at_binders1.move new file mode 100644 index 0000000000000..8e043a4822216 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/match_at_binders1.move @@ -0,0 +1,10 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::m { + fun test_04(x: Maybe, other: Maybe): Maybe { + match (x) { + (x @ Maybe::Nothing) | (x @ Maybe::Just(_)) => other, + } + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/match_mut.move b/external-crates/move/tooling/tree-sitter/tests/match_mut.move new file mode 100644 index 0000000000000..02176f161282c --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/match_mut.move @@ -0,0 +1,102 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::m { + + public struct NBase has copy, drop { t: u64 } + + public struct PBase(u64) has copy, drop; + + public struct NPoly has copy, drop { t: T } + + public struct PPoly(T) has copy, drop; + + public fun make_nbase(): NBase { + NBase { t: 0 } + } + + public fun make_pbase(): PBase { + PBase(0) + } + + public fun make_npoly(t: T): NPoly { + NPoly { t } + } + + public fun make_ppoly(t: T): PPoly { + PPoly(t) + } + + public fun test_00(s: NBase): u64 { + match (s) { + NBase { mut t } => { + t = t + 1; + t + }, + } + } + + public fun test_01(s: NBase): u64 { + match (s) { + NBase { t: mut x } => { + x = x + 1; + x + }, + } + } + + public fun test_02(s: PBase): u64 { + match (s) { + PBase(mut x) => { + x = x + 1; + x + } + } + } + + public fun test_03(s: NPoly): u64 { + match (s) { + NPoly { t : NBase { mut t } } => { + t = t + 1; + t + }, + } + } + + public fun test_04(s: NPoly): u64 { + match (s) { + NPoly { t : NBase { t: mut x } } => { + x = x + 1; + x + }, + } + } + + public fun test_05(s: NPoly): u64 { + match (s) { + NPoly { t : PBase(mut x) } => { + x = x + 1; + x + }, + } + } + + public fun test_06(s: PPoly): u64 { + match (s) { + PPoly(NBase { t: mut x }) => { + x = x + 1; + x + }, + } + } + + public fun test_07(s: PPoly): u64 { + match (s) { + PPoly(PBase(mut x)) => { + x = x + 1; + x + }, + } + } + +} diff --git a/external-crates/move/tooling/tree-sitter/tests/match_or_pattern_literals.move b/external-crates/move/tooling/tree-sitter/tests/match_or_pattern_literals.move new file mode 100644 index 0000000000000..cdfd51b5eb366 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/match_or_pattern_literals.move @@ -0,0 +1,18 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module x::a; + +fun bar(x: u64): u64 { + match (x) { + 1 => 1, // ERROR + _ => 0, + }; +} + +fun foo(x: u64): u64 { + match (x) { + 1 | 2 | 3 => 1, // ERROR + _ => 0, + }; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/match_test.move b/external-crates/move/tooling/tree-sitter/tests/match_test.move new file mode 100644 index 0000000000000..b4203df36e749 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/match_test.move @@ -0,0 +1,220 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module match::test_module; + +fun run(x: u64): u64 { + match (x) { + 1 => 2, + 2 => 3, + x => x, + } +} + +public struct Wrapper(u64) + +fun add_under_wrapper_unless_equal(wrapper: Wrapper, x: u64): u64 { + match (wrapper) { + Wrapper(y) if (y == x) => Wrapper(y), + Wrapper(y) => y + x, + } +} + +public enum MyEnum has drop { + Variant(u64, bool), + OtherVariant(bool, u64), +} + +fun test_or_pattern(x: u64): u64 { + match (x) { + MyEnum::Variant(1 | 2 | 3, true) | MyEnum::OtherVariant(true, 1 | 2 | 3) => 1, + MyEnum::Variant(8, true) | MyEnum::OtherVariant(_, 6 | 7) => 2, + _ => 3, + } +} + +fun test_lit(x: u64): u8 { + match (x) { + 1 => 2, + 2 => 3, + _ => 4, + } +} + +fun test_var(x: u64): u64 { + match (x) { + y => y, + } +} + +const MyConstant: u64 = 10; +fun test_constant(x: u64): u64 { + match (x) { + MyConstant => 1, + _ => 2, + } +} + +fun test_or_pattern(x: u64): u64 { + match (x) { + 1 | 2 | 3 => 1, + 4 | 5 | 6 => 2, + _ => 3, + } +} + +fun test_or_at_pattern(x: u64): u64 { + match (x) { + x @ (1 | 2 | 3) => x + 1, + y @ (4 | 5 | 6) => y + 2, + z => z + 3, + } +} + +fun f(x: MyEnum) { + match (x) { + MyEnum::Variant(1, true) => 1, + MyEnum::OtherVariant(_, 3) => 2, + MyEnum::Variant(..) => 3, + MyEnum::OtherVariant(..) => 4, + } +} + +fun f(x: MyEnum) { + match (x) { + MyEnum::Variant(1 | 2 | 10, true) => 1, + MyEnum::OtherVariant(_, 3) => 2, + MyEnum::Variant(..) => 3, + MyEnum::OtherVariant(..) => 4, + } +} + +public struct NonDrop(u64) + +fun drop_nondrop(x: NonDrop) { + match (x) { + NonDrop(1) => 1, + _ => 2 + // ERROR: cannot wildcard match on a non-droppable value + } +} + +fun destructure_nondrop(x: NonDrop) { + match (x) { + NonDrop(1) => 1, + NonDrop(_) => 2 + // OK! + } +} + +fun use_nondrop(x: NonDrop): NonDrop { + match (x) { + NonDrop(1) => NonDrop(8), + x => x + } +} + +public enum MyEnum { + Variant(u64, bool), + OtherVariant(bool, u64), +} + +public struct Pair(T, T) + +fun f(x: MyEnum): u8 { + match (x) { + MyEnum::Variant(1, true) => 1, + MyEnum::Variant(_, _) => 1, + MyEnum::OtherVariant(_, 3) => 2, + // Now exhaustive since this will match all values of MyEnum::OtherVariant + MyEnum::OtherVariant(..) => 2, + + } +} + +fun match_pair_bool(x: Pair): u8 { + match (x) { + Pair(true, true) => 1, + Pair(true, false) => 1, + Pair(false, false) => 1, + // Now exhaustive since this will match all values of Pair + Pair(false, true) => 1, + } +} + +fun match_with_guard(x: u64): u64 { + match (x) { + 1 if (false) => 1, + 1 => 2, + _ => 3, + } +} + +public struct MyStruct(u64) + +fun mut_on_immut(x: &MyStruct): u64 { + match (x) { + MyStruct(mut y) => { + y = &(*y + 1); + *y + } + } +} + +fun mut_on_value(x: MyStruct): u64 { + match (x) { + MyStruct(mut y) => { + *y = *y + 1; + *y + }, + } +} + +fun mut_on_mut(x: &mut MyStruct): u64 { + match (x) { + MyStruct(mut y) => { + *y = *y + 1; + *y + }, + } +} + +public struct MyStruct(u64, u64, u64, u64) has drop; + +public struct MyStruct2 { + x: u64, + y: u64, + z: u64, + w: u64, +} + +fun wild_match(x: MyStruct) { + match (x) { + MyStruct(.., 1) => 1, + // OK! The `..` pattern can be used at the beginning of the constructor pattern + MyStruct(1, ..) => 2, + // OK! The `..` pattern can be used at the end of the constructor pattern + MyStruct(1, .., 1) => 3, + // OK! The `..` pattern can be used at the middle of the constructor pattern + MyStruct(1, .., 1, 1) => 4, + MyStruct(..) => 5, + } +} + +fun wild_match2(x: MyStruct2) { + match (x) { + MyStruct2 { x: 1, .. } => 1, + MyStruct2 { x: 1, w: 2, .. } => 2, + MyStruct2 { .. } => 3, + } +} + +/// Convert a `u64` index to a `Colour`. +public fun from_index(index: u64): Colour { + match (index) { + 0 => Colour::Empty, + 1 => Colour::Black, // ERROR + 2 => Colour::White, // ERROR + _ => abort 0, + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/match_type.move b/external-crates/move/tooling/tree-sitter/tests/match_type.move new file mode 100644 index 0000000000000..9e6382925cf8d --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/match_type.move @@ -0,0 +1,14 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::m; +fun t0(): u64 { + let Bla(x) = 0; + let Self::Bla(x) = 0; + let ::Bla(x) = 0; + match (o) { + Option::None => 0, + Self::Option::Some(_) => 0, + ::Option::Other(_) => 0, + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/math.move b/external-crates/move/tooling/tree-sitter/tests/math.move new file mode 100644 index 0000000000000..e88c1a4a8f80d --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/math.move @@ -0,0 +1,144 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Basic math for nicer programmability +module sui::math { + + /// Return the larger of `x` and `y` + public fun max(x: u64, y: u64): u64 { + if (x > y) { + x + } else { + y + } + } + + /// Return the smaller of `x` and `y` + public fun min(x: u64, y: u64): u64 { + if (x < y) { + x + } else { + y + } + } + + /// Return the absolute value of x - y + public fun diff(x: u64, y: u64): u64 { + if (x > y) { + x - y + } else { + y - x + } + } + + /// Return the value of a base raised to a power + public fun pow(base: u64, exponent: u8): u64 { + let res = 1; + while (exponent >= 1) { + if (exponent % 2 == 0) { + base = base * base; + exponent = exponent / 2; + } else { + res = res * base; + exponent = exponent - 1; + } + }; + + res + } + + /// Get a nearest lower integer Square Root for `x`. Given that this + /// function can only operate with integers, it is impossible + /// to get perfect (or precise) integer square root for some numbers. + /// + /// Example: + /// ``` + /// math::sqrt(9) => 3 + /// math::sqrt(8) => 2 // the nearest lower square root is 4; + /// ``` + /// + /// In integer math, one of the possible ways to get results with more + /// precision is to use higher values or temporarily multiply the + /// value by some bigger number. Ideally if this is a square of 10 or 100. + /// + /// Example: + /// ``` + /// math::sqrt(8) => 2; + /// math::sqrt(8 * 10000) => 282; + /// // now we can use this value as if it was 2.82; + /// // but to get the actual result, this value needs + /// // to be divided by 100 (because sqrt(10000)). + /// + /// + /// math::sqrt(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828) + /// ``` + public fun sqrt(x: u64): u64 { + let bit = 1u128 << 64; + let res = 0u128; + let x = (x as u128); + + while (bit != 0) { + if (x >= res + bit) { + x = x - (res + bit); + res = (res >> 1) + bit; + } else { + res = res >> 1; + }; + bit = bit >> 2; + }; + + (res as u64) + } + + /// Similar to math::sqrt, but for u128 numbers. Get a nearest lower integer Square Root for `x`. Given that this + /// function can only operate with integers, it is impossible + /// to get perfect (or precise) integer square root for some numbers. + /// + /// Example: + /// ``` + /// math::sqrt_u128(9) => 3 + /// math::sqrt_u128(8) => 2 // the nearest lower square root is 4; + /// ``` + /// + /// In integer math, one of the possible ways to get results with more + /// precision is to use higher values or temporarily multiply the + /// value by some bigger number. Ideally if this is a square of 10 or 100. + /// + /// Example: + /// ``` + /// math::sqrt_u128(8) => 2; + /// math::sqrt_u128(8 * 10000) => 282; + /// // now we can use this value as if it was 2.82; + /// // but to get the actual result, this value needs + /// // to be divided by 100 (because sqrt_u128(10000)). + /// + /// + /// math::sqrt_u128(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828) + /// ``` + public fun sqrt_u128(x: u128): u128 { + let bit = 1u256 << 128; + let res = 0u256; + let x = (x as u256); + + while (bit != 0) { + if (x >= res + bit) { + x = x - (res + bit); + res = (res >> 1) + bit; + } else { + res = res >> 1; + }; + bit = bit >> 2; + }; + + (res as u128) + } + + /// Calculate x / y, but round up the result. + public fun divide_and_round_up(x: u64, y: u64): u64 { + if (x % y == 0) { + x / y + } else { + x / y + 1 + } + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/module_labels.move b/external-crates/move/tooling/tree-sitter/tests/module_labels.move new file mode 100644 index 0000000000000..45115bfe19538 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/module_labels.move @@ -0,0 +1,8 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x1::m; +use a::b; +use a::c; + +fun x() { } diff --git a/external-crates/move/tooling/tree-sitter/tests/module_uses.move b/external-crates/move/tooling/tree-sitter/tests/module_uses.move new file mode 100644 index 0000000000000..4da711116ad90 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/module_uses.move @@ -0,0 +1,25 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module foo::bar { + use std::{ + ascii::{Self, String}, + vector::push_back, + + vector::pop_back as p, + + coin, + object as O, + }; + use std::vector::foo; + use fun Self::foo as X.f1; + use fun a::m::foo as X.f2; + use fun foo as Self::X.f3; + use fun foo as a::m::X.f4; + use fun foo as X.f5; + public use fun Self::foo as X.g1; + public use fun a::m::foo as X.g2; + public use fun foo as Self::X.g3; + public use fun foo as a::m::X.g4; + public use fun foo as X.g5; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/multi_index_test.move b/external-crates/move/tooling/tree-sitter/tests/multi_index_test.move new file mode 100644 index 0000000000000..d4cd00762d16e --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/multi_index_test.move @@ -0,0 +1,10 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x1::m { + fun f() { + x[]; + x[1, f()]; + x[1, 2, 3]; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/multi_line.move b/external-crates/move/tooling/tree-sitter/tests/multi_line.move new file mode 100644 index 0000000000000..7d4e9124d35f3 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/multi_line.move @@ -0,0 +1,14 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::m { + friend // why + a::n; + public( // why folks, why + friend + ) fun t() {} + + public( // why folks, why + package + ) entry fun t() {} +} diff --git a/external-crates/move/tooling/tree-sitter/tests/mut_space.move b/external-crates/move/tooling/tree-sitter/tests/mut_space.move new file mode 100644 index 0000000000000..17144283e0284 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/mut_space.move @@ -0,0 +1,12 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::m; +public struct S { + f: u64, +} +public fun foo(x: & mut S): & mut u64 { + & mut x.f; + & + mut x.f +} diff --git a/external-crates/move/tooling/tree-sitter/tests/named_address_test.move b/external-crates/move/tooling/tree-sitter/tests/named_address_test.move new file mode 100644 index 0000000000000..63d3f10d63bdf --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/named_address_test.move @@ -0,0 +1,9 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x1::t { + +fun f() { + transfer::public_transfer(old_phone, @examples); +} +} diff --git a/external-crates/move/tooling/tree-sitter/tests/native_structs.move b/external-crates/move/tooling/tree-sitter/tests/native_structs.move new file mode 100644 index 0000000000000..84468d7971344 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/native_structs.move @@ -0,0 +1,8 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module s::foo { + public native struct Booper has drop, copy; + + public native struct Booper3; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/new_syntax_file.move b/external-crates/move/tooling/tree-sitter/tests/new_syntax_file.move new file mode 100644 index 0000000000000..a72259c9e2de6 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/new_syntax_file.move @@ -0,0 +1,202 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module foo::bar; +// Imports +use std::vector::foo; +use fun Self::foo as X.f1; +use fun a::m::foo as X.f2; +use fun foo as Self::X.f3; +use fun foo as a::m::X.f4; +use fun foo as X.f5; +public use fun Self::foo as X.g1; +public use fun a::m::foo as X.g2; +public use fun foo as Self::X.g3; +public use fun foo as a::m::X.g4; +public use fun foo as X.g5; + +use std::{ + ascii::{Self, String}, + vector::push_back, + vector::pop_back as p, + coin, + object as O, +}; + +// Types +public struct X {} +public struct Old has key { + x: u64 +} +public struct NewPost has key (u64) +public struct NewPoster(u64) has key, store; +public struct None() +public enum NewEnum { + V(), + V1(u64, bool), + V2 { x: u64, y: bool }, + V3 +} +public enum NewEnum has key { + NewVariant(u64), + VariantNoParams, + VariantEmptyParams(), + VariantNamedParams { x: u64 }, +} + +public struct X { + `for`: u64, + `let`: u64, + `struct`: u64, +} + +#[syntax(index)] +public fun new(mut x: T): T { } + +public fun `let`(mut `mut`: u64) { + let `let` = `mut`; + let `for` = `mut` + `let` + `let` + `mut`; + let `struct` = `let` + `for` + `let` + `mut`; + let `enum` = `struct` + `let` + `for` + `let` + `mut`; + let `let` = `let` + `for` + `let` + `mut`; + let `let` = `let` * `mut` + `let` / `for` - `struct`; +} + +public fun foo() { + let x = (x: C).y; + *if (cond) { &0 } else { &mut 0 }; + () +} + +fun f(): u64 { + 1 as u64; + 1 + 2 as u64; + (1 + 2) as u64; + 1 + (2 as u64); + v[1 as u64]; + 1 as u64 + 2; +} + +public fun new_let_mut(): u64 { + let mut x = 0; + x = 1; + let t = x.new(); + let t = x.new(a, b, t.y()); + let Old { mut y } = x.new(); + let NewPost(y) = x.new(); + let NewPoster(mut y) = x.new(); + let NewPoster(mut y, z, i) = x.new(); + let NewPoster(mut y, z, i) = x.new(); + let NewPoster::Variant(mut y, z, i) = x.new(); + match (s) { + NewPoster::Variant(x) => something, + NewPoster::Variant{ x } if (true) => something, + y @ bar => @0x1, + }; + x.foreach!(|y| { x = y; }); + assert!(x == 1, 6); + x +} + +// blocks +public fun block() { + 'a: { + return 'a x; + break 'a x; + return'a x.foo!(); + break'a { x = x + 1; x }; + continue 'a; + }; + 'a: loop { }; + 'a: while (true) { }; + while (true) 'a: { }; + // TODO: fix precedence of this + if (true) 1 else 'a: { 2 } + 1; +} + +// Macros +macro fun ignore( + _: None, +) {} + +macro fun for($start: u64, $stop: u64, $body: |u64|) { + let mut i = $start; + let stop = $stop; + while (i < stop) { + $body(i); + i = i + 1 + } +} + +macro fun for_each<$T>($v: &vector<$T>, $body: |&$T|) { + let v = $v; + let mut i = 0; + let n = v.length(); + while (i < n) { + $body(v.borrow(i)); + i = i + 1 + } +} + +macro fun new<$T>($len: u64, $f: |u64| -> $T): vector<$T> { + let len = $len; + let mut v = vector[]; + for!(0, len, |i| v.push_back($f(i))); + v +} + +macro fun sum($v: &vector): u64 { + let mut s = 0; + for_each!($v, |i| s = s + *i); + s +} + +fun t() { + None().ignore!() +} + +public entry fun main() { + let v = new!(10, |i| i); + assert!(sum!(&v) == 45, 0); +} + +public struct Cup has drop {} +public macro fun foo( + _: ||, + _: || -> (), + _: || -> u64, + _: || -> (u64), + _: || -> (u64, bool), + _: |&u64|, + _: |&u64| -> (), + _: |&u64| -> u64, + _: |&u64| -> (u64), + _: |&u64| -> (u64, bool), + _: |bool, address|, + _: |bool, address| -> (), + _: |bool, address| -> u64, + _: |bool, address| -> (u64), + _: |bool, address| -> (u64, bool), + _: |bool, address| -> (u64, bool, &u64), + _: || -> || -> ||, + _: || -> || -> || -> || -> (), + _: || -> | | -> || -> | | -> u64, + _: | | -> || -> | | -> || -> (u64), + _: Cup<||>, + _: Cup<|| -> u64>, +) {} + +macro fun call<$T>($f: || -> $T): $T { + $f() +} + +fun t() { + call!(|| -> u64 'a: { 0 }); +} + +fun t() { + call!(|| -> () { }); + call!(|| -> () { () }); + call!(|| -> u64 { 0 }); + call!(|| -> (u64, u8) { (0, 0) }); +} diff --git a/external-crates/move/tooling/tree-sitter/tests/object.move b/external-crates/move/tooling/tree-sitter/tests/object.move new file mode 100644 index 0000000000000..34c7641432d80 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/object.move @@ -0,0 +1,235 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Sui object identifiers +module sui::object { + use std::bcs; + use sui::address; + use sui::tx_context::{Self, TxContext}; + + friend sui::clock; + friend sui::dynamic_field; + friend sui::dynamic_object_field; + friend sui::transfer; + friend sui::authenticator_state; + friend sui::random; + + #[test_only] + friend sui::test_scenario; + + /// The hardcoded ID for the singleton Sui System State Object. + const SUI_SYSTEM_STATE_OBJECT_ID: address = @0x5; + + /// The hardcoded ID for the singleton Clock Object. + const SUI_CLOCK_OBJECT_ID: address = @0x6; + + /// The hardcoded ID for the singleton AuthenticatorState Object. + const SUI_AUTHENTICATOR_STATE_ID: address = @0x7; + + /// The hardcoded ID for the singleton Random Object. + const SUI_RANDOM_ID: address = @0x8; + + /// Sender is not @0x0 the system address. + const ENotSystemAddress: u64 = 0; + + /// An object ID. This is used to reference Sui Objects. + /// This is *not* guaranteed to be globally unique--anyone can create an `ID` from a `UID` or + /// from an object, and ID's can be freely copied and dropped. + /// Here, the values are not globally unique because there can be multiple values of type `ID` + /// with the same underlying bytes. For example, `object::id(&obj)` can be called as many times + /// as you want for a given `obj`, and each `ID` value will be identical. + struct ID has copy, drop, store { + // We use `address` instead of `vector` here because `address` has a more + // compact serialization. `address` is serialized as a BCS fixed-length sequence, + // which saves us the length prefix we would pay for if this were `vector`. + // See https://github.com/diem/bcs#fixed-and-variable-length-sequences. + bytes: address + } + + /// Globally unique IDs that define an object's ID in storage. Any Sui Object, that is a struct + /// with the `key` ability, must have `id: UID` as its first field. + /// These are globally unique in the sense that no two values of type `UID` are ever equal, in + /// other words for any two values `id1: UID` and `id2: UID`, `id1` != `id2`. + /// This is a privileged type that can only be derived from a `TxContext`. + /// `UID` doesn't have the `drop` ability, so deleting a `UID` requires a call to `delete`. + struct UID has store { + id: ID, + } + + // === id === + + /// Get the raw bytes of a `ID` + public fun id_to_bytes(id: &ID): vector { + bcs::to_bytes(&id.bytes) + } + + /// Get the inner bytes of `id` as an address. + public fun id_to_address(id: &ID): address { + id.bytes + } + + /// Make an `ID` from raw bytes. + public fun id_from_bytes(bytes: vector): ID { + id_from_address(address::from_bytes(bytes)) + } + + /// Make an `ID` from an address. + public fun id_from_address(bytes: address): ID { + ID { bytes } + } + + // === uid === + + #[allow(unused_function)] + /// Create the `UID` for the singleton `SuiSystemState` object. + /// This should only be called once from `sui_system`. + fun sui_system_state(ctx: &TxContext): UID { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + UID { + id: ID { bytes: SUI_SYSTEM_STATE_OBJECT_ID }, + } + } + + /// Create the `UID` for the singleton `Clock` object. + /// This should only be called once from `clock`. + public(friend) fun clock(): UID { + UID { + id: ID { bytes: SUI_CLOCK_OBJECT_ID } + } + } + + /// Create the `UID` for the singleton `AuthenticatorState` object. + /// This should only be called once from `authenticator_state`. + public(friend) fun authenticator_state(): UID { + UID { + id: ID { bytes: SUI_AUTHENTICATOR_STATE_ID } + } + } + + /// Create the `UID` for the singleton `Random` object. + /// This should only be called once from `random`. + public(friend) fun randomness_state(): UID { + UID { + id: ID { bytes: SUI_RANDOM_ID } + } + } + + /// Get the inner `ID` of `uid` + public fun uid_as_inner(uid: &UID): &ID { + &uid.id + } + + /// Get the raw bytes of a `uid`'s inner `ID` + public fun uid_to_inner(uid: &UID): ID { + uid.id + } + + /// Get the raw bytes of a `UID` + public fun uid_to_bytes(uid: &UID): vector { + bcs::to_bytes(&uid.id.bytes) + } + + /// Get the inner bytes of `id` as an address. + public fun uid_to_address(uid: &UID): address { + uid.id.bytes + } + + // === any object === + + /// Create a new object. Returns the `UID` that must be stored in a Sui object. + /// This is the only way to create `UID`s. + public fun new(ctx: &mut TxContext): UID { + UID { + id: ID { bytes: tx_context::fresh_object_address(ctx) }, + } + } + + /// Delete the object and it's `UID`. This is the only way to eliminate a `UID`. + // This exists to inform Sui of object deletions. When an object + // gets unpacked, the programmer will have to do something with its + // `UID`. The implementation of this function emits a deleted + // system event so Sui knows to process the object deletion + public fun delete(id: UID) { + let UID { id: ID { bytes } } = id; + delete_impl(bytes) + } + + /// Get the underlying `ID` of `obj` + public fun id(obj: &T): ID { + borrow_uid(obj).id + } + + /// Borrow the underlying `ID` of `obj` + public fun borrow_id(obj: &T): &ID { + &borrow_uid(obj).id + } + + /// Get the raw bytes for the underlying `ID` of `obj` + public fun id_bytes(obj: &T): vector { + bcs::to_bytes(&borrow_uid(obj).id) + } + + /// Get the inner bytes for the underlying `ID` of `obj` + public fun id_address(obj: &T): address { + borrow_uid(obj).id.bytes + } + + /// Get the `UID` for `obj`. + /// Safe because Sui has an extra bytecode verifier pass that forces every struct with + /// the `key` ability to have a distinguished `UID` field. + /// Cannot be made public as the access to `UID` for a given object must be privileged, and + /// restrictable in the object's module. + native fun borrow_uid(obj: &T): &UID; + + /// Generate a new UID specifically used for creating a UID from a hash + public(friend) fun new_uid_from_hash(bytes: address): UID { + record_new_uid(bytes); + UID { id: ID { bytes } } + } + + // === internal functions === + + // helper for delete + native fun delete_impl(id: address); + + spec delete_impl { + pragma opaque; + aborts_if [abstract] false; + ensures [abstract] !exists(id); + } + + // marks newly created UIDs from hash + native fun record_new_uid(id: address); + + spec record_new_uid { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } + + #[test_only] + /// Return the most recent created object ID. + public fun last_created(ctx: &TxContext): ID { + ID { bytes: tx_context::last_created_object_id(ctx) } + } + + + // === Prover support (to avoid circular dependency === + + #[verify_only] + /// Ownership information for a given object (stored at the object's address) + struct Ownership has key { + owner: address, // only matters if status == OWNED + status: u64, + } + + #[verify_only] + /// List of fields with a given name type of an object containing fields (stored at the + /// containing object's address) + struct DynamicFields has key { + names: vector, + } + + +} diff --git a/external-crates/move/tooling/tree-sitter/tests/object_bag.move b/external-crates/move/tooling/tree-sitter/tests/object_bag.move new file mode 100644 index 0000000000000..bfe1b92965fcf --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/object_bag.move @@ -0,0 +1,103 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Similar to `sui::bag`, an `ObjectBag` is a heterogeneous map-like collection. But unlike +/// `sui::bag`, the values bound to these dynamic fields _must_ be objects themselves. This allows +/// for the objects to still exist in storage, which may be important for external tools. +/// The difference is otherwise not observable from within Move. +module sui::object_bag { + use std::option::Option; + use sui::object::{Self, ID, UID}; + use sui::dynamic_object_field as ofield; + use sui::tx_context::TxContext; + + // Attempted to destroy a non-empty bag + const EBagNotEmpty: u64 = 0; + + struct ObjectBag has key, store { + /// the ID of this bag + id: UID, + /// the number of key-value pairs in the bag + size: u64, + } + + /// Creates a new, empty bag + public fun new(ctx: &mut TxContext): ObjectBag { + ObjectBag { + id: object::new(ctx), + size: 0, + } + } + + /// Adds a key-value pair to the bag `bag: &mut ObjectBag` + /// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the bag already has an entry with + /// that key `k: K`. + public fun add(bag: &mut ObjectBag, k: K, v: V) { + ofield::add(&mut bag.id, k, v); + bag.size = bag.size + 1; + } + + /// Immutably borrows the value associated with the key in the bag `bag: &ObjectBag`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the bag does not have an entry with + /// that key `k: K`. + /// Aborts with `sui::dynamic_field::EFieldTypeMismatch` if the bag has an entry for the key, but + /// the value does not have the specified type. + public fun borrow(bag: &ObjectBag, k: K): &V { + ofield::borrow(&bag.id, k) + } + + /// Mutably borrows the value associated with the key in the bag `bag: &mut ObjectBag`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the bag does not have an entry with + /// that key `k: K`. + /// Aborts with `sui::dynamic_field::EFieldTypeMismatch` if the bag has an entry for the key, but + /// the value does not have the specified type. + public fun borrow_mut(bag: &mut ObjectBag, k: K): &mut V { + ofield::borrow_mut(&mut bag.id, k) + } + + /// Mutably borrows the key-value pair in the bag `bag: &mut ObjectBag` and returns the value. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the bag does not have an entry with + /// that key `k: K`. + /// Aborts with `sui::dynamic_field::EFieldTypeMismatch` if the bag has an entry for the key, but + /// the value does not have the specified type. + public fun remove(bag: &mut ObjectBag, k: K): V { + let v = ofield::remove(&mut bag.id, k); + bag.size = bag.size - 1; + v + } + + /// Returns true iff there is an value associated with the key `k: K` in the bag `bag: &ObjectBag` + public fun contains(bag: &ObjectBag, k: K): bool { + ofield::exists_(&bag.id, k) + } + + /// Returns true iff there is an value associated with the key `k: K` in the bag `bag: &ObjectBag` + /// with an assigned value of type `V` + public fun contains_with_type(bag: &ObjectBag, k: K): bool { + ofield::exists_with_type(&bag.id, k) + } + + /// Returns the size of the bag, the number of key-value pairs + public fun length(bag: &ObjectBag): u64 { + bag.size + } + + /// Returns true iff the bag is empty (if `length` returns `0`) + public fun is_empty(bag: &ObjectBag): bool { + bag.size == 0 + } + + /// Destroys an empty bag + /// Aborts with `EBagNotEmpty` if the bag still contains values + public fun destroy_empty(bag: ObjectBag) { + let ObjectBag { id, size } = bag; + assert!(size == 0, EBagNotEmpty); + object::delete(id) + } + + /// Returns the ID of the object associated with the key if the bag has an entry with key `k: K` + /// Returns none otherwise + public fun value_id(bag: &ObjectBag, k: K): Option { + ofield::id(&bag.id, k) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/object_table.move b/external-crates/move/tooling/tree-sitter/tests/object_table.move new file mode 100644 index 0000000000000..7cc883b331ae7 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/object_table.move @@ -0,0 +1,98 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Similar to `sui::table`, an `ObjectTable` is a map-like collection. But unlike +/// `sui::table`, the values bound to these dynamic fields _must_ be objects themselves. This allows +/// for the objects to still exist within in storage, which may be important for external tools. +/// The difference is otherwise not observable from within Move. +module sui::object_table { + use std::option::Option; + use sui::object::{Self, ID, UID}; + use sui::dynamic_object_field as ofield; + use sui::tx_context::TxContext; + + // Attempted to destroy a non-empty table + const ETableNotEmpty: u64 = 0; + + struct ObjectTable has key, store { + /// the ID of this table + id: UID, + /// the number of key-value pairs in the table + size: u64, + } + + /// Creates a new, empty table + public fun new(ctx: &mut TxContext): ObjectTable { + ObjectTable { + id: object::new(ctx), + size: 0, + } + } + + /// Adds a key-value pair to the table `table: &mut ObjectTable` + /// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the table already has an entry with + /// that key `k: K`. + public fun add(table: &mut ObjectTable, k: K, v: V) { + ofield::add(&mut table.id, k, v); + table.size = table.size + 1; + } + + /// Immutable borrows the value associated with the key in the table `table: &ObjectTable`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun borrow(table: &ObjectTable, k: K): &V { + ofield::borrow(&table.id, k) + } + + /// Mutably borrows the value associated with the key in the table `table: &mut ObjectTable`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun borrow_mut( + table: &mut ObjectTable, + k: K, + ): &mut V { + ofield::borrow_mut(&mut table.id, k) + } + + /// Removes the key-value pair in the table `table: &mut ObjectTable` and returns the value. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun remove(table: &mut ObjectTable, k: K): V { + let v = ofield::remove(&mut table.id, k); + table.size = table.size - 1; + v + } + + /// Returns true iff there is a value associated with the key `k: K` in table + /// `table: &ObjectTable` + public fun contains(table: &ObjectTable, k: K): bool { + ofield::exists_(&table.id, k) + } + + /// Returns the size of the table, the number of key-value pairs + public fun length(table: &ObjectTable): u64 { + table.size + } + + /// Returns true iff the table is empty (if `length` returns `0`) + public fun is_empty(table: &ObjectTable): bool { + table.size == 0 + } + + /// Destroys an empty table + /// Aborts with `ETableNotEmpty` if the table still contains values + public fun destroy_empty(table: ObjectTable) { + let ObjectTable { id, size } = table; + assert!(size == 0, ETableNotEmpty); + object::delete(id) + } + + /// Returns the ID of the object associated with the key if the table has an entry with key `k: K` + /// Returns none otherwise + public fun value_id( + table: &ObjectTable, + k: K, + ): Option { + ofield::id(&table.id, k) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/option.move b/external-crates/move/tooling/tree-sitter/tests/option.move new file mode 100644 index 0000000000000..95c32942da8ce --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/option.move @@ -0,0 +1,265 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// This module defines the Option type and its methods to represent and handle an optional value. +module std::option { + use std::vector; + + /// Abstraction of a value that may or may not be present. Implemented with a vector of size + /// zero or one because Move bytecode does not have ADTs. + struct Option has copy, drop, store { + vec: vector + } + spec Option { + // The size of vector is always less than equal to 1 + // because it's 0 for "none" or 1 for "some". + // TODO: disable temporarily to avoid an error triggered after + // https://github.com/move-language/move/pull/820 was implemented + // (change the comment above to doc comment once this id fixed) + // invariant len(vec) <= 1; + } + + /// The `Option` is in an invalid state for the operation attempted. + /// The `Option` is `Some` while it should be `None`. + const EOPTION_IS_SET: u64 = 0x40000; + /// The `Option` is in an invalid state for the operation attempted. + /// The `Option` is `None` while it should be `Some`. + const EOPTION_NOT_SET: u64 = 0x40001; + + /// Return an empty `Option` + public fun none(): Option { + Option { vec: vector::empty() } + } + spec none { + pragma opaque; + aborts_if false; + ensures result == spec_none(); + } + spec fun spec_none(): Option { + Option{ vec: vec() } + } + + /// Return an `Option` containing `e` + public fun some(e: Element): Option { + Option { vec: vector::singleton(e) } + } + spec some { + pragma opaque; + aborts_if false; + ensures result == spec_some(e); + } + spec fun spec_some(e: Element): Option { + Option{ vec: vec(e) } + } + + /// Return true if `t` does not hold a value + public fun is_none(t: &Option): bool { + vector::is_empty(&t.vec) + } + spec is_none { + pragma opaque; + aborts_if false; + ensures result == is_none(t); + } + + /// Return true if `t` holds a value + public fun is_some(t: &Option): bool { + !vector::is_empty(&t.vec) + } + spec is_some { + pragma opaque; + aborts_if false; + ensures result == is_some(t); + } + + /// Return true if the value in `t` is equal to `e_ref` + /// Always returns `false` if `t` does not hold a value + public fun contains(t: &Option, e_ref: &Element): bool { + vector::contains(&t.vec, e_ref) + } + spec contains { + pragma opaque; + aborts_if false; + ensures result == spec_contains(t, e_ref); + } + spec fun spec_contains(t: Option, e: Element): bool { + is_some(t) && borrow(t) == e + } + + /// Return an immutable reference to the value inside `t` + /// Aborts if `t` does not hold a value + public fun borrow(t: &Option): &Element { + assert!(is_some(t), EOPTION_NOT_SET); + vector::borrow(&t.vec, 0) + } + spec borrow { + pragma opaque; + include AbortsIfNone; + ensures result == borrow(t); + } + + /// Return a reference to the value inside `t` if it holds one + /// Return `default_ref` if `t` does not hold a value + public fun borrow_with_default(t: &Option, default_ref: &Element): &Element { + let vec_ref = &t.vec; + if (vector::is_empty(vec_ref)) default_ref + else vector::borrow(vec_ref, 0) + } + spec borrow_with_default { + pragma opaque; + aborts_if false; + ensures result == (if (is_some(t)) borrow(t) else default_ref); + } + + /// Return the value inside `t` if it holds one + /// Return `default` if `t` does not hold a value + public fun get_with_default( + t: &Option, + default: Element, + ): Element { + let vec_ref = &t.vec; + if (vector::is_empty(vec_ref)) default + else *vector::borrow(vec_ref, 0) + } + spec get_with_default { + pragma opaque; + aborts_if false; + ensures result == (if (is_some(t)) borrow(t) else default); + } + + /// Convert the none option `t` to a some option by adding `e`. + /// Aborts if `t` already holds a value + public fun fill(t: &mut Option, e: Element) { + let vec_ref = &mut t.vec; + if (vector::is_empty(vec_ref)) vector::push_back(vec_ref, e) + else abort EOPTION_IS_SET + } + spec fill { + pragma opaque; + aborts_if is_some(t) with EOPTION_IS_SET; + ensures is_some(t); + ensures borrow(t) == e; + } + + /// Convert a `some` option to a `none` by removing and returning the value stored inside `t` + /// Aborts if `t` does not hold a value + public fun extract(t: &mut Option): Element { + assert!(is_some(t), EOPTION_NOT_SET); + vector::pop_back(&mut t.vec) + } + spec extract { + pragma opaque; + include AbortsIfNone; + ensures result == borrow(old(t)); + ensures is_none(t); + } + + /// Return a mutable reference to the value inside `t` + /// Aborts if `t` does not hold a value + public fun borrow_mut(t: &mut Option): &mut Element { + assert!(is_some(t), EOPTION_NOT_SET); + vector::borrow_mut(&mut t.vec, 0) + } + spec borrow_mut { + pragma opaque; + include AbortsIfNone; + ensures result == borrow(t); + } + + /// Swap the old value inside `t` with `e` and return the old value + /// Aborts if `t` does not hold a value + public fun swap(t: &mut Option, e: Element): Element { + assert!(is_some(t), EOPTION_NOT_SET); + let vec_ref = &mut t.vec; + let old_value = vector::pop_back(vec_ref); + vector::push_back(vec_ref, e); + old_value + } + spec swap { + pragma opaque; + include AbortsIfNone; + ensures result == borrow(old(t)); + ensures is_some(t); + ensures borrow(t) == e; + } + + /// Swap the old value inside `t` with `e` and return the old value; + /// or if there is no old value, fill it with `e`. + /// Different from swap(), swap_or_fill() allows for `t` not holding a value. + public fun swap_or_fill(t: &mut Option, e: Element): Option { + let vec_ref = &mut t.vec; + let old_value = if (vector::is_empty(vec_ref)) none() + else some(vector::pop_back(vec_ref)); + vector::push_back(vec_ref, e); + old_value + } + spec swap_or_fill { + pragma opaque; + ensures result == old(t); + ensures borrow(t) == e; + } + + /// Destroys `t.` If `t` holds a value, return it. Returns `default` otherwise + public fun destroy_with_default(t: Option, default: Element): Element { + let Option { vec } = t; + if (vector::is_empty(&mut vec)) default + else vector::pop_back(&mut vec) + } + spec destroy_with_default { + pragma opaque; + aborts_if false; + ensures result == (if (is_some(t)) borrow(t) else default); + } + + /// Unpack `t` and return its contents + /// Aborts if `t` does not hold a value + public fun destroy_some(t: Option): Element { + assert!(is_some(&t), EOPTION_NOT_SET); + let Option { vec } = t; + let elem = vector::pop_back(&mut vec); + vector::destroy_empty(vec); + elem + } + spec destroy_some { + pragma opaque; + include AbortsIfNone; + ensures result == borrow(t); + } + + /// Unpack `t` + /// Aborts if `t` holds a value + public fun destroy_none(t: Option) { + assert!(is_none(&t), EOPTION_IS_SET); + let Option { vec } = t; + vector::destroy_empty(vec) + } + spec destroy_none { + pragma opaque; + aborts_if is_some(t) with EOPTION_IS_SET; + } + + /// Convert `t` into a vector of length 1 if it is `Some`, + /// and an empty vector otherwise + public fun to_vec(t: Option): vector { + let Option { vec } = t; + vec + } + spec to_vec { + pragma opaque; + aborts_if false; + ensures result == t.vec; + } + + spec module {} // switch documentation context back to module level + + spec module { + pragma aborts_if_is_strict; + } + + /// # Helper Schema + + spec schema AbortsIfNone { + t: Option; + aborts_if is_none(t) with EOPTION_NOT_SET; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/package.move b/external-crates/move/tooling/tree-sitter/tests/package.move new file mode 100644 index 0000000000000..33b25c01e9faf --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/package.move @@ -0,0 +1,318 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Functions for operating on Move packages from within Move: +/// - Creating proof-of-publish objects from one-time witnesses +/// - Administering package upgrades through upgrade policies. +module sui::package { + use sui::object::{Self, ID, UID}; + use sui::tx_context::{TxContext, sender}; + use std::ascii::String; + use std::type_name; + use sui::types; + + /// Tried to create a `Publisher` using a type that isn't a + /// one-time witness. + const ENotOneTimeWitness: u64 = 0; + /// Tried to set a less restrictive policy than currently in place. + const ETooPermissive: u64 = 1; + /// This `UpgradeCap` has already authorized a pending upgrade. + const EAlreadyAuthorized: u64 = 2; + /// This `UpgradeCap` has not authorized an upgrade. + const ENotAuthorized: u64 = 3; + /// Trying to commit an upgrade to the wrong `UpgradeCap`. + const EWrongUpgradeCap: u64 = 4; + + /// Update any part of the package (function implementations, add new + /// functions or types, change dependencies) + const COMPATIBLE: u8 = 0; + /// Add new functions or types, or change dependencies, existing + /// functions can't change. + const ADDITIVE: u8 = 128; + /// Only be able to change dependencies. + const DEP_ONLY: u8 = 192; + + /// This type can only be created in the transaction that + /// generates a module, by consuming its one-time witness, so it + /// can be used to identify the address that published the package + /// a type originated from. + struct Publisher has key, store { + id: UID, + package: String, + module_name: String, + } + + /// Capability controlling the ability to upgrade a package. + struct UpgradeCap has key, store { + id: UID, + /// (Mutable) ID of the package that can be upgraded. + package: ID, + /// (Mutable) The number of upgrades that have been applied + /// successively to the original package. Initially 0. + version: u64, + /// What kind of upgrades are allowed. + policy: u8, + } + + /// Permission to perform a particular upgrade (for a fixed version of + /// the package, bytecode to upgrade with and transitive dependencies to + /// depend against). + /// + /// An `UpgradeCap` can only issue one ticket at a time, to prevent races + /// between concurrent updates or a change in its upgrade policy after + /// issuing a ticket, so the ticket is a "Hot Potato" to preserve forward + /// progress. + struct UpgradeTicket { + /// (Immutable) ID of the `UpgradeCap` this originated from. + cap: ID, + /// (Immutable) ID of the package that can be upgraded. + package: ID, + /// (Immutable) The policy regarding what kind of upgrade this ticket + /// permits. + policy: u8, + /// (Immutable) SHA256 digest of the bytecode and transitive + /// dependencies that will be used in the upgrade. + digest: vector, + } + + /// Issued as a result of a successful upgrade, containing the + /// information to be used to update the `UpgradeCap`. This is a "Hot + /// Potato" to ensure that it is used to update its `UpgradeCap` before + /// the end of the transaction that performed the upgrade. + struct UpgradeReceipt { + /// (Immutable) ID of the `UpgradeCap` this originated from. + cap: ID, + /// (Immutable) ID of the package after it was upgraded. + package: ID, + } + + /// Claim a Publisher object. + /// Requires a One-Time-Witness to prove ownership. Due to this + /// constraint there can be only one Publisher object per module + /// but multiple per package (!). + public fun claim(otw: OTW, ctx: &mut TxContext): Publisher { + assert!(types::is_one_time_witness(&otw), ENotOneTimeWitness); + + let type = type_name::get_with_original_ids(); + + Publisher { + id: object::new(ctx), + package: type_name::get_address(&type), + module_name: type_name::get_module(&type), + } + } + + #[lint_allow(self_transfer)] + /// Claim a Publisher object and send it to transaction sender. + /// Since this function can only be called in the module initializer, + /// the sender is the publisher. + public fun claim_and_keep(otw: OTW, ctx: &mut TxContext) { + sui::transfer::public_transfer(claim(otw, ctx), sender(ctx)) + } + + /// Destroy a Publisher object effectively removing all privileges + /// associated with it. + public fun burn_publisher(self: Publisher) { + let Publisher { id, package: _, module_name: _ } = self; + object::delete(id); + } + + /// Check whether type belongs to the same package as the publisher object. + public fun from_package(self: &Publisher): bool { + let type = type_name::get_with_original_ids(); + + (type_name::get_address(&type) == self.package) + } + + /// Check whether a type belongs to the same module as the publisher object. + public fun from_module(self: &Publisher): bool { + let type = type_name::get_with_original_ids(); + + (type_name::get_address(&type) == self.package) + && (type_name::get_module(&type) == self.module_name) + } + + /// Read the name of the module. + public fun published_module(self: &Publisher): &String { + &self.module_name + } + + /// Read the package address string. + public fun published_package(self: &Publisher): &String { + &self.package + } + + /// The ID of the package that this cap authorizes upgrades for. + /// Can be `0x0` if the cap cannot currently authorize an upgrade + /// because there is already a pending upgrade in the transaction. + /// Otherwise guaranteed to be the latest version of any given + /// package. + public fun upgrade_package(cap: &UpgradeCap): ID { + cap.package + } + + /// The most recent version of the package, increments by one for each + /// successfully applied upgrade. + public fun version(cap: &UpgradeCap): u64 { + cap.version + } + + /// The most permissive kind of upgrade currently supported by this + /// `cap`. + public fun upgrade_policy(cap: &UpgradeCap): u8 { + cap.policy + } + + /// The package that this ticket is authorized to upgrade + public fun ticket_package(ticket: &UpgradeTicket): ID { + ticket.package + } + + /// The kind of upgrade that this ticket authorizes. + public fun ticket_policy(ticket: &UpgradeTicket): u8 { + ticket.policy + } + + /// ID of the `UpgradeCap` that this `receipt` should be used to + /// update. + public fun receipt_cap(receipt: &UpgradeReceipt): ID { + receipt.cap + } + + /// ID of the package that was upgraded to: the latest version of + /// the package, as of the upgrade represented by this `receipt`. + public fun receipt_package(receipt: &UpgradeReceipt): ID { + receipt.package + } + + /// A hash of the package contents for the new version of the + /// package. This ticket only authorizes an upgrade to a package + /// that matches this digest. A package's contents are identified + /// by two things: + /// + /// - modules: [[u8]] a list of the package's module contents + /// - deps: [[u8; 32]] a list of 32 byte ObjectIDs of the + /// package's transitive dependencies + /// + /// A package's digest is calculated as: + /// + /// sha3_256(sort(modules ++ deps)) + public fun ticket_digest(ticket: &UpgradeTicket): &vector { + &ticket.digest + } + + /// Expose the constants representing various upgrade policies + public fun compatible_policy(): u8 { COMPATIBLE } + public fun additive_policy(): u8 { ADDITIVE } + public fun dep_only_policy(): u8 { DEP_ONLY } + + /// Restrict upgrades through this upgrade `cap` to just add code, or + /// change dependencies. + public entry fun only_additive_upgrades(cap: &mut UpgradeCap) { + restrict(cap, ADDITIVE) + } + + /// Restrict upgrades through this upgrade `cap` to just change + /// dependencies. + public entry fun only_dep_upgrades(cap: &mut UpgradeCap) { + restrict(cap, DEP_ONLY) + } + + /// Discard the `UpgradeCap` to make a package immutable. + public entry fun make_immutable(cap: UpgradeCap) { + let UpgradeCap { id, package: _, version: _, policy: _ } = cap; + object::delete(id); + } + + /// Issue a ticket authorizing an upgrade to a particular new bytecode + /// (identified by its digest). A ticket will only be issued if one has + /// not already been issued, and if the `policy` requested is at least as + /// restrictive as the policy set out by the `cap`. + /// + /// The `digest` supplied and the `policy` will both be checked by + /// validators when running the upgrade. I.e. the bytecode supplied in + /// the upgrade must have a matching digest, and the changes relative to + /// the parent package must be compatible with the policy in the ticket + /// for the upgrade to succeed. + public fun authorize_upgrade( + cap: &mut UpgradeCap, + policy: u8, + digest: vector + ): UpgradeTicket { + let id_zero = object::id_from_address(@0x0); + assert!(cap.package != id_zero, EAlreadyAuthorized); + assert!(policy >= cap.policy, ETooPermissive); + + let package = cap.package; + cap.package = id_zero; + + UpgradeTicket { + cap: object::id(cap), + package, + policy, + digest, + } + } + + /// Consume an `UpgradeReceipt` to update its `UpgradeCap`, finalizing + /// the upgrade. + public fun commit_upgrade( + cap: &mut UpgradeCap, + receipt: UpgradeReceipt, + ) { + let UpgradeReceipt { cap: cap_id, package } = receipt; + + assert!(object::id(cap) == cap_id, EWrongUpgradeCap); + assert!(object::id_to_address(&cap.package) == @0x0, ENotAuthorized); + + cap.package = package; + cap.version = cap.version + 1; + } + + #[test_only] + /// Test-only function to claim a Publisher object bypassing OTW check. + public fun test_claim(_: OTW, ctx: &mut TxContext): Publisher { + let type = type_name::get_with_original_ids(); + + Publisher { + id: object::new(ctx), + package: type_name::get_address(&type), + module_name: type_name::get_module(&type), + } + } + + #[test_only] + /// Test-only function to simulate publishing a package at address + /// `ID`, to create an `UpgradeCap`. + public fun test_publish(package: ID, ctx: &mut TxContext): UpgradeCap { + UpgradeCap { + id: object::new(ctx), + package, + version: 1, + policy: COMPATIBLE, + } + } + + #[test_only] + /// Test-only function that takes the role of the actual `Upgrade` + /// command, converting the ticket for the pending upgrade to a + /// receipt for a completed upgrade. + public fun test_upgrade(ticket: UpgradeTicket): UpgradeReceipt { + let UpgradeTicket { cap, package, policy: _, digest: _ } = ticket; + + // Generate a fake package ID for the upgraded package by + // hashing the existing package and cap ID. + let data = object::id_to_bytes(&cap); + std::vector::append(&mut data, object::id_to_bytes(&package)); + let package = object::id_from_bytes(sui::hash::blake2b256(&data)); + + UpgradeReceipt { + cap, package + } + } + + fun restrict(cap: &mut UpgradeCap, policy: u8) { + assert!(cap.policy <= policy, ETooPermissive); + cap.policy = policy; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/pattern_ellipsis.move b/external-crates/move/tooling/tree-sitter/tests/pattern_ellipsis.move new file mode 100644 index 0000000000000..32bd8878fef4d --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/pattern_ellipsis.move @@ -0,0 +1,54 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module 0x42::m { + public enum X has drop { + A { x: u64 }, + B { x: u64, y: u64 }, + C(u64, bool, bool), + } + + public enum Y { + A(X), + B(u64, X), + C { x: u64, y: X, z: u64}, + } + + public fun f(x: X): u64 { + match (x) { + X::A { .. } => 0, + X::B { x, .. } => x, + X::C(1, ..) => 1, + X::C(1, .., true) => 2, + X::C(.., true) => 1, + X::C(..) => 1, + } + } + + public fun g(x: Y): u64 { + match (x) { + Y::A(X::A { .. }) => 0, + Y::A(X::B { x, .. }) => x, + Y::A(X::C(1, ..)) => 1, + Y::A(X::C(1, .., true)) => 2, + Y::A(X::C(.., true)) => 1, + Y::A(X::C(..)) => 1, + Y::B(.., X::A { .. }) => 0, + Y::B(.., X::B { x, .. }) => x, + Y::B(.., X::C(1, ..)) => 1, + Y::B(.., X::C(1, .., true)) => 2, + Y::B(.., X::C(.., true)) => 1, + Y::B(_, X::C(..)) => 1, + Y::C { x, .., y: _y} => x, + } + } + + public fun h(x: Y): u64 { + match (x) { + Y::A(_) => 0, + // .. is zero or more! + Y::B(_, _, ..) => 0, + Y::C { x, y: _y, z, ..} => x + z, + } + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/pay.move b/external-crates/move/tooling/tree-sitter/tests/pay.move new file mode 100644 index 0000000000000..47e84baa839fa --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/pay.move @@ -0,0 +1,89 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// This module provides handy functionality for wallets and `sui::Coin` management. +module sui::pay { + use sui::tx_context::{Self, TxContext}; + use sui::coin::{Self, Coin}; + use sui::transfer; + use std::vector; + + /// For when empty vector is supplied into join function. + const ENoCoins: u64 = 0; + + #[lint_allow(self_transfer)] + /// Transfer `c` to the sender of the current transaction + public fun keep(c: Coin, ctx: &TxContext) { + transfer::public_transfer(c, tx_context::sender(ctx)) + } + + /// Split coin `self` to two coins, one with balance `split_amount`, + /// and the remaining balance is left is `self`. + public entry fun split( + self: &mut Coin, split_amount: u64, ctx: &mut TxContext + ) { + keep(coin::split(self, split_amount, ctx), ctx) + } + + /// Split coin `self` into multiple coins, each with balance specified + /// in `split_amounts`. Remaining balance is left in `self`. + public entry fun split_vec( + self: &mut Coin, split_amounts: vector, ctx: &mut TxContext + ) { + let (i, len) = (0, vector::length(&split_amounts)); + while (i < len) { + split(self, *vector::borrow(&split_amounts, i), ctx); + i = i + 1; + }; + } + + /// Send `amount` units of `c` to `recipient` + /// Aborts with `EVALUE` if `amount` is greater than or equal to `amount` + public entry fun split_and_transfer( + c: &mut Coin, amount: u64, recipient: address, ctx: &mut TxContext + ) { + transfer::public_transfer(coin::split(c, amount, ctx), recipient) + } + + + #[lint_allow(self_transfer)] + /// Divide coin `self` into `n - 1` coins with equal balances. If the balance is + /// not evenly divisible by `n`, the remainder is left in `self`. + public entry fun divide_and_keep( + self: &mut Coin, n: u64, ctx: &mut TxContext + ) { + let vec: vector> = coin::divide_into_n(self, n, ctx); + let (i, len) = (0, vector::length(&vec)); + while (i < len) { + transfer::public_transfer(vector::pop_back(&mut vec), tx_context::sender(ctx)); + i = i + 1; + }; + vector::destroy_empty(vec); + } + + /// Join `coin` into `self`. Re-exports `coin::join` function. + public entry fun join(self: &mut Coin, coin: Coin) { + coin::join(self, coin) + } + + /// Join everything in `coins` with `self` + public entry fun join_vec(self: &mut Coin, coins: vector>) { + let (i, len) = (0, vector::length(&coins)); + while (i < len) { + let coin = vector::pop_back(&mut coins); + coin::join(self, coin); + i = i + 1 + }; + // safe because we've drained the vector + vector::destroy_empty(coins) + } + + /// Join a vector of `Coin` into a single object and transfer it to `receiver`. + public entry fun join_vec_and_transfer(coins: vector>, receiver: address) { + assert!(vector::length(&coins) > 0, ENoCoins); + + let self = vector::pop_back(&mut coins); + join_vec(&mut self, coins); + transfer::public_transfer(self, receiver) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/priority_queue.move b/external-crates/move/tooling/tree-sitter/tests/priority_queue.move new file mode 100644 index 0000000000000..1ae7f6359ab47 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/priority_queue.move @@ -0,0 +1,188 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Priority queue implemented using a max heap. +module sui::priority_queue { + use std::vector; + + /// For when heap is empty and there's no data to pop. + const EPopFromEmptyHeap: u64 = 0; + + /// Struct representing a priority queue. The `entries` vector represents a max + /// heap structure, where entries[0] is the root, entries[1] and entries[2] are the + /// left child and right child of the root, etc. More generally, the children of + /// entries[i] are at at i * 2 + 1 and i * 2 + 2. The max heap should have the invariant + /// that the parent node's priority is always higher than its child nodes' priorities. + struct PriorityQueue has store, drop { + entries: vector>, + } + + struct Entry has store, drop { + priority: u64, // higher value means higher priority and will be popped first + value: T, + } + + /// Create a new priority queue from the input entry vectors. + public fun new(entries: vector>) : PriorityQueue { + let len = vector::length(&entries); + let i = len / 2; + // Max heapify from the first node that is a parent (node at len / 2). + while (i > 0) { + i = i - 1; + max_heapify_recursive(&mut entries, len, i); + }; + PriorityQueue { entries } + } + + /// Pop the entry with the highest priority value. + public fun pop_max(pq: &mut PriorityQueue) : (u64, T) { + let len = vector::length(&pq.entries); + assert!(len > 0, EPopFromEmptyHeap); + // Swap the max element with the last element in the entries and remove the max element. + let Entry { priority, value } = vector::swap_remove(&mut pq.entries, 0); + // Now the max heap property has been violated at the root node, but nowhere else + // so we call max heapify on the root node. + max_heapify_recursive(&mut pq.entries, len - 1, 0); + (priority, value) + } + + /// Insert a new entry into the queue. + public fun insert(pq: &mut PriorityQueue, priority: u64, value: T) { + vector::push_back(&mut pq.entries, Entry { priority, value}); + let index = vector::length(&pq.entries) - 1; + restore_heap_recursive(&mut pq.entries, index); + } + + public fun new_entry(priority: u64, value: T): Entry { + Entry { priority, value } + } + + public fun create_entries(p: vector, v: vector): vector> { + let len = vector::length(&p); + assert!(vector::length(&v) == len, 0); + let res = vector::empty(); + let i = 0; + while (i < len) { + let priority = vector::remove(&mut p, 0); + let value = vector::remove(&mut v, 0); + vector::push_back(&mut res, Entry { priority, value }); + i = i + 1; + }; + res + } + + // TODO: implement iterative version too and see performance difference. + fun restore_heap_recursive(v: &mut vector>, i: u64) { + if (i == 0) { + return + }; + let parent = (i - 1) / 2; + + // If new elem is greater than its parent, swap them and recursively + // do the restoration upwards. + if (vector::borrow(v, i).priority > vector::borrow(v, parent).priority) { + vector::swap(v, i, parent); + restore_heap_recursive(v, parent); + } + } + + spec restore_heap_recursive { + pragma opaque; + } + + /// Max heapify the subtree whose root is at index `i`. That means after this function + /// finishes, the subtree should have the property that the parent node has higher priority + /// than both child nodes. + /// This function assumes that all the other nodes in the subtree (nodes other than the root) + /// do satisfy the max heap property. + fun max_heapify_recursive(v: &mut vector>, len: u64, i: u64) { + if (len == 0) { + return + }; + assert!(i < len, 1); + let left = i * 2 + 1; + let right = left + 1; + let max = i; + // Find the node with highest priority among node `i` and its two children. + if (left < len && vector::borrow(v, left).priority> vector::borrow(v, max).priority) { + max = left; + }; + if (right < len && vector::borrow(v, right).priority > vector::borrow(v, max).priority) { + max = right; + }; + // If the parent node (node `i`) doesn't have the highest priority, we swap the parent with the + // max priority node. + if (max != i) { + vector::swap(v, max, i); + // After the swap, we have restored the property at node `i` but now the max heap property + // may be violated at node `max` since this node now has a new value. So we need to now + // max heapify the subtree rooted at node `max`. + max_heapify_recursive(v, len, max); + } + } + + spec max_heapify_recursive { + pragma opaque; + } + + public fun priorities(pq: &PriorityQueue): vector { + let res = vector[]; + let i = 0; + while (i < vector::length(&pq.entries)) { + vector::push_back(&mut res, vector::borrow(&pq.entries, i).priority); + i = i +1; + }; + res + } + + #[test] + fun test_pq() { + let h = new(create_entries(vector[3,1,4,2,5,2], vector[10, 20, 30, 40, 50, 60])); + check_pop_max(&mut h, 5, 50); + check_pop_max(&mut h, 4, 30); + check_pop_max(&mut h, 3, 10); + insert(&mut h, 7, 70); + check_pop_max(&mut h, 7, 70); + check_pop_max(&mut h, 2, 40); + insert(&mut h, 0, 80); + check_pop_max(&mut h, 2, 60); + check_pop_max(&mut h, 1, 20); + check_pop_max(&mut h, 0, 80); + + + let h = new(create_entries(vector[5,3,1,2,4], vector[10, 20, 30, 40, 50])); + check_pop_max(&mut h, 5, 10); + check_pop_max(&mut h, 4, 50); + check_pop_max(&mut h, 3, 20); + check_pop_max(&mut h, 2, 40); + check_pop_max(&mut h, 1, 30); + } + + #[test] + fun test_swap_remove_edge_case() { + // This test would fail if `remove` is used incorrectly instead of `swap_remove` in `pop_max`. + // It's hard to characterize exactly under what condition this bug is triggered but roughly + // it happens when the entire tree vector is shifted left by one because of the incorrect usage + // of `remove`, and the resulting new root and its two children appear to satisfy the heap invariant + // so we stop max-heapifying there, while the rest of the tree is all messed up because of the shift. + let priorities = vector[8, 7, 3, 6, 2, 1, 0, 5, 4]; + let values = vector[0, 0, 0, 0, 0, 0, 0, 0, 0]; + let h = new(create_entries(priorities, values)); + check_pop_max(&mut h, 8, 0); + check_pop_max(&mut h, 7, 0); + check_pop_max(&mut h, 6, 0); + check_pop_max(&mut h, 5, 0); + check_pop_max(&mut h, 4, 0); + check_pop_max(&mut h, 3, 0); + check_pop_max(&mut h, 2, 0); + check_pop_max(&mut h, 1, 0); + check_pop_max(&mut h, 0, 0); + } + + #[test_only] + fun check_pop_max(h: &mut PriorityQueue, expected_priority: u64, expected_value: u64) { + let (priority, value) = pop_max(h); + assert!(priority == expected_priority, 0); + assert!(value == expected_value, 0); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/prover.move b/external-crates/move/tooling/tree-sitter/tests/prover.move new file mode 100644 index 0000000000000..319fd8809b0a5 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/prover.move @@ -0,0 +1,77 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::prover { + use sui::object; + + #[allow(unused_const)] + const OWNED: u64 = 1; + #[allow(unused_const)] + const SHARED: u64 = 2; + #[allow(unused_const)] + const IMMUTABLE: u64 = 3; + + // "public" functions to be used in specs as an equivalent of core Prover's builtins + + /// Verifies if a given object it owned. + spec fun owned(obj: T): bool { + let addr = object::id(obj).bytes; + exists(addr) && + global(addr).status == OWNED + } + + /// Verifies if a given object is owned. + spec fun owned_by(obj: T, owner: address): bool { + let addr = object::id(obj).bytes; + exists(addr) && + global(addr).status == OWNED && + global(addr).owner == owner + } + + /// Verifies if a given object is shared. + spec fun shared(obj: T): bool { + let addr = object::id(obj).bytes; + exists(addr) && + global(addr).status == SHARED + } + + /// Verifies if a given object is immutable. + spec fun immutable(obj: T): bool { + let addr = object::id(obj).bytes; + exists(addr) && + global(addr).status == IMMUTABLE + } + + /// Verifies if a given object has field with a given name. + spec fun has_field(obj: T, name: K): bool { + let uid = object::borrow_uid(obj); + uid_has_field(uid, name) + } + + /// Returns number of K-type fields of a given object. + spec fun num_fields(obj: T): u64 { + let uid = object::borrow_uid(obj); + uid_num_fields(uid) + } + + // "helper" function - may also be used in specs but mostly opaque ones defining behavior of key + // framework functions + + spec fun uid_has_field(uid: sui::object::UID, name: K): bool { + let addr = object::uid_to_address(uid); + exists>(addr) && contains(global>(addr).names, name) + } + + spec fun uid_num_fields(uid: sui::object::UID): u64 { + let addr = object::uid_to_address(uid); + if (!exists>(addr)) { + 0 + } else { + len(global>(addr).names) + } + } + + // remove an element at index from a vector and return the resulting vector (redirects to a + // function in vector theory) + spec native fun vec_remove(v: vector, elem_idx: u64): vector; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/public_space_package.move b/external-crates/move/tooling/tree-sitter/tests/public_space_package.move new file mode 100644 index 0000000000000..b9a4d843d557c --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/public_space_package.move @@ -0,0 +1,7 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::x; + +// mind the gap +public (package) fun function() {} diff --git a/external-crates/move/tooling/tree-sitter/tests/random.move b/external-crates/move/tooling/tree-sitter/tests/random.move new file mode 100644 index 0000000000000..739f660c920c4 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/random.move @@ -0,0 +1,125 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[allow(unused_use)] +// This module provides functionality for generating and using secure randomness. +// +// Randomness is currently write-only, until user-facing API is implemented. +module sui::random { + use std::vector; + use sui::object::{Self, UID}; + use sui::transfer; + use sui::tx_context::{Self, TxContext}; + use sui::versioned::{Self, Versioned}; + + // Sender is not @0x0 the system address. + const ENotSystemAddress: u64 = 0; + const EWrongInnerVersion: u64 = 1; + const EInvalidRandomnessUpdate: u64 = 2; + + const CURRENT_VERSION: u64 = 1; + + /// Singleton shared object which stores the global randomness state. + /// The actual state is stored in a versioned inner field. + struct Random has key { + id: UID, + inner: Versioned, + } + + struct RandomInner has store { + version: u64, + + epoch: u64, + randomness_round: u64, + random_bytes: vector, + } + + #[allow(unused_function)] + /// Create and share the Random object. This function is called exactly once, when + /// the Random object is first created. + /// Can only be called by genesis or change_epoch transactions. + fun create(ctx: &mut TxContext) { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + let version = CURRENT_VERSION; + + let inner = RandomInner { + version, + epoch: tx_context::epoch(ctx), + randomness_round: 0, + random_bytes: vector[], + }; + + let self = Random { + id: object::randomness_state(), + inner: versioned::create(version, inner, ctx), + }; + transfer::share_object(self); + } + + #[test_only] + public fun create_for_testing(ctx: &mut TxContext) { + create(ctx); + } + + fun load_inner_mut( + self: &mut Random, + ): &mut RandomInner { + let version = versioned::version(&self.inner); + + // Replace this with a lazy update function when we add a new version of the inner object. + assert!(version == CURRENT_VERSION, EWrongInnerVersion); + let inner: &mut RandomInner = versioned::load_value_mut(&mut self.inner); + assert!(inner.version == version, EWrongInnerVersion); + inner + } + + #[allow(unused_function)] // TODO: remove annotation after implementing user-facing API + fun load_inner( + self: &Random, + ): &RandomInner { + let version = versioned::version(&self.inner); + + // Replace this with a lazy update function when we add a new version of the inner object. + assert!(version == CURRENT_VERSION, EWrongInnerVersion); + let inner: &RandomInner = versioned::load_value(&self.inner); + assert!(inner.version == version, EWrongInnerVersion); + inner + } + + #[allow(unused_function)] + /// Record new randomness. Called when executing the RandomnessStateUpdate system + /// transaction. + fun update_randomness_state( + self: &mut Random, + new_round: u64, + new_bytes: vector, + ctx: &TxContext, + ) { + // Validator will make a special system call with sender set as 0x0. + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + + // Randomness should only be incremented. + let epoch = tx_context::epoch(ctx); + let inner = load_inner_mut(self); + assert!( + (epoch == inner.epoch + 1 && inner.randomness_round == 0) || + (new_round == inner.randomness_round + 1), + EInvalidRandomnessUpdate + ); + + inner.epoch = tx_context::epoch(ctx); + inner.randomness_round = new_round; + inner.random_bytes = new_bytes; + } + + #[test_only] + public fun update_randomness_state_for_testing( + self: &mut Random, + new_round: u64, + new_bytes: vector, + ctx: &TxContext, + ) { + update_randomness_state(self, new_round, new_bytes, ctx); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/raw_aborts.move b/external-crates/move/tooling/tree-sitter/tests/raw_aborts.move new file mode 100644 index 0000000000000..9ace0da6def8b --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/raw_aborts.move @@ -0,0 +1,12 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module a::aborts; + +fun test_unable_to_destroy_non_zero() { + abort; + + abort abort abort; + + abort +} diff --git a/external-crates/move/tooling/tree-sitter/tests/simple_module.move b/external-crates/move/tooling/tree-sitter/tests/simple_module.move new file mode 100644 index 0000000000000..f6fd663da9e07 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/simple_module.move @@ -0,0 +1,17 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module sui::foo { + public struct Bar { x: u64 } + + fun f() { } + + fun g(x: u64): u64 { x } + + fun h(x: Bar): u64 { x.x } + + fun j(x: Bar): u64 { + let mut x = x.x(); + x.foo!() + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/string.move b/external-crates/move/tooling/tree-sitter/tests/string.move new file mode 100644 index 0000000000000..7ba7eb7f648e4 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/string.move @@ -0,0 +1,110 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// The `string` module defines the `String` type which represents UTF8 encoded strings. +module std::string { + use std::ascii; + use std::vector; + use std::option::{Self, Option}; + + /// An invalid UTF8 encoding. + const EINVALID_UTF8: u64 = 1; + + /// Index out of range. + const EINVALID_INDEX: u64 = 2; + + /// A `String` holds a sequence of bytes which is guaranteed to be in utf8 format. + struct String has copy, drop, store { + bytes: vector, + } + + /// Creates a new string from a sequence of bytes. Aborts if the bytes do not represent valid utf8. + public fun utf8(bytes: vector): String { + assert!(internal_check_utf8(&bytes), EINVALID_UTF8); + String{bytes} + } + + /// Convert an ASCII string to a UTF8 string + public fun from_ascii(s: ascii::String): String { + String { bytes: ascii::into_bytes(s) } + } + + /// Convert an UTF8 string to an ASCII string. + /// Aborts if `s` is not valid ASCII + public fun to_ascii(s: String): ascii::String { + let String { bytes } = s; + ascii::string(bytes) + } + + /// Tries to create a new string from a sequence of bytes. + public fun try_utf8(bytes: vector): Option { + if (internal_check_utf8(&bytes)) { + option::some(String{bytes}) + } else { + option::none() + } + } + + /// Returns a reference to the underlying byte vector. + public fun bytes(s: &String): &vector { + &s.bytes + } + + /// Checks whether this string is empty. + public fun is_empty(s: &String): bool { + vector::is_empty(&s.bytes) + } + + /// Returns the length of this string, in bytes. + public fun length(s: &String): u64 { + vector::length(&s.bytes) + } + + /// Appends a string. + public fun append(s: &mut String, r: String) { + vector::append(&mut s.bytes, r.bytes) + } + + /// Appends bytes which must be in valid utf8 format. + public fun append_utf8(s: &mut String, bytes: vector) { + append(s, utf8(bytes)) + } + + /// Insert the other string at the byte index in given string. The index must be at a valid utf8 char + /// boundary. + public fun insert(s: &mut String, at: u64, o: String) { + let bytes = &s.bytes; + assert!(at <= vector::length(bytes) && internal_is_char_boundary(bytes, at), EINVALID_INDEX); + let l = length(s); + let front = sub_string(s, 0, at); + let end = sub_string(s, at, l); + append(&mut front, o); + append(&mut front, end); + *s = front; + } + + /// Returns a sub-string using the given byte indices, where `i` is the first byte position and `j` is the start + /// of the first byte not included (or the length of the string). The indices must be at valid utf8 char boundaries, + /// guaranteeing that the result is valid utf8. + public fun sub_string(s: &String, i: u64, j: u64): String { + let bytes = &s.bytes; + let l = vector::length(bytes); + assert!( + j <= l && i <= j && internal_is_char_boundary(bytes, i) && internal_is_char_boundary(bytes, j), + EINVALID_INDEX + ); + String{bytes: internal_sub_string(bytes, i, j)} + } + + /// Computes the index of the first occurrence of a string. Returns `length(s)` if no occurrence found. + public fun index_of(s: &String, r: &String): u64 { + internal_index_of(&s.bytes, &r.bytes) + } + + + // Native API + native fun internal_check_utf8(v: &vector): bool; + native fun internal_is_char_boundary(v: &vector, i: u64): bool; + native fun internal_sub_string(v: &vector, i: u64, j: u64): vector; + native fun internal_index_of(v: &vector, r: &vector): u64; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/sui.move b/external-crates/move/tooling/tree-sitter/tests/sui.move new file mode 100644 index 0000000000000..51a1ef560c388 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/sui.move @@ -0,0 +1,59 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Coin is the token used to pay for gas in Sui. +/// It has 9 decimals, and the smallest unit (10^-9) is called "mist". +module sui::sui { + use std::option; + use sui::tx_context::{Self, TxContext}; + use sui::balance::{Self, Balance}; + use sui::transfer; + use sui::coin; + + const EAlreadyMinted: u64 = 0; + /// Sender is not @0x0 the system address. + const ENotSystemAddress: u64 = 1; + + #[allow(unused_const)] + /// The amount of Mist per Sui token based on the the fact that mist is + /// 10^-9 of a Sui token + const MIST_PER_SUI: u64 = 1_000_000_000; + + #[allow(unused_const)] + /// The total supply of Sui denominated in whole Sui tokens (10 Billion) + const TOTAL_SUPPLY_SUI: u64 = 10_000_000_000; + + /// The total supply of Sui denominated in Mist (10 Billion * 10^9) + const TOTAL_SUPPLY_MIST: u64 = 10_000_000_000_000_000_000; + + /// Name of the coin + struct SUI has drop {} + + #[allow(unused_function)] + /// Register the `SUI` Coin to acquire its `Supply`. + /// This should be called only once during genesis creation. + fun new(ctx: &mut TxContext): Balance { + assert!(tx_context::sender(ctx) == @0x0, ENotSystemAddress); + assert!(tx_context::epoch(ctx) == 0, EAlreadyMinted); + + let (treasury, metadata) = coin::create_currency( + SUI {}, + 9, + b"SUI", + b"Sui", + // TODO: add appropriate description and logo url + b"", + option::none(), + ctx + ); + transfer::public_freeze_object(metadata); + let supply = coin::treasury_into_supply(treasury); + let total_sui = balance::increase_supply(&mut supply, TOTAL_SUPPLY_MIST); + balance::destroy_supply(supply); + total_sui + } + + public entry fun transfer(c: coin::Coin, recipient: address) { + transfer::public_transfer(c, recipient) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/table.move b/external-crates/move/tooling/tree-sitter/tests/table.move new file mode 100644 index 0000000000000..097cc9a9fc983 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/table.move @@ -0,0 +1,102 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// A table is a map-like collection. But unlike a traditional collection, it's keys and values are +/// not stored within the `Table` value, but instead are stored using Sui's object system. The +/// `Table` struct acts only as a handle into the object system to retrieve those keys and values. +/// Note that this means that `Table` values with exactly the same key-value mapping will not be +/// equal, with `==`, at runtime. For example +/// ``` +/// let table1 = table::new(); +/// let table2 = table::new(); +/// table::add(&mut table1, 0, false); +/// table::add(&mut table1, 1, true); +/// table::add(&mut table2, 0, false); +/// table::add(&mut table2, 1, true); +/// // table1 does not equal table2, despite having the same entries +/// assert!(&table1 != &table2, 0); +/// ``` +module sui::table { + use sui::object::{Self, UID}; + use sui::dynamic_field as field; + use sui::tx_context::TxContext; + + // Attempted to destroy a non-empty table + const ETableNotEmpty: u64 = 0; + + struct Table has key, store { + /// the ID of this table + id: UID, + /// the number of key-value pairs in the table + size: u64, + } + + /// Creates a new, empty table + public fun new(ctx: &mut TxContext): Table { + Table { + id: object::new(ctx), + size: 0, + } + } + + /// Adds a key-value pair to the table `table: &mut Table` + /// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the table already has an entry with + /// that key `k: K`. + public fun add(table: &mut Table, k: K, v: V) { + field::add(&mut table.id, k, v); + table.size = table.size + 1; + } + + /// Immutable borrows the value associated with the key in the table `table: &Table`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun borrow(table: &Table, k: K): &V { + field::borrow(&table.id, k) + } + + /// Mutably borrows the value associated with the key in the table `table: &mut Table`. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun borrow_mut(table: &mut Table, k: K): &mut V { + field::borrow_mut(&mut table.id, k) + } + + /// Removes the key-value pair in the table `table: &mut Table` and returns the value. + /// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with + /// that key `k: K`. + public fun remove(table: &mut Table, k: K): V { + let v = field::remove(&mut table.id, k); + table.size = table.size - 1; + v + } + + /// Returns true iff there is a value associated with the key `k: K` in table `table: &Table` + public fun contains(table: &Table, k: K): bool { + field::exists_with_type(&table.id, k) + } + + /// Returns the size of the table, the number of key-value pairs + public fun length(table: &Table): u64 { + table.size + } + + /// Returns true iff the table is empty (if `length` returns `0`) + public fun is_empty(table: &Table): bool { + table.size == 0 + } + + /// Destroys an empty table + /// Aborts with `ETableNotEmpty` if the table still contains values + public fun destroy_empty(table: Table) { + let Table { id, size } = table; + assert!(size == 0, ETableNotEmpty); + object::delete(id) + } + + /// Drop a possibly non-empty table. + /// Usable only if the value type `V` has the `drop` ability + public fun drop(table: Table) { + let Table { id, size: _ } = table; + object::delete(id) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/table_vec.move b/external-crates/move/tooling/tree-sitter/tests/table_vec.move new file mode 100644 index 0000000000000..a3ab65c994849 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/table_vec.move @@ -0,0 +1,105 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// A basic scalable vector library implemented using `Table`. +module sui::table_vec { + use sui::table::{Self, Table}; + use sui::tx_context::TxContext; + + struct TableVec has store { + /// The contents of the table vector. + contents: Table, + } + + const EIndexOutOfBound: u64 = 0; + const ETableNonEmpty: u64 = 1; + + /// Create an empty TableVec. + public fun empty(ctx: &mut TxContext): TableVec { + TableVec { + contents: table::new(ctx) + } + } + + /// Return a TableVec of size one containing element `e`. + public fun singleton(e: Element, ctx: &mut TxContext): TableVec { + let mut t = empty(ctx); + push_back(&mut t, e); + t + } + + /// Return the length of the TableVec. + public fun length(t: &TableVec): u64 { + table::length(&t.contents) + } + + /// Return if the TableVec is empty or not. + public fun is_empty(t: &TableVec): bool { + length(t) == 0 + } + + /// Acquire an immutable reference to the `i`th element of the TableVec `t`. + /// Aborts if `i` is out of bounds. + public fun borrow(t: &TableVec, i: u64): &Element { + assert!(length(t) > i, EIndexOutOfBound); + table::borrow(&t.contents, i) + } + + /// Add element `e` to the end of the TableVec `t`. + public fun push_back(t: &mut TableVec, e: Element) { + let key = length(t); + table::add(&mut t.contents, key, e); + } + + /// Return a mutable reference to the `i`th element in the TableVec `t`. + /// Aborts if `i` is out of bounds. + public fun borrow_mut(t: &mut TableVec, i: u64): &mut Element { + assert!(length(t) > i, EIndexOutOfBound); + table::borrow_mut(&mut t.contents, i) + } + + /// Pop an element from the end of TableVec `t`. + /// Aborts if `t` is empty. + public fun pop_back(t: &mut TableVec): Element { + let length = length(t); + assert!(length > 0, EIndexOutOfBound); + table::remove(&mut t.contents, length - 1) + } + + /// Destroy the TableVec `t`. + /// Aborts if `t` is not empty. + public fun destroy_empty(t: TableVec) { + assert!(length(&t) == 0, ETableNonEmpty); + let TableVec { contents } = t; + table::destroy_empty(contents); + } + + /// Drop a possibly non-empty TableVec `t`. + /// Usable only if the value type `Element` has the `drop` ability + public fun drop(t: TableVec) { + let TableVec { contents } = t; + table::drop(contents) + } + + /// Swaps the elements at the `i`th and `j`th indices in the TableVec `t`. + /// Aborts if `i` or `j` is out of bounds. + public fun swap(t: &mut TableVec, i: u64, j: u64) { + assert!(length(t) > i, EIndexOutOfBound); + assert!(length(t) > j, EIndexOutOfBound); + if (i == j) { return }; + let element_i = table::remove(&mut t.contents, i); + let element_j = table::remove(&mut t.contents, j); + table::add(&mut t.contents, j, element_i); + table::add(&mut t.contents, i, element_j); + } + + /// Swap the `i`th element of the TableVec `t` with the last element and then pop the TableVec. + /// This is O(1), but does not preserve ordering of elements in the TableVec. + /// Aborts if `i` is out of bounds. + public fun swap_remove(t: &mut TableVec, i: u64): Element { + assert!(length(t) > i, EIndexOutOfBound); + let last_idx = length(t) - 1; + swap(t, i, last_idx); + pop_back(t) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/token.move b/external-crates/move/tooling/tree-sitter/tests/token.move new file mode 100644 index 0000000000000..0c5b3bdaf0fca --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/token.move @@ -0,0 +1,733 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// The Token module which implements a Closed Loop Token with a configurable +/// policy. The policy is defined by a set of rules that must be satisfied for +/// an action to be performed on the token. +/// +/// The module is designed to be used with a `TreasuryCap` to allow for minting +/// and burning of the `Token`s. And can act as a replacement / extension or a +/// companion to existing open-loop (`Coin`) systems. +/// +/// ``` +/// Module: sui::balance sui::coin sui::token +/// Main type: Balance Coin Token +/// Capability: Supply <----> TreasuryCap <----> TreasuryCap +/// Abilities: store key + store key +/// ``` +/// +/// The Token system allows for fine-grained control over the actions performed +/// on the token. And hence it is highly suitable for applications that require +/// control over the currency which a simple open-loop system can't provide. +module sui::token { + use std::vector; + use std::string::{Self, String}; + use std::option::{Self, Option}; + use std::type_name::{Self, TypeName}; + use sui::tx_context::{Self, TxContext}; + use sui::coin::{Self, Coin, TreasuryCap}; + use sui::balance::{Self, Balance}; + use sui::object::{Self, ID, UID}; + use sui::vec_map::{Self, VecMap}; + use sui::vec_set::{Self, VecSet}; + use sui::dynamic_field as df; + use sui::transfer; + + /// The action is not allowed (defined) in the policy. + const EUnknownAction: u64 = 0; + /// The rule was not approved. + const ENotApproved: u64 = 1; + /// Trying to perform an admin action with a wrong cap. + const ENotAuthorized: u64 = 2; + /// The balance is too low to perform the action. + const EBalanceTooLow: u64 = 3; + /// The balance is not zero. + const ENotZero: u64 = 4; + /// The balance is not zero when trying to confirm with `TransferPolicyCap`. + const ECantConsumeBalance: u64 = 5; + /// Rule is trying to access a missing config (with type). + const ENoConfig: u64 = 6; + /// Using `confirm_request_mut` without `spent_balance`. Immutable version + /// of the function must be used instead. + const EUseImmutableConfirm: u64 = 7; + + // === Protected Actions === + + /// A Tag for the `spend` action. + const SPEND: vector = b"spend"; + /// A Tag for the `transfer` action. + const TRANSFER: vector = b"transfer"; + /// A Tag for the `to_coin` action. + const TO_COIN: vector = b"to_coin"; + /// A Tag for the `from_coin` action. + const FROM_COIN: vector = b"from_coin"; + + /// A single `Token` with `Balance` inside. Can only be owned by an address, + /// and actions performed on it must be confirmed in a matching `TokenPolicy`. + struct Token has key { + id: UID, + /// The Balance of the `Token`. + balance: Balance, + } + + /// A Capability that manages a single `TokenPolicy` specified in the `for` + /// field. Created together with `TokenPolicy` in the `new` function. + struct TokenPolicyCap has key, store { id: UID, for: ID } + + /// `TokenPolicy` represents a set of rules that define what actions can be + /// performed on a `Token` and which `Rules` must be satisfied for the + /// action to succeed. + /// + /// - For the sake of availability, `TokenPolicy` is a `key`-only object. + /// - Each `TokenPolicy` is managed by a matching `TokenPolicyCap`. + /// - For an action to become available, there needs to be a record in the + /// `rules` VecMap. To allow an action to be performed freely, there's an + /// `allow` function that can be called by the `TokenPolicyCap` owner. + struct TokenPolicy has key { + id: UID, + /// The balance that is effectively spent by the user on the "spend" + /// action. However, actual decrease of the supply can only be done by + /// the `TreasuryCap` owner when `flush` is called. + /// + /// This balance is effectively spent and cannot be accessed by anyone + /// but the `TreasuryCap` owner. + spent_balance: Balance, + /// The set of rules that define what actions can be performed on the + /// token. For each "action" there's a set of Rules that must be + /// satisfied for the `ActionRequest` to be confirmed. + rules: VecMap> + } + + /// A request to perform an "Action" on a token. Stores the information + /// about the action to be performed and must be consumed by the `confirm_request` + /// or `confirm_request_mut` functions when the Rules are satisfied. + struct ActionRequest { + /// Name of the Action to look up in the Policy. Name can be one of the + /// default actions: `transfer`, `spend`, `to_coin`, `from_coin` or a + /// custom action. + name: String, + /// Amount is present in all of the txs + amount: u64, + /// Sender is a permanent field always + sender: address, + /// Recipient is only available in `transfer` action. + recipient: Option
, + /// The balance to be "spent" in the `TokenPolicy`, only available + /// in the `spend` action. + spent_balance: Option>, + /// Collected approvals (stamps) from completed `Rules`. They're matched + /// against `TokenPolicy.rules` to determine if the request can be + /// confirmed. + approvals: VecSet, + } + + /// Dynamic field key for the `TokenPolicy` to store the `Config` for a + /// specific action `Rule`. There can be only one configuration per + /// `Rule` per `TokenPolicy`. + struct RuleKey has store, copy, drop { is_protected: bool } + + /// Create a new `TokenPolicy` and a matching `TokenPolicyCap`. + /// The `TokenPolicy` must then be shared using the `share_policy` method. + /// + /// `TreasuryCap` guarantees full ownership over the currency, and is unique, + /// hence it is safe to use it for authorization. + public fun new( + _treasury_cap: &TreasuryCap, ctx: &mut TxContext + ): (TokenPolicy, TokenPolicyCap) { + let policy = TokenPolicy { + id: object::new(ctx), + spent_balance: balance::zero(), + rules: vec_map::empty() + }; + + let cap = TokenPolicyCap { + id: object::new(ctx), + for: object::id(&policy) + }; + + (policy, cap) + } + + #[lint_allow(share_owned)] + /// Share the `TokenPolicy`. Due to `key`-only restriction, it must be + /// shared after initialization. + public fun share_policy(policy: TokenPolicy) { + transfer::share_object(policy) + } + + // === Protected Actions === + + /// Transfer a `Token` to a `recipient`. Creates an `ActionRequest` for the + /// "transfer" action. The `ActionRequest` contains the `recipient` field + /// to be used in verification. + public fun transfer( + t: Token, recipient: address, ctx: &mut TxContext + ): ActionRequest { + let amount = balance::value(&t.balance); + transfer::transfer(t, recipient); + + new_request( + transfer_action(), + amount, + option::some(recipient), + option::none(), + ctx + ) + } + + /// Spend a `Token` by unwrapping it and storing the `Balance` in the + /// `ActionRequest` for the "spend" action. The `ActionRequest` contains + /// the `spent_balance` field to be used in verification. + /// + /// Spend action requires `confirm_request_mut` to be called to confirm the + /// request and join the spent balance with the `TokenPolicy.spent_balance`. + public fun spend(t: Token, ctx: &mut TxContext): ActionRequest { + let Token { id, balance } = t; + object::delete(id); + + new_request( + spend_action(), + balance::value(&balance), + option::none(), + option::some(balance), + ctx + ) + } + + /// Convert `Token` into an open `Coin`. Creates an `ActionRequest` for the + /// "to_coin" action. + public fun to_coin( + t: Token, ctx: &mut TxContext + ): (Coin, ActionRequest) { + let Token { id, balance } = t; + let amount = balance::value(&balance); + object::delete(id); + + ( + coin::from_balance(balance, ctx), + new_request( + to_coin_action(), + amount, + option::none(), + option::none(), + ctx + ) + ) + } + + /// Convert an open `Coin` into a `Token`. Creates an `ActionRequest` for + /// the "from_coin" action. + public fun from_coin( + coin: Coin, ctx: &mut TxContext + ): (Token, ActionRequest) { + let amount = coin::value(&coin); + let token = Token { + id: object::new(ctx), + balance: coin::into_balance(coin) + }; + + ( + token, + new_request( + from_coin_action(), + amount, + option::none(), + option::none(), + ctx + ) + ) + } + + // === Public Actions === + + /// Join two `Token`s into one, always available. + public fun join(token: &mut Token, another: Token) { + let Token { id, balance } = another; + balance::join(&mut token.balance, balance); + object::delete(id); + } + + /// Split a `Token` with `amount`. + /// Aborts if the `Token.balance` is lower than `amount`. + public fun split( + token: &mut Token, amount: u64, ctx: &mut TxContext + ): Token { + assert!(balance::value(&token.balance) >= amount, EBalanceTooLow); + Token { + id: object::new(ctx), + balance: balance::split(&mut token.balance, amount), + } + } + + /// Create a zero `Token`. + public fun zero(ctx: &mut TxContext): Token { + Token { + id: object::new(ctx), + balance: balance::zero(), + } + } + + /// Destroy an empty `Token`, fails if the balance is non-zero. + /// Aborts if the `Token.balance` is not zero. + public fun destroy_zero(token: Token) { + let Token { id, balance } = token; + assert!(balance::value(&balance) == 0, ENotZero); + balance::destroy_zero(balance); + object::delete(id); + } + + #[lint_allow(self_transfer)] + /// Transfer the `Token` to the transaction sender. + public fun keep(token: Token, ctx: &mut TxContext) { + transfer::transfer(token, tx_context::sender(ctx)) + } + + // === Request Handling === + + /// Create a new `ActionRequest`. + /// Publicly available method to allow for custom actions. + public fun new_request( + name: String, + amount: u64, + recipient: Option
, + spent_balance: Option>, + ctx: &TxContext + ): ActionRequest { + ActionRequest { + name, + amount, + recipient, + spent_balance, + sender: tx_context::sender(ctx), + approvals: vec_set::empty(), + } + } + + /// Confirm the request against the `TokenPolicy` and return the parameters + /// of the request: (Name, Amount, Sender, Recipient). + /// + /// Cannot be used for `spend` and similar actions that deliver `spent_balance` + /// to the `TokenPolicy`. For those actions use `confirm_request_mut`. + /// + /// Aborts if: + /// - the action is not allowed (missing record in `rules`) + /// - action contains `spent_balance` (use `confirm_request_mut`) + /// - the `ActionRequest` does not meet the `TokenPolicy` rules for the action + public fun confirm_request( + policy: &TokenPolicy, + request: ActionRequest, + _ctx: &mut TxContext + ): (String, u64, address, Option
) { + assert!(option::is_none(&request.spent_balance), ECantConsumeBalance); + assert!(vec_map::contains(&policy.rules, &request.name), EUnknownAction); + + let ActionRequest { + name, approvals, + spent_balance, + amount, sender, recipient, + } = request; + + option::destroy_none(spent_balance); + + let rules = &vec_set::into_keys(*vec_map::get(&policy.rules, &name)); + let rules_len = vector::length(rules); + let i = 0; + + while (i < rules_len) { + let rule = vector::borrow(rules, i); + assert!(vec_set::contains(&approvals, rule), ENotApproved); + i = i + 1; + }; + + (name, amount, sender, recipient) + } + + /// Confirm the request against the `TokenPolicy` and return the parameters + /// of the request: (Name, Amount, Sender, Recipient). + /// + /// Unlike `confirm_request` this function requires mutable access to the + /// `TokenPolicy` and must be used on `spend` action. After dealing with the + /// spent balance it calls `confirm_request` internally. + /// + /// See `confirm_request` for the list of abort conditions. + public fun confirm_request_mut( + policy: &mut TokenPolicy, + request: ActionRequest, + ctx: &mut TxContext + ): (String, u64, address, Option
) { + assert!(vec_map::contains(&policy.rules, &request.name), EUnknownAction); + assert!(option::is_some(&request.spent_balance), EUseImmutableConfirm); + + balance::join( + &mut policy.spent_balance, + option::extract(&mut request.spent_balance) + ); + + confirm_request(policy, request, ctx) + } + + /// Confirm an `ActionRequest` as the `TokenPolicyCap` owner. This function + /// allows `TokenPolicy` owner to perform Capability-gated actions ignoring + /// the ruleset specified in the `TokenPolicy`. + /// + /// Aborts if request contains `spent_balance` due to inability of the + /// `TokenPolicyCap` to decrease supply. For scenarios like this a + /// `TreasuryCap` is required (see `confirm_with_treasury_cap`). + public fun confirm_with_policy_cap( + _policy_cap: &TokenPolicyCap, + request: ActionRequest, + _ctx: &mut TxContext + ): (String, u64, address, Option
) { + assert!(option::is_none(&request.spent_balance), ECantConsumeBalance); + + let ActionRequest { + name, amount, sender, recipient, approvals: _, spent_balance + } = request; + + option::destroy_none(spent_balance); + + (name, amount, sender, recipient) + } + + /// Confirm an `ActionRequest` as the `TreasuryCap` owner. This function + /// allows `TreasuryCap` owner to perform Capability-gated actions ignoring + /// the ruleset specified in the `TokenPolicy`. + /// + /// Unlike `confirm_with_policy_cap` this function allows `spent_balance` + /// to be consumed, decreasing the `total_supply` of the `Token`. + public fun confirm_with_treasury_cap( + treasury_cap: &mut TreasuryCap, + request: ActionRequest, + _ctx: &mut TxContext + ): (String, u64, address, Option
) { + let ActionRequest { + name, amount, sender, recipient, approvals: _, + spent_balance + } = request; + + if (option::is_some(&spent_balance)) { + balance::decrease_supply( + coin::supply_mut(treasury_cap), + option::destroy_some(spent_balance) + ); + } else { + option::destroy_none(spent_balance); + }; + + (name, amount, sender, recipient) + } + + // === Rules API === + + /// Add an "approval" to the `ActionRequest` by providing a Witness. + /// Intended to be used by Rules to add their own approvals, however, can + /// be used to add arbitrary approvals to the request (not only the ones + /// required by the `TokenPolicy`). + public fun add_approval( + _t: W, request: &mut ActionRequest, _ctx: &mut TxContext + ) { + vec_set::insert(&mut request.approvals, type_name::get()) + } + + /// Add a `Config` for a `Rule` in the `TokenPolicy`. Rule configuration is + /// independent from the `TokenPolicy.rules` and needs to be managed by the + /// Rule itself. Configuration is stored per `Rule` and not per `Rule` per + /// `Action` to allow reuse in different actions. + /// + /// - Rule witness guarantees that the `Config` is approved by the Rule. + /// - `TokenPolicyCap` guarantees that the `Config` setup is initiated by + /// the `TokenPolicy` owner. + public fun add_rule_config( + _rule: Rule, + self: &mut TokenPolicy, + cap: &TokenPolicyCap, + config: Config, + _ctx: &mut TxContext + ) { + assert!(object::id(self) == cap.for, ENotAuthorized); + df::add(&mut self.id, key(), config) + } + + /// Get a `Config` for a `Rule` in the `TokenPolicy`. Requires `Rule` + /// witness, hence can only be read by the `Rule` itself. This requirement + /// guarantees safety of the stored `Config` and allows for simpler dynamic + /// field management inside the Rule Config (custom type keys are not needed + /// for access gating). + /// + /// Aborts if the Config is not present. + public fun rule_config( + _rule: Rule, self: &TokenPolicy + ): &Config { + assert!(has_rule_config_with_type(self), ENoConfig); + df::borrow(&self.id, key()) + } + + /// Get mutable access to the `Config` for a `Rule` in the `TokenPolicy`. + /// Requires `Rule` witness, hence can only be read by the `Rule` itself, + /// as well as `TokenPolicyCap` to guarantee that the `TokenPolicy` owner + /// is the one who initiated the `Config` modification. + /// + /// Aborts if: + /// - the Config is not present + /// - `TokenPolicyCap` is not matching the `TokenPolicy` + public fun rule_config_mut( + _rule: Rule, self: &mut TokenPolicy, cap: &TokenPolicyCap + ): &mut Config { + assert!(has_rule_config_with_type(self), ENoConfig); + assert!(object::id(self) == cap.for, ENotAuthorized); + df::borrow_mut(&mut self.id, key()) + } + + /// Remove a `Config` for a `Rule` in the `TokenPolicy`. + /// Unlike the `add_rule_config`, this function does not require a `Rule` + /// witness, hence can be performed by the `TokenPolicy` owner on their own. + /// + /// Rules need to make sure that the `Config` is present when performing + /// verification of the `ActionRequest`. + /// + /// Aborts if: + /// - the Config is not present + /// - `TokenPolicyCap` is not matching the `TokenPolicy` + public fun remove_rule_config( + self: &mut TokenPolicy, + cap: &TokenPolicyCap, + _ctx: &mut TxContext + ): Config { + assert!(has_rule_config_with_type(self), ENoConfig); + assert!(object::id(self) == cap.for, ENotAuthorized); + df::remove(&mut self.id, key()) + } + + /// Check if a config for a `Rule` is set in the `TokenPolicy` without + /// checking the type of the `Config`. + public fun has_rule_config(self: &TokenPolicy): bool { + df::exists_>(&self.id, key()) + } + + /// Check if a `Config` for a `Rule` is set in the `TokenPolicy` and that + /// it matches the type provided. + public fun has_rule_config_with_type( + self: &TokenPolicy + ): bool { + df::exists_with_type, Config>(&self.id, key()) + } + + // === Protected: Setting Rules === + + /// Allows an `action` to be performed on the `Token` freely by adding an + /// empty set of `Rules` for the `action`. + /// + /// Aborts if the `TokenPolicyCap` is not matching the `TokenPolicy`. + public fun allow( + self: &mut TokenPolicy, + cap: &TokenPolicyCap, + action: String, + _ctx: &mut TxContext + ) { + assert!(object::id(self) == cap.for, ENotAuthorized); + vec_map::insert(&mut self.rules, action, vec_set::empty()); + } + + /// Completely disallows an `action` on the `Token` by removing the record + /// from the `TokenPolicy.rules`. + /// + /// Aborts if the `TokenPolicyCap` is not matching the `TokenPolicy`. + public fun disallow( + self: &mut TokenPolicy, + cap: &TokenPolicyCap, + action: String, + _ctx: &mut TxContext + ) { + assert!(object::id(self) == cap.for, ENotAuthorized); + vec_map::remove(&mut self.rules, &action); + } + + /// Adds a Rule for an action with `name` in the `TokenPolicy`. + /// + /// Aborts if the `TokenPolicyCap` is not matching the `TokenPolicy`. + public fun add_rule_for_action( + self: &mut TokenPolicy, + cap: &TokenPolicyCap, + action: String, + ctx: &mut TxContext + ) { + assert!(object::id(self) == cap.for, ENotAuthorized); + if (!vec_map::contains(&self.rules, &action)) { + allow(self, cap, action, ctx); + }; + + vec_set::insert( + vec_map::get_mut(&mut self.rules, &action), + type_name::get() + ) + } + + /// Removes a rule for an action with `name` in the `TokenPolicy`. Returns + /// the config object to be handled by the sender (or a Rule itself). + /// + /// Aborts if the `TokenPolicyCap` is not matching the `TokenPolicy`. + public fun remove_rule_for_action( + self: &mut TokenPolicy, + cap: &TokenPolicyCap, + action: String, + _ctx: &mut TxContext + ) { + assert!(object::id(self) == cap.for, ENotAuthorized); + + vec_set::remove( + vec_map::get_mut(&mut self.rules, &action), + &type_name::get() + ) + } + + // === Protected: Treasury Management === + + /// Mint a `Token` with a given `amount` using the `TreasuryCap`. + public fun mint( + cap: &mut TreasuryCap, amount: u64, ctx: &mut TxContext + ): Token { + let balance = balance::increase_supply(coin::supply_mut(cap), amount); + Token { id: object::new(ctx), balance } + } + + /// Burn a `Token` using the `TreasuryCap`. + public fun burn(cap: &mut TreasuryCap, token: Token) { + let Token { id, balance } = token; + balance::decrease_supply(coin::supply_mut(cap), balance); + object::delete(id); + } + + /// Flush the `TokenPolicy.spent_balance` into the `TreasuryCap`. This + /// action is only available to the `TreasuryCap` owner. + public fun flush( + self: &mut TokenPolicy, + cap: &mut TreasuryCap, + _ctx: &mut TxContext + ): u64 { + let amount = balance::value(&self.spent_balance); + let balance = balance::split(&mut self.spent_balance, amount); + balance::decrease_supply(coin::supply_mut(cap), balance) + } + + // === Getters: `TokenPolicy` and `Token` === + + /// Check whether an action is present in the rules VecMap. + public fun is_allowed(self: &TokenPolicy, action: &String): bool { + vec_map::contains(&self.rules, action) + } + + /// Returns the rules required for a specific action. + public fun rules( + self: &TokenPolicy, action: &String + ): VecSet { + *vec_map::get(&self.rules, action) + } + + /// Returns the `spent_balance` of the `TokenPolicy`. + public fun spent_balance(self: &TokenPolicy): u64 { + balance::value(&self.spent_balance) + } + + /// Returns the `balance` of the `Token`. + public fun value(t: &Token): u64 { + balance::value(&t.balance) + } + + // === Action Names === + + /// Name of the Transfer action. + public fun transfer_action(): String { string::utf8(TRANSFER) } + + /// Name of the `Spend` action. + public fun spend_action(): String { string::utf8(SPEND) } + + /// Name of the `ToCoin` action. + public fun to_coin_action(): String { string::utf8(TO_COIN) } + + /// Name of the `FromCoin` action. + public fun from_coin_action(): String { string::utf8(FROM_COIN) } + + // === Action Request Fields == + + /// The Action in the `ActionRequest`. + public fun action(self: &ActionRequest): String { self.name } + + /// Amount of the `ActionRequest`. + public fun amount(self: &ActionRequest): u64 { self.amount } + + /// Sender of the `ActionRequest`. + public fun sender(self: &ActionRequest): address { self.sender } + + /// Recipient of the `ActionRequest`. + public fun recipient(self: &ActionRequest): Option
{ + self.recipient + } + + /// Approvals of the `ActionRequest`. + public fun approvals(self: &ActionRequest): VecSet { + self.approvals + } + + /// Burned balance of the `ActionRequest`. + public fun spent(self: &ActionRequest): Option { + if (option::is_some(&self.spent_balance)) { + option::some(balance::value(option::borrow(&self.spent_balance))) + } else { + option::none() + } + } + + // === Internal === + + /// Create a new `RuleKey` for a `Rule`. The `is_protected` field is kept + /// for potential future use, if Rules were to have a freely modifiable + /// storage as addition / replacement for the `Config` system. + /// + /// The goal of `is_protected` is to potentially allow Rules store a mutable + /// version of their configuration and mutate state on user action. + fun key(): RuleKey { RuleKey { is_protected: true } } + + // === Testing === + + #[test_only] + public fun new_policy_for_testing( + ctx: &mut TxContext + ): (TokenPolicy, TokenPolicyCap) { + let policy = TokenPolicy { + id: object::new(ctx), + rules: vec_map::empty(), + spent_balance: balance::zero(), + }; + let cap = TokenPolicyCap { + id: object::new(ctx), + for: object::id(&policy) + }; + + (policy, cap) + } + + #[test_only] + public fun burn_policy_for_testing( + policy: TokenPolicy, + cap: TokenPolicyCap + ) { + let TokenPolicyCap { id: cap_id, for: _ } = cap; + let TokenPolicy { id, rules: _, spent_balance } = policy; + balance::destroy_for_testing(spent_balance); + object::delete(cap_id); + object::delete(id); + } + + #[test_only] + public fun mint_for_testing(amount: u64, ctx: &mut TxContext): Token { + let balance = balance::create_for_testing(amount); + Token { id: object::new(ctx), balance } + } + + #[test_only] + public fun burn_for_testing(token: Token) { + let Token { id, balance } = token; + balance::destroy_for_testing(balance); + object::delete(id); + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/transfer.move b/external-crates/move/tooling/tree-sitter/tests/transfer.move new file mode 100644 index 0000000000000..7de3e8ec6049d --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/transfer.move @@ -0,0 +1,180 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[allow(unused_const)] +module sui::transfer { + + use sui::object::{Self, ID, UID}; + use sui::prover; + + #[test_only] + friend sui::test_scenario; + + /// This represents the ability to `receive` an object of type `T`. + /// This type is ephemeral per-transaction and cannot be stored on-chain. + /// This does not represent the obligation to receive the object that it + /// references, but simply the ability to receive the object with object ID + /// `id` at version `version` if you can prove mutable access to the parent + /// object during the transaction. + /// Internals of this struct are opaque outside this module. + struct Receiving has drop { + id: ID, + version: u64, + } + + /// Shared an object that was previously created. Shared objects must currently + /// be constructed in the transaction they are created. + const ESharedNonNewObject: u64 = 0; + + #[allow(unused_const)] + /// Serialization of the object failed. + const EBCSSerializationFailure: u64 = 1; + + #[allow(unused_const)] + /// The object being received is not of the expected type. + const EReceivingObjectTypeMismatch: u64 = 2; + + #[allow(unused_const)] + /// Represents both the case where the object does not exist and the case where the object is not + /// able to be accessed through the parent that is passed-in. + const EUnableToReceiveObject: u64 = 3; + + #[allow(unused_const)] + /// Shared object operations such as wrapping, freezing, and converting to owned are not allowed. + const ESharedObjectOperationNotSupported: u64 = 4; + + + /// Transfer ownership of `obj` to `recipient`. `obj` must have the `key` attribute, + /// which (in turn) ensures that `obj` has a globally unique ID. Note that if the recipient + /// address represents an object ID, the `obj` sent will be inaccessible after the transfer + /// (though they will be retrievable at a future date once new features are added). + /// This function has custom rules performed by the Sui Move bytecode verifier that ensures + /// that `T` is an object defined in the module where `transfer` is invoked. Use + /// `public_transfer` to transfer an object with `store` outside of its module. + public fun transfer(obj: T, recipient: address) { + transfer_impl(obj, recipient) + } + + /// Transfer ownership of `obj` to `recipient`. `obj` must have the `key` attribute, + /// which (in turn) ensures that `obj` has a globally unique ID. Note that if the recipient + /// address represents an object ID, the `obj` sent will be inaccessible after the transfer + /// (though they will be retrievable at a future date once new features are added). + /// The object must have `store` to be transferred outside of its module. + public fun public_transfer(obj: T, recipient: address) { + transfer_impl(obj, recipient) + } + + /// Freeze `obj`. After freezing `obj` becomes immutable and can no longer be transferred or + /// mutated. + /// This function has custom rules performed by the Sui Move bytecode verifier that ensures + /// that `T` is an object defined in the module where `freeze_object` is invoked. Use + /// `public_freeze_object` to freeze an object with `store` outside of its module. + public fun freeze_object(obj: T) { + freeze_object_impl(obj) + } + + /// Freeze `obj`. After freezing `obj` becomes immutable and can no longer be transferred or + /// mutated. + /// The object must have `store` to be frozen outside of its module. + public fun public_freeze_object(obj: T) { + freeze_object_impl(obj) + } + + /// Turn the given object into a mutable shared object that everyone can access and mutate. + /// This is irreversible, i.e. once an object is shared, it will stay shared forever. + /// Aborts with `ESharedNonNewObject` of the object being shared was not created in this + /// transaction. This restriction may be relaxed in the future. + /// This function has custom rules performed by the Sui Move bytecode verifier that ensures + /// that `T` is an object defined in the module where `share_object` is invoked. Use + /// `public_share_object` to share an object with `store` outside of its module. + public fun share_object(obj: T) { + share_object_impl(obj) + } + + /// Turn the given object into a mutable shared object that everyone can access and mutate. + /// This is irreversible, i.e. once an object is shared, it will stay shared forever. + /// Aborts with `ESharedNonNewObject` of the object being shared was not created in this + /// transaction. This restriction may be relaxed in the future. + /// The object must have `store` to be shared outside of its module. + public fun public_share_object(obj: T) { + share_object_impl(obj) + } + + /// Given mutable (i.e., locked) access to the `parent` and a `Receiving` argument + /// referencing an object of type `T` owned by `parent` use the `to_receive` + /// argument to receive and return the referenced owned object of type `T`. + /// This function has custom rules performed by the Sui Move bytecode verifier that ensures + /// that `T` is an object defined in the module where `receive` is invoked. Use + /// `public_receive` to receivne an object with `store` outside of its module. + public fun receive(parent: &mut UID, to_receive: Receiving): T { + let Receiving { + id, + version, + } = to_receive; + receive_impl(object::uid_to_address(parent), id, version) + } + + /// Given mutable (i.e., locked) access to the `parent` and a `Receiving` argument + /// referencing an object of type `T` owned by `parent` use the `to_receive` + /// argument to receive and return the referenced owned object of type `T`. + /// The object must have `store` to be received outside of its defining module. + public fun public_receive(parent: &mut UID, to_receive: Receiving): T { + let Receiving { + id, + version, + } = to_receive; + receive_impl(object::uid_to_address(parent), id, version) + } + + /// Return the object ID that the given `Receiving` argument references. + public fun receiving_object_id(receiving: &Receiving): ID { + receiving.id + } + + public(friend) native fun freeze_object_impl(obj: T); + + spec freeze_object_impl { + pragma opaque; + // aborts if shared object: + // - it's OK to freeze whether object is fresh or owned + // - immutable object cannot be passed by value + aborts_if [abstract] sui::prover::shared(obj); + modifies [abstract] global(object::id(obj).bytes); + ensures [abstract] exists(object::id(obj).bytes); + ensures [abstract] global(object::id(obj).bytes).status == prover::IMMUTABLE; + } + + public(friend) native fun share_object_impl(obj: T); + + spec share_object_impl { + pragma opaque; + aborts_if [abstract] sui::prover::owned(obj); + modifies [abstract] global(object::id(obj).bytes); + ensures [abstract] exists(object::id(obj).bytes); + ensures [abstract] global(object::id(obj).bytes).status == prover::SHARED; + } + + + public(friend) native fun transfer_impl(obj: T, recipient: address); + + spec transfer_impl { + pragma opaque; + // aborts if shared object: + // - it's OK to transfer whether object is fresh or already owned + // - immutable object cannot be passed by value + aborts_if [abstract] sui::prover::shared(obj); + modifies [abstract] global(object::id(obj).bytes); + ensures [abstract] exists(object::id(obj).bytes); + ensures [abstract] global(object::id(obj).bytes).owner == recipient; + ensures [abstract] global(object::id(obj).bytes).status == prover::OWNED; + } + + native fun receive_impl(parent: address, to_receive: object::ID, version: u64): T; + + spec receive_impl { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/tx_context.move b/external-crates/move/tooling/tree-sitter/tests/tx_context.move new file mode 100644 index 0000000000000..9f67ffeefe3d7 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/tx_context.move @@ -0,0 +1,152 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::tx_context { + + #[test_only] + use std::vector; + + #[test_only] + /// Number of bytes in an tx hash (which will be the transaction digest) + const TX_HASH_LENGTH: u64 = 32; + + #[test_only] + /// Expected an tx hash of length 32, but found a different length + const EBadTxHashLength: u64 = 0; + + #[test_only] + /// Attempt to get the most recent created object ID when none has been created. + const ENoIDsCreated: u64 = 1; + + /// Information about the transaction currently being executed. + /// This cannot be constructed by a transaction--it is a privileged object created by + /// the VM and passed in to the entrypoint of the transaction as `&mut TxContext`. + struct TxContext has drop { + /// The address of the user that signed the current transaction + sender: address, + /// Hash of the current transaction + tx_hash: vector, + /// The current epoch number + epoch: u64, + /// Timestamp that the epoch started at + epoch_timestamp_ms: u64, + /// Counter recording the number of fresh id's created while executing + /// this transaction. Always 0 at the start of a transaction + ids_created: u64 + } + + /// Return the address of the user that signed the current + /// transaction + public fun sender(self: &TxContext): address { + self.sender + } + + /// Return the transaction digest (hash of transaction inputs). + /// Please do not use as a source of randomness. + public fun digest(self: &TxContext): &vector { + &self.tx_hash + } + + /// Return the current epoch + public fun epoch(self: &TxContext): u64 { + self.epoch + } + + /// Return the epoch start time as a unix timestamp in milliseconds. + public fun epoch_timestamp_ms(self: &TxContext): u64 { + self.epoch_timestamp_ms + } + + /// Create an `address` that has not been used. As it is an object address, it will never + /// occur as the address for a user. + /// In other words, the generated address is a globally unique object ID. + public fun fresh_object_address(ctx: &mut TxContext): address { + let ids_created = ctx.ids_created; + let id = derive_id(*&ctx.tx_hash, ids_created); + ctx.ids_created = ids_created + 1; + id + } + + #[allow(unused_function)] + /// Return the number of id's created by the current transaction. + /// Hidden for now, but may expose later + fun ids_created(self: &TxContext): u64 { + self.ids_created + } + + /// Native function for deriving an ID via hash(tx_hash || ids_created) + native fun derive_id(tx_hash: vector, ids_created: u64): address; + + spec derive_id { + pragma opaque; + // this function never aborts + aborts_if [abstract] false; + // TODO: specify actual function behavior + } + + // ==== test-only functions ==== + + #[test_only] + /// Create a `TxContext` for testing + public fun new( + sender: address, + tx_hash: vector, + epoch: u64, + epoch_timestamp_ms: u64, + ids_created: u64, + ): TxContext { + assert!(vector::length(&tx_hash) == TX_HASH_LENGTH, EBadTxHashLength); + TxContext { sender, tx_hash, epoch, epoch_timestamp_ms, ids_created } + } + + #[test_only] + /// Create a `TxContext` for testing, with a potentially non-zero epoch number. + public fun new_from_hint( + addr: address, + hint: u64, + epoch: u64, + epoch_timestamp_ms: u64, + ids_created: u64, + ): TxContext { + new(addr, dummy_tx_hash_with_hint(hint), epoch, epoch_timestamp_ms, ids_created) + } + + #[test_only] + /// Create a dummy `TxContext` for testing + public fun dummy(): TxContext { + let tx_hash = x"3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532"; + new(@0x0, tx_hash, 0, 0, 0) + } + + #[test_only] + /// Utility for creating 256 unique input hashes. + /// These hashes are guaranteed to be unique given a unique `hint: u64` + fun dummy_tx_hash_with_hint(hint: u64): vector { + let tx_hash = std::bcs::to_bytes(&hint); + while (vector::length(&tx_hash) < TX_HASH_LENGTH) vector::push_back(&mut tx_hash, 0); + tx_hash + } + + #[test_only] + public fun get_ids_created(self: &TxContext): u64 { + ids_created(self) + } + + #[test_only] + /// Return the most recent created object ID. + public fun last_created_object_id(self: &TxContext): address { + let ids_created = self.ids_created; + assert!(ids_created > 0, ENoIDsCreated); + derive_id(*&self.tx_hash, ids_created - 1) + } + + #[test_only] + public fun increment_epoch_number(self: &mut TxContext) { + self.epoch = self.epoch + 1 + } + + #[test_only] + public fun increment_epoch_timestamp(self: &mut TxContext, delta_ms: u64) { + self.epoch_timestamp_ms = self.epoch_timestamp_ms + delta_ms + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/type_name.move b/external-crates/move/tooling/tree-sitter/tests/type_name.move new file mode 100644 index 0000000000000..df48dfe1e24b2 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/type_name.move @@ -0,0 +1,92 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Functionality for converting Move types into values. Use with care! +module std::type_name { + use std::ascii::{Self, String}; + use std::address; + use std::vector; + + /// ASCII Character code for the `:` (colon) symbol. + const ASCII_COLON: u8 = 58; + + struct TypeName has copy, drop, store { + /// String representation of the type. All types are represented + /// using their source syntax: + /// "u8", "u64", "u128", "bool", "address", "vector", "signer" for ground types. + /// Struct types are represented as fully qualified type names; e.g. + /// `00000000000000000000000000000001::string::String` or + /// `0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2>` + /// Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or 32 depending on the Move platform) + name: String + } + + /// Return a value representation of the type `T`. Package IDs + /// that appear in fully qualified type names in the output from + /// this function are defining IDs (the ID of the package in + /// storage that first introduced the type). + public native fun get(): TypeName; + spec get { + pragma opaque; + } + + /// Return a value representation of the type `T`. Package IDs + /// that appear in fully qualified type names in the output from + /// this function are original IDs (the ID of the first version of + /// the package, even if the type in question was introduced in a + /// later upgrade). + public native fun get_with_original_ids(): TypeName; + spec get_with_original_ids { + pragma opaque; + } + + /// Get the String representation of `self` + public fun borrow_string(self: &TypeName): &String { + &self.name + } + + /// Get Address string (Base16 encoded), first part of the TypeName. + public fun get_address(self: &TypeName): String { + // Base16 (string) representation of an address has 2 symbols per byte. + let len = address::length() * 2; + let str_bytes = ascii::as_bytes(&self.name); + let addr_bytes = vector[]; + let i = 0; + + // Read `len` bytes from the type name and push them to addr_bytes. + while (i < len) { + vector::push_back( + &mut addr_bytes, + *vector::borrow(str_bytes, i) + ); + i = i + 1; + }; + + ascii::string(addr_bytes) + } + + /// Get name of the module. + public fun get_module(self: &TypeName): String { + // Starts after address and a double colon: `::` + let i = address::length() * 2 + 2; + let str_bytes = ascii::as_bytes(&self.name); + let module_name = vector[]; + + loop { + let char = vector::borrow(str_bytes, i); + if (char != &ASCII_COLON) { + vector::push_back(&mut module_name, *char); + i = i + 1; + } else { + break + } + }; + + ascii::string(module_name) + } + + /// Convert `self` into its inner String + public fun into_string(self: TypeName): String { + self.name + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/types.move b/external-crates/move/tooling/tree-sitter/tests/types.move new file mode 100644 index 0000000000000..ca8441252fef7 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/types.move @@ -0,0 +1,18 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Sui types helpers and utilities +module sui::types { + // === one-time witness === + + /// Tests if the argument type is a one-time witness, that is a type with only one instantiation + /// across the entire code base. + public native fun is_one_time_witness(_: &T): bool; + + spec is_one_time_witness { + pragma opaque; + // TODO: stub to be replaced by actual abort conditions if any + aborts_if [abstract] true; + // TODO: specify actual function behavior + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/unit_test.move b/external-crates/move/tooling/tree-sitter/tests/unit_test.move new file mode 100644 index 0000000000000..818f059c99acc --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/unit_test.move @@ -0,0 +1,15 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[test_only] +/// Module providing testing functionality. Only included for tests. +module std::unit_test { + /// Return a `num_signers` number of unique signer values. No ordering or + /// starting value guarantees are made, only that the order and values of + /// the signers in the returned vector is deterministic. + /// + /// This function is also used to poison modules compiled in `test` mode. + /// This will cause a linking failure if an attempt is made to publish a + /// test module in a VM that isn't in unit test mode. + native public fun create_signers_for_testing(num_signers: u64): vector; +} diff --git a/external-crates/move/tooling/tree-sitter/tests/url.move b/external-crates/move/tooling/tree-sitter/tests/url.move new file mode 100644 index 0000000000000..b40ce91aff2de --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/url.move @@ -0,0 +1,35 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// URL: standard Uniform Resource Locator string +module sui::url { + use std::ascii::{Self, String}; + + /// Standard Uniform Resource Locator (URL) string. + struct Url has store, copy, drop { + // TODO: validate URL format + url: String, + } + + /// Create a `Url`, with no validation + public fun new_unsafe(url: String): Url { + Url { url } + } + + /// Create a `Url` with no validation from bytes + /// Note: this will abort if `bytes` is not valid ASCII + public fun new_unsafe_from_bytes(bytes: vector): Url { + let url = ascii::string(bytes); + Url { url } + } + + /// Get inner URL + public fun inner_url(self: &Url): String{ + self.url + } + + /// Update the inner URL + public fun update(self: &mut Url, url: String) { + self.url = url; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/variant_creation.move b/external-crates/move/tooling/tree-sitter/tests/variant_creation.move new file mode 100644 index 0000000000000..c095b7fe12649 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/variant_creation.move @@ -0,0 +1,14 @@ +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +module Completion::test { + public enum SomeEnum has drop { + SomeVariant, + } + + public fun test() { + let _local = Completion::test::SomeEnum::SomeVariant; + let _other_local = Self::SomeEnum::SomeVariant; + let _other_other_local = SomeEnum::SomeVariant; + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/vec_map.move b/external-crates/move/tooling/tree-sitter/tests/vec_map.move new file mode 100644 index 0000000000000..60ad2b06ecbd1 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/vec_map.move @@ -0,0 +1,195 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::vec_map { + use std::option::{Self, Option}; + use std::vector; + + /// This key already exists in the map + const EKeyAlreadyExists: u64 = 0; + + /// This key does not exist in the map + const EKeyDoesNotExist: u64 = 1; + + /// Trying to destroy a map that is not empty + const EMapNotEmpty: u64 = 2; + + /// Trying to access an element of the map at an invalid index + const EIndexOutOfBounds: u64 = 3; + + /// Trying to pop from a map that is empty + const EMapEmpty: u64 = 4; + + /// A map data structure backed by a vector. The map is guaranteed not to contain duplicate keys, but entries + /// are *not* sorted by key--entries are included in insertion order. + /// All operations are O(N) in the size of the map--the intention of this data structure is only to provide + /// the convenience of programming against a map API. + /// Large maps should use handwritten parent/child relationships instead. + /// Maps that need sorted iteration rather than insertion order iteration should also be handwritten. + struct VecMap has copy, drop, store { + contents: vector>, + } + + /// An entry in the map + struct Entry has copy, drop, store { + key: K, + value: V, + } + + /// Create an empty `VecMap` + public fun empty(): VecMap { + VecMap { contents: vector::empty() } + } + + /// Insert the entry `key` |-> `value` into `self`. + /// Aborts if `key` is already bound in `self`. + public fun insert(self: &mut VecMap, key: K, value: V) { + assert!(!contains(self, &key), EKeyAlreadyExists); + vector::push_back(&mut self.contents, Entry { key, value }) + } + + /// Remove the entry `key` |-> `value` from self. Aborts if `key` is not bound in `self`. + public fun remove(self: &mut VecMap, key: &K): (K, V) { + let idx = get_idx(self, key); + let Entry { key, value } = vector::remove(&mut self.contents, idx); + (key, value) + } + + /// Pop the most recently inserted entry from the map. Aborts if the map is empty. + public fun pop(self: &mut VecMap): (K, V) { + assert!(!vector::is_empty(&self.contents), EMapEmpty); + let Entry { key, value } = vector::pop_back(&mut self.contents); + (key, value) + } + + /// Get a mutable reference to the value bound to `key` in `self`. + /// Aborts if `key` is not bound in `self`. + public fun get_mut(self: &mut VecMap, key: &K): &mut V { + let idx = get_idx(self, key); + let entry = vector::borrow_mut(&mut self.contents, idx); + &mut entry.value + } + + /// Get a reference to the value bound to `key` in `self`. + /// Aborts if `key` is not bound in `self`. + public fun get(self: &VecMap, key: &K): &V { + let idx = get_idx(self, key); + let entry = vector::borrow(&self.contents, idx); + &entry.value + } + + /// Safely try borrow a value bound to `key` in `self`. + /// Return Some(V) if the value exists, None otherwise. + /// Only works for a "copyable" value as references cannot be stored in `vector`. + public fun try_get(self: &VecMap, key: &K): Option { + if (contains(self, key)) { + option::some(*get(self, key)) + } else { + option::none() + } + } + + /// Return true if `self` contains an entry for `key`, false otherwise + public fun contains(self: &VecMap, key: &K): bool { + option::is_some(&get_idx_opt(self, key)) + } + + /// Return the number of entries in `self` + public fun size(self: &VecMap): u64 { + vector::length(&self.contents) + } + + /// Return true if `self` has 0 elements, false otherwise + public fun is_empty(self: &VecMap): bool { + size(self) == 0 + } + + /// Destroy an empty map. Aborts if `self` is not empty + public fun destroy_empty(self: VecMap) { + let VecMap { contents } = self; + assert!(vector::is_empty(&contents), EMapNotEmpty); + vector::destroy_empty(contents) + } + + /// Unpack `self` into vectors of its keys and values. + /// The output keys and values are stored in insertion order, *not* sorted by key. + public fun into_keys_values(self: VecMap): (vector, vector) { + let VecMap { contents } = self; + // reverse the vector so the output keys and values will appear in insertion order + vector::reverse(&mut contents); + let i = 0; + let n = vector::length(&contents); + let keys = vector::empty(); + let values = vector::empty(); + while (i < n) { + let Entry { key, value } = vector::pop_back(&mut contents); + vector::push_back(&mut keys, key); + vector::push_back(&mut values, value); + i = i + 1; + }; + vector::destroy_empty(contents); + (keys, values) + } + + /// Returns a list of keys in the map. + /// Do not assume any particular ordering. + public fun keys(self: &VecMap): vector { + let i = 0; + let n = vector::length(&self.contents); + let keys = vector::empty(); + while (i < n) { + let entry = vector::borrow(&self.contents, i); + vector::push_back(&mut keys, entry.key); + i = i + 1; + }; + keys + } + + /// Find the index of `key` in `self`. Return `None` if `key` is not in `self`. + /// Note that map entries are stored in insertion order, *not* sorted by key. + public fun get_idx_opt(self: &VecMap, key: &K): Option { + let i = 0; + let n = size(self); + while (i < n) { + if (&vector::borrow(&self.contents, i).key == key) { + return option::some(i) + }; + i = i + 1; + }; + option::none() + } + + /// Find the index of `key` in `self`. Aborts if `key` is not in `self`. + /// Note that map entries are stored in insertion order, *not* sorted by key. + public fun get_idx(self: &VecMap, key: &K): u64 { + let idx_opt = get_idx_opt(self, key); + assert!(option::is_some(&idx_opt), EKeyDoesNotExist); + option::destroy_some(idx_opt) + } + + /// Return a reference to the `idx`th entry of `self`. This gives direct access into the backing array of the map--use with caution. + /// Note that map entries are stored in insertion order, *not* sorted by key. + /// Aborts if `idx` is greater than or equal to `size(self)` + public fun get_entry_by_idx(self: &VecMap, idx: u64): (&K, &V) { + assert!(idx < size(self), EIndexOutOfBounds); + let entry = vector::borrow(&self.contents, idx); + (&entry.key, &entry.value) + } + + /// Return a mutable reference to the `idx`th entry of `self`. This gives direct access into the backing array of the map--use with caution. + /// Note that map entries are stored in insertion order, *not* sorted by key. + /// Aborts if `idx` is greater than or equal to `size(self)` + public fun get_entry_by_idx_mut(self: &mut VecMap, idx: u64): (&K, &mut V) { + assert!(idx < size(self), EIndexOutOfBounds); + let entry = vector::borrow_mut(&mut self.contents, idx); + (&entry.key, &mut entry.value) + } + + /// Remove the entry at index `idx` from self. + /// Aborts if `idx` is greater than or equal to `size(self)` + public fun remove_entry_by_idx(self: &mut VecMap, idx: u64): (K, V) { + assert!(idx < size(self), EIndexOutOfBounds); + let Entry { key, value } = vector::remove(&mut self.contents, idx); + (key, value) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/vec_set.move b/external-crates/move/tooling/tree-sitter/tests/vec_set.move new file mode 100644 index 0000000000000..7f4919674825a --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/vec_set.move @@ -0,0 +1,98 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::vec_set { + use std::option::{Self, Option}; + use std::vector; + + /// This key already exists in the map + const EKeyAlreadyExists: u64 = 0; + + /// This key does not exist in the map + const EKeyDoesNotExist: u64 = 1; + + /// A set data structure backed by a vector. The set is guaranteed not to + /// contain duplicate keys. All operations are O(N) in the size of the set + /// - the intention of this data structure is only to provide the convenience + /// of programming against a set API. Sets that need sorted iteration rather + /// than insertion order iteration should be handwritten. + struct VecSet has copy, drop, store { + contents: vector, + } + + /// Create an empty `VecSet` + public fun empty(): VecSet { + VecSet { contents: vector::empty() } + } + + /// Create a singleton `VecSet` that only contains one element. + public fun singleton(key: K): VecSet { + VecSet { contents: vector::singleton(key) } + } + + /// Insert a `key` into self. + /// Aborts if `key` is already present in `self`. + public fun insert(self: &mut VecSet, key: K) { + assert!(!contains(self, &key), EKeyAlreadyExists); + vector::push_back(&mut self.contents, key) + } + + /// Remove the entry `key` from self. Aborts if `key` is not present in `self`. + public fun remove(self: &mut VecSet, key: &K) { + let idx = get_idx(self, key); + vector::remove(&mut self.contents, idx); + } + + /// Return true if `self` contains an entry for `key`, false otherwise + public fun contains(self: &VecSet, key: &K): bool { + option::is_some(&get_idx_opt(self, key)) + } + + /// Return the number of entries in `self` + public fun size(self: &VecSet): u64 { + vector::length(&self.contents) + } + + /// Return true if `self` has 0 elements, false otherwise + public fun is_empty(self: &VecSet): bool { + size(self) == 0 + } + + /// Unpack `self` into vectors of keys. + /// The output keys are stored in insertion order, *not* sorted. + public fun into_keys(self: VecSet): vector { + let VecSet { contents } = self; + contents + } + + /// Borrow the `contents` of the `VecSet` to access content by index + /// without unpacking. The contents are stored in insertion order, + /// *not* sorted. + public fun keys(self: &VecSet): &vector { + &self.contents + } + + // == Helper functions == + + /// Find the index of `key` in `self`. Return `None` if `key` is not in `self`. + /// Note that keys are stored in insertion order, *not* sorted. + fun get_idx_opt(self: &VecSet, key: &K): Option { + let i = 0; + let n = size(self); + while (i < n) { + if (vector::borrow(&self.contents, i) == key) { + return option::some(i) + }; + i = i + 1; + }; + option::none() + } + + /// Find the index of `key` in `self`. Aborts if `key` is not in `self`. + /// Note that map entries are stored in insertion order, *not* sorted. + fun get_idx(self: &VecSet, key: &K): u64 { + let idx_opt = get_idx_opt(self, key); + assert!(option::is_some(&idx_opt), EKeyDoesNotExist); + option::destroy_some(idx_opt) + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/vector.move b/external-crates/move/tooling/tree-sitter/tests/vector.move new file mode 100644 index 0000000000000..506414485ce00 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/vector.move @@ -0,0 +1,220 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// A variable-sized container that can hold any type. Indexing is 0-based, and +/// vectors are growable. This module has many native functions. +/// Verification of modules that use this one uses model functions that are implemented +/// directly in Boogie. The specification language has built-in functions operations such +/// as `singleton_vector`. There are some helper functions defined here for specifications in other +/// modules as well. +/// +/// >Note: We did not verify most of the +/// Move functions here because many have loops, requiring loop invariants to prove, and +/// the return on investment didn't seem worth it for these simple functions. +module std::vector { + + /// The index into the vector is out of bounds + const EINDEX_OUT_OF_BOUNDS: u64 = 0x20000; + + #[bytecode_instruction] + /// Create an empty vector. + native public fun empty(): vector; + + #[bytecode_instruction] + /// Return the length of the vector. + native public fun length(v: &vector): u64; + + #[bytecode_instruction] + /// Acquire an immutable reference to the `i`th element of the vector `v`. + /// Aborts if `i` is out of bounds. + native public fun borrow(v: &vector, i: u64): ∈ + + #[bytecode_instruction] + /// Add element `e` to the end of the vector `v`. + native public fun push_back(v: &mut vector, e: Element); + + #[bytecode_instruction] + /// Return a mutable reference to the `i`th element in the vector `v`. + /// Aborts if `i` is out of bounds. + native public fun borrow_mut(v: &mut vector, i: u64): &mut Element; + + #[bytecode_instruction] + /// Pop an element from the end of vector `v`. + /// Aborts if `v` is empty. + native public fun pop_back(v: &mut vector): Element; + + #[bytecode_instruction] + /// Destroy the vector `v`. + /// Aborts if `v` is not empty. + native public fun destroy_empty(v: vector); + + #[bytecode_instruction] + /// Swaps the elements at the `i`th and `j`th indices in the vector `v`. + /// Aborts if `i` or `j` is out of bounds. + native public fun swap(v: &mut vector, i: u64, j: u64); + + /// Return an vector of size one containing element `e`. + public fun singleton(e: Element): vector { + let v = empty(); + push_back(&mut v, e); + v + } + spec singleton { + // TODO: when using opaque here, we get verification errors. + // pragma opaque; + aborts_if false; + ensures result == vec(e); + } + + /// Reverses the order of the elements in the vector `v` in place. + public fun reverse(v: &mut vector) { + let len = length(v); + if (len == 0) return (); + + let front_index = 0; + let back_index = len -1; + while (front_index < back_index) { + swap(v, front_index, back_index); + front_index = front_index + 1; + back_index = back_index - 1; + } + } + spec reverse { + pragma intrinsic = true; + } + + + /// Pushes all of the elements of the `other` vector into the `lhs` vector. + public fun append(lhs: &mut vector, other: vector) { + reverse(&mut other); + while (!is_empty(&other)) push_back(lhs, pop_back(&mut other)); + destroy_empty(other); + } + spec append { + pragma intrinsic = true; + } + spec is_empty { + pragma intrinsic = true; + } + + + /// Return `true` if the vector `v` has no elements and `false` otherwise. + public fun is_empty(v: &vector): bool { + length(v) == 0 + } + + /// Return true if `e` is in the vector `v`. + /// Otherwise, returns false. + public fun contains(v: &vector, e: &Element): bool { + let i = 0; + let len = length(v); + while (i < len) { + if (borrow(v, i) == e) return true; + i = i + 1; + }; + false + } + spec contains { + pragma intrinsic = true; + } + + /// Return `(true, i)` if `e` is in the vector `v` at index `i`. + /// Otherwise, returns `(false, 0)`. + public fun index_of(v: &vector, e: &Element): (bool, u64) { + let i = 0; + let len = length(v); + while (i < len) { + if (borrow(v, i) == e) return (true, i); + i = i + 1; + }; + (false, 0) + } + spec index_of { + pragma intrinsic = true; + } + + /// Remove the `i`th element of the vector `v`, shifting all subsequent elements. + /// This is O(n) and preserves ordering of elements in the vector. + /// Aborts if `i` is out of bounds. + public fun remove(v: &mut vector, i: u64): Element { + let len = length(v); + // i out of bounds; abort + if (i >= len) abort EINDEX_OUT_OF_BOUNDS; + + len = len - 1; + while (i < len) swap(v, i, { i = i + 1; i }); + pop_back(v) + } + spec remove { + pragma intrinsic = true; + } + + /// Insert `e` at position `i` in the vector `v`. + /// If `i` is in bounds, this shifts the old `v[i]` and all subsequent elements to the right. + /// If `i == length(v)`, this adds `e` to the end of the vector. + /// This is O(n) and preserves ordering of elements in the vector. + /// Aborts if `i > length(v)` + public fun insert(v: &mut vector, e: Element, i: u64) { + let len = length(v); + // i too big abort + if (i > len) abort EINDEX_OUT_OF_BOUNDS; + + push_back(v, e); + while (i < len) { + swap(v, i, len); + i = i + 1 + } + } + spec insert { + pragma intrinsic = true; + } + + /// Swap the `i`th element of the vector `v` with the last element and then pop the vector. + /// This is O(1), but does not preserve ordering of elements in the vector. + /// Aborts if `i` is out of bounds. + public fun swap_remove(v: &mut vector, i: u64): Element { + assert!(!is_empty(v), EINDEX_OUT_OF_BOUNDS); + let last_idx = length(v) - 1; + swap(v, i, last_idx); + pop_back(v) + } + spec swap_remove { + pragma intrinsic = true; + } + + // ================================================================= + // Module Specification + + spec module {} // Switch to module documentation context + + /// # Helper Functions + + spec module { + /// Check if `v1` is equal to the result of adding `e` at the end of `v2` + fun eq_push_back(v1: vector, v2: vector, e: Element): bool { + len(v1) == len(v2) + 1 && + v1[len(v1)-1] == e && + v1[0..len(v1)-1] == v2[0..len(v2)] + } + + /// Check if `v` is equal to the result of concatenating `v1` and `v2` + fun eq_append(v: vector, v1: vector, v2: vector): bool { + len(v) == len(v1) + len(v2) && + v[0..len(v1)] == v1 && + v[len(v1)..len(v)] == v2 + } + + /// Check `v1` is equal to the result of removing the first element of `v2` + fun eq_pop_front(v1: vector, v2: vector): bool { + len(v1) + 1 == len(v2) && + v1 == v2[1..len(v2)] + } + + /// Check that `v1` is equal to the result of removing the element at index `i` from `v2`. + fun eq_remove_elem_at_index(i: u64, v1: vector, v2: vector): bool { + len(v1) + 1 == len(v2) && + v1[0..i] == v2[0..i] && + v1[i..len(v1)] == v2[i + 1..len(v2)] + } + } +} diff --git a/external-crates/move/tooling/tree-sitter/tests/versioned.move b/external-crates/move/tooling/tree-sitter/tests/versioned.move new file mode 100644 index 0000000000000..b906ae8185fa6 --- /dev/null +++ b/external-crates/move/tooling/tree-sitter/tests/versioned.move @@ -0,0 +1,86 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::versioned { + use sui::object::{UID, ID}; + use sui::tx_context::TxContext; + use sui::object; + use sui::dynamic_field; + + /// Failed to upgrade the inner object due to invalid capability or new version. + const EInvalidUpgrade: u64 = 0; + + /// A wrapper type that supports versioning of the inner type. + /// The inner type is a dynamic field of the Versioned object, and is keyed using version. + /// User of this type could load the inner object using corresponding type based on the version. + /// You can also upgrade the inner object to a new type version. + /// If you want to support lazy upgrade of the inner type, one caveat is that all APIs would have + /// to use mutable reference even if it's a read-only API. + struct Versioned has key, store { + id: UID, + version: u64, + } + + /// Represents a hot potato object generated when we take out the dynamic field. + /// This is to make sure that we always put a new value back. + struct VersionChangeCap { + versioned_id: ID, + old_version: u64, + } + + /// Create a new Versioned object that contains a initial value of type `T` with an initial version. + public fun create(init_version: u64, init_value: T, ctx: &mut TxContext): Versioned { + let self = Versioned { + id: object::new(ctx), + version: init_version, + }; + dynamic_field::add(&mut self.id, init_version, init_value); + self + } + + /// Get the current version of the inner type. + public fun version(self: &Versioned): u64 { + self.version + } + + /// Load the inner value based on the current version. Caller specifies an expected type T. + /// If the type mismatch, the load will fail. + public fun load_value(self: &Versioned): &T { + dynamic_field::borrow(&self.id, self.version) + } + + /// Similar to load_value, but return a mutable reference. + public fun load_value_mut(self: &mut Versioned): &mut T { + dynamic_field::borrow_mut(&mut self.id, self.version) + } + + /// Take the inner object out for upgrade. To ensure we always upgrade properly, a capability object is returned + /// and must be used when we upgrade. + public fun remove_value_for_upgrade(self: &mut Versioned): (T, VersionChangeCap) { + ( + dynamic_field::remove(&mut self.id, self.version), + VersionChangeCap { + versioned_id: object::id(self), + old_version: self.version, + } + ) + } + + /// Upgrade the inner object with a new version and new value. Must use the capability returned + /// by calling remove_value_for_upgrade. + public fun upgrade(self: &mut Versioned, new_version: u64, new_value: T, cap: VersionChangeCap) { + let VersionChangeCap { versioned_id, old_version } = cap; + assert!(versioned_id == object::id(self), EInvalidUpgrade); + assert!(old_version < new_version, EInvalidUpgrade); + dynamic_field::add(&mut self.id, new_version, new_value); + self.version = new_version; + } + + /// Destroy this Versioned container, and return the inner object. + public fun destroy(self: Versioned): T { + let Versioned { id, version } = self; + let ret = dynamic_field::remove(&mut id, version); + object::delete(id); + ret + } +} diff --git a/external-crates/move/tooling/tree-sitter/tree_sitter.png b/external-crates/move/tooling/tree-sitter/tree_sitter.png new file mode 100644 index 0000000000000..45c8d29f0dec5 Binary files /dev/null and b/external-crates/move/tooling/tree-sitter/tree_sitter.png differ