/* Automatically @generated by tree-sitter v0.25.10 */

#include "tree_sitter/parser.h"

#if defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#endif

#define LANGUAGE_VERSION 15
#define STATE_COUNT 172
#define LARGE_STATE_COUNT 7
#define SYMBOL_COUNT 91
#define ALIAS_COUNT 0
#define TOKEN_COUNT 25
#define EXTERNAL_TOKEN_COUNT 1
#define FIELD_COUNT 21
#define MAX_ALIAS_SEQUENCE_LENGTH 6
#define MAX_RESERVED_WORD_SET_SIZE 11
#define PRODUCTION_ID_COUNT 41
#define SUPERTYPE_COUNT 0

enum ts_symbol_identifiers {
  sym__ident = 1,
  anon_sym_COLON = 2,
  anon_sym_SEMI = 3,
  anon_sym_EQ = 4,
  anon_sym_fn = 5,
  anon_sym_DASH_GT = 6,
  anon_sym_LPAREN = 7,
  anon_sym_COMMA = 8,
  anon_sym_RPAREN = 9,
  anon_sym_mut = 10,
  anon_sym_asm = 11,
  anon_sym_LBRACE = 12,
  anon_sym_RBRACE = 13,
  anon_sym_as = 14,
  anon_sym_break = 15,
  anon_sym_cont = 16,
  anon_sym_if = 17,
  anon_sym_else = 18,
  anon_sym_while = 19,
  anon_sym_for = 20,
  anon_sym_in = 21,
  sym__label = 22,
  anon_sym__ = 23,
  sym_llvm_ir = 24,
  sym_trans_unit = 25,
  sym__global_stmt = 26,
  sym__decl_stmt = 27,
  sym_fn_def = 28,
  sym__fn_def = 29,
  sym_fn_sign = 30,
  sym__fn_sign = 31,
  sym_paras = 32,
  sym__paras = 33,
  sym_para = 34,
  sym__para = 35,
  sym__fn_body = 36,
  sym_binding = 37,
  sym__binding = 38,
  sym__typed_binding = 39,
  sym__auto_binding = 40,
  sym__type = 41,
  sym_type_infer = 42,
  sym__type_infer = 43,
  sym__pattern = 44,
  sym_pat_wild = 45,
  sym__pat_wild = 46,
  sym_pat_ident = 47,
  sym__pat_ident = 48,
  sym__stmt = 49,
  sym_empty_stmt = 50,
  sym__empty_stmt = 51,
  sym_asm_block = 52,
  sym__asm_block = 53,
  sym_expr_stmt = 54,
  sym__expr_stmt = 55,
  sym__expr = 56,
  sym_assign_expr = 57,
  sym__assign_expr = 58,
  sym_call_expr = 59,
  sym_args = 60,
  sym__args = 61,
  sym_paren_expr = 62,
  sym__paren_expr = 63,
  sym_as_expr = 64,
  sym__as_expr = 65,
  sym_break_expr = 66,
  sym__break_expr = 67,
  sym_cont_expr = 68,
  sym__cont_expr = 69,
  sym__expr_ending_with_block = 70,
  sym_if_expr = 71,
  sym__if_expr = 72,
  sym__else_clause = 73,
  sym_while_expr = 74,
  sym__while_expr = 75,
  sym_for_expr = 76,
  sym__for_expr = 77,
  sym__loop_else_clause = 78,
  sym_labeled = 79,
  sym__labeled = 80,
  sym_block = 81,
  sym__block = 82,
  sym_label = 83,
  sym_underscore = 84,
  sym__underscore = 85,
  sym_ident = 86,
  aux_sym_trans_unit_repeat1 = 87,
  aux_sym__paras_repeat1 = 88,
  aux_sym__args_repeat1 = 89,
  aux_sym__block_repeat1 = 90,
};

static const char * const ts_symbol_names[] = {
  [ts_builtin_sym_end] = "end",
  [sym__ident] = "_ident",
  [anon_sym_COLON] = ":",
  [anon_sym_SEMI] = ";",
  [anon_sym_EQ] = "=",
  [anon_sym_fn] = "fn",
  [anon_sym_DASH_GT] = "->",
  [anon_sym_LPAREN] = "(",
  [anon_sym_COMMA] = ",",
  [anon_sym_RPAREN] = ")",
  [anon_sym_mut] = "mut",
  [anon_sym_asm] = "asm",
  [anon_sym_LBRACE] = "{",
  [anon_sym_RBRACE] = "}",
  [anon_sym_as] = "as",
  [anon_sym_break] = "break",
  [anon_sym_cont] = "cont",
  [anon_sym_if] = "if",
  [anon_sym_else] = "else",
  [anon_sym_while] = "while",
  [anon_sym_for] = "for",
  [anon_sym_in] = "in",
  [sym__label] = "_label",
  [anon_sym__] = "_",
  [sym_llvm_ir] = "llvm_ir",
  [sym_trans_unit] = "trans_unit",
  [sym__global_stmt] = "_global_stmt",
  [sym__decl_stmt] = "_decl_stmt",
  [sym_fn_def] = "fn_def",
  [sym__fn_def] = "_fn_def",
  [sym_fn_sign] = "fn_sign",
  [sym__fn_sign] = "_fn_sign",
  [sym_paras] = "paras",
  [sym__paras] = "_paras",
  [sym_para] = "para",
  [sym__para] = "_para",
  [sym__fn_body] = "_fn_body",
  [sym_binding] = "binding",
  [sym__binding] = "_binding",
  [sym__typed_binding] = "_typed_binding",
  [sym__auto_binding] = "_auto_binding",
  [sym__type] = "_type",
  [sym_type_infer] = "type_infer",
  [sym__type_infer] = "_type_infer",
  [sym__pattern] = "_pattern",
  [sym_pat_wild] = "pat_wild",
  [sym__pat_wild] = "_pat_wild",
  [sym_pat_ident] = "pat_ident",
  [sym__pat_ident] = "_pat_ident",
  [sym__stmt] = "_stmt",
  [sym_empty_stmt] = "empty_stmt",
  [sym__empty_stmt] = "_empty_stmt",
  [sym_asm_block] = "asm_block",
  [sym__asm_block] = "_asm_block",
  [sym_expr_stmt] = "expr_stmt",
  [sym__expr_stmt] = "_expr_stmt",
  [sym__expr] = "_expr",
  [sym_assign_expr] = "assign_expr",
  [sym__assign_expr] = "_assign_expr",
  [sym_call_expr] = "call_expr",
  [sym_args] = "args",
  [sym__args] = "_args",
  [sym_paren_expr] = "paren_expr",
  [sym__paren_expr] = "_paren_expr",
  [sym_as_expr] = "as_expr",
  [sym__as_expr] = "_as_expr",
  [sym_break_expr] = "break_expr",
  [sym__break_expr] = "_break_expr",
  [sym_cont_expr] = "cont_expr",
  [sym__cont_expr] = "_cont_expr",
  [sym__expr_ending_with_block] = "_expr_ending_with_block",
  [sym_if_expr] = "if_expr",
  [sym__if_expr] = "_if_expr",
  [sym__else_clause] = "_else_clause",
  [sym_while_expr] = "while_expr",
  [sym__while_expr] = "_while_expr",
  [sym_for_expr] = "for_expr",
  [sym__for_expr] = "_for_expr",
  [sym__loop_else_clause] = "_loop_else_clause",
  [sym_labeled] = "labeled",
  [sym__labeled] = "_labeled",
  [sym_block] = "block",
  [sym__block] = "_block",
  [sym_label] = "label",
  [sym_underscore] = "underscore",
  [sym__underscore] = "_underscore",
  [sym_ident] = "ident",
  [aux_sym_trans_unit_repeat1] = "trans_unit_repeat1",
  [aux_sym__paras_repeat1] = "_paras_repeat1",
  [aux_sym__args_repeat1] = "_args_repeat1",
  [aux_sym__block_repeat1] = "_block_repeat1",
};

static const TSSymbol ts_symbol_map[] = {
  [ts_builtin_sym_end] = ts_builtin_sym_end,
  [sym__ident] = sym__ident,
  [anon_sym_COLON] = anon_sym_COLON,
  [anon_sym_SEMI] = anon_sym_SEMI,
  [anon_sym_EQ] = anon_sym_EQ,
  [anon_sym_fn] = anon_sym_fn,
  [anon_sym_DASH_GT] = anon_sym_DASH_GT,
  [anon_sym_LPAREN] = anon_sym_LPAREN,
  [anon_sym_COMMA] = anon_sym_COMMA,
  [anon_sym_RPAREN] = anon_sym_RPAREN,
  [anon_sym_mut] = anon_sym_mut,
  [anon_sym_asm] = anon_sym_asm,
  [anon_sym_LBRACE] = anon_sym_LBRACE,
  [anon_sym_RBRACE] = anon_sym_RBRACE,
  [anon_sym_as] = anon_sym_as,
  [anon_sym_break] = anon_sym_break,
  [anon_sym_cont] = anon_sym_cont,
  [anon_sym_if] = anon_sym_if,
  [anon_sym_else] = anon_sym_else,
  [anon_sym_while] = anon_sym_while,
  [anon_sym_for] = anon_sym_for,
  [anon_sym_in] = anon_sym_in,
  [sym__label] = sym__label,
  [anon_sym__] = anon_sym__,
  [sym_llvm_ir] = sym_llvm_ir,
  [sym_trans_unit] = sym_trans_unit,
  [sym__global_stmt] = sym__global_stmt,
  [sym__decl_stmt] = sym__decl_stmt,
  [sym_fn_def] = sym_fn_def,
  [sym__fn_def] = sym__fn_def,
  [sym_fn_sign] = sym_fn_sign,
  [sym__fn_sign] = sym__fn_sign,
  [sym_paras] = sym_paras,
  [sym__paras] = sym__paras,
  [sym_para] = sym_para,
  [sym__para] = sym__para,
  [sym__fn_body] = sym__fn_body,
  [sym_binding] = sym_binding,
  [sym__binding] = sym__binding,
  [sym__typed_binding] = sym__typed_binding,
  [sym__auto_binding] = sym__auto_binding,
  [sym__type] = sym__type,
  [sym_type_infer] = sym_type_infer,
  [sym__type_infer] = sym__type_infer,
  [sym__pattern] = sym__pattern,
  [sym_pat_wild] = sym_pat_wild,
  [sym__pat_wild] = sym__pat_wild,
  [sym_pat_ident] = sym_pat_ident,
  [sym__pat_ident] = sym__pat_ident,
  [sym__stmt] = sym__stmt,
  [sym_empty_stmt] = sym_empty_stmt,
  [sym__empty_stmt] = sym__empty_stmt,
  [sym_asm_block] = sym_asm_block,
  [sym__asm_block] = sym__asm_block,
  [sym_expr_stmt] = sym_expr_stmt,
  [sym__expr_stmt] = sym__expr_stmt,
  [sym__expr] = sym__expr,
  [sym_assign_expr] = sym_assign_expr,
  [sym__assign_expr] = sym__assign_expr,
  [sym_call_expr] = sym_call_expr,
  [sym_args] = sym_args,
  [sym__args] = sym__args,
  [sym_paren_expr] = sym_paren_expr,
  [sym__paren_expr] = sym__paren_expr,
  [sym_as_expr] = sym_as_expr,
  [sym__as_expr] = sym__as_expr,
  [sym_break_expr] = sym_break_expr,
  [sym__break_expr] = sym__break_expr,
  [sym_cont_expr] = sym_cont_expr,
  [sym__cont_expr] = sym__cont_expr,
  [sym__expr_ending_with_block] = sym__expr_ending_with_block,
  [sym_if_expr] = sym_if_expr,
  [sym__if_expr] = sym__if_expr,
  [sym__else_clause] = sym__else_clause,
  [sym_while_expr] = sym_while_expr,
  [sym__while_expr] = sym__while_expr,
  [sym_for_expr] = sym_for_expr,
  [sym__for_expr] = sym__for_expr,
  [sym__loop_else_clause] = sym__loop_else_clause,
  [sym_labeled] = sym_labeled,
  [sym__labeled] = sym__labeled,
  [sym_block] = sym_block,
  [sym__block] = sym__block,
  [sym_label] = sym_label,
  [sym_underscore] = sym_underscore,
  [sym__underscore] = sym__underscore,
  [sym_ident] = sym_ident,
  [aux_sym_trans_unit_repeat1] = aux_sym_trans_unit_repeat1,
  [aux_sym__paras_repeat1] = aux_sym__paras_repeat1,
  [aux_sym__args_repeat1] = aux_sym__args_repeat1,
  [aux_sym__block_repeat1] = aux_sym__block_repeat1,
};

static const TSSymbolMetadata ts_symbol_metadata[] = {
  [ts_builtin_sym_end] = {
    .visible = false,
    .named = true,
  },
  [sym__ident] = {
    .visible = false,
    .named = true,
  },
  [anon_sym_COLON] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_SEMI] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_EQ] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_fn] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_DASH_GT] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_LPAREN] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_COMMA] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_RPAREN] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_mut] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_asm] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_LBRACE] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_RBRACE] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_as] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_break] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_cont] = {
    .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_for] = {
    .visible = true,
    .named = false,
  },
  [anon_sym_in] = {
    .visible = true,
    .named = false,
  },
  [sym__label] = {
    .visible = false,
    .named = true,
  },
  [anon_sym__] = {
    .visible = true,
    .named = false,
  },
  [sym_llvm_ir] = {
    .visible = true,
    .named = true,
  },
  [sym_trans_unit] = {
    .visible = true,
    .named = true,
  },
  [sym__global_stmt] = {
    .visible = false,
    .named = true,
  },
  [sym__decl_stmt] = {
    .visible = false,
    .named = true,
  },
  [sym_fn_def] = {
    .visible = true,
    .named = true,
  },
  [sym__fn_def] = {
    .visible = false,
    .named = true,
  },
  [sym_fn_sign] = {
    .visible = true,
    .named = true,
  },
  [sym__fn_sign] = {
    .visible = false,
    .named = true,
  },
  [sym_paras] = {
    .visible = true,
    .named = true,
  },
  [sym__paras] = {
    .visible = false,
    .named = true,
  },
  [sym_para] = {
    .visible = true,
    .named = true,
  },
  [sym__para] = {
    .visible = false,
    .named = true,
  },
  [sym__fn_body] = {
    .visible = false,
    .named = true,
  },
  [sym_binding] = {
    .visible = true,
    .named = true,
  },
  [sym__binding] = {
    .visible = false,
    .named = true,
  },
  [sym__typed_binding] = {
    .visible = false,
    .named = true,
  },
  [sym__auto_binding] = {
    .visible = false,
    .named = true,
  },
  [sym__type] = {
    .visible = false,
    .named = true,
  },
  [sym_type_infer] = {
    .visible = true,
    .named = true,
  },
  [sym__type_infer] = {
    .visible = false,
    .named = true,
  },
  [sym__pattern] = {
    .visible = false,
    .named = true,
  },
  [sym_pat_wild] = {
    .visible = true,
    .named = true,
  },
  [sym__pat_wild] = {
    .visible = false,
    .named = true,
  },
  [sym_pat_ident] = {
    .visible = true,
    .named = true,
  },
  [sym__pat_ident] = {
    .visible = false,
    .named = true,
  },
  [sym__stmt] = {
    .visible = false,
    .named = true,
  },
  [sym_empty_stmt] = {
    .visible = true,
    .named = true,
  },
  [sym__empty_stmt] = {
    .visible = false,
    .named = true,
  },
  [sym_asm_block] = {
    .visible = true,
    .named = true,
  },
  [sym__asm_block] = {
    .visible = false,
    .named = true,
  },
  [sym_expr_stmt] = {
    .visible = true,
    .named = true,
  },
  [sym__expr_stmt] = {
    .visible = false,
    .named = true,
  },
  [sym__expr] = {
    .visible = false,
    .named = true,
  },
  [sym_assign_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__assign_expr] = {
    .visible = false,
    .named = true,
  },
  [sym_call_expr] = {
    .visible = true,
    .named = true,
  },
  [sym_args] = {
    .visible = true,
    .named = true,
  },
  [sym__args] = {
    .visible = false,
    .named = true,
  },
  [sym_paren_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__paren_expr] = {
    .visible = false,
    .named = true,
  },
  [sym_as_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__as_expr] = {
    .visible = false,
    .named = true,
  },
  [sym_break_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__break_expr] = {
    .visible = false,
    .named = true,
  },
  [sym_cont_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__cont_expr] = {
    .visible = false,
    .named = true,
  },
  [sym__expr_ending_with_block] = {
    .visible = false,
    .named = true,
  },
  [sym_if_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__if_expr] = {
    .visible = false,
    .named = true,
  },
  [sym__else_clause] = {
    .visible = false,
    .named = true,
  },
  [sym_while_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__while_expr] = {
    .visible = false,
    .named = true,
  },
  [sym_for_expr] = {
    .visible = true,
    .named = true,
  },
  [sym__for_expr] = {
    .visible = false,
    .named = true,
  },
  [sym__loop_else_clause] = {
    .visible = false,
    .named = true,
  },
  [sym_labeled] = {
    .visible = true,
    .named = true,
  },
  [sym__labeled] = {
    .visible = false,
    .named = true,
  },
  [sym_block] = {
    .visible = true,
    .named = true,
  },
  [sym__block] = {
    .visible = false,
    .named = true,
  },
  [sym_label] = {
    .visible = true,
    .named = true,
  },
  [sym_underscore] = {
    .visible = true,
    .named = true,
  },
  [sym__underscore] = {
    .visible = false,
    .named = true,
  },
  [sym_ident] = {
    .visible = true,
    .named = true,
  },
  [aux_sym_trans_unit_repeat1] = {
    .visible = false,
    .named = false,
  },
  [aux_sym__paras_repeat1] = {
    .visible = false,
    .named = false,
  },
  [aux_sym__args_repeat1] = {
    .visible = false,
    .named = false,
  },
  [aux_sym__block_repeat1] = {
    .visible = false,
    .named = false,
  },
};

enum ts_field_identifiers {
  field_args = 1,
  field_block = 2,
  field_body = 3,
  field_cond = 4,
  field_el = 5,
  field_fls = 6,
  field_fn = 7,
  field_id = 8,
  field_inner = 9,
  field_lab = 10,
  field_lhs = 11,
  field_name = 12,
  field_paras = 13,
  field_pat = 14,
  field_range = 15,
  field_ret = 16,
  field_rhs = 17,
  field_sign = 18,
  field_tru = 19,
  field_ty = 20,
  field_val = 21,
};

static const char * const ts_field_names[] = {
  [0] = NULL,
  [field_args] = "args",
  [field_block] = "block",
  [field_body] = "body",
  [field_cond] = "cond",
  [field_el] = "el",
  [field_fls] = "fls",
  [field_fn] = "fn",
  [field_id] = "id",
  [field_inner] = "inner",
  [field_lab] = "lab",
  [field_lhs] = "lhs",
  [field_name] = "name",
  [field_paras] = "paras",
  [field_pat] = "pat",
  [field_range] = "range",
  [field_ret] = "ret",
  [field_rhs] = "rhs",
  [field_sign] = "sign",
  [field_tru] = "tru",
  [field_ty] = "ty",
  [field_val] = "val",
};

static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = {
  [1] = {.index = 0, .length = 3},
  [2] = {.index = 3, .length = 3},
  [3] = {.index = 6, .length = 2},
  [4] = {.index = 8, .length = 1},
  [5] = {.index = 9, .length = 1},
  [6] = {.index = 10, .length = 1},
  [7] = {.index = 11, .length = 1},
  [8] = {.index = 12, .length = 2},
  [9] = {.index = 14, .length = 1},
  [10] = {.index = 15, .length = 2},
  [11] = {.index = 17, .length = 2},
  [12] = {.index = 19, .length = 2},
  [13] = {.index = 21, .length = 1},
  [14] = {.index = 22, .length = 3},
  [15] = {.index = 25, .length = 3},
  [16] = {.index = 28, .length = 4},
  [17] = {.index = 32, .length = 2},
  [18] = {.index = 34, .length = 2},
  [19] = {.index = 36, .length = 1},
  [20] = {.index = 37, .length = 2},
  [21] = {.index = 39, .length = 1},
  [22] = {.index = 40, .length = 1},
  [23] = {.index = 41, .length = 2},
  [24] = {.index = 43, .length = 2},
  [25] = {.index = 45, .length = 1},
  [26] = {.index = 46, .length = 2},
  [27] = {.index = 48, .length = 1},
  [28] = {.index = 49, .length = 3},
  [29] = {.index = 52, .length = 2},
  [30] = {.index = 54, .length = 2},
  [31] = {.index = 56, .length = 2},
  [32] = {.index = 58, .length = 2},
  [33] = {.index = 60, .length = 2},
  [34] = {.index = 62, .length = 2},
  [35] = {.index = 64, .length = 3},
  [36] = {.index = 67, .length = 2},
  [37] = {.index = 69, .length = 3},
  [38] = {.index = 72, .length = 3},
  [39] = {.index = 75, .length = 3},
  [40] = {.index = 78, .length = 4},
};

static const TSFieldMapEntry ts_field_map_entries[] = {
  [0] =
    {field_body, 0, .inherited = true},
    {field_name, 0, .inherited = true},
    {field_sign, 0, .inherited = true},
  [3] =
    {field_pat, 0, .inherited = true},
    {field_ty, 0, .inherited = true},
    {field_val, 0, .inherited = true},
  [6] =
    {field_pat, 0, .inherited = true},
    {field_val, 0, .inherited = true},
  [8] =
    {field_id, 0, .inherited = true},
  [9] =
    {field_inner, 0, .inherited = true},
  [10] =
    {field_id, 0},
  [11] =
    {field_id, 1},
  [12] =
    {field_paras, 0, .inherited = true},
    {field_ret, 0, .inherited = true},
  [14] =
    {field_inner, 2},
  [15] =
    {field_lhs, 0, .inherited = true},
    {field_rhs, 0, .inherited = true},
  [17] =
    {field_ty, 0, .inherited = true},
    {field_val, 0, .inherited = true},
  [19] =
    {field_lab, 0, .inherited = true},
    {field_val, 0, .inherited = true},
  [21] =
    {field_lab, 0, .inherited = true},
  [22] =
    {field_cond, 0, .inherited = true},
    {field_fls, 0, .inherited = true},
    {field_tru, 0, .inherited = true},
  [25] =
    {field_body, 0, .inherited = true},
    {field_cond, 0, .inherited = true},
    {field_el, 0, .inherited = true},
  [28] =
    {field_body, 0, .inherited = true},
    {field_el, 0, .inherited = true},
    {field_pat, 0, .inherited = true},
    {field_range, 0, .inherited = true},
  [32] =
    {field_block, 0, .inherited = true},
    {field_lab, 0, .inherited = true},
  [34] =
    {field_pat, 0},
    {field_ty, 2},
  [36] =
    {field_paras, 1},
  [37] =
    {field_name, 0},
    {field_sign, 2},
  [39] =
    {field_val, 1},
  [40] =
    {field_lab, 1},
  [41] =
    {field_pat, 0},
    {field_val, 3},
  [43] =
    {field_args, 1},
    {field_fn, 0},
  [45] =
    {field_ret, 2},
  [46] =
    {field_pat, 0, .inherited = true},
    {field_ty, 0, .inherited = true},
  [48] =
    {field_pat, 0},
  [49] =
    {field_body, 4},
    {field_name, 0},
    {field_sign, 2},
  [52] =
    {field_lab, 1},
    {field_val, 2},
  [54] =
    {field_cond, 1},
    {field_tru, 2},
  [56] =
    {field_body, 2},
    {field_cond, 1},
  [58] =
    {field_lhs, 0},
    {field_rhs, 2},
  [60] =
    {field_ty, 2},
    {field_val, 0},
  [62] =
    {field_block, 2},
    {field_lab, 0},
  [64] =
    {field_pat, 0},
    {field_ty, 2},
    {field_val, 4},
  [67] =
    {field_paras, 1},
    {field_ret, 3},
  [69] =
    {field_cond, 1},
    {field_fls, 3},
    {field_tru, 2},
  [72] =
    {field_body, 2},
    {field_cond, 1},
    {field_el, 3},
  [75] =
    {field_body, 4},
    {field_pat, 1},
    {field_range, 3},
  [78] =
    {field_body, 4},
    {field_el, 5},
    {field_pat, 1},
    {field_range, 3},
};

static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = {
  [0] = {0},
};

static const uint16_t ts_non_terminal_alias_map[] = {
  0,
};

static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
  [0] = 0,
  [1] = 1,
  [2] = 2,
  [3] = 3,
  [4] = 2,
  [5] = 3,
  [6] = 6,
  [7] = 7,
  [8] = 7,
  [9] = 9,
  [10] = 10,
  [11] = 11,
  [12] = 12,
  [13] = 13,
  [14] = 14,
  [15] = 15,
  [16] = 16,
  [17] = 17,
  [18] = 13,
  [19] = 19,
  [20] = 20,
  [21] = 21,
  [22] = 22,
  [23] = 16,
  [24] = 17,
  [25] = 25,
  [26] = 26,
  [27] = 27,
  [28] = 28,
  [29] = 29,
  [30] = 30,
  [31] = 31,
  [32] = 32,
  [33] = 33,
  [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] = 56,
  [57] = 57,
  [58] = 58,
  [59] = 59,
  [60] = 60,
  [61] = 61,
  [62] = 62,
  [63] = 63,
  [64] = 64,
  [65] = 29,
  [66] = 27,
  [67] = 67,
  [68] = 28,
  [69] = 69,
  [70] = 61,
  [71] = 32,
  [72] = 72,
  [73] = 72,
  [74] = 46,
  [75] = 75,
  [76] = 33,
  [77] = 30,
  [78] = 44,
  [79] = 31,
  [80] = 80,
  [81] = 81,
  [82] = 82,
  [83] = 83,
  [84] = 84,
  [85] = 85,
  [86] = 86,
  [87] = 87,
  [88] = 88,
  [89] = 38,
  [90] = 90,
  [91] = 91,
  [92] = 92,
  [93] = 39,
  [94] = 43,
  [95] = 95,
  [96] = 96,
  [97] = 97,
  [98] = 41,
  [99] = 42,
  [100] = 100,
  [101] = 101,
  [102] = 40,
  [103] = 103,
  [104] = 34,
  [105] = 35,
  [106] = 37,
  [107] = 107,
  [108] = 108,
  [109] = 109,
  [110] = 110,
  [111] = 111,
  [112] = 112,
  [113] = 81,
  [114] = 95,
  [115] = 115,
  [116] = 112,
  [117] = 36,
  [118] = 118,
  [119] = 119,
  [120] = 120,
  [121] = 121,
  [122] = 121,
  [123] = 119,
  [124] = 124,
  [125] = 125,
  [126] = 126,
  [127] = 127,
  [128] = 128,
  [129] = 129,
  [130] = 130,
  [131] = 129,
  [132] = 132,
  [133] = 133,
  [134] = 134,
  [135] = 135,
  [136] = 136,
  [137] = 137,
  [138] = 138,
  [139] = 139,
  [140] = 140,
  [141] = 141,
  [142] = 142,
  [143] = 143,
  [144] = 143,
  [145] = 145,
  [146] = 136,
  [147] = 147,
  [148] = 148,
  [149] = 149,
  [150] = 150,
  [151] = 151,
  [152] = 152,
  [153] = 153,
  [154] = 154,
  [155] = 155,
  [156] = 156,
  [157] = 157,
  [158] = 158,
  [159] = 152,
  [160] = 160,
  [161] = 161,
  [162] = 162,
  [163] = 163,
  [164] = 164,
  [165] = 165,
  [166] = 166,
  [167] = 161,
  [168] = 168,
  [169] = 169,
  [170] = 170,
  [171] = 170,
};

static const TSCharacterRange sym__label_character_set_1[] = {
  {'A', 'Z'}, {'_', '_'}, {'a', 'z'}, {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6},
  {0xf8, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, {0x2ec, 0x2ec}, {0x2ee, 0x2ee}, {0x370, 0x374}, {0x376, 0x377}, {0x37b, 0x37d},
  {0x37f, 0x37f}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3f5}, {0x3f7, 0x481}, {0x48a, 0x52f},
  {0x531, 0x556}, {0x559, 0x559}, {0x560, 0x588}, {0x5d0, 0x5ea}, {0x5ef, 0x5f2}, {0x620, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3},
  {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x7a5},
  {0x7b1, 0x7b1}, {0x7ca, 0x7ea}, {0x7f4, 0x7f5}, {0x7fa, 0x7fa}, {0x800, 0x815}, {0x81a, 0x81a}, {0x824, 0x824}, {0x828, 0x828},
  {0x840, 0x858}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88e}, {0x8a0, 0x8c9}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950},
  {0x958, 0x961}, {0x971, 0x980}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9},
  {0x9bd, 0x9bd}, {0x9ce, 0x9ce}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0x9fc, 0x9fc}, {0xa05, 0xa0a}, {0xa0f, 0xa10},
  {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74},
  {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0},
  {0xae0, 0xae1}, {0xaf9, 0xaf9}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39},
  {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95},
  {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb9}, {0xbd0, 0xbd0}, {0xc05, 0xc0c},
  {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, {0xc3d, 0xc3d}, {0xc58, 0xc5a}, {0xc5d, 0xc5d}, {0xc60, 0xc61}, {0xc80, 0xc80},
  {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcdd, 0xcde}, {0xce0, 0xce1},
  {0xcf1, 0xcf2}, {0xd04, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd3a}, {0xd3d, 0xd3d}, {0xd4e, 0xd4e}, {0xd54, 0xd56}, {0xd5f, 0xd61},
  {0xd7a, 0xd7f}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe32},
  {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe86, 0xe8a}, {0xe8c, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xeb0}, {0xeb2, 0xeb2},
  {0xebd, 0xebd}, {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedf}, {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6c}, {0xf88, 0xf8c},
  {0x1000, 0x102a}, {0x103f, 0x103f}, {0x1050, 0x1055}, {0x105a, 0x105d}, {0x1061, 0x1061}, {0x1065, 0x1066}, {0x106e, 0x1070}, {0x1075, 0x1081},
  {0x108e, 0x108e}, {0x10a0, 0x10c5}, {0x10c7, 0x10c7}, {0x10cd, 0x10cd}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256},
  {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0},
  {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd},
  {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8}, {0x1700, 0x1711}, {0x171f, 0x1731}, {0x1740, 0x1751},
  {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1878}, {0x1880, 0x18a8}, {0x18aa, 0x18aa},
  {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x1a00, 0x1a16}, {0x1a20, 0x1a54},
  {0x1aa7, 0x1aa7}, {0x1b05, 0x1b33}, {0x1b45, 0x1b4c}, {0x1b83, 0x1ba0}, {0x1bae, 0x1baf}, {0x1bba, 0x1be5}, {0x1c00, 0x1c23}, {0x1c4d, 0x1c4f},
  {0x1c5a, 0x1c7d}, {0x1c80, 0x1c8a}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf3}, {0x1cf5, 0x1cf6}, {0x1cfa, 0x1cfa},
  {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
  {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
  {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f}, {0x2090, 0x209c}, {0x2102, 0x2102},
  {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, {0x2118, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x2139},
  {0x213c, 0x213f}, {0x2145, 0x2149}, {0x214e, 0x214e}, {0x2160, 0x2188}, {0x2c00, 0x2ce4}, {0x2ceb, 0x2cee}, {0x2cf2, 0x2cf3}, {0x2d00, 0x2d25},
  {0x2d27, 0x2d27}, {0x2d2d, 0x2d2d}, {0x2d30, 0x2d67}, {0x2d6f, 0x2d6f}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6},
  {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3005, 0x3007}, {0x3021, 0x3029}, {0x3031, 0x3035},
  {0x3038, 0x303c}, {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31bf},
  {0x31f0, 0x31ff}, {0x3400, 0x4dbf}, {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa61f}, {0xa62a, 0xa62b}, {0xa640, 0xa66e},
  {0xa67f, 0xa69d}, {0xa6a0, 0xa6ef}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7cd}, {0xa7d0, 0xa7d1}, {0xa7d3, 0xa7d3}, {0xa7d5, 0xa7dc},
  {0xa7f2, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, {0xa8fb, 0xa8fb},
  {0xa8fd, 0xa8fe}, {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2}, {0xa9cf, 0xa9cf}, {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef},
  {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7a, 0xaa7a}, {0xaa7e, 0xaaaf}, {0xaab1, 0xaab1},
  {0xaab5, 0xaab6}, {0xaab9, 0xaabd}, {0xaac0, 0xaac0}, {0xaac2, 0xaac2}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4}, {0xab01, 0xab06},
  {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab69}, {0xab70, 0xabe2}, {0xac00, 0xd7a3},
  {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28},
  {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d},
  {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77}, {0xfe79, 0xfe79}, {0xfe7b, 0xfe7b},
  {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xff9d}, {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf},
  {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d},
  {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x10375}, {0x10380, 0x1039d},
  {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563},
  {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, {0x10594, 0x10595}, {0x10597, 0x105a1}, {0x105a3, 0x105b1}, {0x105b3, 0x105b9}, {0x105bb, 0x105bc},
  {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, {0x10787, 0x107b0}, {0x107b2, 0x107ba}, {0x10800, 0x10805},
  {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2},
  {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a00}, {0x10a10, 0x10a13}, {0x10a15, 0x10a17},
  {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72},
  {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d23}, {0x10d4a, 0x10d65}, {0x10d6f, 0x10d85}, {0x10e80, 0x10ea9},
  {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec4}, {0x10f00, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f45}, {0x10f70, 0x10f81}, {0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6},
  {0x11003, 0x11037}, {0x11071, 0x11072}, {0x11075, 0x11075}, {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126}, {0x11144, 0x11144}, {0x11147, 0x11147},
  {0x11150, 0x11172}, {0x11176, 0x11176}, {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x111da, 0x111da}, {0x111dc, 0x111dc}, {0x11200, 0x11211}, {0x11213, 0x1122b},
  {0x1123f, 0x11240}, {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112de}, {0x11305, 0x1130c},
  {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133d, 0x1133d}, {0x11350, 0x11350}, {0x1135d, 0x11361},
  {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113b7}, {0x113d1, 0x113d1}, {0x113d3, 0x113d3}, {0x11400, 0x11434},
  {0x11447, 0x1144a}, {0x1145f, 0x11461}, {0x11480, 0x114af}, {0x114c4, 0x114c5}, {0x114c7, 0x114c7}, {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f},
  {0x11644, 0x11644}, {0x11680, 0x116aa}, {0x116b8, 0x116b8}, {0x11700, 0x1171a}, {0x11740, 0x11746}, {0x11800, 0x1182b}, {0x118a0, 0x118df}, {0x118ff, 0x11906},
  {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x1192f}, {0x1193f, 0x1193f}, {0x11941, 0x11941}, {0x119a0, 0x119a7}, {0x119aa, 0x119d0},
  {0x119e1, 0x119e1}, {0x119e3, 0x119e3}, {0x11a00, 0x11a00}, {0x11a0b, 0x11a32}, {0x11a3a, 0x11a3a}, {0x11a50, 0x11a50}, {0x11a5c, 0x11a89}, {0x11a9d, 0x11a9d},
  {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c40, 0x11c40}, {0x11c72, 0x11c8f}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09},
  {0x11d0b, 0x11d30}, {0x11d46, 0x11d46}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d89}, {0x11d98, 0x11d98}, {0x11ee0, 0x11ef2}, {0x11f02, 0x11f02},
  {0x11f04, 0x11f10}, {0x11f12, 0x11f33}, {0x11fb0, 0x11fb0}, {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f},
  {0x13441, 0x13446}, {0x13460, 0x143fa}, {0x14400, 0x14646}, {0x16100, 0x1611d}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a70, 0x16abe}, {0x16ad0, 0x16aed},
  {0x16b00, 0x16b2f}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f4a}, {0x16f50, 0x16f50},
  {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe3}, {0x17000, 0x187f7}, {0x18800, 0x18cd5}, {0x18cff, 0x18d08}, {0x1aff0, 0x1aff3}, {0x1aff5, 0x1affb},
  {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a},
  {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6},
  {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c},
  {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
  {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2},
  {0x1d7c4, 0x1d7cb}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e030, 0x1e06d}, {0x1e100, 0x1e12c}, {0x1e137, 0x1e13d}, {0x1e14e, 0x1e14e}, {0x1e290, 0x1e2ad},
  {0x1e2c0, 0x1e2eb}, {0x1e4d0, 0x1e4eb}, {0x1e5d0, 0x1e5ed}, {0x1e5f0, 0x1e5f0}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb}, {0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe},
  {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1e94b, 0x1e94b}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee24, 0x1ee24}, {0x1ee27, 0x1ee27},
  {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42}, {0x1ee47, 0x1ee47}, {0x1ee49, 0x1ee49}, {0x1ee4b, 0x1ee4b},
  {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59}, {0x1ee5b, 0x1ee5b}, {0x1ee5d, 0x1ee5d}, {0x1ee5f, 0x1ee5f},
  {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee7e, 0x1ee7e}, {0x1ee80, 0x1ee89},
  {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6df}, {0x2a700, 0x2b739}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1},
  {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x323af},
};

static const TSCharacterRange sym__label_character_set_2[] = {
  {'0', '9'}, {'A', 'Z'}, {'_', '_'}, {'a', 'z'}, {0xaa, 0xaa}, {0xb5, 0xb5}, {0xb7, 0xb7}, {0xba, 0xba},
  {0xc0, 0xd6}, {0xd8, 0xf6}, {0xf8, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, {0x2ec, 0x2ec}, {0x2ee, 0x2ee}, {0x300, 0x374},
  {0x376, 0x377}, {0x37b, 0x37d}, {0x37f, 0x37f}, {0x386, 0x38a}, {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3f5}, {0x3f7, 0x481},
  {0x483, 0x487}, {0x48a, 0x52f}, {0x531, 0x556}, {0x559, 0x559}, {0x560, 0x588}, {0x591, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2},
  {0x5c4, 0x5c5}, {0x5c7, 0x5c7}, {0x5d0, 0x5ea}, {0x5ef, 0x5f2}, {0x610, 0x61a}, {0x620, 0x669}, {0x66e, 0x6d3}, {0x6d5, 0x6dc},
  {0x6df, 0x6e8}, {0x6ea, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x74a}, {0x74d, 0x7b1}, {0x7c0, 0x7f5}, {0x7fa, 0x7fa}, {0x7fd, 0x7fd},
  {0x800, 0x82d}, {0x840, 0x85b}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88e}, {0x897, 0x8e1}, {0x8e3, 0x963}, {0x966, 0x96f},
  {0x971, 0x983}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bc, 0x9c4},
  {0x9c7, 0x9c8}, {0x9cb, 0x9ce}, {0x9d7, 0x9d7}, {0x9dc, 0x9dd}, {0x9df, 0x9e3}, {0x9e6, 0x9f1}, {0x9fc, 0x9fc}, {0x9fe, 0x9fe},
  {0xa01, 0xa03}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39},
  {0xa3c, 0xa3c}, {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa51, 0xa51}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa66, 0xa75},
  {0xa81, 0xa83}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabc, 0xac5},
  {0xac7, 0xac9}, {0xacb, 0xacd}, {0xad0, 0xad0}, {0xae0, 0xae3}, {0xae6, 0xaef}, {0xaf9, 0xaff}, {0xb01, 0xb03}, {0xb05, 0xb0c},
  {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3c, 0xb44}, {0xb47, 0xb48}, {0xb4b, 0xb4d},
  {0xb55, 0xb57}, {0xb5c, 0xb5d}, {0xb5f, 0xb63}, {0xb66, 0xb6f}, {0xb71, 0xb71}, {0xb82, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90},
  {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb9}, {0xbbe, 0xbc2},
  {0xbc6, 0xbc8}, {0xbca, 0xbcd}, {0xbd0, 0xbd0}, {0xbd7, 0xbd7}, {0xbe6, 0xbef}, {0xc00, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
  {0xc2a, 0xc39}, {0xc3c, 0xc44}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc58, 0xc5a}, {0xc5d, 0xc5d}, {0xc60, 0xc63},
  {0xc66, 0xc6f}, {0xc80, 0xc83}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbc, 0xcc4},
  {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, {0xcdd, 0xcde}, {0xce0, 0xce3}, {0xce6, 0xcef}, {0xcf1, 0xcf3}, {0xd00, 0xd0c},
  {0xd0e, 0xd10}, {0xd12, 0xd44}, {0xd46, 0xd48}, {0xd4a, 0xd4e}, {0xd54, 0xd57}, {0xd5f, 0xd63}, {0xd66, 0xd6f}, {0xd7a, 0xd7f},
  {0xd81, 0xd83}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xdca, 0xdca}, {0xdcf, 0xdd4},
  {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xde6, 0xdef}, {0xdf2, 0xdf3}, {0xe01, 0xe3a}, {0xe40, 0xe4e}, {0xe50, 0xe59}, {0xe81, 0xe82},
  {0xe84, 0xe84}, {0xe86, 0xe8a}, {0xe8c, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xebd}, {0xec0, 0xec4}, {0xec6, 0xec6}, {0xec8, 0xece},
  {0xed0, 0xed9}, {0xedc, 0xedf}, {0xf00, 0xf00}, {0xf18, 0xf19}, {0xf20, 0xf29}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39},
  {0xf3e, 0xf47}, {0xf49, 0xf6c}, {0xf71, 0xf84}, {0xf86, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x1000, 0x1049}, {0x1050, 0x109d},
  {0x10a0, 0x10c5}, {0x10c7, 0x10c7}, {0x10cd, 0x10cd}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, {0x1258, 0x1258},
  {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
  {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x135f}, {0x1369, 0x1371}, {0x1380, 0x138f}, {0x13a0, 0x13f5},
  {0x13f8, 0x13fd}, {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8}, {0x1700, 0x1715}, {0x171f, 0x1734},
  {0x1740, 0x1753}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17d3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dd}, {0x17e0, 0x17e9},
  {0x180b, 0x180d}, {0x180f, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1920, 0x192b}, {0x1930, 0x193b},
  {0x1946, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x1a00, 0x1a1b}, {0x1a20, 0x1a5e}, {0x1a60, 0x1a7c},
  {0x1a7f, 0x1a89}, {0x1a90, 0x1a99}, {0x1aa7, 0x1aa7}, {0x1ab0, 0x1abd}, {0x1abf, 0x1ace}, {0x1b00, 0x1b4c}, {0x1b50, 0x1b59}, {0x1b6b, 0x1b73},
  {0x1b80, 0x1bf3}, {0x1c00, 0x1c37}, {0x1c40, 0x1c49}, {0x1c4d, 0x1c7d}, {0x1c80, 0x1c8a}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1cd0, 0x1cd2},
  {0x1cd4, 0x1cfa}, {0x1d00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
  {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
  {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x200c, 0x200d}, {0x203f, 0x2040}, {0x2054, 0x2054}, {0x2071, 0x2071},
  {0x207f, 0x207f}, {0x2090, 0x209c}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x20e5, 0x20f0}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113},
  {0x2115, 0x2115}, {0x2118, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149},
  {0x214e, 0x214e}, {0x2160, 0x2188}, {0x2c00, 0x2ce4}, {0x2ceb, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d27, 0x2d27}, {0x2d2d, 0x2d2d}, {0x2d30, 0x2d67},
  {0x2d6f, 0x2d6f}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce},
  {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007}, {0x3021, 0x302f}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096},
  {0x3099, 0x309a}, {0x309d, 0x309f}, {0x30a1, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31bf}, {0x31f0, 0x31ff}, {0x3400, 0x4dbf},
  {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa62b}, {0xa640, 0xa66f}, {0xa674, 0xa67d}, {0xa67f, 0xa6f1}, {0xa717, 0xa71f},
  {0xa722, 0xa788}, {0xa78b, 0xa7cd}, {0xa7d0, 0xa7d1}, {0xa7d3, 0xa7d3}, {0xa7d5, 0xa7dc}, {0xa7f2, 0xa827}, {0xa82c, 0xa82c}, {0xa840, 0xa873},
  {0xa880, 0xa8c5}, {0xa8d0, 0xa8d9}, {0xa8e0, 0xa8f7}, {0xa8fb, 0xa8fb}, {0xa8fd, 0xa92d}, {0xa930, 0xa953}, {0xa960, 0xa97c}, {0xa980, 0xa9c0},
  {0xa9cf, 0xa9d9}, {0xa9e0, 0xa9fe}, {0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa60, 0xaa76}, {0xaa7a, 0xaac2}, {0xaadb, 0xaadd},
  {0xaae0, 0xaaef}, {0xaaf2, 0xaaf6}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a},
  {0xab5c, 0xab69}, {0xab70, 0xabea}, {0xabec, 0xabed}, {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d},
  {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41},
  {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe00, 0xfe0f},
  {0xfe20, 0xfe2f}, {0xfe33, 0xfe34}, {0xfe4d, 0xfe4f}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77}, {0xfe79, 0xfe79}, {0xfe7b, 0xfe7b},
  {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff10, 0xff19}, {0xff21, 0xff3a}, {0xff3f, 0xff3f}, {0xff41, 0xff5a}, {0xff65, 0xffbe}, {0xffc2, 0xffc7},
  {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
  {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x101fd, 0x101fd}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x102e0, 0x102e0}, {0x10300, 0x1031f},
  {0x1032d, 0x1034a}, {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104a0, 0x104a9},
  {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, {0x10594, 0x10595},
  {0x10597, 0x105a1}, {0x105a3, 0x105b1}, {0x105b3, 0x105b9}, {0x105bb, 0x105bc}, {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767},
  {0x10780, 0x10785}, {0x10787, 0x107b0}, {0x107b2, 0x107ba}, {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083c, 0x1083c},
  {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7},
  {0x109be, 0x109bf}, {0x10a00, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a38, 0x10a3a}, {0x10a3f, 0x10a3f},
  {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae6}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91},
  {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27}, {0x10d30, 0x10d39}, {0x10d40, 0x10d65}, {0x10d69, 0x10d6d}, {0x10d6f, 0x10d85},
  {0x10e80, 0x10ea9}, {0x10eab, 0x10eac}, {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec4}, {0x10efc, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f50}, {0x10f70, 0x10f85},
  {0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6}, {0x11000, 0x11046}, {0x11066, 0x11075}, {0x1107f, 0x110ba}, {0x110c2, 0x110c2}, {0x110d0, 0x110e8}, {0x110f0, 0x110f9},
  {0x11100, 0x11134}, {0x11136, 0x1113f}, {0x11144, 0x11147}, {0x11150, 0x11173}, {0x11176, 0x11176}, {0x11180, 0x111c4}, {0x111c9, 0x111cc}, {0x111ce, 0x111da},
  {0x111dc, 0x111dc}, {0x11200, 0x11211}, {0x11213, 0x11237}, {0x1123e, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d},
  {0x1129f, 0x112a8}, {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330},
  {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x11350, 0x11350}, {0x11357, 0x11357}, {0x1135d, 0x11363},
  {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113c0}, {0x113c2, 0x113c2},
  {0x113c5, 0x113c5}, {0x113c7, 0x113ca}, {0x113cc, 0x113d3}, {0x113e1, 0x113e2}, {0x11400, 0x1144a}, {0x11450, 0x11459}, {0x1145e, 0x11461}, {0x11480, 0x114c5},
  {0x114c7, 0x114c7}, {0x114d0, 0x114d9}, {0x11580, 0x115b5}, {0x115b8, 0x115c0}, {0x115d8, 0x115dd}, {0x11600, 0x11640}, {0x11644, 0x11644}, {0x11650, 0x11659},
  {0x11680, 0x116b8}, {0x116c0, 0x116c9}, {0x116d0, 0x116e3}, {0x11700, 0x1171a}, {0x1171d, 0x1172b}, {0x11730, 0x11739}, {0x11740, 0x11746}, {0x11800, 0x1183a},
  {0x118a0, 0x118e9}, {0x118ff, 0x11906}, {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x11935}, {0x11937, 0x11938}, {0x1193b, 0x11943},
  {0x11950, 0x11959}, {0x119a0, 0x119a7}, {0x119aa, 0x119d7}, {0x119da, 0x119e1}, {0x119e3, 0x119e4}, {0x11a00, 0x11a3e}, {0x11a47, 0x11a47}, {0x11a50, 0x11a99},
  {0x11a9d, 0x11a9d}, {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, {0x11bf0, 0x11bf9}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36}, {0x11c38, 0x11c40}, {0x11c50, 0x11c59},
  {0x11c72, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d36}, {0x11d3a, 0x11d3a}, {0x11d3c, 0x11d3d},
  {0x11d3f, 0x11d47}, {0x11d50, 0x11d59}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91}, {0x11d93, 0x11d98}, {0x11da0, 0x11da9},
  {0x11ee0, 0x11ef6}, {0x11f00, 0x11f10}, {0x11f12, 0x11f3a}, {0x11f3e, 0x11f42}, {0x11f50, 0x11f5a}, {0x11fb0, 0x11fb0}, {0x12000, 0x12399}, {0x12400, 0x1246e},
  {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f}, {0x13440, 0x13455}, {0x13460, 0x143fa}, {0x14400, 0x14646}, {0x16100, 0x16139}, {0x16800, 0x16a38},
  {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a70, 0x16abe}, {0x16ac0, 0x16ac9}, {0x16ad0, 0x16aed}, {0x16af0, 0x16af4}, {0x16b00, 0x16b36}, {0x16b40, 0x16b43},
  {0x16b50, 0x16b59}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16d70, 0x16d79}, {0x16e40, 0x16e7f}, {0x16f00, 0x16f4a}, {0x16f4f, 0x16f87},
  {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe4}, {0x16ff0, 0x16ff1}, {0x17000, 0x187f7}, {0x18800, 0x18cd5}, {0x18cff, 0x18d08}, {0x1aff0, 0x1aff3},
  {0x1aff5, 0x1affb}, {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167}, {0x1b170, 0x1b2fb},
  {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1bc9d, 0x1bc9e}, {0x1ccf0, 0x1ccf9}, {0x1cf00, 0x1cf2d}, {0x1cf30, 0x1cf46},
  {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c},
  {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505},
  {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
  {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e},
  {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1d7ce, 0x1d7ff}, {0x1da00, 0x1da36}, {0x1da3b, 0x1da6c}, {0x1da75, 0x1da75},
  {0x1da84, 0x1da84}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e000, 0x1e006}, {0x1e008, 0x1e018}, {0x1e01b, 0x1e021},
  {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e030, 0x1e06d}, {0x1e08f, 0x1e08f}, {0x1e100, 0x1e12c}, {0x1e130, 0x1e13d}, {0x1e140, 0x1e149}, {0x1e14e, 0x1e14e},
  {0x1e290, 0x1e2ae}, {0x1e2c0, 0x1e2f9}, {0x1e4d0, 0x1e4f9}, {0x1e5d0, 0x1e5fa}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb}, {0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe},
  {0x1e800, 0x1e8c4}, {0x1e8d0, 0x1e8d6}, {0x1e900, 0x1e94b}, {0x1e950, 0x1e959}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22}, {0x1ee24, 0x1ee24},
  {0x1ee27, 0x1ee27}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42}, {0x1ee47, 0x1ee47}, {0x1ee49, 0x1ee49},
  {0x1ee4b, 0x1ee4b}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59}, {0x1ee5b, 0x1ee5b}, {0x1ee5d, 0x1ee5d},
  {0x1ee5f, 0x1ee5f}, {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, {0x1ee7e, 0x1ee7e},
  {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1fbf0, 0x1fbf9}, {0x20000, 0x2a6df}, {0x2a700, 0x2b739},
  {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x323af}, {0xe0100, 0xe01ef},
};

static bool ts_lex(TSLexer *lexer, TSStateId state) {
  START_LEXER();
  eof = lexer->eof(lexer);
  switch (state) {
    case 0:
      if (eof) ADVANCE(3);
      ADVANCE_MAP(
        '\'', 2,
        '(', 8,
        ')', 10,
        ',', 9,
        '-', 1,
        ':', 4,
        ';', 5,
        '=', 6,
        '{', 11,
        '}', 12,
      );
      if (('\t' <= lookahead && lookahead <= '\r') ||
          lookahead == ' ') SKIP(0);
      if (set_contains(sym__label_character_set_1, 685, lookahead)) ADVANCE(14);
      END_STATE();
    case 1:
      if (lookahead == '>') ADVANCE(7);
      END_STATE();
    case 2:
      if (set_contains(sym__label_character_set_1, 685, lookahead)) ADVANCE(13);
      END_STATE();
    case 3:
      ACCEPT_TOKEN(ts_builtin_sym_end);
      END_STATE();
    case 4:
      ACCEPT_TOKEN(anon_sym_COLON);
      END_STATE();
    case 5:
      ACCEPT_TOKEN(anon_sym_SEMI);
      END_STATE();
    case 6:
      ACCEPT_TOKEN(anon_sym_EQ);
      END_STATE();
    case 7:
      ACCEPT_TOKEN(anon_sym_DASH_GT);
      END_STATE();
    case 8:
      ACCEPT_TOKEN(anon_sym_LPAREN);
      END_STATE();
    case 9:
      ACCEPT_TOKEN(anon_sym_COMMA);
      END_STATE();
    case 10:
      ACCEPT_TOKEN(anon_sym_RPAREN);
      END_STATE();
    case 11:
      ACCEPT_TOKEN(anon_sym_LBRACE);
      END_STATE();
    case 12:
      ACCEPT_TOKEN(anon_sym_RBRACE);
      END_STATE();
    case 13:
      ACCEPT_TOKEN(sym__label);
      if (set_contains(sym__label_character_set_2, 800, lookahead)) ADVANCE(13);
      END_STATE();
    case 14:
      ACCEPT_TOKEN(sym__ident);
      if (set_contains(sym__label_character_set_2, 800, lookahead)) ADVANCE(14);
      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(
        '_', 1,
        'a', 2,
        'b', 3,
        'c', 4,
        'e', 5,
        'f', 6,
        'i', 7,
        'm', 8,
        'w', 9,
      );
      if (('\t' <= lookahead && lookahead <= '\r') ||
          lookahead == ' ') SKIP(0);
      END_STATE();
    case 1:
      ACCEPT_TOKEN(anon_sym__);
      END_STATE();
    case 2:
      if (lookahead == 's') ADVANCE(10);
      END_STATE();
    case 3:
      if (lookahead == 'r') ADVANCE(11);
      END_STATE();
    case 4:
      if (lookahead == 'o') ADVANCE(12);
      END_STATE();
    case 5:
      if (lookahead == 'l') ADVANCE(13);
      END_STATE();
    case 6:
      if (lookahead == 'n') ADVANCE(14);
      if (lookahead == 'o') ADVANCE(15);
      END_STATE();
    case 7:
      if (lookahead == 'f') ADVANCE(16);
      if (lookahead == 'n') ADVANCE(17);
      END_STATE();
    case 8:
      if (lookahead == 'u') ADVANCE(18);
      END_STATE();
    case 9:
      if (lookahead == 'h') ADVANCE(19);
      END_STATE();
    case 10:
      ACCEPT_TOKEN(anon_sym_as);
      if (lookahead == 'm') ADVANCE(20);
      END_STATE();
    case 11:
      if (lookahead == 'e') ADVANCE(21);
      END_STATE();
    case 12:
      if (lookahead == 'n') ADVANCE(22);
      END_STATE();
    case 13:
      if (lookahead == 's') ADVANCE(23);
      END_STATE();
    case 14:
      ACCEPT_TOKEN(anon_sym_fn);
      END_STATE();
    case 15:
      if (lookahead == 'r') ADVANCE(24);
      END_STATE();
    case 16:
      ACCEPT_TOKEN(anon_sym_if);
      END_STATE();
    case 17:
      ACCEPT_TOKEN(anon_sym_in);
      END_STATE();
    case 18:
      if (lookahead == 't') ADVANCE(25);
      END_STATE();
    case 19:
      if (lookahead == 'i') ADVANCE(26);
      END_STATE();
    case 20:
      ACCEPT_TOKEN(anon_sym_asm);
      END_STATE();
    case 21:
      if (lookahead == 'a') ADVANCE(27);
      END_STATE();
    case 22:
      if (lookahead == 't') ADVANCE(28);
      END_STATE();
    case 23:
      if (lookahead == 'e') ADVANCE(29);
      END_STATE();
    case 24:
      ACCEPT_TOKEN(anon_sym_for);
      END_STATE();
    case 25:
      ACCEPT_TOKEN(anon_sym_mut);
      END_STATE();
    case 26:
      if (lookahead == 'l') ADVANCE(30);
      END_STATE();
    case 27:
      if (lookahead == 'k') ADVANCE(31);
      END_STATE();
    case 28:
      ACCEPT_TOKEN(anon_sym_cont);
      END_STATE();
    case 29:
      ACCEPT_TOKEN(anon_sym_else);
      END_STATE();
    case 30:
      if (lookahead == 'e') ADVANCE(32);
      END_STATE();
    case 31:
      ACCEPT_TOKEN(anon_sym_break);
      END_STATE();
    case 32:
      ACCEPT_TOKEN(anon_sym_while);
      END_STATE();
    default:
      return false;
  }
}

static const TSLexerMode ts_lex_modes[STATE_COUNT] = {
  [0] = {.lex_state = 0, .external_lex_state = 1},
  [1] = {.lex_state = 0, .reserved_word_set_id = 1},
  [2] = {.lex_state = 0, .reserved_word_set_id = 2},
  [3] = {.lex_state = 0, .reserved_word_set_id = 2},
  [4] = {.lex_state = 0, .reserved_word_set_id = 2},
  [5] = {.lex_state = 0, .reserved_word_set_id = 2},
  [6] = {.lex_state = 0, .reserved_word_set_id = 1},
  [7] = {.lex_state = 0, .reserved_word_set_id = 1},
  [8] = {.lex_state = 0, .reserved_word_set_id = 1},
  [9] = {.lex_state = 0, .reserved_word_set_id = 3},
  [10] = {.lex_state = 0, .reserved_word_set_id = 3},
  [11] = {.lex_state = 0, .reserved_word_set_id = 3},
  [12] = {.lex_state = 0, .reserved_word_set_id = 3},
  [13] = {.lex_state = 0, .reserved_word_set_id = 3},
  [14] = {.lex_state = 0, .reserved_word_set_id = 3},
  [15] = {.lex_state = 0, .reserved_word_set_id = 3},
  [16] = {.lex_state = 0, .reserved_word_set_id = 3},
  [17] = {.lex_state = 0, .reserved_word_set_id = 3},
  [18] = {.lex_state = 0, .reserved_word_set_id = 3},
  [19] = {.lex_state = 0, .reserved_word_set_id = 3},
  [20] = {.lex_state = 0, .reserved_word_set_id = 3},
  [21] = {.lex_state = 0, .reserved_word_set_id = 1},
  [22] = {.lex_state = 0, .reserved_word_set_id = 3},
  [23] = {.lex_state = 0, .reserved_word_set_id = 3},
  [24] = {.lex_state = 0, .reserved_word_set_id = 3},
  [25] = {.lex_state = 0, .reserved_word_set_id = 1},
  [26] = {.lex_state = 0, .reserved_word_set_id = 1},
  [27] = {.lex_state = 0, .reserved_word_set_id = 4},
  [28] = {.lex_state = 0, .reserved_word_set_id = 4},
  [29] = {.lex_state = 0, .reserved_word_set_id = 4},
  [30] = {.lex_state = 0, .reserved_word_set_id = 4},
  [31] = {.lex_state = 0, .reserved_word_set_id = 4},
  [32] = {.lex_state = 0, .reserved_word_set_id = 4},
  [33] = {.lex_state = 0, .reserved_word_set_id = 4},
  [34] = {.lex_state = 0, .reserved_word_set_id = 5},
  [35] = {.lex_state = 0, .reserved_word_set_id = 5},
  [36] = {.lex_state = 0, .reserved_word_set_id = 5},
  [37] = {.lex_state = 0, .reserved_word_set_id = 5},
  [38] = {.lex_state = 0, .reserved_word_set_id = 5},
  [39] = {.lex_state = 0, .reserved_word_set_id = 5},
  [40] = {.lex_state = 0, .reserved_word_set_id = 5},
  [41] = {.lex_state = 0, .reserved_word_set_id = 5},
  [42] = {.lex_state = 0, .reserved_word_set_id = 5},
  [43] = {.lex_state = 0, .reserved_word_set_id = 5},
  [44] = {.lex_state = 0, .reserved_word_set_id = 5},
  [45] = {.lex_state = 0, .reserved_word_set_id = 6},
  [46] = {.lex_state = 0, .reserved_word_set_id = 1},
  [47] = {.lex_state = 0, .reserved_word_set_id = 2},
  [48] = {.lex_state = 0, .reserved_word_set_id = 2},
  [49] = {.lex_state = 0, .reserved_word_set_id = 2},
  [50] = {.lex_state = 0, .reserved_word_set_id = 2},
  [51] = {.lex_state = 0, .reserved_word_set_id = 2},
  [52] = {.lex_state = 0, .reserved_word_set_id = 2},
  [53] = {.lex_state = 0, .reserved_word_set_id = 2},
  [54] = {.lex_state = 0, .reserved_word_set_id = 2},
  [55] = {.lex_state = 0, .reserved_word_set_id = 2},
  [56] = {.lex_state = 0, .reserved_word_set_id = 2},
  [57] = {.lex_state = 0, .reserved_word_set_id = 2},
  [58] = {.lex_state = 0, .reserved_word_set_id = 2},
  [59] = {.lex_state = 0, .reserved_word_set_id = 2},
  [60] = {.lex_state = 0, .reserved_word_set_id = 1},
  [61] = {.lex_state = 0, .reserved_word_set_id = 7},
  [62] = {.lex_state = 0},
  [63] = {.lex_state = 0},
  [64] = {.lex_state = 0},
  [65] = {.lex_state = 0},
  [66] = {.lex_state = 0},
  [67] = {.lex_state = 0},
  [68] = {.lex_state = 0},
  [69] = {.lex_state = 0},
  [70] = {.lex_state = 0, .reserved_word_set_id = 7},
  [71] = {.lex_state = 0},
  [72] = {.lex_state = 0},
  [73] = {.lex_state = 0},
  [74] = {.lex_state = 0, .reserved_word_set_id = 1},
  [75] = {.lex_state = 0, .reserved_word_set_id = 1},
  [76] = {.lex_state = 0},
  [77] = {.lex_state = 0},
  [78] = {.lex_state = 0, .reserved_word_set_id = 1},
  [79] = {.lex_state = 0},
  [80] = {.lex_state = 0, .reserved_word_set_id = 1},
  [81] = {.lex_state = 0},
  [82] = {.lex_state = 0, .reserved_word_set_id = 1},
  [83] = {.lex_state = 0},
  [84] = {.lex_state = 0},
  [85] = {.lex_state = 0},
  [86] = {.lex_state = 0},
  [87] = {.lex_state = 0},
  [88] = {.lex_state = 0},
  [89] = {.lex_state = 0},
  [90] = {.lex_state = 0},
  [91] = {.lex_state = 0, .reserved_word_set_id = 1},
  [92] = {.lex_state = 0},
  [93] = {.lex_state = 0},
  [94] = {.lex_state = 0},
  [95] = {.lex_state = 0},
  [96] = {.lex_state = 0},
  [97] = {.lex_state = 0},
  [98] = {.lex_state = 0},
  [99] = {.lex_state = 0},
  [100] = {.lex_state = 0},
  [101] = {.lex_state = 0},
  [102] = {.lex_state = 0},
  [103] = {.lex_state = 0},
  [104] = {.lex_state = 0},
  [105] = {.lex_state = 0},
  [106] = {.lex_state = 0},
  [107] = {.lex_state = 0},
  [108] = {.lex_state = 0, .reserved_word_set_id = 1},
  [109] = {.lex_state = 0, .reserved_word_set_id = 1},
  [110] = {.lex_state = 0},
  [111] = {.lex_state = 0},
  [112] = {.lex_state = 0},
  [113] = {.lex_state = 0},
  [114] = {.lex_state = 0},
  [115] = {.lex_state = 0},
  [116] = {.lex_state = 0},
  [117] = {.lex_state = 0},
  [118] = {.lex_state = 0, .reserved_word_set_id = 1},
  [119] = {.lex_state = 0},
  [120] = {.lex_state = 0},
  [121] = {.lex_state = 0},
  [122] = {.lex_state = 0},
  [123] = {.lex_state = 0},
  [124] = {.lex_state = 0},
  [125] = {.lex_state = 0},
  [126] = {.lex_state = 0},
  [127] = {.lex_state = 0},
  [128] = {.lex_state = 0},
  [129] = {.lex_state = 0},
  [130] = {.lex_state = 0},
  [131] = {.lex_state = 0},
  [132] = {.lex_state = 0},
  [133] = {.lex_state = 0},
  [134] = {.lex_state = 0},
  [135] = {.lex_state = 0},
  [136] = {.lex_state = 0},
  [137] = {.lex_state = 0},
  [138] = {.lex_state = 0},
  [139] = {.lex_state = 0},
  [140] = {.lex_state = 0},
  [141] = {.lex_state = 0},
  [142] = {.lex_state = 0},
  [143] = {.lex_state = 0},
  [144] = {.lex_state = 0},
  [145] = {.lex_state = 0},
  [146] = {.lex_state = 0},
  [147] = {.lex_state = 0},
  [148] = {.lex_state = 0},
  [149] = {.lex_state = 0},
  [150] = {.lex_state = 0},
  [151] = {.lex_state = 0},
  [152] = {.lex_state = 0},
  [153] = {.lex_state = 0, .reserved_word_set_id = 1},
  [154] = {.lex_state = 0},
  [155] = {.lex_state = 0},
  [156] = {.lex_state = 0},
  [157] = {.lex_state = 0},
  [158] = {.lex_state = 0},
  [159] = {.lex_state = 0},
  [160] = {.lex_state = 0},
  [161] = {.lex_state = 0},
  [162] = {.lex_state = 0},
  [163] = {.lex_state = 0, .external_lex_state = 1},
  [164] = {.lex_state = 0},
  [165] = {.lex_state = 0},
  [166] = {.lex_state = 0},
  [167] = {.lex_state = 0},
  [168] = {.lex_state = 0},
  [169] = {.lex_state = 0},
  [170] = {.lex_state = 0},
  [171] = {.lex_state = 0},
};

static const TSSymbol ts_reserved_words[8][MAX_RESERVED_WORD_SET_SIZE] = {
  [1] = {
    anon_sym_fn,
    anon_sym_mut,
    anon_sym_asm,
    anon_sym_as,
    anon_sym_break,
    anon_sym_cont,
    anon_sym_if,
    anon_sym_else,
    anon_sym_while,
    anon_sym_for,
    anon_sym_in,
  },
  [2] = {
    anon_sym_fn,
    anon_sym_as,
    anon_sym_else,
    anon_sym_in,
  },
  [3] = {
    anon_sym_fn,
    anon_sym_mut,
    anon_sym_asm,
    anon_sym_as,
    anon_sym_else,
    anon_sym_in,
  },
  [4] = {
    anon_sym_fn,
    anon_sym_in,
  },
  [5] = {
    anon_sym_fn,
    anon_sym_else,
    anon_sym_in,
  },
  [6] = {
    anon_sym_fn,
    anon_sym_mut,
    anon_sym_asm,
    anon_sym_else,
    anon_sym_in,
  },
  [7] = {
    anon_sym_fn,
    anon_sym_asm,
    anon_sym_as,
    anon_sym_break,
    anon_sym_cont,
    anon_sym_if,
    anon_sym_else,
    anon_sym_while,
    anon_sym_for,
    anon_sym_in,
  },
};

static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
  [STATE(0)] = {
    [ts_builtin_sym_end] = ACTIONS(1),
    [sym__ident] = ACTIONS(1),
    [anon_sym_COLON] = ACTIONS(1),
    [anon_sym_SEMI] = ACTIONS(1),
    [anon_sym_EQ] = ACTIONS(1),
    [anon_sym_fn] = ACTIONS(1),
    [anon_sym_DASH_GT] = ACTIONS(1),
    [anon_sym_LPAREN] = ACTIONS(1),
    [anon_sym_COMMA] = ACTIONS(1),
    [anon_sym_RPAREN] = ACTIONS(1),
    [anon_sym_mut] = ACTIONS(1),
    [anon_sym_asm] = ACTIONS(1),
    [anon_sym_LBRACE] = ACTIONS(1),
    [anon_sym_RBRACE] = ACTIONS(1),
    [anon_sym_as] = ACTIONS(1),
    [anon_sym_break] = ACTIONS(1),
    [anon_sym_cont] = ACTIONS(1),
    [anon_sym_if] = ACTIONS(1),
    [anon_sym_else] = ACTIONS(1),
    [anon_sym_while] = ACTIONS(1),
    [anon_sym_for] = ACTIONS(1),
    [anon_sym_in] = ACTIONS(1),
    [sym__label] = ACTIONS(1),
    [anon_sym__] = ACTIONS(1),
    [sym_llvm_ir] = ACTIONS(1),
  },
  [STATE(1)] = {
    [sym_trans_unit] = STATE(164),
    [sym__global_stmt] = STATE(25),
    [sym__decl_stmt] = STATE(25),
    [sym_fn_def] = STATE(25),
    [sym__fn_def] = STATE(48),
    [sym_binding] = STATE(25),
    [sym__binding] = STATE(52),
    [sym__typed_binding] = STATE(49),
    [sym__auto_binding] = STATE(58),
    [sym__pattern] = STATE(169),
    [sym_pat_wild] = STATE(169),
    [sym__pat_wild] = STATE(157),
    [sym_pat_ident] = STATE(169),
    [sym__pat_ident] = STATE(132),
    [sym_empty_stmt] = STATE(25),
    [sym__empty_stmt] = STATE(57),
    [sym_asm_block] = STATE(25),
    [sym__asm_block] = STATE(59),
    [sym__underscore] = STATE(157),
    [sym_ident] = STATE(168),
    [aux_sym_trans_unit_repeat1] = STATE(25),
    [ts_builtin_sym_end] = ACTIONS(3),
    [sym__ident] = ACTIONS(5),
    [anon_sym_SEMI] = ACTIONS(7),
    [anon_sym_mut] = ACTIONS(9),
    [anon_sym_asm] = ACTIONS(11),
    [anon_sym__] = ACTIONS(13),
  },
  [STATE(2)] = {
    [sym__global_stmt] = STATE(6),
    [sym__decl_stmt] = STATE(6),
    [sym_fn_def] = STATE(6),
    [sym__fn_def] = STATE(48),
    [sym_binding] = STATE(6),
    [sym__binding] = STATE(52),
    [sym__typed_binding] = STATE(49),
    [sym__auto_binding] = STATE(58),
    [sym__pattern] = STATE(169),
    [sym_pat_wild] = STATE(169),
    [sym__pat_wild] = STATE(157),
    [sym_pat_ident] = STATE(169),
    [sym__pat_ident] = STATE(132),
    [sym__stmt] = STATE(6),
    [sym_empty_stmt] = STATE(6),
    [sym__empty_stmt] = STATE(57),
    [sym_asm_block] = STATE(6),
    [sym__asm_block] = STATE(59),
    [sym_expr_stmt] = STATE(6),
    [sym__expr_stmt] = STATE(60),
    [sym__expr] = STATE(123),
    [sym_assign_expr] = STATE(123),
    [sym__assign_expr] = STATE(84),
    [sym_call_expr] = STATE(123),
    [sym_paren_expr] = STATE(123),
    [sym__paren_expr] = STATE(85),
    [sym_as_expr] = STATE(123),
    [sym__as_expr] = STATE(90),
    [sym_break_expr] = STATE(123),
    [sym__break_expr] = STATE(97),
    [sym_cont_expr] = STATE(123),
    [sym__cont_expr] = STATE(100),
    [sym__expr_ending_with_block] = STATE(44),
    [sym_if_expr] = STATE(44),
    [sym__if_expr] = STATE(36),
    [sym_while_expr] = STATE(44),
    [sym__while_expr] = STATE(34),
    [sym_for_expr] = STATE(44),
    [sym__for_expr] = STATE(35),
    [sym_labeled] = STATE(44),
    [sym__labeled] = STATE(37),
    [sym_block] = STATE(44),
    [sym__block] = STATE(30),
    [sym_label] = STATE(167),
    [sym__underscore] = STATE(157),
    [sym_ident] = STATE(125),
    [aux_sym__block_repeat1] = STATE(6),
    [sym__ident] = ACTIONS(5),
    [anon_sym_SEMI] = ACTIONS(7),
    [anon_sym_LPAREN] = ACTIONS(15),
    [anon_sym_mut] = ACTIONS(9),
    [anon_sym_asm] = ACTIONS(11),
    [anon_sym_LBRACE] = ACTIONS(17),
    [anon_sym_RBRACE] = ACTIONS(19),
    [anon_sym_break] = ACTIONS(21),
    [anon_sym_cont] = ACTIONS(23),
    [anon_sym_if] = ACTIONS(25),
    [anon_sym_while] = ACTIONS(27),
    [anon_sym_for] = ACTIONS(29),
    [sym__label] = ACTIONS(31),
    [anon_sym__] = ACTIONS(13),
  },
  [STATE(3)] = {
    [sym__global_stmt] = STATE(4),
    [sym__decl_stmt] = STATE(4),
    [sym_fn_def] = STATE(4),
    [sym__fn_def] = STATE(48),
    [sym_binding] = STATE(4),
    [sym__binding] = STATE(52),
    [sym__typed_binding] = STATE(49),
    [sym__auto_binding] = STATE(58),
    [sym__pattern] = STATE(169),
    [sym_pat_wild] = STATE(169),
    [sym__pat_wild] = STATE(157),
    [sym_pat_ident] = STATE(169),
    [sym__pat_ident] = STATE(132),
    [sym__stmt] = STATE(4),
    [sym_empty_stmt] = STATE(4),
    [sym__empty_stmt] = STATE(57),
    [sym_asm_block] = STATE(4),
    [sym__asm_block] = STATE(59),
    [sym_expr_stmt] = STATE(4),
    [sym__expr_stmt] = STATE(60),
    [sym__expr] = STATE(121),
    [sym_assign_expr] = STATE(121),
    [sym__assign_expr] = STATE(84),
    [sym_call_expr] = STATE(121),
    [sym_paren_expr] = STATE(121),
    [sym__paren_expr] = STATE(85),
    [sym_as_expr] = STATE(121),
    [sym__as_expr] = STATE(90),
    [sym_break_expr] = STATE(121),
    [sym__break_expr] = STATE(97),
    [sym_cont_expr] = STATE(121),
    [sym__cont_expr] = STATE(100),
    [sym__expr_ending_with_block] = STATE(44),
    [sym_if_expr] = STATE(44),
    [sym__if_expr] = STATE(36),
    [sym_while_expr] = STATE(44),
    [sym__while_expr] = STATE(34),
    [sym_for_expr] = STATE(44),
    [sym__for_expr] = STATE(35),
    [sym_labeled] = STATE(44),
    [sym__labeled] = STATE(37),
    [sym_block] = STATE(44),
    [sym__block] = STATE(30),
    [sym_label] = STATE(167),
    [sym__underscore] = STATE(157),
    [sym_ident] = STATE(125),
    [aux_sym__block_repeat1] = STATE(4),
    [sym__ident] = ACTIONS(5),
    [anon_sym_SEMI] = ACTIONS(7),
    [anon_sym_LPAREN] = ACTIONS(15),
    [anon_sym_mut] = ACTIONS(9),
    [anon_sym_asm] = ACTIONS(11),
    [anon_sym_LBRACE] = ACTIONS(17),
    [anon_sym_RBRACE] = ACTIONS(33),
    [anon_sym_break] = ACTIONS(21),
    [anon_sym_cont] = ACTIONS(23),
    [anon_sym_if] = ACTIONS(25),
    [anon_sym_while] = ACTIONS(27),
    [anon_sym_for] = ACTIONS(29),
    [sym__label] = ACTIONS(31),
    [anon_sym__] = ACTIONS(13),
  },
  [STATE(4)] = {
    [sym__global_stmt] = STATE(6),
    [sym__decl_stmt] = STATE(6),
    [sym_fn_def] = STATE(6),
    [sym__fn_def] = STATE(48),
    [sym_binding] = STATE(6),
    [sym__binding] = STATE(52),
    [sym__typed_binding] = STATE(49),
    [sym__auto_binding] = STATE(58),
    [sym__pattern] = STATE(169),
    [sym_pat_wild] = STATE(169),
    [sym__pat_wild] = STATE(157),
    [sym_pat_ident] = STATE(169),
    [sym__pat_ident] = STATE(132),
    [sym__stmt] = STATE(6),
    [sym_empty_stmt] = STATE(6),
    [sym__empty_stmt] = STATE(57),
    [sym_asm_block] = STATE(6),
    [sym__asm_block] = STATE(59),
    [sym_expr_stmt] = STATE(6),
    [sym__expr_stmt] = STATE(60),
    [sym__expr] = STATE(119),
    [sym_assign_expr] = STATE(119),
    [sym__assign_expr] = STATE(84),
    [sym_call_expr] = STATE(119),
    [sym_paren_expr] = STATE(119),
    [sym__paren_expr] = STATE(85),
    [sym_as_expr] = STATE(119),
    [sym__as_expr] = STATE(90),
    [sym_break_expr] = STATE(119),
    [sym__break_expr] = STATE(97),
    [sym_cont_expr] = STATE(119),
    [sym__cont_expr] = STATE(100),
    [sym__expr_ending_with_block] = STATE(44),
    [sym_if_expr] = STATE(44),
    [sym__if_expr] = STATE(36),
    [sym_while_expr] = STATE(44),
    [sym__while_expr] = STATE(34),
    [sym_for_expr] = STATE(44),
    [sym__for_expr] = STATE(35),
    [sym_labeled] = STATE(44),
    [sym__labeled] = STATE(37),
    [sym_block] = STATE(44),
    [sym__block] = STATE(30),
    [sym_label] = STATE(167),
    [sym__underscore] = STATE(157),
    [sym_ident] = STATE(125),
    [aux_sym__block_repeat1] = STATE(6),
    [sym__ident] = ACTIONS(5),
    [anon_sym_SEMI] = ACTIONS(7),
    [anon_sym_LPAREN] = ACTIONS(15),
    [anon_sym_mut] = ACTIONS(9),
    [anon_sym_asm] = ACTIONS(11),
    [anon_sym_LBRACE] = ACTIONS(17),
    [anon_sym_RBRACE] = ACTIONS(35),
    [anon_sym_break] = ACTIONS(21),
    [anon_sym_cont] = ACTIONS(23),
    [anon_sym_if] = ACTIONS(25),
    [anon_sym_while] = ACTIONS(27),
    [anon_sym_for] = ACTIONS(29),
    [sym__label] = ACTIONS(31),
    [anon_sym__] = ACTIONS(13),
  },
  [STATE(5)] = {
    [sym__global_stmt] = STATE(2),
    [sym__decl_stmt] = STATE(2),
    [sym_fn_def] = STATE(2),
    [sym__fn_def] = STATE(48),
    [sym_binding] = STATE(2),
    [sym__binding] = STATE(52),
    [sym__typed_binding] = STATE(49),
    [sym__auto_binding] = STATE(58),
    [sym__pattern] = STATE(169),
    [sym_pat_wild] = STATE(169),
    [sym__pat_wild] = STATE(157),
    [sym_pat_ident] = STATE(169),
    [sym__pat_ident] = STATE(132),
    [sym__stmt] = STATE(2),
    [sym_empty_stmt] = STATE(2),
    [sym__empty_stmt] = STATE(57),
    [sym_asm_block] = STATE(2),
    [sym__asm_block] = STATE(59),
    [sym_expr_stmt] = STATE(2),
    [sym__expr_stmt] = STATE(60),
    [sym__expr] = STATE(122),
    [sym_assign_expr] = STATE(122),
    [sym__assign_expr] = STATE(84),
    [sym_call_expr] = STATE(122),
    [sym_paren_expr] = STATE(122),
    [sym__paren_expr] = STATE(85),
    [sym_as_expr] = STATE(122),
    [sym__as_expr] = STATE(90),
    [sym_break_expr] = STATE(122),
    [sym__break_expr] = STATE(97),
    [sym_cont_expr] = STATE(122),
    [sym__cont_expr] = STATE(100),
    [sym__expr_ending_with_block] = STATE(44),
    [sym_if_expr] = STATE(44),
    [sym__if_expr] = STATE(36),
    [sym_while_expr] = STATE(44),
    [sym__while_expr] = STATE(34),
    [sym_for_expr] = STATE(44),
    [sym__for_expr] = STATE(35),
    [sym_labeled] = STATE(44),
    [sym__labeled] = STATE(37),
    [sym_block] = STATE(44),
    [sym__block] = STATE(30),
    [sym_label] = STATE(167),
    [sym__underscore] = STATE(157),
    [sym_ident] = STATE(125),
    [aux_sym__block_repeat1] = STATE(2),
    [sym__ident] = ACTIONS(5),
    [anon_sym_SEMI] = ACTIONS(7),
    [anon_sym_LPAREN] = ACTIONS(15),
    [anon_sym_mut] = ACTIONS(9),
    [anon_sym_asm] = ACTIONS(11),
    [anon_sym_LBRACE] = ACTIONS(17),
    [anon_sym_RBRACE] = ACTIONS(37),
    [anon_sym_break] = ACTIONS(21),
    [anon_sym_cont] = ACTIONS(23),
    [anon_sym_if] = ACTIONS(25),
    [anon_sym_while] = ACTIONS(27),
    [anon_sym_for] = ACTIONS(29),
    [sym__label] = ACTIONS(31),
    [anon_sym__] = ACTIONS(13),
  },
  [STATE(6)] = {
    [sym__global_stmt] = STATE(6),
    [sym__decl_stmt] = STATE(6),
    [sym_fn_def] = STATE(6),
    [sym__fn_def] = STATE(48),
    [sym_binding] = STATE(6),
    [sym__binding] = STATE(52),
    [sym__typed_binding] = STATE(49),
    [sym__auto_binding] = STATE(58),
    [sym__pattern] = STATE(169),
    [sym_pat_wild] = STATE(169),
    [sym__pat_wild] = STATE(157),
    [sym_pat_ident] = STATE(169),
    [sym__pat_ident] = STATE(132),
    [sym__stmt] = STATE(6),
    [sym_empty_stmt] = STATE(6),
    [sym__empty_stmt] = STATE(57),
    [sym_asm_block] = STATE(6),
    [sym__asm_block] = STATE(59),
    [sym_expr_stmt] = STATE(6),
    [sym__expr_stmt] = STATE(60),
    [sym__expr] = STATE(126),
    [sym_assign_expr] = STATE(126),
    [sym__assign_expr] = STATE(84),
    [sym_call_expr] = STATE(126),
    [sym_paren_expr] = STATE(126),
    [sym__paren_expr] = STATE(85),
    [sym_as_expr] = STATE(126),
    [sym__as_expr] = STATE(90),
    [sym_break_expr] = STATE(126),
    [sym__break_expr] = STATE(97),
    [sym_cont_expr] = STATE(126),
    [sym__cont_expr] = STATE(100),
    [sym__expr_ending_with_block] = STATE(44),
    [sym_if_expr] = STATE(44),
    [sym__if_expr] = STATE(36),
    [sym_while_expr] = STATE(44),
    [sym__while_expr] = STATE(34),
    [sym_for_expr] = STATE(44),
    [sym__for_expr] = STATE(35),
    [sym_labeled] = STATE(44),
    [sym__labeled] = STATE(37),
    [sym_block] = STATE(44),
    [sym__block] = STATE(30),
    [sym_label] = STATE(167),
    [sym__underscore] = STATE(157),
    [sym_ident] = STATE(125),
    [aux_sym__block_repeat1] = STATE(6),
    [sym__ident] = ACTIONS(39),
    [anon_sym_SEMI] = ACTIONS(42),
    [anon_sym_LPAREN] = ACTIONS(45),
    [anon_sym_mut] = ACTIONS(48),
    [anon_sym_asm] = ACTIONS(51),
    [anon_sym_LBRACE] = ACTIONS(54),
    [anon_sym_RBRACE] = ACTIONS(57),
    [anon_sym_break] = ACTIONS(59),
    [anon_sym_cont] = ACTIONS(62),
    [anon_sym_if] = ACTIONS(65),
    [anon_sym_while] = ACTIONS(68),
    [anon_sym_for] = ACTIONS(71),
    [sym__label] = ACTIONS(74),
    [anon_sym__] = ACTIONS(77),
  },
};

static const uint16_t ts_small_parse_table[] = {
  [0] = 26,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(11), 1,
      anon_sym_asm,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(25), 1,
      anon_sym_if,
    ACTIONS(27), 1,
      anon_sym_while,
    ACTIONS(29), 1,
      anon_sym_for,
    ACTIONS(31), 1,
      sym__label,
    STATE(30), 1,
      sym__block,
    STATE(34), 1,
      sym__while_expr,
    STATE(35), 1,
      sym__for_expr,
    STATE(36), 1,
      sym__if_expr,
    STATE(37), 1,
      sym__labeled,
    STATE(46), 1,
      sym_block,
    STATE(59), 1,
      sym__asm_block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(167), 1,
      sym_label,
    STATE(47), 3,
      sym__fn_body,
      sym_asm_block,
      sym__expr_stmt,
    STATE(44), 5,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
    STATE(126), 8,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym_ident,
  [92] = 26,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(11), 1,
      anon_sym_asm,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(25), 1,
      anon_sym_if,
    ACTIONS(27), 1,
      anon_sym_while,
    ACTIONS(29), 1,
      anon_sym_for,
    ACTIONS(31), 1,
      sym__label,
    STATE(30), 1,
      sym__block,
    STATE(34), 1,
      sym__while_expr,
    STATE(35), 1,
      sym__for_expr,
    STATE(36), 1,
      sym__if_expr,
    STATE(37), 1,
      sym__labeled,
    STATE(59), 1,
      sym__asm_block,
    STATE(74), 1,
      sym_block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(167), 1,
      sym_label,
    STATE(47), 3,
      sym__fn_body,
      sym_asm_block,
      sym__expr_stmt,
    STATE(78), 5,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
    STATE(126), 8,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym_ident,
  [184] = 23,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(80), 1,
      anon_sym_COMMA,
    ACTIONS(82), 1,
      anon_sym_RPAREN,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(87), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [267] = 22,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    ACTIONS(92), 1,
      anon_sym_RPAREN,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(120), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [347] = 22,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    ACTIONS(94), 1,
      anon_sym_RPAREN,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(120), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [427] = 22,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    ACTIONS(96), 1,
      anon_sym_COLON,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(64), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [507] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(114), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [584] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(67), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [661] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(12), 1,
      sym_label,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(69), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [738] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(116), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [815] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(81), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [892] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(95), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [969] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(124), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [1046] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(127), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [1123] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(120), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [1200] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(128), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [1277] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(112), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [1354] = 21,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(15), 1,
      anon_sym_LPAREN,
    ACTIONS(21), 1,
      anon_sym_break,
    ACTIONS(23), 1,
      anon_sym_cont,
    ACTIONS(31), 1,
      sym__label,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(86), 1,
      anon_sym_if,
    ACTIONS(88), 1,
      anon_sym_while,
    ACTIONS(90), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(84), 1,
      sym__assign_expr,
    STATE(85), 1,
      sym__paren_expr,
    STATE(90), 1,
      sym__as_expr,
    STATE(97), 1,
      sym__break_expr,
    STATE(100), 1,
      sym__cont_expr,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(106), 1,
      sym__labeled,
    STATE(117), 1,
      sym__if_expr,
    STATE(161), 1,
      sym_label,
    STATE(113), 14,
      sym__expr,
      sym_assign_expr,
      sym_call_expr,
      sym_paren_expr,
      sym_as_expr,
      sym_break_expr,
      sym_cont_expr,
      sym__expr_ending_with_block,
      sym_if_expr,
      sym_while_expr,
      sym_for_expr,
      sym_labeled,
      sym_block,
      sym_ident,
  [1431] = 17,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(7), 1,
      anon_sym_SEMI,
    ACTIONS(9), 1,
      anon_sym_mut,
    ACTIONS(11), 1,
      anon_sym_asm,
    ACTIONS(13), 1,
      anon_sym__,
    ACTIONS(98), 1,
      ts_builtin_sym_end,
    STATE(48), 1,
      sym__fn_def,
    STATE(49), 1,
      sym__typed_binding,
    STATE(52), 1,
      sym__binding,
    STATE(57), 1,
      sym__empty_stmt,
    STATE(58), 1,
      sym__auto_binding,
    STATE(59), 1,
      sym__asm_block,
    STATE(132), 1,
      sym__pat_ident,
    STATE(168), 1,
      sym_ident,
    STATE(157), 2,
      sym__pat_wild,
      sym__underscore,
    STATE(169), 3,
      sym__pattern,
      sym_pat_wild,
      sym_pat_ident,
    STATE(26), 7,
      sym__global_stmt,
      sym__decl_stmt,
      sym_fn_def,
      sym_binding,
      sym_empty_stmt,
      sym_asm_block,
      aux_sym_trans_unit_repeat1,
  [1492] = 17,
    ACTIONS(100), 1,
      ts_builtin_sym_end,
    ACTIONS(102), 1,
      sym__ident,
    ACTIONS(105), 1,
      anon_sym_SEMI,
    ACTIONS(108), 1,
      anon_sym_mut,
    ACTIONS(111), 1,
      anon_sym_asm,
    ACTIONS(114), 1,
      anon_sym__,
    STATE(48), 1,
      sym__fn_def,
    STATE(49), 1,
      sym__typed_binding,
    STATE(52), 1,
      sym__binding,
    STATE(57), 1,
      sym__empty_stmt,
    STATE(58), 1,
      sym__auto_binding,
    STATE(59), 1,
      sym__asm_block,
    STATE(132), 1,
      sym__pat_ident,
    STATE(168), 1,
      sym_ident,
    STATE(157), 2,
      sym__pat_wild,
      sym__underscore,
    STATE(169), 3,
      sym__pattern,
      sym_pat_wild,
      sym_pat_ident,
    STATE(26), 7,
      sym__global_stmt,
      sym__decl_stmt,
      sym_fn_def,
      sym_binding,
      sym_empty_stmt,
      sym_asm_block,
      aux_sym_trans_unit_repeat1,
  [1553] = 4,
    ACTIONS(121), 1,
      anon_sym_else,
    STATE(40), 1,
      sym__loop_else_clause,
    ACTIONS(117), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(119), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1581] = 4,
    ACTIONS(121), 1,
      anon_sym_else,
    STATE(43), 1,
      sym__loop_else_clause,
    ACTIONS(123), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(125), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1609] = 4,
    ACTIONS(131), 1,
      anon_sym_else,
    STATE(39), 1,
      sym__else_clause,
    ACTIONS(127), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(129), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1637] = 2,
    ACTIONS(133), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(135), 11,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_else,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1660] = 2,
    ACTIONS(137), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(139), 11,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_else,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1683] = 2,
    ACTIONS(141), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(143), 11,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_else,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1706] = 2,
    ACTIONS(145), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(147), 11,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_else,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1729] = 2,
    ACTIONS(149), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(151), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1751] = 2,
    ACTIONS(153), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(155), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1773] = 2,
    ACTIONS(157), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(159), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1795] = 2,
    ACTIONS(161), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(163), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1817] = 2,
    ACTIONS(165), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(167), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1839] = 2,
    ACTIONS(169), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(171), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1861] = 2,
    ACTIONS(173), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(175), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1883] = 2,
    ACTIONS(177), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(179), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1905] = 2,
    ACTIONS(181), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(183), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1927] = 2,
    ACTIONS(185), 7,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(187), 10,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1949] = 4,
    ACTIONS(193), 1,
      anon_sym_EQ,
    ACTIONS(195), 1,
      anon_sym_as,
    ACTIONS(191), 5,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(189), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [1974] = 2,
    ACTIONS(197), 7,
      anon_sym_as,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      sym__ident,
    ACTIONS(199), 9,
      anon_sym_COLON,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
  [1995] = 4,
    ACTIONS(205), 1,
      anon_sym_EQ,
    ACTIONS(207), 1,
      anon_sym_as,
    ACTIONS(203), 5,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(201), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2020] = 2,
    ACTIONS(209), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(211), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2040] = 2,
    ACTIONS(213), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(215), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2060] = 2,
    ACTIONS(217), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(219), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2080] = 2,
    ACTIONS(221), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(223), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2100] = 2,
    ACTIONS(225), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(227), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2120] = 2,
    ACTIONS(229), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(231), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2140] = 2,
    ACTIONS(233), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(235), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2160] = 2,
    ACTIONS(237), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(239), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2180] = 2,
    ACTIONS(241), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(243), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2200] = 2,
    ACTIONS(245), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(247), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2220] = 2,
    ACTIONS(249), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(251), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2240] = 2,
    ACTIONS(253), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(255), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2260] = 2,
    ACTIONS(257), 6,
      ts_builtin_sym_end,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(259), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2280] = 2,
    ACTIONS(263), 5,
      anon_sym_SEMI,
      anon_sym_LPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      sym__label,
    ACTIONS(261), 9,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym_break,
      anon_sym_cont,
      anon_sym_if,
      anon_sym_while,
      anon_sym_for,
      anon_sym__,
      sym__ident,
  [2299] = 7,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(9), 1,
      anon_sym_mut,
    ACTIONS(13), 1,
      anon_sym__,
    STATE(132), 1,
      sym__pat_ident,
    STATE(134), 1,
      sym_ident,
    STATE(157), 2,
      sym__pat_wild,
      sym__underscore,
    STATE(171), 3,
      sym__pattern,
      sym_pat_wild,
      sym_pat_ident,
  [2324] = 3,
    ACTIONS(31), 1,
      sym__label,
    STATE(115), 1,
      sym_label,
    ACTIONS(265), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2341] = 1,
    ACTIONS(267), 10,
      anon_sym_COLON,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
      anon_sym_in,
  [2354] = 5,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
    ACTIONS(269), 6,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
  [2375] = 3,
    ACTIONS(275), 1,
      anon_sym_else,
    STATE(93), 1,
      sym__else_clause,
    ACTIONS(127), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2392] = 3,
    ACTIONS(277), 1,
      anon_sym_else,
    STATE(102), 1,
      sym__loop_else_clause,
    ACTIONS(117), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2409] = 5,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
    ACTIONS(279), 6,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
  [2430] = 3,
    ACTIONS(277), 1,
      anon_sym_else,
    STATE(94), 1,
      sym__loop_else_clause,
    ACTIONS(123), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2447] = 5,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
    ACTIONS(281), 6,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
  [2468] = 7,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(9), 1,
      anon_sym_mut,
    ACTIONS(13), 1,
      anon_sym__,
    STATE(132), 1,
      sym__pat_ident,
    STATE(134), 1,
      sym_ident,
    STATE(157), 2,
      sym__pat_wild,
      sym__underscore,
    STATE(170), 3,
      sym__pattern,
      sym_pat_wild,
      sym_pat_ident,
  [2493] = 1,
    ACTIONS(141), 9,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
      anon_sym_else,
  [2505] = 7,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(283), 1,
      anon_sym_while,
    ACTIONS(285), 1,
      anon_sym_for,
    STATE(30), 1,
      sym__block,
    STATE(34), 1,
      sym__while_expr,
    STATE(35), 1,
      sym__for_expr,
    STATE(38), 3,
      sym_while_expr,
      sym_for_expr,
      sym_block,
  [2529] = 7,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(287), 1,
      anon_sym_while,
    ACTIONS(289), 1,
      anon_sym_for,
    STATE(77), 1,
      sym__block,
    STATE(104), 1,
      sym__while_expr,
    STATE(105), 1,
      sym__for_expr,
    STATE(89), 3,
      sym_while_expr,
      sym_for_expr,
      sym_block,
  [2553] = 4,
    ACTIONS(207), 1,
      anon_sym_as,
    ACTIONS(203), 2,
      ts_builtin_sym_end,
      anon_sym_SEMI,
    ACTIONS(205), 2,
      anon_sym_EQ,
      anon_sym_LPAREN,
    ACTIONS(201), 4,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym__,
      sym__ident,
  [2571] = 6,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(291), 1,
      anon_sym_EQ,
    ACTIONS(293), 1,
      anon_sym__,
    STATE(111), 1,
      sym__underscore,
    STATE(110), 2,
      sym__type_infer,
      sym_underscore,
    STATE(158), 3,
      sym__type,
      sym_type_infer,
      sym_ident,
  [2593] = 1,
    ACTIONS(145), 9,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
      anon_sym_else,
  [2605] = 1,
    ACTIONS(133), 9,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
      anon_sym_else,
  [2617] = 4,
    ACTIONS(195), 1,
      anon_sym_as,
    ACTIONS(191), 2,
      ts_builtin_sym_end,
      anon_sym_SEMI,
    ACTIONS(193), 2,
      anon_sym_EQ,
      anon_sym_LPAREN,
    ACTIONS(189), 4,
      anon_sym_mut,
      anon_sym_asm,
      anon_sym__,
      sym__ident,
  [2635] = 1,
    ACTIONS(137), 9,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
      anon_sym_else,
  [2647] = 5,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(293), 1,
      anon_sym__,
    STATE(111), 1,
      sym__underscore,
    STATE(110), 2,
      sym__type_infer,
      sym_underscore,
    STATE(88), 3,
      sym__type,
      sym_type_infer,
      sym_ident,
  [2666] = 8,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(68), 1,
      sym_block,
    STATE(77), 1,
      sym__block,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [2691] = 5,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(293), 1,
      anon_sym__,
    STATE(111), 1,
      sym__underscore,
    STATE(110), 2,
      sym__type_infer,
      sym_underscore,
    STATE(151), 3,
      sym__type,
      sym_type_infer,
      sym_ident,
  [2710] = 1,
    ACTIONS(297), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2721] = 1,
    ACTIONS(299), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2732] = 1,
    ACTIONS(301), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2743] = 1,
    ACTIONS(303), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2754] = 8,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(305), 1,
      anon_sym_COMMA,
    ACTIONS(307), 1,
      anon_sym_RPAREN,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
    STATE(149), 1,
      aux_sym__args_repeat1,
  [2779] = 1,
    ACTIONS(309), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2790] = 1,
    ACTIONS(165), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2801] = 1,
    ACTIONS(311), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2812] = 5,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(293), 1,
      anon_sym__,
    STATE(111), 1,
      sym__underscore,
    STATE(110), 2,
      sym__type_infer,
      sym_underscore,
    STATE(156), 3,
      sym__type,
      sym_type_infer,
      sym_ident,
  [2831] = 1,
    ACTIONS(313), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2842] = 1,
    ACTIONS(169), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2853] = 1,
    ACTIONS(185), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2864] = 8,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(66), 1,
      sym_block,
    STATE(77), 1,
      sym__block,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [2889] = 1,
    ACTIONS(315), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2900] = 1,
    ACTIONS(317), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2911] = 1,
    ACTIONS(177), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2922] = 1,
    ACTIONS(181), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2933] = 1,
    ACTIONS(319), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2944] = 1,
    ACTIONS(321), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2955] = 1,
    ACTIONS(173), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2966] = 1,
    ACTIONS(323), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2977] = 1,
    ACTIONS(149), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2988] = 1,
    ACTIONS(153), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [2999] = 1,
    ACTIONS(161), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [3010] = 1,
    ACTIONS(325), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [3021] = 5,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(293), 1,
      anon_sym__,
    STATE(111), 1,
      sym__underscore,
    STATE(110), 2,
      sym__type_infer,
      sym_underscore,
    STATE(155), 3,
      sym__type,
      sym_type_infer,
      sym_ident,
  [3040] = 8,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(9), 1,
      anon_sym_mut,
    ACTIONS(327), 1,
      anon_sym_RPAREN,
    STATE(132), 1,
      sym__pat_ident,
    STATE(134), 1,
      sym_ident,
    STATE(137), 1,
      sym_para,
    STATE(148), 1,
      sym_pat_ident,
    STATE(150), 1,
      sym__para,
  [3065] = 1,
    ACTIONS(329), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [3076] = 1,
    ACTIONS(331), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [3087] = 8,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(29), 1,
      sym_block,
    STATE(30), 1,
      sym__block,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3112] = 8,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(28), 1,
      sym_block,
    STATE(30), 1,
      sym__block,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3137] = 8,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(27), 1,
      sym_block,
    STATE(30), 1,
      sym__block,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3162] = 1,
    ACTIONS(333), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [3173] = 8,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(65), 1,
      sym_block,
    STATE(77), 1,
      sym__block,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3198] = 1,
    ACTIONS(157), 8,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_LBRACE,
      anon_sym_RBRACE,
      anon_sym_as,
  [3209] = 7,
    ACTIONS(5), 1,
      sym__ident,
    ACTIONS(9), 1,
      anon_sym_mut,
    STATE(132), 1,
      sym__pat_ident,
    STATE(134), 1,
      sym_ident,
    STATE(148), 1,
      sym_pat_ident,
    STATE(150), 1,
      sym__para,
    STATE(160), 1,
      sym_para,
  [3231] = 7,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(335), 1,
      anon_sym_SEMI,
    ACTIONS(337), 1,
      anon_sym_RBRACE,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3253] = 6,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
    ACTIONS(339), 2,
      anon_sym_COMMA,
      anon_sym_RPAREN,
  [3273] = 7,
    ACTIONS(35), 1,
      anon_sym_RBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(335), 1,
      anon_sym_SEMI,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3295] = 7,
    ACTIONS(19), 1,
      anon_sym_RBRACE,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(335), 1,
      anon_sym_SEMI,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3317] = 7,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(335), 1,
      anon_sym_SEMI,
    ACTIONS(341), 1,
      anon_sym_RBRACE,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3339] = 6,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(343), 1,
      anon_sym_SEMI,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3358] = 2,
    ACTIONS(345), 1,
      anon_sym_COLON,
    ACTIONS(193), 5,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_LPAREN,
      anon_sym_RBRACE,
      anon_sym_as,
  [3369] = 6,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(335), 1,
      anon_sym_SEMI,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3388] = 6,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(348), 1,
      anon_sym_SEMI,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3407] = 6,
    ACTIONS(271), 1,
      anon_sym_LPAREN,
    ACTIONS(273), 1,
      anon_sym_as,
    ACTIONS(295), 1,
      anon_sym_EQ,
    ACTIONS(350), 1,
      anon_sym_RPAREN,
    STATE(92), 1,
      sym_args,
    STATE(107), 1,
      sym__args,
  [3426] = 5,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    ACTIONS(352), 1,
      anon_sym_if,
    STATE(77), 1,
      sym__block,
    STATE(117), 1,
      sym__if_expr,
    STATE(98), 2,
      sym_if_expr,
      sym_block,
  [3443] = 5,
    ACTIONS(356), 1,
      anon_sym_DASH_GT,
    ACTIONS(358), 1,
      anon_sym_LPAREN,
    STATE(138), 1,
      sym_paras,
    STATE(139), 1,
      sym__paras,
    ACTIONS(354), 2,
      anon_sym_SEMI,
      anon_sym_EQ,
  [3460] = 5,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    ACTIONS(360), 1,
      anon_sym_if,
    STATE(30), 1,
      sym__block,
    STATE(36), 1,
      sym__if_expr,
    STATE(41), 2,
      sym_if_expr,
      sym_block,
  [3477] = 1,
    ACTIONS(362), 4,
      anon_sym_COLON,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_in,
  [3484] = 1,
    ACTIONS(364), 4,
      anon_sym_COLON,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_in,
  [3491] = 1,
    ACTIONS(366), 4,
      anon_sym_COLON,
      anon_sym_COMMA,
      anon_sym_RPAREN,
      anon_sym_in,
  [3498] = 1,
    ACTIONS(368), 3,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_DASH_GT,
  [3504] = 3,
    ACTIONS(370), 1,
      anon_sym_fn,
    STATE(154), 1,
      sym__fn_sign,
    STATE(159), 1,
      sym_fn_sign,
  [3514] = 3,
    ACTIONS(372), 1,
      anon_sym_COMMA,
    ACTIONS(374), 1,
      anon_sym_RPAREN,
    STATE(147), 1,
      aux_sym__paras_repeat1,
  [3524] = 2,
    ACTIONS(378), 1,
      anon_sym_DASH_GT,
    ACTIONS(376), 2,
      anon_sym_SEMI,
      anon_sym_EQ,
  [3532] = 1,
    ACTIONS(380), 3,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_DASH_GT,
  [3538] = 1,
    ACTIONS(382), 3,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_DASH_GT,
  [3544] = 3,
    ACTIONS(384), 1,
      anon_sym_COMMA,
    ACTIONS(387), 1,
      anon_sym_RPAREN,
    STATE(141), 1,
      aux_sym__paras_repeat1,
  [3554] = 3,
    ACTIONS(339), 1,
      anon_sym_RPAREN,
    ACTIONS(389), 1,
      anon_sym_COMMA,
    STATE(142), 1,
      aux_sym__args_repeat1,
  [3564] = 3,
    ACTIONS(84), 1,
      anon_sym_LBRACE,
    STATE(77), 1,
      sym__block,
    STATE(99), 1,
      sym_block,
  [3574] = 3,
    ACTIONS(17), 1,
      anon_sym_LBRACE,
    STATE(30), 1,
      sym__block,
    STATE(42), 1,
      sym_block,
  [3584] = 1,
    ACTIONS(392), 3,
      anon_sym_SEMI,
      anon_sym_EQ,
      anon_sym_DASH_GT,
  [3590] = 3,
    ACTIONS(370), 1,
      anon_sym_fn,
    STATE(152), 1,
      sym_fn_sign,
    STATE(154), 1,
      sym__fn_sign,
  [3600] = 3,
    ACTIONS(372), 1,
      anon_sym_COMMA,
    ACTIONS(394), 1,
      anon_sym_RPAREN,
    STATE(141), 1,
      aux_sym__paras_repeat1,
  [3610] = 2,
    ACTIONS(396), 1,
      anon_sym_COLON,
    ACTIONS(398), 2,
      anon_sym_COMMA,
      anon_sym_RPAREN,
  [3618] = 3,
    ACTIONS(92), 1,
      anon_sym_RPAREN,
    ACTIONS(400), 1,
      anon_sym_COMMA,
    STATE(142), 1,
      aux_sym__args_repeat1,
  [3628] = 1,
    ACTIONS(402), 2,
      anon_sym_COMMA,
      anon_sym_RPAREN,
  [3633] = 1,
    ACTIONS(404), 2,
      anon_sym_SEMI,
      anon_sym_EQ,
  [3638] = 2,
    ACTIONS(406), 1,
      anon_sym_SEMI,
    ACTIONS(408), 1,
      anon_sym_EQ,
  [3645] = 2,
    ACTIONS(410), 1,
      sym__ident,
    STATE(133), 1,
      sym_ident,
  [3652] = 1,
    ACTIONS(412), 2,
      anon_sym_SEMI,
      anon_sym_EQ,
  [3657] = 1,
    ACTIONS(414), 2,
      anon_sym_SEMI,
      anon_sym_EQ,
  [3662] = 1,
    ACTIONS(416), 2,
      anon_sym_COMMA,
      anon_sym_RPAREN,
  [3667] = 1,
    ACTIONS(418), 2,
      anon_sym_COLON,
      anon_sym_in,
  [3672] = 2,
    ACTIONS(420), 1,
      anon_sym_SEMI,
    ACTIONS(422), 1,
      anon_sym_EQ,
  [3679] = 2,
    ACTIONS(406), 1,
      anon_sym_SEMI,
    ACTIONS(424), 1,
      anon_sym_EQ,
  [3686] = 1,
    ACTIONS(387), 2,
      anon_sym_COMMA,
      anon_sym_RPAREN,
  [3691] = 1,
    ACTIONS(96), 1,
      anon_sym_COLON,
  [3695] = 1,
    ACTIONS(426), 1,
      anon_sym_RBRACE,
  [3699] = 1,
    ACTIONS(428), 1,
      sym_llvm_ir,
  [3703] = 1,
    ACTIONS(430), 1,
      ts_builtin_sym_end,
  [3707] = 1,
    ACTIONS(432), 1,
      anon_sym_LBRACE,
  [3711] = 1,
    ACTIONS(307), 1,
      anon_sym_RPAREN,
  [3715] = 1,
    ACTIONS(434), 1,
      anon_sym_COLON,
  [3719] = 1,
    ACTIONS(436), 1,
      anon_sym_COLON,
  [3723] = 1,
    ACTIONS(439), 1,
      anon_sym_COLON,
  [3727] = 1,
    ACTIONS(441), 1,
      anon_sym_in,
  [3731] = 1,
    ACTIONS(443), 1,
      anon_sym_in,
};

static const uint32_t ts_small_parse_table_map[] = {
  [SMALL_STATE(7)] = 0,
  [SMALL_STATE(8)] = 92,
  [SMALL_STATE(9)] = 184,
  [SMALL_STATE(10)] = 267,
  [SMALL_STATE(11)] = 347,
  [SMALL_STATE(12)] = 427,
  [SMALL_STATE(13)] = 507,
  [SMALL_STATE(14)] = 584,
  [SMALL_STATE(15)] = 661,
  [SMALL_STATE(16)] = 738,
  [SMALL_STATE(17)] = 815,
  [SMALL_STATE(18)] = 892,
  [SMALL_STATE(19)] = 969,
  [SMALL_STATE(20)] = 1046,
  [SMALL_STATE(21)] = 1123,
  [SMALL_STATE(22)] = 1200,
  [SMALL_STATE(23)] = 1277,
  [SMALL_STATE(24)] = 1354,
  [SMALL_STATE(25)] = 1431,
  [SMALL_STATE(26)] = 1492,
  [SMALL_STATE(27)] = 1553,
  [SMALL_STATE(28)] = 1581,
  [SMALL_STATE(29)] = 1609,
  [SMALL_STATE(30)] = 1637,
  [SMALL_STATE(31)] = 1660,
  [SMALL_STATE(32)] = 1683,
  [SMALL_STATE(33)] = 1706,
  [SMALL_STATE(34)] = 1729,
  [SMALL_STATE(35)] = 1751,
  [SMALL_STATE(36)] = 1773,
  [SMALL_STATE(37)] = 1795,
  [SMALL_STATE(38)] = 1817,
  [SMALL_STATE(39)] = 1839,
  [SMALL_STATE(40)] = 1861,
  [SMALL_STATE(41)] = 1883,
  [SMALL_STATE(42)] = 1905,
  [SMALL_STATE(43)] = 1927,
  [SMALL_STATE(44)] = 1949,
  [SMALL_STATE(45)] = 1974,
  [SMALL_STATE(46)] = 1995,
  [SMALL_STATE(47)] = 2020,
  [SMALL_STATE(48)] = 2040,
  [SMALL_STATE(49)] = 2060,
  [SMALL_STATE(50)] = 2080,
  [SMALL_STATE(51)] = 2100,
  [SMALL_STATE(52)] = 2120,
  [SMALL_STATE(53)] = 2140,
  [SMALL_STATE(54)] = 2160,
  [SMALL_STATE(55)] = 2180,
  [SMALL_STATE(56)] = 2200,
  [SMALL_STATE(57)] = 2220,
  [SMALL_STATE(58)] = 2240,
  [SMALL_STATE(59)] = 2260,
  [SMALL_STATE(60)] = 2280,
  [SMALL_STATE(61)] = 2299,
  [SMALL_STATE(62)] = 2324,
  [SMALL_STATE(63)] = 2341,
  [SMALL_STATE(64)] = 2354,
  [SMALL_STATE(65)] = 2375,
  [SMALL_STATE(66)] = 2392,
  [SMALL_STATE(67)] = 2409,
  [SMALL_STATE(68)] = 2430,
  [SMALL_STATE(69)] = 2447,
  [SMALL_STATE(70)] = 2468,
  [SMALL_STATE(71)] = 2493,
  [SMALL_STATE(72)] = 2505,
  [SMALL_STATE(73)] = 2529,
  [SMALL_STATE(74)] = 2553,
  [SMALL_STATE(75)] = 2571,
  [SMALL_STATE(76)] = 2593,
  [SMALL_STATE(77)] = 2605,
  [SMALL_STATE(78)] = 2617,
  [SMALL_STATE(79)] = 2635,
  [SMALL_STATE(80)] = 2647,
  [SMALL_STATE(81)] = 2666,
  [SMALL_STATE(82)] = 2691,
  [SMALL_STATE(83)] = 2710,
  [SMALL_STATE(84)] = 2721,
  [SMALL_STATE(85)] = 2732,
  [SMALL_STATE(86)] = 2743,
  [SMALL_STATE(87)] = 2754,
  [SMALL_STATE(88)] = 2779,
  [SMALL_STATE(89)] = 2790,
  [SMALL_STATE(90)] = 2801,
  [SMALL_STATE(91)] = 2812,
  [SMALL_STATE(92)] = 2831,
  [SMALL_STATE(93)] = 2842,
  [SMALL_STATE(94)] = 2853,
  [SMALL_STATE(95)] = 2864,
  [SMALL_STATE(96)] = 2889,
  [SMALL_STATE(97)] = 2900,
  [SMALL_STATE(98)] = 2911,
  [SMALL_STATE(99)] = 2922,
  [SMALL_STATE(100)] = 2933,
  [SMALL_STATE(101)] = 2944,
  [SMALL_STATE(102)] = 2955,
  [SMALL_STATE(103)] = 2966,
  [SMALL_STATE(104)] = 2977,
  [SMALL_STATE(105)] = 2988,
  [SMALL_STATE(106)] = 2999,
  [SMALL_STATE(107)] = 3010,
  [SMALL_STATE(108)] = 3021,
  [SMALL_STATE(109)] = 3040,
  [SMALL_STATE(110)] = 3065,
  [SMALL_STATE(111)] = 3076,
  [SMALL_STATE(112)] = 3087,
  [SMALL_STATE(113)] = 3112,
  [SMALL_STATE(114)] = 3137,
  [SMALL_STATE(115)] = 3162,
  [SMALL_STATE(116)] = 3173,
  [SMALL_STATE(117)] = 3198,
  [SMALL_STATE(118)] = 3209,
  [SMALL_STATE(119)] = 3231,
  [SMALL_STATE(120)] = 3253,
  [SMALL_STATE(121)] = 3273,
  [SMALL_STATE(122)] = 3295,
  [SMALL_STATE(123)] = 3317,
  [SMALL_STATE(124)] = 3339,
  [SMALL_STATE(125)] = 3358,
  [SMALL_STATE(126)] = 3369,
  [SMALL_STATE(127)] = 3388,
  [SMALL_STATE(128)] = 3407,
  [SMALL_STATE(129)] = 3426,
  [SMALL_STATE(130)] = 3443,
  [SMALL_STATE(131)] = 3460,
  [SMALL_STATE(132)] = 3477,
  [SMALL_STATE(133)] = 3484,
  [SMALL_STATE(134)] = 3491,
  [SMALL_STATE(135)] = 3498,
  [SMALL_STATE(136)] = 3504,
  [SMALL_STATE(137)] = 3514,
  [SMALL_STATE(138)] = 3524,
  [SMALL_STATE(139)] = 3532,
  [SMALL_STATE(140)] = 3538,
  [SMALL_STATE(141)] = 3544,
  [SMALL_STATE(142)] = 3554,
  [SMALL_STATE(143)] = 3564,
  [SMALL_STATE(144)] = 3574,
  [SMALL_STATE(145)] = 3584,
  [SMALL_STATE(146)] = 3590,
  [SMALL_STATE(147)] = 3600,
  [SMALL_STATE(148)] = 3610,
  [SMALL_STATE(149)] = 3618,
  [SMALL_STATE(150)] = 3628,
  [SMALL_STATE(151)] = 3633,
  [SMALL_STATE(152)] = 3638,
  [SMALL_STATE(153)] = 3645,
  [SMALL_STATE(154)] = 3652,
  [SMALL_STATE(155)] = 3657,
  [SMALL_STATE(156)] = 3662,
  [SMALL_STATE(157)] = 3667,
  [SMALL_STATE(158)] = 3672,
  [SMALL_STATE(159)] = 3679,
  [SMALL_STATE(160)] = 3686,
  [SMALL_STATE(161)] = 3691,
  [SMALL_STATE(162)] = 3695,
  [SMALL_STATE(163)] = 3699,
  [SMALL_STATE(164)] = 3703,
  [SMALL_STATE(165)] = 3707,
  [SMALL_STATE(166)] = 3711,
  [SMALL_STATE(167)] = 3715,
  [SMALL_STATE(168)] = 3719,
  [SMALL_STATE(169)] = 3723,
  [SMALL_STATE(170)] = 3727,
  [SMALL_STATE(171)] = 3731,
};

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}}, REDUCE(sym_trans_unit, 0, 0, 0),
  [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(63),
  [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57),
  [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(153),
  [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(165),
  [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(157),
  [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
  [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5),
  [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32),
  [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15),
  [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(62),
  [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23),
  [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24),
  [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(70),
  [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45),
  [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79),
  [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71),
  [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31),
  [39] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(63),
  [42] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(57),
  [45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(22),
  [48] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(153),
  [51] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(165),
  [54] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(5),
  [57] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0),
  [59] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(15),
  [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(62),
  [65] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(23),
  [68] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(24),
  [71] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(70),
  [74] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(45),
  [77] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__block_repeat1, 2, 0, 0), SHIFT_REPEAT(157),
  [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166),
  [82] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86),
  [84] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
  [86] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16),
  [88] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17),
  [90] = {.entry = {.count = 1, .reusable = false}}, SHIFT(61),
  [92] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101),
  [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103),
  [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73),
  [98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_trans_unit, 1, 0, 0),
  [100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_trans_unit_repeat1, 2, 0, 0),
  [102] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_trans_unit_repeat1, 2, 0, 0), SHIFT_REPEAT(63),
  [105] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_trans_unit_repeat1, 2, 0, 0), SHIFT_REPEAT(57),
  [108] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_trans_unit_repeat1, 2, 0, 0), SHIFT_REPEAT(153),
  [111] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_trans_unit_repeat1, 2, 0, 0), SHIFT_REPEAT(165),
  [114] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_trans_unit_repeat1, 2, 0, 0), SHIFT_REPEAT(157),
  [117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__for_expr, 5, 0, 39),
  [119] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__for_expr, 5, 0, 39),
  [121] = {.entry = {.count = 1, .reusable = false}}, SHIFT(144),
  [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__while_expr, 3, 0, 31),
  [125] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__while_expr, 3, 0, 31),
  [127] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_expr, 3, 0, 30),
  [129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_expr, 3, 0, 30),
  [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(131),
  [133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 1, 0, 0),
  [135] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 1, 0, 0),
  [137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 2, 0, 0),
  [139] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 2, 0, 0),
  [141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 3, 0, 0),
  [143] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 3, 0, 0),
  [145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__block, 4, 0, 0),
  [147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__block, 4, 0, 0),
  [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_expr, 1, 0, 15),
  [151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_expr, 1, 0, 15),
  [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_expr, 1, 0, 16),
  [155] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_expr, 1, 0, 16),
  [157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_expr, 1, 0, 14),
  [159] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_expr, 1, 0, 14),
  [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_labeled, 1, 0, 17),
  [163] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_labeled, 1, 0, 17),
  [165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__labeled, 3, 0, 34),
  [167] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__labeled, 3, 0, 34),
  [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__if_expr, 4, 0, 37),
  [171] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__if_expr, 4, 0, 37),
  [173] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__for_expr, 6, 0, 40),
  [175] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__for_expr, 6, 0, 40),
  [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__else_clause, 2, 0, 0),
  [179] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__else_clause, 2, 0, 0),
  [181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__loop_else_clause, 2, 0, 0),
  [183] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__loop_else_clause, 2, 0, 0),
  [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__while_expr, 4, 0, 38),
  [187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__while_expr, 4, 0, 38),
  [189] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr_stmt, 1, 0, 0),
  [191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_stmt, 1, 0, 0),
  [193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1, 0, 0),
  [195] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 1, 0, 0),
  [197] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_label, 1, 0, 0),
  [199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_label, 1, 0, 0),
  [201] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__fn_body, 1, 0, 0),
  [203] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_body, 1, 0, 0),
  [205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_ending_with_block, 1, 0, 0),
  [207] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr_ending_with_block, 1, 0, 0),
  [209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_def, 5, 0, 28),
  [211] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__fn_def, 5, 0, 28),
  [213] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_def, 1, 0, 1),
  [215] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_fn_def, 1, 0, 1),
  [217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__binding, 1, 0, 2),
  [219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__binding, 1, 0, 2),
  [221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__auto_binding, 5, 0, 23),
  [223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__auto_binding, 5, 0, 23),
  [225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__typed_binding, 4, 0, 18),
  [227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__typed_binding, 4, 0, 18),
  [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binding, 1, 0, 2),
  [231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binding, 1, 0, 2),
  [233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_stmt, 2, 0, 0),
  [235] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr_stmt, 2, 0, 0),
  [237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__typed_binding, 6, 0, 35),
  [239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__typed_binding, 6, 0, 35),
  [241] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__asm_block, 4, 0, 9),
  [243] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__asm_block, 4, 0, 9),
  [245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_def, 4, 0, 20),
  [247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__fn_def, 4, 0, 20),
  [249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_empty_stmt, 1, 0, 0),
  [251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_empty_stmt, 1, 0, 0),
  [253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__binding, 1, 0, 3),
  [255] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__binding, 1, 0, 3),
  [257] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_asm_block, 1, 0, 5),
  [259] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_asm_block, 1, 0, 5),
  [261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_stmt, 1, 0, 0),
  [263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_stmt, 1, 0, 0),
  [265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__cont_expr, 1, 0, 0),
  [267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_ident, 1, 0, 0),
  [269] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__break_expr, 3, 0, 29),
  [271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
  [273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80),
  [275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129),
  [277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143),
  [279] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__assign_expr, 3, 0, 32),
  [281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__break_expr, 2, 0, 21),
  [283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24),
  [285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70),
  [287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
  [289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61),
  [291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
  [293] = {.entry = {.count = 1, .reusable = false}}, SHIFT(111),
  [295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
  [297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__paren_expr, 3, 0, 0),
  [299] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_expr, 1, 0, 10),
  [301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paren_expr, 1, 0, 0),
  [303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__args, 2, 0, 0),
  [305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
  [307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96),
  [309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__as_expr, 3, 0, 33),
  [311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_as_expr, 1, 0, 11),
  [313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_call_expr, 2, 0, 24),
  [315] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__args, 3, 0, 0),
  [317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_break_expr, 1, 0, 12),
  [319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cont_expr, 1, 0, 13),
  [321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__args, 4, 0, 0),
  [323] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__args, 5, 0, 0),
  [325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_args, 1, 0, 0),
  [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135),
  [329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_infer, 1, 0, 0),
  [331] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_underscore, 1, 0, 0),
  [333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__cont_expr, 2, 0, 22),
  [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53),
  [337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76),
  [339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__args_repeat1, 2, 0, 0),
  [341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33),
  [343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54),
  [345] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__pat_ident, 1, 0, 6), SHIFT(136),
  [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50),
  [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83),
  [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
  [354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_sign, 1, 0, 0),
  [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108),
  [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109),
  [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
  [362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pat_ident, 1, 0, 4),
  [364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pat_ident, 2, 0, 7),
  [366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pat_ident, 1, 0, 6),
  [368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__paras, 2, 0, 0),
  [370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130),
  [372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118),
  [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145),
  [376] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_sign, 2, 0, 19),
  [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82),
  [380] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_paras, 1, 0, 0),
  [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__paras, 4, 0, 0),
  [384] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__paras_repeat1, 2, 0, 0), SHIFT_REPEAT(118),
  [387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__paras_repeat1, 2, 0, 0),
  [389] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__args_repeat1, 2, 0, 0), SHIFT_REPEAT(21),
  [392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__paras, 3, 0, 0),
  [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140),
  [396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91),
  [398] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__para, 1, 0, 27),
  [400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
  [402] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_para, 1, 0, 26),
  [404] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_sign, 4, 0, 36),
  [406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56),
  [408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
  [410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63),
  [412] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_fn_sign, 1, 0, 8),
  [414] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__fn_sign, 3, 0, 25),
  [416] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__para, 3, 0, 18),
  [418] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pat_wild, 1, 0, 0),
  [420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51),
  [422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19),
  [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
  [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55),
  [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162),
  [430] = {.entry = {.count = 1, .reusable = true}},  ACCEPT_INPUT(),
  [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163),
  [434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72),
  [436] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__pat_ident, 1, 0, 6), SHIFT(146),
  [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75),
  [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
  [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
};

enum ts_external_scanner_symbol_identifiers {
  ts_external_token_llvm_ir = 0,
};

static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = {
  [ts_external_token_llvm_ir] = sym_llvm_ir,
};

static const bool ts_external_scanner_states[2][EXTERNAL_TOKEN_COUNT] = {
  [1] = {
    [ts_external_token_llvm_ir] = true,
  },
};

#ifdef __cplusplus
extern "C" {
#endif
void *tree_sitter_autolang_external_scanner_create(void);
void tree_sitter_autolang_external_scanner_destroy(void *);
bool tree_sitter_autolang_external_scanner_scan(void *, TSLexer *, const bool *);
unsigned tree_sitter_autolang_external_scanner_serialize(void *, char *);
void tree_sitter_autolang_external_scanner_deserialize(void *, const char *, unsigned);

#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_autolang(void) {
  static const TSLanguage language = {
    .abi_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,
    .supertype_count = SUPERTYPE_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 = (const void*)ts_lex_modes,
    .lex_fn = ts_lex,
    .keyword_lex_fn = ts_lex_keywords,
    .keyword_capture_token = sym__ident,
    .external_scanner = {
      &ts_external_scanner_states[0][0],
      ts_external_scanner_symbol_map,
      tree_sitter_autolang_external_scanner_create,
      tree_sitter_autolang_external_scanner_destroy,
      tree_sitter_autolang_external_scanner_scan,
      tree_sitter_autolang_external_scanner_serialize,
      tree_sitter_autolang_external_scanner_deserialize,
    },
    .primary_state_ids = ts_primary_state_ids,
    .name = "autolang",
    .reserved_words = &ts_reserved_words[0][0],
    .max_reserved_word_set_size = 11,
    .metadata = {
      .major_version = 0,
      .minor_version = 3,
      .patch_version = 2,
    },
  };
  return &language;
}
#ifdef __cplusplus
}
#endif
